diff --git a/CHANGELOG.md b/CHANGELOG.md index 6348276c..9c4e2592 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,24 @@ TODO:日语文本需要加粗显示关键字,但是我不懂日语,所以现 - 自动合并系列小说 +## 16.8.1 2024/03/22 + +### 🐛修复了下载的 epub 小说无法打开的问题 + +上个版本更新导致的 bug,现在修复此问题。 + +---------- + +用户向我报告 epub 小说无法打开的问题,我试了下,EPUB File Reader 会报错: + +![](/notes/images/20240322_160029.png) + +经过检查,这是因为 `dc:rights` 标签里面的 `
` 标签没有闭合标记导致的: + +![](/notes/images/20240322_161838.png) + +上个版本里处理 HTML 转义字符时用了个新函数 `htmlDecode`,小说简介也用这个函数处理了,但是这个函数返回的值是 html 5 规范的,所以简介里原本的 `
` 变成了 `
`,导致 epub 格式出错。后处理一下就修复了。但是这个 bug 在之前确实没有预料到。epub 格式只能用 html 4,太烦了。 + ## 16.8.0 2024/02/29 ### ✨新增功能:导出和导入收藏列表 diff --git a/dist/js/content.js b/dist/js/content.js index 02b0aa21..1c82bc28 100644 --- a/dist/js/content.js +++ b/dist/js/content.js @@ -13318,11 +13318,15 @@ class Tools { } /**替换 EPUB 文本里的特殊字符和换行符 */ // 换行符必须放在最后处理,以免其 < 符号被替换 + // 把所有换行符统一成
+ // 这是因为 epub 是 xhtml 格式,要求必须有闭合标记,所以
是非法的,会导致小说无法被解析和阅读 static replaceEPUBText(str) { return str .replace(/&/g, '&') .replace(//g, '
') + .replace(/
/g, '
') .replace(/\n/g, '
'); } /** 在 zip 压缩包里查找类似于 000000.jpg 的标记,返回它后面的位置的下标 @@ -45546,6 +45550,9 @@ class Utils { /**将可能包含有 HTML 转义字符的字符串进行反转义 */ // 例如输入 "1,2,3,4'5'6'" // 输出 "1,2,3,4'5'6'" + // 需要注意的是,这里返回的 html 标签是不带闭合标记的(html 5 规范) + // 如果参数里含有
,这是 html 4 规范,经过该方法处理后返回的是
,没有了闭合标记 + // 通常这不会导致问题,但是 epub 小说必须有结束标记 static htmlDecode(str) { const div = document.createElement('div'); div.innerHTML = str; diff --git a/dist/js/content.js.map b/dist/js/content.js.map index d27049fe..2e16afe7 100644 --- a/dist/js/content.js.map +++ b/dist/js/content.js.map @@ -1 +1 @@ -{"version":3,"file":"content.js","mappings":"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ACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;CAC1B;;;;;;;;;;;;;;;ACznEM,MAAM,WAAW,GAAG;IACzB,CAAC,EAAE,EAAE,aAAa,CAAC;IACnB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;CAC3B;;;;;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YACxB,IAAI,EAAE,0BAA0B;SACjC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACf;;;;;;;UClQlB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;;;;;;;;;GASG;AAEY;AACC;AACO;AACI;AACS;AACT;AACL;AACC;AACsB;AACM;AACtB;AACV;AACiB;AACD;AACT;AACZ;AACQ;AACS;AACJ;AACE;AACI;AACJ;AACI;AACP;AACU;AACJ;AACA;AACH;AACC;AACE;AACK;AACK;AACM;AACT;AACL;AAClC,6BAA6B;AACL;AACQ;AACL;AACQ;AACN","sources":["webpack://powerful-pixiv-downloader/./src/ts/API.ts","webpack://powerful-pixiv-downloader/./src/ts/ArtworkThumbnail.ts","webpack://powerful-pixiv-downloader/./src/ts/BG.ts","webpack://powerful-pixiv-downloader/./src/ts/BoldKeywords.ts","webpack://powerful-pixiv-downloader/./src/ts/Bookmark.ts","webpack://powerful-pixiv-downloader/./src/ts/CenterPanel.ts","webpack://powerful-pixiv-downloader/./src/ts/CheckUnsupportBrowser.ts","webpack://powerful-pixiv-downloader/./src/ts/Colors.ts","webpack://powerful-pixiv-downloader/./src/ts/Config.ts","webpack://powerful-pixiv-downloader/./src/ts/ConvertUgoira/ConvertUgoira.ts","webpack://powerful-pixiv-downloader/./src/ts/ConvertUgoira/ToAPNG.ts","webpack://powerful-pixiv-downloader/./src/ts/ConvertUgoira/ToGIF.ts","webpack://powerful-pixiv-downloader/./src/ts/ConvertUgoira/ToWebM.ts","webpack://powerful-pixiv-downloader/./src/ts/CopyToClipboard.ts","webpack://powerful-pixiv-downloader/./src/ts/DoubleWidthThumb.ts","webpack://powerful-pixiv-downloader/./src/ts/EVT.ts","webpack://powerful-pixiv-downloader/./src/ts/FileName.ts","webpack://powerful-pixiv-downloader/./src/ts/FindHorizontalImageWrap.ts","webpack://powerful-pixiv-downloader/./src/ts/HiddenBrowserDownloadBar.ts","webpack://powerful-pixiv-downloader/./src/ts/HighlightFollowingUsers.ts","webpack://powerful-pixiv-downloader/./src/ts/ImageViewer.ts","webpack://powerful-pixiv-downloader/./src/ts/InitPage.ts","webpack://powerful-pixiv-downloader/./src/ts/Input.ts","webpack://powerful-pixiv-downloader/./src/ts/Lang.ts","webpack://powerful-pixiv-downloader/./src/ts/LangText.ts","webpack://powerful-pixiv-downloader/./src/ts/ListenPageSwitch.ts","webpack://powerful-pixiv-downloader/./src/ts/Loading.ts","webpack://powerful-pixiv-downloader/./src/ts/Log.ts","webpack://powerful-pixiv-downloader/./src/ts/MsgBox.ts","webpack://powerful-pixiv-downloader/./src/ts/NovelThumbnail.ts","webpack://powerful-pixiv-downloader/./src/ts/OpenCenterPanel.ts","webpack://powerful-pixiv-downloader/./src/ts/PageType.ts","webpack://powerful-pixiv-downloader/./src/ts/PreviewUgoira.ts","webpack://powerful-pixiv-downloader/./src/ts/PreviewWork.ts","webpack://powerful-pixiv-downloader/./src/ts/PreviewWorkDetailInfo.ts","webpack://powerful-pixiv-downloader/./src/ts/RemoveWorksTagsInBookmarks.ts","webpack://powerful-pixiv-downloader/./src/ts/ReplaceSquareThumb.ts","webpack://powerful-pixiv-downloader/./src/ts/RequestSponsorship.ts","webpack://powerful-pixiv-downloader/./src/ts/SelectWork.ts","webpack://powerful-pixiv-downloader/./src/ts/SetTimeoutWorker.ts","webpack://powerful-pixiv-downloader/./src/ts/SetUserName.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowDownloadBtnOnThumb.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowDownloadBtnOnThumbOnDesktop.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowDownloadBtnOnThumbOnMobile.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowHelp.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowLargerThumbnails.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowNotification.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowOriginSizeImage.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowWhatIsNew.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowZoomBtnOnThumb.ts","webpack://powerful-pixiv-downloader/./src/ts/Theme.ts","webpack://powerful-pixiv-downloader/./src/ts/Tip.ts","webpack://powerful-pixiv-downloader/./src/ts/Toast.ts","webpack://powerful-pixiv-downloader/./src/ts/Token.ts","webpack://powerful-pixiv-downloader/./src/ts/Tools.ts","webpack://powerful-pixiv-downloader/./src/ts/UnBookmarkWorks.ts","webpack://powerful-pixiv-downloader/./src/ts/WorkThumbnail.ts","webpack://powerful-pixiv-downloader/./src/ts/WorkToolBar.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/CrawlRecommendWorks.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitAreaRankingPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitArtworkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitArtworkSeriesPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitBookmarkDetailPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitDiscoverPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitNewArtworkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitPixivisionPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitRankingArtworkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitSearchArtworkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/CrawlTagList.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitBookmarkLegacyPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitBookmarkNewPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitBookmarkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitFollowingPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitHomePage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitUnlistedPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitUserPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/QuickCrawl.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/GetNovelGlossarys.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitNewNovelPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitNovelPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitNovelSeriesPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitRankingNovelPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitSearchNovelPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/InitPageBase.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/InitRequestPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/InitUnsupportedPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/StopCrawl.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/TimedCrawl.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/VipSearchOptimize.ts","webpack://powerful-pixiv-downloader/./src/ts/download/BookmarkAfterDL.ts","webpack://powerful-pixiv-downloader/./src/ts/download/CheckWarningMessage.ts","webpack://powerful-pixiv-downloader/./src/ts/download/Download.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadControl.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadNovelCover.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadNovelEmbeddedImage.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadOnClickBookmark.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadOnClickLike.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadRecord.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadStates.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ExportLST.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ExportResult.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ExportResult2CSV.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ImportResult.ts","webpack://powerful-pixiv-downloader/./src/ts/download/MakeNovelFile.ts","webpack://powerful-pixiv-downloader/./src/ts/download/MergeNovel.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ProgressBar.ts","webpack://powerful-pixiv-downloader/./src/ts/download/Resume.ts","webpack://powerful-pixiv-downloader/./src/ts/download/SaveWorkMeta.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowConvertCount.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowDownloadStates.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowRemainingDownloadOnTitle.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowSkipCount.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowStatusOnTitle.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowTotalResultOnTitle.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/BlackandWhiteImage.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/BlockTagsForSpecificUser.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/Filter.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/Mute.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/WorkPublishTime.ts","webpack://powerful-pixiv-downloader/./src/ts/output/OutputPanel.ts","webpack://powerful-pixiv-downloader/./src/ts/output/PreviewFileName.ts","webpack://powerful-pixiv-downloader/./src/ts/output/ShowURLs.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/BookmarkAllWorks.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/BookmarksAddTag.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/DeleteWorks.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/DestroyManager.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/DisplayThumbnailListOnMultiImageWorkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/FastScreen.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/QuickBookmark.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/RemoveWorksOfFollowedUsersOnSearchPage.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/SaveAvatarIcon.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/SaveAvatarImage.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/SaveUserCover.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/ConvertOldSettings.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/DoNotDownloadLastFewImages.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/Form.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/FormHTML.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/FormSettings.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/InvisibleSettings.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/NameRuleManager.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/Options.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/SaveNamingRule.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/Settings.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/UseDifferentNameRuleIfWorkHasTag.ts","webpack://powerful-pixiv-downloader/./src/ts/store/CacheWorkData.ts","webpack://powerful-pixiv-downloader/./src/ts/store/IdListWithPageNo.ts","webpack://powerful-pixiv-downloader/./src/ts/store/SaveArtworkData.ts","webpack://powerful-pixiv-downloader/./src/ts/store/SaveNovelData.ts","webpack://powerful-pixiv-downloader/./src/ts/store/States.ts","webpack://powerful-pixiv-downloader/./src/ts/store/Store.ts","webpack://powerful-pixiv-downloader/./src/ts/store/WorkPublishTimeNovels.ts","webpack://powerful-pixiv-downloader/./src/ts/store/workPublishTimeIllusts.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/CreateCSV.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/DateFormat.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/IndexedDB.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/SecretSignal.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/Utils.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/imageToIcon.ts","webpack://powerful-pixiv-downloader/webpack/bootstrap","webpack://powerful-pixiv-downloader/webpack/runtime/compat get default export","webpack://powerful-pixiv-downloader/webpack/runtime/define property getters","webpack://powerful-pixiv-downloader/webpack/runtime/hasOwnProperty shorthand","webpack://powerful-pixiv-downloader/webpack/runtime/make namespace object","webpack://powerful-pixiv-downloader/./src/ts/content.ts"],"sourcesContent":["import {\n UserImageWorksWithTag,\n BookmarkData,\n UserProfile,\n UserProfileAllData,\n ArtworkData,\n UgoiraMetaData,\n RecommendData,\n RankingData,\n RecommenderData,\n SearchData,\n NewIllustData,\n BookMarkNewData,\n UserNovelsWithTag,\n NovelData,\n NovelSeriesData,\n NovelSearchData,\n NewNovelData,\n FollowingResponse,\n SeriesData,\n muteData,\n NovelSeriesGlossary,\n NovelSeriesGlossaryItem,\n LatestMessageData,\n} from './crawl/CrawlResult'\n\nimport {\n userWorksType,\n RankingOption,\n SearchOption,\n NewIllustOption,\n tagPageFlag,\n} from './crawl/CrawlArgument'\n\nimport { IDData } from './store/StoreType'\n\n/** 点击 like 按钮的返回数据 */\ninterface LikeResponse {\n error: boolean\n message: '' | string\n body:\n | []\n | {\n is_liked: boolean\n }\n}\n\nclass API {\n // 发送 get 请求,返回 json 数据,抛出异常\n static sendGetRequest(url: string): Promise {\n return new Promise((resolve, reject) => {\n fetch(url, {\n method: 'get',\n credentials: 'same-origin',\n })\n .then((response) => {\n // response.ok 的状态码范围是 200-299\n if (response.ok) {\n return response.json()\n } else {\n // 请求成功但状态码异常\n reject({\n status: response.status,\n statusText: response.statusText,\n })\n switch (response.status) {\n case 400:\n return console.error(\n 'Status Code: 400(Bad Request)。服务器无法理解此请求'\n )\n case 401:\n return console.error(\n 'Status Code: 401(Unauthorized)。您可能需要登录 Pixiv 账号'\n )\n case 403:\n return console.error(\n 'Status Code: 403(Forbidden)。服务器拒绝了这个请求'\n )\n case 404:\n return console.error(\n 'Status Code: 404(Not Found)。服务器找不到请求的资源'\n )\n case 500:\n return console.error(\n 'Status Code: 500(Internal Server Error)。服务器内部错误'\n )\n case 503:\n return console.error(\n 'Status Code: 503(Service Unavailable)。服务器忙或者在维护'\n )\n default:\n return console.error(\n `请求的状态不正确,状态码:${response.status}`\n )\n }\n }\n })\n .then((data) => {\n resolve(data)\n })\n .catch((error) => {\n // 请求失败\n reject(error)\n })\n })\n }\n\n // 获取收藏数据\n // 这个 api 返回的作品列表顺序是按收藏顺序由近期到早期排列的\n static async getBookmarkData(\n userID: string,\n type: 'illusts' | 'novels' = 'illusts',\n tag: string,\n offset: number,\n hide: boolean = false\n ): Promise {\n const url = `https://www.pixiv.net/ajax/user/${userID}/${type}/bookmarks?tag=${tag}&offset=${offset}&limit=100&rest=${\n hide ? 'hide' : 'show'\n }&rdm=${Math.random()}`\n\n return this.sendGetRequest(url)\n }\n\n // 添加收藏\n static async addBookmark(\n id: string,\n type: 'illusts' | 'novels',\n tags: string[],\n hide: boolean,\n token: string\n ) {\n const restrict: 1 | 0 = hide ? 1 : 0\n\n let body = {}\n if (type === 'illusts') {\n body = {\n comment: '',\n illust_id: id,\n restrict: restrict,\n tags: tags,\n }\n } else {\n body = {\n comment: '',\n novel_id: id,\n restrict: restrict,\n tags: tags,\n }\n }\n\n return fetch(`https://www.pixiv.net/ajax/${type}/bookmarks/add`, {\n method: 'POST',\n credentials: 'same-origin', // 附带 cookie\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json; charset=utf-8',\n 'x-csrf-token': token,\n },\n body: JSON.stringify(body),\n })\n }\n\n static async deleteBookmark(\n bookmarkID: number | string,\n type: 'illusts' | 'novels',\n token: string\n ) {\n const bodyStr =\n type === 'illusts'\n ? `bookmark_id=${bookmarkID}`\n : `del=1&book_id=${bookmarkID}`\n\n return fetch(`https://www.pixiv.net/ajax/${type}/bookmarks/delete`, {\n method: 'POST',\n credentials: 'same-origin', // 附带 cookie\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'x-csrf-token': token,\n },\n body: bodyStr,\n })\n }\n\n // 获取关注的用户列表\n static getFollowingList(\n id: string,\n rest: 'show' | 'hide' = 'show',\n tag = '',\n offset = 0,\n limit = 100,\n lang = 'zh'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/user/${id}/following?offset=${offset}&limit=${limit}&rest=${rest}&tag=${tag}&lang=${lang}`\n return this.sendGetRequest(url)\n }\n\n // 获取好 P 友列表\n static getMyPixivList(\n id: string,\n offset = 0,\n limit = 100,\n lang = 'zh'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/user/${id}/mypixiv?offset=${offset}&limit=${limit}&lang=${lang}`\n return this.sendGetRequest(url)\n }\n\n // 获取粉丝列表\n static getFollowersList(\n id: string,\n offset = 0,\n limit = 100,\n lang = 'zh'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/user/${id}/followers?offset=${offset}&limit=${limit}&lang=${lang}`\n return this.sendGetRequest(url)\n }\n\n // 获取用户信息\n static getUserProfile(id: string): Promise {\n // full=1 在画师的作品列表页使用,获取详细信息\n // full=0 在作品页内使用,只获取少量信息\n const url = `https://www.pixiv.net/ajax/user/${id}?full=1`\n return this.sendGetRequest(url)\n }\n\n // 获取用户指定类型的作品列表\n // 返回作品的 id 列表,不包含详细信息\n static async getUserWorksByType(\n id: string,\n type: userWorksType[] = ['illusts', 'manga', 'novels']\n ): Promise {\n let typeSet = new Set(type)\n let result: IDData[] = []\n const url = `https://www.pixiv.net/ajax/user/${id}/profile/all`\n\n let data: UserProfileAllData = await this.sendGetRequest(url)\n for (const type of typeSet.values()) {\n const idList = Object.keys(data.body[type])\n for (const id of idList) {\n result.push({\n type,\n id,\n })\n }\n }\n\n return result\n }\n\n // 获取用户指定类型、并且指定 tag 的作品列表\n // 返回整个请求的结果,里面包含作品的详细信息\n // 必须带 tag 使用。不带 tag 虽然也能获得数据,但是获得的并不全,很奇怪。\n static getUserWorksByTypeWithTag(\n id: string,\n type: tagPageFlag,\n tag: string,\n offset: number = 0,\n limit: number = 100\n ): Promise {\n // https://www.pixiv.net/ajax/user/2369321/illusts/tag?tag=Fate/GrandOrder&offset=0&limit=100\n const url = `https://www.pixiv.net/ajax/user/${id}/${type}/tag?tag=${tag}&offset=${offset}&limit=${limit}`\n return this.sendGetRequest(url)\n }\n\n // 获取插画 漫画 动图 的详细信息\n static getArtworkData(id: string, unlisted = false): Promise {\n const url = `https://www.pixiv.net/ajax/illust/${\n unlisted ? 'unlisted/' : ''\n }${id}`\n return this.sendGetRequest(url)\n }\n\n // 获取动图的元数据\n static getUgoiraMeta(id: string): Promise {\n const url = `https://www.pixiv.net/ajax/illust/${id}/ugoira_meta`\n return this.sendGetRequest(url)\n }\n\n // 获取小说的详细信息\n static getNovelData(id: string, unlisted = false): Promise {\n const url = `https://www.pixiv.net/ajax/novel/${\n unlisted ? 'unlisted/' : ''\n }${id}`\n return this.sendGetRequest(url)\n }\n\n // 获取相关作品\n static getRelatedData(id: string): Promise {\n // 最后的 18 是预加载首屏的多少个作品的信息,和下载并没有关系\n const url = `https://www.pixiv.net/ajax/illust/${id}/recommend/init?limit=18`\n return this.sendGetRequest(url)\n }\n\n // 获取排行榜数据\n // 排行榜数据基本是一批 50 条作品信息\n static getRankingData(option: RankingOption): Promise {\n let url = `https://www.pixiv.net/ranking.php?mode=${option.mode}&p=${option.p}&format=json`\n\n // 把可选项添加到 url 里\n let temp = new URL(url)\n\n // 下面两项需要判断有值再添加。不可以让这些字段使用空值\n if (option.worksType) {\n temp.searchParams.set('content', option.worksType)\n }\n if (option.date) {\n temp.searchParams.set('date', option.date)\n }\n\n url = temp.toString()\n\n return this.sendGetRequest(url)\n }\n\n // 获取收藏后的相似作品数据\n // 需要传入作品 id 和要抓取的数量。但是实际获取到的数量会比指定的数量少一些\n static getRecommenderData(\n id: string,\n number: number\n ): Promise {\n const url = `/rpc/recommender.php?type=illust&sample_illusts=${id}&num_recommendations=${number}`\n return this.sendGetRequest(url)\n }\n\n // 获取搜索数据\n static getSearchData(\n word: string,\n type: string = 'artworks',\n p: number = 1,\n option: SearchOption = {}\n ): Promise {\n // 基础的 url\n let url = `https://www.pixiv.net/ajax/search/${type}/${encodeURIComponent(\n word\n )}?word=${encodeURIComponent(word)}&p=${p}`\n\n // 把可选项添加到 url 里\n let temp = new URL(url)\n for (const [key, value] of Object.entries(option)) {\n if (value) {\n temp.searchParams.set(key, value)\n }\n }\n url = temp.toString()\n\n return this.sendGetRequest(url)\n }\n\n static getNovelSearchData(\n word: string,\n p: number = 1,\n option: SearchOption = {}\n ): Promise {\n // 基础的 url\n let url = `https://www.pixiv.net/ajax/search/novels/${encodeURIComponent(\n word\n )}?word=${encodeURIComponent(word)}&p=${p}`\n\n // 把可选项添加到 url 里\n let temp = new URL(url)\n for (const [key, value] of Object.entries(option)) {\n if (value) {\n temp.searchParams.set(key, value)\n }\n }\n url = temp.toString()\n\n return this.sendGetRequest(url)\n }\n\n // 获取大家的新作品的数据\n static getNewIllustData(option: NewIllustOption): Promise {\n const url = `https://www.pixiv.net/ajax/illust/new?lastId=${option.lastId}&limit=${option.limit}&type=${option.type}&r18=${option.r18}`\n return this.sendGetRequest(url)\n }\n\n // 获取大家的新作小说的数据\n static getNewNovleData(option: NewIllustOption): Promise {\n const url = `https://www.pixiv.net/ajax/novel/new?lastId=${option.lastId}&limit=${option.limit}&r18=${option.r18}`\n return this.sendGetRequest(url)\n }\n\n // 获取关注的用户的新作品的数据\n static getBookmarkNewWorkData(\n type: 'illust' | 'novel',\n p: number,\n tag: string = '',\n r18: boolean,\n lang = 'zh'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/follow_latest/${type}?p=${p}&tag=${tag}&mode=${\n r18 ? 'r18' : 'all'\n }&lang=${lang}`\n return this.sendGetRequest(url)\n }\n\n // 获取小说的系列作品信息\n // 这个 api 目前一批最多只能返回 30 个作品的数据,所以可能需要多次获取\n static getNovelSeriesData(\n series_id: number | string,\n limit: number = 30,\n last_order: number,\n order_by = 'asc'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/novel/series_content/${series_id}?limit=${limit}&last_order=${last_order}&order_by=${order_by}`\n return this.sendGetRequest(url)\n }\n\n // 获取系列信息\n // 这个接口的数据结构里同时有 illust (包含漫画)和 novel 系列数据\n // 恍惚记得有插画系列来着,但是没找到对应的网址,难道是记错了?\n static getSeriesData(\n series_id: number | string,\n pageNo: number\n ): Promise {\n const url = `https://www.pixiv.net/ajax/series/${series_id}?p=${pageNo}`\n return this.sendGetRequest(url)\n }\n\n // 点赞\n static async addLike(\n id: string,\n type: 'illusts' | 'novels',\n token: string\n ): Promise {\n let data = {}\n if (type === 'illusts') {\n data = {\n illust_id: id,\n }\n } else {\n data = {\n novel_id: id,\n }\n }\n const r = await fetch(`https://www.pixiv.net/ajax/${type}/like`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json; charset=utf-8',\n 'x-csrf-token': token,\n },\n credentials: 'same-origin',\n body: JSON.stringify(data),\n })\n const json = (await r.json()) as LikeResponse\n return json\n }\n\n static async getMuteSettings(): Promise {\n return this.sendGetRequest(\n `https://www.pixiv.net/ajax/mute/items?context=setting`\n )\n }\n\n /**获取系列小说的设定资料 */\n static async getNovelSeriesGlossary(\n seriesId: string | number\n ): Promise {\n return this.sendGetRequest(\n `https://www.pixiv.net/ajax/novel/series/${seriesId}/glossary`\n )\n }\n\n /**获取系列小说某条设定资料的详细信息 */\n static async getNovelSeriesGlossaryItem(\n seriesId: string | number,\n itemId: string | number\n ): Promise {\n return this.sendGetRequest(\n `https://www.pixiv.net/ajax/novel/series/${seriesId}/glossary/item/${itemId}`\n )\n }\n\n /**获取用户最近的几条消息 */\n static async getLatestMessage(number: number): Promise {\n return this.sendGetRequest(\n `https://www.pixiv.net/rpc/index.php?mode=latest_message_threads2&num=${number}&offset=0`\n )\n }\n\n /**关注一个用户 */\n // recaptcha_enterprise_score_token 对于有些用户是不需要的,不过传递空值是允许的\n static async addFollowingUser(\n userID: string,\n token: string,\n recaptcha_enterprise_score_token?: string\n ): Promise {\n return new Promise(async (resolve) => {\n const response = await fetch(`https://www.pixiv.net/bookmark_add.php`, {\n method: 'POST',\n credentials: 'same-origin', // 附带 cookie\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'x-csrf-token': token,\n },\n body: `mode=add&type=user&user_id=${userID}&tag=&restrict=0&format=json&recaptcha_enterprise_score_token=${recaptcha_enterprise_score_token}`,\n })\n // 如果操作成功,则返回值是 []\n // 如果用户不存在,返回值是该用户主页的网页源码\n // 如果 token 错误,返回值是一个包含错误提示的 JSON 对象\n // 所以这里需要转换为 text\n await response.text()\n return resolve(response.status)\n })\n }\n}\n\nexport { API }\n","import { WorkThumbnail } from './WorkThumbnail'\nimport { pageType } from './PageType'\nimport { Tools } from './Tools'\nimport { Config } from './Config'\n\n// 查找图像作品的缩略图,当鼠标进入、移出时等动作触发时执行回调函数\nclass ArtworkThumbnail extends WorkThumbnail {\n constructor() {\n super()\n\n if (Config.mobile) {\n // 移动端的作品选择器就这一个\n this.selectors = ['.works-item-illust']\n } else {\n this.selectors = [\n 'div[width=\"136\"]',\n 'div[width=\"131\"]',\n 'div[width=\"288\"]',\n 'div[width=\"184\"]',\n 'div[width=\"112\"]',\n 'div[width=\"104\"]',\n 'div[width=\"90\"]',\n 'div[width=\"118\"]',\n '._work',\n '._work.item',\n 'div[type=\"illust\"]',\n 'li>div>div:first-child',\n ]\n }\n\n this.findThumbnail(document.body)\n this.createObserver(document.body)\n }\n\n protected readonly selectors: string[] = []\n\n protected findThumbnail(parent: HTMLElement) {\n if (!parent.querySelectorAll) {\n return\n }\n // 遍历所有的选择器,为找到的元素绑定事件\n // 注意:有时候一个节点里会含有多种尺寸的缩略图,为了全部查找到它们,必须遍历所有的选择器。\n // 如果在查找到某个选择器之后,不再查找剩余的选择器,就可能会遗漏一部分缩略图。\n // 但是,这有可能会导致事件的重复绑定,所以下载器添加了 dataset.mouseover 标记以减少重复绑定\n for (const selector of this.selectors) {\n // div[type=\"illust\"] 只在约稿页面使用\n // 因为已知问题:在收藏页面里, div[type=\"illust\"] 嵌套了子元素 div[width=\"184\"]\n // 这会导致重复绑定(在不同元素上)\n if (\n selector === 'div[type=\"illust\"]' &&\n pageType.type !== pageType.list.Request\n ) {\n continue\n }\n\n // li>div>div:first-child 只在约稿页面使用\n // 因为已知问题:画师主页顶部的“精选”作品会被两个选择器查找到:li>div>div:first-child div[width=\"288\"]\n // 这会导致重复绑定(在同一个元素上)\n if (\n selector === 'li>div>div:first-child' &&\n pageType.type !== pageType.list.Request\n ) {\n continue\n }\n\n const elements = parent.querySelectorAll(selector)\n for (const el of elements) {\n const id = Tools.findWorkIdFromElement(el as HTMLElement, 'illusts')\n\n if (Config.mobile) {\n // 在移动端页面里,即使没有找到作品 id,也要执行回调函数\n // 因为此时可能内部的 A 标签还未生成,所以会获取不到 id\n // 而之后下载器只会监听新添加的缩略图容器,不会监听内部添加 A 标签的事件,\n // 所以以后也不会监听到它。那么只能先为它绑定事件,\n // 等到点击下载按钮时再尝试获取 id\n this.bindEvents(el as HTMLElement, id)\n } else {\n // 在桌面版页面里,只有查找到作品 id 时才会执行回调函数\n if (id) {\n this.bindEvents(el as HTMLElement, id)\n }\n }\n }\n }\n }\n}\n\nconst artworkThumbnail = new ArtworkThumbnail()\nexport { artworkThumbnail }\n","import { EVT } from './EVT'\nimport { Utils } from './utils/Utils'\nimport { IndexedDB } from './utils/IndexedDB'\nimport { settings } from './setting/Settings'\n\ninterface BGData {\n readonly key: 'bg'\n file: File\n}\n\ninterface BGItem {\n wrap: HTMLElement\n bg: HTMLElement\n opacity?: number\n}\n\nclass BG {\n constructor() {\n this.IDB = new IndexedDB()\n this.init()\n }\n\n private list: BGItem[] = []\n\n private readonly bgModeflagClassName = 'xzBG'\n private readonly bgLayerClassName = 'xzBGLayer'\n private bgUrl = ''\n\n private IDB: IndexedDB\n private readonly DBName = 'PBDBG'\n private readonly DBVer = 1\n private readonly storeName = 'bg'\n private readonly keyName = 'bg'\n\n private async init() {\n this.bindEvents()\n await this.initDB()\n this.restore()\n }\n\n private async initDB() {\n await this.IDB.open(this.DBName, this.DBVer, this.onUpdate)\n }\n\n // 在数据库升级事件里创建表\n private onUpdate = (db: IDBDatabase) => {\n if (!db.objectStoreNames.contains(this.storeName)) {\n db.createObjectStore(this.storeName, {\n keyPath: 'key',\n })\n }\n }\n\n private createBGLayer(wrap: HTMLElement) {\n const div = document.createElement('div')\n div.classList.add(this.bgLayerClassName)\n const el = wrap.insertAdjacentElement('afterbegin', div)\n return el as HTMLElement\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.selectBG, () => {\n this.selectBG()\n })\n\n window.addEventListener(EVT.list.clearBG, () => {\n this.clearBG()\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'bgDisplay') {\n this.setBGAll()\n }\n\n if (data.name === 'bgOpacity') {\n this.setBGAll()\n }\n\n if (data.name === 'bgPositionY') {\n this.setBGAll()\n }\n })\n }\n\n private async restore() {\n const data: BGData | null = (await this.IDB.get(\n this.storeName,\n this.keyName\n )) as any\n if (!data || !data.file) {\n return\n }\n this.bgUrl = URL.createObjectURL(data.file)\n this.preload()\n }\n\n private async selectBG() {\n const file = (await Utils.selectFile('.jpg,.jpeg,.png,.bmp,.webp'))[0]\n this.bgUrl = URL.createObjectURL(file)\n this.preload()\n for (const o of this.list) {\n this.setBG(o)\n }\n\n const data: BGData = {\n key: this.keyName,\n file: file,\n }\n\n const test = await this.IDB.get(this.storeName, this.keyName)\n this.IDB[test ? 'put' : 'add'](this.storeName, data)\n }\n\n private clearBG() {\n this.IDB.clear(this.storeName)\n this.bgUrl = ''\n for (const o of this.list) {\n o.bg.style.backgroundImage = 'none'\n this.setDisplay(o)\n }\n }\n\n // 预加载背景图片\n private preload() {\n // 由于浏览器的工作原理,背景图片在未被显示之前是不会加载的,在显示时才会进行加载。这会导致背景层显示之后出现短暂的空白(因为在加载图片)。为了避免空白,需要预加载图片\n const img = new Image()\n img.src = this.bgUrl\n img.style.display = 'none'\n document.body.append(img)\n }\n\n private async setBG(o: BGItem) {\n this.setPositionY(o)\n this.setOpacity(o)\n this.setBGURL(o)\n this.setDisplay(o)\n }\n\n private async setBGAll() {\n for (const o of this.list) {\n this.setPositionY(o)\n this.setOpacity(o)\n this.setBGURL(o)\n this.setDisplay(o)\n }\n }\n\n private setBGURL(o: BGItem) {\n o.bg.style.backgroundImage = `url(${this.bgUrl})`\n }\n\n private setDisplay(o: BGItem) {\n o.bg.style.display = settings.bgDisplay ? 'block' : 'none'\n if (!this.bgUrl) {\n o.wrap.classList.remove(this.bgModeflagClassName)\n } else {\n o.wrap.classList[settings.bgDisplay ? 'add' : 'remove'](\n this.bgModeflagClassName\n )\n }\n }\n\n private setOpacity(o: BGItem) {\n o.bg.style.opacity = (o.opacity || settings.bgOpacity / 100).toString()\n }\n\n private setPositionY(o: BGItem) {\n o.bg.style.backgroundPositionY = settings.bgPositionY\n }\n\n // 其他模块可以调用这个方法,为一个元素添加背景层\n // 如果传入一个真值的不透明度,会始终使用传入的不透明度,忽略用户用户设置的不透明度\n public useBG(wrap: HTMLElement, opacity?: number) {\n if (this.bgUrl) {\n this.readySet(wrap, opacity)\n } else {\n let timer = window.setInterval(() => {\n if (this.bgUrl) {\n window.clearInterval(timer)\n this.readySet(wrap)\n }\n }, 300)\n }\n }\n\n private readySet(wrap: HTMLElement, opacity?: number) {\n const o = {\n wrap,\n bg: this.createBGLayer(wrap),\n opacity,\n }\n this.list.push(o)\n\n this.setBG(o)\n }\n}\n\nconst bg = new BG()\nexport { bg }\n","import { EVT } from './EVT'\nimport { settings } from './setting/Settings'\n\nclass BoldKeywords {\n constructor(wrap: HTMLElement) {\n this.wrap = wrap\n this.bindEvent()\n this.setClassName()\n }\n\n private wrap: HTMLElement\n private readonly className = 'showBlobKeywords'\n\n private bindEvent() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'boldKeywords') {\n this.setClassName()\n }\n })\n }\n\n private setClassName() {\n this.wrap.classList[settings.boldKeywords ? 'add' : 'remove'](\n this.className\n )\n }\n}\n\nexport { BoldKeywords }\n","import { API } from './API'\nimport { Config } from './Config'\nimport { ArtworkCommonData, BookmarkResult } from './crawl/CrawlResult'\nimport { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { log } from './Log'\nimport { setTimeoutWorker } from './SetTimeoutWorker'\nimport { settings } from './setting/Settings'\nimport { toast } from './Toast'\nimport { token } from './Token'\nimport { Tools } from './Tools'\nimport { Utils } from './utils/Utils'\n\nexport interface WorkBookmarkData {\n workID: number\n type: 'illusts' | 'novels'\n bookmarkID: string\n private: boolean\n}\n\n// 对 API.addBookmark 进行封装\nclass Bookmark {\n constructor() {\n window.addEventListener(EVT.list.downloadComplete, () => {\n if (this.taskID > this.nextTaskID) {\n const msg = lang.transl('_收藏任务尚未完成请等待')\n log.warning(msg)\n toast.warning(msg, {\n position: 'center',\n })\n }\n })\n\n // 如果用户在离开页面时还有等待重试的收藏任务,就提示用户\n // 使用 window.onbeforeunload 事件\n // 但是这会导致 SelectWork 里的该事件出现问题,或者两个模块里都会出现问题,所以就不提示了\n }\n\n private async getWorkData(type: 'illusts' | 'novels', id: string) {\n return type === 'illusts'\n ? await API.getArtworkData(id)\n : await API.getNovelData(id)\n }\n\n /** 接收到需要排队的任务时增加计数 */\n private taskID = 0\n\n /**叫号的号码,当 add 方法的 slowly 参数为 true 时,需要等待叫号到它才能执行 */\n private nextTaskID = 1\n\n /**添加收藏\n *\n * 可选参数 tags:可以直接传入这个作品的 tag 列表\n *\n * 如果未传入 tags,但收藏设置要求 tags,则此方法会发送请求获取作品数据\n *\n * 可选参数 needAddTag:控制是否添加 tag。缺省时使用 settings.widthTagBoolean\n *\n * 可选参数 restrict:指示这个收藏是否为非公开收藏。false 为公开收藏,true 为非公开收藏。缺省时使用 settings.restrictBoolean\n *\n * 可选参数 slowly:未指定或 false 时,立即执行这个收藏请求。设置为 true 则会获得一个号码并等待叫号到它再执行。这是为了减少 429 错误发生的概率。当需要大批量收藏作品时应该设置为 true。\n */\n public async add(\n id: string,\n type: 'illusts' | 'novels',\n tags?: string[],\n needAddTag?: boolean,\n restrict?: boolean,\n slowly?: boolean\n ) {\n return new Promise(async (resolve, reject) => {\n const _needAddTag =\n needAddTag === undefined ? settings.widthTagBoolean : !!needAddTag\n if (_needAddTag) {\n // 需要添加 tags\n if (tags === undefined) {\n // 如果未传递 tags,则请求作品数据来获取 tags\n const data = await this.getWorkData(type, id)\n tags = Tools.extractTags(data)\n }\n } else {\n // 不需要添加 tags\n tags = []\n }\n\n const _restrict =\n restrict === undefined ? settings.restrictBoolean : !!restrict\n\n // 立即执行的情况\n if (!slowly) {\n const status = await this.sendRequest(id, type, tags, _restrict)\n return resolve(status)\n }\n\n // 需要排队的情况\n const NO = ++this.taskID\n await this.waitCallMe(NO)\n setTimeoutWorker.set(async () => {\n const status = await this.sendRequest(id, type, tags!, _restrict)\n this.nextTaskID++\n return resolve(status)\n }, Config.slowCrawlDealy)\n })\n }\n\n private async waitCallMe(NO: number) {\n return new Promise(async (resolve) => {\n if (this.nextTaskID === NO) {\n return resolve(NO)\n } else {\n setTimeoutWorker.set(() => {\n return resolve(this.waitCallMe(NO))\n }, 300)\n }\n })\n }\n\n /**获取指定用户的指定分类下的所有收藏列表,不限制页数或个数,全部抓取 */\n public async getAllBookmarkList(\n userID: string,\n type: 'illusts' | 'novels',\n tags: string,\n offsetStart: number = 0,\n hide: boolean\n ): Promise {\n return new Promise(async (resolve) => {\n const result: BookmarkResult[] = []\n let offset = offsetStart\n const onceOffset = 100\n\n while (true) {\n const data = await API.getBookmarkData(userID, type, '', offset, hide)\n\n for (const workData of data.body.works) {\n result.push({\n id: workData.id,\n type:\n (workData as ArtworkCommonData).illustType === undefined\n ? 'novels'\n : 'illusts',\n tags: workData.tags,\n restrict: workData.bookmarkData?.private || false,\n })\n }\n log.log(result.length.toString(), 1, false)\n\n offset += onceOffset\n if (data.body.works.length === 0) {\n break\n }\n\n await Utils.sleep(Config.slowCrawlDealy)\n }\n\n log.persistentRefresh()\n resolve(result)\n })\n }\n\n public async addBookmarksInBatchs(\n list: BookmarkResult[],\n oldList: BookmarkResult[] = []\n ) {\n // 反转要添加收藏的作品列表。这是因为它来自于导出的收藏列表,导出时的顺序是按照添加收藏时的倒序排列\n // 即后收藏的作品在数组前面,先收藏的作品在数组后面\n // 如果不反转,那么在添加收藏时,就会先收藏在“导出时是后收藏”的作品,这会导致添加收藏的顺序反了\n // 在网页上看新添加收藏的作品时,顺序也是反的\n list.reverse()\n\n let added = 0\n let skip = 0\n let tip = ''\n for (const data of list) {\n // 如果这个作品已经被收藏过,就不会重复收藏它(这里没有检查 tag 列表)\n const find = oldList.find(\n (old) => old.id === data.id && old.type === data.type\n )\n if (!find) {\n await this.add(\n data.id,\n data.type!,\n data.tags,\n undefined,\n undefined,\n true\n )\n } else {\n skip++\n console.log('已收藏')\n }\n added++\n tip = lang.transl('_收藏作品') + ` ${added}/${list.length}`\n if (skip > 0) {\n tip = tip + `, ${lang.transl('_跳过x个', skip.toString())}`\n }\n log.log(tip, 1, false)\n }\n\n log.persistentRefresh()\n const msg = '✓ ' + lang.transl('_收藏作品完毕')\n log.success(msg)\n toast.success(msg, {\n position: 'center',\n })\n }\n\n private async sendRequest(\n id: string,\n type: 'illusts' | 'novels',\n tags: string[],\n hide: boolean\n ) {\n return new Promise(async (resolve) => {\n API.addBookmark(id, type, tags, hide, token.token).then(async (res) => {\n switch (res.status) {\n // 当发生 400 错误时重试\n case 400:\n await token.reset()\n return resolve(this.sendRequest(id, type, tags, hide))\n case 404:\n log.error(`${id} 404 Not Found`)\n return resolve(res.status)\n case 429:\n case 500:\n toast.error(lang.transl('_添加收藏失败'), {\n position: 'center',\n })\n\n log.error(\n `${Tools.createWorkLink(id, type === 'illusts')} ${lang.transl(\n '_添加收藏失败'\n )}. ${lang.transl('_错误代码')}${res.status}. ${lang.transl(\n '_下载器会在几分钟后重试'\n )}`\n )\n\n window.setTimeout(() => {\n return resolve(this.sendRequest(id, type, tags, hide))\n }, Config.retryTime)\n break\n default:\n return resolve(res.status)\n }\n })\n })\n }\n}\n\nconst bookmark = new Bookmark()\nexport { bookmark }\n","import { lang } from './Lang'\nimport { EVT } from './EVT'\nimport { states } from './store/States'\nimport { theme } from './Theme'\nimport { Config } from './Config'\nimport { msgBox } from './MsgBox'\nimport { bg } from './BG'\nimport './OpenCenterPanel'\nimport { settings } from './setting/Settings'\nimport { BoldKeywords } from './BoldKeywords'\nimport { showHelp } from './ShowHelp'\n\n// 选项卡的名称和索引\nenum Tabbar {\n Crawl,\n Download,\n Other,\n}\n\n// 中间面板\nclass CenterPanel {\n constructor() {\n this.addCenterPanel()\n theme.register(this.centerPanel)\n lang.register(this.centerPanel)\n this.activeTab(Tabbar.Crawl)\n\n bg.useBG(this.centerPanel)\n\n new BoldKeywords(this.centerPanel)\n\n this.allLangFlag = lang.langTypes.map((type) => 'lang_' + type)\n this.setLangFlag()\n\n this.bindEvents()\n }\n\n private centerPanel!: HTMLDivElement\n private updateLink!: HTMLAnchorElement\n private updateActiveClass = 'updateActiveClass'\n\n private allTabTitle!: NodeListOf // 选项卡的标题区域\n private readonly TitleActiveClass = 'active'\n private titleAnimationEl!: HTMLElement\n private readonly titleAnimationElClassList = ['tab1', 'tab2', 'tab3']\n\n // 添加中间面板\n private addCenterPanel() {\n const centerPanelHTML = `\n
\n\n
\n
\n ${Config.appName}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n\n
\n\n \n\n
\n \n \n Discord\n \n \n
\n
\n\n
\n\n
\n `\n document.body.insertAdjacentHTML('beforebegin', centerPanelHTML)\n\n this.centerPanel = document.querySelector('.centerWrap') as HTMLDivElement\n\n this.updateLink = this.centerPanel.querySelector(\n '.update'\n )! as HTMLAnchorElement\n\n this.allTabTitle = this.centerPanel.querySelectorAll('.tabsTitle .title')\n\n this.titleAnimationEl = this.centerPanel.querySelector(\n '.title_active'\n )! as HTMLElement\n\n // 设置移动端样式\n if (Config.mobile) {\n this.centerPanel.classList.add('mobile')\n }\n }\n\n private allLangFlag: string[] = []\n private setLangFlag() {\n this.allLangFlag.forEach((flag) => {\n this.centerPanel.classList.remove(flag)\n })\n this.centerPanel.classList.add('lang_' + lang.type)\n }\n\n private bindEvents() {\n // 监听点击扩展图标的消息,开关中间面板\n chrome.runtime.onMessage.addListener((msg) => {\n if (msg.msg === 'click_icon') {\n this.toggle()\n }\n })\n\n window.addEventListener(EVT.list.settingInitialized, () => {\n showHelp.show('tipHowToUse', lang.transl('_HowToUse'))\n })\n\n // 使用快捷键 Alt + x 切换中间面板显示隐藏\n window.addEventListener(\n 'keydown',\n (ev) => {\n if (ev.altKey && ev.code === 'KeyX') {\n this.toggle()\n }\n },\n false\n )\n\n // 关闭按钮\n document\n .querySelector('.centerWrap_close')!\n .addEventListener('click', () => {\n EVT.fire('closeCenterPanel')\n if (!Config.mobile) {\n showHelp.show(\n 'tipAltXToShowControlPanel',\n lang.transl('_快捷键ALTX显示隐藏控制面板')\n )\n }\n })\n\n // 开始抓取作品时,隐藏\n window.addEventListener(EVT.list.crawlStart, () => {\n EVT.fire('closeCenterPanel')\n })\n\n // 抓取完作品详细数据时,显示\n for (const ev of [EVT.list.crawlComplete, EVT.list.resume]) {\n window.addEventListener(ev, () => {\n if (!states.quickCrawl) {\n this.show()\n }\n })\n }\n\n window.addEventListener(EVT.list.openCenterPanel, () => {\n this.show()\n })\n\n window.addEventListener(EVT.list.closeCenterPanel, () => {\n this.close()\n })\n\n // 显示更新按钮\n window.addEventListener(EVT.list.hasNewVer, () => {\n this.updateLink.classList.add(this.updateActiveClass)\n this.updateLink.style.display = 'inline-block'\n })\n\n // 显示常见问题\n this.centerPanel\n .querySelector('#showDownTip')!\n .addEventListener('click', () => {\n let msg = lang.transl('_常见问题说明')\n if (Config.mobile) {\n msg =\n msg + '

' + lang.transl('_Kiwi浏览器可能不能建立文件夹的bug')\n }\n msgBox.show(msg, {\n title: lang.transl('_常见问题'),\n })\n })\n\n this.centerPanel\n .querySelector('#showPatronTip')!\n .addEventListener('click', () =>\n msgBox.show(lang.transl('_赞助方式提示'), {\n title: lang.transl('_赞助我'),\n })\n )\n\n this.centerPanel.addEventListener('click', (e) => {\n const ev = e || window.event\n ev.stopPropagation()\n })\n\n document.addEventListener('click', () => {\n if (getComputedStyle(this.centerPanel)['display'] !== 'none') {\n EVT.fire('closeCenterPanel')\n }\n })\n\n // 在选项卡的标题上触发事件时,激活对应的选项卡\n let eventList = ['click', 'mouseenter']\n if (Config.mobile) {\n eventList = ['touchend']\n }\n for (let index = 0; index < this.allTabTitle.length; index++) {\n const title = this.allTabTitle[index]\n eventList.forEach((eventName) => {\n title.addEventListener(eventName, () => {\n // 触发 mouseenter 时,如果用户设置的是通过点击来切换选项卡,则直接返回\n // 触发 click 时无需检测,始终可以切换\n if (eventName === 'mouseenter' && settings.switchTabBar === 'click') {\n return\n }\n this.activeTab(index)\n })\n })\n\n // 当标题获得焦点,并且用户按下了回车或空格键时,激活对应的选项卡\n title.addEventListener('keydown', (event) => {\n if (\n (event.code === 'Enter' || event.code === 'Space') &&\n event.target === title\n ) {\n event.stopPropagation()\n event.preventDefault()\n this.activeTab(index)\n }\n })\n }\n\n // 当可以开始下载时,切换到“下载”选项卡\n for (const ev of [EVT.list.crawlComplete, EVT.list.resume]) {\n window.addEventListener(ev, () => {\n if (states.mergeNovel) {\n return\n }\n this.activeTab(Tabbar.Download)\n })\n }\n\n window.addEventListener(EVT.list.crawlEmpty, () => {\n this.activeTab(Tabbar.Crawl)\n })\n\n window.addEventListener(EVT.list.langChange, () => {\n this.setLangFlag()\n })\n }\n\n // 设置激活的选项卡\n private activeTab(no = 0) {\n // 显示选项卡的内容\n const allTabCon = this.centerPanel.querySelectorAll(\n '.tabsContnet'\n ) as NodeListOf\n for (let index = 0; index < allTabCon.length; index++) {\n allTabCon[index].style.display = index === no ? 'block' : 'none'\n }\n\n // 高亮选项卡的标题\n for (const title of this.allTabTitle) {\n title.classList.remove(this.TitleActiveClass)\n }\n this.allTabTitle[no].classList.add(this.TitleActiveClass)\n\n // 设置动画效果\n const useClass = this.titleAnimationElClassList[no]\n if (this.titleAnimationEl.classList.contains(useClass)) {\n return\n }\n this.titleAnimationElClassList.forEach((str) => {\n this.titleAnimationEl.classList.remove(str)\n })\n this.titleAnimationEl.classList.add(useClass)\n }\n\n // 显示中间区域\n public show() {\n if (states.mergeNovel) {\n return\n }\n this.centerPanel.style.display = 'block'\n EVT.fire('centerPanelOpened')\n }\n\n // 隐藏中间区域\n public close() {\n this.centerPanel.style.display = 'none'\n EVT.fire('centerPanelClosed')\n }\n\n public toggle() {\n const nowDisplay = this.centerPanel.style.display\n nowDisplay === 'block' ? this.close() : this.show()\n if (nowDisplay === 'block') {\n EVT.fire('closeCenterPanel')\n } else {\n EVT.fire('openCenterPanel')\n }\n }\n}\n\nnew CenterPanel()\n","import { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { log } from './Log'\n\ninterface Rules {\n [key: string]: () => boolean\n}\n\n// 某些国产套壳浏览器不能正常使用本程序。如果检测到该浏览器,则显示提示\n// 相关文档: notes/一些国产套壳浏览器使用本程序的情况.md\nclass CheckUnsupportBrowser {\n constructor() {\n window.addEventListener(EVT.list.settingInitialized, () => {\n this.check()\n })\n }\n\n private rules: Rules = {\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 SE 2.X MetaSr 1.0\"\n Sougou: function () {\n return navigator.userAgent.includes(' SE ')\n },\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3872.400 QQBrowser/10.8.4455.400\"\n QQ: function () {\n return navigator.userAgent.includes('QQBrowser')\n },\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36 2345Explorer/10.21.0.21486\"\n '2345': function () {\n return navigator.userAgent.includes('2345Explorer')\n },\n All: function () {\n // 如果这个浏览器的 Chrome 内核的版本号较低,也会显示提示\n // 为什么设置为 88:\n // 1. 下载器使用的 Manifest V2 需要的内核版本最低为 79\n // 2. Cent 浏览器的内核版本是 86,但它即使使用 V2,仍然会在转换 GIF 时出现问题,所以需要提高版本号\n // 3. 未来升级到 Manifest V3 需要的内核版本最低为 88\n const minChromeVer = 88\n const test = navigator.userAgent.match(/Chrome\\/(\\d*)/)\n if (test && test[1]) {\n const ver = Number.parseInt(test[1])\n if (ver < minChromeVer) {\n return true\n }\n }\n return false\n },\n }\n\n private check() {\n for (const func of Object.values(this.rules)) {\n if (func()) {\n const msg = lang.transl('_不支持的浏览器')\n log.error(msg)\n return\n }\n }\n\n if (navigator.userAgent.includes('YaBrowser')) {\n log.warning(lang.transl('_yandex浏览器的警告'))\n }\n }\n}\n\nnew CheckUnsupportBrowser()\n","enum Colors {\n // 通用颜色\n white = '#fff',\n black = '#000',\n red = '#f00',\n theme = '#0ea8ef',\n\n // 带有语义的字体颜色\n textSuccess = '#00BD17',\n textWarning = '#d27e00',\n textError = '#f00',\n\n // 背景颜色\n // 稍暗,适合在颜色区域的面积较大时使用\n bgBlue = '#0ea8ef',\n bgGreen = '#14ad27',\n bgYellow = '#e49d00',\n bgRed = '#f33939',\n\n // 带有语义的背景颜色\n // 稍亮,适合在小区域使用\n bgBrightBlue = '#29b3f3',\n bgSuccess = '#00BD17',\n bgWarning = '#e49d00',\n bgError = '#f00',\n}\n\nexport { Colors }\n","// 定义一些常量\n// 用户不可以修改这里的配置\nclass Config {\n /**使用输出面板显示内容时,如果文件数量大于这个值,就不再显示内容,而是保存到 txt 文件 */\n static readonly outputMax = 5000\n /**同时下载的文件数量的最大值 */\n static readonly downloadThreadMax = 6\n /**下载某个文件出错时,最大重试次数 */\n static readonly retryMax = 10\n /**作品类型所对应的字符串名称 */\n static readonly worksTypeName = ['Illustration', 'Manga', 'Ugoira', 'Novel']\n /**程序名 */\n static readonly appName = 'Powerful Pixiv Downloader'\n /**下载器储存设置时使用的 key name */\n static readonly settingStoreName = 'xzSetting'\n /**按收藏数量过滤作品时,预设的最大收藏数量 */\n static readonly BookmarkCountLimit = 9999999\n /**Pixiv 作品总数量上限 */\n static readonly worksNumberLimit = 9999999999\n /**当抓取被 pixiv 限制,返回了空数据时,等待这个时间之后再继续抓取 */\n static readonly retryTime = 200000\n /**慢速抓取模式下,每个抓取请求之间的间隔时间(ms) */\n static readonly slowCrawlDealy = 1600\n /**浏览器是否处于移动端模式 */\n static readonly mobile = navigator.userAgent.includes('Mobile')\n}\n\nexport { Config }\n","import { EVT } from '../EVT'\nimport { settings } from '../setting/Settings'\nimport { UgoiraInfo } from '../crawl/CrawlResult'\nimport { toWebM } from './ToWebM'\nimport { toGIF } from './ToGIF'\nimport { toAPNG } from './ToAPNG'\nimport { msgBox } from '../MsgBox'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { log } from '../Log'\n\n// 控制动图转换\nclass ConvertUgoira {\n constructor() {\n this.setMaxCount()\n this.bindEvents()\n }\n\n private downloading = true // 是否在下载。如果下载停止了则不继续转换后续任务,避免浪费资源\n\n private _count: number = 0 // 统计有几个转换任务\n\n private maxCount = 1 // 允许同时运行多少个转换任务\n\n private readonly msgFlag = 'tipConvertUgoira'\n\n private bindEvents() {\n window.addEventListener(EVT.list.downloadStart, () => {\n this.downloading = true\n msgBox.resetOnce(this.msgFlag)\n })\n ;[EVT.list.downloadPause, EVT.list.downloadStop].forEach((event) => {\n window.addEventListener(event, () => {\n this.downloading = false\n })\n })\n\n // 设置发生变化时\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'convertUgoiraThread') {\n this.setMaxCount()\n }\n })\n\n window.addEventListener(EVT.list.convertSuccess, () => {\n this.complete()\n })\n\n // 如果转换动图时页面被隐藏了,则显示提示\n // document.addEventListener('visibilitychange', () => {\n // this.checkHidden()\n // })\n }\n\n private setMaxCount() {\n this.maxCount =\n settings.convertUgoiraThread > 0 ? settings.convertUgoiraThread : 1\n }\n\n private set count(num: number) {\n this._count = num\n EVT.fire('convertChange', this._count)\n // this.checkHidden()\n }\n\n private async start(\n file: Blob,\n info: UgoiraInfo,\n type: 'webm' | 'gif' | 'png'\n ): Promise {\n return new Promise(async (resolve, reject) => {\n const t = window.setInterval(async () => {\n if (this._count < this.maxCount) {\n window.clearInterval(t)\n if (!this.downloading) {\n return\n }\n this.count = this._count + 1\n\n // 提取每一张图片\n const zipFileBuffer = await file.arrayBuffer()\n const indexList = Tools.getJPGContentIndex(zipFileBuffer)\n const ImageBitmapList = await Tools.extractImage(\n zipFileBuffer,\n indexList,\n 'ImageBitmap'\n )\n\n if (type === 'gif') {\n resolve(toGIF.convert(ImageBitmapList, info))\n } else if (type === 'png') {\n resolve(toAPNG.convert(ImageBitmapList, info))\n } else {\n // 如果没有 type 则默认使用 webm\n resolve(toWebM.convert(ImageBitmapList, info))\n }\n }\n }, 200)\n })\n }\n\n private complete() {\n this.count = this._count - 1\n }\n\n // 转换成 WebM\n public async webm(file: Blob, info: UgoiraInfo, id: number): Promise {\n const delayTooLarge = info.frames.find((item) => item.delay > 32767)\n if (delayTooLarge) {\n const msg = lang.transl(\n '_动图不能转换为WEBM视频的提示',\n Tools.createWorkLink(id)\n )\n msgBox.warning(msg)\n log.warning(msg)\n return await this.start(file, info, 'gif')\n }\n\n return await this.start(file, info, 'webm')\n }\n\n // 转换成 GIF\n public async gif(file: Blob, info: UgoiraInfo, id: number): Promise {\n return await this.start(file, info, 'gif')\n }\n\n // 转换成 APNG\n public async apng(file: Blob, info: UgoiraInfo, id: number): Promise {\n return await this.start(file, info, 'png')\n }\n\n private checkHidden() {\n if (this._count > 0 && document.visibilityState === 'hidden') {\n msgBox.once(\n this.msgFlag,\n lang.transl('_转换动图时页面被隐藏的提示'),\n 'warning'\n )\n }\n }\n}\n\nconst convertUgoira = new ConvertUgoira()\nexport { convertUgoira }\n","import { EVT } from '../EVT'\nimport { UgoiraInfo } from '../crawl/CrawlResult'\n\ndeclare const UPNG: any\n\nclass ToAPNG {\n public async convert(\n ImageBitmapList: ImageBitmap[],\n info: UgoiraInfo\n ): Promise {\n return new Promise(async (resolve, reject) => {\n const width = ImageBitmapList[0].width\n const height = ImageBitmapList[0].height\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d', {\n willReadFrequently: true,\n })! as CanvasRenderingContext2D\n canvas.width = width\n canvas.height = height\n\n // 添加帧数据\n let arrayBuffList: ArrayBuffer[] = []\n ImageBitmapList.forEach((imageBitmap) => {\n ctx.drawImage(imageBitmap, 0, 0)\n // 从画布获取图像绘制后的 Uint8ClampedArray buffer\n const buff = ctx.getImageData(0, 0, width, height).data.buffer\n arrayBuffList.push(buff)\n })\n const delayList = info.frames.map((frame) => frame.delay)\n\n // 编码\n // https://github.com/photopea/UPNG.js/#encoder\n const pngFile = UPNG.encode(\n arrayBuffList,\n width,\n height,\n 0,\n delayList\n ) as ArrayBuffer\n\n arrayBuffList = null as any\n\n const blob = new Blob([pngFile], {\n type: 'image/vnd.mozilla.apng',\n })\n\n EVT.fire('convertSuccess')\n\n resolve(blob)\n })\n }\n}\n\nconst toAPNG = new ToAPNG()\nexport { toAPNG }\n","import { EVT } from '../EVT'\nimport { UgoiraInfo } from '../crawl/CrawlResult'\n\ndeclare const GIF: any\n\nclass ToGIF {\n constructor() {\n this.loadWorkerJS()\n }\n\n private gifWorkerUrl: string = ''\n\n // 添加转换 GIF 的 worker 文件\n private async loadWorkerJS() {\n let gifWorker = await fetch(chrome.runtime.getURL('lib/gif.worker.js'))\n const gifWorkerBolb = await gifWorker.blob()\n this.gifWorkerUrl = URL.createObjectURL(gifWorkerBolb)\n }\n\n // 转换成 GIF\n public async convert(\n ImageBitmapList: ImageBitmap[],\n info: UgoiraInfo\n ): Promise {\n return new Promise(async (resolve, reject) => {\n // 配置 gif.js\n let gif: any = new GIF({\n workers: 4,\n quality: 10,\n workerScript: this.gifWorkerUrl,\n })\n\n // 绑定渲染完成事件\n gif.on('finished', (file: Blob) => {\n EVT.fire('convertSuccess')\n resolve(file)\n })\n\n const width = ImageBitmapList[0].width\n const height = ImageBitmapList[0].height\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')!\n canvas.width = width\n canvas.height = height\n\n // 添加帧数据\n ImageBitmapList.forEach((imageBitmap, index) => {\n ctx.drawImage(imageBitmap, 0, 0)\n const ImageData = ctx.getImageData(0, 0, width, height)\n gif.addFrame(ImageData, {\n delay: info.frames![index].delay,\n })\n })\n\n // 渲染 gif\n gif.render()\n })\n }\n}\n\nconst toGIF = new ToGIF()\nexport { toGIF }\n","import { EVT } from '../EVT'\nimport { UgoiraInfo } from '../crawl/CrawlResult'\n\ndeclare const Whammy: any\n\nclass ToWebM {\n public async convert(\n ImageBitmapList: ImageBitmap[],\n info: UgoiraInfo\n ): Promise {\n return new Promise(async (resolve, reject) => {\n const width = ImageBitmapList[0].width\n const height = ImageBitmapList[0].height\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')!\n canvas.width = width\n canvas.height = height\n\n // 创建视频编码器\n const encoder = new Whammy.Video()\n\n // 添加帧数据\n ImageBitmapList.forEach((imageBitmap, index) => {\n ctx.drawImage(imageBitmap, 0, 0)\n // 把图像转换为 webp 格式的 DataURL,这样 webm 编码器内部可以直接使用,不需要进行一些重复的操作\n // https://github.com/antimatter15/whammy#basic-usage\n const url = canvas.toDataURL('image/webp', 0.9)\n encoder.add(url, info.frames![index].delay)\n })\n\n // 编码视频\n encoder.compile(false, (video: Blob) => {\n EVT.fire('convertSuccess')\n resolve(video)\n })\n })\n }\n}\n\nconst toWebM = new ToWebM()\nexport { toWebM }\n","import { lang } from './Lang'\nimport { toast } from './Toast'\n\ninterface ClipboardItem {\n readonly types: string[]\n readonly presentationStyle: 'unspecified' | 'inline' | 'attachment'\n getType(): Promise\n}\n\ninterface ClipboardItemData {\n [mimeType: string]: Blob | string | Promise\n}\n\ndeclare var ClipboardItem: {\n prototype: ClipboardItem\n new (itemData: ClipboardItemData): ClipboardItem\n}\n\ninterface Clipboard {\n read(): Promise\n write(data: ClipboardItem[]): Promise\n}\n\nclass CopyToClipboard {\n static setClipboard(text: string): Promise {\n return new Promise((resolve, reject) => {\n const type = 'text/plain'\n const blob = new Blob([text], { type })\n const data = [new ClipboardItem({ [type]: blob })]\n\n ;(window.navigator.clipboard as unknown as Clipboard).write(data).then(\n () => {\n toast.success(lang.transl('_已复制到剪贴板'))\n resolve()\n },\n () => {\n toast.error(lang.transl('_写入剪贴板失败'))\n reject()\n }\n )\n })\n }\n}\n\nexport { CopyToClipboard }\n","import { EVT } from './EVT'\nimport { settings, setSetting } from './setting/Settings'\nimport { Tools } from './Tools'\nimport { findHorizontalImageWrap } from './FindHorizontalImageWrap'\n\n// 如果一个作品的缩略图是横图,则把这个缩略图的容器的宽度设置为默认宽度的 2 倍\n// 注意:必须开启“替换方形缩略图以显示图片比例”,“横图占用二倍宽度”的功能才能生效\nclass DoubleWidthThumb {\n constructor() {\n this.bindEvents()\n }\n\n /* 双倍宽度的图片的 id(由下载器添加这个 id) */\n private readonly addId = 'doubleWidth'\n private readonly styleId = 'doubleWidthStyle'\n private readonly css = `#doubleWidth {\n width: 30% !important;\n }`\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'doubleWidthThumb') {\n // 如果开启了父级设置“显示更大的缩略图”,以及这个设置,则必须开启“替换方形缩略图以显示图片比例”\n if (\n settings.showLargerThumbnails &&\n settings.doubleWidthThumb &&\n !settings.replaceSquareThumb\n ) {\n setSetting('replaceSquareThumb', true)\n }\n\n this.setCss()\n }\n\n if (data.name === 'showLargerThumbnails') {\n this.setCss()\n }\n\n // 如果关闭了“替换方形缩略图以显示图片比例”,则需要关闭这个设置,因为这个设置无法生效\n if (data.name === 'replaceSquareThumb') {\n if (!settings.replaceSquareThumb && settings.doubleWidthThumb) {\n setSetting('doubleWidthThumb', false)\n }\n }\n })\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.setCss()\n })\n\n // 如果一个缩略图是横图,则在它的容器上添加特定 id\n findHorizontalImageWrap.onFind((wrap: HTMLElement) => {\n if (!wrap.id) {\n wrap.id = this.addId\n }\n })\n }\n\n private setCss() {\n if (Tools.notEnabledShowLargerThumb()) {\n return this.removeStyle()\n }\n\n if (\n settings.replaceSquareThumb &&\n settings.showLargerThumbnails &&\n settings.doubleWidthThumb\n ) {\n this.addStyle()\n } else {\n this.removeStyle()\n }\n }\n\n private addStyle() {\n if (document.querySelector('#' + this.styleId)) {\n return\n }\n\n const el = document.createElement('style')\n el.id = this.styleId\n el.innerHTML = this.css\n document.body.append(el)\n }\n\n private removeStyle() {\n const el = document.querySelector('#' + this.styleId)\n el && el.remove()\n }\n}\n\nnew DoubleWidthThumb()\n","import { DonwloadSkipData, DonwloadSuccessData } from './download/DownloadType'\nimport { IDData, Result } from './store/StoreType'\nimport { OutputData } from './output/OutputPanel'\nimport { SettingChangeData } from './setting/Settings'\nimport { Msg } from './MsgBox'\nimport { ArtworkData } from './crawl/CrawlResult'\n\ntype eventNames = keyof typeof EVT.list\n\n// 管理自定义事件\nclass EVENT {\n private bindOnceFlagList: string[] = []\n\n // 只绑定某个事件一次,用于防止事件重复绑定\n // 通过 flag 确认是否是同一个事件\n // 可以执行多次,不会自动解绑\n public bindOnce(flag: string, targetEvt: string, evtFun: Function) {\n const query = this.bindOnceFlagList.includes(flag)\n if (!query) {\n this.bindOnceFlagList.push(flag)\n window.addEventListener(targetEvt, function (ev) {\n evtFun(ev)\n })\n }\n }\n\n public readonly list = {\n /** 当抓取开始时触发 */\n crawlStart: 'crawlStart',\n stopCrawl: 'stopCrawl',\n /** 让下载器抓取特定的 tag,而不是自动获取当前页面的 tag(仅在 tag 搜索页面有效) */\n crawlTag: 'crawlTag',\n /** 当检查到错误的设置时触发 */\n wrongSetting: 'wrongSetting',\n /** 当获取作品的 id 列表完成时触发 */\n getIdListFinished: 'getIdListFinished',\n /** 获取了作品的 id 列表,需要下载这些 id 列表时使用 */\n crawlIdList: 'crawlIdList',\n /** 当抓取完成时触发。不管结果是否为空都会触发 */\n crawlComplete: 'crawlComplete',\n /** 当抓取结果为空时触发。触发时机晚于 crawlComplete */\n crawlEmpty: 'crawlEmpty',\n /** store 里每存储一个作品的元数据,就触发一次。如果一个元数据产生了多个结果(多图作品),只触发一次 */\n addResult: 'addResult',\n /** 当抓取完毕之后,抓取结果又发生变化时触发(比如进行多次筛选、改变设置项等,导致结果变化) */\n resultChange: 'resultChange',\n /** 当进行快速抓取时触发 */\n quickCrawl: 'quickCrawl',\n /** 抓取完毕后,可以准备开始下载时触发 */\n /** 它是一个派生事件,可以由多个其他事件触发 */\n readyDownload: 'readyDownload',\n /** 下载被取消(取消是在尚未开始下载前触发的,它不同于下载停止) */\n downloadCancel: 'downloadCancel',\n /** 开始下载时触发 */\n downloadStart: 'downloadStart',\n /** 下载状态变成暂停时触发 */\n downloadPause: 'downloadPause',\n /** 请求暂停下载 */\n requestPauseDownload: 'requestPauseDownload',\n /** 下载状态变成停止时触发 */\n downloadStop: 'downloadStop',\n /** 当文件在下载阶段下载失败时触发 */\n /** 当动图转换出错时触发 */\n downloadError: 'downloadError',\n /** 当一个文件在下载阶段被跳过时触发 */\n skipDownload: 'skipDownload',\n /** 当浏览器把一个文件保存到本地失败时触发 */\n saveFileError: 'saveFileError',\n /** 当下载的文件传递给浏览器进行保存,并且成功保存之后触发 */\n /** skipDownload 也会触发这个事件 */\n downloadSuccess: 'downloadSuccess',\n /** 下载队列里的所有文件都已经下载并保存完毕,并且没有出错的。如果有出错的,就不会触发这个事件 */\n downloadComplete: 'downloadComplete',\n /** 页面切换 */\n pageSwitch: 'pageSwitch',\n /** 页面切换,并且页面类型变化 */\n pageSwitchedTypeChange: 'pageSwitchedTypeChange',\n /** 页面切换,并且页面类型不变 */\n pageSwitchedTypeNotChange: 'pageSwitchedTypeNotChange',\n /** 程序启动时,设置初始化完毕后触发 */\n settingInitialized: 'settingInitialized',\n /** 请求重置所有设置 */\n resetSettings: 'resetSettings',\n /** 重置所有设置执行完毕 */\n resetSettingsEnd: 'resetSettingsEnd',\n /** 请求导出设置 */\n exportSettings: 'exportSettings',\n /** 请求导入设置 */\n importSettings: 'importSettings',\n /** 重新显示帮助 */\n resetHelpTip: 'resetHelpTip',\n /** 当动图转换数量发生变化时触发 */\n convertChange: 'convertChange',\n /** 当动图转换成功时触发 */\n convertSuccess: 'convertSuccess',\n /** 指示打开中间面板 */\n openCenterPanel: 'openCenterPanel',\n /** 指示关闭中间面板 */\n closeCenterPanel: 'closeCenterPanel',\n /** 中间面板已打开 */\n centerPanelOpened: 'centerPanelOpened',\n /** 中间面板已关闭 */\n centerPanelClosed: 'centerPanelClosed',\n /** 当清除多图作品时触发 */\n clearMultiple: 'clearMultiple',\n /** 当清除动图作品时触发 */\n clearUgoira: 'clearUgoira',\n /** 当手动删除作品时触发 */\n deleteWork: 'deleteWork',\n /** 当下载器在页面上创建的作品列表全部完成时触发 */\n worksUpdate: 'worksUpdate',\n /** 当需要清空下载记录时触发(只用于检测重复文件的下载记录) */\n clearDownloadRecord: 'clearDownloadRecord',\n /** 当需要导出下载记录时触发 */\n exportDownloadRecord: 'exportDownloadRecord',\n /** 当需要导入下载记录时触发 */\n importDownloadRecord: 'importDownloadRecord',\n /** 当需要清空断点续传的数据时触发 */\n clearSavedCrawl: 'clearSavedCrawl',\n /** 当从断点续传数据恢复了下载时触发 */\n resume: 'resume',\n /** 当需要导出 csv 文件时触发 */\n exportCSV: 'exportCSV',\n /** 当需要导出抓取结果时触发 */\n exportResult: 'exportResult',\n /** 当需要导入抓取结果时触发 */\n importResult: 'importResult',\n /** 当需要保存用户头像时触发 */\n saveAvatarImage: 'saveAvatarImage',\n /** 当需要保存用户头像为图标时触发 */\n saveAvatarIcon: 'saveAvatarIcon',\n /** 当需要保存用户背景图片时触发 */\n saveUserCover: 'saveUserCover',\n /** 当需要预览文件名时触发 */\n previewFileName: 'previewFileName',\n /** 当需要预览 url 时触发 */\n showURLs: 'showURLs',\n /** 当需要输出面板输出内容时触发 */\n output: 'output',\n /** 当设置表单里的设置项发生变化时触发 */\n settingChange: 'settingChange',\n /** 当下载器检测到有新版本时触发 */\n hasNewVer: 'hasNewVer',\n /** 进入批量收藏模式时触发 */\n bookmarkModeStart: 'bookmarkModeStart',\n /** 批量收藏完成时触发 */\n bookmarkModeEnd: 'bookmarkModeEnd',\n /** 需要单独显示信息时触发 */\n showMsg: 'showMsg',\n /** 需要显示冒泡提示时触发 */\n sendToast: 'sendToast',\n /** 需要清空日志区域时触发 */\n clearLog: 'clearLog',\n /** 选择背景图片 */\n selectBG: 'selectBG',\n /** 清除背景图片 */\n clearBG: 'clearBG',\n /** 点击了下载器在作品缩略图上添加的按钮时触发 */\n /** 其他按钮监听这个事件后隐藏自己,就可以避免其他按钮出现闪烁、残留的问题 */\n clickBtnOnThumb: 'clickBtnOnThumb',\n /** 显示原比例图片时触发 */\n showOriginSizeImage: 'showOriginSizeImage',\n /** 语言类型改变时触发 */\n langChange: 'langChange',\n /** 开始定时抓取时触发 */\n startTimedCrawl: 'startTimedCrawl',\n /** 请求取消定时抓取时触发*/\n cancelTimedCrawl: 'cancelTimedCrawl',\n /**当获取到页面的主题颜色时触发 */\n getPageTheme: 'getPageTheme',\n /**当下载模块向浏览器发起一个下载请求(保存文件到本地)时触发 */\n sendBrowserDownload: 'sendBrowserDownload',\n /**需要显示预览作品详细信息的面板时触发 */\n showPreviewWorkDetailPanel: 'showPreviewWorkDetailPanel',\n /**预览作品详细信息的面板关闭后触发 */\n PreviewWorkDetailPanelClosed: 'PreviewWorkDetailPanelClosed',\n /**通过鼠标滚轮事件来切换预览图 */\n wheelScrollSwitchPreviewImage: 'wheelScrollSwitchPreviewImage',\n /**当结束对一个作品的预览时触发(即预览图窗口消失时触发) */\n previewEnd: 'previewEnd',\n /**当关注的用户列表发生变化时触发 */\n followingUsersChange: 'followingUsersChange',\n }\n\n /** 触发自定义事件,大部分事件都不需要携带数据\n *\n * 如果携带了数据,可以通过 ev.detail.data 获取。如果未传递数据,则 ev.detail.data 是空对象\n */\n public fire(\n type:\n | 'crawlStart'\n | 'stopCrawl'\n | 'wrongSetting'\n | 'getIdListFinished'\n | 'crawlComplete'\n | 'crawlEmpty'\n | 'resultChange'\n | 'quickCrawl'\n | 'downloadCancel'\n | 'downloadStart'\n | 'downloadPause'\n | 'requestPauseDownload'\n | 'downloadStop'\n | 'saveFileError'\n | 'downloadComplete'\n | 'pageSwitch'\n | 'resetSettings'\n | 'resetSettingsEnd'\n | 'exportSettings'\n | 'importSettings'\n | 'resetHelpTip'\n | 'convertSuccess'\n | 'openCenterPanel'\n | 'closeCenterPanel'\n | 'centerPanelOpened'\n | 'centerPanelClosed'\n | 'clearMultiple'\n | 'clearUgoira'\n | 'worksUpdate'\n | 'clearDownloadRecord'\n | 'exportDownloadRecord'\n | 'importDownloadRecord'\n | 'clearSavedCrawl'\n | 'resume'\n | 'exportCSV'\n | 'exportResult'\n | 'importResult'\n | 'saveAvatarImage'\n | 'saveAvatarIcon'\n | 'saveUserCover'\n | 'previewFileName'\n | 'showURLs'\n | 'hasNewVer'\n | 'bookmarkModeStart'\n | 'bookmarkModeEnd'\n | 'sendToast'\n | 'clearLog'\n | 'selectBG'\n | 'clearBG'\n | 'clickBtnOnThumb'\n | 'showOriginSizeImage'\n | 'langChange'\n | 'settingInitialized'\n | 'readyDownload'\n | 'startTimedCrawl'\n | 'cancelTimedCrawl'\n | 'sendBrowserDownload'\n | 'previewEnd'\n | 'followingUsersChange'\n ): void\n\n // 对于需要携带数据的事件进行重载\n\n public fire(\n type: 'downloadError' | 'crawlTag' | 'getPageTheme',\n data: string\n ): void\n\n public fire(\n type:\n | 'pageSwitchedTypeChange'\n | 'pageSwitchedTypeNotChange'\n | 'convertChange',\n data: number\n ): void\n\n public fire(type: 'downloadSuccess', data: DonwloadSuccessData): void\n\n public fire(type: 'crawlIdList', data: IDData[]): void\n\n public fire(type: 'addResult', data: Result): void\n\n public fire(type: 'output', data: OutputData): void\n\n public fire(type: 'settingChange', data: SettingChangeData): void\n\n public fire(type: 'deleteWork', data: HTMLElement): void\n\n public fire(type: 'skipDownload', data: DonwloadSkipData): void\n\n public fire(type: 'showMsg', data: Msg): void\n\n public fire(type: 'showPreviewWorkDetailPanel', data: ArtworkData): void\n\n public fire(type: 'wheelScrollSwitchPreviewImage', data: Event): void\n\n public fire(\n type: 'PreviewWorkDetailPanelClosed',\n data: {\n x: number\n y: number\n }\n ): void\n\n public fire(type: eventNames, data?: unknown) {\n const event = new CustomEvent(type, {\n detail: { data: data === undefined ? {} : data },\n })\n window.dispatchEvent(event)\n }\n}\n\nconst EVT = new EVENT()\n\nexport { EVT }\n","import { settings } from './setting/Settings'\nimport { nameRuleManager } from './setting/NameRuleManager'\nimport './SetUserName'\nimport { store } from './store/Store'\nimport { Result } from './store/StoreType'\nimport { Config } from './Config'\nimport { DateFormat } from './utils/DateFormat'\nimport { Utils } from './utils/Utils'\nimport { Tools } from './Tools'\n\n// 生成文件名\nclass FileName {\n // 下载器所有的动图格式后缀名\n private readonly ugoiraExt = ['zip', 'webm', 'gif', 'png']\n\n private readonly addStr = '[downloader_add]'\n\n // 生成 {rank} 标记的值\n private createRank(rank: number | null): string {\n // 处理空值\n if (rank === null) {\n return ''\n }\n // string 是旧版本中使用的,以前抓取结果里的 rank 直接就是 '#1' 这样的字符串,后来改成了数字类型\n if (typeof rank === 'string') {\n return rank\n }\n // 其他的情况则应该是期望的值(数字类型)\n return '#' + rank\n }\n\n // 生成 {p_num} 标记的值\n private createPNum(data: Result) {\n // 只有插画和漫画有编号\n if (data.type === 0 || data.type === 1) {\n const index = data.index ?? Tools.getResultIndex(data)\n // 处理第一张图不带序号的情况\n if (index === 0 && settings.noSerialNo) {\n if (data.pageCount === 1 && settings.noSerialNoForSingleImg) {\n return ''\n }\n if (data.pageCount > 1 && settings.noSerialNoForMultiImg) {\n return ''\n }\n }\n\n const p = index.toString()\n // 处理在前面填充 0 的情况\n return settings.zeroPadding\n ? p.padStart(settings.zeroPaddingLength, '0')\n : p\n } else {\n // 其他类型没有编号,返回空字符串\n return ''\n }\n }\n\n // 生成 {id} 标记的值\n private createId(data: Result, p_num: string) {\n // 如果不需要添加序号,或者没有序号,则只返回数字 id\n if (p_num === '') {\n return data.idNum.toString()\n }\n // 添加序号\n return `${data.idNum}_p${p_num}`\n }\n\n // 返回收藏数的简化显示\n private getBKM1000(bmk: number): string {\n if (bmk < 1000) {\n return '0+'\n } else {\n // 1000 以上,以 1000 为单位\n const str = bmk.toString()\n return str.slice(0, str.length - 3) + '000+'\n }\n }\n\n // 在文件名前面添加一层文件夹\n // appendFolder 方法会对非法字符进行处理(包括处理路径分隔符 / 这主要是因为 tags 可能含有斜线 /,需要替换)\n private appendFolder(fullPath: string, folderName: string): string {\n const allPart = fullPath.split('/')\n allPart.splice(allPart.length - 1, 0, Utils.replaceUnsafeStr(folderName))\n return allPart.join('/')\n }\n\n // 不能出现在文件名开头的一些特定字符\n private readonly checkStartCharList = ['/', ' ']\n\n // 检查文件名开头是否含有特定字符\n private checkStartChar(str: string) {\n for (const check of this.checkStartCharList) {\n if (str.startsWith(check)) {\n return true\n }\n }\n return false\n }\n\n // 移除文件名开头的特定字符\n private removeStartChar(str: string) {\n while (this.checkStartChar(str)) {\n for (const check of this.checkStartCharList) {\n if (str.startsWith(check)) {\n str = str.replace(check, '')\n }\n }\n }\n return str\n }\n\n private readonly atList = ['@', '@']\n private RemoveAtFromUsername(name: string) {\n if (!settings.removeAtFromUsername) {\n return name\n }\n\n for (const at of this.atList) {\n let index = name.indexOf(at)\n if (index > 0) {\n name = name.substring(0, index)\n }\n }\n return name\n }\n\n // 传入命名规则和所有标记,生成文件名\n private generateFileName(rule: string, cfg: Object) {\n let result = rule\n // 把命名规则里的标记替换成实际值\n for (const [key, val] of Object.entries(cfg)) {\n if (rule.includes(key)) {\n // 空值替换成空字符串\n let temp = val.value ?? ''\n\n // 如果这个值不是字符串类型则转换为字符串\n temp = typeof temp !== 'string' ? temp.toString() : temp\n\n // 替换不可以作为文件名的特殊字符\n if (!val.safe) {\n temp = Utils.replaceUnsafeStr(temp)\n }\n\n // 添加标记前缀\n if (settings.tagNameToFileName) {\n temp = val.prefix + temp\n }\n\n // 将标记替换成结果,如果有重复的标记,全部替换\n result = result.replace(new RegExp(key, 'g'), temp)\n }\n }\n\n // 处理文件名里的一些边界情况\n\n // 如果文件名开头不可用的特殊字符\n result = this.removeStartChar(result)\n // 测试用例\n // const testStr = ' / / {page_tag} / {page_title} /{id}-{user}'\n // console.log(this.removeStartChar(testStr))\n\n // 如果文件名的尾部是 / 则去掉\n if (result.endsWith('/')) {\n result = result.substring(0, result.length - 1)\n }\n\n // 处理连续的 /\n result = result.replace(/\\/{2,100}/g, '/')\n\n return result\n }\n\n /**传入一个抓取结果,生成其文件名 */\n public createFileName(data: Result) {\n // 命名规则\n let userSetName = nameRuleManager.rule\n\n // 检查是否要使用特定的其他命名规则\n // 这是一个定制功能,所以这里设置的规则只会修改原有的文件名,而不会涉及到文件夹部分\n // 如果一个作品符合多条规则,则把多条规则合并。例如:\n // 包含[原神],命名规则{id}_genshin\n // 包含[Loli],命名规则{id}_loli\n // 包含[AI生成],命名规则{id}_AI\n // 比如说有一张ai生成的原神萝莉图例子,以上三个tag都有,那么把文件命名为{id}_genshin_loli_AI\n let diffNames: string[] = []\n if (settings.UseDifferentNameRuleIfWorkHasTagSwitch) {\n const workTags = data.tags.map((tag) => tag.toLowerCase())\n for (const item of settings.UseDifferentNameRuleIfWorkHasTagList) {\n for (const setTag of item.tags) {\n if (workTags.includes(setTag.toLowerCase())) {\n diffNames.push(item.rule)\n // 一条规则里的 tag 可能会有多个存在于同一个作品的标签列表里\n // 如果匹配到就跳过这条规则,以避免重复添加规则对应的命名规则\n break\n }\n }\n }\n }\n\n if (diffNames.length > 0) {\n let fileName = diffNames.join('').replace(/{id}/g, '')\n fileName = '{id}' + fileName\n\n const names = userSetName.split('/')\n names.splice(names.length - 1, 1, fileName)\n userSetName = names.join('/')\n }\n\n // 判断是否要为每个作品创建单独的文件夹\n let createFolderForEachWork =\n settings.workDir &&\n store.downloadCount[data.idNum] > settings.workDirFileNumber\n\n let r18FolderName = settings.r18Folder ? settings.r18FolderName : ''\n\n const allNameRule =\n userSetName +\n (createFolderForEachWork ? settings.workDirNameRule : '') +\n r18FolderName\n\n // 1 生成所有命名标记的值\n // 对于一些较为耗时的计算,先判断用户设置的命名规则里是否使用了这个标记,如果未使用则不计算\n const p_num = this.createPNum(data)\n const cfg = {\n '{p_title}': {\n value: store.title,\n prefix: '',\n safe: false,\n },\n '{page_title}': {\n value: store.title,\n prefix: '',\n safe: false,\n },\n '{p_tag}': {\n value: store.tag,\n prefix: '',\n safe: false,\n },\n '{page_tag}': {\n value: store.tag,\n prefix: '',\n safe: false,\n },\n '{id}': {\n value: this.createId(data, p_num),\n prefix: '',\n safe: true,\n },\n '{id_num}': {\n value: data.idNum || parseInt(data.id),\n prefix: '',\n safe: true,\n },\n '{p_num}': {\n value: !allNameRule.includes('{p_num}') ? null : p_num,\n prefix: '',\n safe: true,\n },\n '{rank}': {\n value: !allNameRule.includes('{rank}')\n ? null\n : this.createRank(data.rank),\n prefix: '',\n safe: true,\n },\n '{title}': {\n value: data.title,\n prefix: 'title_',\n safe: false,\n },\n '{user}': {\n value: this.RemoveAtFromUsername(\n settings.setUserNameList[data.userId] || data.user\n ),\n prefix: 'user_',\n safe: false,\n },\n '{userid}': {\n value: data.userId,\n prefix: 'uid_',\n safe: true,\n },\n '{user_id}': {\n value: data.userId,\n prefix: 'uid_',\n safe: true,\n },\n '{px}': {\n value: !allNameRule.includes('{px}')\n ? null\n : data.fullWidth\n ? data.fullWidth + 'x' + data.fullHeight\n : '',\n prefix: '',\n safe: true,\n },\n '{tags}': {\n value: !allNameRule.includes('{tags}')\n ? null\n : data.tags.join(settings.tagsSeparator),\n prefix: 'tags_',\n safe: false,\n },\n '{tags_translate}': {\n value: !allNameRule.includes('{tags_translate}')\n ? null\n : data.tagsWithTransl.join(settings.tagsSeparator),\n prefix: 'tags_',\n safe: false,\n },\n '{tags_transl_only}': {\n value: !allNameRule.includes('{tags_transl_only}')\n ? null\n : data.tagsTranslOnly.join(settings.tagsSeparator),\n prefix: 'tags_',\n safe: false,\n },\n '{bmk}': {\n value: data.bmk,\n prefix: 'bmk_',\n safe: true,\n },\n '{bmk_id}': {\n value: data.bmkId || '',\n prefix: 'bmk-id_',\n safe: true,\n },\n '{bmk_1000}': {\n value: this.getBKM1000(data.bmk),\n prefix: 'bmk_',\n safe: true,\n },\n '{like}': {\n value: data.likeCount,\n prefix: 'like_',\n safe: true,\n },\n '{view}': {\n value: data.viewCount,\n prefix: 'view_',\n safe: true,\n },\n '{date}': {\n value: !allNameRule.includes('{date}')\n ? null\n : DateFormat.format(data.date, settings.dateFormat),\n prefix: '',\n safe: false,\n },\n '{upload_date}': {\n value: !allNameRule.includes('{upload_date}')\n ? null\n : DateFormat.format(data.uploadDate, settings.dateFormat),\n prefix: '',\n safe: false,\n },\n '{task_date}': {\n value: !allNameRule.includes('{task_date}')\n ? null\n : DateFormat.format(store.crawlCompleteTime, settings.dateFormat),\n prefix: '',\n safe: false,\n },\n '{type}': {\n value: Config.worksTypeName[data.type],\n prefix: '',\n safe: true,\n },\n '{AI}': {\n value: data.aiType === 2 ? 'AI' : '',\n prefix: '',\n safe: true,\n },\n '{series_title}': {\n value: data.seriesTitle || '',\n prefix: '',\n safe: false,\n },\n '{series_order}': {\n value: data.seriesOrder === null ? '' : '#' + data.seriesOrder,\n prefix: '',\n safe: true,\n },\n '{series_id}': {\n value: data.seriesId,\n prefix: '',\n safe: true,\n },\n '{sl}': {\n value: data.sl ?? 0,\n prefix: '',\n safe: true,\n },\n }\n\n // 2 生成文件名\n let result = this.generateFileName(userSetName, cfg)\n\n // 3 根据某些设置向结果中添加新的文件夹\n // 注意:添加文件夹的顺序会影响文件夹的层级,所以不可随意更改顺序\n\n // 根据作品类型自动创建对应的文件夹\n if (settings.createFolderByType) {\n // 根据作品类型和对应开关确定是否需要要为其建立文件夹\n const allSwitch = [\n settings.createFolderByTypeIllust,\n settings.createFolderByTypeManga,\n settings.createFolderByTypeUgoira,\n settings.createFolderByTypeNovel,\n ]\n if (allSwitch[data.type]) {\n const folder = Config.worksTypeName[data.type]\n result = this.appendFolder(result, folder)\n }\n }\n\n // 根据 sl 创建文件夹\n if (settings.createFolderBySl && data.sl !== null) {\n const folder = 'sl' + data.sl.toString()\n result = this.appendFolder(result, folder)\n }\n\n // 根据第一个匹配的 tag 建立文件夹\n if (settings.createFolderByTag && settings.createFolderTagList.length > 0) {\n const workTags = data.tagsWithTransl.map((val) => val.toLowerCase())\n\n // 循环用户输入的 tag 列表,查找作品 tag 是否含有匹配项\n // 这样用户输入的第一个匹配的 tag 就会作为文件夹名字\n // 不要循环作品 tag 列表,因为那样找到的第一个匹配项未必是用户输入的第一个\n // 例如 用户输入顺序:巨乳 欧派\n // 作品 tag 里的顺序:欧派 巨乳\n for (const tag of settings.createFolderTagList) {\n // 查找匹配的时候转换成小写\n const nowTag = tag.toLowerCase()\n if (workTags.includes(nowTag)) {\n // 设置为文件夹名字的时候使用原 tag(不转换成小写)\n result = this.appendFolder(result, tag)\n break\n }\n }\n }\n\n // 把 R18(G) 作品存入指定目录里\n if (settings.r18Folder && (data.xRestrict === 1 || data.xRestrict === 2)) {\n result = this.appendFolder(\n result,\n this.generateFileName(r18FolderName, cfg)\n )\n }\n\n // 为每个作品创建单独的文件夹\n if (createFolderForEachWork) {\n const workDirName = this.generateFileName(settings.workDirNameRule, cfg)\n // 生成文件名。由于用户可能会添加斜线来建立多层路径,所以需要循环添加每个路径\n const allPath = workDirName.split('/')\n for (const path of allPath) {\n if (path.length > 0) {\n result = this.appendFolder(result, path)\n }\n }\n }\n\n // 4 文件夹部分和文件名已经全部生成完毕,处理一些边界情况\n\n // 处理连续的 / 有时候两个斜线中间的字段是空值,最后就变成两个斜线挨在一起了\n result = result.replace(/\\/{2,100}/g, '/')\n\n // 对每一层路径和文件名进行处理\n const paths = result.split('/')\n\n for (let i = 0; i < paths.length; i++) {\n // 去掉每层路径首尾的空格\n // 把每层路径头尾的 . 替换成全角的.因为 Chrome 不允许头尾使用 .\n paths[i] = paths[i].trim().replace(/^\\./g, '.').replace(/\\.$/g, '.')\n\n // 处理路径是 Windows 保留文件名的情况(不需要处理后缀名)\n paths[i] = Utils.handleWindowsReservedName(paths[i], this.addStr)\n }\n\n result = paths.join('/')\n\n // 5 生成后缀名\n // 如果是动图,那么此时根据用户设置的动图保存格式,更新其后缀名\n if (\n this.ugoiraExt.includes(data.ext) &&\n data.ugoiraInfo &&\n settings.imageSize !== 'thumb'\n ) {\n // 当下载图片的方形缩略图时,不修改其后缀名,因为此时下载的是作品的静态缩略图,不是动图\n data.ext = settings.ugoiraSaveAs\n }\n // 如果是小说,那么此时根据用户设置的动图保存格式,更新其后缀名\n if (data.type === 3) {\n data.ext = settings.novelSaveAs\n }\n const extResult = '.' + data.ext\n\n // 6 处理不创建文件夹的情况\n if (settings.notFolderWhenOneFile && store.result.length === 1) {\n // 舍弃文件夹部分,只保留文件名\n result = result.split('/').pop()!\n }\n\n // 7 文件名长度限制\n // 不计算文件夹的长度,只计算 文件名+后缀名 部分\n // 理论上文件夹部分也可能会超长,但是实际使用中几乎不会有人这么设置,所以不处理\n if (settings.fileNameLengthLimitSwitch) {\n let limit = settings.fileNameLengthLimit\n const allPart = result.split('/')\n const lastIndex = allPart.length - 1\n\n if (allPart[lastIndex].length + extResult.length > limit) {\n allPart[lastIndex] = allPart[lastIndex].substring(\n 0,\n limit - extResult.length\n )\n }\n\n result = allPart.join('/')\n }\n\n // 8 添加后缀名\n result += extResult\n\n // 9 返回结果\n return result\n }\n}\n\nconst fileName = new FileName()\nexport { fileName }\n","import { pageType } from './PageType'\n\n// 查找横图作品的缩略图和容器\nclass FindHorizontalImageWrap {\n constructor() {\n this.obBody()\n }\n\n // 寻找作品缩略图的容器时使用的选择器\n // 并不是所有容器都需要处理,只需要处理应用了“显示更大的缩略图”的容器\n // 有些缩略图并不会被放大,也就不用处理它们的容器\n private wrapSelectors = ['.searchList', 'li[size=\"1\"]']\n\n // 首先会动态生成 li(或者是包含很多 li 的容器元素)\n // 但是此时 li 里面没有 img 标签,而是用一个 figure 标签占位\n // 然后先为一些 li 生成里面的 img 标签(在用户主页会先给首屏显示的 li 生成 img 标签,但是在其他页面也有可能直接为所有 li 生成 img)\n // 有时候当页面滚动到下面的 li 的时候,才会生成里面的 img 标签\n // observer 可以捕获到添加的 img 标签,并且有 src 属性\n // 如果开启了下载器的替换方形缩略图功能,则捕获到的 src 是替换后的\n // 如果 img 的 src 是在缓存里的(并且没有禁用缓存),则捕获到它时就已经 complete 了\n private obBody() {\n const ob = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.addedNodes.length > 0) {\n for (const el of mutation.addedNodes) {\n // 从添加的元素里寻找缩略图容器\n const e = el as HTMLElement\n const wrapList: HTMLElement[] = []\n // 如果添加的是单个的 li,,则判断它是不是缩略图容器\n if (e.nodeName === 'LI') {\n if (\n e.getAttribute('size') === '1' ||\n e.querySelector('div[width=\"184\"]') ||\n e.classList.contains('searchList')\n ) {\n wrapList.push(e)\n }\n } else if (e.nodeName === 'IMG' && (e as HTMLImageElement).src) {\n if (pageType.type === pageType.list.ArtworkSearch) {\n // 在搜索页面里,添加的元素是 img 而不是其容器 li\n const li =\n e.parentElement?.parentElement?.parentElement?.parentElement\n ?.parentElement?.parentElement\n if (li && li.nodeName === 'LI') {\n this.readyCheckImage(e as HTMLImageElement, li)\n }\n }\n } else if (e.nodeType === 1) {\n // 添加的不是 li,则试图从元素中寻找缩略图容器\n for (const selector of this.wrapSelectors) {\n const elList = e.querySelectorAll(selector)\n for (const el of elList) {\n wrapList.push(el as HTMLLIElement)\n }\n // 如果这个选择器查找到了元素,就不再查找下一个选择器,以免重复查找\n if (elList.length > 0) {\n break\n }\n }\n // 如果前面没有找到缩略图容器,则尝试其他办法\n // 注意,这里使用的选择器不是容器本身的选择器,而是容器的子元素,所以需要单独处理\n // if (wrapList.length === 0) {\n // const elList = e.querySelectorAll('div[width=\"184\"]')\n // for (const el of elList) {\n // if(el.parentNode?.nodeName === 'LI'){\n // wrapList.push(el.parentNode as HTMLLIElement)\n // }\n // }\n // }\n }\n\n // 监视缩略图容器\n for (const wrap of wrapList) {\n this.obWorkWrap(wrap)\n }\n }\n }\n }\n })\n\n ob.observe(document.body, {\n childList: true,\n subtree: true,\n })\n }\n\n // 监视作品缩略图容器内部的 img 元素\n private obWorkWrap(wrap: HTMLElement) {\n // 已经有 img 元素的情况\n if (pageType.type === pageType.list.ArtworkSearch) {\n // .searchList 是下载器在搜索页面生成的元素,里面一开始就有 img 元素,所以不需要监视\n if (wrap.classList.contains('searchList') || wrap.nodeName === 'LI') {\n const img = wrap.querySelector('img')! as HTMLImageElement\n this.readyCheckImage(img, wrap)\n return\n }\n }\n\n // 如果是动态生成 img 的情况,则需要对 wrap 使用监视器\n const ob = new MutationObserver((records) => {\n for (const record of records) {\n // 生成作品缩略图内部的 img 时,addedNodes 数组里只有 img 标签这一个元素\n if (\n record.addedNodes.length === 1 &&\n record.addedNodes[0].nodeName === 'IMG'\n ) {\n const img = record.addedNodes[0] as HTMLImageElement\n this.readyCheckImage(img, wrap, ob)\n }\n }\n })\n ob.observe(wrap, {\n childList: true,\n subtree: true,\n })\n }\n\n // 当图片加载完成时检查它的宽高,并取消监视\n private readyCheckImage(\n img: HTMLImageElement,\n wrap: HTMLElement,\n ob?: MutationObserver\n ) {\n if (img?.complete) {\n this.checkImage(img, wrap)\n ob && ob.disconnect()\n } else {\n img &&\n (img.onload = () => {\n this.checkImage(img, wrap)\n ob && ob.disconnect()\n })\n }\n }\n\n // 当 img 加载完成后,计算 img 是横图还是竖图\n private checkImage(img: HTMLImageElement, wrap: HTMLElement) {\n if (!img.src.includes('1200.jpg')) {\n return\n }\n if (img.naturalWidth / img.naturalHeight > 1) {\n this.find(wrap)\n }\n }\n\n private onFindCB: Function[] = []\n // 注册回调函数\n public onFind(cb: Function) {\n this.onFindCB.push(cb)\n }\n\n // 当找到横图的容器时会执行回调函数\n private find(wrap: HTMLElement) {\n for (const cb of this.onFindCB) {\n cb(wrap)\n }\n }\n}\n\nconst findHorizontalImageWrap = new FindHorizontalImageWrap()\nexport { findHorizontalImageWrap }\n","import { EVT } from './EVT'\n\nclass HiddenBrowserDownloadBar {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'hiddenBrowserDownloadBar') {\n chrome.runtime.sendMessage({\n msg: 'setShelfEnabled',\n value: !data.value,\n })\n // 如果这个设置为 true,则应该向后台传递 false\n }\n })\n }\n}\n\nnew HiddenBrowserDownloadBar()\n","import { API } from './API'\nimport { EVT } from './EVT'\nimport { pageType } from './PageType'\nimport { Tools } from './Tools'\nimport { store } from './store/Store'\nimport { Utils } from './utils/Utils'\nimport { List } from './ManageFollowing'\nimport { settings } from './setting/Settings'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { Config } from './Config'\n\nclass HighlightFollowingUsers {\n constructor() {\n if (!Utils.isPixiv()) {\n return\n }\n\n this.delayCheckUpdate()\n\n window.setTimeout(() => {\n this.startMutationObserver()\n }, 0)\n\n chrome.runtime.onMessage.addListener(async (msg, sender, sendResponse) => {\n if (msg.msg === 'dispathFollowingData') {\n this.receiveData(msg.data)\n EVT.fire('followingUsersChange')\n }\n\n if (msg.msg === 'updateFollowingData') {\n const following = await this.getList()\n\n console.log(lang.transl('_已更新关注用户列表'))\n toast.success(lang.transl('_已更新关注用户列表'), {\n position: 'topCenter',\n })\n\n chrome.runtime.sendMessage({\n msg: 'setFollowingData',\n data: {\n user: store.loggedUserID,\n following: following,\n total: this.total,\n },\n })\n }\n\n if (msg.msg === 'getLoggedUserID') {\n sendResponse({ loggedUserID: store.loggedUserID })\n }\n })\n\n if (store.loggedUserID) {\n chrome.runtime.sendMessage({\n msg: 'requestFollowingData',\n })\n }\n\n // 每当下载器获取了页面的主题颜色时\n window.addEventListener(EVT.list.getPageTheme, (ev: CustomEventInit) => {\n if (ev.detail.data) {\n if (this.pageTheme !== ev.detail.data) {\n // 当用户改变页面主题时,一些页面元素会重新生成,但是目前的代码不能监听到这个变化\n // 所以需要来更新高亮状态\n window.setTimeout(() => {\n this.makeHighlight()\n }, 0)\n }\n this.pageTheme = ev.detail.data\n // 给 html 标签添加自定义 data 属性,这是因为原本的 html 标签在没有任何 data 属性的时候,\n // 可能是普通模式,也可能是夜间模式,所以下载器必须自行添加一个属性,\n // 才能让高亮样式在不同模式中有不同的效果\n document.documentElement.setAttribute(\n 'data-xzpagetheme',\n this.pageTheme\n )\n }\n })\n\n // 在作品页内,作品大图下方和右侧的作者名字变化时,监视器无法监测到变化,尤其是右侧的名字\n // 所以用定时器执行\n window.addEventListener(EVT.list.pageSwitch, () => {\n if (\n !Config.mobile &&\n (pageType.type === pageType.list.Artwork ||\n pageType.type === pageType.list.Novel)\n ) {\n let time = 0\n let interval = 500\n let timer = window.setInterval(() => {\n time = time + interval\n if (time > 5000) {\n window.clearInterval(timer)\n }\n const leftA = document.querySelectorAll('#root main a[href*=user]')\n const rightA = document.querySelectorAll(\n '#root main+aside a[href*=user]'\n )\n const allA = Array.from(leftA).concat(Array.from(rightA))\n this.makeHighlight(allA as HTMLAnchorElement[])\n }, interval)\n }\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'highlightFollowingUsers') {\n if (!data.value) {\n this.clearHighlight()\n } else {\n this.makeHighlight()\n }\n }\n })\n }\n\n private pageTheme = ''\n\n /**当前登录用户的关注用户列表 */\n private following: string[] = []\n\n /**当前登录用户的关注用户总数 */\n private total = 0\n\n private checkUpdateTimer?: number\n\n private readonly highlightClassName = 'pbdHighlightFollowing'\n\n private async receiveData(list: List) {\n const thisUserData = list.find((data) => data.user === store.loggedUserID)\n if (thisUserData) {\n this.following = thisUserData.following\n store.followingUserIDList = this.following\n this.total = thisUserData.total\n\n this.makeHighlight()\n } else {\n // 恢复的数据里没有当前用户的数据,需要获取\n this.checkNeedUpdate()\n }\n }\n\n /**全量获取当前用户的所有关注列表 */\n private async getList(): Promise {\n toast.show(lang.transl('_正在加载关注用户列表'), {\n position: 'topCenter',\n })\n\n // 需要获取公开关注和私密关注\n const publicList = await this.getFollowingList('show')\n const privateList = await this.getFollowingList('hide')\n\n const followingIDList = publicList.concat(privateList)\n return followingIDList\n }\n\n /**获取公开或私密关注的用户 ID 列表 */\n private async getFollowingList(rest: 'show' | 'hide'): Promise {\n const ids: string[] = []\n let offset = 0\n let total = await this.getFollowingTotal(rest)\n\n if (total === 0) {\n return ids\n }\n\n // 每次请求 100 个关注用户的数据\n const limit = 100\n\n while (ids.length < total) {\n const res = await API.getFollowingList(\n store.loggedUserID,\n rest,\n '',\n offset,\n limit\n )\n offset = offset + limit\n\n for (const users of res.body.users) {\n ids.push(users.userId)\n }\n\n if (res.body.users.length === 0) {\n // 实际获取到的关注用户数量可能比 total 少,这是正常的\n // 例如 toal 是 3522,实际上获取到的可能是 3483 个,再往后都是空数组了\n break\n }\n }\n\n return ids\n }\n\n /**只请求第一页的数据,以获取 total */\n private async getFollowingTotal(rest: 'show' | 'hide') {\n const res = await API.getFollowingList(store.loggedUserID, rest, '', 0, 24)\n\n return res.body.total\n }\n\n private getUpdateTime() {\n // 每次检查更新的最低时间间隔是 5 分钟\n // 如果用户打开了多个标签页,它们都会加载关注列表的第一页来检查数量\n // 所以间隔不宜太短\n const base = 300000\n\n // 产生一个 10 分钟内的随机数\n const random = Math.random() * 600000\n\n // 通常不需要担心间隔时间太大导致数据更新不及时\n // 因为多个标签页里只要有一个更新了数据,所有的标签页都会得到新数据\n return base + random\n }\n\n private async delayCheckUpdate() {\n window.clearTimeout(this.checkUpdateTimer)\n this.checkUpdateTimer = window.setTimeout(async () => {\n this.checkNeedUpdate()\n return this.delayCheckUpdate()\n }, this.getUpdateTime())\n }\n\n /**检查关注用户的数量,如果数量发生变化则执行全量更新 */\n private async checkNeedUpdate() {\n // 在搜索页面里移除已关注用户的作品 功能依赖关注用户列表,所以如果用户启用了该功能,也需要更新关注列表\n if (\n !settings.highlightFollowingUsers &&\n !settings.removeWorksOfFollowedUsersOnSearchPage\n ) {\n return\n }\n\n // 因为本程序不区分公开和非公开关注,所以只储存总数\n let newTotal = 0\n for (const rest of ['show', 'hide']) {\n const total = await this.getFollowingTotal(rest as 'show' | 'hide')\n newTotal = newTotal + total\n }\n\n if (newTotal !== this.total) {\n // console.log(`关注用户总数量变化 ${this.total} -> ${newTotal}`)\n this.total = newTotal\n chrome.runtime.sendMessage({\n msg: 'needUpdateFollowingData',\n user: store.loggedUserID,\n })\n }\n }\n\n // 检查包含用户 id 的链接,并且需要以 id 结束\n // 这是因为 id 之后还有字符的链接是不需要的,例如:\n // https://www.pixiv.net/en/users/17207914/artworks\n // 下载器只匹配用户主页的链接,不匹配用户子页面的链接\n private readonly checkUserLinkReg = /\\/users\\/(\\d+)$/\n\n private makeHighlight(aList?: HTMLAnchorElement[]) {\n if (!settings.highlightFollowingUsers) {\n return\n }\n\n // 这里不需要检查 this.followingList.length === 0 的情况\n // 因为可能之前的数量是 1,之后用户取消关注,变成了 0,那么下面的代码依然需要执行\n // 以把之前高亮过的元素取消高亮\n\n const allA = aList || document.querySelectorAll('a')\n for (const a of allA) {\n let match = false\n if (a.href) {\n // 小说排行榜里的用户链接普遍带有 /novels 后缀,所以不要求以用户 id 结尾\n const test = a.href.match(\n pageType.type === pageType.list.NovelRanking\n ? /\\/users\\/(\\d+)/\n : this.checkUserLinkReg\n )\n if (test && test.length > 1) {\n match = this.following.includes(test[1])\n\n // 要高亮的元素\n let target: Element = a\n\n // 如果用户链接的 a 标签包含子元素,则将 className 添加到它的某个子元素上\n // 这是为了尽量精确的只高亮用户链接,避免高亮区域里包含其他不必要的元素\n // 但是有些页面里不适合这样做,例如在排行榜页面里,a 标签的第一个元素是用户头像\n // 此时如果只高亮第一个元素,那么效果就很不明显,所以就需要高亮整个 a 标签\n\n // 在多数情况下,高亮第一个子元素\n if (a.firstChild && a.firstChild.nodeType === 1) {\n target = a.firstChild as HTMLElement\n }\n\n // 在某些页面里高亮最后一个子元素\n if (\n pageType.type === pageType.list.ArtworkRanking ||\n pageType.type === pageType.list.AreaRanking\n ) {\n if (a.lastChild && a.lastChild.nodeType === 1) {\n target = a.lastChild as HTMLElement\n }\n }\n\n target.classList[match ? 'add' : 'remove'](this.highlightClassName)\n }\n }\n }\n\n this.handleUserHomePage()\n }\n\n private startMutationObserver() {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.addedNodes.length > 0) {\n for (const addedNodes of mutation.addedNodes) {\n if (addedNodes.nodeName === 'A') {\n // 直接是 A 标签的情况\n this.makeHighlight(Array.from([addedNodes as HTMLAnchorElement]))\n } else {\n // addedNodes 也会包含纯文本,所以需要判断 nodeType\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node/nodeType\n if (addedNodes.nodeType === 1) {\n // 如果是元素,则查找里面的 A 标签\n const allA = (addedNodes as HTMLElement).querySelectorAll('a')\n this.makeHighlight(Array.from(allA))\n } else {\n // 如果不是元素,而且它也不是 A 标签,则尝试查找它的父元素是不是 A 标签\n // 这是因为在作品页内,作品大图下方和右侧的作者名字变化时,上面的代码无法监测到\n // 但是这段代码只能检测到下方的,右侧的还是监测不到。而且可能拖累性能,所以我注释掉了\n // const parent = mutation.target.parentElement\n // if (parent && parent.nodeName === 'A') {\n // this.makeHighlight([parent as HTMLAnchorElement])\n // }\n }\n }\n }\n }\n }\n })\n\n // 注意:本模块最好不要监听 attributes 变化,因为本模块自己就会修改元素的 attributes\n // 监听 attributes 并进行处理可能导致一些代码重复执行,或者死循环\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n })\n }\n\n private handleUserHomePage() {\n if (pageType.type === pageType.list.UserHome) {\n // 在用户主页里,高亮用户名(因为用户名没有超链接,需要单独处理)\n const userID = Tools.getUserId()\n const flag = this.following.includes(userID)\n const h1 = document.querySelector('h1') as HTMLHeadingElement\n if (h1) {\n h1.classList[flag ? 'add' : 'remove'](this.highlightClassName)\n }\n\n // 取消用户主页里“主页”按钮的高亮,它具有用户主页链接,但它不是用户名\n const selector = Config.mobile ? '.v-nav-tabs a' : 'nav a'\n const homeBtn = document.querySelector(selector)\n if (homeBtn) {\n homeBtn.classList.remove(this.highlightClassName)\n }\n }\n }\n\n private clearHighlight() {\n const allElement = document.querySelectorAll('.' + this.highlightClassName)\n for (const el of allElement) {\n el.classList.remove(this.highlightClassName)\n }\n }\n}\n\nnew HighlightFollowingUsers()\n","/// \nimport { API } from './API'\nimport { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { loading } from './Loading'\nimport { states } from './store/States'\nimport { toast } from './Toast'\nimport { Tools } from './Tools'\nimport { ArtworkData } from './crawl/CrawlResult'\nimport { bookmark } from './Bookmark'\nimport { cacheWorkData } from './store/CacheWorkData'\nimport { Colors } from './Colors'\nimport { downloadOnClickBookmark } from './download/DownloadOnClickBookmark'\nimport { pageType } from './PageType'\n\n// 所有参数\ninterface Config {\n // 作品 id\n // 默认从 url 中获取作品 id\n workId: string\n // 图片最少有多少张时才会启用查看器\n // 默认为 2\n imageNumber: number\n // 查看大图时,显示哪种尺寸的图片\n // 默认为 original\n imageSize: 'original' | 'regular' | 'small'\n // 初始化之后,是否直接启动查看器\n // 默认为 false\n autoStart: boolean\n // 获取作品数据期间,是否显示 loading 动画\n // 默认为 false\n showLoading: boolean\n}\n\n// 可选参数\ninterface ConfigOptional {\n workId?: string\n imageNumber?: number\n imageSize?: 'original' | 'regular' | 'small'\n autoStart?: boolean\n showLoading?: boolean\n}\n\n// 对 Viewer 进行修改以供下载器使用\n// 原版是接收页面上已存在的缩略图列表,但在下载器里它需要从作品 id 获取数据,生成缩略图列表。并且需要进行一些改造\nclass ImageViewer {\n // new() 不会创建图片查看器,需要再手动执行 init()\n // 这是因为有的模块需要获取异步操作之后生成的元素,但是构造函数无法返回异步操作,所以使用 init() 进行包装\n constructor(cfg: ConfigOptional) {\n this.cfg = Object.assign(this.cfg, cfg)\n }\n\n private myViewer!: Viewer // 查看器\n private viewerWarpper?: HTMLDivElement // 图片列表的容器\n private viewerUl: HTMLUListElement = document.createElement('ul') // 图片列表的 ul 元素\n\n private show = false // 当前查看器实例是否处于显示状态\n private isOriginalSize = false // 是否原尺寸显示图片\n\n // 图片查看器初始化时,会获取作品数据,保存到这个成员\n private workData: ArtworkData | undefined\n private pageCount = 1\n private firstImageURL = '' // 第一张图片的 url\n\n // 默认配置\n private cfg: Config = {\n workId: Tools.getIllustId(),\n imageNumber: 2,\n imageSize: 'original',\n autoStart: false,\n showLoading: false,\n }\n\n private readonly addBtnClass = 'viewer-add-btn'\n\n public async init() {\n // 删除旧的图片查看器元素\n const oldViewerContainer = document.querySelector('.viewer-container')\n oldViewerContainer && oldViewerContainer.remove()\n\n const wrap = await this.createImageList()\n if (wrap) {\n this.bindHotKey()\n this.configureViewer()\n }\n return wrap\n }\n\n // 事件会重复绑定,设计如此,这是因为每次绑定时的 this 是不同的,必须重新绑定。而且不会冲突\n private bindHotKey() {\n // 按 F 进入/退出 1:1 查看模式\n document.addEventListener('keydown', (event) => {\n if (event.code === 'KeyF') {\n if (this.show) {\n this.isOriginalSize = !this.isOriginalSize\n this.setOriginalSize()\n }\n }\n })\n\n // 按 Alt + B 收藏当前作品\n // 因为 Pixiv 会在按下 B 键时收藏当前作品,所以下载器不能使用 B 键。尝试阻止 Pixiv 的事件但是没有成功\n document.addEventListener('keydown', (event) => {\n if (event.altKey && event.code === 'KeyB') {\n if (this.show) {\n this.addBookmark()\n }\n }\n })\n\n // 按 D 下载当前作品\n document.addEventListener('keydown', (event) => {\n if (event.code === 'KeyD') {\n if (this.show) {\n this.download()\n }\n }\n })\n\n // 监听左右方向键,防止在看图时,左右方向键导致 Pixiv 切换作品\n window.addEventListener(\n 'keydown',\n (event) => {\n if (event.code === 'ArrowLeft' || event.code === 'ArrowRight') {\n if (this.show) {\n // 阻止事件冒泡\n event.stopPropagation()\n // 控制切换到上一张或者下一张\n // true 表示启用循环切换\n event.code === 'ArrowLeft'\n ? this.myViewer.prev(true)\n : this.myViewer.next(true)\n }\n }\n },\n true\n )\n }\n\n // 图片查看器需要一个图片列表元素,创建缩略图列表\n private async createImageList(): Promise {\n return new Promise(async (resolve) => {\n // 获取作品数据\n if (cacheWorkData.has(this.cfg.workId)) {\n this.workData = cacheWorkData.get(this.cfg.workId)\n } else {\n this.cfg.showLoading && (loading.show = true)\n\n const unlisted = pageType.type === pageType.list.Unlisted\n const data = await API.getArtworkData(this.cfg.workId, unlisted)\n this.workData = data\n cacheWorkData.set(data)\n\n this.cfg.showLoading && (loading.show = false)\n }\n\n const body = this.workData!.body\n // 处理插画、漫画、动图作品,不处理其他类型的作品\n if (\n body.illustType === 0 ||\n body.illustType === 1 ||\n body.illustType === 2\n ) {\n // 如果图片数量达到指定值,则会创建创建缩略图,启用图片查看器\n if (body.pageCount >= this.cfg.imageNumber) {\n this.pageCount = body.pageCount\n this.firstImageURL =\n body.urls[this.cfg.imageSize] || body.urls.original\n\n // 缩略图列表的结构: div > ul > li > img\n this.viewerWarpper = document.createElement('div')\n this.viewerUl = document.createElement('ul')\n this.viewerUl.classList.add('beautify_scrollbar')\n this.viewerWarpper.appendChild(this.viewerUl)\n this.viewerWarpper.style.display = 'none'\n\n // 生成 UL 里面的缩略图列表\n let html: string[] = []\n for (let index = 0; index < body.pageCount; index++) {\n const str = `
  • `\n html.push(str)\n }\n this.viewerUl.innerHTML = html.join('')\n }\n }\n\n return resolve(this.viewerWarpper)\n })\n }\n\n // 配置图片查看器\n private configureViewer() {\n // 图片查看器显示之后\n this.viewerUl.addEventListener('shown', () => {\n this.show = true\n this.addDownloadBtn()\n this.addBookmarkBtn()\n\n // 如果图片数量只有 1 个,则不显示缩略图一栏\n const navbar = document.querySelector('.viewer-navbar') as HTMLDivElement\n if (navbar) {\n // 控制不透明度,这样它依然会占据空间,不会导致工具栏下移\n navbar.style.opacity = this.pageCount > 1 ? '1' : '0'\n }\n\n // 点击 1:1 按钮时\n const oneToOne = document.querySelector('.viewer-one-to-one')\n if (oneToOne) {\n oneToOne.setAttribute('title', lang.transl('_原始尺寸') + ' (F)')\n oneToOne.addEventListener(\n 'click',\n (ev) => {\n // 阻止冒泡,否则放大过程中会多一次闪烁(推测可能是这个按钮原有的事件导致的,停止冒泡之后就好了)\n ev.stopPropagation()\n this.isOriginalSize = !this.isOriginalSize\n this.setOriginalSize()\n },\n true\n )\n }\n })\n\n // 退出图片查看器时(可能尚未完全退出)\n this.viewerUl.addEventListener('hide', () => {\n this.show = false\n })\n\n // 查看每一张图片时,如果处于 1:1 模式,就把图片缩放到 100%\n // viewed 事件是图片加载完成时触发的\n this.viewerUl.addEventListener('viewed', () => {\n if (this.isOriginalSize) {\n this.setOriginalSize()\n }\n })\n\n // 因为选项里的 size 是枚举类型,所以在这里也要定义一个枚举\n enum ToolbarButtonSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n }\n\n // 配置新的看图组件\n const handleToTop = this.moveToTop.bind(this)\n const pageCount = this.pageCount\n const firstImageURL = this.firstImageURL\n\n this.myViewer = new Viewer(this.viewerUl, {\n toolbar: {\n zoomIn: 0,\n zoomOut: 0,\n oneToOne: 1,\n reset: 0,\n prev: 1,\n play: {\n show: 0,\n size: ToolbarButtonSize.Large,\n },\n next: 1,\n rotateLeft: 0,\n rotateRight: 0,\n flipHorizontal: 0,\n flipVertical: 0,\n },\n\n url(image: HTMLImageElement) {\n return image.dataset.src!\n },\n\n viewed(ev) {\n handleToTop()\n // 当图片显示完成(加载完成)后,预加载下一张图片\n let index = ev.detail.index\n\n if (index < pageCount - 1) {\n index++\n }\n\n const nextImg = firstImageURL.replace('p0', 'p' + index)\n const img = new Image()\n img.src = nextImg\n },\n\n // 取消一些动画,比如切换图片时,图片从小变大出现的动画\n transition: false,\n keyboard: true,\n // 不显示 title(图片名和宽高信息)\n title: false,\n // 不显示缩放比例\n tooltip: false,\n })\n\n // 预加载第一张图片\n const img = new Image()\n img.src = firstImageURL\n\n if (this.cfg.autoStart) {\n this.myViewer.show()\n }\n }\n\n // 设置原始尺寸显示\n private setOriginalSize() {\n if (this.isOriginalSize) {\n // 1:1 显示图片\n this.myViewer.zoomTo(1)\n this.moveToTop()\n } else {\n // 缩小图片以适应可视区域\n const w = this.myViewer.image.naturalWidth\n const h = this.myViewer.image.naturalHeight\n const vw = this.myViewer.viewerData.width * 0.9\n const vh = this.myViewer.viewerData.height * 0.9\n const wScale = vw / w\n const hScale = vh / h\n let scale = Math.min(wScale, hScale)\n if (scale >= 1) {\n return\n }\n this.myViewer.zoomTo(scale)\n\n const nowTop = Number.parseInt(this.myViewer.image.style.marginTop)\n this.myViewer.move(0, vh * 0.05 - nowTop)\n }\n }\n\n // 如果图片的高度超出可视区域高度,则从图片的顶部开始显示\n private moveToTop() {\n const img = this.myViewer.image as HTMLImageElement\n const windowHeight = window.innerHeight\n if (img.height <= windowHeight) {\n return\n }\n // 如果图片高度大于视口高度,让它从顶部显示\n // 目的是把图片的 marginTop 设为 0,但不能直接修改 marginTop,否则鼠标拖动图片时会抖动\n const nowTop = Number.parseInt(this.myViewer.image.style.marginTop)\n this.myViewer.move(0, 0 - nowTop)\n }\n\n /**在图片查看器的工具栏里添加按钮\n *\n * 元素必须具有 id 属性,用于区分\n */\n private addBtn(btn: HTMLElement) {\n // 最后的查看器元素就是最新添加的查看器\n const allContainer = document.querySelectorAll('.viewer-container')\n const last = allContainer[allContainer.length - 1]\n\n const test = last.querySelector('#' + btn.id)\n if (test) {\n return\n }\n\n const one2one = last.querySelector('.viewer-one-to-one')\n if (one2one) {\n return one2one.insertAdjacentElement('afterend', btn) as HTMLElement\n } else {\n console.error('Add btn failed')\n }\n }\n\n // 在图片查看器里添加下载按钮\n private addDownloadBtn() {\n const li = document.createElement('li')\n li.setAttribute('role', 'button')\n li.setAttribute('title', lang.transl('_下载') + ' (D)')\n li.classList.add(this.addBtnClass)\n li.textContent = '↓'\n li.id = 'imageViewerDownloadBtn'\n\n this.addBtn(li)\n\n li.addEventListener('click', () => {\n this.download()\n })\n }\n\n // 在图片查看器里添加收藏按钮\n private addBookmarkBtn() {\n const btn = document.createElement('li')\n btn.setAttribute('role', 'button')\n btn.setAttribute('title', lang.transl('_收藏') + ' (Alt + B)')\n btn.classList.add(this.addBtnClass)\n btn.style.fontSize = '14px'\n btn.textContent = '✩'\n btn.id = 'imageViewerBookmarkBtn'\n this.addBtn(btn)\n\n btn.addEventListener('click', async () => {\n // 添加收藏\n this.addBookmark()\n\n // 下载这个作品\n downloadOnClickBookmark.send(this.workData!.body.illustId)\n })\n }\n\n private async addBookmark() {\n // 显示提示\n toast.show(lang.transl('_收藏'), {\n bgColor: Colors.bgBlue,\n })\n\n const res = await bookmark.add(\n this.cfg.workId,\n 'illusts',\n Tools.extractTags(this.workData!)\n )\n if (res === 200) {\n toast.success(lang.transl('_已收藏'))\n }\n }\n\n // 下载当前查看的作品\n private download() {\n states.quickCrawl = true\n\n // 发送要下载的作品 id\n EVT.fire('crawlIdList', [\n {\n id: this.cfg.workId,\n type: 'illusts',\n },\n ])\n\n // 显示提示\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n}\n\nexport { ImageViewer }\n","// 根据页面类型来初始化抓取流程和一些特定的功能\nimport { EVT } from './EVT'\nimport { pageType } from './PageType'\n\nimport { InitHomePage } from './crawlMixedPage/InitHomePage'\nimport { InitArtworkPage } from './crawlArtworkPage/InitArtworkPage'\nimport { InitUserPage } from './crawlMixedPage/InitUserPage'\nimport { InitBookmarkLegacyPage } from './crawlMixedPage/InitBookmarkLegacyPage'\nimport { InitBookmarkPage } from './crawlMixedPage/InitBookmarkPage'\nimport { InitSearchArtworkPage } from './crawlArtworkPage/InitSearchArtworkPage'\nimport { InitAreaRankingPage } from './crawlArtworkPage/InitAreaRankingPage'\nimport { InitRankingArtworkPage } from './crawlArtworkPage/InitRankingArtworkPage'\nimport { InitPixivisionPage } from './crawlArtworkPage/InitPixivisionPage'\nimport { InitBookmarkDetailPage } from './crawlArtworkPage/InitBookmarkDetailPage'\nimport { InitBookmarkNewPage } from './crawlMixedPage/InitBookmarkNewPage'\nimport { InitDiscoverPage } from './crawlArtworkPage/InitDiscoverPage'\nimport { InitNewArtworkPage } from './crawlArtworkPage/InitNewArtworkPage'\nimport { InitNovelPage } from './crawlNovelPage/InitNovelPage'\nimport { InitNovelSeriesPage } from './crawlNovelPage/InitNovelSeriesPage'\nimport { InitSearchNovelPage } from './crawlNovelPage/InitSearchNovelPage'\nimport { InitRankingNovelPage } from './crawlNovelPage/InitRankingNovelPage'\nimport { InitNewNovelPage } from './crawlNovelPage/InitNewNovelPage'\nimport { InitArtworkSeriesPage } from './crawlArtworkPage/InitArtworkSeriesPage'\nimport { InitFollowingPage } from './crawlMixedPage/InitFollowingPage'\nimport { InitUnsupportedPage } from './crawl/InitUnsupportedPage'\nimport { InitUnlistedPage } from './crawlMixedPage/InitUnlistedPage'\nimport { InitRequestPage } from './crawl/InitRequestPage'\n\nclass InitPage {\n constructor() {\n this.initPage()\n\n // 页面类型变化时,初始化抓取流程\n window.addEventListener(EVT.list.pageSwitchedTypeChange, () => {\n setTimeout(() => {\n this.initPage()\n }, 0)\n })\n }\n\n private initPage() {\n switch (pageType.type) {\n case pageType.list.Home:\n return new InitHomePage()\n case pageType.list.Artwork:\n return new InitArtworkPage()\n case pageType.list.UserHome:\n return new InitUserPage()\n case pageType.list.BookmarkLegacy:\n return new InitBookmarkLegacyPage()\n case pageType.list.Bookmark:\n return new InitBookmarkPage()\n case pageType.list.ArtworkSearch:\n return new InitSearchArtworkPage()\n case pageType.list.AreaRanking:\n return new InitAreaRankingPage()\n case pageType.list.ArtworkRanking:\n return new InitRankingArtworkPage()\n case pageType.list.Pixivision:\n return new InitPixivisionPage()\n case pageType.list.BookmarkDetail:\n return new InitBookmarkDetailPage()\n case pageType.list.NewArtworkBookmark:\n return new InitBookmarkNewPage()\n case pageType.list.Discover:\n return new InitDiscoverPage()\n case pageType.list.NewArtwork:\n return new InitNewArtworkPage()\n case pageType.list.Novel:\n return new InitNovelPage()\n case pageType.list.NovelSeries:\n return new InitNovelSeriesPage()\n case pageType.list.NovelSearch:\n return new InitSearchNovelPage()\n case pageType.list.NovelRanking:\n return new InitRankingNovelPage()\n case pageType.list.NewNovelBookmark:\n return new InitBookmarkNewPage()\n case pageType.list.NewNovel:\n return new InitNewNovelPage()\n case pageType.list.ArtworkSeries:\n return new InitArtworkSeriesPage()\n case pageType.list.Following:\n return new InitFollowingPage()\n case pageType.list.Unlisted:\n return new InitUnlistedPage()\n case pageType.list.Request:\n return new InitRequestPage()\n default:\n return new InitUnsupportedPage()\n }\n }\n}\n\nnew InitPage()\n","import { Config } from './Config'\nimport { lang } from './Lang'\nimport { theme } from './Theme'\n\ninterface Option {\n /**可选,输入框的最大宽度。注意:如果页面(或父元素)的宽度不够,输入框的宽度会自动缩小。 */\n width?: number\n /**输入框的 HTML 标签是 input 还是 textarea。默认为 input */\n type?: 'input' | 'textarea'\n /**仅当输入框为 textarea 时,可以通过 rows 设置高度(行数) */\n rows?: number\n /**可选,在输入框上方可以显示一段说明文字 */\n instruction?: string\n /**可选,输入框里显示的占位符 */\n placeholder?: string\n /**可选,传递输入框的默认值。 */\n value?: string\n /**可选,提交按钮里显示的文字。点击按钮时会提交 */\n submitButtonText?: string\n}\n\nclass Input {\n /**所有选项皆是可选的 */\n constructor(option?: Option) {\n this.init(option)\n }\n\n private defultOption: Option = {\n width: 600,\n type: 'input',\n rows: 3,\n instruction: '',\n placeholder: '',\n value: '',\n submitButtonText: lang.transl('_提交'),\n }\n\n public value = ''\n\n private id = ''\n\n private submitted = false\n private cancelled = false\n\n private init(option?: Option) {\n const _option = Object.assign(this.defultOption, option || {})\n this.value = _option.value!\n this.id = `input` + new Date().getTime()\n this.create(_option)\n }\n\n private create(option: Option) {\n const example = `
    \n

    instruction

    \n
    \n \n \n \n \n
    \n
    `\n\n const wrap = document.createElement('div')\n wrap.classList.add('XZInputWrap')\n Config.mobile && wrap.classList.add('mobile')\n wrap.id = this.id\n // 这里设置的宽度是粗略值,后面会再修改\n wrap.style.width = option.width! + 200 + 'px'\n theme.register(wrap)\n\n if (option.instruction) {\n const p = document.createElement('p')\n p.classList.add('XZInputInstruction')\n p.innerHTML = option.instruction\n wrap.append(p)\n }\n\n const container = document.createElement('div')\n container.classList.add('XZInputContainer')\n\n const input = document.createElement(option.type!)\n input.classList.add('XZInput')\n input.setAttribute('placeholder', option.placeholder!)\n input.style.flexBasis = option.width! + 'px'\n if (option.type === 'input') {\n input.setAttribute('type', 'text')\n input.setAttribute('value', option.value!)\n } else {\n input.textContent = option.value!\n input.setAttribute('rows', option.rows!.toString())\n }\n container.append(input)\n\n const submitButton = document.createElement('button')\n submitButton.classList.add('XZInputButton')\n submitButton.textContent = option.submitButtonText!\n container.append(submitButton)\n\n const cancelButton = document.createElement('button')\n cancelButton.classList.add('XZInputButton', 'cancel')\n cancelButton.textContent = lang.transl('_取消')\n container.append(cancelButton)\n\n wrap.append(container)\n\n // 由于 wrap 宽度要考虑按钮宽度,但按钮宽度不固定,所以要先添加到页面上,获取按钮实际宽度,再调整 wrap 宽度\n wrap.style.opacity = '0'\n document.body.append(wrap)\n\n // 根据按钮宽度,重设 wrap 宽度\n const submitRect = submitButton.getClientRects()\n const cancelRect = cancelButton.getClientRects()\n // 14 是按钮的 margin-left 值\n wrap.style.width =\n option.width! + 14 + submitRect[0].width + 14 + cancelRect[0].width + 'px'\n wrap.style.opacity = '1'\n\n input.focus()\n if (option.value) {\n input.setSelectionRange(option.value.length, option.value.length)\n }\n\n input.addEventListener('change', () => {\n this.value = input.value\n })\n\n // 按 Esc 直接移除本组件,并且不会执行 onSubmit 回调\n input.addEventListener('keydown', (ev: any) => {\n if (ev.code === 'Escape') {\n this.remove()\n }\n })\n\n submitButton.addEventListener('click', () => {\n this.submitted = true\n this.remove()\n })\n\n cancelButton.addEventListener('click', () => {\n this.cancelled = true\n this.remove()\n })\n }\n\n private remove() {\n const wrap = document.querySelector(`#${this.id}`)\n wrap && wrap.remove()\n }\n\n /**当用户点击提交按钮后,返回 value。注意:可能会返回空字符串\n * 如果用户点击取消按钮,则抛出 reject\n */\n public submit(): Promise {\n return new Promise((resolve, reject) => {\n window.setTimeout(() => {\n if (this.cancelled) {\n return reject('')\n }\n if (this.submitted) {\n return resolve(this.value)\n }\n return resolve(this.submit())\n }, 100)\n })\n }\n}\n\nexport { Input }\n","import { langText } from './LangText'\nimport { EVT } from './EVT'\n\ntype LangTypes = 'zh-cn' | 'zh-tw' | 'en' | 'ja' | 'ko' | 'ru'\n\n// 语言类\nclass Lang {\n constructor() {\n this.htmlLangType = this.getHtmlLangType()\n this.type = this.htmlLangType\n this.bindEvents()\n }\n\n // 用户在下载器设置里选择的语言\n public type!: LangTypes\n\n // 用户在 Pixiv 使用的语言。不会动态变化\n public htmlLangType!: LangTypes\n\n public readonly langTypes = ['zh-cn', 'zh-tw', 'en', 'ja', 'ko', 'ru']\n\n private readonly flagIndex: Map = new Map([\n ['zh-cn', 0],\n ['zh-tw', 1],\n ['en', 2],\n ['ja', 3],\n ['ko', 4],\n ['ru', 5],\n ])\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name !== 'userSetLang') {\n return\n }\n const old = this.type\n this.type = data.value === 'auto' ? this.htmlLangType : data.value\n if (this.type !== old) {\n EVT.fire('langChange')\n this.elList.forEach((el) => {\n this.handleMark(el)\n })\n }\n })\n }\n\n // 获取页面使用的语言,返回语言标记\n private getHtmlLangType(): LangTypes {\n const flag = document.documentElement.lang\n switch (flag) {\n case 'zh':\n case 'zh-CN':\n case 'zh-Hans':\n return 'zh-cn' // 简体中文\n\n case 'ja':\n return 'ja' // 日本語\n\n case 'zh-Hant':\n case 'zh-tw':\n case 'zh-TW':\n return 'zh-tw' // 繁體中文\n\n case 'ko':\n return 'ko' // 한국어\n\n default:\n return 'en' // English\n }\n }\n\n // translate\n public transl(name: keyof typeof langText, ...arg: string[]) {\n // if(!langText[name]){\n // console.log(`not found lang ${name}`)\n // }\n let content = langText[name][this.flagIndex.get(this.type)!]\n arg.forEach((val) => (content = content.replace('{}', val)))\n return content\n }\n\n // 保存注册的元素\n // 在注册的元素里设置特殊的标记,让本模块可以动态更新其文本\n private elList: HTMLElement[] = []\n\n public register(el: HTMLElement) {\n this.elList.push(el)\n this.handleMark(el)\n }\n\n // 查找元素上的标记,设置其文本和属性\n private handleMark(wrap: HTMLElement) {\n // 设置 innerHTML\n const textEl = wrap.querySelectorAll(\n '*[data-xztext]'\n ) as NodeListOf\n for (const el of textEl) {\n // 因为有些文本中含有 html 标签,所以这里需要使用 innerHTML 而不是 textContent\n el.innerHTML = this.transl(el.dataset.xztext! as any)\n }\n // 元素自身存在 xztext 标记的情况\n const text = wrap.dataset.xztext\n if (text) {\n wrap.innerHTML = this.transl(text as any)\n }\n\n // 设置带参数的 innerHTML\n const textArgsEl = wrap.querySelectorAll(\n '*[data-xztextargs]'\n ) as NodeListOf\n textArgsEl.forEach((el) => this.handleTextArgs(el))\n // 元素自身存在 xztextargs 标记的情况\n const textargs = wrap.dataset.xztextargs\n if (textargs) {\n this.handleTextArgs(wrap)\n }\n\n // 设置 tip\n const tipEl = wrap.querySelectorAll(\n '*[data-xztip]'\n ) as NodeListOf\n for (const el of tipEl) {\n el.dataset.tip = this.transl(el.dataset.xztip! as any)\n }\n\n // 设置 placeholder\n const placeholderEl = wrap.querySelectorAll(\n '*[data-xzplaceholder]'\n ) as NodeListOf\n for (const el of placeholderEl) {\n el.setAttribute(\n 'placeholder',\n this.transl(el.dataset.xzplaceholder! as any)\n )\n }\n\n // 设置 title\n const titleEl = wrap.querySelectorAll(\n '*[data-xztitle]'\n ) as NodeListOf\n for (const el of titleEl) {\n el.setAttribute('title', this.transl(el.dataset.xztitle! as any))\n }\n // 元素自身存在 title 标记的情况\n const title = wrap.dataset.xztitle\n if (title) {\n wrap.setAttribute('title', this.transl(title as any))\n }\n }\n\n private handleTextArgs(el: HTMLElement) {\n let args = el.dataset.xztextargs!.split(',')\n const first = args.shift()\n el.innerHTML = this.transl(first as any, ...args)\n }\n\n // 需要更新已注册元素的文本时调用此方法\n public updateText(el: HTMLElement, ...args: string[]) {\n // 清空文本的情况\n if (args === undefined || args[0] === '') {\n delete el.dataset.xztext\n delete el.dataset.xztextargs\n el.innerHTML = ''\n return\n }\n // 设置文本\n if (args.length === 1) {\n // 无参数文本\n el.dataset.xztext = args[0]\n el.innerHTML = this.transl(args[0] as any)\n delete el.dataset.xztextargs\n } else {\n // 有参数文本\n el.dataset.xztextargs = args.join(',')\n const first = args.shift()\n el.innerHTML = this.transl(first as any, ...args)\n delete el.dataset.xztext\n }\n }\n}\n\nconst lang = new Lang()\n\nexport { lang }\n","import { Config } from './Config'\n\n// 储存下载器使用的多语言文本\n// 在属性名前面加上下划线,和文本内容做出区别\n// {} 是占位符\n//
    是换行\n\nconst langText = {\n _只下载已收藏: [\n '只下载已收藏',\n '只下載已收藏',\n 'Download only bookmarked works',\n 'ブックマークのみをダウンロードする',\n '북마크된 작품만 다운로드',\n 'Загружайте только работы, сохраненные в закладках',\n ],\n _下载作品类型: [\n '下载作品类型',\n '下載作品類型',\n 'Download work type',\n 'ダウンロード作品の種類',\n '다운로드할 작품 유형',\n 'Типы контента для загрузки',\n ],\n _作品类型: [\n '作品类型',\n '作品類型',\n 'Type of work',\n '作品の種類',\n '작품 유형',\n 'Тип работы',\n ],\n _不能含有tag: [\n '不能含有标签',\n '不能含有標籤',\n 'Exclude tag',\n 'タグを除外する',\n '제외 태그',\n 'Исключить ярлык',\n ],\n _排除tag的提示文字: [\n '您可在下载前设置要排除的标签,这样在下载时将不会下载含有这些标签的作品。不区分大小写;如需排除多个标签,请使用英文逗号分隔。请注意,要排除的标签的优先级大于要包含的标签的优先级。',\n '可在下載前設定要排除的標籤,下載時將排除含有這些標籤的作品,不區分大小寫;如需排除多個標籤,請使用半形逗號(,)分隔。請注意,要排除的標籤優先於要包含的標籤。',\n 'Before downloading, you can set the tag you want to exclude. Not case sensitive; If you need to set multiple tags, you can use comma (,) separated. The excluded tag takes precedence over the included tag',\n 'ダウンロード前に、除外するタグを設定できます。大文字と小文字を区別しない;複数のタグを設定する必要がある場合は、「,」で区切ってください。除外されたタグは、必要なタグよりも優先されます',\n '다운로드하기 전에 제외해야 하는 태그를 설정할 수 있습니다. 대소문자를 구분하지 않습니다. 여러 태그를 설정해야 하는 경우 쉼표(,)로 구분합니다. 제외된 태그가 포함된 태그보다 우선합니다.',\n 'Перед загрузкой можно задать тег, который необходимо исключить. Не чувствителен к регистру; Если вам нужно задать несколько тегов, вы можете использовать разделение запятыми (,). Исключенный тег имеет приоритет над включенным тегом',\n ],\n _设置了排除tag之后的提示: [\n '排除标签:',\n '排除標籤:',\n 'Excludes tag: ',\n '以下のタグを除外:',\n '제외 태그: ',\n 'Исключающий тег: ',\n ],\n _必须含有tag: [\n '必须含有标签',\n '必須含有標籤',\n 'Include tag',\n '必要なタグ',\n '포함 태그',\n 'Включать ярлык',\n ],\n _必须tag的提示文字: [\n '您可在下载前设置作品里必须包含的标签,不区分大小写;如需包含多个标签,请使用英文逗号分隔。',\n '可在下載前設定作品裡必須包含的標籤,不區分大小寫;如需包含多個標籤,請使用半形逗號(,)分隔。',\n 'Before downloading, you can set the tag that must be included. Not case sensitive; If you need to set multiple tags, you can use comma (,) separated.',\n 'ダウンロードする前に、必要なタグを設定することができます。大文字と小文字を区別しない;複数のタグを設定する必要がある場合は、「,」で区切ってください。',\n '다운로드하기 전에 포함해야 하는 태그를 설정할 수 있습니다. 대소문자를 구분하지 않습니다. 여러 태그를 설정해야 하는 경우 쉼표(,)로 구분합니다.',\n 'Перед загрузкой можно задать тег, который должен быть включен. Не чувствителен к регистру; Если вам нужно задать несколько тегов, вы можете использовать разделение запятыми (,).',\n ],\n _设置了必须tag之后的提示: [\n '包含标签:',\n '包含標籤:',\n 'Include tag: ',\n '以下の タグ を含める:',\n '포함 태그: ',\n 'Включающий тег: ',\n ],\n _图片的宽高比例: [\n '图片的宽高比例',\n '圖片的寬高比例',\n 'Aspect ratio',\n '画像の縦横比',\n '종횡비',\n 'Сотношение сторон',\n ],\n _设置宽高比例Title: [\n '设置宽高比例,也可以手动输入宽高比',\n '設定寬高比,也可以手動輸入寬高比。',\n 'Set the aspect ratio, or manually type the aspect ratio',\n '縦横比を設定する、手動で縦横比を入力することもできる',\n '종횡비를 설정하거나, 값을 수동으로 입력할 수 있습니다.',\n 'Установите соотношение сторон или введите соотношение сторон вручную',\n ],\n _不限制: [\n '不限制',\n '不限制',\n 'not limited',\n '無制限',\n '제한 없음',\n 'Без лимитов',\n ],\n _横图: ['横图', '橫圖', 'Horizontal', '横長', '가로', 'Горизонтальный'],\n _竖图: ['竖图', '豎圖', 'Vertical', '縦長', '세로', 'Вертикальный'],\n _正方形: ['正方形', '正方形', 'Square', '正方形', '정사각형', 'Квадрат(1:1)'],\n _宽高比: ['宽高比', '寬高比', 'Ratio', '縦横比', '종횡비 ', 'Соотношение'],\n _设置了宽高比之后的提示: [\n '宽高比:{}',\n '寬高比:{}',\n 'Aspect ratio: {}',\n '縦横比:{}',\n '종횡비: {}',\n 'Соотношение сторон: {}',\n ],\n _宽高比必须是数字: [\n '宽高比必须是数字',\n '寬高比必須是數字',\n 'The aspect ratio must be a number',\n '縦横比は数値でなければなりません',\n '종횡비는 숫자여야 합니다',\n 'Соотношение сторон должно быть числом',\n ],\n _图片的宽高: [\n '图片的宽高',\n '圖片的寬高',\n 'width and height',\n '画像の幅と高さ',\n '너비 그리고 높이',\n 'Ширина и высота',\n ],\n _筛选宽高的提示文字: [\n '请输入最小宽度和最小高度,不会下载不符合要求的图片。',\n '請輸入最小寬度和最小高度,只會下載符合要求的圖片。',\n 'Please type the minimum width and minimum height. Will not download images that do not meet the requirements',\n '最小幅と最小高さを入力してください。要件を満たしていない画像はダウンロードされません。',\n '최소 너비와 최소 높이를 입력해주세요, 요구 사항을 충족하지 않는 이미지는 다운로드하지 않습니다.',\n 'Введите минимальную ширину и минимальную высоту. Не соответствующие требованиям изображения, загружаться не будут',\n ],\n _本次输入的数值无效: [\n '本次输入的数值无效',\n '本次輸入的數值無效',\n 'Invalid input',\n '無効な入力',\n '잘못된 입력',\n 'Недопустимый ввод',\n ],\n _宽度: ['宽度', '寬度', 'Width', '幅', '너비', 'Ширина'],\n _或者: [' 或者 ', ' 或是 ', ' or ', ' または ', '또는', 'или'],\n _并且: [' 并且 ', ' 並且 ', ' and ', ' そして ', '그리고', 'и'],\n _高度: ['高度', '高度', 'height', '高さ', '높이', 'высота'],\n _抓取多少作品: [\n '抓取多少作品',\n '擷取多少作品',\n 'How many works to crawl',\n 'クロールする作品の数',\n '긁어올 작품 ',\n 'Какое колличество работ сканировать',\n ],\n _抓取多少页面: [\n '抓取多少页面',\n '擷取多少頁面',\n 'How many pages to crawl',\n 'クロールするページ数',\n '긁어올 페이지 ',\n 'Какое колличество страниц сканироватьь',\n ],\n _收藏数量: [\n '收藏数量',\n '收藏數量',\n 'Number of bookmarks',\n 'ブックマークの数',\n '북마크 수',\n 'Колличество закладок',\n ],\n _设置收藏数量的提示: [\n '如果作品的收藏数小于设置的数字,作品不会被下载。',\n '只會下載設定收藏數範圍內的作品。',\n 'If the number of bookmarks of the work is less than the set number, the work will not be downloaded.',\n '作品のブックマークされた数が設定された数字よりも少ない場合、作品はダウンロードされません。',\n '작품의 북마크 수가 설정된 값보다 적을 경우 작품은 다운로드되지 않습니다.',\n 'Если количество закладок произведения меньше заданного, произведение не будет загружено',\n ],\n _筛选收藏数的提示文字: [\n '请输入一个数字,如果作品的收藏数小于这个数字,作品不会被下载。',\n '請輸入數字,只會下載設定收藏數範圍內的作品。',\n 'Please type a number. If the number of bookmarks of the work is less than this number, the work will not be downloaded.',\n '数字を入力してください。 作品のブックマークされた数がこの数字より少ない場合、作品はダウンロードされません。',\n '숫자를 입력해주세요. 작품의 북마크 수가 이 수보다 적을 경우 작품은 다운로드되지 않습니다.',\n 'Пожалуйста, введите число. Если количество закладок произведения меньше этого числа, произведение не будет загружено.',\n ],\n _收藏数大于: [\n '收藏数 >= ',\n '收藏數 >= ',\n 'Number of bookmarks >= ',\n 'ブックマークの数 >= ',\n '북마크 수 >= ',\n 'Количество закладок >= ',\n ],\n _收藏数小于: [\n '收藏数 <= ',\n '收藏數 <= ',\n 'Number of bookmarks <= ',\n 'ブックマークの数 <= ',\n '북마크 수 <=',\n 'Количество закладок <= ',\n ],\n _本次任务已全部完成: [\n '本次任务已全部完成。',\n '本次工作已全部完成。',\n 'This task has been completed.',\n 'この作業は完了しました。',\n '이 작업은 완료되었습니다.',\n 'Эта задача была выполнена.',\n ],\n _本次任务条件: [\n '本次任务条件: ',\n '本次工作條件:',\n 'This task condition: ',\n 'この作業の条件:',\n '이 작업 조건: ',\n 'Это условие задачи: ',\n ],\n _参数不合法本次操作已取消: [\n '参数不合法,本次操作已取消。',\n '參數不合法,本次動作已取消。',\n 'Parameter is not legal, this operation has been canceled.',\n 'パラメータは有効ではありません。この操作はキャンセルされました。',\n '매개변수가 잘못되었습니다, 이 작업은 취소됩니다.',\n 'Параметр не является разрешенным, операция отменена.',\n ],\n _本次操作已取消: [\n '本次操作已取消',\n '本次動作已取消',\n 'This operation has been canceled',\n 'この操作はキャンセルされました',\n '이 작업이 취소되었습니다.',\n 'Эта операция была отменена',\n ],\n _向下获取所有作品: [\n '向下获取所有作品',\n '向下取得所有作品',\n 'download all the work from this page.',\n 'このページからすべての作品をダウンロードする。',\n '모든 작품 다운로드',\n 'загрузить все работы с этой страницы',\n ],\n _从本页开始下载提示: [\n '从当前页面开始下载。
    如果要限制下载的页数,请输入从 1 开始的数字。
    1 为仅下载本页,-1 为下载所有页面。',\n '從當前頁面開始下載。
    如果要限制下載的頁數,請輸入從 1 開始的數字。
    1 為僅下載本頁,-1 為下載所有頁面。',\n 'Download from the current page.
    If you want to set the number of pages to download, type a number starting at 1.
    1 is to download only this page, -1 to download all pages.',\n '現在のページからダウンロードしてください。
    ダウンロードするページを設定する場合は、1から始まる数字を入力してください。
    1 は現在のページのみをダウンロードする,すべてのページをダウンロードするには -1。',\n '현재 페이지에서 다운로드합니다.
    다운로드할 페이지 수를 설정하려면 1로 시작하는 숫자를 입력해주세요.
    1은 이 페이지만 다운로드합니다, -1은 모든 페이지를 다운로드합니다.',\n 'Загрузка с текущей страницы.
    Если вы хотите задать количество страниц для загрузки, введите число, начиная с 1.
    1 - это загрузка только этой страницы, -1 для загрузки всех страниц.',\n ],\n _下载所有页面: [\n '下载所有页面',\n '下載所有頁面',\n 'download all pages',\n 'すべてのページをダウンロードする',\n '모든 페이지 다운로드',\n 'загрузить все страницы',\n ],\n _下载x个相关作品: [\n '下载 {} 个相关作品',\n '下載 {} 個相關作品',\n 'download {} related works.',\n '関連作品 {} 枚をダウンロードする。',\n '관련 작품 {}개를 다운로드',\n 'скачать {} связанные работы',\n ],\n _下载所有相关作品: [\n '下载所有相关作品',\n '下載所有相關作品',\n 'download all related works.',\n '関連作品をすべてダウンロードする。',\n '모든 관련 작품 다운로드',\n 'скачать все соответствующие работы.',\n ],\n _下载推荐作品: [\n '下载推荐作品',\n '下載推薦作品',\n 'download recommended works',\n 'おすすめ作品をダウンロードする',\n '추천 작품 다운로드',\n 'скачать рекомендуемые работы',\n ],\n _下载排行榜前x个作品: [\n '下载排行榜前 {} 个作品',\n '下載排行榜前 {} 個作品',\n 'download the top {} works in the ranking list',\n 'ランク前 {} 位の作品をダウンロードする。',\n '랭킹 목록 상위 {}개의 작품 다운로드',\n 'загрузить лучшие {} работы в рейтинговом списке',\n ],\n _输入超过了最大值: [\n '您输入的数字超过了最大值',\n '輸入的數字超出最大值',\n 'The number you set exceeds the maximum',\n '入力した番号が最大値を超えています',\n '설정하신 수가 최대값을 초과합니다',\n 'Заданное вами число превышает максимальное',\n ],\n _从本页开始下载x页: [\n '从本页开始下载 {} 页',\n '從本頁開始下載 {} 頁',\n 'download {} pages from this page',\n 'このページから {} ページをダウンロードする',\n '이 페이지부터 {} 페이지 다운로드',\n 'Начать загрузку с страниц этой {} страницы',\n ],\n _从本页开始下载x个: [\n '从本页开始下载 {} 个作品',\n '從本頁開始下載 {} 個作品',\n 'Download {} works from this page.',\n 'このページから {} 枚の作品をダウンロード。',\n '이 페이지부터 {}개의 작품 다운로드',\n 'Загрузить {} работы с этой страницы.',\n ],\n _任务开始: [\n '任务开始',\n '工作開始',\n 'Task starts',\n '作業が開始されます',\n '작업 시작',\n 'Задание начинается',\n ],\n _排除作品类型: [\n '排除作品类型:',\n '排除作品類型:',\n 'Excludes these types of works: ',\n 'これらのタイプの作品を除外:',\n '제외된 작품 유형: ',\n 'Исключает эти виды работ: ',\n ],\n _多图作品: [\n '多图作品',\n '多圖作品',\n 'Multi-image works',\n '複数画像作品',\n '여러 이미지 작품',\n 'Работа с несколькими изображениями',\n ],\n _多图下载设置: [\n '多图下载设置',\n '多圖下載設定',\n 'Download multi-image works',\n '複数画像設定',\n '여러 이미지 작품 다운로드',\n 'Загрузить работы с несколькими изображениями',\n ],\n _不下载: ['不下载', '不下載', 'No', '必要なし', '아니요', 'Нет'],\n _全部下载: ['全部下载', '全部下載', 'Yes', '全部ダウンロード', '네', 'Да'],\n _插画: [\n '插画',\n '插畫',\n 'Illustrations',\n 'イラスト',\n '일러스트',\n 'Иллюстрации',\n ],\n _漫画: ['漫画', '漫畫', 'Manga', '漫画', '만화', 'Манга'],\n _动图: [\n '动图',\n '動圖',\n 'Ugoira',\n 'うごイラ',\n '움직이는 일러스트',\n 'Ugoira(гиф)',\n ],\n _动图保存格式: [\n '动图保存格式',\n '動圖儲存格式',\n 'Save the ugoira work as',\n 'うごイラの保存タイプ',\n '움직이는 일러스트 작품 저장 형식',\n 'Сохранить Ugoira как',\n ],\n _动图保存格式title: [\n '下载动图时,可以把它转换成视频文件',\n '下載動圖時,可轉換為影片檔。',\n 'When you download a ugoira work, you can convert it to a video file.',\n 'うごイラをダウンロードするとき、動画に変換することができます。',\n '움직이는 일러스트 작품을 다운로드 하면, 동영상 파일로 변환할 수 있습니다.',\n 'Когда вы скачиваете произведение ugoira, вы можете конвертировать его в видеофайл.',\n ],\n _webmVideo: [\n 'WebM 视频',\n '影片(WebM)',\n 'WebM video',\n 'WebM ビデオ',\n 'WebM 동영상',\n 'WebM видео',\n ],\n _gif: [\n 'GIF 图片',\n '圖片(GIF)',\n 'GIF image',\n 'GIF 画像',\n 'GIF 이미지',\n 'GIF изображение',\n ],\n _apng: [\n 'APNG 图片',\n '圖片(APNG)',\n 'APNG image',\n 'APNG 画像',\n 'APNG 이미지',\n 'APNG изображение',\n ],\n _zipFile: [\n 'Zip 文件',\n '壓縮檔(Zip)',\n 'Zip file',\n 'ZIP ファイル',\n 'Zip 파일',\n 'Zip файл',\n ],\n _当前作品个数: [\n '当前有 {} 个作品',\n '目前有 {} 個作品',\n 'There are now {} works',\n '今は {} 枚の作品があります',\n '현재 {}개의 작품이 있습니다',\n 'В настоящее время существует {} работ',\n ],\n _当前有x个用户: [\n '当前有 {} 个用户',\n '目前有 {} 個使用者',\n 'There are currently {} users',\n '現在 {} 人のユーザーがいます',\n '현재 {}명의 유저가 있습니다',\n 'В настоящее время существует {} пользователей',\n ],\n _已抓取x个用户: [\n '已抓取 {} 个用户',\n '已擷取 {} 個使用者',\n 'crawled {} users',\n 'クロールされた {} ユーザー',\n '{}명의 유저를 긁어왔습니다',\n 'Сканированные {} пользователи',\n ],\n _排行榜进度: [\n '已抓取本页面第{}部分',\n '已擷取本頁面第 {} 部分',\n 'Part {} of this page has been crawled',\n 'このページの第 {} 部がクロールされました',\n '이 페이지의 {} 부분을 긁어왔습니다',\n 'Часть {} этой страницы была просмотрена',\n ],\n _新作品进度: [\n '已抓取本页面 {} 个作品',\n '已擷取本頁面 {} 個作品',\n 'This page has been crawled {} works',\n 'このページの {} つの作品をクロールしました',\n '이 페이지의 {}개의 작품을 긁어왔습니다',\n 'На этой странице было просканированно {} работ',\n ],\n _抓取多少个作品: [\n '抓取本页面 {} 个作品',\n '擷取本頁面 {} 個作品',\n 'Crawl this page {} works',\n 'このページの {} つの作品をクロールします',\n '이 페이지의 {}개의 작품 긁어오기',\n 'Сканировать на этой странице {} работ',\n ],\n _相关作品抓取完毕: [\n '相关作品抓取完毕。包含有{}个作品,开始获取作品信息。',\n '相關作品擷取完畢。包含有 {} 個作品,開始取得作品資訊。',\n 'The related works have been crawled. Contains {} works and starts getting information about the work.',\n '関連作品はクロールされました。 {} 作品を含み、その作品に関する情報の取得を開始します。',\n '관련 작품 긁어오기 완료, {}개의 작품이 포함되어 있으며, 작품 정보 가져오기를 시작합니다',\n 'Связанные работы были просканированы. Содержит {} работ и начинает получать информацию о работе(ах).',\n ],\n _排行榜任务完成: [\n '本页面抓取完毕。
    当前有{}个作品,开始获取作品信息。',\n '本頁面擷取完畢。
    目前有 {} 個作品,開始取得作品資訊。',\n 'This page is crawled and now has {} works.
    Start getting the works for more information.',\n 'このページのクロール終了。
    {}枚の作品があります。 作品情報の取得を開始します。',\n '이 페이지 긁어오기 완료되었습니다
    현재 {}개의 작품이 있으며, 작품 정보 가져오기를 시작합니다',\n 'Эта страница просмотрена и имеет {} работ.
    Начинаю получать работы для получения дополнительной информации.',\n ],\n _开始获取作品信息: [\n '开始获取作品信息',\n '開始取得作品資訊',\n 'Start getting work data',\n '作品情報の取得を開始します',\n '작품 정보 가져오기 시작',\n 'Начинаю получать данные о работе',\n ],\n _列表页抓取进度: [\n '已抓取列表页 {} 个页面',\n '已擷取清單頁 {} 個頁面',\n 'Has acquired {} list pages',\n '{} のリストページを取得しました',\n '{}개의 목록 페이지를 획득하였습니다',\n 'Получено {} страниц списка',\n ],\n _列表页抓取进度2: [\n '正在抓取列表页 {}/{}',\n '正在抓取列表頁 {}/{}',\n 'crawling list page {}/{}',\n 'リストページの取得 {}/{}',\n '목록 페이지 긁어오는 중 {}/{}',\n 'Вытаскивание списка страниц {}/{}',\n ],\n _列表页抓取完成: [\n '列表页面抓取完成',\n '清單頁面擷取完成',\n 'The list page is crawled',\n 'リストページがクロールされ',\n '목록 페이지 긁어오기 완료',\n 'Список страниц просканирован',\n ],\n _抓取结果为零: [\n '抓取完毕,但没有找到符合筛选条件的作品。
    请检查“抓取”相关的设置。',\n '擷取完畢,但沒有找到符合篩選條件的作品。
    請檢查“抓取”相關的設定。',\n 'Crawl complete but did not find works that match the filter criteria.
    Please check the settings related to Crawl.',\n 'クロールは終了しましたが、フィルタ条件に一致する作品が見つかりませんでした。
    クロールに関する設定を確認してください。',\n '긁어오기가 완료되었지만 필터 조건과 일치하는 작품을 찾지 못했습니다.
    크롤링 관련 설정을 확인하세요.',\n 'Вытаскивание завершено, но не найдены работы, соответствующие критериям фильтра.
    Пожалуйста, проверьте настройки, связанные со сканированием.',\n ],\n _当前任务尚未完成: [\n '当前任务尚未完成',\n '目前工作尚未完成',\n 'The current task has not yet been completed',\n '現在の作業はまだ完了していません',\n '현재 작업이 아직 완료되지 않았습니다',\n 'Текущее задание еще не выполнено',\n ],\n _当前任务尚未完成2: [\n '当前任务尚未完成,请等待完成后再下载。',\n '目前工作尚未完成,請等待完成後再下載。',\n 'The current task has not yet been completed',\n '現在の作業はまだ完了していません、完了するまでお待ちください',\n '현재 작업이 아직 완료되지 않았습니다, 완료될 때까지 기다려주세요.',\n 'Текущее задание еще не выполнено',\n ],\n _列表抓取完成开始获取作品页: [\n '当前列表中有{}张作品,开始获取作品信息',\n '目前清單中有 {} 張作品,開始取得作品資訊',\n 'Now has {} works. Start getting the works for more information.',\n '{} 枚の作品があります。 作品情報の取得を開始します。',\n '현재 {}개의 작품이 있습니다, 작품 정보 가져오기를 시작합니다',\n 'Сейчас в работе {} работ. Начните получать работы для получения дополнительной информации.',\n ],\n _开始获取作品页面: [\n '开始获取作品页面',\n '開始取得作品頁面',\n 'Start getting the works page',\n '作品ページの取得を開始する',\n '작품 페이지 가져오기 시작',\n 'Начинаю получать страницу с работами',\n ],\n _无权访问: [\n '无权访问 {},跳过该作品。',\n '沒有權限存取 {},跳過該作品。',\n 'No access {}, skip.',\n '{} のアクセス権限がありません、作品を無視する。',\n '{}에 접근 권한이 없습니다, 이 작업을 건너뜁니다.',\n 'Нет доступа {}, пропуск.',\n ],\n _作品页状态码0: [\n '请求的 URL 不可访问 (0)',\n '要求的 URL 無法存取 (0)',\n 'The requested URL is not accessible (0)',\n '要求された URL にアクセスできません (0)',\n '요청한 URL에 접근할 수 없습니다 (0)',\n 'Запрашиваемый URL недоступен (0)',\n ],\n _作品页状态码400: [\n '该作品已被删除 (400)',\n '該作品已被刪除 (400)',\n 'The work has been deleted (400)',\n '作品は削除されました (400)',\n '이 작품은 삭제되었습니다 (400)',\n 'Работа была удалена (400)',\n ],\n _作品页状态码401: [\n '请您登录 Pixiv 账号然后重试。(401)',\n '請您登入 Pixiv 帳號後重試。(401)',\n 'Please log in to your Pixiv account and try again. (401)',\n 'Pixiv アカウントにログインして、もう一度お試しください。(401)',\n 'Pixiv 계정에 로그인 후 다시 시도해주세요. (401)',\n 'Пожалуйста, войдите в свою учетную запись Pixiv и попробуйте еще раз. (401)',\n ],\n _作品页状态码403: [\n '无权访问请求的 URL (403)',\n '沒有權限存取要求的 URL (403)',\n 'Have no access to the requested URL (403)',\n 'リクエストされた URL にアクセスできない (403)',\n '요청한 URL에 접근 권한이 없습니다 (403)',\n 'Нет доступа к запрашиваемому URL (403)',\n ],\n _作品页状态码404: [\n '404 not found',\n '404 not found',\n '404 not found',\n '404 not found',\n '404 not found',\n '404 not found',\n ],\n _作品页状态码429: [\n '错误代码:429(请求数量过多)。下载器会重新抓取它。',\n '錯誤程式碼:429(請求數量過多)。下載器会重新抓取它。',\n 'Error code: 429 (Too many requests). The downloader will re-crawl it.',\n 'エラー コード: 429 (要求が多すぎます)。ダウンローダーはそれを再クロールします。',\n '오류 코드: 429(요청이 너무 많음). 다운로더가 다시 크롤링합니다.',\n 'Код ошибки: 429 (Слишком много запросов). Загрузчик будет повторять вытаскивание.',\n ],\n _错误代码: [\n '错误代码:',\n '錯誤程式碼:',\n 'Error code: ',\n 'エラー コード: ',\n '오류 코드: ',\n 'Код ошибки: ',\n ],\n _作品页状态码500: [\n 'Pixiv 拒绝返回数据 (500)。下载器会重新抓取它。',\n 'Pixiv 拒絕返回資料 (500)。下載器会重新抓取它。',\n 'Pixiv refuses to return data (500). The downloader will re-crawl it.',\n 'ピクシブはデータの返却を拒否します (500)。ダウンローダーはそれを再クロールします。',\n 'pixiv는 데이터 반환을 거부합니다 (500). 다운로더가 다시 크롤링합니다.',\n 'Pixiv отказывается возвращать данные (500). Загрузчик будет повторять вытаскивание.',\n ],\n _正在抓取: [\n '正在抓取,请等待……',\n '擷取中,請稍後……',\n 'Getting, please wait...',\n 'クロール中、しばらくお待ちください...',\n '얻어오는 중, 잠시만 기다려주세요...',\n 'Получение, пожалуйста, подождите...',\n ],\n _获取全部书签作品: [\n '获取全部书签作品,时间可能比较长,请耐心等待。',\n '取得全部書籤作品,時間可能比較長,請耐心等待。',\n 'Get all bookmarked works, the time may be longer, please wait.',\n 'ブックマークしたすべての作品を取得すると、時間がかかることがあります。お待ちください。',\n '북마크된 작품을 모두 가져오는 것은 시간이 오래 걸릴 수 있으니 기다려주세요.',\n 'Получить все работы из закладок, это может занять время, пожалуйста, подождите',\n ],\n _抓取图片网址遇到中断: [\n '当前任务已中断!',\n '目前工作已中斷!',\n 'The current task has been interrupted.',\n '現在の作業が中断されました。',\n '현재 작업이 중단되었습니다!',\n 'Текущая задача была прервана.',\n ],\n _关闭: ['关闭', '關閉', 'close', 'クローズ', '닫기', 'закрыть'],\n _输出信息: [\n '输出信息',\n '輸出資訊',\n 'Output information',\n '出力情報',\n '출력 정보',\n 'Выходная информация',\n ],\n _复制: ['复制', '複製', 'Copy', 'コピー', '복사', 'Копировать'],\n _已复制到剪贴板: [\n '已复制到剪贴板,可直接粘贴',\n '已複製至剪貼簿,可直接貼上',\n 'Has been copied to the clipboard',\n 'クリップボードにコピーされました',\n '클립보드에 복사되었습니다.',\n 'Скопировано в буфер обмена',\n ],\n _下载设置: [\n '下载设置',\n '下載設定',\n 'Download settings',\n 'ダウンロード設定',\n '다운로드 설정',\n 'Настройки загрузки',\n ],\n _收起展开设置项: [\n '收起/展开设置项',\n '摺疊/展開設定項目',\n 'Collapse/expand settings',\n '設定の折りたたみ/展開',\n '설정 축소/확장',\n 'Свернуть/развернуть настройки',\n ],\n _github: [\n 'Github 页面,欢迎 star',\n 'Github 頁面,歡迎 star',\n 'Github page, if you like, please star it',\n 'Github のページ、star をクリックしてください',\n 'Github, 유용하셨다면 Star를 주세요.',\n 'Страница на Github, если вам нравится, пожалуйста, поставьте звезду',\n ],\n _wiki: ['使用手册', 'Wiki', 'Wiki', 'マニュアル', '위키', 'Вики'],\n _快捷键ALTX显示隐藏控制面板: [\n '你可以使用快捷键 Alt + X 显示或隐藏控制面板。',\n '你可以使用快捷鍵 Alt + X 顯示或隱藏控制面板。',\n 'You can use the shortcut keys Alt + X to show or hide the control panel.',\n 'ショートカット キー Alt + X を使用して、コントロール パネルを表示または非表示にできます。',\n '단축키 Alt + X를 사용하여 제어판을 표시하거나 숨길 수 있습니다.',\n 'Вы можете использовать сочетания клавиш Alt + X, чтобы отобразить или скрыть панель управления.',\n ],\n _隐藏控制面板: [\n '隐藏控制面板(Alt + X)',\n '隱藏控制面板(Alt + X)',\n 'hide control panel (Alt + X)',\n 'コントロールパネルを隠す(Alt + X)',\n '제어판 숨기기 (Alt + X)',\n 'скрыть панель управления (Alt + X)',\n ],\n _显示控制面板: [\n '显示控制面板 (Alt + X)',\n '顯示控制面板 (Alt + X)',\n 'Show control panel (Alt + X)',\n 'コントロールパネルを表示 (Alt + X)',\n '제어판 표시 (Alt + X)',\n 'показать панель управления (Alt + X)',\n ],\n _共抓取到n个文件: [\n '共抓取到 {} 个文件',\n '共擷取到 {} 個檔案',\n 'Crawl a total of {} files',\n '合計 {} つのファイルがあります',\n '총 {}개의 파일을 긁어왔습니다',\n 'Всего просканированно {} файлов',\n ],\n _共抓取到n个作品: [\n '共抓取到 {} 个作品',\n '共擷取到 {} 個作品',\n 'Crawl a total of {} works',\n '合計 {} つの作品があります',\n '총 {}개의 작품을 긁어왔습니다',\n 'Всего просканированно {} работ',\n ],\n _命名规则: [\n '命名规则',\n '命名規則',\n 'Naming rule',\n '命名規則',\n '명명 규칙',\n 'Правила названий',\n ],\n _命名规则2: [\n '命名规则',\n '命名規則',\n 'Naming rule',\n '命名規則',\n '명명 규칙',\n 'Правила названий',\n ],\n _设置文件夹名的提示: [\n `可以使用 '/' 建立文件夹。示例:`,\n `可以使用斜線(/)建立資料夾。範例:`,\n `You can create a directory with '/'. Example:`,\n `フォルダーは '/' で作成できます。例:`,\n `'/'을 사용하여 디렉토리를 생성할 수 있습니다.
    예:`,\n `Вы можете создать каталог с помощью '/'. Пример:`,\n ],\n _添加命名标记前缀: [\n '添加命名标记前缀',\n '加入命名標記前綴',\n 'Add named tag prefix',\n '前にタグの名前を追加',\n '명명된 태그 추가 접두사',\n 'Добавить именованный тег префикс',\n ],\n _添加字段名称提示: [\n `例如,在用户名前面添加“user_”标记`,\n '例如,在使用者名稱前面加入「user_」標記。',\n `For example, add the 'user_' tag in front of the username`,\n 'たとえば、ユーザー名の前に 「user_」タグを追加します。',\n `예: 유저명 앞에 'user_' 태그 추가`,\n `Например, добавьте тег 'user_' перед именем пользователя`,\n ],\n _命名标记id: [\n '默认文件名,如 44920385_p0',\n '預設檔案名稱,例如:44920385_p0。',\n 'Default file name, for example 44920385_p0',\n 'デフォルトのファイル名,例 44920385_p0',\n '기본 파일명. 예: 44920385_p0',\n 'Имя файла по умолчанию, например 44920385_p0',\n ],\n _命名标记title: [\n '作品标题',\n '作品標題',\n 'Works title',\n '作品のタイトル',\n '작품 제목',\n 'Название работ',\n ],\n _命名标记tags: [\n '作品的标签列表',\n '作品的標籤清單',\n 'The tags of the work',\n '作品のタグ',\n '작품 태그',\n 'Теги работ',\n ],\n _命名标记user: [\n '用户名字',\n '使用者名稱',\n 'User name',\n 'ユーザー名',\n '유저명',\n 'Никнейм юзера',\n ],\n _用户id: [\n '用户 ID(数字)',\n '使用者 ID(數字)',\n 'User ID (Number)',\n 'ユーザー ID (Number)',\n '유저 ID (숫자)',\n 'ID Юзера (Число)',\n ],\n _命名标记px: [\n '宽度和高度。例如:600x900',\n '寬度和高度。例如:600x900',\n 'Width and height, e.g. 600x900',\n '幅と高さ。例:600x900',\n '너비와 높이. 예: 600x900',\n 'Ширина и высота, напр. 600x900',\n ],\n _命名标记bmk: [\n 'Bookmark count,作品的收藏数。把它放在最前面可以让文件按收藏数排序。',\n 'Bookmark count,作品的收藏數。將它放在最前面可以讓檔案依收藏數排序。',\n 'Bookmark count, bookmarks number of works.',\n 'Bookmark count,作品のボックマークの数、前に追加することでボックマーク数で并べることができます。',\n '북마크 수. 맨 앞에 두면 북마크 수별로 문서를 정렬할 수 있습니다.',\n 'Количество закладок, количество произведений в закладках',\n ],\n _命名标记bmk_id: [\n 'Bookmark ID。你收藏的每一个作品都会有一个 Bookmark ID。收藏的时间越晚,Bookmark ID 就越大。当你下载你的收藏时,可以使用 {bmk_id} 作为排序依据。',\n 'Bookmark ID。你收藏的每一個作品都會有一個 Bookmark ID。收藏的時間越晚,Bookmark ID 就越大。當你下載你的收藏時,可以使用 {bmk_id} 作為排序依據。',\n 'Bookmark ID. Every work in your bookmarks will have a Bookmark ID. The later the bookmark is added, the larger the Bookmark ID. When you download your bookmarks, you can use {bmk_id} as a sorting basis.',\n 'ブックマークID。 ブックマーク内のすべての作品にはブックマークIDがあります。 ブックマークを後で追加すると、ブックマークIDが大きくなります。 ブックマークをダウンロードするときは、{bmk_id}を並べ替えの基準として使用できます。',\n '북마크 ID. 당신이 북마크하고 있는 작품마다 북마크 ID가 있습니다. 북마크 시간이 늦어질수록 북마크 ID는 커집니다. 북마크를 다운로드할때 {bmk_id}를 기준으로 정렬할 수 있습니다.',\n 'Bookmark ID. Каждая работа в ваших закладках будет иметь идентификатор закладки. Чем позже добавлена закладка, тем больше ID закладки. Когда вы загружаете закладки, вы можете использовать {bmk_id} в качестве основы для сортировки.',\n ],\n _命名标记bmk_1000: [\n '作品收藏数的简化显示。例如:0+1000+2000+3000+ ……',\n '作品收藏數的簡化顯示。例如:0+1000+2000+3000+ ……',\n 'Simplified number of bookmark, e.g. 0+1000+2000+3000+ ……',\n '作品のボックマークの数の簡略表示。例:0+1000+2000+3000+ ……',\n '단순화된 북마크 수. 예: 0+, 1000+, 2000+, 3000+ ……',\n 'Упрощенное количество закладок, напр. 0+1000+2000+3000+ ......',\n ],\n _命名标记like: [\n 'Like count,作品的点赞数。',\n 'Like count,作品的點讚數。',\n 'Like count.',\n 'Like count。',\n '좋아요 수',\n 'Колличество лайков',\n ],\n _命名标记view: [\n 'View count,作品的浏览量。',\n 'View count,作品的瀏覽量。',\n 'View count.',\n 'View count。',\n '조회수',\n 'Колличество просмотров',\n ],\n _命名标记id_num: [\n '数字 ID,如 44920385',\n '數字 ID,例如:44920385。',\n 'Number ID, for example 44920385',\n '44920385 などの番号 ID',\n '숫자 ID. 예: 44920385',\n 'Идентификатор номера, например 44920385',\n ],\n _命名标记p_num: [\n '图片在作品内的序号,如 012 …… 每个作品都会重新计数。',\n '圖片在作品內的序號,例如:012……每個作品都將重新計數。',\n 'The serial number of the image in the work, such as 0, 1, 2 ... Each work will be recounted.',\n '012 など、作品の画像のシリアル番号。各ピースは再集計されます。',\n '작품 안에 있는 번호. 예: 0, 1, 2 …… 작품마다 다시 세어봅니다.',\n 'Порядковый номер изображения в работе, например, 0, 1, 2 .... Каждое произведение будет пересказано',\n ],\n _命名标记tags_trans: [\n '作品的标签列表,附带翻译后的标签(如果有)',\n '作品的標籤清單,包含翻譯後的標籤(如果有的話)。',\n 'The tags of the work, with the translated tag (if any)',\n '作品のタグリスト、翻訳付きタグ(あれば)',\n '작품 태그, 번역된 태그 (있다면)',\n 'Теги произведения, с тегом перевода (если есть)',\n ],\n _命名标记tags_transl_only: [\n '翻译后的标签列表',\n '譯後的標籤清單。',\n 'Translated tags',\n '翻訳后のタグリスト',\n '번역된 태그',\n 'Теги перевода',\n ],\n _命名标记date: [\n '作品的创建时间。如 2019-08-29。',\n '作品的建立時間。例如:2019-08-29。',\n 'The time the creation of the work. Such as 2019-08-29',\n '作品の作成時間。例 2019-08-29',\n '작품 생성 날짜. 예: 2019-08-29',\n 'Время создания произведения. Например, 2019-08-29',\n ],\n _命名标记upload_date: [\n '作品内容最后一次被修改的时间。如 2019-08-30。',\n '作品內容最後一次被修改的時間。如 2019-08-30。',\n 'The time when the content of the work was last modified. Such as 2019-08-30.',\n '作品の内容が最後に変更された時刻。例 2019-08-30',\n '저작물의 내용이 마지막으로 수정된 시간입니다. 예: 2019-08-30',\n 'Время, когда содержание работы было изменено в последний раз. Например, 2019-08-30.',\n ],\n _命名标记rank: [\n '作品在排行榜中的排名。如 #1#2 …… 只能在排行榜页面中使用。',\n '作品在排行榜中的排名。例如:#1#2……只能在排行榜頁面中使用。',\n 'The ranking of the work in the ranking pages. Such as #1, #2 ... Can only be used in ranking pages.',\n '作品のランキング。例え #1#2 …… ランキングページのみで使用できます。',\n '작품의 랭킹. 예: #1, #2 …… 랭킹 페이지에서만 사용할 수 있습니다.',\n 'Рейтинг работы на страницах рейтинга. Например, #1, #2 ... Может использоваться только на страницах ранжирования.',\n ],\n _命名标记type: [\n '作品类型,分为:Illustration, Manga, Ugoira, Novel',\n '作品類型,分為:Illustration, Manga, Ugoira, Novel',\n 'The type of work, divided into:Illustration, Manga, Ugoira, Novel',\n '作品分類は:Illustration, Manga, Ugoira, Novel',\n '작품 유형: Illustration, Manga, Ugoira, Novel',\n 'Тип работы, разделенный на:Illustration, Manga, Ugoira, Novel',\n ],\n _命名标记AI: [\n '如果作品是由 AI 生成的,则输出 AI',\n '如果作品是由 AI 生成的,則輸出 AI',\n 'If the work is generated by AI, output AI',\n '作品がAIで生成された場合、AIを出力',\n '작업이 AI로 생성된 경우 AI 출력',\n 'Если работа создана с помощью ИИ, выведите AI',\n ],\n _命名标记提醒: [\n '为了防止文件名重复,命名规则里一定要包含 {id} 或者 {id_num}{p_num}。
    您可以使用多个标记;建议在不同标记之间添加分割用的字符。示例:{id}-{user_id}',\n '為了防止檔名重複,命名規則裡一定要包含 {id} 或者 {id_num}{p_num}。
    您可以使用多個標記;建議在不同標記之間加入分隔用的字元。範例:{id}-{user_id}',\n 'To prevent duplicate file names, {id} or {id_num}{p_num} must be included in the naming rules.
    You can use multiple tags, and you can add a separate character between different tags. Example: {id}-{user_id}',\n 'ファイル名の重複を防ぐために、命名規則には {id} または {id_num}{p_num} を含める必要があります。
    複数のタグを使用することができます;異なるタグ間の分割のために文字を追加することをお勧めします。例:{id}-{user_id}',\n '파일명이 중복되지 않도록, 명명 규칙에는 {id} 또는 {id_num}{p_num}이 포함되어야 합니다.
    여러 태그를 사용할 수 있습니다. 서로 다른 태그 사이에 구분자를 넣는 것을 권장합니다. 예: {id}-{user}',\n 'Чтобы предотвратить дублирование имен файлов, {id} или {id_num}{p_num} должны быть включены в правила именования.
    Вы можете использовать несколько тегов, и вы можете добавить отдельный символ между различными тегами. Пример: {id}-{user_id}',\n ],\n _有些标记并不总是可用的提醒: [\n '有些标记并不总是可用,有时它们可能什么都不输出。',\n '有些標記並不總是可用,有時它們可能什麼都不輸出。',\n 'Some tags are not always available, and sometimes they may output nothing.',\n '一部のタグは常に使用できるとは限らず、何も出力しない場合もあります。',\n '일부 태그는 항상 사용할 수 있는 것은 아니며 때로는 아무 것도 출력하지 않을 수도 있습니다.',\n 'Некоторые теги не всегда доступны, а иногда могут ничего не выводить.',\n ],\n _命名规则一定要包含id: [\n '为了防止文件名重复,命名规则里一定要包含 {id} 或者 {id_num}{p_num}',\n '為了防止檔名重複,命名規則裡一定要包含 {id} 或者 {id_num}{p_num}。',\n 'To prevent duplicate file names, {id} or {id_num}{p_num} must be included in the naming rules.',\n 'ファイル名の重複を防ぐために、命名規則には {id} または {id_num}{p_num} を含める必要があります。',\n '파일명이 중복되지 않도록, 명명 규칙에는 {id} 또는 {id_num}{p_num}이 포함되어야 합니다.',\n 'Чтобы предотвратить дублирование имен файлов, {id} или {id_num}{p_num} должны быть включены в правила именования.',\n ],\n _文件夹标记PTag: [\n '如果页面里的作品属于同一个标签,则输出这个标签。',\n '如果頁面裡的作品屬於同一個標籤,則輸出這個標籤。',\n 'If the works on the page belong to the same tag, then output this tag.',\n 'ページ上の作品が同じタグに属している場合は、このタグを出力します。',\n '페이지의 작품이 같은 태그에 속하는 경우 이 태그를 출력합니다.',\n 'Если работы на странице относятся к одному и тому же тегу, то выводить этот тег.',\n ],\n _命名标记seriesTitle: [\n '系列标题,只在系列页面中可用(小说系列、漫画系列)。',\n '系列標題,只在系列頁面中可用(小說系列、漫畫系列)。',\n 'Series title, only available in series pages (Novel series, Manga series).',\n 'シリーズタイトル,シリーズページのみ(小説連載、漫画連載)。',\n '시리즈 제목, 시리즈 페이지에서만 사용 가능(소설 시리즈, 만화 시리즈).',\n 'Название серии, доступно только на страницах серий (серия романов, серия манги).',\n ],\n _命名标记seriesOrder: [\n '作品在系列中的序号,如 #1 #2。只在系列页面中可用(小说系列、漫画系列)。',\n '作品在系列中的編號,如 #1 #2。只在系列頁面中可用(小說系列、漫畫系列)。',\n 'The number of the work in the series, such as #1 #2. only available in series pages (Novel series, Manga series).',\n 'シリーズの中の作品の番号,例え #1 #2。シリーズページのみ(小説連載、漫画連載)。',\n '시리즈 내 작품 번호. 예: #1 #2. 시리즈 페이지에서만 사용 가능(소설 시리즈, 만화 시리즈).',\n 'Номер работы в серии, например, #1 #2. доступны только на страницах серий (серия романов, серия манги).',\n ],\n _命名标记seriesId: [\n '系列 ID,只在系列页面中可用(小说系列、漫画系列)。',\n '系列 ID,只在系列頁面中可用(小說系列、漫畫系列)。',\n 'Series ID, only available in series pages (Novel series, Manga series).',\n 'シリーズ ID,シリーズページのみ(小説連載、漫画連載)。',\n '시리즈 ID, 시리즈 페이지에서만 사용 가능(소설 시리즈, 만화 시리즈).',\n 'Идентификатор серии, доступен только на страницах серий (серия романов, серия манги).',\n ],\n _文件夹标记PTitle: [\n '页面标题',\n '頁面標題',\n 'Page title',\n 'ページタイトル',\n '페이지 제목',\n 'Заголовок страницы',\n ],\n _预览文件名: [\n '预览文件名',\n '預覽檔案名稱',\n 'Preview file name',\n 'ファイル名',\n '파일명 미리보기',\n 'Имя файла предварительного просмотра',\n ],\n _下载线程: [\n '下载线程',\n '下載執行緒',\n 'Download thread',\n '同時ダウンロード数',\n '다운로드 쓰레드',\n 'Кол-во потоков на загрузку',\n ],\n _下载线程的说明: [\n `你可以输入 1-${Config.downloadThreadMax} 之间的数字,设置同时下载的数量`,\n `你可以輸入 1-${Config.downloadThreadMax} 之間的數字,設定同時下載的數量。`,\n `You can type a number between 1-${Config.downloadThreadMax} to set the number of concurrent downloads`,\n `同時ダウンロード数を設定、1-${Config.downloadThreadMax} の数値を入力してください`,\n `1-${Config.downloadThreadMax} 사이의 숫자를 입력하여 동시 다운로드 수를 설정할 수 있습니다.`,\n `Вы можете ввести число между 1-${Config.downloadThreadMax} , чтобы установить количество одновременных загрузок`,\n ],\n _开始下载: [\n '开始下载',\n '開始下載',\n 'Start download',\n '開始',\n '다운로드 시작',\n 'Начать загрузку',\n ],\n _暂停下载: [\n '暂停下载',\n '暫停下載',\n 'Pause download',\n '一時停止',\n '다운로드 일시중지',\n 'Приостановить загрузку',\n ],\n _停止下载: [\n '停止下载',\n '停止下載',\n 'Stop download',\n '停止',\n '다운로드 정지',\n 'Остановить загрузку',\n ],\n _复制url: [\n '复制 URL',\n '複製下載網址',\n 'Copy URLs',\n 'URL をコピー',\n 'URL 복사',\n 'Копировать URL',\n ],\n _当前状态: [\n '当前状态 ',\n '目前狀態:',\n 'State ',\n '現在の状態 ',\n '현재 상태',\n 'Текущее состояние',\n ],\n _未开始下载: [\n '未开始下载',\n '未開始下載',\n 'Not yet started downloading',\n 'まだダウンロードを開始していません',\n '아직 다운로드를 시작하지 않았습니다.',\n 'Загрузка еще не началась',\n ],\n _下载进度: [\n '下载进度',\n '下載進度',\n 'Total progress',\n '概要',\n '다운로드 진행률',\n 'Полный прогресс',\n ],\n _任务进度: [\n '任务进度',\n '任務進度',\n 'Task progress',\n 'タスクの進行状況',\n '작업 진행',\n 'прогресс',\n ],\n _常见问题: ['常见问题', '常見問題', 'Help', 'よくある質問', '도움말', 'help'],\n _uuid: [\n '如果下载后的文件名异常,请禁用其他有下载功能的浏览器扩展。
    例如:Chrono 下载管理器、free Download Manager、Image Downloader、DownThemAll! 等。',\n '如果下載後的檔案名稱異常,請停用其他有下載功能的瀏覽器擴充功能。
    例如:Chrono 下载管理器、free Download Manager、Image Downloader、DownThemAll! 等。',\n 'If the file name after downloading is abnormal, disable other browser extensions that have download capabilities.
    For example: Chrono Download Manager, free Download Manager, Image Downloader, DownThemAll! and more.',\n 'ダウンロード後のファイル名が異常な場合は、ダウンロード機能を持つ他のブラウザ拡張機能を無効にしてください。
    例:Chrono Download Manager, free Download Manager, Image Downloader, DownThemAll! など。',\n '다운로드 후 파일명이 이상할 경우 다운로드 기능이 있는 다른 브라우저 확장 프로그램을 비활성화해주세요.예: Chrono Download Manager, free Download Manager、Image Downloader、DownThemAll! 등.',\n 'Если имя файла после загрузки ненормальное, отключите другие расширения браузера, которые имеют возможность загрузки.
    Например: Chrono Download Manager, бесплатный менеджер загрузок, загрузчик изображений, DownThemAll! и многое другое.',\n ],\n _常见问题说明: [\n '下载的文件保存在浏览器的下载目录里。

    建议在浏览器的下载设置中关闭“下载前询问每个文件的保存位置”。

    如果下载后的文件名异常,请禁用其他有下载功能的浏览器扩展。

    如果你的浏览器在启动时停止响应,你可以清除浏览器的下载记录。

    如果你使用 V2ray、Clash 等代理软件,可以确认一下 Pixiv 的图片域名(i.pximg.net)是否走了代理,如果没走代理就在代理规则里添加这个域名。

    如果你需要一个梯子(机场),可以试试这个机场:农家有风小院,价格实惠,网络稳定。先购买订阅,然后在仪表盘复制订阅链接使用。

    下载器 QQ 群:499873152

    在 Wiki 查看常见问题:
    https://xuejianxianzun.github.io/PBDWiki/#/zh-cn/常见问题

    中文教程视频:
    https://www.youtube.com/playlist?list=PLO2Mj4AiZzWEpN6x_lAG8mzeNyJzd478d',\n '下載的檔案儲存在瀏覽器的下載目錄裡。

    請不要在瀏覽器的下載選項裡選取「下載每個檔案前先詢問儲存位置」。

    如果下載後的檔名異常,請停用其他有下載功能的瀏覽器擴充功能。

    如果你的瀏覽器在啟動時停止響應,你可以清除瀏覽器的下載記錄。',\n 'The downloaded file is saved in the browsers download directory.

    It is recommended to turn off \"Ask where to save each file before downloading\" in the browser`s download settings.

    If the file name after downloading is abnormal, disable other browser extensions that have download capabilities.

    If your browser stops responding at startup, you can clear your browser`s download history.',\n 'ダウンロードしたファイルは、ブラウザのダウンロードディレクトリに保存されます。

    ブラウザのダウンロード設定で 「 ダウンロード前に各ファイルの保存場所を確認する 」 をオフにすることをお勧めします。

    ダウンロード後のファイル名が異常な場合は、ダウンロード機能を持つ他のブラウザ拡張機能を無効にしてください。

    起動時にブラウザーが応答しなくなった場合は、ブラウザーのダウンロード履歴を消去できます。',\n '다운로드한 파일은 브라우저의 다운로드 디렉토리에 저장됩니다.

    브라우저의 다운로드 설정에서 \"다운로드 전에 각 파일의 저장 위치 확인\"을 끄는 것이 좋습니다.

    다운로드 후 파일명이 이상할 경우 다운로드 기능이 있는 다른 브라우저 확장 프로그램을 비활성화해주세요.

    시작 시 브라우저가 응답하지 않으면 브라우저의 다운로드 기록을 지울 수 있습니다.',\n 'Загруженный файл сохраняется в каталоге загрузки браузеров.

    Рекомендуется отключить \"Спрашивать, куда сохранять каждый файл перед загрузкой\" в настройках загрузки браузера.

    Если имя файла после загрузки является ненормальным, отключите другие расширения браузера, которые имеют возможности загрузки.

    Если ваш браузер перестает отвечать на запросы при запуске, вы можете очистить историю загрузок вашего браузера.',\n ],\n _正在下载中: [\n '正在下载中',\n '正在下載',\n 'Downloading',\n 'ダウンロード中',\n '다운로드 중',\n 'Загрузка',\n ],\n _下载完毕: [\n '✓ 下载完毕',\n '✓ 下載完畢',\n '✓ Download complete',\n '✓ ダウンロードが完了しました',\n '✓ 다운로드 완료',\n '✓ Загрузка завершена',\n ],\n _下载完毕2: [\n '下载完毕',\n '下載完畢',\n 'Download complete',\n 'ダウンロードが完了しました',\n '다운로드 완료',\n 'Загрузка завершена',\n ],\n _已暂停: [\n '下载已暂停',\n '下載已暫停',\n 'Download is paused',\n 'ダウンロードは一時停止中です',\n '다운로드 일시중지',\n 'Загрузка приостановлена',\n ],\n _已停止: [\n '下载已停止',\n '下載已停止',\n 'Download stopped',\n 'ダウンロードが停止しました',\n '다운로드 정지',\n 'Загрузка остановлена',\n ],\n _已下载: [\n '已下载',\n '已下載',\n 'downloaded',\n 'downloaded',\n '다운로드됨',\n 'загруженно',\n ],\n _抓取完毕: [\n '抓取完毕!',\n '擷取完畢!',\n 'Crawl complete!',\n 'クロールが終了しました!',\n '긁어오기 완료!',\n 'Вытаскивание завершено!',\n ],\n _抓取完毕2: [\n '抓取完毕',\n '擷取完畢',\n 'Crawl complete',\n 'クロールが終了しました',\n '긁어오기 완료',\n 'Вытаскивание завершено',\n ],\n _快速下载本页: [\n '快速下载本页作品 (Alt + Q)',\n '快速下載本頁作品 (Alt + Q)',\n 'Download this work quickly (Alt + Q)',\n 'この作品をすばやくダウンロードする (Alt + Q)',\n '작품 빠른 다운로드 (Alt + Q)',\n 'Быстро загрузить эту работу (Alt + Q)',\n ],\n _快捷键ALTQ快速下载本页作品: [\n '你可以使用快捷键 Alt + Q 快速下载本页作品。',\n '你可以使用快捷鍵 Alt + Q 快速下載本頁作品。',\n 'You can use the shortcut keys Alt + Q to quickly download works on this page.',\n 'ショートカット キー Alt + Q を使用して、このページの作品をすばやくダウンロードできます。',\n '단축키 Alt + Q를 사용하여 이 페이지에서 작품을 빠르게 다운로드할 수 있습니다.',\n 'Вы можете использовать сочетания клавиш Alt + Q для быстрой загрузки работ на этой странице.',\n ],\n _抓取此作品: [\n '抓取此作品',\n '抓取此作品',\n 'Crawl this work',\n 'この作品をクロールする',\n '이 작품을 크롤링',\n 'Просканировать эту работу',\n ],\n _从本页开始抓取new: [\n '从本页开始抓取新作品',\n '從本頁開始擷取新作品',\n 'Crawl the new works from this page',\n 'このページから新しい作品を入手する',\n '이 페이지부터 새 작품 긁어오기',\n 'Просканировать новые работы с этой страницы',\n ],\n _从本页开始抓取old: [\n '从本页开始抓取旧作品',\n '從本頁開始擷取舊作品',\n 'Crawl the old works from this page',\n 'このページから古い作品を入手する',\n '이 페이지부터 오래된 작품 긁어오기',\n 'Просканировать старые работы с этой страницы',\n ],\n _抓取推荐作品: [\n '抓取推荐作品',\n '擷取推薦作品',\n 'Crawl the recommend works',\n '推奨作品をダウンロードする',\n '추천 작품 긁어오기',\n 'Просканировать рекомендуемые работы',\n ],\n _抓取推荐作品Title: [\n '抓取页面底部的的推荐作品',\n '擷取頁面底部的推薦作品。',\n 'Crawl the recommended works at the bottom of the page',\n 'ページの下部で推奨作品をクロールします',\n '페이지 하단 추천 작품 긁어오기',\n 'Просканировать рекомендованные работы внизу страницы',\n ],\n _抓取相关作品: [\n '抓取相关作品',\n '擷取相關作品',\n 'Crawl the related works',\n '関連作品をダウンロードする',\n '관련 작품 긁어오기',\n 'Просканировать похожие работы',\n ],\n _调整完毕: [\n '调整完毕,当前有{}个作品。',\n '調整完畢,目前有 {} 個作品。',\n 'The adjustment is complete and now has {} works.',\n '調整が完了し、今、{} の作品があります。',\n '조정이 완료되어, 현재 {}개의 작품이 있습니다.',\n 'Настройка завершена и теперь имеет {} работ',\n ],\n _抓取当前作品: [\n '抓取当前作品',\n '擷取目前作品',\n 'Crawl the current work',\n '現在の作品をクロールする',\n '현재 작품 긁어오기',\n 'Просканировать текущую работу',\n ],\n _抓取当前作品Title: [\n '抓取当前列表里的所有作品',\n '擷取目前清單裡的所有作品',\n 'Crawl all the works in the current list',\n '現在のリスト内のすべての作品をクロールする',\n '현재 목록에 있는 모든 작품 긁어오기',\n 'Просканировать все работы в текущем списке',\n ],\n _清除多图作品: [\n '清除多图作品',\n '清除多圖作品',\n 'Remove multi-image works',\n '複数画像をクリア',\n '여러 이미지 작품 지우기',\n 'Удалить работы с несколькими изображениями',\n ],\n _清除动图作品: [\n '清除动图作品',\n '清除動圖作品',\n 'Remove ugoira work',\n 'うごイラ作品を削除する',\n '움직이는 일러스트 작품 지우기',\n 'Убрать Ugoira(gif) работы',\n ],\n _手动删除作品: [\n '手动删除作品',\n '手動刪除作品',\n 'Manually delete the work',\n '作品を手動で削除する',\n '수동으로 작품 지우기',\n 'Вручную удалить работу',\n ],\n _手动删除作品Title: [\n '可以在下载前手动删除不需要的作品',\n '可以在下載前手動刪除不需要的作品,點擊作品刪除。',\n 'You can manually delete unwanted work before downloading',\n 'ダウンロードする前に不要な作品を手動で削除することができます',\n '다운로드를 원하지 않는 작품을 수동으로 지울 수 있습니다.',\n 'Вы можете вручную удалить нежелательные работы перед загрузкой',\n ],\n _退出手动删除: [\n '退出手动删除',\n '結束手動刪除',\n 'Exit manually delete',\n '削除モードを終了する',\n '수동 지우기 종료',\n 'Выйти из ручного удаления',\n ],\n _抓取本页作品: [\n '抓取本页作品',\n '擷取本頁作品',\n 'Crawl this page works',\n 'このページをクロールする',\n '이 페이지의 작품 긁어오기',\n 'Просканировать работы с этой страницы',\n ],\n _抓取本页作品Title: [\n '抓取本页列表中的所有作品',\n '擷取本頁清單中的所有作品',\n 'Crawl this page works',\n 'このページの全ての作品をクロールする',\n '이 페이지의 모든 작품 긁어오기',\n 'Просканировать работы с этой страницы',\n ],\n _抓取本排行榜作品: [\n '抓取本排行榜作品',\n '擷取本排行榜作品',\n 'Crawl the works in this list',\n 'このリストの作品をクロールする',\n '이 목록의 작품 긁어오기',\n 'Просканировать работы из этого списка',\n ],\n _抓取本排行榜作品Title: [\n '抓取本排行榜的所有作品,包括现在尚未加载出来的。',\n '擷取本排行榜的所有作品,包括現在尚未載入出來的。',\n 'Crawl all of the works in this list, including those that are not yet loaded.',\n 'まだ読み込まれていないものを含めて、このリストの作品をダウンロードする',\n '아직 불러오지 않은 작품을 포함하여, 이 목록의 모든 작품을 긁어옵니다.',\n 'Просмотреть все работы в этом списке, включая те, которые еще не загружены.',\n ],\n _抓取首次登场的作品: [\n '抓取首次登场作品',\n '擷取首次登場作品',\n 'Crawl the debut works',\n '初登場作品をダウンロードする',\n '데뷔작 긁어오기',\n 'Просканировать по дебютные работы',\n ],\n _抓取首次登场的作品Title: [\n '只下载首次登场的作品',\n '只下載首次登場的作品',\n 'Download only debut works',\n '初登場作品のみダウンロードします',\n '데뷔작만 다운로드',\n 'Скачать только дебютные работы',\n ],\n _抓取该页面的图片: [\n '抓取该页面的图片',\n '擷取該頁面的圖片',\n 'Crawl the image of the page',\n 'ページの画像をクロールする',\n '페이지의 이미지 긁어오기',\n 'Просканировать по изображение страницы',\n ],\n _抓取相似图片: [\n '抓取相似图片',\n '擷取相似圖片',\n 'Crawl similar works',\n '類似の作品をクロールする',\n '비슷한 작품 긁어오기',\n 'Просканировать похожие работы',\n ],\n _想要获取多少个作品: [\n '您想要获取多少个作品?',\n '想要取得多少個作品?',\n 'How many works do you want to download?',\n 'いくつの作品をダウンロードしたいですか?',\n '몇 개의 작품을 다운로드하시겠습니까?',\n 'Сколько работ вы хотите загрузить?',\n ],\n _数字提示1: [\n '-1, 或者大于 0',\n '-1,或是大於 0',\n '-1, or greater than 0',\n '-1、または 0 より大きい',\n '-1, 또는 0보다 크게',\n '-1, или больше 0',\n ],\n _下载大家的新作品: [\n '下载大家的新作品',\n '下載大家的新作品',\n 'Download everyone`s new work',\n 'みんなの新作をダウンロードする',\n '모두의 새 작품 다운로드',\n 'Вседа загружать новые работы',\n ],\n _屏蔽设定: [\n '屏蔽設定',\n '封鎖設定',\n 'Mute settings',\n 'ミュート設定',\n '차단 설정',\n 'Настройки защиты',\n ],\n _举报: ['举报', '回報', 'Report', '報告', '신고', 'Отчет'],\n _输入id进行抓取: [\n '输入 ID 进行抓取',\n '輸入 ID 進行擷取',\n 'Type ID to crawl',\n 'IDを入力してダウンロードする',\n '유형 ID 긁어오기',\n 'Введите ID для вытаскивания',\n ],\n _输入id进行抓取的提示文字: [\n '请输入作品 id。如果有多个 id,则以换行分割(即每行一个id)。',\n '請輸入作品 id。如果有多個 id,則以換行分隔(即每行一個 id)。',\n 'Please type the illustration id. If there is more than one id, one id per line.',\n 'イラストレーターIDを入力してください。 複数の id がある場合は、1 行に 1 つの id を付けます。',\n '일러스트 작품 ID를 입력해주세요. 여러 개의 ID가 있으면 줄을 바꾸어주세요 (한 줄에 한 개의 ID).',\n 'Пожалуйста, введите идентификатор иллюстрации. Если идентификаторов несколько, то по одному идентификатору на строку.',\n ],\n _输入的ID视为图像ID: [\n '因为这个标签页展示的是图像,所以输入的 ID 会被视为图像作品的 ID。',\n '因為這個標籤頁展示的是圖片,所以輸入的 ID 會被視為圖片作品的 ID。',\n 'Since this tab displays images, the ID entered will be considered the ID of the image work.',\n 'このタブは画像を表示するため、入力したIDが画像作品のIDとなります。',\n '이 탭에는 이미지가 표시되므로 입력한 ID가 해당 이미지 작품의 ID로 간주됩니다.',\n 'Поскольку на этой вкладке отображаются изображения, введенный идентификатор будет считаться идентификатором работы с изображением.',\n ],\n _输入的ID视为小说ID: [\n '因为这个标签页展示的是小说,所以输入的 ID 会被视为小说作品的 ID。',\n '因為這個標籤頁展示的是小說,所以輸入的 ID 會被視為小說作品的 ID。',\n 'Since this tab displays novels, the ID entered will be treated as the ID of the novel work.',\n 'このタブは小説を表示するため、入力したIDは小説作品のIDとして扱われます。',\n '이 탭에는 소설이 표시되므로 입력한 ID는 소설 작품의 ID로 처리됩니다.',\n 'Поскольку на этой вкладке отображаются романы, введенный идентификатор будет рассматриваться как идентификатор романа.',\n ],\n _开始抓取: [\n '开始抓取',\n '開始擷取',\n 'Start crawl',\n 'クロールを開始する',\n '긁어오기 시작',\n 'Начать вытаскивание',\n ],\n _给未分类作品添加添加tag: [\n '给未分类的作品添加标签',\n '幫未分類的作品加入標籤',\n 'Add tag to uncategorized work',\n '未分類の作品にタグを追加',\n '분류되지 않은 작품에 태그 추가',\n 'Добавить метку к неклассифицированной работе',\n ],\n _id不合法: [\n 'id不合法',\n 'id 不合法',\n 'id is illegal',\n 'id が不正な',\n '올바르지 않은 ID',\n 'Это ID неверно',\n ],\n _快速收藏: [\n '快速收藏 (Ctrl + B)',\n '快速收藏 (Ctrl + B)',\n 'Quick bookmarks (Ctrl + B)',\n 'クイックブックマーク (Ctrl + B)',\n '빠른 북마크 (Ctrl + B)',\n 'Быстрые закладки (Ctrl + B)',\n ],\n _启用: ['启用', '啟用', 'Enable', '有効にする', '활성화', 'Включить'],\n _自动开始下载: [\n '自动开始下载',\n '自動開始下載',\n 'Download starts automatically',\n 'ダウンロードは自動的に開始されます',\n '자동으로 다운로드 시작',\n 'Загрузка начинается автоматически',\n ],\n _自动开始下载的提示: [\n '当“开始下载”状态可用时,自动开始下载,不需要点击下载按钮。',\n '當可下載時自動開始下載,不需要點選下載按鈕。',\n 'When the "Start Download " status is available, the download starts automatically and no need to click the download button.',\n '「ダウンロードを開始する」ステータスが利用可能になると、ダウンロードは自動的に開始され、ダウンロードボタンをクリックする必要はありません。',\n '\"다운로드 시작\" 상태가 활성화되면, 다운로드가 자동으로 시작되고 다운로드 시작 버튼을 클릭할 필요가 없게 됩니다.',\n 'При активации этого тумблера загрузка начнется автоматически, без необходимости нажимать кнопку загрузки',\n ],\n _转换任务提示: [\n '正在转换 {} 个文件',\n '正在轉換 {} 個檔案',\n 'Converting {} files',\n '{} ファイルの変換',\n '{}개의 파일을 변환하는 중',\n 'Преобразование {} файлов',\n ],\n _最近更新: [\n '最近更新',\n '最近更新',\n 'What`s new',\n '最近更新する',\n '새로운 기능',\n 'Что нового',\n ],\n _确定: ['确定', '確定', 'Ok', '確定', '확인', 'Ок'],\n _file404: [\n '404 错误:文件 {} 不存在。',\n '404 錯誤:檔案 {} 不存在。',\n '404 error: File {} does not exist.',\n '404 エラー:ファイル {} は存在しません。',\n '404 오류: 파일 {}이 존재하지 않습니다.',\n '404 ошибка: Файл {} не существует.',\n ],\n _文件下载失败: [\n '文件 {} 下载失败',\n '檔案 {} 下載失敗',\n 'File {} download failed',\n 'ファイル {} のダウンロードを失敗しました',\n '파일 {} 다운로드 실패',\n 'Загрузка файла {} не удалась',\n ],\n _是否重置设置: [\n '是否重置设置?',\n '確定要重設設定嗎?',\n 'Do you want to reset the settings?',\n '設定をリセットしますか?',\n '설정을 초기화하시겠습니까?',\n 'Вы хотите сбросить настройки?',\n ],\n _newver: [\n '有新版本可用',\n '有新版本可更新',\n 'A new version is available',\n '新しいバージョンがあります',\n '새 버전이 있습니다',\n 'Доступна новая версия',\n ],\n _id范围: [\n 'ID 范围',\n 'ID 範圍',\n 'ID range',\n 'ID 範囲',\n 'ID 범위',\n 'ID диапазон',\n ],\n _设置id范围提示: [\n '您可以输入一个作品 id,抓取比它新或者比它旧的作品',\n '可以輸入一個作品 id,擷取比它新或者比它舊的作品。',\n 'You can type a work id and crawl works that are newer or older than it',\n '1 つの作品 id を入力することで、それより新しいあるいは古い作品をクロールことができます',\n '작품 ID를 입력하여, 그보다 새로운 혹은 오래된 작품을 긁어올 수 있습니다.',\n 'Вы можете ввести идентификатор работы и просмотреть работы, которые новее или старше его',\n ],\n _大于: ['大于', '大於', 'Bigger than', 'より大きい', '보다 큼', 'Больше чем'],\n _小于: ['小于', '小於', 'Less than', 'より小さい', '보다 작음', 'Меньше чем'],\n _投稿时间: [\n '投稿时间',\n '投稿時間',\n 'Posting date',\n '投稿日時',\n '게시 날짜',\n 'Дата публикации',\n ],\n _设置投稿时间提示: [\n '您可以下载指定时间内发布的作品',\n '可以下載指定時間內發布的作品。',\n 'You can download works posted in a specified period of time',\n '指定された時間内に配信された作品をダウンロードすることができます',\n '지정된 기간 내에 게시된 작품을 다운로드할 수 있습니다.',\n 'Вы можете загружать работы, размещенные за определенный период времени',\n ],\n _时间范围: [\n '时间范围',\n '時間範圍',\n 'Time range',\n '時間範囲',\n '시간 범위',\n 'Диапазон времени',\n ],\n _必须大于0: [\n '必须大于 0',\n '必須大於 0',\n 'must be greater than 0',\n '0 より大きくなければなりません',\n '0보다 커야합니다',\n 'должно быть больше 0',\n ],\n _开始筛选: [\n '开始筛选',\n '開始篩選',\n 'Start screening',\n 'スクリーニング開始',\n '선별 시작',\n 'Начать скрининг',\n ],\n _开始筛选Title: [\n '按照设置来筛选当前标签里的作品。',\n '按照設定來篩選目前標籤裡的作品。',\n 'Screen the works in the current tag.',\n '現在のタグにある作品を設定によってスクリーニングする',\n '설정에 따라 현재 태그 내 작품을 선별합니다.',\n 'Отобразить работы в с текущим тегом',\n ],\n _在结果中筛选: [\n '在结果中筛选',\n '在結果中篩選',\n 'Screen in results',\n '結果の中からスクリーニング',\n '결과 중에서 선별',\n 'Экран результатов',\n ],\n _在结果中筛选说明: [\n '您可以改变设置,并在结果中再次筛选。',\n '可以變更設定,並在結果中再次篩選。',\n 'You can change the settings and screen again in the results.',\n '設定を変えて、結果の中で再びスクリーニングすることができます。',\n '설정을 변경하고, 결과를 다시 선별할 수 있습니다',\n 'Вы можете изменить настройки и снова просмотреть результаты',\n ],\n _抓取筛选结果: [\n '抓取筛选结果',\n '擷取篩選結果',\n 'Crawl the screening results',\n 'スクリーニングの結果をクロールする',\n '선별 결과 긁어오기',\n 'Просканировать результаты скрининга',\n ],\n _尚未开始筛选: [\n '尚未开始筛选',\n '尚未開始篩選',\n 'Screening has not started',\n 'まだスクリーニングを開始していない',\n '선별이 시작되지 않았습니다',\n 'Скрининг не начался',\n ],\n _没有数据可供使用: [\n '没有数据可供使用',\n '沒有資料可供使用',\n 'No data is available.',\n '使用可能なデータはない',\n '사용 가능한 데이터가 없습니다',\n 'Нет данных',\n ],\n _预览搜索结果: [\n '预览搜索页面的筛选结果',\n '預覽搜尋頁面的篩選結果',\n 'Preview filter results on search page',\n '検索ページのフィルタ結果をプレビューします',\n '미리보기 검색 페이지 필터 결과',\n 'Предварительный просмотр результатов фильтрации на странице поиска',\n ],\n _预览搜索结果说明: [\n '下载器可以把符合条件的作品显示在当前页面上,并且按照收藏数量从高到低排序。
    如果抓取结果太多导致页面崩溃,请关闭这个功能。
    启用预览功能时,下载器不会自动开始下载。',\n '下載器可以把符合條件的作品顯示在當前頁面上,並且按照收藏數量從高到低排序。
    如果擷取結果太多導致頁面當掉,請關閉這個功能。
    啟用預覽功能時,下載器不會自動開始下載。',\n 'The downloader can display eligible works on the current page and sort them from high to low according to the number of bookmarks.
    If too many crawling results cause the page to crash, turn off this feature.
    When the preview feature is enabled, the downloader does not start downloading automatically.',\n 'ダウンローダーは、対象となる作品を現在のページに表示し、コレクション数に応じて上位から下位に並べ替えることができます。
    クロール結果が多すぎてページが崩れる場合は、この機能をオフにしてください。
    プレビュー機能を有効にすると、ダウンロードは自動的に開始されません。',\n '다운로더는 현재 페이지에 적합한 작품을 표시하고 컬렉션 수에 따라 높은 순으로 정렬할 수 있습니다.
    긁어오기 결과가 너무 많아서 페이지가 충돌하면 이 기능을 꺼주세요.
    미리보기를 사용하면 다운로드가 자동으로 시작되지 않습니다.',\n 'Загрузчик может отображать подходящие произведения на текущей странице и сортировать их по возрастанию в зависимости от количества коллекций.
    Пожалуйста, отключите эту функцию, если слишком большое количество результатов просмотра приводит к сбою страницы.
    Загрузчик не начинает автоматическую загрузку, если включена функция предварительного просмотра.',\n ],\n _目录名使用: [\n '目录名使用:',\n '資料夾名稱使用:',\n 'Name: ',\n 'ディレクトリ名の使用:',\n '이름: ',\n 'Имя: ',\n ],\n _目录名: ['目录名', '資料夾名稱', 'Name', 'ディレクトリ名', '이름', 'Имя'],\n _启用快速收藏: [\n '启用快速收藏',\n '開啟快速收藏',\n 'Enable quick bookmark',\n 'クイックボックマークを有効にする',\n '빠른 북마크 활성화',\n 'Включить быструю закладку',\n ],\n _启用快速收藏说明: [\n '当你点击下载器添加的收藏按钮(☆),把作品添加到书签时,自动添加这个作品的标签。',\n '當點選下載器新增的收藏按鈕(☆),將作品加入書籤時,自動新增這個作品的標籤。',\n 'When you click the favorite button (☆) added by the downloader to bookmark a work, the tag of the work is automatically added.',\n 'ダウンローダーに追加されたボックマークボタン「☆」をクリックして、作品をブックマークに追加すると、自動的に作品のタグが追加されます。',\n '다운로더에 추가된 북마크 버튼(☆)을 클릭하여 북마크에 작품을 추가하면 자동으로 이 작품의 태그가 추가됩니다.',\n 'Когда вы нажимаете на кнопку Закладка (☆), добавленную загрузчиком, чтобы добавить произведение в закладки, автоматически добавляется тег для этого произведения',\n ],\n _新增设置项: [\n '新增设置项',\n '新增設定項目',\n 'Added setting items',\n '新たな機能を追加されました',\n '새로운 설정 항목 추가',\n 'Добавить новый элемент настройки',\n ],\n _新增功能: [\n '新增功能',\n '新增功能',\n 'New feature',\n '新機能',\n '새로운 기능',\n 'Новая фича',\n ],\n _抓取: ['抓取', '擷取', 'Crawl', 'クロール', '긁어오기', 'Сканирование'],\n _下载: ['下载', '下載', 'Download', 'ダウンロード', '다운로드', 'Скачивание'],\n _其他: ['其他', '其他', 'Other', 'その他', '그 외', 'Другие настройки'],\n _更多: ['更多', '更多', 'More', 'もっと', '더보기', 'Больше'],\n _第一张图不带序号: [\n '第一张图不带序号',\n '第一張圖片不包含序號',\n 'The first image without a serial number',\n '最初のイメージの番号を削除',\n '일련번호가 없는 첫 번째 이미지',\n 'Первое изображение без серийного номера',\n ],\n _第一张图不带序号说明: [\n '去掉每个作品第一张图的序号。例如 80036479_p0 变成 80036479',\n '去掉每個作品第一張圖的序號。例如:80036479_p0 變成 80036479。',\n 'Remove the serial number of the first image of each work. For example 80036479_p0 becomes 80036479.',\n '作品ごとの最初のイメージの番号を削除します。例えば 80036479_p0 は 80036479 になります。',\n '작품마다 첫 번째 이미지의 일련번호를 지웁니다.
    예: 80036479_p0은 80036479가 됩니다.',\n 'Удалите серийный номер с первой фотографии каждой работы. Например, 80036479_p0 становится 80036479',\n ],\n _最小值: ['最小值', '最小值', 'Minimum', '最小値', '최소', 'Минимум'],\n _最大值: ['最大值', '最大值', 'Maximum', '最大値', '최대', 'Максимум'],\n _单图作品: [\n '单图作品',\n '單圖作品',\n 'Single image works',\n 'シングルイメージ作品',\n '단일 이미지 작품',\n 'Работа с одним изображением',\n ],\n _彩色图片: [\n '彩色图片',\n '彩色圖片',\n 'Color images',\n 'カラーイメージ',\n '컬러 이미지',\n 'Цветная картинки',\n ],\n _黑白图片: [\n '黑白图片',\n '黑白圖片',\n 'Black and white images',\n '白黒イメージ',\n '흑백 이미지',\n 'Черно-белые изображения',\n ],\n _不保存图片因为颜色: [\n '{} 没有被保存,因为它的颜色不符合设定。',\n '{} 並未儲存,因為它的色彩不符合設定。',\n '{} was not saved because its colors do not match the settings.',\n '{} は色が設定に合わないため、保存されていません。',\n '{} 색상이 설정과 일치하지 않아, 저장되지 않았습니다.',\n '{} не был(и) сохранен(ы), потому что его цвета не соответствуют настройкам.',\n ],\n _同时转换多少个动图: [\n '同时转换多少个动图',\n '同時轉換多少個動圖',\n 'How many animations are converted at the same time',\n '同時変換のうごイラの上限',\n '동시에 변환할 움직이는 일러스트 수',\n 'Сколько анимаций преобразуется одновременно',\n ],\n _同时转换多少个动图警告: [\n '同时转换多个动图会增加资源占用。',\n '同時轉換多個動圖會增加資源占用。',\n 'Converting multiple animations at the same time will increase resource consumption. ',\n '複数の動画を同時に変換すると、リソースの占有が増加します。',\n '여러 움직이는 일러스트를 동시에 변환하면 리소스가 더 많이 사용됩니다.',\n 'Одновременное преобразование нескольких анимаций увеличит потребление ресурсов. ',\n ],\n _提示: ['提示', '提示', 'Tip', 'ヒント', '팁', 'Совет'],\n _提示2: ['提示', '提示', 'Tip', '?', '팁', 'Совет'],\n _fanboxDownloader: [\n 'Fanbox 下载器',\n 'Fanbox 下載器',\n 'Fanbox Downloader',\n 'Fanbox ダウンロード',\n 'Fanbox 다운로더',\n 'Fanbox загрузчик',\n ],\n _不保存图片因为体积: [\n '{} 没有被保存,因为它的体积不符合设定。',\n '{} 並未儲存,因為它的大小不符合設定。',\n '{} was not saved because its size do not match the settings.',\n '{} はファイルサイズが設定に合わないため、保存されていません。',\n '{} 크기가 설정에 맞지 않아, 저장되지 않았습니다.',\n '{} не был(и) сохранен(ы), потому что его размер не соответствует настройкам.',\n ],\n _文件体积限制: [\n '文件体积限制',\n '檔案體積限制',\n 'File size limit',\n 'ファイルサイズ制限',\n '파일 크기 제한',\n 'Ограничение размера файла',\n ],\n _不符合要求的文件不会被保存: [\n '不符合要求的文件不会被保存。',\n '不會儲存不符合要求的檔案。',\n 'Files that do not meet the requirements will not be saved.',\n '設定 に合わないファイルは保存されません。',\n '요구 사항을 충족하지 않는 파일은 저장되지 않습니다.',\n 'Файлы, не соответствующие требованиям, не будут сохранены',\n ],\n _小说: ['小说', '小說', 'Novel', '小説', '소설', 'Новеллы'],\n _抓取系列小说: [\n '抓取系列小说',\n '擷取系列小說',\n 'Crawl series of novels',\n '小説のシリーズをクロールする',\n '시리즈 소설 긁어오기',\n 'Просканировать серию новелл',\n ],\n _合并系列小说: [\n '合并系列小说',\n '合併系列小說',\n 'Merge series of novels',\n 'シリーズ小説の統合',\n '시리즈 소설 합치기',\n 'Объединить серию новелл',\n ],\n _小说保存格式: [\n '小说保存格式',\n '小說儲存格式',\n 'Save the novel as',\n '小説の保存形式',\n '소설저장 형식',\n 'Сохранить новеллу как',\n ],\n _在小说里保存元数据: [\n '在小说里保存元数据',\n '在小說裡儲存元資料',\n 'Save metadata in the novel',\n '小説の中にメタデータを保存する',\n '소설 내 메타데이터 저장',\n 'Сохранить метаданные новеллы',\n ],\n _在小说里保存元数据提示: [\n '把作者、网址等信息保存到小说里',\n '將作者、網址等資訊儲存到小說裡',\n 'Save the author, URL and other information in the file',\n '作者やURLなどの情報をファイルの中に保存します。',\n '작가, URL, 그 외 정보를 소설 내에 저장합니다.',\n 'Сохранить автора, URL и другую информацию в файле',\n ],\n _收藏本页面的所有作品: [\n '收藏本页面的所有作品',\n '收藏本頁面的所有作品',\n 'Bookmark all works on this page',\n 'この頁の全ての作品をブックマークに追加します',\n '이 페이지의 북마크된 모든 작품 다운로드',\n 'Перенести в закладки все работы на этой странице',\n ],\n _输出内容太多已经为你保存到文件: [\n '因为输出内容太多,已经为您保存到文件。',\n '因為輸出內容太多,已經為你儲存到檔案。',\n 'Because the output is too much, it has been saved to a file.',\n '出力内容が多いため、txt ファイルに保存しました。',\n '출력 내용이 너무 많아, 파일로 저장했습니다.',\n 'Так как выход слишком большой, он был сохранен в файл',\n ],\n _不下载重复文件: [\n '不下载重复文件',\n '不下載重複檔案',\n 'Don`t download duplicate files',\n '重複ファイルをダウンロードしない',\n '중복파일 다운로드하지 않기',\n 'Не загружать дубликаты файлов',\n ],\n _不下载重复文件的提示: [\n '下载器会保存自己的下载记录,以避免下载重复的文件。
    你可以清除浏览器的下载记录,这不会影响下载器的下载记录。
    当你清除 Cookie 及其他网站数据时,下载器的记录也会被清除。',\n '下載器會儲存自己的下載紀錄,以避免下載重複的檔案。
    你可以清除瀏覽器的下載記錄,這不會影響下載器的下載記錄。
    當你清除 Cookie 及其他網站資料時,下載器的記錄也會被清除。',\n `The downloader will save its download record to avoid downloading duplicate files.
    You can clear the browser's download history, which will not affect the downloader's download record.
    When you clear cookies and other site data, the downloader's records will also be cleared.`,\n 'ダウンローダーは独自のダウンロード履歴を保存して、重複ファイルのダウンロードを回避する。
    ブラウザのダウンロード履歴をクリアできますが、ダウンローダのダウンロード記録には影響しません。
    cookie と他のサイトデータを削除すると、ダウンローダーの記録も削除されます。',\n '다운로더가 중복되는 파일을 다운로드하지 않도록 자신의 다운로드 기록을 저장합니다.
    브라우저의 다운로드 기록을 지울 수 있으며 이는 다운로더의 다운로드 기록에 영향을 미치지 않습니다.
    쿠키와 다른 사이트 데이터를 지울 때 다운로드 기록도 삭제됩니다.',\n 'Загрузчик хранит собственную историю загрузок, чтобы избежать загрузки дубликатов файлов.
    Вы можете очистить историю загрузок вашего браузера, и это не повлияет на историю загрузок загрузчика.
    Когда вы очищаете cookies и другие данные веб-сайта, история загрузчика также будет очищена.
    ',\n ],\n _策略: [\n '策略:',\n '策略:',\n 'Strategy:',\n 'フィルター:',\n '전략:',\n 'Стратегия',\n ],\n _严格: ['严格', '嚴格', 'Strict', '厳格', '엄격하게', 'Строгий'],\n _宽松: ['宽松', '寬鬆', 'Loose', '緩い', '느슨하게', 'Свободный'],\n _严格模式说明: [\n '判断条件:作品的 id、上传日期、文件名',\n '判斷條件:作品的 id、上傳日期、檔名',\n 'Judgment conditions: id, upload date, file name of the work',\n '審査条件:作品のID、アップロード日、ファイル名',\n '판정 조건: 작품 ID, 업로드 날짜, 파일명',\n 'Условия оценки: идентификатор, дата загрузки, имя файла работы',\n ],\n _宽松模式说明: [\n '判断条件:作品的 id、上传日期',\n '判斷條件:作品的 id、上傳日期',\n 'Judgment conditions: id, upload date of the work',\n '審査条件:作品のID、アップロード日',\n '판정 조건: 작품 ID, 업로드 날짜',\n 'Условия оценки: идентификатор, дата загрузки работы',\n ],\n _清除下载记录: [\n '清除下载记录',\n '清除下載記錄',\n 'Clear download record',\n 'ダウンロード記録をクリア',\n '다운로드 기록 지우기',\n 'Очистить запись загрузки',\n ],\n 确定要清除下载记录吗: [\n '确定要清除下载记录吗?',\n '確定要清除下載記錄嗎?',\n 'Are you sure you want to clear download record?',\n 'ダウンロード記録を消去してもよろしいですか?',\n '다운로드 기록을 지우시겠습니까?',\n 'Вы уверены, что хотите очистить запись загрузки?',\n ],\n _下载记录已清除: [\n '下载记录已清除',\n '已清除下載紀錄',\n 'Download record has been cleared',\n 'ダウンロード履歴がクリアされました',\n '다운로드 기록이 비워졌습니다',\n 'Запись загрузок была очищена',\n ],\n _跳过下载因为重复文件: [\n '检测到文件 {} 已经下载过,跳过此次下载',\n '偵測到檔案 {} 已經下載過,跳過此次下載。',\n 'Skip downloading duplicate files {}',\n '重複ファイル {} をスキップ',\n '파일 {}이(가) 이미 다운로드되어 있어, 다운로드를 건너뜁니다',\n 'Пропустить загрузку дубликатов файлов {}',\n ],\n _保存用户头像为图标: [\n '保存用户头像为图标',\n '將使用者頭貼另存為圖示檔案',\n 'Save user avatar as icon',\n 'プロフィール画像をアイコンとして保存',\n '아이콘으로 유저 프로필 이미지 저장',\n 'Сохранить аватар пользователя как иконку',\n ],\n _保存用户头像为图标说明: [\n '把用户头像保存为 ico 文件,可以手动设置成文件夹的图标。',\n '將使用者頭貼儲存為 ico 檔案,可以手動設定成資料夾圖示。',\n 'Save user avatar as icon',\n 'ユーザーのプロフィール画像を ico ファイルとして保存して、フォルダーアイコンとして設定できます。',\n '유저 프로필 이미지를 ico 파일로 저장하면, 디렉토리 아이콘으로 수동 설정할 수 있습니다.',\n 'Сохранить аватар пользователя как иконку',\n ],\n _正在保存抓取结果: [\n '正在保存抓取结果',\n '正在儲存擷取結果',\n 'Saving crawl results',\n 'クロール結果を保存しています',\n '긁어오기 결과 저장 중',\n 'Сохранение результатов вытаскивания',\n ],\n _已保存抓取结果: [\n '已保存抓取结果',\n '已儲存擷取結果',\n 'Crawl results saved',\n 'クロール結果を保存しました',\n '긁어오기 결과가 저장되었습니다',\n 'Сохранение результатов вытаскивания',\n ],\n _正在恢复抓取结果: [\n '正在恢复抓取结果',\n '正在還原擷取結果',\n 'Restoring crawl results',\n 'クロール結果を再開しています',\n '긁어오기 결과 복구 중',\n 'Восстановление результатов вытаскивания',\n ],\n _已恢复抓取结果: [\n '已恢复抓取结果',\n '已還原擷取結果',\n 'Crawl results resumed',\n 'クロール結果を再開しました',\n '긁어오기 결과가 복구되었습니다',\n 'Результаты вытаскивания восстановлены',\n ],\n _清空已保存的抓取结果: [\n '清空已保存的抓取结果',\n '清除已儲存的擷取結果',\n 'Clear saved crawl results',\n 'セーブしたクロール結果をクリアします',\n '저장된 긁어오기 결과 비우기',\n 'Очистить сохраненные результаты вытаскивания',\n ],\n _数据清除完毕: [\n '数据清除完毕',\n '資料清除完畢',\n 'Data cleared',\n 'クリアされたデータ',\n '데이터가 비워졌습니다',\n 'Данные очищены',\n ],\n _已跳过n个文件: [\n '已跳过 {} 个文件',\n '已跳過 {} 個檔案',\n '{} files skipped',\n '{} つのファイルをスキップしました',\n '{}개의 파일을 건너뛰었습니다',\n '{} файл(ов) пропущены',\n ],\n _不保存图片因为宽高: [\n '{} 没有被保存,因为它的宽高不符合设定。',\n '{} 並未儲存,因為它的寬高不符合設定。',\n '{} was not saved because its width and height do not match the settings.',\n '{} は幅と高さが設定に合わないため、保存されていません。',\n '{} 너비와 높이가 설정에 맞지 않아, 저장되지 않았습니다.',\n '{} не был(и) сохранен, потому что его ширина и высота не соответствуют настройкам.',\n ],\n _保存: ['保存', '儲存', 'Save', '保存', '저장', 'Сохранить'],\n _加载: ['加载', '載入', 'Load', 'ロード', '불러오기', 'Загрузить'],\n _保存命名规则提示: [\n '保存命名规则,最多 20 个',\n '儲存命名規則,最多 20 個',\n 'Save naming rule, up to 20',\n '命名規則を保存します。最大 20 個まで',\n '명명 규칙 저장, 최대 20개',\n 'Сохранить правило именования, до 20',\n ],\n _已保存命名规则: [\n '已保存命名规则',\n '已儲存命名規則',\n 'Naming rule saved',\n '命名規則を保存しました',\n '명명 규칙이 저장되었습니다.',\n 'Правило наименования сохранено',\n ],\n _命名: ['命名', '命名', 'Name', '命名', '이름', 'Имя'],\n _无损: ['无损', '無損', 'Lossless', 'ロスレス', '무손실', 'Без потерь'],\n _文件名长度限制: [\n '文件名长度限制',\n '檔案名稱長度限制',\n 'File name length limit',\n 'ファイル名の長さ制限',\n '파일명 길이 제한',\n 'Лимит длины имени файла',\n ],\n _标签分隔符号: [\n '标签分隔符号',\n '標簽分隔符號',\n 'Tag separation symbol',\n 'タグ セパレーションシンボル',\n '태그 분리 기호',\n 'Тег символ разделения',\n ],\n _标签分隔符号提示: [\n '只会影响这些命名标记的结果:{tags}, {tags_translate}, {tags_transl_only}
    推荐符号 , # ^ & _',\n '只會影響這些命名標記的結果:{tags}, {tags_translate}, {tags_transl_only}
    推薦符號 , # ^ & _',\n 'Only affects results for these named tags: {tags}, {tags_translate}, { tags_transl_only}.
    Recommended symbols , # ^ & _',\n '次の名前付きタグの結果にのみ影響します: {tags}{tags_translate}{ tags_transl_only }
    推奨記号 , # ^ & _。',\n '이러한 명명된 태그의 결과에만 영향을 미칩니다: {tags}, {tags_translate}, { tags_transl_only }.
    권장 기호 , # ^ & _',\n 'Влияет только на результаты для следующих именованных тегов: {tags}, {tags_translate}, { tags_transl_only .
    Рекомендуемые символы , # ^ & _',\n ],\n _导出csv: [\n '导出 CSV 文件',\n '匯出 CSV 檔',\n 'Export CSV file',\n 'CSV ファイルをエクスポート',\n 'CSV 파일 내보내기',\n 'Экспорт в файл CSV',\n ],\n _导出抓取结果: [\n '导出抓取结果',\n '匯出擷取結果',\n 'Export results',\n 'クロール結果をエクスポート',\n '결과 내보내기',\n 'Экспорт результатов',\n ],\n _导入抓取结果: [\n '导入抓取结果',\n '匯入擷取結果',\n 'Import results',\n 'クロール結果をインポート',\n '결과 불러오기',\n 'Импорт результатов',\n ],\n _导入成功: [\n '导入成功',\n '匯入成功',\n 'Import successfully',\n 'インポート成功',\n '가져오기 성공',\n 'Импорт успешен',\n ],\n _导出成功: [\n '导出成功',\n '匯出成功',\n 'Export successfully',\n 'エクスポート成功',\n '내보내기 성공',\n 'Импорт успешен',\n ],\n _图片尺寸: [\n '图片尺寸',\n '圖片尺寸',\n 'Image size',\n '画像サイズ',\n '이미지 크기',\n 'Размер изображения',\n ],\n _图片尺寸2: [\n '图片尺寸',\n '圖片尺寸',\n 'Image size',\n '画像サイズ',\n '이미지 크기',\n 'Размер изображения',\n ],\n _原图: ['原图', '原圖', 'Original', 'Original', '원본', 'Оригинал'],\n _普通: ['普通', '普通', 'Regular', 'Regular', '레귤러', 'Обычный'],\n _小图: ['小图', '小圖', 'Small', 'Small', '스몰', 'Маленький'],\n _方形缩略图: [\n '方形缩略图',\n '方形縮圖',\n 'Square thumbnail',\n 'Square thumbnail',\n '정사각형 썸네일',\n 'Квадратная миниатюра',\n ],\n _导出: ['导出', '匯出', 'Export', 'エクスポート', '내보내기', 'Экспорт'],\n _导入: ['导入', '匯入', 'Import', 'インポート', '불러오기', 'Импорт'],\n _清除: ['清除', '清除', 'Clear', 'クリア', '비우기', 'Очистить'],\n _导入下载记录: [\n '导入下载记录',\n '匯入下載紀錄',\n 'Import download record',\n 'ダウンロード記録をインポート',\n '다운로드 기록 불러오기',\n 'Импорт записи загрузки',\n ],\n _导出下载记录: [\n '导出下载记录',\n '匯出下載紀錄',\n 'Export download record',\n 'ダウンロード記録のエクスポート',\n '다운로드 기록 내보내기',\n 'Экспорт записи загрузки',\n ],\n _数据较多需要花费一些时间: [\n '数据较多,需要花费一些时间',\n '資料較多,需要花費一些時間',\n 'A lot of data, it will take some time',\n 'データ量が多いので少し時間がかかります',\n '데이터가 많아 시간이 좀 걸립니다',\n 'Много данных, это займет некоторое время',\n ],\n _完成: ['完成', '完成', 'Completed', '完了', '완료됨', 'Готово'],\n _日期格式: [\n '日期和时间格式',\n '日期和時間格式',\n 'Date and time format',\n '日付と時刻の書式',\n '날짜 및 시간 형식',\n 'Формат даты и времени',\n ],\n _日期格式提示: [\n '你可以使用以下标记来设置日期和时间格式。这会影响命名规则里的 {date} 和 {upload_date} 和 {task_date}。
    对于时间如 2021-04-30T06:40:08',\n '你可以使用以下標記來設定日期和時間格式。這會影響命名規則裡的 {date} 和 {upload_date} 和 {task_date}。
    對於資料如:2021-04-30T06:40:08。',\n 'You can use the following notation to set the date and time format. This will affect {date} and {upload_date} and {task_date} in the naming rules.
    For time such as 2021-04-30T06:40:08',\n '以下のタグを使用して日時と時刻の書式を設定することができます。 これは命名規則の {date} と {upload_date} と {task_date} に影響します。
    例:2021-04-30T06:40:08',\n '다음 표기법을 사용하여 날짜 및 시간 형식을 설정할 수 있습니다.
    이것은 명명 규칙에 있는 {date}와 {upload_date}와 {task_date}에 영향을 미칩니다.
    예: 2021-04-30T06:40:08',\n 'Для установки формата даты и времени можно использовать следующую нотацию. Это повлияет на {date} и {upload_date} и {task_date} в правилах именования.
    Для времени, например, 2021-04-30T06:40:08',\n ],\n _命名标记taskDate: [\n '本次任务抓取完成时的时间。例如:2020-10-21。',\n '本次工作擷取完成時的時間。例如:2020-10-21。',\n 'The time when the task was crawl completed. For example: 2020-10-21',\n 'この作業のクロールが完了した時刻です。 例:2020-10-21',\n '긁어오기 작업을 완료한 날짜입니다. 예: 2020-10-21',\n 'Время, когда задание было выполнено. Например: 2020-10-21',\n ],\n _自动检测: [\n '自动检测',\n '自動偵測',\n 'Auto',\n '自動検出',\n '자동',\n 'Авто детект',\n ],\n _公开: ['公开', '公開', 'Public', '公開', '공개', 'Публичный'],\n _不公开: ['不公开', '非公開', 'Private', '非公開', '비공개', 'Приватный'],\n _已收藏: [\n '已收藏',\n '已收藏',\n 'Bookmarked',\n 'ブックマークした',\n '북마크됨',\n 'В закладках',\n ],\n _已收藏带参数: [\n '已收藏 {}',\n '已收藏 {}',\n 'Bookmarked {}',\n 'ブックマークした {}',\n '북마크된 {}',\n 'В закладках {}',\n ],\n _未收藏: [\n '未收藏',\n '未收藏',\n 'Not bookmarked',\n 'ブックマークされていない',\n '북마크되지 않음',\n 'Не в закладках',\n ],\n _收藏作品: [\n '收藏作品',\n '收藏作品',\n 'Bookmark works',\n '作品をブックマークする',\n '북마크 작품',\n 'Закладки работают',\n ],\n _下载之后收藏作品: [\n '下载之后收藏作品',\n '下載之後收藏作品',\n 'Bookmark works after downloading',\n 'ダウンロードした作品をブックマークする',\n '다운로드 후 작품 북마크',\n 'Закладка работает после загрузки',\n ],\n _下载之后收藏作品的提示: [\n '下载文件之后,自动收藏这个作品。',\n '下載檔案之後,自動收藏這個作品。',\n 'After you download a file, the downloader will automatically bookmark the work.',\n 'ダウンロード後、作品は自動的にブックマークされます。',\n '파일을 다운로드하면, 자동으로 작품을 북마크합니다.',\n 'После загрузки файла загрузчик автоматически делает закладку',\n ],\n _收藏设置: [\n '下载器的收藏功能 (✩)',\n '下載器的收藏功能 (✩)',\n `Downloader's bookmark function (✩)`,\n 'ダウンローダーのブックマーク機能 (✩)',\n '다운로더의 북마크 기능 (☆)',\n `Функция сбора загрузчика (✩)`,\n ],\n _下载器的收藏按钮默认会添加作品的标签: [\n '点击 按钮时,下载器会收藏这个作品并且附带它的标签。',\n '點選 按鈕時,下載器會收藏這個作品並且附帶它的標籤。',\n 'When the button is clicked, the downloader bookmarks this work and attaches its tag.',\n ' ボタンをクリックすると、ダウンローダはこの作品をブックマークし、タグを付けます。',\n ' 버튼을 클릭하면 다운로더는 이 작품을 북마크하고 태그를 붙입니다.',\n 'При нажатии кнопки загрузчик добавляет эту работу в закладки и прикрепляет свой тег.',\n ],\n _添加tag: [\n '添加标签',\n '加入標籤',\n 'Add tag',\n 'タグを追加',\n '태그 추가',\n 'Добавить тег',\n ],\n _不添加tag: [\n '不添加标签',\n '不加入標籤',\n \"Don't add tag\",\n 'タグなし',\n '태그 추가하지 않기',\n 'Не добавлять тег',\n ],\n _用户阻止名单: [\n '用户阻止名单',\n '使用者阻止名單',\n 'User block list',\n 'ユーザーブロックリスト',\n '유저 차단 목록',\n 'Блок списка пользователей ',\n ],\n _用户阻止名单的说明: [\n '不下载这些用户的作品。需要输入用户 id。如果有多个用户 id,使用英文逗号,分割。',\n '不下載這些使用者的作品。需要輸入使用者 id。若有多個使用者 id,使用半形逗號(,)分隔。',\n 'The works of these users will not be downloaded. Need to type the user ID. If there are multiple user ID, use comma (,) separated.',\n 'これらのユーザーの作品はダウンロードしません。ユーザー ID が必要です。複数のユーザ ID は \",\" で区切ってください。',\n '이 유저들의 작품은 다운로드되지 않습니다. 유저 ID를 입력해야 합니다.
    여러 유저 ID가 있는 경우 쉼표(,)로 구분합니다.',\n 'Работы этих пользователей не будут загружаться. Необходимо ввести идентификатор пользователя. Если имеется несколько идентификаторов пользователя, используйте разделение запятыми (,).',\n ],\n _全部: ['全部', '全部', 'All', '全部', '전부', 'Все'],\n _任一: ['任一', '任一', 'One', '何れか', '하나만', 'Один'],\n _颜色主题: [\n '颜色主题',\n '色彩主題',\n 'Color theme',\n 'カラーテーマ',\n '테마
    ',\n 'Цветовая тема',\n ],\n _管理设置: [\n '管理设置',\n '管理設定',\n 'Manage settings',\n '設定の管理',\n '설정 관리',\n 'Изменение настроек',\n ],\n _导出设置: [\n '导出设置',\n '匯出設定',\n 'Export settings',\n 'エクスポート設定',\n '내보내기',\n 'Настройки экспорта',\n ],\n _导入设置: [\n '导入设置',\n '匯入設定',\n 'Import settings',\n 'インポート設定',\n '불러오기',\n 'Настройки импорта',\n ],\n _重置设置: [\n '重置设置',\n '重設設定',\n 'Reset settings',\n 'リセット設定',\n '설정 초기화',\n 'Сброс настроек',\n ],\n _日均收藏数量: [\n '日均收藏数量',\n '日均收藏數量',\n 'Average number of daily bookmarks',\n '1 日の平均ブックマーク数',\n '일일 평균 북마크 수',\n 'Среднее количество ежедневных закладок',\n ],\n _日均收藏数量的提示: [\n '你可以设置作品的平均每日收藏数量。满足条件的作品会被下载。',\n '您可以設定作品的平均每日收藏數量。滿足條件的作品會被下載。',\n 'You can set the average daily bookmarks number of works. Works that meet the conditions will be downloaded.',\n '作品の 1 日の平均ブックマーク数を設定することができます。条件を満した作品はダウンロードされます。',\n '작품의 일일 평균 북마크 수를 설정할 수 있습니다. 조건을 만족한 작품은 다운로드됩니다.',\n 'Вы можете установить среднесуточное количество закладок в работах. Работы, удовлетворяющие условиям, будут загружены.',\n ],\n _导出关注列表CSV: [\n '导出关注的用户列表(CSV)',\n '匯出關注的使用者列表(CSV)',\n 'Export Followed Users List (CSV)',\n 'フォローされているユーザーのリストをエクスポートする(CSV)',\n '팔로우한 사용자 목록 내보내기 (CSV)',\n 'Экспорт списка отслеживаемых пользователей (CSV)',\n ],\n _导出关注列表: [\n '导出关注的用户列表(JSON)',\n '匯出關注的使用者列表(JSON)',\n 'Export Followed Users List (JSON)',\n 'フォローされているユーザーのリストをエクスポートする(JSON)',\n '팔로우한 사용자 목록 내보내기 (JSON)',\n 'Экспорт списка отслеживаемых пользователей (JSON)',\n ],\n _批量关注用户: [\n '批量关注用户(JSON)',\n '批次關注使用者(JSON)',\n 'Follow users in batches (JSON)',\n 'ユーザーをバッチでフォローする(JSON)',\n '일괄적으로 사용자 팔로우 (JSON)',\n 'Подписывайтесь на пользователей пакетами (JSON)',\n ],\n _导入导出关注用户列表的说明: [\n '在你或其他用户的 Following 页面里,你可以导出关注的用户列表,也可以导入列表来批量关注用户。
    当你有多个帐户时,可以使用这个方法同步你关注的用户列表。你也可以复制其他用户的关注用户列表。',\n '在你或其他使用者的 Following 頁面裡,你可以匯出關注的使用者列表,也可以匯入列表來批次關注使用者。
    當你有多個帳戶時,可以使用這個方法同步你關注的使用者列表。你也可以複製其他使用者的關注使用者列表。',\n \"On the Following page of you or other users, you can export the list of followed users, or import the list to follow users in batches.
    When you have multiple accounts, you can use this method to synchronize the list of users you follow. You can also copy another user's followed user list.\",\n '自分または他のユーザーの [フォロー中] ページで、フォローしているユーザーのリストをエクスポートしたり、ユーザーをフォローするリストをバッチでインポートしたりできます。
    複数のアカウントをお持ちの場合、この方法を使用して、フォローしているユーザーのリストを同期できます。 別のユーザーのフォローしているユーザー リストをコピーすることもできます。',\n '본인 또는 다른 사용자의 팔로잉 페이지에서 팔로우한 사용자 목록을 내보내거나 목록을 가져와 사용자를 일괄적으로 팔로우할 수 있습니다.
    계정이 여러 개인 경우 이 방법을 사용하여 팔로우하는 사용자 목록을 동기화할 수 있습니다. 다른 사용자의 팔로우된 사용자 목록을 복사할 수도 있습니다.',\n 'На странице «Отслеживание» вас или других пользователей вы можете экспортировать список отслеживаемых пользователей или импортировать список для подписки на пользователей в пакетном режиме.
    Если у вас несколько учетных записей, вы можете использовать этот метод для синхронизации списка пользователей, на которых вы подписаны. Вы также можете скопировать список отслеживаемых пользователей другого пользователя.',\n ],\n _手动选择作品: [\n '手动选择作品',\n '手動選擇作品',\n 'Manually select',\n '手動で作品を選ぶ',\n '수동 선택',\n 'Ручной выбор',\n ],\n _快捷键ALTS手动选择作品: [\n '你可以使用快捷键 Alt + S 开始或暂停手动选择作品。
    选择完毕之后,打开下载器面板,点击“抓取选择的作品”。',\n '你可以使用快捷鍵 Alt + S 開始或暫停手動選擇作品。
    選擇完畢之後,開啟下載器面板,點選“抓取選擇的作品”。',\n 'You can use the shortcut keys Alt + S to start or pause manual selection of works.
    After selecting, open the downloader panel and click \"Crawl selected works\".',\n 'ショートカット キー Alt + S を使用して、作品の手動選択を開始または一時停止できます。
    選択後、ダウンローダパネルを開いて「選ばれた作品をクロール」をクリック。',\n '바로 가기 키 Alt + S를 사용하여 작품 수동 선택을 시작하거나 일시 중지할 수 있습니다.
    선택한 후 다운로더 패널을 열고 \"선택된 작품 긁어오기\"를 클릭합니다.',\n 'Вы можете использовать сочетания клавиш Alt + S, чтобы начать или приостановить ручной выбор произведений.
    После выбора откройте панель загрузчика и нажмите «Стащить выбранные работы».',\n ],\n _抓取选择的作品: [\n '抓取选择的作品',\n '擷取選擇的作品',\n 'Crawl selected works',\n '選ばれた作品をクロール',\n '선택된 작품 긁어오기',\n 'Стащить выбранные работы',\n ],\n _抓取选择的作品2: [\n '抓取选择的作品 {}',\n '擷取選擇的作品 {}',\n 'Crawl selected works {}',\n '選ばれた作品をクロール {}',\n '선택된 작품 긁어오기 {}',\n 'Стащить выбранные работы',\n ],\n _清空选择的作品: [\n '清空选择的作品',\n '清空選擇的作品',\n 'Clear selected works',\n '選んだ作品をクリアします',\n '선택된 작품 비우기',\n 'Очистить выбранные работы',\n ],\n _暂停选择: [\n '暂停选择',\n '暫停選擇',\n 'Pause select',\n '選択を一時停止',\n '선택 일시중지',\n 'Остановить выбора',\n ],\n _继续选择: [\n '继续选择',\n '繼續選擇',\n 'Continue select',\n '選択を続ける',\n '선택 이어하기',\n 'Продолжить выбор',\n ],\n _离开页面前提示选择的作品未抓取: [\n '选择的作品尚未抓取。现在离开此页面会导致你选择的作品被清空。',\n '選擇的作品尚未擷取。現在離開此頁面會導致您選擇的作品被清空。',\n 'The selected work has not been crawled. Leaving this page now will cause your selected work to be cleared.',\n '選ばれた作品はまだクロールしていません。今このページを離れると、選ばれた作品がクリアされます。',\n '선택된 작품을 아직 긁어오지 않았습니다. 지금 현재 페이지를 떠나면 선택된 작품이 비워집니다.',\n 'Выбранная работа не была стащена. Если вы покинете эту страницу, выбранная вами работа будет очищена.',\n ],\n _排除了所有作品类型: [\n '排除了所有作品类型',\n '排除了所有作品類型',\n 'Excluded all work types',\n 'すべての作品種類を除外しました',\n '모든 작품 유형 제외',\n 'Исключены все типы работ',\n ],\n _为作品建立单独的文件夹: [\n '为每个作品建立单独的文件夹',\n '為每個作品建立單獨的資料夾',\n 'Create a separate folder for each work',\n '作品ごとに別フォルダを作成',\n '작품마다 별도의 디렉토리 생성',\n 'Создайте отдельную папку для каждой работы',\n ],\n _为作品建立单独的文件夹说明: [\n '这里应该使用 {id_num} 代替 {id}',\n '這裡應該使用 {id_num} 代替 {id}',\n 'Here {id_num} should be used instead of {id}',\n 'ここでは、{id} の代わりに {id_num} を使用する必要があります',\n '여기서는 {id}대신 {id_num}을 사용해야 합니다',\n 'Здесь {id_num} следует использовать вместо {id}',\n ],\n _文件数量大于: [\n '文件数量 >',\n '檔案數量 >',\n 'Number of files >',\n 'ファイル数 >',\n '파일 수 >',\n 'Количество файлов >',\n ],\n _保存用户头像: [\n '保存用户头像',\n '儲存使用者頭貼',\n 'Save user avatar',\n 'ユーザーアイコンの保存',\n '유저 프로필 이미지 저장',\n 'Сохранить аватар пользователя',\n ],\n _保存用户封面: [\n '保存用户封面',\n '儲存使用者封面',\n 'Save user cover',\n 'ユーザーカバーの保存',\n '유저 커버 저장',\n 'Сохранить обложку пользователя',\n ],\n _待处理: [\n '待处理',\n '待處理',\n 'Pending',\n '処理待ち',\n '처리 대기',\n 'В ожидании',\n ],\n _超出最大页码: [\n '超出最大页码:',\n '超出最大頁碼:',\n 'Maximum page number exceeded:',\n '最大ページ数を超えました:',\n '최대 페이지 번호 초과:',\n 'Превышен максимальный номер страницы:',\n ],\n _针对特定用户屏蔽tag: [\n '针对特定用户屏蔽标签',\n '針對特定使用者排除標籤',\n 'Block tags for specific users',\n '特定のユーザーに対してタグをブロック',\n '특정 유저에 대한 차단 태그',\n 'Блокировать теги для определенных пользователей',\n ],\n _展开收起: [\n '展开/收起',\n '展開/摺疊',\n 'Expand/Collapse',\n '展開/折りたたみ',\n '확장/축소',\n 'Развернуть/Свернуть',\n ],\n _展开: ['展开', '展開', 'Expand', '展開', '확장', 'Развернуть'],\n _收起: ['收起', '摺疊', 'Collapse', '折りたたみ', '축소', 'Свернуть'],\n _把r18作品存入指定的文件夹里: [\n '把 R-18(G) 作品存入指定的文件夹里',\n '把 R-18(G) 作品存入指定的資料夾裡',\n 'Save the R-18(G) works in the designated folder',\n 'R-18(G) の作品を指定のフォルダに入れる',\n 'R-18(G) 작품을 지정된 디렉토리에 저장',\n 'Сохраните R-18(G) работы в указанной папке',\n ],\n _必填项不能为空: [\n '必填项不能为空',\n '必填項不能為空',\n 'Required fields cannot be empty',\n '必須フィールドが入力されていません',\n '필수 입력 항목은 비워둘 수 없습니다',\n 'Обязательные поля не могут быть пустыми',\n ],\n _用户ID必须是数字: [\n '用户 ID 必须是数字',\n '使用者 ID 必須是數字',\n 'User ID must be a number',\n 'ユーザー ID は数字です',\n '유저 ID는 숫자만 허용합니다',\n 'Идентификатор пользователя должен быть числом',\n ],\n _必须是数字: [\n '必须是数字',\n '必須是數字',\n 'Number',\n '数字でなければなりません',\n '숫자만 허용',\n 'Число',\n ],\n _tag用逗号分割: [\n '多个标签使用英文逗号,分割',\n '多個標籤使用半形逗號(,)分隔',\n 'Multiple tags use comma (,) split',\n '複数のタグはカンマ「,」で区切ってください',\n '여러 태그는 쉼표(,)로 구분합니다.',\n 'Для нескольких тегов используется разделение запятой (,)',\n ],\n _添加: ['添加', '新增', 'Add', '追加', '추가', 'Добавить'],\n _取消: ['取消', '取消', 'Cancel', 'キャンセル', '취소', 'Отмена'],\n _更新: ['更新', '更新', 'Update', '更新', '업데이트', 'Обновить'],\n _删除: ['删除', '刪除', 'Delete', '削除', '제거', 'Удалить'],\n _添加成功: [\n '添加成功',\n '新增成功',\n 'Added successfully',\n '追加されました',\n '성공적으로 추가되었습니다.',\n 'Добавлено успешно',\n ],\n _更新成功: [\n '更新成功',\n '更新成功',\n 'update completed',\n '更新成功',\n '업데이트에 성공하였습니다.',\n 'обновление завершено',\n ],\n _在作品缩略图上显示放大按钮: [\n '在作品缩略图上显示放大按钮',\n '在作品縮圖上顯示放大按鈕',\n 'Show zoom button on thumbnail',\n '作品のサムネイルに拡大ボタンを表示',\n '썸네일에 확대 버튼 표시',\n 'Показать кнопку увеличить на миниатюре',\n ],\n _在作品缩略图上显示下载按钮: [\n '在作品缩略图上显示下载按钮',\n '在作品縮圖上顯示下載按鈕',\n 'Show download button on thumbnail',\n '作品のサムネイルにダウンロードボタンを表示',\n '썸네일에 다운로드 버튼 표시',\n 'Показать кнопку загрузить на миниатюре',\n ],\n _已发送下载请求: [\n '已发送下载请求',\n '已傳送下載請求',\n 'Download request sent',\n 'ダウンロードリクエストを送信しました',\n '다운로드 요청 전송',\n 'Запрос на скачивание отправлен',\n ],\n _HowToUse: [\n '点击页面右侧的蓝色按钮可以打开下载器面板。

    下载的文件保存在浏览器的下载目录里。

    建议您在浏览器的下载设置中关闭“下载前询问每个文件的保存位置”。

    下载器默认开启了一些增强功能,这可能导致 Pixiv 页面样式改变。你可以在下载器的“更多”标签页中开启或关闭这些功能。',\n '點選頁面右側的藍色按鈕可以開啟下載器面板。

    下載的檔案儲存在瀏覽器的下載目錄裡。

    請不要在瀏覽器的下載選項裡選取「下載每個檔案前先詢問儲存位置」。

    下載器預設開啟了一些增強功能,這可能導致 Pixiv 頁面樣式改變。你可以在下載器的“更多”標籤頁中開啟或關閉這些功能。',\n 'Click the blue button on the right side of the page to open the downloader panel.

    The downloaded file is saved in the browser`s download directory.

    It is recommended to turn off \"Ask where to save each file before downloading\" in the browser`s download settings.

    The downloader has some enhancements turned on by default, which may cause changes in the style of Pixiv pages. You can turn these features on or off in the \"More\" tab of the downloader.',\n 'ページ右側の青いボタンをクリックすると、ダウンローダーパネルが開きます。

    ダウンロードしたファイルは、ブラウザのダウンロードディレクトリに保存されます。

    ブラウザのダウンロード設定で 「 ダウンロード前に各ファイルの保存場所を確認する 」 をオフにすることをお勧めします。

    ダウンローダーにはデフォルトでいくつかの機能拡張が有効になっており、これにより Pixiv ページのスタイルが変更される可能性があります。 これらの機能は、ダウンローダーの「その他」タブでオンまたはオフにできます。',\n '페이지 오른쪽에 있는 파란색 버튼을 클릭하면 다운로드 패널이 열립니다.

    다운로드한 파일은 브라우저의 다운로드 디렉토리에 저장됩니다.

    브라우저의 다운로드 설정에서 \"다운로드 전에 각 파일의 저장 위치 확인\"을 끄는 것이 좋습니다.

    다운로더에는 기본적으로 몇 가지 향상된 기능이 켜져 있으며 이로 인해 Pixiv 페이지 스타일이 변경될 수 있습니다. 다운로더의 \"더 보기\" 탭에서 이러한 기능을 켜거나 끌 수 있습니다.',\n 'Нажмите синюю кнопку в правой части страницы, чтобы открыть панель загрузчика.

    Загруженный файл сохраняется в каталоге загрузки браузера.

    Рекомендуется отключить \"Спрашивать, куда сохранять каждый файл перед загрузкой\" в настройках загрузки браузера.

    В загрузчике по умолчанию включены некоторые улучшения, которые могут привести к изменению стиля страниц Pixiv. Вы можете включить или отключить эти функции на вкладке «Дополнительно» загрузчика.',\n ],\n _我知道了: ['我知道了', '我知道了', 'OK', '分かりました', '확인', 'Ок'],\n _背景图片: [\n '背景图片',\n '背景圖片',\n 'Background image',\n '背景画像',\n '배경 이미지',\n 'Фоновое изображение',\n ],\n _选择文件: [\n '选择文件',\n '選擇檔案',\n 'Select a file',\n 'ファイルを選択',\n '파일 선택',\n 'Выберите файл',\n ],\n _不透明度: [\n '不透明度',\n '不透明度',\n 'Opacity',\n '不透明度',\n '투명도',\n 'Непрозрачность',\n ],\n _对齐方式: [\n '对齐方式',\n '對齊方式',\n 'Alignment',\n '揃え方式',\n '정렬',\n 'Выравнивание',\n ],\n _顶部: ['顶部', '頂部', 'top', '上揃え', '상단', 'топ'],\n _居中: ['居中', '居中', 'center', '中央揃え', '중앙', 'центр'],\n _根据作品类型自动建立文件夹: [\n '根据作品类型自动建立文件夹',\n '根據作品類型自動建立資料夾',\n 'Create folders based on the type of work',\n '作品種類に応じてフォルダを自動作成',\n '작품 유형에 따라 자동으로 디렉토리 생성',\n 'Создание папок на основе вида работы',\n ],\n _使用第一个匹配的tag建立文件夹: [\n '使用第一个匹配的标签建立文件夹',\n '使用第一個符合的標籤建立資料夾',\n 'Create a folder with the first matched tag',\n '最初の一致するタグにフォルダを作成',\n '첫 번째 일치하는 태그로 디렉토리 생성',\n 'Создать папку с первым совпавшим тегом',\n ],\n _使用匹配的tag建立文件夹的说明: [\n '如果作品的标签列表里含有用户设置的标签,就会使用这个标签建立文件夹(仅限第一个)',\n '如果作品的標籤列表裡含有使用者設定的標籤,就會使用這個標籤建立資料夾(僅限第一個)',\n 'If the tag list of the work contains a tag set by the user, this tag will be used to create a folder (only the first one)',\n '作品のタグリストにユーザーが設定したタグが含まれている場合、そのタグを使用してフォルダが作成されます。(最初の1つだけ)',\n '작품의 태그에 유저가 설정한 태그가 포함되어 있다면, 태그를 사용하여 디렉토리를 생성합니다. (첫 번째 태그만 해당)',\n 'Если в списке тегов работы есть тег, заданный пользователем, этот тег будет использован для создания папки (только первой)',\n ],\n _全年龄: [\n '全年龄',\n '全年齡',\n 'All ages',\n '全年齢',\n '전체 연령',\n 'Все возраста',\n ],\n _没有符合条件的结果: [\n '没有符合条件的结果',\n '沒有符合條件的結果',\n 'There are no eligible results',\n '対象となる結果はありません',\n '조건에 부합하는 결과가 없습니다',\n 'Нет результатов, отвечающих требованиям',\n ],\n _收藏: ['收藏', '收藏', 'Bookmark', 'ブックマーク', '북마크', 'Закладка'],\n _已加入收藏: [\n '已加入收藏',\n '已加入收藏',\n 'Bookmarked',\n 'ブックマークした',\n '북마크됨',\n 'В закладках',\n ],\n _全屏查看: [\n '全屏',\n '全螢幕',\n 'Full screen view',\n '全画面表示',\n '전체 화면 보기',\n 'Просмотр на весь экран',\n ],\n _抓取id区间: [\n '抓取 ID 区间',\n '擷取 ID 區間',\n 'Crawl ID range',\n 'ID 範囲をクロール',\n 'ID 범위 긁어오기',\n 'Стащить диапазон идентификаторов',\n ],\n _抓取id区间说明: [\n '你可以设置一个作品 ID 范围,抓取此范围内的所有作品(包含开始和结束的 id)。
    注意:如果一次任务中产生的抓取结果数量太多,可能会导致页面崩溃。
    如果你需要抓取很多 ID,请考虑拆分成多个任务。我建议每批抓取的 ID 数量不要超过 100,000 个。',\n '你可以設定一個作品 ID 範圍,擷取此範圍內的所有作品(包含開始和結束的 id)。
    注意:如果一次任務中產生的擷取結果數量太多,可能會導致頁面崩潰。
    如果你需要抓取很多 ID,請考慮拆分成多個任務。我建議每批抓取的 ID 數量不要超過 100,000 個。',\n 'You can set a range of work ID and grab all works in this range (including the begin and end ID).
    Note: If the number of crawling results in a task is too much, it may cause the page to crash.
    If you need to crawl a lot of IDs, consider splitting it into multiple tasks. I recommend crawling no more than 100,000 IDs per batch.',\n '作品 ID の範囲を設定し、その範囲内のすべての作品をクロールすることができます。「開始 ID と終了 id を含む」
    注意:1 つのタスクであまりにも多くのクロール結果を生成すると、ページがクラッシュする可能性があります。
    多数の ID をクロールする必要がある場合は、複数のタスクに分割することを検討してください。 バッチごとにクロールする ID は 100,000 未満にすることをお勧めします。',\n '작품 ID 범위를 설정할 수 있습니다. 이 범위 내의 모든 작품 (시작과 끝 ID 포함).
    참고: 작업의 긁어오기 결과가 너무 많으면 페이지가 충돌할 수 있습니다.
    많은 ID를 크롤링해야 하는 경우 이를 여러 작업으로 분할하는 것이 좋습니다. 배치당 100,000개 이하의 ID를 크롤링하는 것이 좋습니다.',\n 'Вы можете задать диапазон идентификаторов работ и захватить все работы в этом диапазоне (включая идентификаторы начала и конца).
    Примечание: Если в задании слишком большое количество результатов стаскивания, это может привести к сбою страницы.
    Если вам нужно сканировать большое количество идентификаторов, рассмотрите возможность разделения этого процесса на несколько задач. Я рекомендую сканировать не более 100 000 идентификаторов за пакет.',\n ],\n _抓取id区间起点: [\n '请输入开始的 ID: ',\n '請輸入開始的 ID: ',\n 'Please type in the beginning ID: ',\n '開始 ID を入力してください: ',\n '시작 ID를 입력해주세요: ',\n 'Пожалуйста, введите начальный идентификатор: ',\n ],\n _抓取id区间终点: [\n '请输入结束的 ID: ',\n '請輸入結束的 ID: ',\n 'Please type in the ending ID: ',\n '終了 ID を入力してください: ',\n '끝 ID를 입력해주세요: ',\n 'Пожалуйста, введите конечный идентификатор: ',\n ],\n _选项卡切换方式: [\n '选项卡切换方式',\n '頁籤切換方式',\n 'How to switch tabs',\n 'タブ切り替え方式',\n ' 전환 방식',\n 'Как переключать вкладки',\n ],\n _鼠标经过: [\n '鼠标经过',\n '滑鼠經過',\n 'Mouse over',\n 'マウスオーバー',\n '마우스 올리기',\n 'Наведите мышь',\n ],\n _鼠标点击: [\n '鼠标点击',\n '滑鼠點選',\n 'Mouse click',\n 'マウスクリック',\n '마우스 클릭',\n 'Кликнуть мышкой',\n ],\n _在序号前面填充0: [\n '在序号前面填充 0',\n '在序號前面填充 0',\n 'Add 0 in front of the serial number',\n 'シリアル番号の前に 0 を記入',\n '일련번호 앞 0 채우기',\n 'Добавьте 0 перед серийным номером',\n ],\n _在序号前面填充0的说明: [\n '这可以解决一些软件不能正确的按照文件名来排序文件的问题。',\n '這可以解決一些軟體不能正確的按照檔名來排序檔案的問題。',\n 'This can solve the problem that some software cannot correctly sort files by file name.',\n 'これにより、一部のソフトウェアがファイルをファイル名で正しくソートできないという問題を解決できます。',\n '이것은 일부 소프트웨어가 파일 이름별로 파일을 올바르게 정렬할 수 없는 문제를 해결할 수 있습니다.',\n 'Это может решить проблему того, что некоторые программы не могут правильно сортировать файлы по имени файла.',\n ],\n _序号总长度: [\n '序号总长度',\n '序號總長度',\n 'Total length of serial number',\n 'シリアル番号の全長',\n '일련번호 전체 길이',\n 'Общая длина серийного номера',\n ],\n _完全一致: [\n '完全一致',\n '完全一致',\n 'Perfect match',\n '完全一致',\n '완전 일치',\n 'Идеальное совпадение',\n ],\n _部分一致: [\n '部分一致',\n '部分一致',\n 'Partial match',\n '部分一致',\n '부분 일치',\n 'Частичное совпадение',\n ],\n _位置: ['位置', '位置', 'Position', '位置', '위치', 'Позиция'],\n _左: ['左', '左', 'Left', '左', '왼쪽', 'Слева'],\n _右: ['右', '右', 'Right', '右', '오른쪽', 'Справа'],\n _多图作品只下载前几张图片: [\n '多图作品只下载前几张图片',\n '多圖作品只下載前幾張圖片',\n 'Multi-image works only download the first few images',\n 'マルチ作品は最初の何枚の画像のみをダウンロードする',\n '여러 이미지 작품은 처음 몇 개의 이미지만 다운로드합니까',\n 'При работе с несколькими изображениями загружаются только первые несколько изображений',\n ],\n _多图作品的图片数量上限: [\n '多图作品的图片数量上限',\n '多圖作品的圖片數量上限',\n 'Maximum number of images for multi-image works',\n 'マルチ作品の最大画像数',\n '여러 이미지 작품의 최대 수',\n 'Максимальное количество изображений для работ с несколькими изображениями',\n ],\n _超出此限制的多图作品不会被下载: [\n '超出此限制的多图作品不会被下载',\n '不會下載超出此限制的多圖作品',\n 'Multi-image works exceeding this limit will not be downloaded',\n 'この制限を超えたマルチ作品はダウンロードされません',\n '이 제한을 초과하는 여러 이미지 작품은 다운로드되지 않습니다.',\n 'Работы с несколькими изображениями, превышающие этот лимит, не будут загружены',\n ],\n _在搜索页面添加快捷搜索区域: [\n '在搜索页面添加快捷搜索区域',\n '在搜尋頁面新增快速搜尋區域',\n 'Add a quick search area on the search page',\n '検索ページにクイック検索領域を追加します',\n '검색 페이지에 빠른 검색 영역 추가',\n 'Добавить область быстрого поиска на странице поиска',\n ],\n _保存作品的元数据: [\n '保存作品的元数据',\n '儲存作品的元資料',\n 'Save the metadata of the work',\n '作品のメタデータを保存する',\n '작품 메타데이터 저장',\n 'Сохранить метаданные работы',\n ],\n _保存作品的元数据说明: [\n '为每个作品建立一个 txt 文件保存它的元数据',\n '為每個作品建立一個 txt 檔案儲存它的元資料',\n 'Create a txt file for each work to save its metadata',\n '作品ごとに txt ファイルを作成して、メタデータを保存します',\n '각 작품에 대한 메타데이터를 저장하는 txt 파일 생성',\n 'Создайте txt-файл для каждой работы, чтобы сохранить ее метаданные',\n ],\n _在不同的页面类型中使用不同的命名规则: [\n '在不同的页面类型中使用不同的命名规则',\n '在不同的頁面類型中使用不同的命名規則',\n 'Use different naming rules in different page types',\n 'ページの種類によって異なる命名規則を使用',\n '페이지 유형에 따라 다른 명명 규칙 사용',\n 'Использовать различные правила именования в разных типах страниц',\n ],\n _显示高级设置: [\n '显示高级设置',\n '顯示進階設定',\n 'Show advanced settings',\n '詳細設定を表示する',\n '고급 설정 보기',\n 'Показать расширенные настройки',\n ],\n _显示高级设置说明: [\n '被隐藏的设置仍然会发挥作用',\n '被隱藏的設定仍然會發揮作用',\n 'Hidden settings will still work',\n '隠していた設定がそのまま機能する',\n '숨겨진 설정은 계속 작동합니다.',\n 'Скрытые настройки будут работать',\n ],\n _状态码为0的错误提示: [\n '下载时发生错误,状态码为 0,请求未成功。可能的原因:

    1. 系统磁盘的剩余空间可能不足(通常是 C 盘)(建议剩余空间大于 4GB)。请尝试清理系统磁盘空间,然后重新启动浏览器,继续未完成的下载。

    2. 网络错误。可能是网络代理导致的问题。如果你使用 Nginx 或者 Apache 反代理访问 pixiv,请换成梯子。

    3. 可以尝试重启浏览器,或者禁用此扩展然后重新启用,并刷新这个标签页。',\n '下載時發生錯誤,狀態碼為 0,請求未成功。可能的原因:

    1. 系統磁碟的剩餘空間可能不足(通常是 C 盤)(建議剩餘空間大於 4GB)。請嘗試清理系統磁碟空間,然後重新啟動瀏覽器,繼續未完成的下載。

    2. 網路錯誤。可能是網路代理導致的問題。

    3. 可以嘗試重啟瀏覽器,或者禁用此擴充套件然後重新啟用,並重新整理這個標籤頁。',\n 'An error occurred while downloading, the status code is 0, and the request was unsuccessful. Possible reasons:

    1. The remaining space of the system disk may be insufficient (usually C drive)(it is recommended that the remaining space be greater than 4GB). Please try to clear the system disk space, and then restart the browser to continue the unfinished download.

    2. Network error. It may be a problem caused by a network proxy.

    3. You can try to restart the browser, or disable and re-enable the extension, and refresh the tab.',\n 'ダウンロード中にエラーが発生し、ステータスコードは0で、リクエストは失敗しました。 考えられる理由:

    1。 システムディスクの残りのスペースが不足している可能性があります(通常はCドライブ)(残りのスペースは4GBを超えることをお勧めします)。 システムのディスク領域をクリアしてから、ブラウザを再起動して、未完了のダウンロードを続行してください。

    2。 ネットワークエラー。 ネットワークプロキシが原因の問題である可能性があります。

    3. ブラウザを再起動するか、拡張機能を無効にしてから再度有効にして、タブを更新してみてください。',\n '다운로드 중 오류가 발생했으며, 상태 코드가 0이고 요청에 실패했습니다. 가능한 원인:

    1. 시스템 디스크의 남은 공간이 부족할 수 있습니다(보통 C드라이브)(남은 공간은 4GB보다 큰 것이 좋습니다). 시스템 디스크 공간을 비운 다음 브라우저를 다시 시작하여 완료되지 않은 다운로드를 계속해주세요.

    2. 네트워크 오류. 네트워크 프록시로 인한 문제일 수 있습니다.

    3. 브라우저를 다시 시작하거나 확장 프로그램을 비활성화했다가 다시 활성화하고 탭을 새로 고칠 수 있습니다.',\n 'Во время загрузки произошла ошибка, код состояния равен 0, и запрос был выполнен неудачно. Возможные причины:

    1. Оставшегося места на системном диске может быть недостаточно (обычно это диск C) (рекомендуется, чтобы оставшееся место было больше 4 ГБ). Пожалуйста, попробуйте освободить место на системном диске, а затем перезапустите браузер, чтобы продолжить незаконченную загрузку.

    2. Ошибка сети. Это может быть проблема, вызванная сетевым прокси-сервером.

    3. Вы можете попробовать перезапустить браузер или отключить и снова включить расширение и обновить вкладку.',\n ],\n _下载完成后显示通知: [\n '下载完成后显示通知',\n '下載完成後顯示通知',\n 'Show notification after download is complete',\n 'ダウンロードが完了した後に通知を表示する',\n '다운로드가 완료되면 알림 표시',\n 'Показать уведомление после завершения загрузки',\n ],\n _高亮显示关键字: [\n '高亮显示关键字',\n '標明顯示關鍵字',\n 'Highlight keywords',\n 'キーワードを強調表示',\n '강조 키워드 표시',\n 'Выделить ключевые слова',\n ],\n _抓取标签列表: [\n '抓取标签列表',\n '擷取標籤列表',\n 'Crawl a list of tags',\n 'タグのリストをクロール',\n '태그 긁어오기',\n 'Сканировать список тегов',\n ],\n _抓取标签列表的输入框提示: [\n '请输入你要抓取的标签列表。多个标签之间使用换行分割',\n '請輸入你要擷取的標籤列表。多個標籤之間使用換行分隔',\n 'Please type the list of tags you want to crawl. Use line breaks between multiple tags',\n 'クロールしたいタグのリストを入力してください。 複数のタグを改行で分割',\n '긁어올 태그를 입력해주세요. 여러 태그는 줄 바꿈 사용',\n 'Пожалуйста, введите список тегов, которые вы хотите просмотреть. Используйте разрывы строк между несколькими тегами',\n ],\n _抓取标签列表的文件夹提示: [\n '在抓取标签列表时,你可以使用 {page_tag} 或者 {page_title} 标记获取当前抓取的标签,并用来建立文件夹。例如:{page_tag}/{id}',\n '在擷取標籤列表時,你可以使用 {page_tag} 或者 {page_title} 標記獲取目前擷取的標籤,並用來建立資料夾。例如:{page_tag}/{id}',\n 'When crawling the tag list, you can use {page_tag} or {page_title} tags to get the tags currently crawled and use them to create folders. For example: {page_tag}/{id}',\n 'タグリストをクロールする時に、 {page_tag} や {page_title}を使用すると、現在クロールされているタグを取得し、それらを使ってフォルダを作成することができます。例:{page_tag}/{id}',\n '태그를 긁어올 때 {page_tag} 또는 {page_title} 태그를 사용하여, 긁어온 태그로 디렉토리를 생성할 수 있습니다. 예: {page_tag}/{id}',\n 'При сканировании списка тегов вы можете использовать теги {page_tag} или {page_title}, чтобы получить теги, которые в данный момент просматриваются, и использовать их для создания папок. Например: {page_tag}/{id}',\n ],\n _停止抓取标签列表: [\n '停止抓取标签列表',\n '停止擷取標籤列表',\n 'Stop crawling the list of tags',\n 'タグリストのクロールを停止',\n '태그 긁어오기 정지',\n 'Прекратить сканирование списка тегов',\n ],\n _等待下载的标签: [\n '等待下载的标签',\n '等待下載的標籤',\n 'Tags waiting to be downloaded',\n 'ダウンロード待ちのタグ',\n '다운로드 대기 중인 태그',\n 'Теги, ожидающие загрузки',\n ],\n _你确定要停止抓取吗: [\n '你确定要停止抓取吗?',\n '確定要停止擷取嗎?',\n 'Are you sure you want to stop crawling?',\n '本当にクロールをやめたいのか',\n '긁어오기를 중지하시겠습니까?',\n 'Ты уверен, что хочешь перестать сканировать?',\n ],\n _只能在搜索页面使用: [\n '只能在搜索页面使用',\n '只能在搜尋頁面使用',\n 'Can only be used on the search page',\n '検索ページでのみ使用できます',\n '검색 페이지에서만 사용 가능',\n 'Можно использовать только на странице поиска',\n ],\n _自动导出抓取结果: [\n '自动导出抓取结果',\n '自動匯出擷取結果',\n 'Automatically export crawl results',\n 'クロール結果の自動エクスポート',\n '자동으로 긁어오기 결과 내보내기',\n 'Автоматически экспортировать результаты сканирования',\n ],\n _抓取结果: [\n '抓取结果',\n '擷取結果',\n 'Crawl results',\n 'クロール結果',\n '긁어오기 결과',\n 'Сканировать результаты',\n ],\n _文件格式: [\n '文件格式',\n '檔案格式',\n 'File format',\n 'ファイル形式',\n '파일 형식',\n 'Формат файла',\n ],\n _格式: ['格式', '格式', 'Format', '形式', '형식', 'Формат'],\n _预览作品: [\n '预览作品',\n '預覽作品',\n 'Preview works',\n '作品のプレビュー',\n '작품 미리보기',\n 'Превью работает',\n ],\n _点击鼠标左键可以关闭预览图: [\n '点击鼠标左键可以关闭预览图',\n '點選滑鼠左鍵可以關閉預覽圖',\n 'Click the left mouse button to close the preview',\n 'マウスの左クリックでプレビュー画像を閉じる',\n '마우스 왼쪽 버튼을 클릭하면 미리보기를 닫습니다',\n 'Нажмите левую кнопку мыши, чтобы закрыть предварительный просмотр',\n ],\n _尺寸: ['尺寸', '尺寸', 'Size', 'サイズ', '크기', 'Размер'],\n _允许鼠标停留在预览图上: [\n '允许鼠标停留在预览图上',\n '允許滑鼠停留在預覽圖上',\n 'Allow the mouse to stay on the preview image',\n 'プレビュー画像の上にマウスを置くことができます',\n '마우스가 미리보기 이미지 위에서 유지되도록 허용',\n 'Разрешить мыши оставаться на изображении предварительного просмотра',\n ],\n _点击预览图时下载作品: [\n '点击预览图时下载作品',\n '點選預覽圖時下載作品',\n 'Download the work when you click on the preview',\n 'プレビュー画像をクリックするとその作品がダウンロードされます',\n '미리보기 이미지를 클릭하면 작품 다운로드',\n 'Загружать работу при нажатии на предварительный просмотр',\n ],\n _转换动图时页面被隐藏的提示: [\n '这个标签页正在转换动图。如果这个标签页被隐藏了,转换速度可能会变慢。',\n '這個標籤頁正在轉換動圖。如果這個標籤頁被隱藏了,轉換速度可能會變慢。',\n 'This tab page is converting ugoira. If this tab page is hidden, the conversion speed may slow down.',\n 'このタブページはうごイラを変換しています。 このタブを非表示にすると、変換速度が低下する場合があります。',\n '이 탭은 움직이는 일러스트를 변환하는 중입니다.이 탭이 숨겨지면 변환 속도가 느려질 수 있습니다.',\n 'Эта страница вкладки преобразует ugoira. Если эта страница вкладки скрыта, скорость конвертации может замедлиться.',\n ],\n _原始尺寸: [\n '原始尺寸',\n '原始尺寸',\n 'Original size',\n 'オリジナルサイズ',\n '원본 크기',\n 'Оригинальный размер',\n ],\n _增强: ['增强', '增強', 'Enhance', '強化機能', '향상', 'Улучшение'],\n _长按右键显示大图: [\n '在缩略图上长按鼠标右键时显示大图',\n '在縮圖上長按滑鼠右鍵時顯示大圖',\n 'Long press the right mouse button on the thumbnail to display the large image',\n 'サムネイルでマウスの右ボタンを長押しすると、大きな画像が表示されます。',\n '썸네일을 마우스 오른쪽 버튼으로 클릭했을 때 큰 이미지 표시',\n 'Длительное нажатие правой кнопки мыши на миниатюре для отображения большого изображения',\n ],\n _鼠标滚轮切换图片: [\n '预览多图作品时,可以使用鼠标滚轮切换图片。',\n '預覽多圖作品時,可以使用滑鼠滾輪切換圖片。',\n 'When previewing multi-image works, you can use the mouse wheel to switch images.',\n '複数画像をプレビューする際に、マウスホイールを使って画像を切り替えることができます。',\n '여러 이미지 작품을 미리 볼 때, 마우스 휠을 사용하여 이미지를 전환할 수 있습니다.',\n 'При предварительном просмотре работ с несколькими изображениями можно использовать колесико мыши для переключения изображений',\n ],\n _whatisnew: [\n `修复因为 Pixiv 的变化而导致的抓取失败的问题。`,\n `修復因為 Pixiv 的變化而導致的抓取失敗的問題。`,\n `Fixed crawl failures due to Pixiv changes.`,\n `Pixiv の変更によるクロールの失敗を修正しました。`,\n `Pixiv 변경으로 인한 크롤링 실패를 수정했습니다.`,\n 'Исправлены сбои в сканировании из-за изменений в Pixiv',\n ],\n _等待时间: [\n '等待时间',\n '等待時間',\n 'Waiting time',\n '待ち時間',\n '대기 시간',\n 'Время ожидания',\n ],\n _格式错误: [\n '格式错误',\n '格式錯誤',\n 'Format error',\n 'フォーマットエラー',\n '형식 오류',\n 'Ошибка форматантирования',\n ],\n _下载数量错误: [\n '下载的页数(作品)数量设置错误',\n '下載的頁數(作品)數量設定錯誤',\n 'The number of downloaded pages (works) is set incorrectly',\n '下载页数(作品)设置不正确',\n '다운로드할 페이지 수(작품) 설정 오류',\n 'Количество загруженных страниц (работ) установлено неверно',\n ],\n _默认下载多页: [\n '开始抓取, 如有多页,默认会下载全部。',\n '開始擷取,如有多頁,預設會下載全部。',\n 'Start crawl, if there are multiple pages, the default will be downloaded.',\n 'クロールを開始する、複数のページがある場合、デフォルトですべてをダウンロードされます。',\n '긁어오기를 시작합니다. 여러 페이지가 있으면 기본적으로 모두 다운로드됩니다.',\n 'Начать сканирование, если есть несколько страниц, все будут загружены по умолчанию.',\n ],\n _赞助我: [\n '赞助我',\n '贊助我',\n 'Sponsor me',\n '支援する',\n '후원하기',\n 'Поддержать меня',\n ],\n _赞助方式提示: [\n `非常感谢您的支持!
    \n 您可以在 Patreon 上赞助我:
    \n https://www.patreon.com/xuejianxianzun
    \n 中国大陆用户可以在“爱发电”上赞助我:
    \n https://afdian.net/@xuejianxianzun
    \n 也可以扫描二维码:
    \n 在 Github 上查看二维码 或者加入 QQ 群 499873152,在群文件里查看二维码。\n `,\n `非常感謝您的支持!
    \n 您可以在 Patreon 上贊助我:
    \n https://www.patreon.com/xuejianxianzun
    \n 中國大陸使用者可以在“愛發電”上贊助我:
    \n https://afdian.net/@xuejianxianzun
    \n 也可以掃描行動條碼(QR Code):
    \n 在 Github 上檢視行動條碼。\n `,\n `Thank you very much for your support!
    \n You can sponsor me on Patreon:
    \n https://www.patreon.com/xuejianxianzun\n `,\n `ご支援してくださった皆様、本当にありがとうございました。
    \n ご支援してくださった方は、以下の Patreon で:
    \n https://www.patreon.com/xuejianxianzun \n `,\n `지원해주셔서 정말 감사합니다!
    \n Patreon에서 저를 후원해주세요
    \n https://www.patreon.com/xuejianxianzun\n `,\n `Большое вам спасибо за вашу поддержку!
    \n Вы можете спонсировать меня на Patreon:
    \n https://www.patreon.com/xuejianxianzun\n `,\n ],\n _替换方形缩略图以显示图片比例: [\n '替换方形缩略图以显示图片比例',\n '替換方形縮圖以顯示圖片比例',\n 'Replace square thumbnails to show image ratio',\n '正方形のサムネイルを置き換えて、画像のスケールを表示。',\n '이미지 종횡비를 표시하기 위해 정사각형 썸네일 교체',\n 'Замените квадратные миниатюры, чтобы показать соотношение сторон изображения',\n ],\n _只有一个抓取结果时不建立文件夹: [\n '只有一个抓取结果时不建立文件夹',\n '只有一個擷取結果時不建立資料夾',\n 'Do not create a folder when there is only one crawl result',\n 'クロール結果が1つのみの場合、フォルダを作成しない',\n '긁어오기 결과가 하나일 때 디렉토리 생성하지 않기',\n 'Когда есть только один результат сканирования, никакая папка не создается',\n ],\n _搜索页面页数限制: [\n '由于 pixiv 的限制,下载器最多只能抓取到第 {} 页。',\n '由於 pixiv 的限制,下載器最多只能擷取到第 {} 頁。',\n 'Due to the limitation of pixiv, the downloader can only crawl up to the {}th page.',\n 'pixiv の制限により、ダウンローダーは {} ページ目までしかクロールできません。',\n 'pixiv 제한으로 인해 최대 {} 페이지까지만 다운로드 받을 수 있습니다.',\n 'Из-за ограничений pixiv загрузчик может сканировать только до {}-й страницы',\n ],\n _获取图片的宽高时出现错误: [\n '获取图片的宽高时出现错误:',\n '獲取圖片的寬高時出現錯誤:',\n 'An error occurred while getting the width and height of the image:',\n '画像の幅と高さの取得中にエラーが発生しました:',\n '이미지의 너비를 가져오는 도중 오류가 발생했습니다:',\n 'Произошла ошибка при получении ширины и высоты изображения:',\n ],\n _上限: ['上限', '上限', 'Upper limit', '上限', '상한', 'Верхний предел'],\n _预览搜索结果的数量达到上限的提示: [\n '预览搜索结果的数量已经达到上限,剩余的结果不会显示。',\n '預覽搜尋結果的數量已經達到上限,剩餘的結果不會顯示。',\n 'The number of preview search results has reached the upper limit, and the remaining results will not be displayed.',\n 'プレビュー検索結果の数が上限に達し、残りの結果は表示されません。',\n '미리보기 검색 결과 수가 상한에 도달하여, 남은 결과는 표시되지 않습니다.',\n 'Количество результатов предварительного поиска достигло верхнего предела, и оставшиеся результаты не будут отображаться.',\n ],\n _新增命名标记: [\n '新增命名标记',\n '新增命名標記',\n 'Add named tag',\n '名前付きタグを追加',\n '명명된 태그 추가',\n 'Добавить именованный тег',\n ],\n _自定义用户名: [\n '自定义用户名',\n '自訂使用者名稱',\n 'Customize username',\n 'カスタムユーザー名',\n '사용자 정의 유저명',\n 'Настроить имя пользователя',\n ],\n _自定义用户名的说明: [\n `有些用户可能会改名,如果你想使用他原来的名字,你可以在这里手动设置他的名字。
    \n 你也可以为用户设置别名。
    \n 当你在命名规则中使用 {user} 标记时,下载器会优先使用你设置的名字。`,\n `有些使用者可能會改名,如果你想使用他原來的名字,你可以在這裡手動設定他的名字。
    \n 你也可以為使用者設定別名。
    \n 當你在命名規則中使用 {user} 標記時,下載器會優先使用你設定的名字。`,\n `Some users may change their name. If you want to use his original name, you can manually set his name here.
    \n You can also set aliases for users.
    \n When you use the {user} tag in the naming rule, the downloader will give priority to the name you set.`,\n `ユーザーによっては名前を変更する場合があります。元の名前を使いたい場合は、ここで名前を手動で設定することができます。
    \n また、ユーザーの別名を設定することも可能です。
    \n 命名規則で {user} タグを使用すると、ダウンローダーは設定された名前を優先的に使用します。`,\n `일부 유저는 이름을 바꿀 수 있습니다. 만약 당신이 그의 원래 이름을 사용하고 싶다면, 당신은 여기에서 그의 이름을 수동으로 설정할 수 있습니다.
    \n 사용자의 별칭을 설정할 수도 있습니다.
    \n 명명 규칙에 {user} 태그를 사용할 때 다운로드더가 사용자 정의 유저명을 우선시합니다.`,\n `Некоторые пользователи могут изменить свое имя. Если вы хотите использовать его оригинальное имя, вы можете вручную задать его имя здесь.
    \n Вы также можете задать псевдонимы для пользователей.
    \n Когда вы используете тег {user} в правиле именования, загрузчик будет отдавать приоритет имени, которое вы задали.`,\n ],\n _移除用户名中的at和后续字符: [\n '移除用户名中的 @ 和后续字符',\n '移除使用者名稱中的 @ 和後續字元',\n 'Remove @ and subsequent characters in username',\n 'ユーザー名から @ 以降の文字を削除する',\n '유저명에서 @와 후속 문자 제거',\n 'Удалить @ и последующие символы в имени пользователя',\n ],\n _移除用户名中的at和后续字符的说明: [\n '例如:Anmi@画集発売中 → Anmi',\n '例如:Anmi@画集発売中 → Anmi',\n 'For example:Anmi@画集発売中 → Anmi',\n '例:Anmi@画集発売中 → Anmi',\n '예: Anmi@画集発売中 → Anmi',\n 'Например: Anmi@画集発売中 → Anmi',\n ],\n _抓取被限制时返回空结果的提示: [\n 'Pixiv 返回了空数据。下载器已暂停抓取,并且会在等待几分钟后继续抓取。(429)
    这说明您的账号被 Pixiv 限制访问了,等待几分钟即可恢复正常。
    您可以启用“减慢抓取速度”功能来减少 429 问题出现的概率。',\n 'Pixiv 返回了空資料。下載器已暫停抓取,並且會在等待幾分鐘後繼續抓取。(429)
    這說明您的賬號被 Pixiv 限制訪問了,等待幾分鐘即可恢復正常。
    您可以啟用“減慢抓取速度”功能來減少 429 問題出現的機率。',\n 'Pixiv returned empty data. The downloader has paused crawling and will resume crawling after a few minutes. (429)
    This means that your account has been restricted by Pixiv, please wait for a few minutes for it to return to normal.
    You can reduce the chances of 429 issues by enabling the \"Slow down crawl\" feature.',\n 'Pixivが空のデータを返しました。 ダウンローダーはクロールを一時停止し、数分後にクロールを再開します。(429)
    これは、あなたのアカウントが Pixiv によって制限されていることを意味します。通常の状態に戻るまで数分お待ちください。
    \"クロールを遅くする\" 機能を有効にすると、429 の問題が発生する可能性を減らすことができます。',\n 'Pixiv가 빈 데이터를 반환했습니다. 다운로더가 긁어오기를 일시 중지하고 몇 분 동안 기다린 후 긁어오기를 계속합니다. (429)
    이것은 귀하의 계정이 Pixiv에 의해 제한되었음을 의미합니다. 정상으로 돌아갈 때까지 몇 분 정도 기다리십시오.
    \"천천히 크롤링\" 기능을 활성화하면 429 문제 발생 가능성을 줄일 수 있습니다.',\n 'Pixiv вернул пустые данные. Загрузчик приостановил загрузку и возобновит ее через несколько минут. (429)
    Это означает, что ваша учетная запись была ограничена Pixiv, подождите несколько минут, пока она вернется в нормальное состояние.
    Вы можете снизить вероятность возникновения ошибок 429, включив функцию «Замедлить сканирование».',\n ],\n _搜索模式: [\n '搜索模式',\n '搜尋模式',\n 'Search mode',\n '検索モード',\n '검색 모드',\n 'Режим поиска',\n ],\n _标签部分一致: [\n '标签(部分一致)',\n '標籤(部分一致)',\n 'Tags (partial match)',\n 'タグ(部分一致)',\n '태그 (부분 일치)',\n 'Теги (частичное совпадение)',\n ],\n _标签完全一致: [\n '标签(完全一致)',\n '標籤(完全一致)',\n 'Tags (perfect match)',\n 'タグ(完全一致)',\n '태그 (완전 일치)',\n 'Теги (идеальное совпадение)',\n ],\n _标题说明文字: [\n '标题、说明文字',\n '標題、說明文字',\n 'Title, Caption',\n 'タイトル・キャプション',\n '제목, 설명',\n 'Название, Подпись',\n ],\n _正文: ['正文', '本文', 'Text', '本文', '본문', 'Текст'],\n _标签标题说明文字: [\n '标签、标题、说明文字',\n '標籤、標題、說明文字',\n 'Tags, Titles, Captions',\n 'タグ・タイトル・キャプション',\n '태그, 제목, 설명',\n 'Теги, Заголовки, Подписи',\n ],\n _save_file_failed_tip: [\n `{} 保存失败,code:{}。下载器将会重试下载这个文件。`,\n `{} 儲存失敗,code:{}。下載器將會重試下載這個檔案。`,\n `{} save failed, code: {}. The downloader will retry to download the file.`,\n `{} 保存に失敗しました。code:{}。ダウンローダーはファイルのダウンロードを再試行します。`,\n `{} 저장에 실패했습니다. 코드: {}. 다운로드더가 파일 다운로드를 다시 시도합니다.`,\n `{} сохранение не удалось, код: {}. Загрузчик повторит попытку загрузить файл.`,\n ],\n _user_canceled_tip: [\n `{} 未保存,code:{}。`,\n `{} 未儲存,code:{}。`,\n `{} not saved, code: {}.`,\n `{} 保存されていません。code:{}。`,\n `{} 저장되지 않음, 코드: {}.`,\n `{} не сохранено, код: {}.`,\n ],\n _FILE_FAILED_tip: [\n '可能是文件名太长,或是其他原因导致文件保存失败。你可以尝试启用高级设置里的“文件名长度限制”。',\n '可能是檔名太長,或是其他原因導致檔案儲存失敗。你可以嘗試啟用高階設定裡的“檔案名稱長度限制”。',\n 'Maybe the file name is too long, or other reasons cause the file to fail to save. You can try enabling \"File name length limit\" in advanced settings.',\n 'ファイル名が長すぎるか、他の理由でファイルの保存に失敗した可能性があります。 詳細設定で「ファイル名の長さ制限」を有効にしてみてください。',\n '파일명이 너무 길거나 다른 이유로 저장에 실패한 것 같습니다. 고급 설정에서 \"파일명 길이 제한\"을 사용하도록 설정할 수 있습니다.',\n 'Возможно, имя файла слишком длинное, или по другим причинам файл не удается сохранить. Вы можете попробовать включить \"Ограничение длины имени файла\". в расширенных настройках.',\n ],\n _显示摘要信息: [\n '显示摘要信息',\n '顯示摘要資訊',\n 'Show summary',\n '要約情報を表示する',\n '요약 정보 표시',\n 'Показать сводку',\n ],\n _显示更大的缩略图: [\n '显示更大的缩略图',\n '顯示更大的縮圖',\n 'show larger thumbnails',\n '大きなサムネイルを表示する',\n '더 큰 썸네일 표시',\n 'Показывать большие миниатюры',\n ],\n _横图占用二倍宽度: [\n '横图占用二倍宽度',\n '橫圖佔用二倍寬度',\n 'Horizontal image takes up double the width',\n '水平方向の画像は幅の2倍を占めます',\n '가로 그림은 두 배의 너비를 차지',\n 'Горизонтальное изображение занимает вдвое большую ширину',\n ],\n _该功能默认开启: [\n '这个功能默认启用。',\n '這個功能預設啟用。',\n 'This feature is enabled by default.',\n 'この機能はデフォルトで有効になっています。',\n '이 기능은 기본적으로 활성화됩니다.',\n 'Эта функция включена по умолчанию.',\n ],\n _默认未启用: [\n '默认未启用。',\n '預設未啟用。',\n 'It is disabled by default.',\n 'デフォルトでは有効になっていません。',\n '기본값이 비활성화되어 있습니다.',\n 'По умолчанию не работает.',\n ],\n _你可以在更多选项卡的xx分类里找到它: [\n '你可以在“更多”选项卡 → “{}”分类里找到它。(需要先启用“显示高级设置”)',\n '你可以在“更多”選項卡 → “{}”分類裡找到它。(需要先啟用“顯示進階設定”)',\n 'You can find it in the \"More\" tab → \"{}\" category. (\"Show advanced settings\" needs to be enabled first)',\n '[もっと]タブ→[{}]カテゴリにあります。(最初に「詳細設定を表示」を有効にする必要があります)',\n '\"더보기\" 탭 → \"{}\" 카테고리에서 찾을 수 있습니다. (\"고급 설정 보기\"를 먼저 활성화해야 합니다.)',\n 'Вы можете найти его в разделе \"Еще\". вкладка → \"{}\" категория. (\"Показать расширенные настройки\" необходимо сначала включить)',\n ],\n _你可以在xx选项卡里找到它: [\n '你可以在“{}”选项卡里找到它。(需要先启用“显示高级设置”)',\n '你可以在“{}”選項卡裡找到它。(需要先啟用“顯示進階設定”)',\n 'You can find it in the \"{}\" tab. (\"Show advanced settings\" needs to be enabled first)',\n '「{}」タブにあります。(最初に「詳細設定を表示」を有効にする必要があります)',\n '\"{}\" 탭에서 찾을 수 있습니다. (\"고급 설정 보기\"를 먼저 활성화해야 합니다.)',\n 'Вы можете найти его на вкладке \"{}\". (\"Показать расширенные настройки\" необходимо сначала включить)',\n ],\n _使用鼠标滚轮切换作品里的图片: [\n '使用鼠标滚轮切换多图作品里的图片',\n '使用滑鼠滾輪切換多圖作品裡的圖片',\n 'Use the mouse wheel to switch images in multi-image works',\n 'マウスホイールを使用して、マルチイメージ作品のイメージを切り替えます',\n '마우스 휠을 사용하여 여러 이미지 작품에서 이미지 전환',\n 'Используйте колесико мыши для переключения изображений в работах с несколькими изображениями',\n ],\n _这可能会阻止页面滚动: [\n '这可能会阻止页面滚动',\n '這可能會阻止頁面滾動',\n 'This might stop the page from scrolling',\n 'ページのスクロールを妨げる可能性があります',\n '이 기능은 페이지를 스크롤하지 못하게 할 수 있습니다.',\n 'Это может остановить прокрутку страницы',\n ],\n _动图转换失败的提示: [\n '动图转换失败,id:{}',\n '動圖轉換失敗,id:{}',\n 'Ugoira(animation) conversion failed, id: {}',\n 'うごイラの変換に失敗しました、id:{}',\n '움직이는 일러스트 변환에 실패했습니다, ID: {}',\n 'Не удалось преобразовать Ugoira(анимацию), идентификатор: {}',\n ],\n _动图不能转换为WEBM视频的提示: [\n '作品 ID {} 不能转换为 WEBM 视频,因为它的某一帧延迟大于 32767 毫秒。下载器会把它转换为 GIF 图像。',\n '作品 ID {} 不能轉換為 WEBM 影片,因為它的某一幀延遲大於 32767 毫秒。下載器會把它轉換為 GIF 影象。',\n 'Work ID {} cannot be converted to WEBM video because it has a frame duration greater than 32767 ms. The downloader will convert it into a GIF image.',\n 'ワークid {} は、32767ミリ秒以上のフレーム長を持つため、webm動画に変換できません。ダウンローダはそれをgif画像に変換します。',\n '작업 ID {}의 프레임 지속 시간이 32767 ms보다 크기 때문에 WEBM 비디오로 변환할 수 없습니다.다운로더가 GIF 이미지로 변환해 줍니다.',\n 'Рабочий ID {} не может быть преобразован в WEBM видео, потому что он имеет длительность кадров более 32767 мс. Загрузчик преобразует его в изображение GIF.',\n ],\n _作品id无法下载带状态码: [\n '{} 无法下载,状态码:{}',\n '{} 無法下載,狀態碼:{}',\n '{} failed to download, status code: {}',\n '{} ダウンロードに失敗しました、ステータスコード:{}',\n '{} 다운로드할 수 없습니다, 상태 코드: {}',\n '{} не удалось загрузить, код состояния: {}',\n ],\n _作品总数为0: [\n '作品总数为 0,Pixiv 可能拒绝了此次抓取。请稍后重试。',\n '作品總數為 0,Pixiv 可能拒絕了此次抓取。請稍後重試。',\n 'The total number of works is 0, Pixiv may have refused this crawl. Please try again later.',\n '作品の総数は 0 です。 Pixivがこのクロールを拒否した可能性があります。 後でもう一度やり直してください。',\n '총 작품 수가 0개입니다, Pixiv가 이번 긁어오기를 거부한 것으로 보입니다. 잠시 후에 다시 시도해주세요.',\n 'Общее количество работ равно 0, возможно, Pixiv блокирует сканирование. Пожалуйста, повторите попытку позже.',\n ],\n _优化预览作品功能: [\n '优化“预览作品”功能',\n '最佳化“預覽作品”功能',\n 'Optimize the \"Preview Works\" function',\n '「作品のプレビュー」機能を最適化する',\n '\"작품 미리보기\" 기능 최적화',\n 'Оптимизация \"Предварительного просмотра работ\" функция',\n ],\n _设定资料: [\n '设定资料',\n '設定資料',\n 'Reference materials',\n '設定資料',\n '설정 자료',\n 'Справочные материалы',\n ],\n _年龄限制: [\n '年龄限制',\n '年齡限制',\n 'Age limit',\n '年齢制限',\n '연령 제한',\n 'Возраст ограничение',\n ],\n _收藏状态: [\n '收藏状态',\n '收藏狀態',\n 'Bookmark status',\n 'ブックマークステータス',\n '북마크 상태',\n 'Статус закладки ',\n ],\n _图片色彩: [\n '图片色彩',\n '圖片色彩',\n 'Image color',\n '画像の',\n '이미지 색채',\n 'Цвет изображения',\n ],\n _图片数量: [\n '图片数量',\n '圖片數量',\n 'Number of images',\n '画像の',\n '이미지 ',\n 'Количество изображений',\n ],\n _不抓取多图作品的最后一张图片: [\n '不抓取多图作品的最后一张图片',\n '不抓取多圖作品的最後一張圖片',\n 'Do not crawl the last image of multi-image works',\n 'マルチ画像作品の最後の画像をつかまないでください',\n '여러 이미지의 마지막 이미지 긁어오지 않기',\n 'Не сканировать по последние изображения в много картинных работах',\n ],\n _下载小说的封面图片: [\n '下载小说的封面图片',\n '下載小說的封面圖片',\n 'Download the cover image of the novel',\n '小説の表紙画像をダウンロード',\n '소설 커버 이미지 다운로드',\n 'Скачать изображение обложки новеллы',\n ],\n _预览动图: [\n '预览动图',\n '預覽動圖',\n 'Preview Ugoira',\n 'うごイラのプレビュー',\n '움직이는 일러스트 미리보기',\n 'Превью Ugoira(анимации)',\n ],\n _过度访问警告警告: [\n '下载器检测到你可能收到了 pixiv 的警告消息,这通常是因为过度下载导致的。
    当你再次被警告时,你会被 Pixiv 封号。
    我建议你减少下载数量,或者使用新的账号进行下载。',\n '下載器檢測到你可能收到了 pixiv 的警告訊息,這通常是因為過度下載導致的。
    當你再次被警告時,你會被 Pixiv 封號。
    我建議你減少下載數量,或者使用新的賬號進行下載。',\n 'The downloader has detected that you may have received a warning message from pixiv, usually due to excessive downloads.
    When you are warned again, you will be banned from Pixiv.
    I suggest you reduce your downloads, or use a new account to download.',\n 'ダウンロードが多すぎるため、pixivから警告メッセージが届いた可能性があることをダウンローダーが検出しました。
    再度警告を受けた場合、Pixivから追放されます。
    ダウンロード数を減らすか、新しいアカウントを使用してダウンロードすることをお勧めします。',\n '다운로더는 일반적으로 과도한 다운로드로 인해 pixiv에서 경고 메시지를 수신했을 수 있음을 감지했습니다.
    다시 경고를 받으면 Pixiv에서 차단됩니다.
    다운로드를 줄이거나 새 계정을 사용하여 다운로드하는 것이 좋습니다.',\n 'Программа загрузки обнаружила, что вы могли получить предупреждающее сообщение от pixiv, обычно из-за чрезмерной загрузки.
    Когда вы снова получите предупреждение, вы будете заблокированы в Pixiv.
    Я предлагаю вам сократить количество загрузок или использовать новую учетную запись для загрузки.',\n ],\n _下载小说里的内嵌图片: [\n '下载小说里的内嵌图片',\n '下載小說裡的內嵌圖片',\n 'Download embedded images in novels',\n '小説に埋め込まれた画像をダウンロードする',\n '소설에서 인라인 이미지 다운로드',\n 'Загрузка вложенных изображений в новеллах',\n ],\n _其他优化: [\n '其他优化',\n '其他最佳化',\n 'Other optimizations',\n 'その他の最適化',\n '기타 최적화',\n 'Другие оптимизации',\n ],\n _隐藏浏览器底部的下载栏: [\n '隐藏浏览器底部的下载栏',\n '隱藏瀏覽器底部的下載欄',\n `Hide the download bar at the bottom of the browser`,\n 'ブラウザの下部にあるダウンロードバーを非表示にします',\n '브라우저 하단의 다운로드 바 숨기기',\n `Скрыть панель загрузки в нижней части браузера`,\n ],\n _没有可用的抓取结果: [\n '没有可用的抓取结果',\n '沒有可用的抓取結果',\n 'No crawl results available',\n 'クロール結果がありません',\n '사용 가능한 크롤링 결과가 없습니다.',\n 'Результаты сканирования недоступны',\n ],\n _查看作品大图时的快捷键: [\n '查看作品大图时,按快捷键 D 可以下载这个作品。
    按快捷键 C 仅下载当前显示的这张图片。',\n '檢視作品大圖時,按快捷鍵 D 可以下載這個作品。
    按快捷鍵 C 僅下載當前顯示的這張圖片。',\n 'When viewing the large image of the work, press the shortcut key D to download the work.
    Press the shortcut key C to download only the currently displayed image.',\n '作品の大きな画像をご覧になる場合、ショートカット キー D を押すと、作品をダウンロードできます。
    ショートカット キー C を押して、現在表示されている画像のみをダウンロードします。',\n '작품의 큰 그림을 볼 때 단축키 D를 누르면 작품을 다운로드할 수 있습니다.
    현재 표시된 이미지만 다운로드하려면 단축키 C를 누르세요.',\n 'При просмотре большого изображения работы нажмите горячую клавишу D, чтобы загрузить работу.
    Нажмите горячую клавишу C, чтобы загрузить только отображаемое в данный момент изображение.',\n ],\n _定时抓取: [\n '定时抓取',\n '定時抓取',\n 'Timed crawl',\n '時限クロール',\n '시간 제한 크롤링',\n 'Сканирование по таймеру',\n ],\n _定时抓取说明: [\n '每隔一定时间,自动开始抓取和下载。',\n '每隔一定時間,自動開始抓取和下載。',\n 'Automatically start crawling and downloading at regular intervals.',\n '定期的にクロールとダウンロードを自動的に開始します。',\n '정기적으로 자동으로 크롤링 및 다운로드를 시작합니다.',\n 'Автоматически запускать сканирование и загрузку через регулярные промежутки времени',\n ],\n _定时抓取已启动的提示: [\n '定时抓取已启动,间隔时间:{} 分钟。
    如果你想修改间隔时间,可以在“更多”选项卡里修改设置:定时抓取的间隔时间。',\n '定時抓取已啟動,間隔時間:{} 分鐘。
    如果你想修改間隔時間,可以在“更多”選項卡里修改設定:定時抓取的間隔時間。',\n 'Timed crawl started, interval: {} minutes.
    If you want to modify the interval time, you can modify the settings in the \"More\" tab: The interval time of timed crawl.',\n '時限クロールが開始されました。間隔: {} 分。
    間隔時間を変更したい場合は、[詳細] タブの設定 (時間指定クロールの間隔時間) を変更できます。',\n '시간 제한 크롤링이 시작되었습니다. 간격: {}분.
    간격 시간을 수정하려면 \"자세히\" 탭에서 예약된 크롤링 간격 설정을 수정할 수 있습니다.',\n 'Таймер сканирования запущен, интервал: {} минут.
    Если вы хотите изменить интервал времени, вы можете изменить настройки на вкладке «Дополнительно»: Интервальное время сканирования с таймером.',\n ],\n _定时抓取的推荐用法: [\n '推荐用法:增量抓取新作品。例如在关注的用户的新作品页面里,设置抓取页数为 2,然后启动定时抓取。这样下载器可以自动下载新作品。
    建议启用“不下载重复文件”功能,以避免下载重复的文件。',\n '推薦用法:增量抓取新作品。例如在關注的使用者的新作品頁面裡,設定抓取頁數為 2,然後啟動定時抓取。這樣下載器可以自動下載新作品。
    建議啟用“不下載重複檔案”功能,以避免下載重複的檔案。',\n 'Recommended usage: Fetch new work incrementally. For example, in the new work page of the user you follow, set the number of crawled pages to 2, and then start timing crawling. This way the downloader can automatically download new works.
    It is recommended to enable the \"Do not download duplicate files\" feature to avoid downloading duplicate files.',\n '推奨される使用法: 新しい作業を段階的にフェッチします。 たとえば、フォローしているユーザーの新しい作品ページで、クロールされたページの数を 2 に設定し、クロールのタイミングを開始します。 このようにして、ダウンローダーは新しい作品を自動的にダウンロードできます。
    重複ファイルのダウンロードを避けるために、「重複ファイルをダウンロードしない」機能を有効にすることをお勧めします。',\n '권장 사용법: 새 작업을 점진적으로 가져옵니다. 예를 들어 팔로우하는 사용자의 새 작업 페이지에서 크롤링 페이지 수를 2로 설정한 다음 타이밍 크롤링을 시작합니다. 이렇게 하면 다운로더가 자동으로 새 작품을 다운로드할 수 있습니다.
    중복 파일 다운로드를 방지하기 위해 \"중복 파일 다운로드 금지\" 기능을 활성화하는 것이 좋습니다.',\n 'Рекомендуемое использование: получать новую работу постепенно. Например, на новой рабочей странице пользователя, за которым вы следите, установите количество просканированных страниц равным 2, а затем запустите сканирование по времени. Таким образом, загрузчик может автоматически загружать новые работы.
    Рекомендуется включить функцию \"Не загружать дубликаты файлов\", чтобы избежать загрузки дубликатов файлов.',\n ],\n _定时抓取已启动的提示2: [\n '在定时抓取时,将这个标签页静置即可。不要改变这个标签页的 URL,否则抓取结果可能不符合预期。

    如果这个扩展程序自动更新了,那么这个页面将不能正常下载文件(需要刷新页面来恢复正常)。 如果你想长期执行定时抓取任务,建议安装下载器的离线版本,以免因为自动更新而导致问题。
    你可以在这里下载离线安装包:Releases page',\n '在定時抓取時,將這個標籤頁靜置即可。不要改變這個標籤頁的 URL,否則抓取結果可能不符合預期。

    如果這個擴充套件程式自動更新了,那麼這個頁面將不能正常下載檔案(需要重新整理頁面來恢復正常)。 如果你想長期執行定時抓取任務,建議安裝下載器的離線版本,以免因為自動更新而導致問題。
    你可以在這裡下載離線安裝包:Releases page',\n 'During timed crawling, just leave this tab alone. Do not change the URL of this tab, or the crawl results may not be as expected.

    If the extension is automatically updated, the page will not be able to download files normally (refresh the page to restore normal). If you want to perform scheduled crawling tasks for a long time, it is recommended to install the offline version of the downloader to avoid problems caused by automatic updates.
    You can download the offline installation package here: Releases page',\n '時限クロール中は、このタブをそのままにしておきます。 このタブの URL は変更しないでください。変更すると、クロール結果が期待どおりにならない可能性があります。

    拡張機能が自動的に更新されると、ページはファイルを正常にダウンロードできなくなります (ページを更新して正常に戻します)。 スケジュールされたクロール タスクを長時間実行する場合は、自動更新による問題を回避するために、ダウンローダのオフライン バージョンをインストールすることをお勧めします。
    オフライン インストール パッケージは、次の場所からダウンロードできます。Releases page',\n '시간 제한 크롤링 중에는 이 탭을 그대로 두십시오. 이 탭의 URL을 변경하지 마십시오. 그렇지 않으면 크롤링 결과가 예상과 다를 수 있습니다.

    확장자가 자동으로 업데이트되면 페이지에서 파일을 정상적으로 다운로드할 수 없습니다(페이지를 새로고침하여 정상으로 복원). 예약된 크롤링 작업을 장기간 수행하려면 자동 업데이트로 인한 문제를 방지하기 위해 다운로더의 오프라인 버전을 설치하는 것이 좋습니다.
    여기에서 오프라인 설치 패키지를 다운로드할 수 있습니다. Releases page',\n 'Во время сканирования по времени просто оставьте эту вкладку в покое. Не меняйте URL-адрес этой вкладки, иначе результаты сканирования могут отличаться от ожидаемых.

    Если расширение автоматически обновляется, страница не сможет загружать файлы в обычном режиме (обновите страницу, чтобы восстановить нормальный режим). Если вы хотите выполнять запланированные задачи обхода в течение длительного времени, рекомендуется установить автономную версию загрузчика, чтобы избежать проблем, вызванных автоматическими обновлениями.
    Вы можете скачать автономный установочный пакет здесь: Страница релизов',\n ],\n _定时抓取的间隔时间: [\n '定时抓取的间隔时间',\n '定時抓取的間隔時間',\n 'The interval time of timed crawl',\n '時間指定クロールの間隔時間',\n '정기 크롤링 간격 시간',\n 'Интервальное время сканирования с таймером',\n ],\n _定时抓取的间隔时间2: [\n '定时抓取的间隔时间',\n '定時抓取的間隔時間',\n 'The interval time of timed crawl',\n '時間指定クロールの間隔時間',\n '정기 크롤링 간격 시간',\n 'Интервальное время сканирования с таймером',\n ],\n _分钟: ['分钟', '分鐘', 'Minute', '分', '분', 'Минут'],\n _定时抓取的时间超过最大值: [\n '定时抓取的间隔时间超过最大值:',\n '定時抓取的間隔時間超過最大值:',\n 'The interval of timed crawl exceeds the maximum value: ',\n '時間指定クロールの間隔が最大値を超えています: ',\n '시간 지정 크롤링 간격이 최대값을 초과합니다: ',\n 'Интервал сканирования по таймеру превышает максимальное значение: ',\n ],\n _定时抓取的时间最小值: [\n '定时抓取的间隔时间最小值为 1 分钟。',\n '定時抓取的間隔時間最小值為 1 分鐘。',\n 'The minimum interval for timed crawls is 1 minute.',\n '時間指定クロールの最小間隔は 1 分です。',\n '시간 지정 크롤링의 최소 간격은 1분입니다.',\n 'Минимальный интервал для сканирования по таймеру составляет 1 минуту.',\n ],\n _取消定时抓取: [\n '取消定时抓取',\n '取消定時抓取',\n 'Cancel timed crawl',\n '時間指定クロールをキャンセル',\n '시간 지정 크롤링 취소',\n 'Отменить сканирование по таймеру',\n ],\n _已取消定时抓取: [\n '已取消定时抓取',\n '已取消定時抓取',\n 'Timed crawl canceled',\n '時間指定クロールがキャンセルされました',\n '예약된 크롤링이 취소되었습니다.',\n 'Сканирование по таймеру отменено',\n ],\n _因为URL变化取消定时抓取任务: [\n '因为 URL 变化,定时抓取任务已被取消。',\n '因為 URL 變化,定時抓取任務已被取消。',\n 'The timed crawl task has been canceled due to URL changes.',\n 'URL が変更されたため、時間指定クロール タスクがキャンセルされました。',\n 'URL 변경으로 인해 시간이 지정된 크롤링 작업이 취소되었습니다.',\n 'Задание на сканирование по времени было отменено из-за изменений URL.',\n ],\n _开始定时抓取: [\n '开始定时抓取',\n '開始定時抓取',\n 'Start timed crawling',\n '時間指定クロールを開始する',\n '시간 지정 크롤링 시작',\n 'Начать сканирование по таймеру',\n ],\n _等待下一次定时抓取: [\n '等待下一次定时抓取',\n '等待下一次定時抓取',\n 'Wait for the next timed crawl',\n '次回の時限クロールを待つ',\n '다음 시간 크롤링을 기다립니다.',\n 'Подождите следующего сканирования с таймером',\n ],\n _当前时间: [\n '当前时间:',\n '當前時間:',\n 'Current time: ',\n '現在の時刻:',\n '현재 시간: ',\n 'Текущее время: ',\n ],\n _仅在部分页面中可用: [\n '仅在部分页面中可用。',\n '僅在部分頁面中可用。',\n 'Only available on some pages.',\n '一部のページのみ利用可能です。',\n '일부 페이지에서만 사용할 수 있습니다.',\n 'Доступно только на некоторых страницах',\n ],\n _发生错误原因: [\n '发生错误,原因:',\n '發生錯誤,原因:',\n 'An error occurred due to:',\n '次の理由でエラーが発生しました:',\n '다음으로 인해 오류가 발생했습니다.',\n 'Произошла ошибка по причине:',\n ],\n _扩展程序已更新: [\n '扩展程序已更新。',\n '擴充套件程式已更新。',\n 'The extension has been updated.',\n '拡張機能が更新されました。',\n '확장이 업데이트되었습니다.',\n 'Расширение было обновлено.',\n ],\n _未知错误: [\n '未知错误。',\n '未知錯誤。',\n 'unknown mistake.',\n '未知の間違い。',\n '알 수 없는 실수.',\n 'неизвестная ошибка',\n ],\n _请刷新页面: [\n '请刷新页面。',\n '請重新整理頁面。',\n 'Please refresh the page.',\n 'ページを更新してください。',\n '페이지를 새로고침하세요.',\n 'Пожалуйста, обновите страницу.',\n ],\n _减慢抓取速度: [\n '减慢抓取速度',\n '減慢抓取速度',\n 'Slow down crawl',\n 'クロールを遅くする',\n '천천히 크롤링',\n 'Замедлить сканирование',\n ],\n _减慢抓取速度的说明: [\n '减慢抓取速度可以避免在抓取时被 Pixiv 临时限制。但是会增加抓取时间。',\n '減慢抓取速度可以避免在抓取時被 Pixiv 臨時限制。但是會增加抓取時間。',\n 'Slow down the crawl to avoid being temporarily restricted by Pixiv while crawling. But this will increase the crawl time.',\n 'クロール中にPixivによって一時的に制限されないように、クロールを遅くします。 ただし、これによりクロール時間が長くなります。',\n '크롤링하는 동안 Pixiv에 의해 일시적으로 제한되지 않도록 크롤링 속도를 늦춥니다. 그러나 이것은 크롤링 시간을 증가시킵니다.',\n 'Замедлить сканирование, чтобы избежать временного ограничения Pixiv во время сканирования. Это увеличит время сканирования.',\n ],\n _作品数量: [\n '作品数量',\n '作品數量',\n 'Number of works',\n '作品数',\n '작품 수',\n 'Количество работ',\n ],\n _当作品数量大于: [\n '当作品数量超过指定数量时启用:',\n '當作品數量超過指定數量时啟用:',\n 'Enabled when the number of works exceeds the specified number:',\n '作品数が規定数を超えた場合に有効:',\n '작품 수가 지정된 수를 초과하면 활성화됩니다.',\n 'Включается, когда количество работ превышает указанное количество:',\n ],\n _慢速抓取: [\n '慢速抓取,以避免触发 429 限制',\n '慢速抓取,以避免觸發 429 限制',\n 'Crawl slowly to avoid triggering 429 throttling',\n '429 スロットリングのトリガーを避けるためにゆっくりとクロールします',\n '429 스로틀링 트리거를 방지하기 위해 천천히 크롤링',\n 'Медленно сканируйте, чтобы не спровоцировать 429 троттлинг.',\n ],\n _慢速执行以避免引起429错误: [\n '慢速执行,以避免引起 429 错误',\n '慢速執行,以避免引起 429 錯誤',\n 'Execute slowly to avoid causing 429 errors',\n '429 エラーの発生を避けるためにゆっくり実行してください',\n '429 오류가 발생하지 않도록 천천히 실행하십시오.',\n 'Выполняйте медленно, чтобы избежать ошибок 429',\n ],\n _点击收藏按钮时下载作品: [\n '点击收藏按钮时下载作品',\n '點選收藏按鈕時下載作品',\n 'Download a work when you click the bookmark button',\n 'ブックマークボタンをクリックすると作品をダウンロード',\n '북마크 버튼 클릭 시 작품 다운로드',\n 'Загрузка произведения при нажатии кнопки закладка',\n ],\n _点击点赞按钮时下载作品: [\n '点击点赞按钮时下载作品',\n '點選點贊按鈕時下載作品',\n 'Download a work when you click the like button',\n 'いいね ボタンをクリックすると作品がダウンロードされます',\n '좋아요 버튼 클릭 시 작품 다운로드',\n 'Загрузка произведения при нажатии на кнопку лайк',\n ],\n _优化性能和用户体验: [\n '优化性能和用户体验。',\n '最佳化效能和使用者體驗。',\n 'Optimize performance and user experience.',\n 'パフォーマンスとユーザー エクスペリエンスを最適化します。',\n '성능과 사용자 경험을 최적화합니다.',\n 'Оптимизация производительности и пользовательского опыта',\n ],\n _修复bug: [\n '修复 bug',\n '修復 bug',\n 'fix bugs',\n 'バグを修正',\n '버그 수정',\n 'Баг фикс',\n ],\n _修复已知问题: [\n '修复已知问题',\n '修復已知問題',\n 'fix known issues',\n '既知の問題を修正する',\n '알려진 문제 수정',\n 'исправить известные проблемы',\n ],\n _不支持的浏览器: [\n '你的浏览器不能正常使用这个扩展程序,主要原因可能是浏览器内核版本太低,或者存在兼容性问题。
    建议您更换成最新版本的 Chrome 或 Edge 浏览器。',\n '你的瀏覽器不能正常使用這個擴充套件程式,主要原因可能是瀏覽器核心版本太低,或者存在相容性問題。
    建議您更換成最新版本的 Chrome 或 Edge 瀏覽器。',\n 'Your browser cannot use this extension properly. The main reason may be that the browser kernel version is too low, or there is a compatibility problem.
    We recommend that you switch to the latest version of Chrome or Edge.',\n 'お使いのブラウザでは、この拡張機能を正しく使用できません。 主な理由としては、ブラウザのカーネル バージョンが低すぎるか、互換性の問題がある可能性があります。
    最新バージョンの Chrome または Edge に切り替えることをお勧めします。',\n '브라우저에서 이 확장 프로그램을 제대로 사용할 수 없습니다. 주된 이유는 브라우저 커널 버전이 너무 낮거나 호환성 문제가 있기 때문일 수 있습니다.
    최신 버전의 Chrome 또는 Edge로 전환하는 것이 좋습니다.',\n 'Ваш браузер не может правильно использовать это расширение. Основной причиной может быть слишком низкая версия ядра браузера или проблема совместимости.
    Мы рекомендуем вам перейти на последнюю версию Chrome или Edge.',\n ],\n _日期时间格式错误: [\n '日期时间格式错误',\n '日期時間格式錯誤',\n 'wrong datetime format',\n '間違った日時形式',\n '잘못된 날짜/시간 형식',\n 'неправильный формат даты',\n ],\n _添加了对此页面类型的支持: [\n '添加了对此页面类型的支持:',\n '添加了对此页面类型的支持:',\n 'Added support for this page type:',\n '次のページ タイプのサポートが追加されました:',\n '이 페이지 유형에 대한 지원이 추가되었습니다:',\n 'Добавлена поддержка этого типа страницы:',\n ],\n _仅可由链接浏览: [\n '仅可由链接浏览',\n '僅可由連結瀏覽',\n 'URL restricted',\n 'URL限定公開',\n 'URL 한정 공개',\n 'URL ограничен',\n ],\n _添加了俄语翻译: [\n '添加了俄语翻译',\n '添加了俄語翻譯',\n 'Added Russian translation',\n 'ロシア語の翻訳を追加',\n '러시아어 번역 추가',\n 'Добавлен русский перевод',\n ],\n _移除本页面中所有作品的标签: [\n '移除本页面中所有作品的标签',\n '移除本頁面中所有作品的標籤',\n 'Remove tags from all works on this page',\n 'このページのすべての作品からタグを削除します',\n '이 페이지의 모든 작품에서 태그 제거',\n 'Удалить теги со всех работ на этой странице',\n ],\n _它们会变成未分类状态: [\n '它们会变成未分类状态',\n '它們會變成未分類狀態',\n 'They become uncategorized',\n 'それらは未分類になります',\n '분류되지 않습니다',\n 'Они становятся некатегоризированными',\n ],\n _取消收藏本页面的所有作品: [\n '取消收藏本页面中的所有作品',\n '取消收藏本頁面中的所有作品',\n 'Unbookmark all works on this page',\n 'このページのすべての作品のブックマークを解除',\n '이 페이지의 모든 작품에 대한 북마크 해제',\n 'Удалить из избранного все работы на этой странице',\n ],\n _取消收藏所有已被删除的作品: [\n '取消收藏所有已被删除的作品',\n '取消收藏所有已被刪除的作品',\n 'Unbookmark all deleted works',\n '削除した作品をすべてブックマーク解除する',\n '삭제된 모든 작품 북마크 해제',\n 'Снять закладку со всех удаленных работ',\n ],\n _取消收藏所有已被删除的作品的使用说明: [\n '在你的收藏页面里,切换到下载器的“更多”标签页可以看到该功能按钮。',\n '在你的收藏頁面裡,切換到下載器的“更多”標籤頁可以看到該功能按鈕。',\n 'In your bookmark page, switch to the \"More\" tab of the downloader to see this function button.',\n 'ブックマーク ページで、ダウンローダーの「その他」タブに切り替えると、この機能ボタンが表示されます。',\n '북마크 페이지에서 다운로더의 \"더보기\" 탭으로 전환하면 이 기능 버튼을 볼 수 있습니다.',\n 'На странице закладок перейдите на вкладку «Дополнительно» загрузчика, чтобы увидеть эту функциональную кнопку.',\n ],\n _取消收藏作品: [\n '取消收藏作品',\n '取消收藏作品',\n 'Unbookmark works',\n '作品のブックマークを解除',\n '작품 북마크 해제',\n 'Снять закладку с работ',\n ],\n _收藏页面里的按钮: [\n '当你在自己的收藏页面时,可以在“更多”选项卡里看到这个按钮。',\n '當你在自己的收藏頁面時,可以在“更多”選項卡里看到這個按鈕。',\n `You can see this button in the \"More\" tab when you're on your bookmarks page.`,\n 'このボタンは、ブックマーク ページの [もっと] タブに表示されます。',\n '북마크 페이지에 있을 때 \"더보기\" 탭에서 이 버튼을 볼 수 있습니다.',\n 'Вы можете увидеть эту кнопку на вкладке «Больше», когда находитесь на странице закладок.',\n ],\n _收藏任务尚未完成请等待: [\n '收藏作品的任务尚未全部完成,请等待',\n '收藏作品的任務尚未全部完成,請等待',\n 'The task of bookmarking works has not been completed yet, please wait.',\n '作品のブックマーク作業がまだ完了していませんので、しばらくお待ちください',\n '작품을 북마크하는 작업이 아직 완료되지 않았습니다. 잠시만 기다려 주세요',\n 'Задание работ по закладке еще не выполнено, пожалуйста, подождите',\n ],\n _收藏作品完毕: [\n '收藏作品完毕',\n '收藏作品完畢',\n 'Bookmark works finished',\n 'ブックマーク作業終了',\n '북마크 작업 완료',\n 'Работа над закладками завершена',\n ],\n _添加收藏失败: [\n '添加收藏失败',\n '新增收藏失敗',\n 'Failed to add bookmark',\n 'ブックマークを追加できませんでした',\n '북마크 추가 실패',\n 'Не удалось добавить закладку',\n ],\n _下载器会在几分钟后重试: [\n '下载器会在几分钟后重试。',\n '下載器會在幾分鐘後重試。',\n 'The downloader will try again in a few minutes.',\n 'ダウンローダーは数分後に再試行します。',\n '다운로더는 몇 분 후에 다시 시도합니다.',\n 'Загрузчик повторит попытку через несколько минут.',\n ],\n _重试收藏: [\n '重试收藏',\n '重試收藏',\n 'Retry bookmark',\n 'ブックマークを再試行',\n '북마크 다시 시도',\n 'Повторить закладку',\n ],\n _剩余xx个: [\n '剩余 {} 个。',\n '剩餘 {} 個。',\n '{} remaining.',\n '{} 残り。',\n '{} 남음.',\n '{} осталось.',\n ],\n _重试收藏成功: [\n '重试收藏成功。',\n '重試收藏成功。',\n 'Retry bookmark successfully.',\n 'ブックマークを再試行します。',\n '북마크를 다시 시도하십시오.',\n 'Повторите попытку закладки.',\n ],\n _出现错误请稍后重试: [\n '出现错误,请稍后重试。',\n '出現錯誤,請稍後重試。',\n 'An error occurred, please try again later.',\n 'エラーが発生しました。しばらくしてからもう一度お試しください。',\n '오류가 발생했습니다. 잠시 후 다시 시도 해주세요.',\n 'Произошла ошибка. Пожалуйста, повторите попытку позже.',\n ],\n _请稍后重试: [\n '请稍后重试。',\n '請稍後重試。',\n 'Please try again later.',\n '後でもう一度やり直してください。',\n '잠시 후에 다시 시도해주세요.',\n 'Пожалуйста, повторите попытку позже.',\n ],\n _确定要离开吗: [\n '确定要离开吗?',\n '確定要離開嗎?',\n 'Are you sure you want to leave?',\n '退会してもよろしいですか?',\n '떠나시겠습니까?',\n 'Вы уверены, что хотите оставить?',\n ],\n _yandex浏览器的警告: [\n `如果你在 Yandex 浏览器(Android)上使用 Powerful Pixiv Downloader,请换成 Kiwi 浏览器。
    \n 因为下载器在最近将会升级到 Manifest version 3,但是 Yandex 浏览器不支持 Manifest version 3, 所以它不能使用新版本的下载器。`,\n `如果你在 Yandex 瀏覽器(Android)上使用 Powerful Pixiv Downloader,請換成 Kiwi 瀏覽器。
    \n 因為下載器在最近將會升級到 Manifest version 3,但是 Yandex 瀏覽器不支援 Manifest version 3, 所以它不能使用新版本的下載器。`,\n `If you are using Powerful Pixiv Downloader on Yandex browser(Android), please switch to Kiwi browser.
    \n Because the downloader will be upgraded to Manifest version 3 in the near future, but Yandex browser does not support Manifest version 3, so it cannot use the new version of the downloader.`,\n `Yandex(Android) ブラウザで強力な Pixiv Downloader を使用している場合は、Kiwi ブラウザに切り替えてください。
    \n ダウンローダは近いうちにマニフェスト バージョン 3 にアップグレードされますが、Yandex ブラウザはマニフェスト バージョン 3 をサポートしていないため、新しいバージョンのダウンローダを使用することはできません。`,\n `Yandex(Android) 브라우저에서 강력한 Pixiv Downloader를 사용하는 경우 Kiwi 브라우저로 전환하십시오.
    \n 다운로더는 가까운 시일 내에 Manifest 버전 3으로 업그레이드되지만 Yandex 브라우저는 Manifest 버전 3을 지원하지 않으므로 새 버전의 다운로더를 사용할 수 없습니다.`,\n `Если вы используете Powerful Pixiv Downloader в браузере Yandex(Android), перейдите на браузер Kiwi.
    \n Потому что в ближайшее время загрузчик будет обновлен до Манифеста версии 3, но Yandex браузер не поддерживает Манифест версии 3, поэтому он не может использовать новую версию загрузчика.`,\n ],\n _导出日志: [\n '导出日志',\n '匯出日誌',\n 'Export log',\n 'ログのエクスポート',\n '내보내기 로그',\n 'Экспорт журнала',\n ],\n _导出日志成功: [\n '✓ 导出日志',\n '✓ 匯出日誌',\n '✓ Export log',\n '✓ ログのエクスポート',\n '✓ 내보내기 로그',\n '✓ Экспорт журнала',\n ],\n _导出时机: [\n '导出时机',\n '匯出時機',\n 'Export timing',\n 'エクスポートのタイミング',\n '내보내기 타이밍',\n 'Время экспорта',\n ],\n _日志类型: [\n '日志类型',\n '日誌型別',\n 'Log type',\n 'ログの種類',\n '로그 유형',\n 'Тип журнала',\n ],\n _正常: ['正常', '正常', 'Normal', '普通', '정상', 'Обычный'],\n _错误: ['错误', '錯誤', 'Error', 'エラー', '오류', 'Ошибка'],\n _排除关键字: [\n '排除关键字',\n '排除關鍵字',\n 'Exclude keywords',\n 'キーワードを除外',\n '키워드 제외',\n 'Исключить ключевые слова',\n ],\n _Chrome108版本转换WebM失败的问题: [\n '从 Chrome 108 版本开始,浏览器的一些变化导致下载器转换 WebM 视频失败。
    现已修复转换功能。',\n '從 Chrome 108 版本開始,瀏覽器的一些變化導致下載器轉換 WebM 影片失敗。
    現已修復轉換功能。',\n 'Starting with Chrome version 108, some changes in the browser caused the downloader to fail to convert WebM videos.
    The conversion function is now fixed.',\n 'Chrome バージョン 108 以降、ブラウザーの一部の変更により、ダウンローダーが WebM ビデオの変換に失敗しました。
    変換機能を修正しました。',\n 'Chrome 버전 108부터 브라우저의 일부 변경으로 인해 다운로더가 WebM 비디오를 변환하지 못했습니다.
    변환 기능이 수정되었습니다.',\n 'Начиная с Chrome версии 108, некоторые изменения в браузере приводили к тому, что загрузчик не мог конвертировать видео WebM.
    Функция преобразования теперь исправлена.',\n ],\n _特定用户的多图作品不下载最后几张图片: [\n '特定用户的多图作品不下载最后几张图片',\n '特定使用者的多圖作品不下載最後幾張圖片',\n `Don't download the last few images for specific user's multi-image works`,\n '特定のユーザーのマルチイメージ作品の最後のいくつかのイメージをダウンロードしないでください',\n '특정 사용자의 다중 이미지 작품에 대한 마지막 몇 개의 이미지를 다운로드하지 마십시오.',\n 'Не загружайте несколько последних изображений для работы с несколькими изображениями конкретного пользователя.',\n ],\n _不下载最后几张图片: [\n '不下载最后几张图片',\n '不下載最後幾張圖片',\n 'Do not download the last few images',\n '最後の数枚の画像をダウンロードしない',\n '마지막 몇 개의 이미지를 다운로드하지 마십시오',\n 'Не загружайте последние несколько изображений',\n ],\n _提示0表示不生效: [\n '0 表示不生效',\n '0 表示不生效',\n '0 means no effect',\n '0 は影響なしを意味します',\n '0은 영향이 없음을 의미합니다.',\n '0 означает отсутствие эффекта',\n ],\n _如果作品含有某些标签则对这个作品使用另一种命名规则: [\n '如果作品含有某些特定标签,则对这个作品使用另一种命名规则',\n '如果作品含有某些特定標籤,則對這個作品使用另一種命名規則',\n 'Use a different naming rule for the work if it has certain tags',\n '特定のタグがある場合は、作品に別の命名規則を使用する',\n '특정 태그가 있는 경우 작업에 다른 명명 규칙을 사용하십시오.',\n 'Используйте другое правило именования для работы, если она имеет определенные теги',\n ],\n _升级到manifest_v3的提示: [\n '下载器已升级到 Manifest V3。
    如果你在下载时遇到问题,请打开扩展管理页面,重新加载本扩展。',\n '下載器已升級到 Manifest V3。
    如果你在下載時遇到問題,請開啟擴充套件管理頁面,重新載入本擴充套件。',\n 'Downloader has been upgraded to Manifest V3.
    If you encounter problems when downloading, please open the extension management page and reload this extension.',\n 'Downloader が Manifest V3 にアップグレードされました。
    ダウンロード中に問題が発生した場合は、拡張機能の管理ページを開いて、この拡張機能をリロードしてください。',\n '다운로더가 Manifest V3로 업그레이드되었습니다.
    다운로드 시 문제가 발생하면 확장 프로그램 관리 페이지를 열고 이 확장 프로그램을 새로고침하세요.',\n 'Загрузчик обновлен до версии Manifest V3.
    Если у вас возникли проблемы при загрузке, откройте страницу управления расширением и перезагрузите это расширение.',\n ],\n _AI作品: [\n 'AI 作品',\n 'AI 作品',\n 'AI works',\n 'AIが働く',\n 'AI 작동',\n 'ИИ работает',\n ],\n _AI生成: [\n 'AI 生成',\n 'AI 生成',\n 'AI-generated',\n 'AI 生成',\n 'AI 생성',\n 'сгенерированный ИИ',\n ],\n _非AI生成: [\n '非 AI 生成',\n '非 AI 生成',\n 'Not AI-generated',\n 'AI生成ではない',\n 'AI 생성 아님',\n 'Не сгенерировано ИИ',\n ],\n _未知: [\n '未知',\n '未知',\n 'Unknown',\n '知らない',\n '알려지지 않은',\n 'Неизвестный',\n ],\n _AI未知作品的说明: [\n '早期作品没有标记,无法判断',\n '早期作品沒有標記,無法判斷',\n 'Early works are not marked and cannot be judged',\n '初期の作品は採点せず、審査不可',\n '초기 작품은 표시되지 않으며 평가할 수 없습니다.',\n 'Ранние работы не отмечены и не могут быть оценены',\n ],\n _用户可以选择是否下载AI生成的作品: [\n '用户可以选择是否下载由 AI 生成的作品。',\n '使用者可以選擇是否下載由 AI 生成的作品。',\n 'Users can choose whether to download AI-generated works.',\n 'ユーザーは、AI によって生成された作品をダウンロードするかどうかを選択できます。',\n '사용자는 AI가 생성한 작품을 다운로드할지 여부를 선택할 수 있습니다.',\n 'Пользователи могут выбирать, загружать ли работы, созданные ИИ.',\n ],\n _文件下载顺序: [\n '文件下载顺序',\n '檔案下載順序',\n 'File download order',\n 'ファイルのダウンロード順序',\n '파일 다운로드 순서',\n 'Порядок загрузки файлов',\n ],\n _降序: [\n '降序',\n '降序',\n 'Descending',\n '降順',\n '내림차순',\n 'в порядке убывания',\n ],\n _升序: [\n '升序',\n '升序',\n 'Ascending',\n '昇順',\n '오름차순',\n 'возрастающий порядок',\n ],\n _排序依据: [\n '排序依据',\n '排序依據',\n 'Sort by',\n 'ソート基準',\n '정렬 기준',\n 'Сортировать по',\n ],\n _作品ID: [\n '作品 ID',\n '作品 ID',\n 'Work ID',\n '作品ID',\n 'ID 아이디',\n 'РРабочий идентификатор',\n ],\n _收藏时间: [\n '收藏时间',\n '收藏時間',\n 'Bookmark time',\n 'ブックマーク時間',\n '북마크 시간',\n 'время сбора',\n ],\n _收藏数量2: [\n '收藏数量',\n '收藏數量',\n 'Number of bookmarks',\n 'ブックマークの数',\n '북마크 수',\n 'Колличество закладок',\n ],\n _重新显示帮助: [\n '重新显示帮助',\n '重新顯示幫助',\n 'Redisplay help',\n 'ヘルプを再表示',\n '도움말 다시 표시',\n 'Повторно отобразить справку',\n ],\n _自定义标签分隔符号的提示: [\n '现在你可以自定义文件名中使用的标签分隔符号,以替换默认的 ,。',\n '現在你可以自定義檔名中使用的標籤分隔符號,以替換預設的 ,。',\n 'You can now customize the tag separator used in filenames to replace the default ,',\n 'ファイル名で使用されるタグ区切りをカスタマイズして、デフォルトの , を置き換えることができるようになりました',\n '이제 파일 이름에 사용되는 태그 구분 기호를 사용자 지정하여 기본 ,',\n 'Теперь вы можете настроить разделитель тегов, используемый в именах файлов, чтобы заменить используемый по умолчанию ,',\n ],\n _高亮关注的用户: [\n '高亮关注的用户',\n '高亮關注的使用者',\n 'Highlight following users',\n 'フォローしているユーザーを強調表示する',\n '다음 사용자 강조표시',\n 'Выделить следующих пользователей',\n ],\n _高亮关注的用户的说明: [\n '你关注(Following)的用户的名字会具有黄色背景,或者显示为黄色。
    这便于你确认自己是否关注了某个用户。',\n '你關注(Following)的使用者的名字會具有黃色背景,或者顯示為黃色。
    這便於你確認自己是否關注了某個使用者。',\n 'The names of users you are following will have a yellow background, or be displayed in yellow.
    This is convenient for you to confirm whether you follow a certain user.',\n 'フォローしているユーザーの名前は背景が黄色、または黄色で表示されます。
    特定のユーザーをフォローしているかどうかを確認するのに便利です。',\n '팔로우하는 사용자의 이름은 노란색 배경으로 표시되거나 노란색으로 표시됩니다.
    특정 사용자를 팔로우하고 있는지 확인할 때 편리합니다.',\n 'Имена пользователей, на которых вы подписаны, будут иметь желтый фон или отображаться желтым цветом.
    Это удобно для вас, чтобы подтвердить, подписаны ли вы на определенного пользователя',\n ],\n _正在加载关注用户列表: [\n '正在加载关注用户列表',\n '正在載入關注使用者列表',\n 'Loading list of followed users',\n 'フォローしているユーザーのリストを読み込み中',\n '팔로우한 사용자 목록 로드 중',\n 'Загрузка списка отслеживаемых пользователей',\n ],\n _已更新关注用户列表: [\n '已更新关注用户列表',\n '已更新關注使用者列表',\n 'The list of following users has been updated',\n 'フォローしているユーザーのリストが更新されました',\n '다음 사용자 목록이 업데이트되었습니다',\n 'Список следующих пользователей обновлен',\n ],\n _Kiwi浏览器可能不能建立文件夹的bug: [\n '如果你使用的是 Kiwi 浏览器,它可能不会建立文件夹。这是 Kiwi 浏览器的 bug。',\n '如果你使用的是 Kiwi 瀏覽器,它可能不會建立資料夾。這是 Kiwi 瀏覽器的 bug。',\n 'If you are using the Kiwi browser, it may not create the folder. This is a bug in the Kiwi browser',\n 'Kiwi ブラウザを使用している場合、フォルダが作成されない場合があります。 これは Kiwi ブラウザのバグです。',\n '키위 브라우저를 사용하는 경우 폴더가 생성되지 않을 수 있습니다. 이것은 Kiwi 브라우저의 버그입니다.',\n 'Если вы используете браузер Kiwi, он может не создать папку. Это баг браузера Киви.',\n ],\n _优化移动设备上的用户体验: [\n '优化移动设备上的用户体验。',\n '最佳化移動裝置上的使用者體驗。',\n 'Optimize user experience on mobile devices.',\n 'モバイルデバイスでのユーザーエクスペリエンスを最適化します。',\n '모바일 장치에서 사용자 경험을 최적화합니다.',\n 'Оптимизируйте взаимодействие с пользователем на мобильных устройствах.',\n ],\n _导出CSV文件的提示: [\n 'CSV 文件的可读性更好,但它不能用于恢复(导入)抓取结果。',\n 'CSV 檔案的可讀性更好,但它不能用於恢復(匯入)抓取結果。',\n 'A CSV file is more readable, but it cannot be used to restore (import) crawl results.',\n 'CSV ファイルは読みやすいですが、クロール結果の復元 (インポート) には使用できません。',\n 'CSV 파일은 더 읽기 쉽지만 크롤링 결과를 복원(가져오기)하는 데 사용할 수 없습니다.',\n 'CSV-файл более удобен для чтения, но его нельзя использовать для восстановления (импорта) результатов сканирования.',\n ],\n _批量收藏作品时减慢速度: [\n '批量收藏作品时减慢速度,以减少 429 错误发生的概率',\n '批量收藏作品时减慢速度,以减少 429 错误发生的概率',\n 'Slow down when batch bookmarking works to reduce chance of 429 errors',\n 'バッチブックマークが機能すると、429 エラーの可能性を減らすために速度が低下します。',\n '429 오류 가능성을 줄이기 위해 일괄 북마크가 작동할 때 속도를 늦춥니다.',\n 'Замедлите работу, когда пакетная закладка работает, чтобы уменьшить вероятность ошибки 429',\n ],\n _停止抓取: [\n '停止抓取',\n '停止擷取',\n 'Stop crawling',\n 'クロールをやめる',\n '크롤링 중지',\n 'Остановить сканирование',\n ],\n _已停止抓取: [\n '已停止抓取',\n '已停止擷取',\n 'Crawl stopped',\n 'クロールを停止しました',\n '크롤링 중지됨',\n 'Сканирование остановлено',\n ],\n _导入ID列表: [\n '导入 ID 列表',\n '匯入 ID 列表',\n 'Import ID list',\n 'インポートIDリスト',\n 'ID 목록 가져오기',\n 'Список идентификаторов импорта',\n ],\n _导出ID列表: [\n '获取作品 ID 列表后导出 ID 列表,并停止任务',\n '獲取作品 ID 列表後匯出 ID 列表,並停止任務',\n 'After obtaining the work ID list, export the ID list and stop the task',\n 'ワークIDリストを取得後、IDリストをエクスポートしてタスクを停止する',\n '작업 ID 목록을 가져온 후 ID 목록을 내보내고 작업을 중지합니다',\n 'После получения списка идентификаторов работ экспортируйте список идентификаторов и остановите задачу',\n ],\n _导入的用户ID数量: [\n '导入的用户 ID 数量:',\n '匯入的使用者 ID 數量:',\n 'Number of user IDs imported: ',\n 'インポートされたユーザー ID の数: ',\n '가져온 사용자 ID 수: ',\n 'Количество импортированных идентификаторов пользователей:',\n ],\n _任务已中止: [\n '任务已中止',\n '任務已中止',\n 'task aborted',\n 'タスクが中止されました',\n '작업이 중단됨',\n 'задача прервана',\n ],\n _新增的关注用户达到每日限制: [\n '新增的关注用户数量达到 {}, 下载器已中止任务,以免你的账号被 Pixiv 限制。
    建议明天再执行此任务。',\n '新增的關注使用者數量達到 {}, 下載器已中止任務,以免你的賬號被 Pixiv 限制。
    建議明天再執行此任務。',\n 'The number of newly added followers has reached {}, the downloader has stopped the task to prevent your account from being restricted by Pixiv.
    It is recommended to perform this task again tomorrow.',\n '新しく追加されたフォロワーの数が {} に達しました。あなたのアカウントが Pixiv によって制限されるのを防ぐために、ダウンローダーはタスクを停止しました。
    このタスクは明日もう一度実行することをお勧めします。',\n '새로 추가된 팔로워 수가 {}에 도달했습니다. 다운로더가 작업을 중지하여 Pixiv에서 귀하의 계정을 제한하지 않도록 했습니다.
    내일 이 작업을 다시 수행하는 것이 좋습니다.',\n 'Количество новых подписчиков достигло {}, загрузчик остановил задачу, чтобы предотвратить ограничение вашей учетной записи Pixiv.
    Рекомендуется повторить это задание завтра.',\n ],\n _没有找到关注按钮的提示: [\n '跳过关注用户 {} 因为没有找到关注按钮。你可以手动关注此用户。再次执行此任务有可能解决此问题。',\n '跳過關注使用者 {} 因為沒有找到關注按鈕。你可以手動關注此使用者。再次執行此任務有可能解決此問題。',\n 'Skip following user {} because no follow button was found. You can follow this user manually. Performing this task again may resolve the issue.',\n 'フォロー ボタンが見つからなかったため、ユーザー {} のフォローをスキップします。このユーザーを手動でフォローできます。 このタスクを再度実行すると、問題が解決される可能性があります。',\n '팔로우 버튼을 찾을 수 없으므로 사용자 {} 팔로우를 건너뜁니다. 이 사용자를 수동으로 팔로우할 수 있습니다. 이 작업을 다시 수행하면 문제가 해결될 수 있습니다.',\n 'Пропустить подписку на пользователя {}, поскольку кнопка подписки не найдена. Вы можете подписаться на этого пользователя вручную. Повторное выполнение этой задачи может решить проблему.',\n ],\n _你的账号已经被Pixiv限制: [\n '你的账号已经被 Pixiv 限制',\n '你的賬號已經被 Pixiv 限制',\n 'Your account has been restricted by Pixiv',\n 'あなたのアカウントはPixivによって制限されています',\n '귀하의 계정은 Pixiv에 의해 제한되었습니다.',\n 'Ваша учетная запись была ограничена Pixiv',\n ],\n _模拟用户点击: [\n '下载器发送的 API 返回 400 错误(需要 recaptcha enterprise score token),切换到模拟用户点击的方式,这会使用较多的硬件资源。',\n '下載器傳送的 API 返回 400 錯誤(需要 recaptcha enterprise score token),切換到模擬使用者點選的方式,這會使用較多的硬體資源。',\n 'The API sent by the downloader returns a 400 error (recaptcha enterprise score token is required), and switches to the method of simulating user clicks, which will use more hardware resources.',\n 'ダウンローダーによって送信された API は 400 エラー (recaptcha enterprise score token が必要です) を返し、より多くのハードウェア リソースを使用するユーザーのクリックをシミュレートする方法に切り替わります。',\n '다운로더가 보낸 API는 400 오류(recaptcha enterprise score token 필요)를 반환하고 더 많은 하드웨어 리소스를 사용하는 사용자 클릭 시뮬레이션 방법으로 전환합니다.',\n 'API, отправленный загрузчиком, возвращает ошибку 400 (требуется recaptcha enterprise score token) и переключается на метод имитации пользовательских кликов, который будет использовать больше аппаратных ресурсов.',\n ],\n _提示可以重新执行批量关注任务: [\n '如果该标签页失去响应,或者关注的用户有遗漏,请关闭标签页,再重新打开,重新执行此任务。',\n '如果該標籤頁失去響應,或者關注的使用者有遺漏,請關閉標籤頁,再重新開啟,重新執行此任務。',\n 'If the tab becomes unresponsive, or if you miss a follower, close the tab, reopen it, and redo the task.',\n 'タブが応答しなくなった場合、またはフォロワーを見逃した場合は、タブを閉じて再度開き、タスクをやり直してください。',\n '탭이 응답하지 않거나 팔로어를 놓친 경우 탭을 닫았다가 다시 열고 작업을 다시 실행하십시오.',\n 'Если вкладка перестает отвечать на запросы или вы пропустили подписчика, закройте вкладку, снова откройте ее и повторите задачу.',\n ],\n _新增x个: [\n '新增 {} 个',\n '新增 {} 個',\n 'Added {}',\n '追加した {}',\n '추가됨 {}',\n 'Добавлен {}',\n ],\n _优化批量关注用户的功能: [\n '优化批量关注用户的功能',\n '最佳化批次關注使用者的功能',\n 'Optimize the function of following users in batches',\n 'ユーザーの一括フォロー機能を最適化',\n '사용자 일괄 팔로우 기능 최적화',\n 'Оптимизируйте функцию подписки на пользователей в пакетном режиме.',\n ],\n _修复了显示更大的缩略图失效的问题: [\n '修复了“显示更大的缩略图”失效的问题',\n '修復了“顯示更大的縮圖”失效的問題',\n 'Fixed an issue where \"Show Larger Thumbnails\" didn\\'t work',\n '「大きなサムネイルを表示」が機能しない問題を修正しました',\n '\"큰 축소판 보기\"가 작동하지 않는 문제를 수정했습니다.',\n 'Исправлена ​​ошибка, из-за которой не работал параметр «Показать увеличенные эскизы».',\n ],\n _可能发生了错误请刷新页面重试: [\n '可能发生了错误。
    如果下载进度卡住,请刷新页面重试,或者重启浏览器。',\n '可能發生了錯誤。
    如果下載進度卡住,請重新整理頁面重試,或者重啟瀏覽器。',\n 'An error may have occurred.
    If the download progress is stuck, please refresh the page and try again, or restart the browser.',\n 'エラーが発生した可能性があります。
    ダウンロードの進行が進まない場合は、ページを更新して再試行するか、ブラウザを再起動してください。',\n '오류가 발생했을 수 있습니다.
    다운로드 진행이 중단되면 페이지를 새로 고친 후 다시 시도하거나 브라우저를 다시 시작하세요.',\n 'Возможно, произошла ошибка.
    Если процесс загрузки завис, обновите страницу и повторите попытку или перезапустите браузер.',\n ],\n _在多图作品页面里显示缩略图列表: [\n '在多图作品页面里显示缩略图列表',\n '在多圖作品頁面裡顯示縮圖列表',\n 'In the multi-image work page, display the thumbnail list',\n '複数画像作品ページでサムネイル一覧を表示',\n '멀티 이미지 작품 페이지에서 썸네일 목록을 표시',\n 'На рабочей странице с несколькими изображениями отобразите список эскизов',\n ],\n _提交: ['提交', '提交', 'Submit', '提出する', '제출하다', 'Подавать'],\n _已导出被删除的作品的ID列表: [\n '已导出被删除的作品的 ID 列表',\n '已匯出被刪除的作品的 ID 列表',\n 'List of IDs of deleted works exported',\n 'エクスポートされた削除作品のID一覧',\n '내보낸 삭제된 작품의 ID 목록',\n 'Список идентификаторов удаленных работ экспортирован',\n ],\n _在收藏页面里提示有辅助功能可用: [\n '在你的收藏页面里,下载器的“更多”标签页里有一些功能可以帮助管理你的收藏。',\n '在你的收藏頁面裡,下載器的“更多”標籤頁裡有一些功能可以幫助管理你的收藏。',\n `On your bookmarks page, the Downloader's \"More\" tab has some features to help you manage your bookmarks.`,\n 'ブックマーク ページのダウンローダーの [その他] タブには、ブックマークの管理に役立つ機能がいくつかあります。',\n '북마크 페이지에서 다운로더의 \"더보기\" 탭에는 북마크를 관리하는 데 도움이 되는 몇 가지 기능이 있습니다.',\n 'На странице закладок на вкладке «Дополнительно» Downloader есть некоторые функции, которые помогут вам управлять своими закладками.',\n ],\n _预览作品的详细信息: [\n '预览作品的详细信息',\n '預覽作品時的詳細資料',\n 'Preview the details of the work',\n 'プレビュー作品の詳細です',\n '작품의 상세한 정보를 미리보다',\n 'Подробности предварительного показа',\n ],\n _预览作品的详细信息的说明: [\n '鼠标放在作品缩略图上即可查看作品数据',\n '滑鼠放在作品縮圖上即可檢視作品資料',\n 'Mouse over the thumbnail of the work to view the work data',\n '作品のサムネイルにマウスをかざすだけで作品データを見ることができます',\n '마우스를 작품 썸네일 위에 놓으면 작품 데이터를 볼 수 있다',\n 'Данные о работе можно увидеть с помощью мыши на сокращённом графике',\n ],\n _显示区域宽度: [\n '显示区域宽度',\n '顯示區域寬度',\n 'Display area width',\n '表示領域幅です',\n '영역 너비 보이기',\n 'Покажи ширину зоны',\n ],\n _写入剪贴板失败: [\n '写入剪贴板失败',\n '寫入剪貼簿失敗',\n 'Writing to clipboard failed',\n 'クリップボードへの書き込みに失敗しました',\n '클립보드에 쓰지 못했습니다.',\n 'Запись в буфер обмена не удалась',\n ],\n _在搜索页面里移除已关注用户的作品: [\n '在搜索页面里移除已关注用户的作品',\n '在搜尋頁面裡移除已關注使用者的作品',\n 'Remove the works of followed users from the search page',\n 'フォローしているユーザーの作品を検索ページから削除します',\n '검색 페이지에서 팔로우한 사용자의 작품을 제거합니다.',\n 'Удалить работы подписавшихся пользователей со страницы поиска',\n ],\n _在搜索页面里移除已关注用户的作品的说明: [\n '这样只会显示未关注用户的作品,便于你发现新的喜欢的用户。
    只在搜索页面里生效。',\n '這樣只會顯示未關注使用者的作品,便於你發現新的喜歡的使用者。
    只在搜尋頁面裡生效。',\n 'This will only display the works of unfollowed users, making it easier for you to discover new users you like.
    Only takes effect on the search page.',\n 'フォローを解除しているユーザーの作品のみが表示されるので、新たに好みのユーザーを見つけやすくなります。
    検索ページでのみ有効です。',\n '팔로우하지 않은 사용자의 작품만 표시되므로 마음에 드는 새로운 사용자를 더 쉽게 찾을 수 있습니다.
    검색 페이지에만 적용됩니다.',\n 'При этом будут отображаться только работы пользователей, на которых вы не подписаны, что облегчит вам поиск новых пользователей, которые вам нравятся.
    Действует только на странице поиска.',\n ],\n _使用方向键和空格键切换图片: [\n '使用方向键和空格键切换图片',\n '使用方向鍵和空格鍵切換圖片',\n 'Use the arrow keys and space bar to switch images',\n '矢印キーとスペースバーを使用して画像を切り替えます',\n '이미지를 전환하려면 화살표 키와 스페이스바를 사용하세요.',\n 'Используйте клавиши со стрелками и пробел для переключения изображений.',\n ],\n _使用方向键和空格键切换图片的提示: [\n '← ↑ 上一张图片
    → ↓ 下一张图片
    空格键 下一张图片',\n '← ↑ 上一張圖片
    → ↓ 下一張圖片
    空格鍵 下一張圖片',\n '← ↑ Previous image
    → ↓ Next image
    Spacebar Next image',\n '← ↑ 前の画像
    → ↓ 次の画像
    スペースバー 次の画像',\n '← ↑ 이전 이미지
    → ↓ 다음 이미지
    스페이스바 다음 이미지',\n '← ↑ Предыдущее изображение
    → ↓ Следующее изображение
    Пробел Следующее изображение',\n ],\n _快捷键列表: [\n '快捷键列表',\n '快捷鍵列表',\n 'Shortcut list',\n 'ショートカットリスト',\n '바로가기 목록',\n 'Список ярлыков',\n ],\n _预览作品的快捷键说明: [\n `Alt + P 关闭/启用预览作品功能
    \n 当你查看预览图时,可以使用如下快捷键:
    \n B(ookmark) 收藏预览的作品
    \n C(urrent) 下载当前预览的图片
    \n D(ownload) 下载当前预览的作品
    \n Esc 关闭预览图
    \n ← ↑ 上一张图片
    \n → ↓ 下一张图片
    \n 空格键 下一张图片`,\n `Alt + P 關閉/啟用預覽作品功能
    \n 當你檢視預覽圖時,可以使用如下快捷鍵:
    \n B(ookmark) 收藏預覽的作品
    \n C(urrent) 下載當前預覽的圖片
    \n D(ownload) 下載當前預覽的作品
    \n Esc 關閉預覽圖
    \n ← ↑ 上一張圖片
    \n → ↓ 下一張圖片
    \n 空格鍵 下一張圖片`,\n `Alt + P Turn off/enable the preview function
    \n When you view the preview, you can use the following shortcut keys:
    \n B(ookmark) Bookmark previewed work
    \n C(urrent) Download the currently previewed image
    \n D(download) Download the currently previewed work
    \n Esc Close preview
    \n ← ↑ Previous image
    \n → ↓ Next image
    \n Space bar Next image`,\n `Alt + P プレビュー機能をオフ/有効にします
    \n プレビューを表示するときは、次のショートカット キーを使用できます。
    \n B(ookmark) プレビューした作品をブックマークします
    \n C(urrent) 現在プレビューされている画像をダウンロードします
    \n D(ownload) 現在プレビュー中の作品をダウンロードします
    \n Esc プレビューを閉じる
    \n ← ↑ 前の画像
    \n → ↓ 次の画像
    \n スペースバー 次の画像`,\n `Alt + P 미리보기 기능 끄기/활성화
    \n 미리보기를 볼 때 다음 단축키를 사용할 수 있습니다.
    \n B(ookmark) 북마크 미리보기 작업
    \n C(urrent) 현재 미리보기 이미지 다운로드
    \n D(ownload) 현재 미리보기된 작품 다운로드
    \n Esc 미리보기 닫기
    \n ← ↑ 이전 이미지
    \n → ↓ 다음 이미지
    \n 스페이스바 다음 이미지`,\n `Alt + P Выключить/включить функцию предварительного просмотра
    \n При предварительном просмотре вы можете использовать следующие сочетания клавиш:
    \n B(ookmark) Добавить в закладки предварительно просмотренную работу
    \n C(urrent) Загрузите просматриваемое в данный момент изображение
    \n D(ownload) Загрузите просматриваемую в данный момент работу
    \n Esc Закрыть предварительный просмотр
    \n ← ↑ Предыдущее изображение
    \n → ↓ Следующее изображение
    \n Пробел Следующее изображение`,\n ],\n _导出收藏列表: [\n '导出收藏列表(JSON)',\n '匯出收藏列表(JSON)',\n 'Export bookmark list(JSON)',\n 'ブックマークリストをエクスポートする(JSON)',\n '북마크 목록 내보내기(JSON)',\n 'Экспортировать список закладок(JSON)',\n ],\n _导入收藏列表: [\n '导入收藏列表(批量添加收藏)',\n '匯入收藏列表(批次新增收藏)',\n 'Import bookmark list (add bookmarks in batches)',\n 'ブックマークリストをインポート(ブックマークを一括追加)',\n '북마크 목록 가져오기(북마크 일괄 추가)',\n 'Импортировать список закладок (добавлять закладки пакетно)',\n ],\n _同步收藏列表的说明: [\n '你可以导出自己或其他用户的收藏列表,然后批量添加收藏。
    这可以用来拷贝其他用户的收藏列表。
    另外,如果你有多个 Pixiv 账号,想要同步它们的收藏列表,可以先导出一个账号的收藏列表,然后使用其他账号导入收藏列表。

    当你处于自己或其他人的书签页面里时,可以在下载器的“更多”分类里找到此功能。',\n '你可以匯出自己或其他使用者的收藏列表,然後批次新增收藏。
    這可以用來複製其他使用者的收藏列表。
    另外,如果你有多個 Pixiv 賬號,想要同步它們的收藏列表,可以先匯出一個賬號的收藏列表,然後使用其他賬號匯入收藏列表。

    當你處於自己或其他人的書籤頁面裡時,可以在下載器的“更多”分類裡找到此功能。',\n `You can export your own or other users' bookmark lists and then add bookmarks in batches.
    This can be used to copy another user's bookmark list.
    In addition, if you have multiple Pixiv accounts and want to synchronize their bookmark lists, you can first export the bookmark list of one account, and then use other accounts to import the bookmark list.

    This feature can be found in the \"More\" category of the downloader when you are on your own or someone else's bookmark page.`,\n '自分や他のユーザーのブックマークリストをエクスポートして、一括でブックマークを追加できます。
    他のユーザーのブックマークリストをコピーすることもできます。
    また、複数のPixivアカウントを持っていて、ブックマークを同期したい場合にも使用できます。リストの場合、最初に 1 つのアカウントのブックマーク リストをエクスポートし、次に他のアカウントを使用してブックマーク リストをインポートできます。

    この機能は、自分または他の人のブックマーク ページにいるときに、ダウンローダーの「その他」カテゴリにあります。',\n '자신 또는 다른 사용자의 북마크 목록을 내보낸 후 일괄적으로 북마크를 추가할 수 있습니다.
    이는 다른 사용자의 북마크 목록을 복사하는 데 사용할 수 있습니다.
    또한 Pixiv 계정이 여러 개 있고 북마크를 동기화하려는 경우 목록의 경우 먼저 한 계정의 북마크 목록을 내보낸 다음 다른 계정을 사용하여 북마크 목록을 가져올 수 있습니다.

    이 기능은 자신이나 다른 사람의 북마크 페이지에 있을 때 다운로더의 \"더 보기\" 카테고리에서 찾을 수 있습니다.',\n 'Вы можете экспортировать свои списки закладок или списки закладок других пользователей, а затем добавлять закладки в пакетном режиме.
    Это можно использовать для копирования списка закладок другого пользователя.
    Кроме того, если у вас есть несколько учетных записей Pixiv и вы хотите синхронизировать их закладки списки, вы можете сначала экспортировать список закладок одной учетной записи, а затем использовать другие учетные записи для импорта списка закладок.

    Эту функцию можно найти в категории «Дополнительно» загрузчика, когда вы находитесь на своей или чужой странице закладок.',\n ],\n _加载收藏列表: [\n '正在加载你的收藏列表,以避免重复添加收藏',\n '正在載入你的收藏列表,以避免重複新增收藏',\n 'Loading your bookmark list to avoid duplicate bookmarks',\n 'ブックマークの重複を避けるためにブックマーク リストをロードする',\n '중복 북마크를 방지하기 위해 북마크 목록 로드 중',\n 'Загрузка списка закладок, чтобы избежать дублирования закладок',\n ],\n _一共有x个: [\n '一共有 {} 个',\n '一共有 {} 個',\n 'There are {} in total',\n '合計 {} 個あります',\n '총 {}개가 있습니다.',\n 'Всего {}',\n ],\n _跳过x个: [\n '跳过了 {} 个已存在的收藏',\n '跳過了 {} 個已存在的收藏',\n '{} existing bookmarks skipped',\n '{} 個の既存のブックマークがスキップされました',\n '{}개의 기존 북마크를 건너뛰었습니다.',\n '{} существующих закладок пропущено',\n ],\n}\n\nexport { langText }\n","import { EVT } from './EVT'\n\n// 监听页面的无刷新切换\nclass ListenPageSwitch {\n constructor() {\n this.supportListenHistory()\n this.listenPageSwitch()\n }\n\n // 为监听 url 变化的事件提供支持\n private supportListenHistory() {\n const s = document.createElement('script')\n const url = chrome.runtime.getURL('lib/listen_history_change.js')\n s.src = url\n document.head.appendChild(s)\n }\n\n // 无刷新切换页面时派发事件\n private listenPageSwitch() {\n // 点击浏览器的前进或后退按钮会触发 popstate 事件\n // 点击链接进入一个 url 不同的页面是 pushState 操作\n // 现在还没有遇到 replaceState 操作\n ;['pushState', 'popstate', 'replaceState'].forEach((item) => {\n window.addEventListener(item, () => {\n EVT.fire('pageSwitch')\n })\n })\n }\n}\n\nnew ListenPageSwitch()\n","import { theme } from './Theme'\n\n// loading 图标\nclass Loading {\n private id = 'xzLoadingWrap'\n\n private readonly html = `\n
    \n
    \n \n \n \n
    \n
    `\n\n private _show = false\n\n public set show(val: boolean) {\n this._show = val\n this._show ? this.showEl() : this.hiddenEl()\n }\n\n public get show() {\n return this._show\n }\n\n private create() {\n document.body.insertAdjacentHTML('beforeend', this.html)\n const el = document.body.querySelector('#' + this.id) as HTMLDivElement\n theme.register(el)\n return el\n }\n\n private getEl() {\n let el = document.body.querySelector('#' + this.id)\n if (el) {\n return el as HTMLDivElement\n } else {\n return this.create()\n }\n }\n\n private showEl() {\n this.getEl().style.display = 'flex'\n }\n\n private hiddenEl() {\n this.getEl().style.display = 'none'\n }\n}\n\nconst loading = new Loading()\nexport { loading }\n","import { EVT } from './EVT'\nimport { theme } from './Theme'\nimport { Colors } from './Colors'\nimport { bg } from './BG'\nimport { lang } from './Lang'\nimport { store } from './store/Store'\nimport { toast } from './Toast'\nimport { Tools } from './Tools'\nimport { Utils } from './utils/Utils'\nimport { settings } from './setting/Settings'\nimport { DateFormat } from './utils/DateFormat'\nimport { Config } from './Config'\n\n// 日志\nclass Log {\n constructor() {\n this.scrollToBottom()\n\n window.addEventListener(EVT.list.clearLog, () => {\n this.clear()\n })\n\n const clearRecordEvents = [EVT.list.clearLog, EVT.list.downloadStop]\n clearRecordEvents.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.record = []\n })\n })\n\n window.addEventListener(EVT.list.crawlComplete, () => {\n if (settings.exportLog && settings.exportLogTiming === 'crawlComplete') {\n this.export()\n }\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n if (\n settings.exportLog &&\n settings.exportLogTiming === 'downloadComplete'\n ) {\n this.export()\n }\n })\n }\n\n private id = 'logWrap' // 日志区域元素的 id\n private wrap = document.createElement('div') // 日志容器的区域\n private logArea = document.createElement('div') // 日志主体区域\n private refresh = document.createElement('span') // 刷新时使用的元素\n private readonly levelColor = [\n 'inherit',\n Colors.textSuccess,\n Colors.textWarning,\n Colors.textError,\n ]\n\n private max = 300\n private count = 0\n\n private record: { html: string; level: number }[] = []\n\n private toBottom = false // 指示是否需要把日志滚动到底部。当有日志被添加或刷新,则为 true。滚动到底部之后复位到 false,避免一直滚动到底部。\n\n // 添加日志\n /*\n str 日志文本\n level 日志等级\n br 换行标签的个数\n keepShow 追加日志的模式,默认为 true,把这一条日志添加后不再修改。false 则是刷新显示这条消息。\n\n level 日志等级:\n 0 normal\n 1 success\n 2 warning\n 3 error\n */\n private add(str: string, level: number, br: number, keepShow: boolean) {\n this.checkElement()\n let span = document.createElement('span')\n if (!keepShow) {\n span = this.refresh\n } else {\n this.count++\n }\n\n span.innerHTML = str\n\n span.style.color = this.levelColor[level]\n\n while (br > 0) {\n span.appendChild(document.createElement('br'))\n br--\n }\n\n this.logArea.appendChild(span)\n this.toBottom = true // 需要把日志滚动到底部\n\n // 把持久日志保存到记录里\n if (keepShow) {\n this.record.push({ html: span.outerHTML, level })\n }\n }\n\n public log(str: string, br: number = 1, keepShow: boolean = true) {\n this.add(str, 0, br, keepShow)\n }\n\n public success(str: string, br: number = 1, keepShow: boolean = true) {\n this.add(str, 1, br, keepShow)\n }\n\n public warning(str: string, br: number = 1, keepShow: boolean = true) {\n this.add(str, 2, br, keepShow)\n }\n\n public error(str: string, br: number = 1, keepShow: boolean = true) {\n this.add(str, 3, br, keepShow)\n }\n\n /**将刷新的日志元素持久化 */\n // 刷新区域通常用于显示进度,例如 0/10, 1/10, 2/10... 10/10\n // 它们使用同一个 span 元素,并且同时只能存在一个刷新区域\n // 当显示 10/10 的时候,进度就不会再变化了,此时应该将其“持久化”。生成一个新的 span 元素作为新的刷新区域\n // 这样如果后续又需要显示刷新的元素,不会影响之前已完成“持久化”的日志\n public persistentRefresh() {\n this.refresh = document.createElement('span')\n }\n\n private checkElement() {\n // 如果日志区域没有被添加到页面上,则添加\n let test = document.getElementById(this.id)\n if (test === null) {\n this.wrap = document.createElement('div')\n this.wrap.id = this.id\n this.logArea = document.createElement('div')\n this.logArea.classList.add('beautify_scrollbar', 'logContent')\n if (Config.mobile) {\n this.wrap.classList.add('mobile')\n }\n this.wrap.append(this.logArea)\n document.body.insertAdjacentElement('beforebegin', this.wrap)\n theme.register(this.wrap)\n // 虽然可以应用背景图片,但是由于日志区域比较狭长,背景图片的视觉效果不佳,看起来比较粗糙,所以还是不应用背景图片了\n // bg.useBG(this.wrap, 0.9)\n }\n\n // 如果页面上的日志条数超过指定数量,则清空\n // 因为日志数量太多的话会占用很大的内存。同时显示 8000 条日志可能占用接近 1 GB 的内存\n if (this.count > this.max) {\n this.clear()\n }\n }\n\n /**移除日志区域 */\n public remove() {\n this.count = 0\n this.wrap.remove()\n }\n\n /**清空显示的日志内容 */\n public clear() {\n this.count = 0\n this.logArea.innerHTML = ''\n }\n\n // 因为日志区域限制了最大高度,可能会出现滚动条,这里使日志总是滚动到底部\n private scrollToBottom() {\n window.setInterval(() => {\n if (this.toBottom) {\n this.logArea.scrollTop = this.logArea.scrollHeight\n this.toBottom = false\n }\n }, 800)\n }\n\n private export() {\n const data: string[] = []\n\n for (const record of this.record) {\n let html = ''\n if (record.level !== 3 && settings.exportLogNormal) {\n html = record.html\n }\n if (record.level === 3 && settings.exportLogError) {\n html = record.html\n }\n\n // 检查排除的关键字\n if (html && settings.exportLogExclude.length > 0) {\n let checkStr = html\n // 如果含有作品链接,则只检查链接后面的部分。这是为了避免因作品 id 中包含要排除的关键字而导致错误的排除\n if (html.includes('')\n checkStr = array[array.length - 1]\n }\n const index = settings.exportLogExclude.findIndex((val) => {\n return checkStr.includes(val)\n })\n if (index === -1) {\n data.push(html)\n }\n }\n }\n\n if (data.length === 0) {\n return\n }\n\n const fileName = `log-${Utils.replaceUnsafeStr(\n Tools.getPageTitle()\n )}-${Utils.replaceUnsafeStr(\n DateFormat.format(store.crawlCompleteTime, settings.dateFormat)\n )}.html`\n\n const content = `\n\n\n
    \n${data.join('\\n')}\n
    \n\n`\n\n const blob = new Blob([content], {\n type: 'text/html',\n })\n\n const url = URL.createObjectURL(blob)\n\n Utils.downloadFile(url, fileName)\n\n const msg = lang.transl('_导出日志成功')\n log.success(msg)\n toast.success(msg, {\n position: 'topCenter',\n })\n }\n}\n\nconst log = new Log()\nexport { log }\n","import { EVT } from './EVT'\nimport { Colors } from './Colors'\nimport { theme } from './Theme'\nimport { lang } from './Lang'\nimport { bg } from './BG'\nimport { Config } from './Config'\n\ninterface MsgOptional {\n btn?: string\n title?: string\n color?: string\n}\n\nexport interface Msg {\n title?: string\n msg: string\n btn?: string\n color?: string\n}\n\n// 简单的消息框\nclass MsgBox {\n constructor() {\n this.bindEvents()\n }\n\n private readonly typeColor: {\n [key: string]: Colors\n } = {\n success: Colors.textSuccess,\n warning: Colors.textWarning,\n error: Colors.textError,\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.showMsg, (ev: CustomEventInit) => {\n const msg = ev.detail.data as Msg\n this.create(msg)\n })\n }\n\n private onceFlags: string[] = []\n\n /** 在当前标签页中只会显示一次的消息\n */\n public once(\n flag: string,\n msg: string,\n type: 'show' | 'warning' | 'success' | 'error' = 'show',\n arg?: MsgOptional\n ) {\n if (this.onceFlags.includes(flag)) {\n return\n }\n this.onceFlags.push(flag)\n\n switch (type) {\n case 'show':\n this.show(msg, arg)\n break\n case 'warning':\n this.warning(msg, arg)\n break\n case 'success':\n this.success(msg, arg)\n break\n case 'error':\n this.error(msg, arg)\n break\n default:\n this.show(msg, arg)\n break\n }\n }\n\n /**\n * 清除某个 once 标记,使其对应的消息可以再次显示\n */\n public resetOnce(flag: string) {\n const index = this.onceFlags.findIndex((str) => str === flag)\n if (index > -1) {\n this.onceFlags.splice(index)\n }\n }\n\n public show(msg: string, arg?: MsgOptional) {\n this.create(Object.assign({}, arg, { msg: msg }))\n }\n\n public success(msg: string, arg?: MsgOptional) {\n this.create(\n Object.assign({ color: this.typeColor.success }, arg, { msg: msg })\n )\n }\n\n public warning(msg: string, arg?: MsgOptional) {\n this.create(\n Object.assign({ color: this.typeColor.warning }, arg, { msg: msg })\n )\n }\n\n public error(msg: string, arg?: MsgOptional) {\n this.create(\n Object.assign({ color: this.typeColor.error }, arg, { msg: msg })\n )\n }\n\n private create(data: Msg) {\n const wrap = document.createElement('div')\n wrap.classList.add('xz_msg_box')\n if (Config.mobile) {\n wrap.classList.add('mobile')\n }\n\n let colorStyle = ''\n if (data.color) {\n colorStyle = `style=\"color:${data.color}\"`\n }\n\n wrap.innerHTML = `\n

    ${data.title || ''}

    \n

    ${data.msg}

    \n \n `\n\n theme.register(wrap)\n lang.register(wrap)\n\n const btn = wrap.querySelector('.btn') as HTMLButtonElement\n\n if (btn) {\n wrap.addEventListener('click', (ev) => {\n ev.stopPropagation()\n })\n\n btn.addEventListener('click', () => {\n this.remove(wrap)\n })\n\n window.addEventListener(EVT.list.closeCenterPanel, () => {\n this.remove(wrap)\n })\n }\n\n document.body.append(wrap)\n btn.focus()\n\n bg.useBG(wrap)\n }\n\n private remove(el: HTMLDivElement) {\n el && el.parentNode && el.parentNode.removeChild(el)\n }\n}\n\nconst msgBox = new MsgBox()\nexport { msgBox }\n","import { WorkThumbnail } from './WorkThumbnail'\nimport { pageType } from './PageType'\nimport { Tools } from './Tools'\nimport { Config } from './Config'\n\n// 查找小说作品的缩略图,当鼠标进入、移出时等动作触发时执行回调函数\nclass NovelThumbnail extends WorkThumbnail {\n constructor() {\n super()\n\n if (Config.mobile) {\n // 移动端的作品选择器就这一个\n this.selectors = ['.works-item-novel']\n } else {\n this.selectors = [\n 'li[size=\"1\"]>div',\n 'section li>div',\n 'nav>div>div',\n 'div.gtm-novel-work-recommend-link',\n 'section ul>div',\n 'section ul>li',\n 'div._ranking-item',\n 'div[size=\"496\"]',\n 'li',\n ]\n }\n\n this.findThumbnail(document.body)\n this.createObserver(document.body)\n }\n\n protected readonly selectors: string[] = []\n\n protected findThumbnail(parent: HTMLElement) {\n if (!parent.querySelectorAll) {\n return\n }\n // 遍历所有的选择器,为找到的元素绑定事件\n // 注意:有时候一个节点里会含有多种尺寸的缩略图,为了全部查找到它们,必须遍历所有的选择器。\n // 如果在查找到某个选择器之后,不再查找剩余的选择器,就可能会遗漏一部分缩略图。\n // 但是,这有可能会导致事件的重复绑定,所以下载器添加了 dataset.mouseover 标记以减少重复绑定\n for (const selector of this.selectors) {\n // 处理桌面端特殊情况中使用的选择器\n if (!Config.mobile) {\n // 在用户主页只使用指定的选择器,避免其他选择器导致顶部“精选”的小说作品被重复绑定事件\n if (\n pageType.type === pageType.list.UserHome &&\n selector !== 'section ul>li' &&\n selector !== 'li[size=\"1\"]>div'\n ) {\n continue\n }\n\n // 在小说排行榜里只使用 div._ranking-item\n if (\n pageType.type === pageType.list.NovelRanking &&\n selector !== 'div._ranking-item'\n ) {\n continue\n }\n\n // 在小说系列页面里只使用 section ul>li\n if (\n pageType.type === pageType.list.NovelSeries &&\n selector !== 'section ul>li'\n ) {\n continue\n }\n\n // div.gtm-novel-work-recommend-link 只能在小说页面里使用\n if (\n selector === 'div.gtm-novel-work-recommend-link' &&\n pageType.type !== pageType.list.Novel\n ) {\n continue\n }\n }\n\n let elements: HTMLElement[] | NodeListOf =\n parent.querySelectorAll(selector)\n // 处理特殊的动态添加的元素\n // 有些动态添加的元素不能被选择器选中\n\n // 小说系列页面里动态添加的就是 li 元素,并且这个 li 元素必须整个使用,不能再细分\n if (\n pageType.type === pageType.list.NovelSeries &&\n parent.nodeName === 'LI'\n ) {\n elements = [parent]\n }\n\n for (const el of elements) {\n const id = Tools.findWorkIdFromElement(el as HTMLElement, 'novels')\n // 在移动端页面里,此时获取的可能是 '0'\n // 依然绑定\n if (Config.mobile) {\n this.bindEvents(el as HTMLElement, id)\n } else {\n // 在桌面版页面里,只有查找到作品 id 时才会执行回调函数\n if (id) {\n this.bindEvents(el as HTMLElement, id)\n }\n }\n }\n }\n }\n}\n\nconst novelThumbnail = new NovelThumbnail()\nexport { novelThumbnail }\n","import { EVT } from './EVT'\nimport { lang } from './Lang'\n\n// 页面右侧的按钮,点击可以打开中间面板\nclass OpenCenterPanel {\n constructor() {\n this.addBtn()\n this.show()\n this.bindEvents()\n }\n\n private btn: HTMLButtonElement = document.createElement('button')\n\n private addBtn() {\n this.btn = document.createElement('button')\n this.btn.classList.add('rightButton')\n this.btn.id = 'openCenterPanelBtn'\n this.btn.setAttribute('data-xztitle', '_显示控制面板')\n this.btn.innerHTML = `\n \n`\n document.body.append(this.btn)\n lang.register(this.btn)\n }\n\n private bindEvents() {\n // 这里阻止事件冒泡是为了配合 CenterPanel 的“点击页面其他部分隐藏 CenterPanel”的效果\n this.btn.addEventListener('click', (e) => {\n const ev = e || window.event\n ev.stopPropagation()\n EVT.fire('openCenterPanel')\n })\n\n window.addEventListener(EVT.list.centerPanelClosed, () => {\n this.show()\n })\n\n window.addEventListener(EVT.list.centerPanelOpened, () => {\n this.hide()\n })\n }\n\n private show() {\n this.btn.style.display = 'flex'\n }\n\n private hide() {\n this.btn.style.display = 'none'\n }\n}\n\nnew OpenCenterPanel()\n","import { EVT } from './EVT'\nimport { setTimeoutWorker } from './SetTimeoutWorker'\nimport { secretSignal } from './utils/SecretSignal'\n\n// 所有页面类型及对应的数字编号\n// 可以通过 pageType.list 使用\nenum PageName {\n Unsupported = -1,\n Home,\n Artwork,\n UserHome,\n BookmarkLegacy,\n Bookmark,\n ArtworkSearch,\n AreaRanking,\n ArtworkRanking,\n Pixivision,\n BookmarkDetail,\n NewArtworkBookmark,\n Discover,\n NewArtwork,\n Novel,\n NovelSeries,\n NovelSearch,\n NovelRanking,\n NewNovelBookmark,\n NewNovel,\n ArtworkSeries,\n Following,\n Request,\n Unlisted,\n}\n\n// 获取页面类型\nclass PageType {\n constructor() {\n this.type = this.getType()\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.checkTypeChange()\n })\n\n secretSignal.register('ppdtask3', () => {\n this.openAllTestPage()\n })\n }\n\n // 当前页面类型\n public type = PageName.Unsupported\n\n // 所有页面类型\n public readonly list = PageName\n\n private getType(): PageName {\n const url = window.location.href\n const pathname = window.location.pathname\n\n if (\n window.location.hostname === 'www.pixiv.net' &&\n ['/', '/manga', '/novel', '/en/'].includes(pathname)\n ) {\n return PageName.Home\n } else if (\n (pathname.startsWith('/artworks') ||\n pathname.startsWith('/en/artworks')) &&\n /\\/artworks\\/\\d{1,10}/.test(url)\n ) {\n return PageName.Artwork\n } else if (/\\/users\\/\\d+/.test(url) && !url.includes('/bookmarks')) {\n if (\n pathname.includes('/following') ||\n pathname.includes('/mypixiv') ||\n pathname.includes('/followers')\n ) {\n return PageName.Following\n } else {\n return PageName.UserHome\n }\n } else if (pathname.endsWith('bookmark.php')) {\n return PageName.BookmarkLegacy\n } else if (pathname.includes('/bookmarks/')) {\n return PageName.Bookmark\n } else if (url.includes('/tags/')) {\n return pathname.endsWith('/novels')\n ? PageName.NovelSearch\n : PageName.ArtworkSearch\n } else if (pathname === '/ranking_area.php' && location.search !== '') {\n return PageName.AreaRanking\n } else if (pathname === '/ranking.php') {\n return PageName.ArtworkRanking\n } else if (\n url.includes('https://www.pixivision.net') &&\n url.includes('/a/')\n ) {\n return PageName.Pixivision\n } else if (\n (url.includes('/bookmark_add.php?id=') ||\n url.includes('/bookmark_detail.php?illust_id=')) &&\n !pathname.includes('/novel')\n ) {\n return PageName.BookmarkDetail\n } else if (\n url.includes('/bookmark_new_illust.php') ||\n url.includes('/bookmark_new_illust_r18.php')\n ) {\n return PageName.NewArtworkBookmark\n } else if (\n pathname === '/discovery' ||\n pathname.startsWith('/novel/discovery')\n ) {\n return PageName.Discover\n } else if (\n url.includes('/new_illust.php') ||\n url.includes('/new_illust_r18.php')\n ) {\n return PageName.NewArtwork\n } else if (pathname === '/novel/show.php') {\n return PageName.Novel\n } else if (pathname.startsWith('/novel/series/')) {\n return PageName.NovelSeries\n } else if (pathname === '/novel/ranking.php') {\n return PageName.NovelRanking\n } else if (pathname.startsWith('/novel/bookmark_new')) {\n return PageName.NewNovelBookmark\n } else if (pathname.startsWith('/novel/new')) {\n return PageName.NewNovel\n } else if (pathname.startsWith('/user/') && pathname.includes('/series/')) {\n return PageName.ArtworkSeries\n } else if (pathname.startsWith('/request')) {\n return PageName.Request\n } else if (pathname.includes('/unlisted')) {\n return PageName.Unlisted\n } else {\n // 没有匹配到可用的页面类型\n return PageName.Unsupported\n }\n }\n\n // 页面切换时,检查页面类型是否变化\n private checkTypeChange() {\n const old = this.type\n this.type = this.getType()\n if (this.type !== old) {\n EVT.fire('pageSwitchedTypeChange', this.type)\n } else {\n EVT.fire('pageSwitchedTypeNotChange', this.type)\n }\n }\n\n private async openAllTestPage() {\n // 列出要打开的测试页面。不包含已经不存在的页面类型和 Pixivision\n const testPageList: { type: number; url: string }[] = [\n {\n type: PageName.Unsupported,\n url: 'https://www.pixiv.net/stacc?mode=unify',\n },\n {\n type: PageName.Home,\n url: 'https://www.pixiv.net',\n },\n {\n type: PageName.Artwork,\n url: 'https://www.pixiv.net/artworks/108271116',\n },\n {\n type: PageName.UserHome,\n url: 'https://www.pixiv.net/users/89469319',\n },\n {\n type: PageName.Bookmark,\n url: 'https://www.pixiv.net/users/96661459/bookmarks/artworks',\n },\n {\n type: PageName.ArtworkSearch,\n url: 'https://www.pixiv.net/tags/%E5%8E%9F%E7%A5%9E/artworks?s_mode=s_tag',\n },\n {\n type: PageName.AreaRanking,\n url: 'https://www.pixiv.net/ranking_area.php?type=state&no=0',\n },\n {\n type: PageName.ArtworkRanking,\n url: 'https://www.pixiv.net/ranking.php',\n },\n {\n type: PageName.NewArtworkBookmark,\n url: 'https://www.pixiv.net/bookmark_new_illust.php',\n },\n {\n type: PageName.Discover,\n url: 'https://www.pixiv.net/discovery',\n },\n {\n type: PageName.NewArtwork,\n url: 'https://www.pixiv.net/new_illust.php',\n },\n {\n type: PageName.ArtworkSeries,\n url: 'https://www.pixiv.net/user/3698796/series/61267',\n },\n {\n type: PageName.Following,\n url: 'https://www.pixiv.net/users/96661459/following',\n },\n {\n type: PageName.Request,\n url: 'https://www.pixiv.net/request',\n },\n {\n type: PageName.Unlisted,\n url: 'https://www.pixiv.net/artworks/unlisted/eE3fTYaROT9IsZmep386',\n },\n {\n type: PageName.Novel,\n url: 'https://www.pixiv.net/novel/show.php?id=12771688',\n },\n {\n type: PageName.NovelSeries,\n url: 'https://www.pixiv.net/novel/series/1090654',\n },\n {\n type: PageName.NovelSearch,\n url: 'https://www.pixiv.net/tags/%E7%99%BE%E5%90%88/novels',\n },\n {\n type: PageName.NovelRanking,\n url: 'https://www.pixiv.net/novel/ranking.php?mode=daily',\n },\n {\n type: PageName.NewNovelBookmark,\n url: 'https://www.pixiv.net/novel/bookmark_new.php',\n },\n {\n type: PageName.NewNovel,\n url: 'https://www.pixiv.net/novel/new.php',\n },\n ]\n\n const wait = (): Promise => {\n return new Promise((resolve) => {\n setTimeoutWorker.set(() => {\n resolve()\n }, 500)\n })\n }\n\n for (const item of testPageList) {\n window.open(item.url)\n await wait()\n }\n }\n}\n\nconst pageType = new PageType()\n\nexport { pageType }\n","import { UgoiraMetaBody } from './crawl/CrawlResult'\nimport { API } from './API'\nimport { log } from './Log'\nimport { settings } from './setting/Settings'\nimport { Tools } from './Tools'\n\n// 预览动图\nclass PreviewUgoira {\n constructor(\n id: string | number,\n canvasWrap: HTMLElement,\n prevSize: 'original' | 'regular',\n wrapWidth?: number,\n wrapHeight?: number\n ) {\n if (!settings.previewUgoira) {\n return\n }\n this.id = id\n this.canvasWrap = canvasWrap\n this.prevSize = prevSize\n wrapWidth && (this.wrapWidth = wrapWidth)\n wrapHeight && (this.wrapHeight = wrapHeight)\n\n this.start()\n }\n\n /**作品 id */\n private id!: string | number\n /**这个动图的 meta 数据 */\n private meta!: UgoiraMetaBody\n private prevSize: 'original' | 'regular' = 'regular'\n /**要使用的动图压缩包的 URL */\n private zipURL!: string\n /**完整的 zip 文件的字节数 */\n private zipLength = 0\n /** 用固定的字节数分割出多个文件片段 */\n private readonly rangeSize = 500000\n /**保存每个文件片段的请求头的值\n * 字符串格式如 'bytes=0-499999'\n */\n private rangeList: string[] = []\n /**把分段加载的 zip 文件合并,保存到这个容器 */\n private zipContent: ArrayBuffer = new ArrayBuffer(0)\n /**所有文件片段是否都加载完毕 */\n private loadend = false\n /**每个 jpg 文件内容的开始位置 */\n private jpgContentIndexList: number[] = []\n /**每个 jpg 文件的数据。按照图片在压缩包里的顺序,储存对应的数据 */\n private jpgFileList: {\n img: HTMLImageElement\n delay: number\n }[] = []\n\n // jpg 文件名的长度固定为 10 个字节 000000.jpg\n private readonly jpgNameLength = 10\n\n private canvasWrap!: HTMLElement\n private wrapWidth = 0\n private wrapHeight = 0\n private canvas = document.createElement('canvas')\n private canvasCon = this.canvas.getContext('2d')\n private canvasIsAppend = false\n private width = 0\n private height = 0\n\n private destroyed = false\n\n private async start() {\n // 获取这个动图的 meta 数据\n this.meta = await this.getMeta(this.id)\n\n // 目前只支持提取 jpg 图片\n if (this.meta.mime_type !== 'image/jpeg') {\n const msg =\n 'Preview ugoira error: mime type unsupport: ' + this.meta.mime_type\n log.warning(msg)\n console.warn(msg)\n return\n }\n\n // 设置要使用的 URL\n if (this.prevSize === 'regular') {\n this.zipURL = this.meta.src\n } else {\n this.zipURL = this.meta.originalSrc\n }\n\n // 获取动图体积\n this.zipLength = await this.getFileLength()\n\n // 生成区间\n this.rangeList = this.setRangeList(this.zipLength, this.rangeSize)\n\n for (const range of this.rangeList) {\n // 加载文件片段\n const buff = await this.loadRangeFileAsBuff(range)\n\n if (this.destroyed) {\n return\n }\n\n // 把这个文件片段追加到文件容器里\n this.zipContent = this.appendBuff(this.zipContent, buff)\n\n // 判断整个压缩包是否全部加载完毕\n this.loadend = this.zipContent.byteLength === this.zipLength\n\n // 提取出每个 jpg 图片的数据\n // 由于我之前使用的 zip 库无法解析不完整的 zip 文件,所以我需要自己提取 jpg 图片的数据\n this.jpgContentIndexList = Tools.getJPGContentIndex(\n this.zipContent,\n this.jpgContentIndexList\n )\n this.extractJPGData(this.zipContent, this.jpgContentIndexList)\n\n // 设置画布的宽高\n if (this.jpgFileList.length > 0 && this.width === 0) {\n // 画布的宽高不能超过外部 wrap 的宽高\n // 本来我是打算从 wrap 宽度和动图宽度中取比较小的值\n // const size = await this.getImageSize(this.jpgFileList[0].blobURL)\n // this.width = Math.min(size.width, wrapWidth)\n // this.height = Math.min(size.height, wrapHeight)\n\n // 但是当预览作品的尺寸为“普通”时,动图的尺寸可能比 wrap 的尺寸小\n // 因为 wrap 显示的普通尺寸是 1200px,但是动图的普通尺寸是 600px\n // 所以我直接让画布使用 wrap 的尺寸了。如果动图比 wrap 小,就会放大到 wrap 的尺寸\n this.width =\n this.wrapWidth || Number.parseInt(this.canvasWrap.style.width)\n this.height =\n this.wrapHeight || Number.parseInt(this.canvasWrap.style.height)\n }\n\n // 检查是否应该开始播放动画\n // 如果动画的图片总量达到了 30 帧,则等到至少加载了 10 帧之后再开始播放\n // 这样可以减少在刚开始播放时,因可用帧数太少而导致画面看起来抖动(快速循环)的诡异情况\n if (this.meta.frames.length >= 30) {\n this.jpgFileList.length >= 10 && this.startPlay()\n } else if (this.meta.frames.length >= 20) {\n this.jpgFileList.length >= 5 && this.startPlay()\n } else if (this.meta.frames.length >= 10) {\n this.jpgFileList.length >= 4 && this.startPlay()\n } else {\n this.jpgFileList.length >= 1 && this.startPlay()\n }\n }\n\n // 保存整个压缩包(debug 用)\n // const newFile = new Blob([this.zipContent])\n // const url = URL.createObjectURL(newFile)\n // Utils.downloadFile(url, `${this.id}.zip`)\n }\n\n /**获取该作品的 meta 数据 */\n private getMeta(id: string | number): Promise {\n return new Promise(async (resolve, reject) => {\n const meta = await API.getUgoiraMeta(id as string)\n if (meta.error) {\n throw reject(meta.message)\n }\n\n resolve(meta.body)\n })\n }\n\n /** 发送 HEAD 请求,获取 zip 压缩包的体积 */\n private getFileLength(): Promise {\n return new Promise(async (resolve, reject) => {\n const response = await fetch(this.zipURL, {\n method: 'head',\n credentials: 'same-origin',\n })\n\n const length = response.headers.get('content-length')\n if (!length) {\n throw reject('getFileLength error: get length failed')\n }\n\n resolve(Number.parseInt(length))\n })\n }\n\n /** 根据 zip 文件的体积分割出数个区间,生成对应的标记文本 */\n private setRangeList(total: number, rangeSize: number) {\n const result: string[] = []\n\n // total 是 length,但 start 和 end 是下标\n let start = 0\n let end = 0\n const max = total - 1\n while (end < max) {\n if (start > 0) {\n start++\n }\n\n end = start + rangeSize - 1\n if (end > max) {\n end = max\n }\n const str = `bytes=${start}-${end}`\n\n result.push(str)\n\n start = end\n }\n\n return result\n }\n\n private loadRangeFileAsBuff(range: string): Promise {\n return new Promise(async (resolve, reject) => {\n const res = await fetch(this.zipURL, {\n method: 'get',\n headers: {\n range: range,\n },\n })\n const buff = await res.arrayBuffer()\n resolve(buff)\n })\n }\n\n /**把 ArrayBuffer 追加到已存在的 ArrayBuffer 容器里 */\n private appendBuff(target: ArrayBuffer, newBuff: ArrayBuffer) {\n const totalLength = target.byteLength + newBuff.byteLength\n const uint8 = new Uint8Array(totalLength)\n uint8.set(new Uint8Array(target))\n uint8.set(new Uint8Array(newBuff), target.byteLength)\n return uint8.buffer\n }\n\n /** 从 zip 文件里提取出所有 jpg 图片的数据 */\n private extractJPGData(file: ArrayBuffer, indexList: number[]) {\n indexList.forEach((number, index, array) => {\n // 如果这是最后一个标记,并且压缩包没有整个加载完成,则不提取最后一个文件的数据\n // 因为此时最后一个文件的数据很可能是破损的\n if (index === array.length - 1 && !this.loadend) {\n return\n }\n\n // 如果这张图片没有被保存,才会提取它\n // 如果已经有这个图片的数据,就不再提取它,以提高性能\n if (this.jpgFileList[index] === undefined) {\n // 确定要提取的文件的起始位置\n // 从当前文件名之后开始\n const start = number\n // 截止下一个文件名之前\n // 删除不需要的数据:\n // 30 字节的是 zip 文件的数据,虽然没有实际影响,但还是去掉\n // 10 字节的是下一个 jpg 的文件名\n let end = array[index + 1] - 30 - this.jpgNameLength\n if (index === array.length - 1) {\n // 如果是最后一个 jpg 文件,则截止到 zip 文件的结尾\n // 这导致它会包含 zip 的目录数据,但是不会影响图片的显示\n end = file.byteLength\n }\n // slice 方法的 end 不会包含在结果里\n const buffer = file.slice(start, end)\n const blob = new Blob([buffer], {\n type: 'image/jpeg',\n })\n const url = URL.createObjectURL(blob)\n\n // 下载这张图片(debug 用)\n // Utils.downloadFile(url, `${index}.jpg`)\n\n const img = new Image(this.width, this.height)\n img.src = url\n this.jpgFileList[index] = {\n img: img,\n delay: this.meta.frames[index].delay,\n }\n }\n })\n }\n\n private startPlay() {\n if (this.jpgFileList.length > 0 && !this.canvasIsAppend) {\n this.addCanvas()\n this.canvasIsAppend = true\n this.animationID = window.requestAnimationFrame(this.play)\n }\n }\n\n private addCanvas() {\n const oldCanvas = this.canvasWrap.querySelector('canvas')\n if (oldCanvas) {\n oldCanvas.remove()\n }\n this.canvas.style.display = 'none'\n this.canvasWrap.append(this.canvas)\n this.canvas.width = this.width\n this.canvas.height = this.height\n }\n\n private playIndex = 0\n private playDelay = 0\n private lastPlayTime = 0\n private animationID = 0\n private play = (timestamp: number) => {\n if (this.lastPlayTime === 0) {\n this.lastPlayTime = timestamp\n }\n\n // 计算自上次执行之后,是否到了该执行下一次动画的时间\n if (timestamp - this.lastPlayTime >= this.playDelay) {\n // 如果要播放的图片尚未加载完成,则等到下一次动画帧再执行\n const img = this.jpgFileList[this.playIndex].img\n if (!img.complete) {\n return (this.animationID = window.requestAnimationFrame(this.play))\n }\n\n this.canvasCon!.drawImage(img, 0, 0, this.width, this.height)\n\n // 绘制出第一张图片之后,才能显示 canvas 并隐藏之前的 img\n // 如果过早的隐藏 img 并显示 canvas,会导致闪烁(因为 img 先隐藏,此时 canvas 还没有绘制图像)\n if (this.playIndex === 0) {\n this.canvas.style.display = 'inline-block'\n const img = this.canvasWrap.querySelector('img')\n if (img) {\n img.style.display = 'none'\n }\n }\n\n this.playDelay = this.jpgFileList[this.playIndex].delay\n this.playIndex++\n if (this.playIndex > this.jpgFileList.length - 1) {\n this.playIndex = 0\n }\n\n // 记录最后一次执行动画的时间\n this.lastPlayTime = timestamp\n }\n\n this.animationID = window.requestAnimationFrame(this.play)\n }\n\n public setSize(width: number, height: number) {\n // 当用户移动鼠标时,ShowOriginSizeImage 会频繁触发 setSize\n // 如果频繁的重设尺寸,会导致动画闪烁。所以判断只在有必要时才重设尺寸\n if (width === this.width && height === this.height) {\n return\n }\n\n this.width = width\n this.height = height\n this.canvas.width = this.width\n this.canvas.height = this.height\n }\n\n public destroy() {\n this.destroyed = true\n window.cancelAnimationFrame(this.animationID)\n this.canvas.remove()\n this.zipContent = new ArrayBuffer(0)\n this.jpgFileList = []\n this.jpgContentIndexList = []\n }\n}\n\nexport { PreviewUgoira }\n","import { API } from './API'\nimport { ArtworkData } from './crawl/CrawlResult'\nimport { EVT } from './EVT'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { settings, setSetting } from './setting/Settings'\nimport { showOriginSizeImage } from './ShowOriginSizeImage'\nimport { cacheWorkData } from './store/CacheWorkData'\nimport { states } from './store/States'\nimport { Utils } from './utils/Utils'\nimport { PreviewUgoira } from './PreviewUgoira'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { Colors } from './Colors'\nimport { DateFormat } from './utils/DateFormat'\nimport { showHelp } from './ShowHelp'\nimport { store } from './store/Store'\nimport { Config } from './Config'\nimport { previewWorkDetailInfo } from './PreviewWorkDetailInfo'\nimport { Tools } from './Tools'\nimport { bookmark } from './Bookmark'\nimport { pageType } from './PageType'\n\n// 鼠标停留在作品的缩略图上时,预览作品\nclass PreviewWork {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n this.createElements()\n this.bindEvents()\n }\n\n // 预览作品的容器的元素\n private wrapId = 'previewWorkWrap'\n private wrap!: HTMLElement\n private img = document.createElement('img')\n private border = 4 // border 占据的空间\n\n private tipId = 'previewWorkTip'\n private tip!: HTMLElement\n private readonly tipHeight = 22\n\n // 保存当前鼠标经过的缩略图的数据\n private workId = ''\n private workEL?: HTMLElement\n private workData?: ArtworkData\n\n // 显示作品中的第几张图片\n private index = 0\n\n // 延迟显示预览区域的定时器\n // 鼠标进入缩略图时,本模块会立即请求作品数据,但在请求完成后不会立即加载图片,这是为了避免浪费网络资源\n private delayShowTimer: number | undefined = undefined\n\n // 延迟隐藏预览区域的定时器\n private delayHiddenTimer: number | undefined = undefined\n\n // 当用户点击预览图使预览图隐藏时,不再显示这个作品的预览图(切换作品可以解除限制)\n private dontShowAgain = false\n\n // 是否允许预览区域遮挡作品缩略图\n private allowOverThumb = true\n\n // 当前预览图是否遮挡了作品缩略图\n private overThumb = false\n\n private previewUgoira?: PreviewUgoira\n\n private _show = false\n\n private get show() {\n return this._show\n }\n\n private set show(val: boolean) {\n if (val) {\n this.workData = cacheWorkData.get(this.workId)\n // 如果保存的作品数据不是最后一个鼠标经过的作品,可能是请求尚未完成,此时延长等待时间\n if (!this.workData || this.workData.body.id !== this.workId) {\n this.readyShow()\n } else {\n // 显示作品的详细信息\n if (settings.PreviewWorkDetailInfo) {\n EVT.fire('showPreviewWorkDetailPanel', this.workData)\n }\n\n this.sendUrls()\n if (settings.PreviewWork) {\n this._show = true\n showOriginSizeImage.hide()\n this.showWrap()\n window.clearTimeout(this.delayHiddenTimer)\n if (!Config.mobile) {\n showHelp.show(\n 'tipPreviewWork',\n lang.transl('_预览作品的快捷键说明')\n )\n }\n }\n }\n } else {\n // 隐藏时重置一些变量\n window.clearTimeout(this.delayShowTimer)\n window.clearTimeout(this.delayHiddenTimer)\n this.overThumb = false\n this._show = false\n this.dontShowAgain = false\n this.wrap.style.display = 'none'\n // 隐藏 wrap 时,把 img 的 src 设置为空\n // 这样图片会停止加载,避免浪费网络资源\n this.img.src = ''\n\n // 销毁预览动图的模块\n if (this.previewUgoira) {\n this.previewUgoira.destroy()\n this.previewUgoira = null as unknown as PreviewUgoira\n }\n\n EVT.fire('previewEnd')\n }\n }\n\n private createElements() {\n this.wrap = document.createElement('div')\n this.wrap.id = this.wrapId\n\n this.tip = document.createElement('div')\n this.tip.id = this.tipId\n this.wrap.appendChild(this.tip)\n\n document.body.appendChild(this.wrap)\n }\n\n private bindEvents() {\n artworkThumbnail.onEnter((el: HTMLElement, id: string) => {\n if (this.dontShowAgain) {\n return\n }\n // 当鼠标进入到不同作品时\n // 隐藏之前的预览图\n // 重置 index\n if (this.workId !== id) {\n this.show = false\n this.index = 0\n }\n this.workId = id\n this.workEL = el\n if (!cacheWorkData.has(id)) {\n // 如果在缓存中没有找到这个作品的数据,则发起请求\n this.fetchWorkData()\n } else {\n this.workData = cacheWorkData.get(id)!\n }\n\n this.readyShow()\n\n el.addEventListener('mousewheel', this.onWheelScroll)\n })\n\n artworkThumbnail.onLeave((el: HTMLElement) => {\n // 当鼠标离开作品缩略图时,有可能是因为显示了作品详细信息的面板。此时让预览图保持显示\n if (previewWorkDetailInfo.show) {\n return\n }\n\n if (this.overThumb) {\n // 如果预览图遮挡了作品缩略图,就需要延迟隐藏预览图。\n // 因为预览图显示之后,鼠标可能处于预览图上,这会触发此事件。\n // 如果不延迟隐藏,预览图就会马上消失,无法查看\n this.delayHiddenTimer = window.setTimeout(() => {\n this.show = false\n el.removeEventListener('mousewheel', this.onWheelScroll)\n }, 100)\n } else {\n this.show = false\n el.removeEventListener('mousewheel', this.onWheelScroll)\n }\n })\n\n window.addEventListener(\n 'keydown',\n (ev) => {\n // 当用户按下 Ctrl 时,不启用下载器的热键,以避免快捷键冲突或重复生效\n // 例如,预览作品时按 C 可以下载,但是当用户按下 Ctrl + C 时其实是想复制,此时不应该下载\n if (ev.ctrlKey) {\n return\n }\n\n // 当用户按下 Alt 时,只响应 P 键\n if (ev.altKey) {\n // 可以使用 Alt + P 快捷键来启用/禁用此功能\n if (ev.code === 'KeyP') {\n setSetting('PreviewWork', !settings.PreviewWork)\n // 显示提示信息\n if (settings.PreviewWork) {\n const msg = 'Preview works - On'\n toast.success(msg)\n } else {\n const msg = 'Preview works - Off'\n toast.warning(msg)\n }\n } else {\n return\n }\n }\n\n // 使用 Esc 键关闭当前预览\n if (ev.code === 'Escape' && this.show) {\n this.show = false\n // 并且不再显示这个作品的预览图,否则如果鼠标依然位于这个作品上,就会马上再次显示缩略图了\n // 当鼠标移出这个作品的缩略图之后会取消此限制\n this.dontShowAgain = true\n }\n\n // 翻页时关闭当前预览\n // 这是为了处理边界情况。常见的触发方式是预览一个横图作品,且鼠标处于预览图之上\n // 此时翻页的话,虽然作品区域已经变化,但由于鼠标一直停留在预览图上,预览图就不会消失\n // 此时需要强制关闭预览\n if (ev.code === 'PageUp' || ev.code === 'PageDown') {\n if (this.show) {\n this.show = false\n }\n }\n\n // 预览作品时,可以使用快捷键 D 下载这个作品\n if (ev.code === 'KeyD' && this.show) {\n EVT.fire('crawlIdList', [\n {\n type: 'illusts',\n id: this.workData!.body.id,\n },\n ])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n position: 'center',\n })\n }\n\n // 预览作品时,可以使用快捷键 C 仅下载当前显示的图片\n if (ev.code === 'KeyC' && this.show) {\n // 在作品页面内按 C 时,Pixiv 会把焦点定位到评论输入框里,这里阻止此行为\n ev.stopPropagation()\n\n if (this.workData!.body.pageCount > 1) {\n store.setDownloadOnlyPart(Number.parseInt(this.workData!.body.id), [\n this.index,\n ])\n }\n\n EVT.fire('crawlIdList', [\n {\n type: 'illusts',\n id: this.workData!.body.id,\n },\n ])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n position: 'center',\n })\n }\n\n // 预览作品时,可以使用快捷键 B 收藏这个作品\n if (ev.code === 'KeyB' && this.show) {\n // 阻止 Pixiv 对按下 B 键的行为\n ev.stopPropagation()\n this.addBookmark()\n }\n\n // 预览作品时,可以使用方向键切换图片,也可以使用空格键切换到下一张图片\n if (\n ev.code === 'ArrowLeft' ||\n ev.code === 'ArrowRight' ||\n ev.code === 'ArrowUp' ||\n ev.code === 'ArrowDown' ||\n ev.code === 'Space'\n ) {\n if (this.show && settings.swicthImageByKeyboard) {\n // 阻止事件冒泡和默认事件\n // 阻止事件冒泡用来阻止 Pixiv 使用左右键来切换作品的功能\n // 阻止默认事件用来阻止上下键和空格键滚动页面的功能\n ev.stopPropagation()\n ev.preventDefault()\n const prev = ev.code === 'ArrowLeft' || ev.code === 'ArrowUp'\n this.swicthImage(prev ? 'prev' : 'next')\n }\n }\n },\n true\n )\n\n const hiddenEvtList = [\n EVT.list.pageSwitch,\n EVT.list.centerPanelOpened,\n EVT.list.showOriginSizeImage,\n ]\n hiddenEvtList.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.show = false\n })\n })\n\n // 当作品的详情面板隐藏时,鼠标位置可能在作品缩略图之外。所以此时需要检测鼠标位置,决定是否需要隐藏预览图\n window.addEventListener(\n EVT.list.PreviewWorkDetailPanelClosed,\n (ev: CustomEventInit) => {\n const data = ev.detail?.data as {\n x: number\n y: number\n }\n\n if (this.mouseInElementArea(this.workEL, data.x, data.y) === false) {\n this.show = false\n }\n }\n )\n\n this.wrap.addEventListener('mouseenter', () => {\n window.clearTimeout(this.delayHiddenTimer)\n })\n\n this.wrap.addEventListener('mousemove', (ev) => {\n // 鼠标在预览图上移动出缩略图区域时,隐藏预览图\n if (\n this.mouseInElementArea(this.workEL, ev.clientX, ev.clientY) === false\n ) {\n this.show = false\n }\n })\n\n this.wrap.addEventListener('click', (ev) => {\n this.show = false\n // 点击预览图使预览图消失时,如果鼠标仍处于缩略图区域内,则不再显示这个作品的预览图\n // 当鼠标移出这个作品的缩略图之后会取消此限制\n if (this.mouseInElementArea(this.workEL, ev.clientX, ev.clientY)) {\n this.dontShowAgain = true\n }\n })\n\n this.wrap.addEventListener('mousewheel', (ev) => {\n this.overThumb && this.onWheelScroll(ev)\n })\n\n window.addEventListener(\n EVT.list.wheelScrollSwitchPreviewImage,\n (ev: CustomEventInit) => {\n const mouseEvent = ev.detail.data\n mouseEvent && this.onWheelScroll(mouseEvent)\n }\n )\n }\n\n // 判断鼠标是否处于某个元素的范围内\n private mouseInElementArea(el: Element | undefined, x: number, y: number) {\n if (!el) {\n return false\n }\n const rect = el.getBoundingClientRect()\n return x > rect.left && x < rect.right && y > rect.top && y < rect.bottom\n }\n\n private preload() {\n // 如果下载器正在下载文件,则不预加载\n if (this.show && !states.downloading) {\n const count = this.workData!.body.pageCount\n if (count > this.index + 1) {\n let url = this.workData!.body.urls[settings.prevWorkSize]\n url = url.replace('p0', `p${this.index + 1}`)\n let img = new Image()\n // 在预加载过程中,如果查看的图片变化了,或者不显示预览区域了,则立即中断预加载\n const nowIndex = this.index\n const timer = window.setInterval(() => {\n if (this.index !== nowIndex || !this.show) {\n window.clearInterval(timer)\n img && (img.src = '')\n img = null as any\n }\n }, 50)\n img.onload = () => {\n window.clearInterval(timer)\n img && (img = null as any)\n }\n img.src = url\n }\n }\n }\n\n private wheelEvent?: WheelEvent\n\n // 当鼠标滚轮滚动时,切换显示的图片\n // 此事件必须使用节流,因为有时候鼠标滚轮短暂的滚动一下就会触发 2 次 mousewheel 事件\n private swicthImageByMouse = Utils.throttle(() => {\n const up = this.wheelEvent!.deltaY < 0\n this.swicthImage(up ? 'prev' : 'next')\n }, 100)\n\n private swicthImage(operate: 'prev' | 'next') {\n const count = this.workData!.body.pageCount\n if (operate === 'prev') {\n if (this.index > 0) {\n this.index--\n } else {\n this.index = count - 1\n }\n } else {\n if (this.index < count - 1) {\n this.index++\n } else {\n this.index = 0\n }\n }\n\n this.showWrap()\n }\n\n private onWheelScroll = (ev: Event) => {\n if (\n this.show &&\n settings.wheelScrollSwitchImageOnPreviewWork &&\n this.workData!.body.pageCount > 1\n ) {\n ev.preventDefault()\n this.wheelEvent = ev as WheelEvent\n this.swicthImageByMouse()\n }\n }\n\n private async fetchWorkData() {\n const data = await API.getArtworkData(this.workId)\n cacheWorkData.set(data)\n }\n\n private async addBookmark() {\n if (this.workData?.body.illustId === undefined) {\n return\n }\n\n toast.show(lang.transl('_收藏'), {\n bgColor: Colors.bgBlue,\n })\n\n const res = await bookmark.add(\n this.workData.body.illustId,\n 'illusts',\n Tools.extractTags(this.workData!)\n )\n\n if (res === 200) {\n toast.success(lang.transl('_已收藏'))\n }\n\n // 将作品缩略图上的收藏按钮变成红色\n const allSVG = this.workEL!.querySelectorAll('svg')\n if (allSVG.length > 0) {\n // 如果有多个 svg,一般最后一个是收藏按钮,但有些特殊情况是第一个\n let useSVG = allSVG[allSVG.length - 1]\n if (pageType.type === pageType.list.Request) {\n useSVG = allSVG[0]\n }\n\n useSVG.style.color = 'rgb(255, 64, 96)'\n const allPath = useSVG.querySelectorAll('path')\n for (const path of allPath) {\n path.style.fill = 'currentcolor'\n }\n }\n\n // 排行榜页面的收藏按钮\n const btn = this.workEL!.querySelector('._one-click-bookmark')\n if (btn) {\n btn.classList.add('on')\n }\n }\n\n private readyShow() {\n this.delayShowTimer = window.setTimeout(() => {\n this.show = true\n }, settings.previewWorkWait)\n }\n\n // 通过 img 元素加载图片,获取图片的原始尺寸\n private async getImageSize(url: string): Promise<{\n width: number\n height: number\n available: boolean\n }> {\n return new Promise((resolve) => {\n // 鼠标滚轮滚动时,此方法可能会在短时间内触发多次。通过 index 判断当前请求是否应该继续\n let testImg = new Image()\n testImg.src = url\n const bindIndex = this.index\n const timer = window.setInterval(() => {\n if (this.index !== bindIndex) {\n // 如果要显示的图片发生了变化,则立即停止加载当前图片,避免浪费网络流量\n window.clearInterval(timer)\n testImg.src = ''\n testImg = null as any\n // 本来这里应该 reject 的,但是那样就需要在 await 的地方处理这个错误\n // 我不想处理错误,所以用 available 标记来偷懒\n return resolve({\n width: 0,\n height: 0,\n available: false,\n })\n } else {\n // 如果获取到了图片的宽高,也立即停止加载当前图片,并返回结果\n if (testImg.naturalWidth > 0) {\n const width = testImg.naturalWidth\n const height = testImg.naturalHeight\n window.clearInterval(timer)\n testImg.src = ''\n testImg = null as any\n return resolve({\n width,\n height,\n available: true,\n })\n }\n }\n }, 50)\n })\n }\n\n // 显示预览 wrap\n private async showWrap() {\n if (!this.workEL || !this.workData) {\n return\n }\n\n const url = this.replaceUrl(this.workData!.body.urls[settings.prevWorkSize])\n const size = await this.getImageSize(url)\n\n // getImageSize 可能需要花费比较长的时间。有时候在 getImageSize 之前是要显示 wrap 的,但是之后鼠标移出,需要隐藏 wrap,再之后 getImageSize 才执行完毕。\n // 所以此时需要再次判断是否要显示 wrap。如果不再次判断的话,可能有时候需要隐藏预览图,但是预览图却显示出来了\n if (!size.available || !this.show) {\n return\n }\n\n const w = size.width\n const h = size.height\n const cfg = {\n width: w,\n height: h,\n left: 0,\n top: 0,\n }\n\n // 每次显示图片时,都销毁旧的 img 元素,然后重新生成一个 img 元素,而不是修改之前的 img 元素的 src\n // 因为修改 src 的方式存在严重的问题:虽然 src 已经变化了,但是 img 元素显示的还是上一张图片(不管上一张图片是否加载完成)。等到新的图片完全加载完成后,img 才会变化。\n // 这会导致一些问题:\n // 1. 在新图片的加载过程中,用户无法看到加载进度。只能等到图片加载完成后瞬间完全显示出来。\n // 2. 在新图片的加载过程中,图片的宽高是新图片的宽高,但是显示的内容还是旧的图片。如果这两张图片的尺寸不一致,此时显示的(旧)图片看上去是变形的\n // 只有生成新的 img 元素,才能解决上面的问题\n this.img.src = ''\n this.img.remove()\n this.img = document.createElement('img')\n // 当图片加载完成时,预加载下一张图片\n this.img.onload = () => this.preload()\n this.img.src = url\n this.wrap.appendChild(this.img)\n\n // 1. 计算图片显示的尺寸\n const rect = this.workEL.getBoundingClientRect()\n\n // 不显示摘要信息时,也不显示边框,所以此时把 border 设置为 0\n this.border = settings.showPreviewWorkTip ? 4 : 0\n\n // 计算各个可用区域的尺寸,提前减去了 border、tip 等元素占据的空间\n const innerWidth = window.innerWidth - 17\n const leftSpace = rect.left - this.border\n const rightSpace = innerWidth - rect.right - this.border\n const xSpace = Math.max(leftSpace, rightSpace)\n\n const tipHeight = settings.showPreviewWorkTip ? this.tipHeight : 0\n const scrollBarHeight =\n window.innerHeight - document.documentElement.clientHeight\n const ySpace =\n window.innerHeight - scrollBarHeight - this.border - tipHeight\n\n // 宽高从图片宽高、可用区域的宽高中取最小值,使图片不会超出可视区域外\n // 竖图\n if (w < h) {\n cfg.height = Math.min(ySpace, h)\n cfg.width = (cfg.height / h) * w\n // 此时宽度可能会超过水平方向上的可用区域,则需要再次调整宽高\n if (cfg.width > xSpace) {\n cfg.height = (xSpace / cfg.width) * cfg.height\n cfg.width = xSpace\n }\n } else if (w > h) {\n // 横图\n if (this.allowOverThumb) {\n // 如果允许预览图覆盖在作品缩略图上,则预览图的最大宽度可以等于视口宽度\n if (w > innerWidth) {\n cfg.width = innerWidth\n }\n } else {\n // 否则,预览图的宽度不可以超过图片两侧的空白区域的宽度\n cfg.width = Math.min(xSpace, w)\n }\n\n cfg.height = (cfg.width / w) * h\n // 此时高度可能会超过垂直方向上的可用区域,则需要再次调整宽高\n if (cfg.height > ySpace) {\n cfg.width = (ySpace / cfg.height) * cfg.width\n cfg.height = ySpace\n }\n } else {\n // 正方形图片\n cfg.height = Math.min(ySpace, xSpace, h)\n cfg.width = cfg.height\n }\n\n // 上面计算的高度是图片的高度,现在计算 wrap 的宽高,需要加上内部其他元素的高度\n cfg.height = cfg.height + tipHeight\n\n // 2. 计算位置\n // 在页面可视区域内,比较缩略图左侧和右侧空间,把 wrap 显示在空间比较大的那一侧\n if (leftSpace >= rightSpace) {\n // 左侧空间大\n // 先让预览图的右侧贴着图片左侧边缘显示\n cfg.left = rect.left - cfg.width - this.border + window.scrollX\n // 如果预览图超出可视范围,则向右移动\n if (cfg.left < 0) {\n this.overThumb = true\n cfg.left = 0\n }\n } else {\n // 右侧空间大\n // 先让预览图的左侧贴着图片右侧边缘显示\n cfg.left = rect.right + window.scrollX\n // 如果预览图超出可视范围,则向左移动\n if (cfg.width > rightSpace) {\n this.overThumb = true\n cfg.left = cfg.left - (cfg.left + cfg.width - innerWidth) - this.border\n }\n }\n\n // 然后设置 top\n // 让 wrap 和缩略图在垂直方向上居中对齐\n cfg.top = rect.top\n const wrapHalfHeight = (cfg.height + this.border) / 2\n const workHalfHeight = rect.height / 2\n cfg.top = cfg.top - wrapHalfHeight + workHalfHeight\n\n // 检查 wrap 顶端是否超出了窗口可视区域\n if (cfg.top < 0) {\n cfg.top = 0\n }\n\n // 检查 wrap 底部是否超出了窗口可视区域\n const bottomOver = cfg.top + cfg.height + this.border - window.innerHeight\n if (bottomOver > 0) {\n // 如果底部超出了窗口可视区域,则计算顶部是否还有可用空间\n if (cfg.top > 0) {\n // 如果顶部还有空间可用,就尽量向上移动,但不会导致顶端超出可视区域\n cfg.top = cfg.top - Math.min(bottomOver, cfg.top) - scrollBarHeight\n }\n }\n\n // 3. 设置顶部提示区域的内容\n if (settings.showPreviewWorkTip) {\n const text: string[] = []\n const body = this.workData.body\n\n if (body.aiType === 2) {\n text.push('AI')\n }\n\n if (body.pageCount > 1) {\n text.push(`${this.index + 1}/${body.pageCount}`)\n }\n\n text.push(body.bookmarkCount.toString())\n\n // 加载原图时,可以获取到每张图片的真实尺寸\n if (settings.prevWorkSize === 'original') {\n text.push(`${w}x${h}`)\n } else {\n // 如果加载的是普通尺寸,则永远显示第一张图的原始尺寸\n // 因为此时获取不到后续图片的原始尺寸\n text.push(`${this.workData.body.width}x${this.workData.body.height}`)\n }\n text.push(DateFormat.format(body.createDate, 'YYYY/MM/DD'))\n text.push(body.title)\n text.push(body.description)\n\n this.tip.innerHTML = text\n .map((str) => {\n return `${str}`\n })\n .join('')\n this.tip.style.display = 'block'\n } else {\n this.tip.style.display = 'none'\n }\n\n // 4. 显示 wrap\n this.img.style.height = cfg.height - tipHeight + 'px'\n const styleArray: string[] = []\n for (const [key, value] of Object.entries(cfg)) {\n styleArray.push(`${key}:${value}px;`)\n }\n styleArray.push('display:block;')\n\n // 如果不显示摘要信息,覆写一些样式\n if (!settings.showPreviewWorkTip) {\n styleArray.push('border:none;')\n styleArray.push('box-shadow:none;')\n }\n\n this.wrap.setAttribute('style', styleArray.join(''))\n\n // 每次显示图片后,传递图片的 url\n this.sendUrls()\n\n // 预览动图\n if (settings.previewUgoira && this.workData.body.illustType === 2) {\n this.previewUgoira = new PreviewUgoira(\n this.workData.body.id,\n this.wrap,\n settings.prevWorkSize,\n cfg.width,\n cfg.height - tipHeight\n )\n // 需要显式传递 wrap 的宽高,特别是高度。因为需要减去顶部提示区域的高度\n }\n }\n\n private replaceUrl(url: string) {\n return url.replace('p0', `p${this.index}`)\n }\n\n private sendUrls() {\n const data = this.workData\n if (!data) {\n return\n }\n // 传递图片的 url,但是不传递尺寸。\n // 因为预览图片默认加载“普通”尺寸的图片,但是 showOriginSizeImage 默认显示“原图”尺寸。\n // 而且对于第一张之后的图片,加载“普通”尺寸的图片时,无法获取“原图”的尺寸。\n showOriginSizeImage.setData(\n {\n original: this.replaceUrl(data.body.urls.original),\n regular: this.replaceUrl(data.body.urls.regular),\n },\n data,\n this.index\n )\n }\n}\n\nnew PreviewWork()\n","import { EVT } from './EVT'\nimport { theme } from './Theme'\nimport { settings } from './setting/Settings'\nimport { ArtworkData } from './crawl/CrawlResult'\nimport { Tools } from './Tools'\nimport { CopyToClipboard } from './CopyToClipboard'\nimport { Utils } from './utils/Utils'\n\n// 预览作品的详细信息\n// 这个模块由 PreviewWork 提供作品数据,这样可以避免一些重复代码\nclass PreviewWorkDetailInfo {\n constructor() {\n this.bindEvents()\n }\n\n // 因为预览作品模块里没有保存鼠标位置,所以本模块需要自己保存鼠标位置\n private mouseX = 0\n private mouseY = 0\n\n public show = false\n\n // 保存当前预览的作品 ID,避免在一个预览图上多次显示这个详情面板\n // 当预览图的窗口消失时,会重置这个 ID\n private showWorkID = ''\n\n private bindEvents() {\n window.addEventListener(\n EVT.list.showPreviewWorkDetailPanel,\n (ev: CustomEventInit) => {\n if (settings.PreviewWorkDetailInfo) {\n const data = ev.detail.data as ArtworkData\n this.create(data)\n }\n }\n )\n\n window.addEventListener('mousemove', (ev) => {\n this.mouseX = ev.clientX\n this.mouseY = ev.clientY\n })\n\n window.addEventListener(EVT.list.previewEnd, () => {\n this.showWorkID = ''\n })\n }\n\n private create(workData: ArtworkData) {\n // 有可能会重复创建,所以需要处理一下\n if (this.show) {\n return\n }\n\n if (workData.body.id === this.showWorkID) {\n return\n } else {\n this.showWorkID = workData.body.id\n }\n\n // 这里先把 show 状态设置为 true。实际显示出来还需要经过后面的处理\n this.show = true\n\n const wrap = document.createElement('div')\n\n // 设置文字内容\n // 生成 tag 内容\n const tagsHTML: string[] = []\n for (const item of workData.body.tags.tags) {\n const array: string[] = []\n const link = `https://www.pixiv.net/tags/${item.tag}/artworks`\n array.push(\n `
    #${item.tag}
    `\n )\n if (item.translation?.en) {\n array.push(\n `${item.translation?.en}`\n )\n }\n tagsHTML.push(`${array.join('')}`)\n }\n\n // 生成收藏数、点赞数、浏览量一栏\n const bmkHTML: string[] = []\n const schema = [\n {\n title: 'bookmark',\n icon: ``,\n number: workData.body.bookmarkCount,\n },\n {\n title: 'like',\n icon: ``,\n number: workData.body.likeCount,\n },\n {\n title: 'view',\n icon: ``,\n number: workData.body.viewCount,\n },\n ]\n\n for (const cfg of schema) {\n bmkHTML.push(`\n \n ${cfg.icon}\n ${Tools.numberToString(cfg.number)}\n \n `)\n }\n\n // 生成 R-18(G) 和 AI 标记\n let r18HTML = ''\n if (workData.body.xRestrict === 1) {\n r18HTML = 'R-18'\n } else if (workData.body.xRestrict === 2) {\n r18HTML = 'R-18G'\n }\n\n let aiHTML = ''\n if (workData.body.aiType === 2) {\n aiHTML = 'AI'\n }\n\n wrap.innerHTML = `\n
    \n

    ${r18HTML} ${aiHTML}

    \n

    ${workData.body.title}

    \n

    ${workData.body.description}

    \n

    ${tagsHTML.join('')}

    \n

    ${workData.body.width} x ${workData.body.height}

    \n

    ${bmkHTML.join('')}

    \n

    ${new Date(\n workData.body.uploadDate\n ).toLocaleString()}

    \n

    \n
    \n `\n\n // 按钮功能\n const copyTXT = wrap.querySelector('#copyTXT') as HTMLButtonElement\n copyTXT.addEventListener('click', () => {\n this.copyTXT(workData)\n })\n const copyJSON = wrap.querySelector('#copyJSON') as HTMLButtonElement\n copyJSON.addEventListener('click', () => {\n this.copyJSON(workData)\n })\n\n // 取消超链接的跳转确认,也就是把跳转链接替换为真正的链接\n const allLink = wrap.querySelectorAll('a')\n for (const a of allLink) {\n if (a.href.includes('jump.php')) {\n a.href = a.innerText\n }\n }\n\n // 设置样式\n wrap.classList.add('xz_PreviewWorkDetailPanel')\n wrap.style.width = settings.PreviewDetailInfoWidth + 'px'\n\n wrap.addEventListener('click', () => {\n this.remove(wrap)\n })\n\n wrap.addEventListener('mouseleave', () => {\n this.remove(wrap)\n })\n\n wrap.addEventListener('mousewheel', (ev) => {\n if (this.show) {\n ev.preventDefault()\n EVT.fire('wheelScrollSwitchPreviewImage', ev)\n }\n })\n\n theme.register(wrap)\n\n document.body.append(wrap)\n\n // 获取宽高,以鼠标为中心显示\n const rect = wrap.getBoundingClientRect()\n\n // 设置 left\n let left = this.mouseX - rect.width / 2\n // 最小的 left 为 10,避免其紧贴左侧,看不到左边界。其他四边也同理\n if (left < 10) {\n left = 10\n }\n\n // 如果面板右侧超出屏幕,则把面板向左移动\n let right = left + rect.width\n if (right > window.innerWidth) {\n left = left + (window.innerWidth - right) - 10\n }\n\n wrap.style.left = left + 'px'\n\n // 设置 top\n let top = this.mouseY - rect.height / 2\n if (top < 10) {\n top = 10\n }\n\n // 如果面板底部超出屏幕,则把面板向上移动\n let bottom = top + rect.height\n if (bottom > window.innerHeight) {\n top = top + (window.innerHeight - bottom) - 10\n }\n\n wrap.style.top = top + 'px'\n\n wrap.style.opacity = '1'\n }\n\n private remove(el: HTMLDivElement) {\n el && el.parentNode && el.parentNode.removeChild(el)\n this.show = false\n\n EVT.fire('PreviewWorkDetailPanelClosed', {\n x: this.mouseX,\n y: this.mouseY,\n })\n }\n\n private copyTXT(workData: ArtworkData) {\n // 组织输出的内容\n const tags = Tools.extractTags(workData).map((tag) => `#${tag}`)\n\n const array: string[] = []\n const body = workData.body\n array.push(`ID\\n${body.id}`)\n array.push(`URL\\nhttps://www.pixiv.net/artworks/${body.id}`)\n array.push(`Original\\n${body.urls?.original}`)\n array.push(`xRestrict\\n${Tools.getXRestrictText(body.xRestrict)}`)\n array.push(`AI\\n${Tools.getAITypeText(body.aiType)}`)\n array.push(`User\\n${body.userName}`)\n array.push(`UserID\\n${body.userId}`)\n array.push(`Title\\n${body.title}`)\n if (body.description) {\n array.push(`Description\\n${Utils.htmlToText(body.description)}`)\n }\n array.push(`Tags\\n${tags.join('\\n')}`)\n array.push(`Size\\n${body.width} x ${body.height}`)\n array.push(`Bookmark\\n${body.bookmarkCount}`)\n array.push(`Date\\n${new Date(body.uploadDate).toLocaleString()}`)\n\n const text = array.join('\\n\\n')\n CopyToClipboard.setClipboard(text)\n }\n\n private copyJSON(workData: ArtworkData) {\n const text = JSON.stringify(workData, null, 2)\n CopyToClipboard.setClipboard(text)\n }\n}\n\nconst previewWorkDetailInfo = new PreviewWorkDetailInfo()\nexport { previewWorkDetailInfo }\n","import { lang } from './Lang'\nimport { log } from './Log'\nimport { toast } from './Toast'\nimport { states } from './store/States'\nimport { bookmark, WorkBookmarkData } from './Bookmark'\n\nclass RemoveWorksTagsInBookmarks {\n public async start(list: WorkBookmarkData[]) {\n if (list.length === 0) {\n toast.error(lang.transl('_没有数据可供使用'))\n log.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n states.busy = true\n\n const total = list.length.toString()\n log.log(lang.transl('_当前作品个数', total))\n\n let number = 0\n for (const item of list) {\n try {\n await bookmark.add(\n item.workID.toString(),\n item.type,\n [],\n false,\n item.private,\n true\n )\n } catch (error) {\n // 处理自己收藏的作品时可能遇到错误。最常见的错误就是作品被删除了,获取作品数据时会产生 404 错误\n // 但是也可能出现其他错误,比如因为请求太多而出现 429 错误。因为 429 错误需要等待几分钟后才能重试,这里偷懒不再重试\n }\n number++\n log.log(`${number} / ${total}`, 1, false)\n }\n\n const msg =\n lang.transl('_移除本页面中所有作品的标签') + ' ' + lang.transl('_完成')\n log.success(msg)\n toast.success(msg, {\n position: 'topCenter',\n })\n states.busy = false\n }\n}\n\nconst removeWorksTagsInBookmarks = new RemoveWorksTagsInBookmarks()\nexport { removeWorksTagsInBookmarks }\n","import { EVT } from './EVT'\nimport { pageType } from './PageType'\nimport { settings } from './setting/Settings'\nimport { Tools } from './Tools'\n\nclass ReplaceSquareThumb {\n constructor() {\n this.bindEvents()\n\n this.observer()\n }\n\n private isDisable() {\n return window.location.pathname.startsWith('/group')\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'replaceSquareThumb') {\n if (data.value) {\n this.replaceAllImage()\n }\n }\n })\n }\n\n private replaceAllImage() {\n if (\n settings.replaceSquareThumb ||\n pageType.type == pageType.list.ArtworkRanking\n ) {\n const allImage = document.querySelectorAll('img')\n allImage.forEach((img) => this.replace(img))\n }\n }\n\n private replace(img: HTMLImageElement) {\n if (!img.src || img.dataset.index || this.isDisable()) {\n return\n }\n const src = img.src\n if (!src.endsWith('square1200.jpg') && !src.endsWith('custom1200.jpg')) {\n if (\n pageType.type === pageType.list.ArtworkRanking &&\n settings.showLargerThumbnails\n ) {\n // 排行榜里的缩略图本来就是保持了比例的,不需要替换其缩略图。\n // 但是排行榜里的缩略图原本尺寸较小,当用户启用了“显示更大的缩略图”之后,缩略图被放大后显得模糊,此时需要替换成更大尺寸的缩略图。\n // 排行榜页面的图片 URL 比较特别,末尾是 master1200,如下:\n // 'https://i.pximg.net/c/240x480/img-master/img/2022/08/01/17/59/39/100156836_p0_master1200.jpg'\n if (!src.includes('240x480')) {\n return\n }\n } else {\n return\n }\n }\n img.src = Tools.convertThumbURLTo540px(src)\n img.style.objectFit = 'contain'\n }\n\n private observer() {\n const observer = new MutationObserver((records) => {\n if (!settings.replaceSquareThumb) {\n if (pageType.type !== pageType.list.ArtworkRanking) {\n // 在排行榜页面里,即使用户未启用“替换方形缩略图以显示图片比例”功能,也依然执行替换缩略图的动作\n return\n }\n }\n records.forEach((record) => {\n if (record.type === 'childList') {\n record.addedNodes.forEach((node) => {\n if (node.nodeName === 'IMG') {\n this.replace(node as HTMLImageElement)\n }\n })\n }\n\n if (record.type === 'attributes') {\n if (\n record.attributeName === 'src' &&\n record.target.nodeName === 'IMG'\n ) {\n this.replace(record.target as HTMLImageElement)\n }\n }\n })\n })\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributeFilter: ['src'],\n })\n }\n}\n\nnew ReplaceSquareThumb()\n","import { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { msgBox } from './MsgBox'\nimport { setSetting, settings } from './setting/Settings'\n\nclass RequestSponsorship {\n constructor() {\n window.addEventListener(EVT.list.settingInitialized, () => {\n // 赋予初始值\n if (settings.requestSponsorshipTime === 0) {\n setSetting(\n 'requestSponsorshipTime',\n new Date().getTime() + this.interval\n )\n }\n\n window.setTimeout(() => {\n this.check()\n }, 10000)\n })\n }\n\n // 30 * 24 * 60 * 60 * 1000\n private readonly interval = 2592000000\n\n private check() {\n const now = new Date().getTime()\n if (now >= settings.requestSponsorshipTime) {\n msgBox.once('request sponsorship', lang.transl('_赞助方式提示'), 'show', {\n title: lang.transl('_赞助我'),\n })\n\n setSetting('requestSponsorshipTime', now + this.interval)\n }\n }\n}\n\nnew RequestSponsorship()\n","import { Tools } from './Tools'\nimport { Colors } from './Colors'\nimport { lang } from './Lang'\nimport { EVT } from './EVT'\nimport { states } from './store/States'\nimport { IDData, WorkTypeString } from './store/StoreType'\nimport { toast } from './Toast'\nimport { msgBox } from './MsgBox'\nimport { Utils } from './utils/Utils'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { novelThumbnail } from './NovelThumbnail'\nimport { pageType } from './PageType'\nimport { showHelp } from './ShowHelp'\nimport { Config } from './Config'\n\n// 手动选择作品,图片作品和小说都可以选择\nclass SelectWork {\n constructor() {\n const unlisted = pageType.type === pageType.list.Unlisted\n if (!this.created && Utils.isPixiv() && !unlisted) {\n this.created = true\n this.selector = this.createSelectorEl()\n this.addBtn()\n this.bindEvents()\n }\n }\n\n private created = false\n\n private selector?: HTMLElement // 用于选择作品的指示器\n private selectorId = 'selectWorkEl'\n private left = 0\n private top = 0\n private half = 10 // 指示器的一半宽度(用于设置位置)\n\n private _start = false\n private _pause = false\n private _tempHide = false // 打开下载面板时临时隐藏。这个变量只会影响选择器的 display\n\n get start() {\n return this._start\n }\n\n set start(bool: boolean) {\n this._start = bool\n states.selectWork = bool\n this.updateSelectorEl()\n this.updateControlBtn()\n }\n\n get pause() {\n return this._pause\n }\n\n set pause(bool: boolean) {\n this._pause = bool\n if (bool) {\n states.selectWork = false\n }\n this.updateSelectorEl()\n this.updateControlBtn()\n }\n\n get tempHide() {\n return this._tempHide\n }\n\n set tempHide(bool: boolean) {\n this._tempHide = bool\n this.updateSelectorEl()\n }\n\n private controlBtn: HTMLButtonElement = document.createElement('button') // 启动、暂停、继续选择的按钮\n private crawlBtn: HTMLButtonElement = document.createElement('button') // 抓取选择的作品的按钮,并且会退出选择模式\n private clearBtn: HTMLButtonElement = document.createElement('button') // 清空选择的作品的按钮\n\n private selectedWorkFlagClass = 'selectedWorkFlag' // 给已选择的作品添加标记时使用的 class\n private positionValue = ['relative', 'absolute', 'fixed'] // 标记元素需要父元素拥有这些定位属性\n\n // 不同页面里的作品列表容器的选择器可能不同,这里储存所有页面里会使用到的的选择器\n // root 是大部分页面通用的; js-mount-point-discovery 是发现页面使用的\n private worksWrapperSelectorList: string[] = [\n '#root',\n '#js-mount-point-discovery',\n ]\n // 储存当前页面使用的选择器\n private usedWorksWrapperSelector = this.worksWrapperSelectorList[0]\n // 储存当前页面的作品列表容器\n private worksWrapper: HTMLElement = document.body\n private ob: MutationObserver | undefined = undefined\n\n private idList: IDData[] = []\n\n private sendCrawl = false // 它用来判断抓取的是不是选择的作品。抓取选择的作品时激活此标记;当触发下一次的抓取完成事件时,表示已经抓取了选择的作品。\n private crawled = false // 是否已经抓取了选择的作品\n\n private readonly svg = `\n \n`\n\n private bindEscEvent!: (ev: KeyboardEvent) => void | undefined\n\n private bindEvents() {\n artworkThumbnail.onClick((el: HTMLElement, id: string, ev: Event) => {\n this.clickThumbnail(el, id, ev, 'illusts')\n })\n\n novelThumbnail.onClick((el: HTMLElement, id: string, ev: Event) => {\n this.clickThumbnail(el, id, ev, 'novels')\n })\n\n document.body.addEventListener(\n Config.mobile ? 'touchend' : 'click',\n (ev: Event) => {\n this.clickElement(ev.target as HTMLElement, ev)\n },\n true\n )\n\n window.addEventListener(EVT.list.openCenterPanel, () => {\n this.tempHide = true\n })\n\n window.addEventListener(EVT.list.closeCenterPanel, () => {\n this.tempHide = false\n })\n\n window.addEventListener(EVT.list.crawlComplete, () => {\n if (this.sendCrawl) {\n this.sendCrawl = false\n this.crawled = true\n }\n })\n\n // 可以使用 Alt + S 快捷键来模拟点击控制按钮\n window.addEventListener('keydown', (ev) => {\n if (ev.altKey && ev.code === 'KeyS') {\n this.controlBtn.click()\n }\n })\n\n // 鼠标移动时保存鼠标的坐标\n window.addEventListener(\n 'mousemove',\n (ev) => {\n this.moveEvent(ev)\n },\n true\n )\n\n // 离开页面前提示用户\n // 如果把此处的 window.onbeforeunload 换成 window.addEventListener('beforeunload') 会出现问题\n // 浏览器不会弹出询问对话框,而是直接关闭页面\n window.onbeforeunload = () => {\n // 如果存在选择的作品,并且选择的作品(全部或部分)没有被抓取,则进行提示\n if (this.idList.length > 0 && !this.crawled) {\n msgBox.error(lang.transl('_离开页面前提示选择的作品未抓取'), {\n btn: lang.transl('_我知道了'),\n })\n return false\n }\n }\n\n // 每次页面切换之后,查找新的作品列表容器并保存\n window.addEventListener(EVT.list.pageSwitch, () => {\n let worksWrapper: HTMLElement | null = null\n for (const selector of this.worksWrapperSelectorList) {\n worksWrapper = document.querySelector(selector)\n if (worksWrapper) {\n this.usedWorksWrapperSelector = selector\n break\n }\n }\n this.worksWrapper = worksWrapper || document.body\n })\n\n // 每次页面切换之后,查找新显示的作品里是否有之前被选择的作品,如果有则为其添加标记\n // 因为 pixiv 的页面切换会导致作品列表变化,之前添加的标记也就没有了,需要重新添加\n window.addEventListener(EVT.list.pageSwitch, () => {\n // 每次触发时都要断开之前绑定的观察器,否则会导致事件重复绑定\n // 因为 pageSwitch 事件可能会触发多次,如果不断开之前的观察器,那么每切换一次页面就会多绑定和执行一个回调\n this.ob && this.ob.disconnect()\n\n this.ob = new MutationObserver(\n Utils.debounce(() => {\n this.reAddAllFlag()\n }, 300)\n )\n\n this.ob.observe(this.worksWrapper, {\n childList: true,\n subtree: true,\n })\n })\n }\n\n private clearIdList() {\n // 清空标记需要使用 id 数据,所以需要执行之后才能清空 id\n this.removeAllSelectedFlag()\n this.idList = []\n this.updateCrawlBtn()\n }\n\n private createSelectorEl() {\n const el = document.createElement('div')\n el.id = this.selectorId\n document.body.appendChild(el)\n return el\n }\n\n private updateSelectorEl() {\n if (!this.selector) {\n return\n }\n\n const show = this.canSelect() && !this.tempHide\n\n this.selector.style.display = show ? 'block' : 'none'\n // 设置元素的 style 时,如果新的值和旧的值相同(例如:每次都设置 display 为 none),Chrome 会自动优化,此时不会导致节点发生变化。\n\n // 如果选择器处于隐藏状态,就不会更新其坐标。这样可以优化性能\n if (show) {\n this.selector.style.left = this.left - this.half + 'px'\n this.selector.style.top = this.top - this.half + 'px'\n }\n }\n\n private addBtn() {\n this.controlBtn = Tools.addBtn(\n 'selectWorkBtns',\n Colors.bgGreen,\n '_手动选择作品'\n )\n this.controlBtn.setAttribute('title', 'Alt + S')\n this.updateControlBtn()\n\n this.clearBtn = Tools.addBtn(\n 'selectWorkBtns',\n Colors.bgRed,\n '_清空选择的作品'\n )\n this.clearBtn.style.display = 'none'\n this.clearBtn.addEventListener('click', () => {\n this.clearIdList()\n this.clearBtn.style.display = 'none'\n this.crawlBtn.style.display = 'none'\n })\n\n this.crawlBtn = Tools.addBtn(\n 'selectWorkBtns',\n Colors.bgBlue,\n '_抓取选择的作品'\n )\n this.crawlBtn.style.display = 'none'\n this.crawlBtn.addEventListener('click', (ev) => {\n this.sendDownload()\n })\n }\n\n // 切换控制按钮的文字和点击事件\n private updateControlBtn() {\n if (!this.start) {\n lang.updateText(this.controlBtn, '_手动选择作品')\n this.controlBtn.onclick = (ev) => {\n this.startSelect(ev)\n this.clearBtn.style.display = 'block'\n if (!Config.mobile) {\n showHelp.show(\n 'tipAltSToSelectWork',\n lang.transl('_快捷键ALTS手动选择作品')\n )\n }\n }\n } else {\n if (!this.pause) {\n lang.updateText(this.controlBtn, '_暂停选择')\n this.controlBtn.onclick = (ev) => {\n this.pauseSelect()\n }\n } else {\n lang.updateText(this.controlBtn, '_继续选择')\n this.controlBtn.onclick = (ev) => {\n this.startSelect(ev)\n }\n }\n }\n }\n\n // 在选择作品的数量改变时,在抓取按钮上显示作品数量\n private updateCrawlBtn() {\n this.crawlBtn.style.display = this.start ? 'block' : 'none'\n if (this.idList.length > 0) {\n lang.updateText(\n this.crawlBtn,\n '_抓取选择的作品2',\n this.idList.length.toString()\n )\n this.clearBtn.style.display = 'block'\n } else {\n lang.updateText(this.crawlBtn, '_抓取选择的作品')\n }\n }\n\n private addId(el: HTMLElement, id: string, type: WorkTypeString) {\n const index = this.idList.findIndex((item) => {\n return item.id === id && item.type === type\n })\n // 添加这个 id\n if (index === -1) {\n this.idList.push({\n id,\n type,\n })\n this.crawled = false\n this.addSelectedFlag(el, id)\n } else {\n // id 已存在,则删除\n this.idList.splice(index, 1)\n this.removeSelectedFlag(id)\n }\n this.updateCrawlBtn()\n }\n\n private clickThumbnail(\n el: HTMLElement,\n id: string,\n ev: Event,\n type: WorkTypeString\n ) {\n if (!this.canSelect()) {\n return\n }\n\n // 如果点击的元素是作品缩略图里的收藏按钮,则不选择这个作品,这样可以让收藏按钮发挥作用\n // 注意这些 nodeName 是小写的\n const target = ev.target as HTMLElement\n if (target && (target.nodeName === 'svg' || target.nodeName === 'path')) {\n return\n }\n\n // 真实点击的元素\n // console.log(ev.target)\n // 绑定了这个事件的元素\n // console.log(ev.currentTarget)\n\n if (!id || id === '0') {\n id = Tools.findWorkIdFromElement(\n el,\n type === 'novels' ? 'novels' : 'illusts'\n )\n }\n\n // 阻止默认事件,否则会进入作品页面,导致无法在当前页面继续选择\n ev.preventDefault()\n ev.stopPropagation()\n this.addId(el, id, type)\n }\n\n private clickElement(el: HTMLElement, ev: Event) {\n if (!this.canSelect()) {\n return\n }\n\n if (!el || el.nodeName !== 'A') {\n return\n }\n\n const href = (el as HTMLAnchorElement).href\n const artworkId = Tools.getIllustId(href)\n if (artworkId) {\n ev.preventDefault()\n // 如果查找到了作品 id,必须阻止冒泡,否则会执行 clickThumbnail\n ev.stopPropagation()\n this.addId(el.parentElement!, artworkId, 'illusts')\n return\n }\n\n const novelId = Tools.getNovelId(href)\n if (novelId) {\n ev.preventDefault()\n ev.stopPropagation()\n this.addId(el.parentElement!, novelId, 'novels')\n return\n }\n }\n\n // 监听鼠标移动\n // 鼠标移动时,由于事件触发频率很高,所以这里的代码也会执行很多次,但是这没有导致明显的性能问题,所以没有使用节流等加以限制\n private moveEvent(ev: MouseEvent) {\n this.left = ev.x\n this.top = ev.y\n this.updateSelectorEl()\n }\n\n // 按 Esc 键时暂停选择\n private escEvent(ev: KeyboardEvent) {\n if (ev.code === 'Escape') {\n this.pauseSelect()\n }\n }\n\n // 开始或继续选择\n private startSelect(ev: MouseEvent) {\n this.start = true\n\n if (this.pause) {\n // 如果之前暂停了,则继续选择。不清空之前的结果\n this.pause = false\n } else {\n // 如果是全新开始的选择,则清空之前的结果\n this.clearIdList()\n }\n\n this.bindEscEvent = this.escEvent.bind(this)\n document.addEventListener('keyup', this.bindEscEvent)\n\n EVT.fire('closeCenterPanel')\n }\n\n private pauseSelect() {\n this.pause = true\n this.bindEscEvent &&\n document.removeEventListener('keyup', this.bindEscEvent)\n }\n\n private canSelect() {\n return this.start && !this.pause\n }\n\n // 抓取选择的作品,这会自动暂停手动选择作品\n private sendDownload() {\n this.pauseSelect()\n\n if (this.idList.length > 0) {\n // 传递 id 列表时,将其转换成一个新的数组。否则传递的是引用,外部的一些操作可能会影响内部的 id 列表\n EVT.fire('crawlIdList', Array.from(this.idList))\n\n this.sendCrawl = true\n this.crawled = false\n states.quickCrawl = true\n\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n } else {\n toast.error(lang.transl('_没有数据可供使用'))\n }\n }\n\n // 给这个作品添加标记\n private addSelectedFlag(wrap: HTMLElement, id: string) {\n const i = document.createElement('i')\n i.classList.add(this.selectedWorkFlagClass)\n i.dataset.id = id\n i.innerHTML = this.svg\n\n wrap.insertAdjacentElement('afterbegin', i)\n\n // 如果容器没有某些定位,可能会导致下载器添加的标记的位置异常。修复此问题\n const position = window.getComputedStyle(wrap)['position']\n if (!this.positionValue.includes(position)) {\n wrap.style.position = 'relative'\n }\n }\n\n // 重新添加被选择的作品上的标记\n private reAddAllFlag() {\n if (this.idList.length === 0) {\n return\n }\n\n for (const { id, type } of this.idList) {\n if (this.getSelectedFlag(id)) {\n // 如果这个作品的标记依旧存在,就不需要重新添加\n /**\n * 示例:从作品列表 https://www.pixiv.net/users/18095070/illustrations\n * 进入 tag 列表页 https://www.pixiv.net/users/18095070/illustrations/%E5%A5%B3%E3%81%AE%E5%AD%90\n * pixiv 会复用可用的作品,所以这些作品上的标记也依然存在,不需要重新添加\n */\n return\n }\n\n let el: HTMLAnchorElement | null\n if (type === 'novels') {\n el = document.querySelector(\n `${this.usedWorksWrapperSelector} a[href=\"/novel/show.php?id=${id}\"]`\n )\n } else {\n el = document.querySelector(\n `${this.usedWorksWrapperSelector} a[href=\"/artworks/${id}\"]`\n )\n }\n\n if (el) {\n // 如果在当前页面查找到了选择的作品,就给它添加标记\n this.addSelectedFlag(el, id)\n }\n }\n }\n\n private getSelectedFlag(id: string) {\n return document.querySelector(\n `.${this.selectedWorkFlagClass}[data-id='${id}']`\n )\n }\n\n // 清空指定作品的标记\n private removeSelectedFlag(id: string) {\n const el = this.getSelectedFlag(id)\n el && el.remove()\n }\n\n // 清空所有标记\n private removeAllSelectedFlag() {\n for (const item of this.idList) {\n this.removeSelectedFlag(item.id)\n }\n }\n}\n\nnew SelectWork()\n","interface ListData {\n id: number\n time: number\n callback: Function | null\n}\n\nclass SetTimeoutWorker {\n constructor() {\n this.createWorker()\n }\n\n // 因为 worker 的代码很短,所以直接储存在这里,避免从网络加载导致的延迟问题\n private readonly workerCode = `onmessage = (ev) => {\n setTimeout(() => {\n postMessage({\n id: ev.data.id\n })\n }, ev.data.time)\n }`\n\n private worker!: Worker\n\n private createWorker() {\n const blob = new Blob([this.workerCode])\n this.worker = new Worker(URL.createObjectURL(blob))\n\n this.worker.addEventListener('message', (ev) => {\n const id = ev.data.id as number\n if (this.list[id].callback !== null) {\n this.list[id].callback!()\n this.clear(id)\n }\n })\n }\n\n private list: ListData[] = []\n\n private timerId = 0\n\n public set(callback: Function, time: number) {\n const data = {\n id: this.timerId,\n time,\n callback,\n }\n this.list.push(data)\n this.timerId++\n\n this.worker.postMessage({\n id: data.id,\n time,\n })\n\n return data.id\n }\n\n public clear(id: number) {\n this.list[id].callback = null\n }\n}\n\nconst setTimeoutWorker = new SetTimeoutWorker()\nexport { setTimeoutWorker }\n","import { Tools } from './Tools'\nimport { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { settings, setSetting } from './setting/Settings'\nimport { theme } from './Theme'\nimport { toast } from './Toast'\nimport { msgBox } from './MsgBox'\n\n// 为某些用户设置固定的用户名,或者别名\nclass SetUserName {\n constructor() {\n this.createWrap()\n theme.register(this.wrap)\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private readonly slotName = 'setUserNameSlot'\n private wrap!: HTMLDivElement // 最外层元素\n\n private expandBtn!: HTMLButtonElement // 展开/折叠 按钮\n private totalSpan!: HTMLSpanElement // 显示规则数量\n private showAddBtn!: HTMLButtonElement // 添加 按钮,点击显示添加区域\n\n private addWrap!: HTMLDivElement // 用于添加新项目的区域\n private addInputUid!: HTMLInputElement // 用于添加新项目的 uid 的输入框\n private addInputName!: HTMLInputElement // 用于添加新项目的 name 的输入框\n private addBtn!: HTMLButtonElement // 添加 按钮\n private cancelBtn!: HTMLButtonElement // 取消 按钮\n\n private listWrap!: HTMLDivElement // 列表区域容器\n\n private _addWrapShow = false\n\n set addWrapShow(val: boolean) {\n this._addWrapShow = val\n\n if (val) {\n this.addWrap.style.display = 'block'\n this.addInputUid.focus()\n } else {\n this.addWrap.style.display = 'none'\n this.addInputUid.value = ''\n this.addInputName.value = ''\n }\n }\n\n get addWrapShow() {\n return this._addWrapShow\n }\n\n private wrapHTML = `\n \n\n \n 0\n \n \n \n\n
    \n
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n\n \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n `\n\n // 创建列表外部的容器,静态 html\n private createWrap() {\n this.wrap = Tools.useSlot(this.slotName, this.wrapHTML)! as HTMLDivElement\n this.expandBtn = this.wrap.querySelector('.expand')! as HTMLButtonElement\n this.showAddBtn = this.wrap.querySelector('.showAdd')! as HTMLButtonElement\n this.totalSpan = this.wrap.querySelector('.total')! as HTMLSpanElement\n this.addWrap = this.wrap.querySelector('.addWrap')! as HTMLDivElement\n this.addInputUid = this.wrap.querySelector(\n '.addUidInput'\n )! as HTMLInputElement\n this.addInputName = this.wrap.querySelector(\n '.addNameInput'\n )! as HTMLInputElement\n this.addBtn = this.wrap.querySelector('.add')! as HTMLButtonElement\n this.cancelBtn = this.wrap.querySelector('.cancel')! as HTMLButtonElement\n this.listWrap = this.wrap.querySelector('.listWrap')! as HTMLDivElement\n\n // 展开/折叠按钮\n this.expandBtn.addEventListener('click', () => {\n setSetting('setUserNameShow', !settings.setUserNameShow)\n })\n\n // 切换显示添加规则的区域\n this.showAddBtn.addEventListener('click', () => {\n this.addWrapShow = !this.addWrapShow\n })\n\n // 添加规则的按钮\n this.addBtn.addEventListener('click', () => {\n this.addRule(this.addInputUid.value, this.addInputName.value)\n })\n\n // 取消添加的按钮\n this.cancelBtn.addEventListener('click', () => {\n this.addWrapShow = false\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'setUserNameShow') {\n this.showListWrap()\n }\n if (data.name === 'setUserNameList') {\n this.createAllList()\n }\n })\n }\n\n private showListWrap() {\n const show = settings.setUserNameShow\n this.listWrap.style.display = show ? 'flex' : 'none'\n lang.updateText(this.expandBtn, show ? '_收起' : '_展开')\n }\n\n // 根据规则动态创建 html\n private createAllList() {\n this.totalSpan.textContent = Object.keys(\n settings.setUserNameList\n ).length.toString()\n this.listWrap.innerHTML = ''\n const df = document.createDocumentFragment()\n for (const [uid, name] of Object.entries(settings.setUserNameList)) {\n df.append(this.createOneList(uid, name))\n }\n this.listWrap.append(df)\n }\n\n // 创建规则对应的元素,并绑定事件\n private createOneList(uid: string, name: string) {\n const html = `\n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n\n \n
    `\n\n const element = document.createElement('div')\n element.classList.add('settingItem')\n element.dataset.key = uid\n element.innerHTML = html\n\n const updateRule = element.querySelector(`button[data-updateRule='${uid}']`)\n const deleteRule = element.querySelector(`button[data-deleteRule='${uid}']`)\n const uidInput = element.querySelector(\n `input[data-uidInput='${uid}']`\n )! as HTMLInputElement\n const nameInput = element.querySelector(\n `input[data-nameInput='${uid}']`\n )! as HTMLInputElement\n\n // 当输入框发生变化时,进行更新\n ;[uidInput, nameInput].forEach((el) => {\n el?.addEventListener('change', () => {\n if (el.value) {\n this.updateRule(uid, uidInput.value, nameInput.value, false)\n }\n })\n })\n\n // 更新规则\n updateRule?.addEventListener('click', () => {\n this.updateRule(uid, uidInput.value, nameInput.value)\n })\n\n // 删除规则\n deleteRule?.addEventListener('click', () => {\n this.deleteRule(uid)\n })\n\n return element\n }\n\n // 检查用户输入的值\n private checkValue(uidInput: string, nameInput: string) {\n if (!uidInput || !nameInput) {\n msgBox.error(lang.transl('_必填项不能为空'))\n return false\n }\n\n const uid = Number.parseInt(uidInput)\n if (!uid || isNaN(uid)) {\n msgBox.error(lang.transl('_用户ID必须是数字'))\n return false\n }\n\n return {\n uidInput,\n nameInput,\n }\n }\n\n // 添加规则\n private addRule(uid: string, name: string) {\n const check = this.checkValue(uid, name)\n if (!check) {\n return\n }\n\n settings.setUserNameList[uid] = name\n setSetting('setUserNameList', settings.setUserNameList)\n\n this.addWrapShow = false\n\n toast.success(lang.transl('_添加成功'))\n }\n\n // 更新规则\n // tip 表示是否用显示操作成功的提示。当用户点击了更新按钮时应该显示提示;输入内容变化导致的自动更新可以不显示提示\n private updateRule(oldUid: string, uid: string, name: string, tip = true) {\n const check = this.checkValue(uid, name)\n if (!check) {\n return\n }\n\n delete settings.setUserNameList[oldUid]\n settings.setUserNameList[uid] = name\n setSetting('setUserNameList', settings.setUserNameList)\n\n this.addWrapShow = false\n\n if (tip) {\n toast.success(lang.transl('_更新成功'))\n }\n }\n\n // 删除规则\n private deleteRule(uid: string) {\n delete settings.setUserNameList[uid]\n setSetting('setUserNameList', settings.setUserNameList)\n\n this.removeListElement(uid)\n }\n\n private removeListElement(uid: string) {\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${uid}']`\n )\n listElement?.remove()\n }\n}\n\nnew SetUserName()\n","import { Config } from './Config'\nimport { ShowDownloadBtnOnThumbOnDesktop } from './ShowDownloadBtnOnThumbOnDesktop'\nimport { ShowDownloadBtnOnThumbOnMobile } from './ShowDownloadBtnOnThumbOnMobile'\n\n// 在图片作品的缩略图上显示下载按钮,点击按钮可以直接下载这个作品\nclass ShowDownloadBtnOnThumb {\n constructor() {\n Config.mobile\n ? new ShowDownloadBtnOnThumbOnMobile()\n : new ShowDownloadBtnOnThumbOnDesktop()\n }\n}\n\nnew ShowDownloadBtnOnThumb()\n","import { EVT } from './EVT'\nimport { settings } from './setting/Settings'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { states } from './store/States'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { IDData } from './store/StoreType'\nimport { Colors } from './Colors'\nimport { Config } from './Config'\n\n// 在图片作品的缩略图上显示下载按钮,点击按钮会直接下载这个作品\nclass ShowDownloadBtnOnThumbOnDesktop {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n // 在桌面端,只有一个下载按钮,当鼠标经过作品缩略图时才会显示下载按钮\n this.addBtn()\n this.bindEvents()\n }\n\n private btn!: HTMLButtonElement\n private readonly btnId = 'downloadBtnOnThumb'\n private readonly btnSize = 32\n\n private currentWorkId = '' // 保存触发事件的缩略图的作品 id\n\n private hiddenBtnTimer = 0 // 使用定时器让按钮延迟消失。这是为了解决一些情况下按钮闪烁的问题\n private hiddenBtnDelay = 100\n private doNotShowBtn = false // 当点击了按钮后,进入此状态,此状态中不会显示按钮\n // 此状态是为了解决这个问题:点击了按钮之后,按钮会被隐藏,隐藏之后,鼠标下方就是图片缩略图区域,这会触发缩略图的鼠标事件,导致按钮马上就又显示了出来。所以点击按钮之后设置这个状态,在其为 true 的期间不会显示按钮。过一段时间再把它复位。复位所需的时间很短,因为只要能覆盖这段时间就可以了:从隐藏按钮开始算起,到缩略图触发鼠标事件结束。\n\n private addBtn() {\n const btn = document.createElement('button')\n btn.id = this.btnId\n btn.classList.add(this.btnId)\n btn.innerHTML = `\n \n \n`\n this.btn = document.body.appendChild(btn)\n }\n\n private bindEvents() {\n // 页面切换时隐藏按钮\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.hiddenBtn()\n })\n\n window.addEventListener(EVT.list.clickBtnOnThumb, () => {\n this.hiddenBtnNow()\n })\n\n // 鼠标移入按钮时取消隐藏按钮\n this.btn.addEventListener('mouseenter', (ev) => {\n window.clearTimeout(this.hiddenBtnTimer)\n })\n\n // 鼠标移出按钮时隐藏按钮\n this.btn.addEventListener('mouseleave', () => {\n this.hiddenBtn()\n })\n\n // 点击按钮时发送下载任务\n this.btn.addEventListener('click', (ev) => {\n this.hiddenBtnNow()\n EVT.fire('clickBtnOnThumb')\n\n if (this.currentWorkId) {\n const IDData: IDData = {\n type: 'illusts',\n id: this.currentWorkId,\n }\n EVT.fire('crawlIdList', [IDData])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n })\n\n artworkThumbnail.onEnter((el: HTMLElement, id: string) => {\n this.currentWorkId = id\n this.showBtn(el)\n })\n\n artworkThumbnail.onLeave(() => {\n this.hiddenBtn()\n })\n }\n\n // 显示按钮\n private showBtn(target: HTMLElement) {\n if (this.doNotShowBtn || !settings.showDownloadBtnOnThumb) {\n return\n }\n\n window.clearTimeout(this.hiddenBtnTimer)\n const rect = target.getBoundingClientRect()\n this.btn.style.left =\n window.scrollX +\n rect.left +\n (settings.magnifierPosition === 'left' ? 0 : rect.width - this.btnSize) +\n 'px'\n\n let top = window.scrollY + rect.top\n // 如果显示了放大按钮,就需要加大 top,让下载按钮显示在放大按钮下面\n if (settings.magnifier) {\n top = top + this.btnSize + 8\n }\n this.btn.style.top = top + 'px'\n\n this.btn.style.display = 'flex'\n }\n\n // 延迟隐藏按钮\n private hiddenBtn() {\n window.clearTimeout(this.hiddenBtnTimer)\n this.hiddenBtnTimer = window.setTimeout(() => {\n this.btn.style.display = 'none'\n }, this.hiddenBtnDelay)\n }\n\n // 立刻隐藏按钮\n private hiddenBtnNow() {\n this.doNotShowBtn = true\n window.setTimeout(() => {\n this.doNotShowBtn = false\n }, 100)\n\n window.clearTimeout(this.hiddenBtnTimer)\n this.btn.style.display = 'none'\n }\n}\n\nexport { ShowDownloadBtnOnThumbOnDesktop }\n","import { EVT } from './EVT'\nimport { settings } from './setting/Settings'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { states } from './store/States'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { IDData } from './store/StoreType'\nimport { Colors } from './Colors'\nimport { Tools } from './Tools'\n\n// 在图片作品的缩略图上显示下载按钮,点击按钮会直接下载这个作品\nclass ShowDownloadBtnOnThumbOnMobile {\n constructor() {\n // 在移动端,由于没有 mouseover 事件,\n // 所以只能每个作品缩略图分别添加一个下载按钮\n this.bindEvents()\n }\n\n private readonly className = 'downloadBtnOnThumb'\n private readonly size = 32\n private styleElement?: HTMLStyleElement\n\n private bindEvents() {\n artworkThumbnail.onFound((el: HTMLElement, id: string | '') => {\n if (!settings.showDownloadBtnOnThumb) {\n return\n }\n\n const btn = this.addBtn(el)\n btn.addEventListener('click', (ev) => {\n if (!id) {\n id = Tools.findWorkIdFromElement(el, 'illusts')\n }\n if (!id) {\n return\n }\n const IDData: IDData = {\n type: 'illusts',\n id: id,\n }\n EVT.fire('crawlIdList', [IDData])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n })\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data\n if (data.name === 'showDownloadBtnOnThumb') {\n this.toggleShowBtns(data.value)\n this.setPageCountStyle(data.value)\n }\n })\n }\n\n private addBtn(target: HTMLElement) {\n const btn = document.createElement('button')\n btn.classList.add(this.className)\n btn.innerHTML = `\n \n \n`\n\n btn.style.left = 'auto'\n btn.style.right = '0px'\n btn.style.top = '0px'\n btn.style.display = 'flex'\n\n target.appendChild(btn)\n return btn\n }\n\n private setPageCountStyle(value: boolean) {\n // 显示按钮时,让缩略图的页数文字下移到按钮下面,否则页数会被按钮遮挡\n if (value && !this.styleElement) {\n this.styleElement = document.createElement('style')\n this.styleElement.innerText = `.status-page-count-container {margin-top: ${this.size}px;}`\n document.body.append(this.styleElement)\n }\n\n if (!value && this.styleElement) {\n this.styleElement.remove()\n this.styleElement = undefined\n }\n }\n\n private toggleShowBtns(value: boolean) {\n const btns = document.body.querySelectorAll(`.${this.className}`)\n for (const btn of btns) {\n ;(btn as HTMLButtonElement).style.display = value ? 'flex' : 'none'\n }\n }\n}\n\nexport { ShowDownloadBtnOnThumbOnMobile }\n","import { lang } from './Lang'\nimport { Config } from './Config'\nimport { msgBox } from './MsgBox'\nimport { settings, setSetting, SettingKeys } from './setting/Settings'\n\n// 用消息框显示一次性的提示\nclass ShowHelp {\n public show(settingKey: SettingKeys, msg: string) {\n if (settings[settingKey] === true) {\n setSetting(settingKey, false)\n msgBox.show(msg, {\n title: Config.appName + ' Help',\n btn: lang.transl('_我知道了'),\n })\n }\n }\n}\n\nconst showHelp = new ShowHelp()\nexport { showHelp }\n","import { Config } from './Config'\nimport { EVT } from './EVT'\nimport { pageType } from './PageType'\nimport { settings } from './setting/Settings'\nimport { Tools } from './Tools'\n\nclass ShowLargerThumbnails {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n this.loadCssText()\n this.bindEvents()\n this.findFriendsWrapEl()\n }\n\n // css 内容来自 style/showLargerThumbnails.css\n private css = ''\n private readonly styleId = 'ShowLargerThumbnails'\n\n private findFriendsWrap = false\n\n private async loadCssText() {\n const css = await fetch(\n chrome.runtime.getURL('style/showLargerThumbnails.css')\n )\n this.css = await css.text()\n this.setCss()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'showLargerThumbnails') {\n this.setCss()\n }\n })\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.setCss()\n this.findFriendsWrap = false\n })\n\n window.setInterval(() => {\n this.findFriendsWrapEl()\n }, 1000)\n }\n\n private setCss() {\n if (!this.css) {\n return\n }\n\n if (Tools.notEnabledShowLargerThumb()) {\n return this.removeStyle()\n }\n settings.showLargerThumbnails ? this.addStyle() : this.removeStyle()\n }\n\n private addStyle() {\n if (document.querySelector('#' + this.styleId)) {\n return\n }\n\n const el = document.createElement('style')\n el.id = this.styleId\n el.innerHTML = this.css\n document.body.append(el)\n }\n\n private removeStyle() {\n const el = document.querySelector('#' + this.styleId)\n el && el.remove()\n }\n\n // 在首页查找“关注用户・好P友的作品”列表容器,为其添加自定义的 className\n private findFriendsWrapEl() {\n if (this.findFriendsWrap || pageType.type !== pageType.list.Home) {\n return\n }\n\n const sectionList = document.querySelectorAll('section')\n if (sectionList && sectionList[1]) {\n if (sectionList[1].querySelector('ul div')) {\n sectionList[1].classList.add('homeFriendsNewWorks')\n this.findFriendsWrap = true\n }\n }\n }\n}\n\nnew ShowLargerThumbnails()\n","import { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { settings } from './setting/Settings'\nimport { states } from './store/States'\nimport { store } from './store/Store'\nimport { Tools } from './Tools'\n\nclass ShowNotification {\n constructor() {\n this.iconURL = chrome.runtime.getURL('icon/logo128.png')\n this.bindEvents()\n }\n\n private iconURL = ''\n\n private bindEvents() {\n // 当用户开启“下载完成后显示通知”的提示时,请求权限\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'showNotificationAfterDownloadComplete' && data.value) {\n this.requstPremission()\n }\n })\n\n // 当下载任务完毕时,显示通知\n window.addEventListener(EVT.list.downloadComplete, () => {\n window.setTimeout(() => {\n // 如果抓取标签列表没有完成,则不显示通知\n // 在一次抓取多个标签时,当最后一个标签下载完之后会解除 crawlTagList 状态,这时可以显示一条通知\n // 如果有等待下载的任务,则不显示通知\n if (\n settings.showNotificationAfterDownloadComplete &&\n !states.crawlTagList &&\n store.waitingIdList.length === 0\n ) {\n this.show(lang.transl('_下载完毕2'), Tools.getPageTitle())\n }\n }, 0)\n })\n }\n\n public async show(title: string, text: string) {\n await this.requstPremission()\n new Notification(title, {\n body: text,\n // 不设置 tag。如果设置了相同的 tag,那么新的通知会覆盖旧的通知,导致如果有多个页面下载完毕,用户只能看到最后一个页面的通知\n // tag: 'PowerfulPixivDownloader',\n icon: this.iconURL,\n })\n }\n\n private requstPremission() {\n if (Notification.permission !== 'granted') {\n return Notification.requestPermission()\n }\n }\n}\n\nnew ShowNotification()\n","import { EVT } from './EVT'\nimport { settings } from './setting/Settings'\nimport { Utils } from './utils/Utils'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { PreviewUgoira } from './PreviewUgoira'\nimport { ArtworkData } from './crawl/CrawlResult'\nimport { states } from './store/States'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { Colors } from './Colors'\nimport { showHelp } from './ShowHelp'\nimport { store } from './store/Store'\nimport { Config } from './Config'\n\ninterface Style {\n imgW: number\n imgH: number\n width: number\n height: number\n mt: number\n ml: number\n}\n\ninterface Urls {\n original: string\n regular: string\n}\n\nclass ShowOriginSizeImage {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n this.createElements()\n this.bindEvents()\n }\n\n private urls = {\n original: '',\n regular: '',\n }\n\n private workData?: ArtworkData\n\n // 显示作品中的第几张图片\n private index = 0\n\n // 原比例查看图片的容器的元素\n private wrapId = 'originSizeWrap'\n private wrap!: HTMLElement\n private img!: HTMLImageElement\n private readonly defaultSize = 1200\n private readonly border = 4 // wrap 的 border 占据的空间\n // 不可以把 left、top 设置为负值,否则超出屏幕的区域无法查看\n // 所以通过修改 margin 来达到定位的效果\n private style: Style = {\n imgW: this.defaultSize,\n imgH: this.defaultSize,\n width: this.defaultSize,\n height: this.defaultSize,\n mt: 0,\n ml: 0,\n }\n private readonly defaultStyle = Utils.deepCopy(this.style)\n private readonly zoomList = [\n 0.1, 0.2, 0.3, 0.4, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5,\n ]\n private zoomIndex = 6\n // 默认的缩放比例为 1\n private zoom = this.zoomList[this.zoomIndex]\n private testImg = new Image()\n private getImageSizeTimer = 0\n\n // 定义当鼠标移动 1 像素时,wrap 移动多少像素\n private onePxMove = 10\n private moveX = 0\n private moveY = 0\n\n private previewUgoira?: PreviewUgoira\n\n private _show = false\n\n private get show() {\n return this._show\n }\n\n private set show(val: boolean) {\n this._show = val\n if (val) {\n EVT.fire('showOriginSizeImage')\n this.wrap.style.display = 'block'\n if (!Config.mobile) {\n showHelp.show(\n 'tipHotkeysViewLargeImage',\n lang.transl('_查看作品大图时的快捷键')\n )\n }\n\n // 预览动图\n if (settings.previewUgoira && this.workData?.body.illustType === 2) {\n this.previewUgoira = new PreviewUgoira(\n this.workData.body.id,\n this.wrap,\n settings.showOriginImageSize\n )\n }\n } else {\n this.img.src = ''\n this.wrap.style.display = 'none'\n\n // 销毁预览动图的模块\n if (this.previewUgoira) {\n this.previewUgoira.destroy()\n this.previewUgoira = null as unknown as PreviewUgoira\n }\n }\n }\n\n private showTimer = 0\n private rightClickBeforeShow = false\n\n private createElements() {\n this.wrap = document.createElement('div')\n this.wrap.id = this.wrapId\n this.img = document.createElement('img')\n this.wrap.appendChild(this.img)\n document.documentElement.appendChild(this.wrap)\n }\n\n private bindEvents() {\n artworkThumbnail.onEnter((el: HTMLElement) => {\n if (settings.showOriginImage) {\n // 这里测试在 CentBrowser(内核版本 86)中存在问题,因为 CentBrowser 里鼠标右键松开时才会触发 mousedown 事件,导致根本没法做鼠标长按的效果\n el.addEventListener('mousedown', this.readyShow)\n el.addEventListener('mouseup', this.cancelReadyShow)\n }\n })\n\n artworkThumbnail.onLeave((el: HTMLElement) => {\n el.removeEventListener('mousedown', this.readyShow)\n el.removeEventListener('mouseup', this.cancelReadyShow)\n })\n\n this.wrap.addEventListener('click', () => {\n this.show = false\n })\n\n document.body.addEventListener('click', () => {\n this.show = false\n })\n\n this.wrap.addEventListener('mousewheel', (ev) => {\n ev.preventDefault()\n // 向上滚 deltaY 是负数(-125),向下滚是正数(125)\n const zoomAdd = (ev as WheelEvent).deltaY < 0\n this.zoomWrap(ev as MouseEvent, zoomAdd)\n })\n\n this.wrap.addEventListener('mousemove', (ev) => {\n if (this.moveX === 0) {\n // client x y 是可视区域,不包含滚动区域\n this.moveX = ev.clientX\n this.moveY = ev.clientY\n }\n\n // 本来我对此事件进行了节流处理,但是节流的话容易显得画面不流畅。\n // 而且我试了试,不节流也不会产生太高的 CPU 负荷。所以现在不再做节流处理\n this.moveWrap(ev)\n this.moveX = ev.clientX\n this.moveY = ev.clientY\n })\n\n window.addEventListener('contextmenu', (ev) => {\n // 如果是在原图区域显示之前按下了右键,并且随后显示了原图区域,那么就屏蔽这一次右键菜单\n if (this.rightClickBeforeShow) {\n ev.preventDefault()\n this.rightClickBeforeShow = false\n this.moveX = ev.clientX\n this.moveY = ev.clientY\n }\n })\n\n window.addEventListener(\n 'keydown',\n (ev) => {\n // 预览大图时,可以使用快捷键 D 下载这个作品\n if (ev.code === 'KeyD' && this.show) {\n EVT.fire('crawlIdList', [\n {\n type: 'illusts',\n id: this.workData!.body.id,\n },\n ])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n position: 'center',\n })\n }\n\n // 预览作品时,可以使用快捷键 C 仅下载当前显示的图片\n if (ev.code === 'KeyC' && this.show) {\n ev.stopPropagation()\n\n if (this.workData!.body.pageCount > 1) {\n store.setDownloadOnlyPart(Number.parseInt(this.workData!.body.id), [\n this.index,\n ])\n }\n\n EVT.fire('crawlIdList', [\n {\n type: 'illusts',\n id: this.workData!.body.id,\n },\n ])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n position: 'center',\n })\n }\n\n // 按 Esc 键时取消预览\n if (ev.code === 'Escape' && this.show) {\n this.show = false\n ev.stopPropagation()\n }\n },\n true\n )\n }\n\n private readyShow = (ev: MouseEvent) => {\n window.clearTimeout(this.showTimer)\n // 当预览区域显示之后,在作品缩略图上长按鼠标右键,显示原尺寸图片\n // 0 左键 1 滚轮 2 右键\n if (ev.button === 2) {\n this.showTimer = window.setTimeout(() => {\n this.rightClickBeforeShow = true\n this.initWrap(ev)\n }, 500)\n }\n }\n\n private cancelReadyShow = (ev: MouseEvent) => {\n window.clearTimeout(this.showTimer)\n }\n\n private async getImage(url: string): Promise {\n window.clearInterval(this.getImageSizeTimer)\n this.testImg.src = ''\n\n return new Promise((resolve) => {\n this.testImg = new Image()\n this.testImg.src = url\n this.getImageSizeTimer = window.setInterval(() => {\n if (this.testImg.naturalWidth > 0) {\n window.clearInterval(this.getImageSizeTimer)\n return resolve(this.testImg)\n }\n }, 50)\n })\n }\n\n // 初次显示一个图片时,初始化 wrap 的样式\n private async initWrap(ev: MouseEvent) {\n const url = this.urls[settings.showOriginImageSize]\n if (!url) {\n return\n }\n\n this.zoomIndex = 6\n this.zoom = this.zoomList[this.zoomIndex]\n this.style = this.defaultStyle\n\n // 获取图片的原始宽高\n this.img = await this.getImage(url)\n this.style.imgW = this.img.naturalWidth\n this.style.imgH = this.img.naturalHeight\n this.style.width = this.style.imgW\n this.style.height = this.style.imgH\n\n // 替换 img 元素\n this.wrap.querySelector('img')!.remove()\n this.wrap.appendChild(this.img)\n\n // 设置定位\n const innerWidth = window.innerWidth - 17\n // 在水平方向上,总是居中显示\n this.style.ml = (innerWidth - this.style.width - this.border) / 2\n // 在垂直方向上\n if (this.style.height > window.innerHeight) {\n // 如果图片高度超过了可视区域,则从顶部显示\n this.style.mt = 0\n } else {\n // 否则垂直居中显示\n this.style.mt = (window.innerHeight - this.style.height - this.border) / 2\n }\n\n // 计算鼠标移动 1 像素时,图片应该移动多少像素\n // 计算横向的 onePxMove\n let onePxMoveX = this.style.imgW / innerWidth\n if (this.style.imgW > innerWidth) {\n // 如果图片宽度超出窗口可视宽度,计算鼠标左侧和右侧的图像宽度分别是多少\n const hiddenHalf = (this.style.imgW - innerWidth) / 2\n const leftWidth = ev.clientX + hiddenHalf\n const rightWidth = this.style.imgW - leftWidth\n // 计算鼠标向左或向右移动 1 像素时,图片应该移动多少像素。取比较大的一个值\n onePxMoveX = Math.max(\n leftWidth / ev.clientX,\n rightWidth / (innerWidth - ev.clientX)\n )\n }\n // 计算纵向的 onePxMove\n let onePxMoveY = this.style.imgH / window.innerHeight\n if (this.style.imgH > window.innerHeight) {\n // 如果图片高度超出窗口可视高度,下载器会把图片从顶部显示。此时需要特殊处理 onePxMove\n // 让鼠标从当前位置向下到窗口底部时,可以完整查看整个图片\n onePxMoveY =\n (this.style.imgH - ev.clientY) / (window.innerHeight - ev.clientY)\n }\n // 比较水平方向和垂直方向的计算结果,取比较大的一个值\n // onePxMove 乘以修正系数,进行放大\n // 这样可以让用户在移动鼠标时,不需要移动到边界上就可以查看到图片的边界\n this.onePxMove = Math.max(onePxMoveX, onePxMoveY) * 1.1\n\n // 设置样式,显示图片\n this.setWrapStyle()\n this.show = true\n }\n\n // 以鼠标所在位置为中心点缩放\n // 例如,鼠标放在角色的眼睛上面进行缩放,在缩放之后,依然把眼睛定位到鼠标所在位置\n // 当用户滚动鼠标滚轮时,传递鼠标相对于原图区域的坐标(不包含 border)\n private zoomWrap(ev: MouseEvent, zoomAdd: boolean) {\n // 设置 zoom 等级\n const oldZoom = this.zoom\n const oldZoomIndex = this.zoomIndex\n let cancel = false\n\n this.zoomIndex += zoomAdd ? 1 : -1\n this.zoom = this.zoomList[this.zoomIndex]\n if (this.zoom === undefined) {\n cancel = true\n }\n\n // 检查缩放后的图片的尺寸是否超出了限制\n const testWidth = this.style.imgW * this.zoom\n const testHeight = this.style.imgH * this.zoom\n if (Math.max(testWidth, testHeight) > 30000) {\n cancel = true\n }\n\n if (cancel) {\n this.zoom = oldZoom\n this.zoomIndex = oldZoomIndex\n return\n }\n\n // 启动缩放\n this.style.width = this.style.imgW * this.zoom\n this.style.height = this.style.imgH * this.zoom\n\n // 计算这次缩放相对于上次缩放增加的倍率(容器的尺寸会增加多少倍)\n const zoom = (this.zoom - oldZoom!) / oldZoom!\n // 缩放之前,鼠标与容器顶点形成了一个矩形(0, 0, offsetX, offsetY)\n // 计算这个矩形在缩放之后,相比于缩放之前增加了多少像素\n const offsetXAdd = ev.offsetX * zoom\n const offsetYAdd = ev.offsetY * zoom\n\n // 对缩放之前的 margin 值加以修改,使缩放之前的鼠标位置的图像现在仍然位于鼠标位置\n this.style.ml = this.style.ml - offsetXAdd\n this.style.mt = this.style.mt - offsetYAdd\n this.setWrapStyle()\n }\n\n private moveWrap(ev: MouseEvent) {\n // 计算鼠标距离上次执行时,移动的距离\n const mouseMoveX = ev.clientX - this.moveX\n const mouseMoveY = ev.clientY - this.moveY\n\n // 在水平方向上应该移动多少像素\n let moveX = mouseMoveX * this.onePxMove * this.zoom\n // 在垂直方向上应该移动多少像素\n let moveY = mouseMoveY * this.onePxMove * this.zoom\n\n // 设置容差值,允许图像的边界与可视区域之间存在空隙\n // 例如,本来图片的左侧与可视区域的左侧重合时,就不应该允许图片继续向右移动了。\n // 现在设置了容差值,使图片可以继续向右移动 tolerance 像素。\n // 这样可以让用户知道已经移动到了图片的边缘,避免用户产生疑惑。\n const tolerance = 10\n let ml: number | undefined\n let mt: number | undefined\n\n // 鼠标向左移动,wrap 向右移动,ml 增加\n if (mouseMoveX < 0) {\n // 如果 wrap 左侧还有被隐藏的部分,才允许向右移动\n if (this.style.ml < tolerance) {\n ml = this.style.ml - moveX\n }\n }\n // 鼠标向右移动,wrap 向左移动,ml 减少\n if (mouseMoveX > 0) {\n // 如果 wrap 右侧还有被隐藏的部分,才允许向左移动\n if (this.style.ml + this.style.width > window.innerWidth - tolerance) {\n ml = this.style.ml - moveX\n }\n }\n\n // 鼠标向上移动,warp 向下移动,mt 增加\n if (mouseMoveY < 0) {\n // 如果 wrap 顶部还有被隐藏的部分,才允许向下移动\n if (this.style.mt < tolerance) {\n mt = this.style.mt - moveY\n }\n }\n // 鼠标向下移动,warp 向上移动,mt 减少\n if (mouseMoveY > 0) {\n // 如果 wrap 底部还有被隐藏的部分,才允许向上移动\n if (this.style.mt + this.style.height > window.innerHeight - tolerance) {\n mt = this.style.mt - moveY\n }\n }\n\n // 设置 margin 时,需要检查容器是否处于可视区域之外。如果超出了可视区域则不赋值\n if (ml !== undefined) {\n if (\n (ml > 0 && ml < window.innerWidth) ||\n (ml < 0 && ml + this.style.width > tolerance)\n ) {\n // 如果 ml 小于 0,其右边的坐标不可以小于 0\n this.style.ml = ml\n }\n }\n if (mt !== undefined) {\n if (\n (mt > 0 && mt < window.innerHeight) ||\n (mt < 0 && mt + this.style.height > tolerance)\n ) {\n // 如果 mt 小于 0,其底边的坐标不可以小于 0\n this.style.mt = mt\n }\n }\n\n this.setWrapStyle()\n }\n\n private setWrapStyle() {\n this.wrap.style.width = this.style.width + 'px'\n this.wrap.style.height = this.style.height + 'px'\n this.wrap.style.marginTop = this.style.mt + 'px'\n this.wrap.style.marginLeft = this.style.ml + 'px'\n\n this.previewUgoira &&\n this.previewUgoira.setSize(this.style.width, this.style.height)\n }\n\n public setData(urls: Urls, data: ArtworkData, index: number) {\n this.urls = urls\n this.workData = data\n this.index = index\n }\n\n public hide() {\n this.show = false\n }\n}\n\nconst showOriginSizeImage = new ShowOriginSizeImage()\nexport { showOriginSizeImage }\n","import { lang } from './Lang'\nimport { Config } from './Config'\nimport { msgBox } from './MsgBox'\nimport { Utils } from './utils/Utils'\nimport { EVT } from './EVT'\nimport { setSetting, settings } from './setting/Settings'\n\n// 显示最近更新内容\nclass ShowWhatIsNew {\n constructor() {\n this.bindEvents()\n }\n\n private flag = '16.8.0'\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingInitialized, () => {\n // 消息文本要写在 settingInitialized 事件回调里,否则它们可能会被翻译成错误的语言\n let msg = `\n ${lang.transl('_新增功能')}:\n
    \n ${lang.transl('_同步收藏列表的说明')}\n \n
    \n
    \n ${lang.transl('_其他优化')}\n `\n // ${lang.transl(\n // '_你可以在更多选项卡的xx分类里找到它',\n // lang.transl('_增强')\n // )}\n\n // ${lang.transl('_其他优化')}\n\n // 在更新说明的下方显示赞助提示\n msg += `\n
    \n
    \n ${lang.transl('_赞助方式提示')}`\n\n this.show(msg)\n })\n }\n\n private show(msg: string) {\n if (Utils.isPixiv() && settings.whatIsNewFlag !== this.flag) {\n msgBox.show(msg, {\n title: Config.appName + ` ${lang.transl('_最近更新')}`,\n btn: lang.transl('_我知道了'),\n })\n setSetting('whatIsNewFlag', this.flag)\n }\n }\n}\n\nnew ShowWhatIsNew()\n","import { EVT } from './EVT'\nimport { ImageViewer } from './ImageViewer'\nimport { settings } from './setting/Settings'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { Config } from './Config'\n\n// 在作品缩略图上显示放大按钮,点击按钮会调用图片查看器来查看大图\nclass ShowZoomBtnOnThumb {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n this.addBtn()\n this.bindEvents()\n }\n\n private btn!: HTMLButtonElement\n private btnId = 'zoomBtnOnThumb'\n private btnSize: number[] = [32, 32]\n private hiddenBtnTimer = 0 // 使用定时器让按钮延迟消失。这是为了解决一些情况下按钮闪烁的问题\n private hiddenBtnDelay = 100\n\n private currentWorkId = '' // 显示放大按钮时,保存触发事件的作品 id\n\n private doNotShowBtn = false // 当点击了放大按钮后,进入此状态,此状态中不会显示放大按钮\n // 此状态是为了解决这个问题:点击了放大按钮之后,按钮会被隐藏,隐藏之后,鼠标下方就是图片缩略图区域,这会触发缩略图的鼠标事件,导致放大按钮马上就又显示了出来。所以点击放大按钮之后设置这个状态,在其为 true 的期间不会显示放大按钮。过一段时间再把它复位。复位所需的时间很短,因为只要能覆盖这段时间就可以了:从隐藏放大按钮开始算起,到缩略图触发鼠标事件结束。\n\n private addBtn() {\n const btn = document.createElement('button')\n btn.id = this.btnId\n btn.innerHTML = `\n \n \n`\n this.btn = document.body.appendChild(btn)\n }\n\n private bindEvents() {\n // 页面切换时隐藏按钮\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.hiddenBtn()\n })\n\n window.addEventListener(EVT.list.clickBtnOnThumb, () => {\n this.hiddenBtnNow()\n })\n\n // 页面切换时隐藏按钮\n window.addEventListener(EVT.list.crawlStart, () => {\n this.hiddenBtn()\n })\n\n // 鼠标移入按钮时取消隐藏按钮\n this.btn.addEventListener('mouseenter', (ev) => {\n window.clearTimeout(this.hiddenBtnTimer)\n })\n\n // 鼠标移出按钮时隐藏按钮\n this.btn.addEventListener('mouseleave', () => {\n this.hiddenBtn()\n })\n\n // 点击按钮时初始化图片查看器\n this.btn.addEventListener('click', (ev) => {\n this.hiddenBtnNow()\n EVT.fire('clickBtnOnThumb')\n\n if (this.currentWorkId) {\n const viewer = new ImageViewer({\n workId: this.currentWorkId,\n imageNumber: 1,\n imageSize: settings.magnifierSize,\n autoStart: true,\n showLoading: true,\n })\n viewer.init()\n }\n })\n\n artworkThumbnail.onEnter((el: HTMLElement, id: string) => {\n this.currentWorkId = id\n this.showBtn(el)\n })\n\n artworkThumbnail.onLeave(() => {\n this.hiddenBtn()\n })\n }\n\n // 显示放大按钮\n private showBtn(target: HTMLElement) {\n if (this.doNotShowBtn) {\n return\n }\n if (!settings.magnifier) {\n return\n }\n\n window.clearTimeout(this.hiddenBtnTimer)\n const rect = target.getBoundingClientRect()\n this.btn.style.left =\n window.scrollX +\n rect.left +\n (settings.magnifierPosition === 'left'\n ? 0\n : rect.width - this.btnSize[0]) +\n 'px'\n this.btn.style.top = window.scrollY + rect.top + 'px'\n this.btn.style.display = 'flex'\n }\n\n // 延迟隐藏放大按钮\n private hiddenBtn() {\n window.clearTimeout(this.hiddenBtnTimer)\n this.hiddenBtnTimer = window.setTimeout(() => {\n this.btn.style.display = 'none'\n }, this.hiddenBtnDelay)\n }\n\n // 立刻隐藏放大按钮\n private hiddenBtnNow() {\n this.doNotShowBtn = true\n window.setTimeout(() => {\n this.doNotShowBtn = false\n }, 100)\n\n window.clearTimeout(this.hiddenBtnTimer)\n this.btn.style.display = 'none'\n }\n}\n\nnew ShowZoomBtnOnThumb()\n","import { Config } from './Config'\nimport { EVT } from './EVT'\nimport { Utils } from './utils/Utils'\n\ntype ThemeName = 'white' | 'dark'\n\n// 下载器的主题默认跟随页面主题。如果用户设置了下载器主题,则不再跟随页面主题\nclass Theme {\n constructor() {\n if (Utils.isPixiv()) {\n this.bindEvents()\n }\n }\n\n private readonly allTheme = ['white', 'dark']\n\n private readonly defaultTheme: ThemeName = 'white' // 默认主题\n\n private theme: ThemeName = 'white' // 保存当前使用的主题\n\n private settingTheme = '' // 保存用户设置的下载器主题\n\n // 主题标记以及对应的 className\n // 把需要响应主题变化的元素注册到这个组件里,元素会被添加当前主题的 className\n // 默认主题 white 是没有 className 的,其他主题通过对应的 className,在默认主题的基础上更改样式。\n private readonly classNameMap = new Map([\n ['white', ''],\n ['dark', 'theme-dark'],\n ])\n\n private readonly selector = '#gtm-var-theme-kind' // 通过这个选择器查找含有主题标记的元素\n\n private timer = 0\n\n // 页面上储存的主题标记,与本组件里的主题的对应关系\n private readonly htmlFlagMap: Map = new Map([\n ['', 'white'],\n ['default', 'white'],\n ['dark', 'dark'],\n ])\n\n private elList: Element[] = [] // 保存已注册的元素\n\n private bindEvents() {\n // 主题设置变化时修改主题\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'theme') {\n this.settingTheme = data.value\n this.setTheme(data.value)\n }\n })\n\n // 使用定时器查找标记元素\n this.timer = window.setInterval(() => {\n this.findFlag()\n }, 300)\n }\n\n // 查找含有 pixiv 主题标记的元素,并监听其变化\n private findFlag() {\n if (Config.mobile) {\n const el = document.body\n if (el) {\n window.clearInterval(this.timer)\n this.setTheme(this.getThemeFromHtml())\n // 监听 body 的 class 变化\n const ob = new MutationObserver(() => {\n const flag = this.getThemeFromHtml()\n this.setTheme(flag)\n })\n ob.observe(el, {\n attributes: true,\n attributeFilter: ['class'],\n })\n }\n } else {\n const el = document.querySelector(this.selector) as HTMLElement\n if (el) {\n window.clearInterval(this.timer)\n this.setTheme(this.getThemeFromHtml())\n // 监听标记元素的 textContent 变化\n const ob = new MutationObserver((mutationsList) => {\n for (const item of mutationsList) {\n if (item.type === 'characterData') {\n const flag = this.getThemeFromHtml()\n this.setTheme(flag)\n break\n }\n }\n })\n ob.observe(el, {\n characterData: true,\n subtree: true,\n })\n }\n }\n }\n\n private getThemeFromHtml(): ThemeName {\n if (Config.mobile) {\n // 移动端需要使用不同的方法来获取主题\n const dark = document.body.classList.contains('dark')\n const pageTheme = dark ? 'dark' : 'white'\n EVT.fire('getPageTheme', pageTheme!)\n return pageTheme\n } else {\n // 桌面端\n // 从含有 pixiv 主题标记的元素里获取主题\n const el = document.querySelector(this.selector) as HTMLElement\n if (el) {\n const pageTheme = this.htmlFlagMap.get(el.textContent!)\n EVT.fire('getPageTheme', pageTheme!)\n return pageTheme || this.defaultTheme\n }\n\n // 根据 html 元素的背景颜色判断\n // 此方法不适用于移动端,因为移动端的 html 背景色总是 'rgba(0, 0, 0, 0)'\n // \"rgb(245, 245, 245)\"\n // \"rgb(0, 0, 0)\"\n const htmlBG = getComputedStyle(document.documentElement)[\n 'backgroundColor'\n ]\n if (htmlBG) {\n if (htmlBG.includes('rgb(2')) {\n return 'white'\n } else if (htmlBG.includes('rgb(0')) {\n return 'dark'\n }\n }\n\n return this.defaultTheme\n }\n }\n\n private setTheme(flag: string) {\n // 如果用户设置了下载器主题,则始终使用下载器主题(忽略页面主题)\n if (this.allTheme.includes(this.settingTheme)) {\n flag = this.settingTheme\n }\n\n let result: ThemeName = 'white' // 储存根据标记所选择的主题\n\n // 根据标记,设置要使用的主题\n switch (flag) {\n case 'white':\n result = 'white'\n break\n case 'dark':\n result = 'dark'\n break\n default:\n // 如果传递的值是本模块不能识别的,包括 'auto',就都自动获取\n result = this.getThemeFromHtml() || this.defaultTheme\n break\n }\n\n // 如果计算出的主题和当前主题不同,则执行变化\n if (result !== this.theme) {\n this.theme = result\n\n for (const el of this.elList) {\n this.setClass(el)\n }\n }\n }\n\n // 把元素注册到本组件里\n public register(el: Element) {\n if (!Utils.isPixiv()) {\n return\n }\n\n this.elList.push(el)\n this.setClass(el)\n }\n\n // 给元素设置主题对应的 className\n private setClass(el: Element) {\n // 先清除所有主题颜色的 className\n for (const className of this.classNameMap.values()) {\n if (el.classList.contains(className)) {\n el.classList.remove(className)\n }\n }\n // 添加当前主题对应的 className\n const name = this.classNameMap.get(this.theme)\n name && el.classList.add(name)\n }\n}\n\nconst theme = new Theme()\nexport { theme }\n","interface MouseArg {\n type: number\n x: number\n y: number\n}\n\n// 给下载器的界面元素添加提示文本,当鼠标移动到元素上时会显示提示\n// 如果要给某个元素添加提示,先给它添加 has_tip 的 className,然后用 data-tip 设置提示内容\nclass Tip {\n constructor() {\n this.addTipEl()\n this.bindEvents()\n }\n private tipEl!: HTMLDivElement\n\n private addTipEl() {\n this.tipEl = document.createElement('div')\n this.tipEl.id = 'tip'\n document.body.append(this.tipEl)\n }\n\n private bindEvents() {\n const tips = document.querySelectorAll(\n '.has_tip'\n ) as NodeListOf\n for (const el of tips) {\n for (const ev of ['mouseenter', 'mouseleave']) {\n el.addEventListener(ev, (event) => {\n const e = (event || window.event) as MouseEvent\n const text = el.dataset.tip\n this.showTip(text, {\n type: ev === 'mouseenter' ? 1 : 0,\n x: e.clientX,\n y: e.clientY,\n })\n })\n }\n }\n }\n\n // 显示中间面板上的提示。参数 mouse 指示鼠标是移入还是移出,并包含鼠标坐标\n private showTip(text: string | undefined, mouse: MouseArg) {\n if (!text) {\n throw new Error('No tip text.')\n }\n\n if (mouse.type === 1) {\n this.tipEl.innerHTML = text\n this.tipEl.style.left = mouse.x + 30 + 'px'\n this.tipEl.style.top = mouse.y - 30 + 'px'\n this.tipEl.style.display = 'block'\n } else if (mouse.type === 0) {\n this.tipEl.style.display = 'none'\n }\n }\n}\n\nnew Tip()\n","import { Colors } from './Colors'\nimport { Config } from './Config'\n\n// 可选参数\nexport interface ToastArgOptional {\n /**设置字体颜色,默认为白色 */\n color?: string\n /**设置背景颜色。默认为浅蓝色,或者是语义所对应的颜色 */\n bgColor?: string\n /**设置提示出现后的停留时间(毫秒),默认 1500 ms */\n stay?: number\n /**出现时的动画效果\n *\n * up 默认值,向上移动一段距离并逐渐显示\n *\n * fade 逐渐显示\n *\n * none 立即显示\n */\n enter?: 'up' | 'fade' | 'none'\n /**消失时的动画效果\n *\n * fade 默认值,逐渐消失\n *\n * up 向上移动一段距离并逐渐消失\n *\n * none 立即消失\n */\n leave?: 'up' | 'fade' | 'none'\n /**提示出现的位置\n *\n * topCenter 出现在屏幕上方,水平居中\n *\n * center 出现在屏幕正中央(实际上会稍微偏上一点点)\n *\n * mouse 默认值,提示出现在鼠标光标附近\n */\n position?: 'topCenter' | 'center' | 'mouse'\n}\n\n// 完整的参数\ninterface ToastArg {\n msg: string\n color: string\n bgColor: string\n dealy: number\n enter: 'up' | 'fade' | 'none'\n leave: 'up' | 'fade' | 'none'\n position: 'topCenter' | 'center' | 'mouse'\n}\n\n// 轻提示,只显示文字和背景颜色\n// 适用于无需用户进行确认的提示\nclass Toast {\n constructor() {\n this.bindEvents()\n }\n\n private readonly defaultCfg: ToastArg = {\n msg: '',\n color: Colors.white,\n bgColor: Colors.bgBrightBlue,\n dealy: 1500,\n enter: 'up',\n leave: 'fade',\n position: 'mouse',\n }\n\n private readonly successCfg: ToastArg = {\n msg: '',\n color: Colors.white,\n bgColor: Colors.bgSuccess,\n dealy: 1500,\n enter: 'up',\n leave: 'fade',\n position: 'mouse',\n }\n\n private readonly warningCfg: ToastArg = {\n msg: '',\n color: Colors.white,\n bgColor: Colors.bgWarning,\n dealy: 1500,\n enter: 'up',\n leave: 'fade',\n position: 'mouse',\n }\n\n private readonly errorCfg: ToastArg = {\n msg: '',\n color: Colors.white,\n bgColor: Colors.bgError,\n dealy: 1500,\n enter: 'up',\n leave: 'fade',\n position: 'mouse',\n }\n\n private readonly tipClassName = 'xzToast'\n\n private mousePosition = { x: 0, y: 0 }\n private readonly minTop = 20\n\n private readonly once = 1 // 每一帧移动多少像素\n private readonly total = 20 // 移动多少像素后消失\n\n private bindEvents() {\n // 必须是监听 mousemove 而不是 click\n window.addEventListener('mousemove', (ev) => {\n this.mousePosition.x = ev.x\n this.mousePosition.y = ev.y\n })\n }\n\n public show(msg: string, arg?: ToastArgOptional) {\n this.create(Object.assign({}, this.defaultCfg, arg, { msg: msg }))\n }\n\n public success(msg: string, arg?: ToastArgOptional) {\n this.create(Object.assign({}, this.successCfg, arg, { msg: msg }))\n }\n\n public warning(msg: string, arg?: ToastArgOptional) {\n this.create(Object.assign({}, this.warningCfg, arg, { msg: msg }))\n }\n\n public error(msg: string, arg?: ToastArgOptional) {\n this.create(Object.assign({}, this.errorCfg, arg, { msg: msg }))\n }\n\n private create(arg: ToastArg) {\n const span = document.createElement('span')\n span.textContent = arg.msg\n\n span.style.color = arg.color\n\n // 设置背景颜色,优先使用 color\n span.style.backgroundColor = arg.bgColor\n span.style.opacity = '0' // 先使提示完全透明\n\n span.classList.add(this.tipClassName)\n if (Config.mobile) {\n span.classList.add('mobile')\n }\n\n // 把提示添加到页面上\n document.body.appendChild(span)\n\n // 设置 left,使其居中\n\n // 默认的中间点是窗口的中间\n let centerPoint = window.innerWidth / 2\n\n if (arg.position === 'mouse') {\n // 把中间点设置为鼠标所处的位置\n centerPoint = this.mousePosition.x\n }\n\n // 设置 left\n const rect = span.getBoundingClientRect()\n let left = centerPoint - rect.width / 2\n const minLeft = 0 // 防止提示左侧超出窗口\n const maxLeft = window.innerWidth - rect.width // 防止提示右侧超出窗口\n if (left < minLeft) {\n left = minLeft\n }\n if (left > maxLeft) {\n left = maxLeft\n }\n span.style.left = left + 'px'\n\n // 设置 top\n let lastTop = 0\n\n if (arg.position === 'topCenter') {\n lastTop = this.minTop\n }\n if (arg.position === 'center') {\n lastTop = window.innerHeight / 2 - this.minTop\n }\n if (arg.position === 'mouse') {\n // 跟随鼠标位置\n // top 值减去一点高度,使文字出现在鼠标上方\n let y = this.mousePosition.y - 40\n if (y < this.minTop) {\n y = this.minTop\n }\n lastTop = y\n }\n\n // 出现动画\n if (arg.enter === 'none') {\n span.style.top = lastTop + 'px'\n span.style.opacity = '1'\n } else {\n this.enter(span, arg.enter, lastTop)\n }\n\n // 消失动画\n window.setTimeout(() => {\n if (arg.leave === 'none') {\n span.remove()\n } else {\n this.leave(span, arg.leave, lastTop)\n }\n }, arg.dealy)\n }\n\n // 提示出现的动画\n private enter(el: HTMLElement, way: 'up' | 'fade', lastTop: number) {\n const startTop = lastTop + this.total // 初始 top 值\n const once = 2\n const total = this.total\n\n let numberOfTimes = 0 // 执行次数\n\n const frame = function (timestamp: number) {\n numberOfTimes++\n\n // 计算总共上移了多少像素\n const move = once * numberOfTimes\n\n // 计算不透明度\n const opacity = move / total\n\n if (move <= total && opacity <= 1) {\n if (way === 'up') {\n el.style.top = startTop - move + 'px'\n }\n\n el.style.opacity = opacity.toString()\n\n // 请求下一帧\n window.requestAnimationFrame(frame)\n }\n }\n\n window.requestAnimationFrame(frame)\n }\n\n // 提示消失的动画\n private leave(el: HTMLElement, way: 'up' | 'fade', lastTop: number) {\n const startTop = lastTop // 初始 top 值\n const once = this.once\n const total = this.total\n\n let numberOfTimes = 0 // 执行次数\n\n const frame = function (timestamp: number) {\n numberOfTimes++\n\n // 计算总共上移了多少像素\n const move = once * numberOfTimes\n\n // 计算不透明度\n const opacity = 1 - move / total\n\n if (move < total && opacity > 0) {\n if (way === 'up') {\n el.style.top = startTop - move + 'px'\n }\n\n el.style.opacity = opacity.toString()\n\n // 请求下一帧\n window.requestAnimationFrame(frame)\n } else {\n // 动画执行完毕,删除元素\n el.remove()\n }\n }\n\n window.requestAnimationFrame(frame)\n }\n}\n\nconst toast = new Toast()\nexport { toast }\n","import { Config } from './Config'\nimport { EVT } from './EVT'\nimport { Utils } from './utils/Utils'\n\n// 获取和保存 token\nclass Token {\n constructor() {\n if (Utils.isPixiv()) {\n this.token = this.getToken()\n this.updateToken()\n this.bindEvents()\n }\n }\n\n private readonly tokenStore = 'xzToken'\n private readonly timeStore = 'xzTokenTime'\n private readonly updateURL = 'https://www.pixiv.net/artworks/62751951'\n\n public token!: string\n\n private bindEvents() {\n // 重置设置时重新获取一次 token\n window.addEventListener(EVT.list.resetSettingsEnd, () => {\n this.reset()\n })\n }\n\n private getToken() {\n const token = localStorage.getItem(this.tokenStore)\n return token ? token : ''\n }\n\n private interval = 300000 // 两次更新之间的最小时间间隔。目前设置为 5 分钟\n private async updateToken() {\n const nowTime = new Date().getTime()\n const lastTimeStr = localStorage.getItem(this.timeStore)\n\n if (\n this.token &&\n lastTimeStr &&\n nowTime - Number.parseInt(lastTimeStr) < this.interval\n ) {\n return\n }\n\n // 从网页源码里获取用户 token 并储存\n return fetch(this.updateURL)\n .then((response) => {\n return response.text()\n })\n .then((data) => {\n const regExp = Config.mobile ? /postKey\":\"(\\w+)\"/ : /token\":\"(\\w+)\"/\n const result = data.match(regExp)\n if (result) {\n this.token = result[1]\n }\n\n if (this.token) {\n localStorage.setItem(this.tokenStore, this.token)\n localStorage.setItem(this.timeStore, new Date().getTime().toString())\n } else {\n console.error('UpdateToken failed: no token found!')\n }\n })\n }\n\n // 不论用户是否登录,都有 token,所以不能根据 token 来判断用户是否登录\n // 在桌面端,如果存在下面的字符串,则说明用户未登录:\n // \"userData\":null\n\n public async reset() {\n this.token = ''\n localStorage.removeItem(this.tokenStore)\n localStorage.removeItem(this.timeStore)\n return this.updateToken()\n }\n}\n\nconst token = new Token()\nexport { token }\n","import { Config } from './Config'\nimport { ArtworkData, NovelData } from './crawl/CrawlResult'\nimport { lang } from './Lang'\nimport { pageType } from './PageType'\nimport { WorkTypeString, Result } from './store/StoreType'\nimport { Utils } from './utils/Utils'\n\ntype artworkDataTagsItem = {\n tag: string\n locked: boolean\n deletable: boolean\n userId: string\n romaji: string\n translation?:\n | {\n en: string\n }\n | undefined\n userName: string\n}\n\ntype novelDataTagsItem = {\n tag: string\n locked: boolean\n deletable: boolean\n userId: string\n userName: string\n}\n\nclass Tools {\n // 把结果中的动图排列到最前面\n static sortUgoiraFirst(a: Result, b: Result) {\n if (a.type === 2 && b.type !== 2) {\n return -1\n } else if (a.type === 2 && b.type === 2) {\n return 0\n } else {\n return 1\n }\n }\n\n // 根据 tag 判断是否是 R-18(G) 作品\n static isR18OrR18G(tags: string | string[]) {\n const str: string = Array.isArray(tags) ? tags.toString() : tags\n\n return (\n str.includes('R-18') ||\n str.includes('R-18G') ||\n str.includes('R18') ||\n str.includes('R18G')\n )\n }\n\n // 在不同的页面类型里,尝试从 url 中获取 tag\n static getTagFromURL(url: string = location.href) {\n const nowURL = new URL(url)\n\n // 2 用户作品列表页\n if (/\\/users\\/\\d+/.test(url) && !url.includes('/bookmarks')) {\n // 匹配 pathname 里用户 id 之后的字符\n const test = nowURL.pathname.match(/\\/users\\/\\d+(\\/.+)/)\n if (test && test.length === 2) {\n const str = test[1]\n // 如果用户 id 之后的字符多于一个路径,则把最后一个路径作为 tag,示例\n // https://www.pixiv.net/users/2188232/illustrations/ghostblade\n const array = str.split('/')\n // [\"\", \"illustrations\", \"ghostblade\"]\n if (array.length > 2) {\n return decodeURIComponent(array[array.length - 1])\n }\n }\n }\n\n // 4 旧版收藏页面\n if (nowURL.pathname === '/bookmark.php') {\n if (parseInt(Utils.getURLSearchField(nowURL.href, 'untagged')) === 1) {\n // 旧版 “未分类” tag 是个特殊标记\n // https://www.pixiv.net/bookmark.php?untagged=1\n return '未分類'\n }\n }\n\n // 4 新版收藏页面\n if (nowURL.pathname.includes('/bookmarks/')) {\n // 新版收藏页 url,tag 在路径末端,如\n // https://www.pixiv.net/users/9460149/bookmarks/artworks/R-18\n // https://www.pixiv.net/users/9460149/bookmarks/novels/R-18\n const test = /\\/bookmarks\\/\\w*\\/(.[^\\/|^\\?|^&]*)/.exec(nowURL.pathname)\n if (test !== null && test.length > 1 && !!test[1]) {\n return decodeURIComponent(test[1])\n }\n }\n\n // 5 搜索页面\n if (nowURL.pathname.includes('/tags/')) {\n return decodeURIComponent(nowURL.pathname.split('tags/')[1].split('/')[0])\n }\n\n // 默认情况,从查询字符串里获取,如下网址\n // https://www.pixiv.net/bookmark.php?tag=R-18\n return decodeURIComponent(Utils.getURLSearchField(nowURL.href, 'tag'))\n }\n\n /**从 url 里获取 artworks id。如果查找不到 id 会返回空字符串 */\n static getIllustId(url?: string) {\n if (pageType.type === pageType.list.Unlisted) {\n return Utils.getURLPathField(window.location.pathname, 'unlisted')\n }\n\n const str = url || window.location.href\n\n let test: RegExpExecArray | null = null\n\n if (str.includes('/artworks/')) {\n // 新版 url\n test = /artworks\\/(\\d*\\d)/.exec(str)\n } else if (str.includes('illust_id')) {\n // 传统 url\n test = /illust_id=(\\d*\\d)/.exec(str)\n }\n\n if (test && test.length > 1) {\n return test[1]\n } else {\n return ''\n }\n }\n\n /**从 url 里获取 novel id。如果查找不到 id 会返回空字符串 */\n // https://www.pixiv.net/novel/show.php?id=12771688\n static getNovelId(url?: string) {\n if (pageType.type === pageType.list.Unlisted) {\n return Utils.getURLPathField(window.location.pathname, 'unlisted')\n }\n\n const str = url || window.location.href\n let result = ''\n\n const test = str.match(/novel\\/show.php\\?id=(\\d*)?/)\n if (test && test.length > 1) {\n result = test[1]\n }\n\n return result\n }\n\n /**从 DOM 元素中获取作品的 id\n *\n * 如果查找不到 id 会返回空字符串\n */\n static findWorkIdFromElement(\n el: HTMLElement,\n type: 'illusts' | 'novels' = 'illusts'\n ): string {\n let a: HTMLAnchorElement\n if (el.nodeName === 'A') {\n a = el as HTMLAnchorElement\n } else {\n if (type === 'illusts') {\n a = el.querySelector('a[href*=\"/artworks/\"]') as HTMLAnchorElement\n } else {\n a = el.querySelector('a[href*=\"/novel/show\"]') as HTMLAnchorElement\n }\n }\n if (!a) {\n return ''\n }\n if (type === 'illusts') {\n return this.getIllustId(a.href)\n } else {\n return this.getNovelId(a.href)\n }\n }\n\n // 获取当前页面的用户 id\n // 这是一个不够可靠的 api\n // 测试:在作品页内 https://www.pixiv.net/artworks/79399027 获取 userId ,正确结果应该是 13895186\n static getUserId() {\n const newRegExp = /\\/users\\/(\\d+)/ // 获取 /users/ 后面连续的数字部分,也就是用户的 id\n\n // 列表页里从 url 中获取\n const test4 = newRegExp.exec(location.pathname)\n if (!!test4 && test4.length > 1 && !!test4[1]) {\n return test4[1]\n }\n\n // 获取包含用户 id 的元素,注意这些选择器可能会变,需要进行检查\n const testA: HTMLAnchorElement | null =\n document.querySelector('aside a') || document.querySelector('nav a')\n // 第一个元素是作品页内,作品下方的作者头像区域的 a 标签\n // 第一个元素是作品页内,页面右侧作者信息区域的 a 标签\n // 第二个元素是用户主页或列表页里,“主页”按钮的 a 标签\n if (testA && testA.href) {\n const test5 = newRegExp.exec(testA.href)\n if (!!test5 && test5.length > 1 && !!test5[1]) {\n return test5[1]\n }\n }\n\n // 从旧版页面的 head 元素的 script 脚本内容里匹配这一部分\n // pixiv.context.user.id = \"\"\n const test1 = /user.id = \"(\\d*)\"/.exec(document.head.innerHTML)\n if (test1 && test1.length > 0) {\n return test1[1]\n }\n\n // 从旧版页面的 head 元素的 script 脚本内容里匹配这一部分\n // pixiv.context.userId = \"\"\n const test2 = /userId = \"(\\d*)\"/.exec(document.head.innerHTML)\n if (test2 && test2.length > 0) {\n return test2[1]\n }\n\n // 最后从 body 里匹配\n // Warning :这有可能会匹配到错误的(其他)用户 id!\n const test3 = newRegExp.exec(document.body.innerHTML)\n if (test3) {\n return test3[1]\n }\n\n // 如果都没有获取到\n throw new Error('getUserId failed!')\n }\n\n static getLoggedUserID() {\n if (Config.mobile) {\n const match = document.head.innerHTML.match(/'user_id', (\\d*)/)\n if (match && match.length > 1) {\n return match[1]\n }\n }\n\n // 在新版页面里,从 head 里的 script 里匹配用户 id\n const match = document.head.innerHTML.match(/'user_id', \"(\\d*)\"/)\n if (match && match.length > 1) {\n return match[1]\n }\n\n const element = document.querySelector('#qualtrics_user-id')\n if (element) {\n const text = element.textContent\n if (text && /^\\d+\\d$/.test(text)) {\n return text\n }\n }\n\n {\n // 在旧版页面里,从 head 里的 script 里匹配用户 id\n const match2 = document.head.innerHTML.match(/pixiv.user.id = \"(\\d*)\"/)\n if (match2 && match2.length > 1) {\n return match2[1]\n }\n }\n\n {\n // 在约稿页面里,从 body 里的 script 里匹配用户 id\n const el = document.querySelector('script#gtm-datalayer')\n if (el && el.textContent) {\n const match3 = el.textContent.match(/user_id:'(\\d+)'/)\n if (match3 && match3.length > 1) {\n return match3[1]\n }\n }\n }\n\n return ''\n }\n\n // 将元素插入到 Pixiv 页面顶部\n /*\n newindex-inner 是在未登录时的用户作品列表页面使用的\n layout-body 是在未登录时的搜索页使用的\n */\n static insertToHead(el: T): T {\n if (document.body) {\n document.body.insertAdjacentElement('afterbegin', el)\n } else {\n ;(\n document.querySelector('.newindex-inner')! ||\n document.querySelector('.layout-body')!\n ).insertAdjacentElement('beforebegin', el)\n }\n return el\n }\n\n // 寻找 slot,本程序使用的 slot 都要有 data-name 属性\n static findSlot(name: string) {\n const slot = document.querySelector(`slot[data-name=${name}]`)\n if (!slot) {\n throw new Error(`No such slot: ${name}`)\n }\n return slot\n }\n\n // 使用指定的插槽\n static useSlot(name: string, element: string | HTMLElement) {\n const slot = this.findSlot(name)\n\n if (typeof element === 'string') {\n // 插入字符串形式的元素\n // 这里不直接使用 insertAdjacentElement 是为了可以返回生成的元素\n const wrap = document.createElement('div')\n wrap.innerHTML = element\n const el = wrap.children[0]\n slot.appendChild(el)\n return el\n } else {\n // 插入 html 元素\n slot.appendChild(element)\n return element\n }\n }\n\n // 清空指定的插槽\n static clearSlot(name: string) {\n this.findSlot(name).innerHTML = ''\n }\n\n // 创建下载面板上的通用按钮\n // 注意 textFlag 和 titleFlag 必须是 LangText 里存在的属性,这是为了能根据语言设置动态切换文本\n // 如果 text 和 title 是直接设置的字符串,那么不应该使用这个方法设置,而是由调用者自行设置\n static addBtn(\n slot: string,\n bg: string = '',\n textFlag: string = '',\n titleFlag: string = ''\n ) {\n const e = document.createElement('button')\n e.type = 'button'\n e.style.backgroundColor = bg\n textFlag && e.setAttribute('data-xztext', textFlag)\n titleFlag && e.setAttribute('data-xztitle', titleFlag)\n\n this.useSlot(slot, e)\n lang.register(e)\n return e\n }\n\n /**获取页面标题 */\n static getPageTitle() {\n // 删除下载器在标题上添加的状态,以及剩余文件数量的数字\n let result = document.title\n .replace(/\\[(↑|→|▶|↓|║|■|✓|☑| )\\]/, '')\n .replace(/^ (\\d+) /, '')\n\n // 如果开头有空格则去掉空格\n if (result.startsWith(' ')) {\n result = result.replace(/ */, '')\n }\n\n return result\n }\n\n // 自定义的类型保护\n /**判断 Tags 类型 */\n static isArtworkTags(\n data: artworkDataTagsItem | novelDataTagsItem\n ): data is artworkDataTagsItem {\n return (data).translation !== undefined\n }\n\n /**判断作品数据是图像作品还是小说作品 */\n static isArtworkData(data: ArtworkData | NovelData): data is ArtworkData {\n return (data).body.illustType !== undefined\n }\n\n static readonly chineseRegexp = /[一-龥]/\n /**从作品数据里提取出 tag 列表\n *\n * 可选参数 type:\n *\n * 'origin' 默认值,获取原版 tag\n *\n * 'transl' 获取翻译后的 tag。只有图片作品有翻译,小说作品的 tag 没有翻译。如果某个 tag 没有翻译,则会保存它的原版 tag\n *\n * 'both' 同时获取原版 tag 和翻译后的 tag。此时可能会有重复的值,所以返回值做了去重处理。\n */\n static extractTags(\n data: ArtworkData | NovelData,\n type: 'origin' | 'transl' | 'both' = 'origin'\n ) {\n const tags: string[] = []\n const tagsTransl: string[] = []\n\n const tagArr: artworkDataTagsItem[] | novelDataTagsItem[] =\n data.body.tags.tags\n\n for (const tagData of tagArr) {\n // 添加原版 tag\n tags.push(tagData.tag)\n\n // 添加翻译的 tag\n // 缺省使用原标签\n let useOriginTag = true\n if (this.isArtworkTags(tagData)) {\n // 不管是什么语种的翻译结果,都保存在 en 属性里\n if (tagData.translation && tagData.translation.en) {\n useOriginTag = false\n // 如果用户在 Pixiv 的页面语言是中文,则应用优化策略\n // 如果翻译后的标签是纯英文,则判断原标签是否含有至少一部分中文,如果是则使用原标签\n // 这是为了解决一些中文标签被翻译成英文的问题,如 原神 被翻译为 Genshin Impact\n // 能代(アズールレーン) Noshiro (Azur Lane) 也会使用原标签\n // 但是如果原标签里没有中文则依然会使用翻译后的标签,如 フラミンゴ flamingo\n if (lang.htmlLangType === 'zh-cn' || lang.htmlLangType === 'zh-tw') {\n const allEnglish = [].every.call(\n tagData.translation.en,\n function (s: string) {\n return s.charCodeAt(0) < 128\n }\n )\n if (allEnglish) {\n useOriginTag = this.chineseRegexp.test(tagData.tag)\n }\n }\n }\n }\n\n tagsTransl.push(\n useOriginTag ? tagData.tag : (tagData as any).translation.en\n )\n }\n\n if (type === 'origin') {\n return tags\n } else if (type === 'transl') {\n return Array.from(new Set(tagsTransl))\n } else {\n return Array.from(new Set(tags.concat(tagsTransl)))\n }\n }\n\n /**转换 thumb url\n *\n * 因为现在 pixiv 的多图作品的数据里,thumb url 只是第一张图的,后面的图片没有 thumb url 数据\n *\n * 此方法使用另一套缩略图 url,这样所有的图片都能够获得可用的缩略图 url\n */\n // 现在的多图作品,有些是所有图片都有 250px 的缩略图,此时作品数据里的 thubm url 含有 img-master,例如:\n // https://i.pximg.net/c/250x250_80_a2/img-master/img/2021/11/28/18/30/25/94433369_p0_square1200.jpg\n // 有些作品的 thumb url 里是 custom-thumb,例如:\n // https://i.pximg.net/c/250x250_80_a2/custom-thumb/img/2021/03/03/06/29/53/88179809_p0_custom1200.jpg\n // 这种只有第一张图有缩略图,后面的图片没有缩略图。对于这种情况,将其替换成所有图片都有缩略图的 url。(即第一种 url)\n static convertArtworkThumbURL(thumbURL: string, no: number | string) {\n return thumbURL\n .replace('250x250_80_a2/custom-thumb', '250x250_80_a2/img-master')\n .replace('custom1200', 'square1200')\n .replace('p0', 'p' + no)\n }\n\n static readonly convertThumbURLReg = /img\\/(.*)_.*1200/\n\n static convertThumbURLTo540px(url: string) {\n // 'https://i.pximg.net/c/250x250_80_a2/custom-thumb/img/2021/10/26/00/00/08/93686259_p0_custom1200.jpg'\n // 'https://i.pximg.net/c/250x250_80_a2/img-master/img/2019/06/23/17/29/27/75369283_square1200.jpg'\n // 排行榜页面的图片 URL 如:\n // 'https://i.pximg.net/c/240x480/img-master/img/2022/08/01/17/59/39/100156836_p0_master1200.jpg'\n const test = url.match(this.convertThumbURLReg)\n if (!test || !test[1]) {\n return url\n }\n // '2021/10/26/00/00/08/93686259_p0'\n // '2019/06/23/17/29/27/75369283'\n const array = test[1].split('/')\n const id_index = array.pop()\n const datetime = array.join('/')\n return `https://i.pximg.net/c/540x540_70/img-master/img/${datetime}/${id_index}_master1200.jpg`\n }\n\n // 旧版本的 Result 数据中没有 index 属性,使用此方法进行兼容性处理\n static getResultIndex(data: Result) {\n if (data.type === 0 || data.type === 1) {\n // 插画和漫画,从 id 里取出序号\n return parseInt(/\\d*$/.exec(data.id)![0])\n } else {\n // 其他作品类型只有 1 个文件所以值为 0\n return 0\n }\n }\n\n static isPremium() {\n // 在 body 的一个 script 标签里包含有当前用户是否是会员的信息\n // premium: 'yes'\n // premium: 'no'\n const test = document.body.innerHTML.match(/premium: '(\\w+)'/)\n if (test && test.length > 1) {\n return test[1] === 'yes'\n }\n\n return false\n }\n\n // 在小说页面,以及某些特定页面里,不启用\"显示更大的缩略图\"和“横图占用二倍宽度”功能\n static notEnabledShowLargerThumb() {\n if (\n window.location.pathname.includes('/novel') ||\n window.location.pathname.includes('/ranking_area') ||\n window.location.hostname.includes('pixivision.net')\n ) {\n return true\n }\n return false\n }\n\n // 传入作品 id,生成作品页面的超链接\n /**\n *\n * @param id 作品 id\n * @param artwork true 图像作品; false 小说作品。默认为图像作品\n * @returns 超链接(A 标签)\n */\n static createWorkLink(id: number | string, artwork = true) {\n const idNum = typeof id === 'number' ? id : Number.parseInt(id)\n const href = `https://www.pixiv.net/${artwork ? 'i' : 'n'}/${idNum}`\n return `${id}`\n }\n\n // 传入用户 id,生成用户页面的超链接\n /**\n *\n * @param userID 用户 id\n * @returns 超链接(A 标签)\n */\n static createUserLink(userID: number | string) {\n const idNum = typeof userID === 'number' ? userID : Number.parseInt(userID)\n const href = `https://www.pixiv.net/users/${idNum}`\n return `${idNum}`\n }\n\n /**替换 EPUB 文本里的特殊字符和换行符 */\n // 换行符必须放在最后处理,以免其 < 符号被替换\n static replaceEPUBText(str: string) {\n return str\n .replace(/&/g, '&')\n .replace(/')\n }\n\n /** 在 zip 压缩包里查找类似于 000000.jpg 的标记,返回它后面的位置的下标\n *\n * @param zipFile Zip 文件的内容\n * @param existingIndexList 可选传入一个已存在的索引列表。如果传入,那么这个方法在搜索 zip 文件里的图片时,不会查找已有索引的部分(也就是不会重复查找文件的前半部分),只会查找没有索引的部分\n * @returns number[] 返回一个索引列表的数组\n *\n */\n static getJPGContentIndex(\n zipFile: ArrayBuffer,\n existingIndexList?: number[]\n ) {\n let indexList: number[] = []\n if (existingIndexList && existingIndexList.length > 0) {\n indexList = existingIndexList\n }\n\n // 每次查找时,开始的位置\n let offset = 0\n // 循环的次数\n let loopTimes = 0\n while (true) {\n // 如果当前偏移量的后面有已经查找到的索引,就不必重复查找了\n // 跳过这次循环,下次直接从已有的索引后面开始查找\n if (indexList[loopTimes] !== undefined && offset < indexList[loopTimes]) {\n offset = indexList[loopTimes]\n ++loopTimes\n continue\n }\n\n let data: Uint8Array\n if (offset === 0) {\n // 一开始从数据开头查找\n data = new Uint8Array(zipFile)\n } else {\n // 每次查找之后,从上次查找结束的位置开始查找\n // 这样可以避免重复查找前面的数据\n data = new Uint8Array(zipFile, offset)\n }\n\n // 查找以 jpg 文件名的标记,如 000000.jpg\n // 其实文件内容里也可能会出现符合条件的数据,只是概率很小\n // 有些文件名后面有 PK 标记,如 000000.jpgPK,需要排除,因为这是 zip 的文件目录,不是图片\n const index = data.findIndex((val, index2, array) => {\n // 0 0 0 . j p g P\n if (\n val === 48 &&\n array[index2 + 1] === 48 &&\n array[index2 + 2] === 48 &&\n array[index2 + 6] === 46 &&\n array[index2 + 7] === 106 &&\n array[index2 + 8] === 112 &&\n array[index2 + 9] === 103 &&\n array[index2 + 10] !== 80\n ) {\n // const enc = new TextDecoder('utf-8')\n // const buff = data.slice(index2, index2 + 10)\n // console.log(enc.decode(buff))\n return true\n }\n return false\n })\n\n if (index !== -1) {\n const fileContentStart = offset + index + 10\n indexList[loopTimes] = fileContentStart\n offset = fileContentStart\n ++loopTimes\n } else {\n return indexList\n }\n }\n }\n\n /**从 zip 压缩包里提取出图像数据 */\n static async extractImage(\n zipFile: ArrayBuffer,\n indexList: number[],\n target: 'ImageBitmap'\n ): Promise\n\n static async extractImage(\n zipFile: ArrayBuffer,\n indexList: number[],\n target: 'img'\n ): Promise\n\n static async extractImage(\n zipFile: ArrayBuffer,\n indexList: number[],\n target: 'img' | 'ImageBitmap'\n ) {\n return new Promise(async (resolve, reject) => {\n const result: HTMLImageElement[] | ImageBitmap[] = []\n let i = 0\n for (const index of indexList) {\n // 起始位置\n const start = index\n // 截止下一个文件名之前\n // 删除不需要的数据:\n // 30 字节的是 zip 文件添加的数据,虽然没有实际影响,但还是去掉\n // 10 字节的是下一个 jpg 的文件名\n let end = indexList[i + 1] - 30 - 10\n if (i === indexList.length - 1) {\n // 如果是最后一个 jpg 文件,则截止到 zip 文件的结尾\n // 这导致它会包含 zip 的目录数据,但是不会影响图片的显示\n end = zipFile.byteLength\n }\n\n const blob = new Blob([zipFile.slice(start, end)], {\n type: 'image/jpeg',\n })\n if (target === 'ImageBitmap') {\n const map = await createImageBitmap(blob)\n ;(result as ImageBitmap[]).push(map)\n } else if (target === 'img') {\n const url = URL.createObjectURL(blob)\n const img = await Utils.loadImg(url)\n ;(result as HTMLImageElement[]).push(img)\n }\n ++i\n }\n resolve(result)\n })\n }\n\n /**根据 illustType,返回作品类型的描述字符串 */\n // 主要用于储存进 idList\n static getWorkTypeString(\n illustType: 0 | 1 | 2 | 3 | '0' | '1' | '2' | '3'\n ): WorkTypeString {\n switch (parseInt(illustType.toString())) {\n case 0:\n return 'illusts'\n case 1:\n return 'manga'\n case 2:\n return 'ugoira'\n case 3:\n return 'novels'\n default:\n return 'unknown'\n }\n }\n\n /**根据作品类型字符串,返回对应的数字 */\n static getWorkType(\n workTypeString: WorkTypeString\n ): 0 | 1 | 2 | 3 | undefined {\n switch (workTypeString) {\n case 'illusts':\n return 0\n case 'manga':\n return 1\n case 'ugoira':\n return 2\n case 'novels':\n return 3\n default:\n return undefined\n }\n }\n\n /**根据作品类型字符串,返回对应的数字。但是这里把插画、漫画、动图均返回 -1。\n * 这是因为某些时候无法确定一个图像作品到底属于哪一类型,所以用 -1 笼统的概括\n */\n static getWorkTypeVague(workTypeString: WorkTypeString): -1 | 3 | undefined {\n switch (workTypeString) {\n case 'illusts':\n case 'manga':\n case 'ugoira':\n return -1\n case 'novels':\n return 3\n default:\n return undefined\n }\n }\n\n static readonly AIMark: Map = new Map([\n ['zh-cn', 'AI生成'],\n ['zh-tw', 'AI生成'],\n ['en', 'AI-generated'],\n ['ja', 'AI生成'],\n ['ko', 'AI 생성'],\n ['ru', 'сгенерированный ИИ'],\n ])\n\n /**如果一个作品是 AI 生成的,则返回特定的字符串标记\n *\n * 这个标记就是作品页面里和标签列表显示在一起的字符串\n */\n static getAIGeneratedMark(aiType?: 0 | 1 | 2) {\n if (aiType === 2) {\n return this.AIMark.get(lang.htmlLangType)\n }\n return ''\n }\n\n static checkUserLogin() {\n // 如果有“登录”的超链接,则是未登录状态\n // 在桌面版和移动版网页里都有效\n const loginLink = document.querySelector('a[href^=\"/login\"]')\n if (loginLink) {\n return false\n }\n\n return true\n }\n\n static rangeRandom(start: number, end: number) {\n const difference = end - start\n const num = Math.ceil(Math.random() * difference)\n return start + num\n }\n\n /**格式化数字,每千位添加一个逗号,返回结果字符串 */\n static numberToString(int: number): string {\n let stringArray = Array.from(int.toString())\n\n let group: string[] = []\n\n let index = stringArray.length\n while (index > 0) {\n let array: string[] = []\n for (let times = 0; times < 3; times++) {\n index >= 0 && array.push(stringArray[--index])\n }\n group.push(array.reverse().join(''))\n }\n\n const result = group.reverse().join(',')\n return result\n }\n\n static readonly xRestrictMap = new Map([\n [0, 'AllAges'],\n [1, 'R-18'],\n [2, 'R-18G'],\n ])\n\n static getXRestrictText(number: number) {\n return this.xRestrictMap.get(number)\n }\n\n static readonly AIType = ['Unknown', 'No', 'Yes']\n\n static getAITypeText(number: number) {\n return this.AIType[number]\n }\n}\n\nexport { Tools }\n","import { API } from './API'\nimport { lang } from './Lang'\nimport { log } from './Log'\nimport { toast } from './Toast'\nimport { token } from './Token'\nimport { states } from './store/States'\nimport { WorkBookmarkData } from './Bookmark'\nimport { setTimeoutWorker } from './SetTimeoutWorker'\nimport { Config } from './Config'\n\nclass UnBookmarkWorks {\n public async start(list: WorkBookmarkData[]) {\n log.warning(lang.transl('_取消收藏作品'))\n if (list.length === 0) {\n toast.error(lang.transl('_没有数据可供使用'))\n log.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n states.busy = true\n\n const total = list.length\n log.log(lang.transl('_当前作品个数', total.toString()))\n\n // 尚不清楚 deleteBookmark 使用的 API 是否会被计入 429 限制里\n // 当操作的作品数量大于一页(48 个作品)时,使用慢速抓取\n const slowMode = total > 48\n\n let progress = 0\n\n for (const item of list) {\n try {\n await this.waitSlowMode(slowMode)\n await API.deleteBookmark(item.bookmarkID, item.type, token.token)\n } catch (error) {\n // 处理自己收藏的作品时可能遇到错误。最常见的错误就是作品被删除了,获取作品数据时会产生 404 错误\n // 对于出错的作品直接跳过,不需要对其执行任何操作\n // 不过这种作品无法被删除,执行完毕后还是会留在收藏里\n }\n progress++\n log.log(`${progress} / ${total}`, 1, false)\n }\n\n const msg = lang.transl('_取消收藏作品') + ' ' + lang.transl('_完成')\n log.success(msg)\n toast.success(msg, {\n position: 'topCenter',\n })\n states.busy = false\n }\n\n private waitSlowMode(slowMode: boolean): Promise {\n return new Promise((resolve) => {\n if (!slowMode) {\n return resolve()\n } else {\n setTimeoutWorker.set(() => {\n return resolve()\n }, Config.slowCrawlDealy)\n }\n })\n }\n}\n\nconst unBookmarkWorks = new UnBookmarkWorks()\nexport { unBookmarkWorks }\n","import { Config } from './Config'\n\n// 查找作品的缩略图,当鼠标进入、移出时等动作触发时执行回调函数\nabstract class WorkThumbnail {\n /**作品缩略图的选择器 */\n // 选择器的元素必须含有作品的超链接(超链接可以在这个元素上,也可以在这个元素的子元素上)\n protected selectors: string[] = []\n\n protected foundCallback: Function[] = []\n protected enterCallback: Function[] = []\n protected leaveCallback: Function[] = []\n protected clickCallback: Function[] = []\n protected bookmarkBtnCallback: Function[] = []\n\n /**查找作品缩略图 */\n protected abstract findThumbnail(parent: HTMLElement): void\n\n /**查找缩略图右下角的收藏按钮 */\n protected findBookmarkBtn(el: HTMLElement): HTMLElement | null {\n if (Config.mobile) {\n // 移动端的收藏按钮不是 button,其容器是 div.bookmark\n return el.querySelector('.bookmark')\n } else {\n // 桌面端的缩略图容器里只有 1 个 button,就是收藏按钮。目前还没有发现有多个 button 的情况\n if (el.querySelector('button svg[width=\"32\"]')) {\n return el.querySelector('button') as HTMLButtonElement\n }\n\n // 旧版缩略图里,缩略图元素是 div._one-click-bookmark (例如:各种排行榜页面)\n return el.querySelector('div._one-click-bookmark')\n }\n }\n\n /**为作品缩略图绑定事件 */\n // 注意:在移动端页面,此时获取的 id 可能是空字符串。可以在执行回调时尝试再次获取 id\n protected bindEvents(el: HTMLElement, id: string | '') {\n // 如果这个缩略图元素、或者它的直接父元素、或者它的直接子元素已经有标记,就跳过它\n // mouseover 这个标记名称不可以修改,因为它在 Pixiv Previewer 里硬编码了\n // https://github.com/xuejianxianzun/PixivBatchDownloader/issues/212\n if ((el as HTMLElement).dataset.mouseover) {\n return\n }\n\n if (el.parentElement && el.parentElement.dataset.mouseover) {\n return\n }\n\n if (\n el.firstElementChild &&\n (el.firstElementChild as HTMLElement).dataset.mouseover\n ) {\n return\n }\n\n // 当对一个缩略图元素绑定事件时,在它上面添加标记\n // 添加标记的目的是为了减少事件重复绑定的情况发生\n ;(el as HTMLElement).dataset.mouseover = '1'\n\n this.foundCallback.forEach((cb) => cb(el, id))\n\n el.addEventListener('mouseenter', (ev) => {\n this.enterCallback.forEach((cb) => cb(el, id, ev))\n })\n\n el.addEventListener('mouseleave', (ev) => {\n this.leaveCallback.forEach((cb) => cb(el, ev))\n })\n\n el.addEventListener(\n Config.mobile ? 'touchend' : 'click',\n (ev) => {\n this.clickCallback.forEach((cb) => cb(el, id, ev))\n },\n false\n )\n\n // 查找作品缩略图右下角的收藏按钮\n const bmkBtn = this.findBookmarkBtn(el as HTMLElement)\n if (!!bmkBtn) {\n bmkBtn.addEventListener(Config.mobile ? 'touchend' : 'click', (ev) => {\n this.bookmarkBtnCallback.forEach((cb) => cb(el, id, bmkBtn, ev))\n })\n }\n }\n\n /**使用监视器,让未来添加的作品缩略图也绑定上事件 */\n protected createObserver(target: HTMLElement) {\n const observer = new MutationObserver((records) => {\n for (const record of records) {\n if (record.addedNodes.length > 0) {\n // 遍历被添加的元素\n for (const newEl of record.addedNodes) {\n this.findThumbnail(newEl as HTMLElement)\n }\n }\n }\n })\n observer.observe(target, {\n childList: true,\n subtree: true,\n })\n }\n\n /**添加下载器寻找到一个作品缩略图时的回调。\n * 注意:这个回调只会执行一次,因为它不是根据用户操作的事件触发的。\n *\n * 回调函数会接收到 2 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @id 作品 id(在移动端页面里,此时传递的 id 可能是空字符串 '')\n */\n public onFound(cb: Function) {\n this.foundCallback.push(cb)\n }\n\n /**添加鼠标进入作品缩略图时的回调。\n *\n * 回调函数会接收到 3 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @id 作品 id\n *\n * @ev Event 对象\n */\n public onEnter(cb: Function) {\n this.enterCallback.push(cb)\n }\n\n /**添加鼠标离开作品缩略图时的回调。\n *\n * 回调函数会接收到 2 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @ev Event 对象\n *\n * 没有 id 参数,因为鼠标离开时的 id 就是鼠标进入时的 id\n */\n public onLeave(cb: Function) {\n this.leaveCallback.push(cb)\n }\n\n /**添加鼠标点击作品缩略图时的回调。\n *\n * 回调函数会接收到 3 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @id 作品 id\n *\n * @ev Event 对象\n */\n public onClick(cb: Function) {\n this.clickCallback.push(cb)\n }\n\n /**添加鼠标点击缩略图里的收藏按钮时的回调。\n *\n * 回调函数会接收到 4 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @id 作品 id\n *\n * @btn 收藏按钮\n *\n * @ev Event 对象\n */\n public onClickBookmarkBtn(cb: Function) {\n this.bookmarkBtnCallback.push(cb)\n }\n}\n\nexport { WorkThumbnail }\n","import { Config } from './Config'\nimport { EVT } from './EVT'\nimport { pageType } from './PageType'\n\n// 在作品页面里,获取作品内容下方包含点赞、收藏、分享等按钮的工具栏元素\n// 注意:处于自己的作品页面里的时候,是没有收藏和点赞按钮的\nclass WorkToolBar {\n constructor() {\n this.init()\n this.bindEvents()\n }\n\n private toolbar: HTMLDivElement | undefined // 工具栏容器\n private readonly flag = 'xzToolbar' // 在工具栏上添加的标记\n private pixivBMKDiv: HTMLDivElement | undefined // pixiv 的心形收藏按钮\n private likeBtn: HTMLButtonElement | HTMLDivElement | undefined // 点赞按钮\n\n private timer: number = 0 // 获取元素用的定时器\n\n private async init() {\n this.toolbar = undefined\n this.pixivBMKDiv = undefined\n this.likeBtn = undefined\n window.clearInterval(this.timer)\n\n if (\n pageType.type !== pageType.list.Artwork &&\n pageType.type !== pageType.list.Novel\n ) {\n return\n }\n\n this.timer = window.setInterval(() => {\n Config.mobile ? this.getElementsOnMobile() : this.getElementsOnDesktop()\n }, 300)\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.init()\n })\n }\n\n private async getElementsOnDesktop() {\n // 获取工具栏\n const toolbarParent = document.querySelectorAll('main > section')\n for (const el of toolbarParent) {\n const test = el.querySelector('div>section')\n if (test) {\n const toolbar = test as HTMLDivElement\n if (!toolbar.classList.contains(this.flag)) {\n this.toolbar = toolbar\n toolbar.classList.add(this.flag)\n break\n }\n }\n }\n\n if (!this.toolbar) {\n return\n }\n\n // 获取心形收藏按钮的 div\n const total = this.toolbar.childElementCount\n // 心形收藏按钮是倒数第二个(从左往右数第二个)\n this.pixivBMKDiv =\n (this.toolbar.childNodes[total - 2] as HTMLDivElement) || undefined\n\n // 获取点赞按钮\n const btnList = this.toolbar.querySelectorAll('button')\n this.likeBtn = btnList[btnList.length - 1] || undefined\n\n // 全部获取完毕\n if (this.pixivBMKDiv && this.likeBtn) {\n window.clearInterval(this.timer)\n this.executionCB()\n }\n }\n\n private async getElementsOnMobile() {\n // 获取工具栏\n const toolbar = document.querySelector(\n '.work-interactions'\n ) as HTMLDivElement\n if (!toolbar) {\n return\n }\n this.toolbar = toolbar\n\n // 在移动端不要给工具栏添加自定义 class 名,因为切换页面时元素没重新生成,class 还在\n\n const divs = toolbar.querySelectorAll('div')\n if (divs.length !== 4) {\n return\n }\n // 只在正常模式下(有 4 个按钮)时工作\n // 如果在自己的作品页面里,就只有 1 个分享按钮\n\n // 获取心形收藏按钮的 div\n this.pixivBMKDiv = divs[1]\n\n // 获取点赞按钮\n this.likeBtn = divs[0]\n\n // 全部获取完毕\n if (this.pixivBMKDiv && this.likeBtn) {\n window.clearInterval(this.timer)\n this.executionCB()\n }\n }\n\n private callbackList: Function[] = []\n\n /**注册回调函数\n *\n * 当 WorkToolBar 模块获取到了所有需要的元素时,会执行回调函数,并把以下元素作为参数传入:\n *\n * toolbar, pixivBMKDiv, likeBtn */\n public register(cb: Function) {\n this.callbackList.push(cb)\n }\n\n private executionCB() {\n this.callbackList.forEach((cb) =>\n cb(this.toolbar, this.pixivBMKDiv, this.likeBtn)\n )\n }\n}\n\nconst workToolBar = new WorkToolBar()\nexport { workToolBar }\n","import { Config } from '../Config'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { pageType } from '../PageType'\nimport { states } from '../store/States'\nimport { IDData } from '../store/StoreType'\n\n// 在作品页面里,点击收藏按钮后会出现推荐作品。这个模块用于抓取推荐作品\nclass CrawlRecommendWorks {\n constructor() {\n this.timer = window.setInterval(() => {\n this.foundTarget()\n }, 300)\n\n this.bindEvents()\n }\n\n private get checkSelector() {\n return Config.mobile ? '.recommend-slidein-booster' : 'figcaption h2'\n }\n\n private readonly linkSelector = '.gtm-illust-recommend-thumbnail-link'\n\n private get datasetFlag() {\n return Config.mobile ? 'gtmRecommendIllustId' : 'gtmValue'\n }\n\n private found = false\n private timer: number | undefined\n private IDList: IDData[] = []\n\n private foundTarget() {\n if (this.found || pageType.type !== pageType.list.Artwork) {\n return\n }\n\n const titleBar = document.querySelector(this.checkSelector)\n if (titleBar) {\n this.found = true\n window.clearTimeout(this.timer)\n\n // 等待一段时间再获取作品超链接,因为立刻获取的话可能还未生成\n // 其实在 PC 端页面是可以立即获取到的,但是在移动端页面需要等待较长时间,500ms 不够用\n window.setTimeout(\n () => {\n this.readyCrawl()\n },\n Config.mobile ? 1000 : 100\n )\n }\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.pageSwitch, () => {\n // 页面切换后,页面元素可能还没来得及变化,所以需要等待一段时间后再开始查找\n // 如果立即查找,那么经常会查找到已经存在的推荐列表,于是就会立即停止查找\n window.setTimeout(() => {\n this.found = false\n this.IDList = []\n\n window.clearTimeout(this.timer)\n this.timer = window.setInterval(() => {\n this.foundTarget()\n }, 300)\n }, 600)\n })\n }\n\n private readyCrawl() {\n const allLinks = document.querySelectorAll(\n this.linkSelector\n ) as NodeListOf\n for (const a of allLinks) {\n const id = a.dataset[this.datasetFlag]\n if (id) {\n this.IDList.push({\n id,\n type: 'illusts',\n })\n }\n }\n\n this.addDownloadBtn()\n }\n\n private addDownloadBtn() {\n if (this.IDList.length === 0) {\n return\n }\n\n const target = document.querySelector(\n this.checkSelector\n ) as HTMLHeadingElement\n if (!target) {\n return\n }\n\n const btn = document.createElement('button')\n btn.textContent = lang.transl('_下载推荐作品')\n btn.classList.add('blueTextBtn')\n btn.addEventListener('click', () => {\n states.quickCrawl = true\n // 传递 ID 列表时需要复制一份,因为如果直接传递变量,那么这个数组会在抓取之后被清空\n EVT.fire('crawlIdList', [...this.IDList])\n })\n\n if (Config.mobile) {\n // 在移动端页面,需要把按钮添加到第一个子元素后面,因为第一个子元素才是“推荐作品”的标题\n target.firstElementChild!.insertAdjacentElement('afterend', btn)\n } else {\n // 修改标题的父元素样式,以便让标题和下载按钮可以并排显示\n target.parentElement!.style.display = 'flex'\n target.parentElement!.style.alignItems = 'center'\n target.insertAdjacentElement('afterend', btn)\n }\n }\n}\n\nnew CrawlRecommendWorks()\n","// 初始化地区排行榜页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { store } from '../store/Store'\n\nclass InitAreaRankingPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected initAny() {}\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取本页作品',\n '_抓取本页作品Title'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n protected setFormOption() {\n options.hideOption([1])\n }\n\n protected async getIdList() {\n const allPicArea = document.querySelectorAll('.ranking-item>.work_wrapper')\n\n for (const el of allPicArea) {\n const img = el.querySelector('._thumbnail')! as HTMLImageElement\n // img.dataset.type 全都是 \"illust\",因此不能用来区分作品类型\n\n // 提取出 tag 列表\n const id = img.dataset.id!\n const tags = img.dataset.tags!.split(' ')\n // 有的作品没有收藏按钮,点进去之后发现这个作品已经被删除了,只是排行榜里没有及时更新。这样的作品没有收藏按钮。\n const bookmarkBtn = el.querySelector('._one-click-bookmark')\n const bookmarked = bookmarkBtn\n ? bookmarkBtn.classList.contains('on')\n : false\n\n const filterOpt: FilterOption = {\n id: id,\n tags: tags,\n bookmarkData: bookmarked,\n }\n\n if (await filter.check(filterOpt)) {\n const id = Tools.getIllustId(el.querySelector('a')!.href)\n store.idList.push({\n type: 'illusts',\n id,\n })\n }\n }\n\n this.getIdListFinished()\n }\n}\nexport { InitAreaRankingPage }\n","//初始化 artwork 作品页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\nimport { userWorksType } from '../crawl/CrawlArgument'\nimport { Tools } from '../Tools'\nimport { API } from '../API'\nimport { log } from '../Log'\nimport { Utils } from '../utils/Utils'\nimport './CrawlRecommendWorks'\n\nclass InitArtworkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private crawlDirection: number = 0 // 抓取方向,指示抓取新作品还是旧作品\n /*\n -1 抓取新作品\n 0 不设置抓取方向\n 1 抓取旧作品\n */\n\n private crawlRelated: boolean = false // 是否下载相关作品\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_从本页开始抓取new'\n ).addEventListener('click', () => {\n this.crawlDirection = -1\n this.readyCrawl()\n })\n\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_从本页开始抓取old'\n ).addEventListener('click', () => {\n this.crawlDirection = 1\n this.readyCrawl()\n })\n\n const downRelatedBtn = Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取相关作品'\n )\n downRelatedBtn.addEventListener(\n 'click',\n () => {\n this.crawlRelated = true\n this.readyCrawl()\n },\n false\n )\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n\n protected getWantPage() {\n // 检查下载页数的设置\n if (!this.crawlRelated) {\n const crawlAllTip =\n this.crawlDirection === -1\n ? lang.transl('_从本页开始抓取new')\n : lang.transl('_从本页开始抓取old')\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x个'),\n crawlAllTip\n )\n } else {\n // 相关作品的提示\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_下载x个相关作品'),\n lang.transl('_下载所有相关作品')\n )\n }\n }\n\n protected nextStep() {\n // 下载相关作品\n if (this.crawlRelated) {\n this.getRelatedList()\n } else {\n // 向前向后下载\n this.getIdList()\n }\n }\n\n protected async getIdList() {\n let type: userWorksType[] = ['illusts', 'manga']\n let idList = await API.getUserWorksByType(Tools.getUserId(), type)\n\n // 储存符合条件的 id\n let nowId = parseInt(Tools.getIllustId(window.location.href))\n idList.forEach((id) => {\n let idNum = parseInt(id.id)\n // 新作品\n if (idNum >= nowId && this.crawlDirection === -1) {\n store.idList.push(id)\n } else if (idNum <= nowId && this.crawlDirection === 1) {\n // 旧作品\n store.idList.push(id)\n }\n })\n\n // 当设置了下载个数时,进行裁剪\n if (this.crawlNumber !== -1) {\n // 新作品 升序排列\n if (this.crawlDirection === -1) {\n store.idList.sort(Utils.sortByProperty('id')).reverse()\n } else {\n // 旧作品 降序排列\n store.idList.sort(Utils.sortByProperty('id'))\n }\n\n store.idList = store.idList.splice(0, this.crawlNumber)\n }\n\n this.getIdListFinished()\n }\n\n // 下载相关作品时使用\n private async getRelatedList() {\n let data = await API.getRelatedData(Tools.getIllustId())\n // 相关作品的列表由两部分构成,所以要组合起来\n let ids: string[] = []\n for (const illust of data.body.illusts) {\n if (illust.isAdContainer) {\n continue\n }\n ids.push(illust.id)\n }\n ids = ids.concat(data.body.nextIds)\n\n // 当设置了下载个数时,进行裁剪\n if (this.crawlNumber !== -1) {\n ids = ids.slice(0, this.crawlNumber)\n }\n\n for (const id of ids) {\n store.idList.push({\n type: 'illusts',\n id,\n })\n }\n\n log.log(lang.transl('_相关作品抓取完毕', store.idList.length.toString()))\n this.getIdListFinished()\n }\n\n protected resetGetIdListStatus() {\n this.crawlDirection = 0 // 解除下载方向的标记\n this.crawlRelated = false // 解除下载相关作品的标记\n }\n}\nexport { InitArtworkPage }\n","// 初始化插画/漫画的系列作品页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { API } from '../API'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\n\nclass InitArtworkSeriesPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private seriesId = ''\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n this.maxCount = 100\n\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, true)\n }\n\n protected nextStep() {\n // 设置起始页码\n const p = Utils.getURLSearchField(location.href, 'p')\n this.startpageNo = parseInt(p) || 1\n\n // 获取系列 id\n this.seriesId = Utils.getURLPathField(window.location.pathname, 'series')\n\n this.getIdList()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let p = this.startpageNo + this.listPageFinished\n\n const data = await API.getSeriesData(this.seriesId, p)\n this.listPageFinished++\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n // 保存本页面的作品的 id 列表\n const idList: string[] = []\n for (const info of data.body.page.series) {\n idList.push(info.workId)\n }\n // data.body.page.series 里的才是本页面的作品,illust 里则不同,有时它的作品数量比页面上的更多\n\n // 从 illust 里查找 id 对应的数据,进行过滤\n for (const work of data.body.thumbnails.illust) {\n if (!idList.includes(work.id)) {\n continue\n }\n if (work.isAdContainer) {\n continue\n }\n\n // 过滤器进行检查\n const filterOpt: FilterOption = {\n aiType: work.aiType,\n id: work.id,\n tags: work.tags,\n bookmarkData: !!work.bookmarkData,\n width: work.pageCount === 1 ? work.width : 0,\n height: work.pageCount === 1 ? work.height : 0,\n workType: work.illustType,\n userId: work.userId,\n createDate: work.createDate,\n xRestrict: work.xRestrict,\n }\n\n // 因为这个 api 的 illust 数据可能是插画也可能是漫画,所以 type 是 unknown\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: 'illusts',\n id: work.id,\n })\n }\n }\n\n // 如果 data.body.page.series 为空,就是到了最后一页\n const endFlag = data.body.page.series.length === 0\n\n // 抓取完毕\n if (\n endFlag ||\n p >= this.maxCount ||\n this.listPageFinished === this.crawlNumber\n ) {\n log.log(lang.transl('_列表页抓取完成'))\n this.getIdListFinished()\n } else {\n // 继续抓取\n log.log(\n lang.transl('_列表页抓取进度', this.listPageFinished.toString()),\n 1,\n false\n )\n\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n }\n}\nexport { InitArtworkSeriesPage }\n","// 初始化 bookmark_detail 页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { API } from '../API'\nimport { store } from '../store/Store'\n\nclass InitBookmarkDetailPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取相似图片',\n '_抓取相似图片'\n ).addEventListener(\n 'click',\n () => {\n this.readyCrawl()\n },\n false\n )\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, false)\n }\n\n // 获取相似的作品列表\n protected async getIdList() {\n let data = await API.getRecommenderData(\n Tools.getIllustId(),\n this.crawlNumber\n )\n\n for (const id of data.recommendations) {\n store.idList.push({\n type: 'illusts',\n id: id.toString(),\n })\n }\n\n this.getIdListFinished()\n }\n}\nexport { InitBookmarkDetailPage }\n","// 初始化发现页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\n\nclass InitDiscoverPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取当前作品',\n '_抓取当前作品Title'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n protected setFormOption() {\n options.hideOption([1])\n }\n\n protected getWantPage() {}\n\n protected getIdList() {\n // 在发现页面,直接获取页面上显示的作品,不需要获取列表页\n if (location.pathname.includes('/novel')) {\n // 小说页面\n const allWork = document.querySelectorAll(\n '.gtm-novel-work-recommend-link'\n )\n allWork.forEach((div) => {\n const a = div.querySelector('a')\n if (a) {\n const id = Tools.getNovelId(a.href)\n store.idList.push({\n type: 'novels',\n id,\n })\n }\n })\n } else {\n // 插画漫画页面\n const allLink = document.querySelectorAll(\n 'div[width=\"184\"]>a'\n ) as NodeListOf\n // 获取已有作品的 id\n allLink.forEach((a) => {\n const id = Tools.getIllustId(a.href)\n store.idList.push({\n type: 'illusts',\n id,\n })\n })\n }\n this.getIdListFinished()\n }\n}\nexport { InitDiscoverPage }\n","// 初始化 本站的最新作品 artwork 页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { NewIllustOption } from '../crawl/CrawlArgument'\nimport { NewIllustData } from '../crawl/CrawlResult'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nclass InitNewArtworkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private option: NewIllustOption = this.resetOption()\n\n private readonly limitMax = 20 // 每次请求的数量最大是 20\n\n private fetchCount = 0 // 已请求的作品数量\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_下载大家的新作品'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, false)\n }\n\n protected nextStep() {\n this.setSlowCrawl()\n this.initFetchURL()\n this.getIdList()\n }\n\n private resetOption(): NewIllustOption {\n return {\n lastId: '0',\n limit: '20', // 每次请求的数量,可以比 20 小\n type: '',\n r18: '',\n }\n }\n\n // 组织要请求的 url\n private initFetchURL() {\n this.option = this.resetOption()\n\n if (this.crawlNumber < this.limitMax) {\n this.option.limit = this.crawlNumber.toString()\n } else {\n this.option.limit = this.limitMax.toString()\n }\n\n // 当前页面的作品类型,默认是 illust\n this.option.type =\n Utils.getURLSearchField(location.href, 'type') || 'illust'\n // 是否是 R18 模式\n this.option.r18 = (location.href.includes('_r18.php') || false).toString()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let data: NewIllustData\n try {\n data = await API.getNewIllustData(this.option)\n } catch (error) {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let useData = data.body.illusts\n\n for (const nowData of useData) {\n // 抓取够了指定的数量\n if (this.fetchCount + 1 > this.crawlNumber) {\n break\n } else {\n this.fetchCount++\n }\n\n // 排除广告信息\n if (nowData.isAdContainer) {\n continue\n }\n\n const filterOpt: FilterOption = {\n aiType: nowData.aiType,\n id: nowData.id,\n width: nowData.pageCount === 1 ? nowData.width : 0,\n height: nowData.pageCount === 1 ? nowData.height : 0,\n pageCount: nowData.pageCount,\n bookmarkData: nowData.bookmarkData,\n workType: nowData.illustType,\n tags: nowData.tags,\n userId: nowData.userId,\n createDate: nowData.createDate,\n xRestrict: nowData.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: Tools.getWorkTypeString(nowData.illustType),\n id: nowData.id,\n })\n }\n }\n\n log.log(lang.transl('_新作品进度', this.fetchCount.toString()), 1, false)\n\n // 抓取完毕\n if (\n this.fetchCount >= this.crawlNumber ||\n this.fetchCount >= this.maxCount\n ) {\n log.log(lang.transl('_开始获取作品页面'))\n this.getIdListFinished()\n return\n }\n\n // 继续抓取\n this.option.lastId = data.body.lastId\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.fetchCount = 0\n }\n}\nexport { InitNewArtworkPage }\n","// 初始化 pixivision 页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\nimport { Utils } from '../utils/Utils'\n\nclass InitPixivisionPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected addCrawlBtns() {\n const typeA = document.querySelector(\n 'a[data-gtm-action=ClickCategory]'\n )! as HTMLAnchorElement\n const type = typeA.dataset.gtmLabel\n\n if (type === 'illustration' || type === 'manga' || type === 'cosplay') {\n // 在插画、漫画、cosplay类型的页面上创建下载功能\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取该页面的图片'\n ).addEventListener(\n 'click',\n () => {\n this.readyCrawl()\n },\n false\n )\n }\n }\n\n protected setFormOption() {\n options.hideOption([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 19, 21, 22, 23, 24, 26,\n 27, 28, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 46, 47, 48,\n 49, 50, 51, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,\n 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,\n ])\n }\n\n protected nextStep() {\n this.getPixivision()\n }\n\n // 保存要下载的图片的信息\n private addResult(id: string, url: string, ext: string) {\n store.addResult({\n id: id,\n idNum: Number.parseInt(id),\n original: url,\n ext: ext,\n })\n }\n\n private async getPixivision() {\n const a = document.querySelector(\n 'a[data-gtm-action=ClickCategory]'\n )! as HTMLAnchorElement\n const type = a.dataset.gtmLabel\n\n if (type === 'illustration') {\n // 插画页面,需要对图片进行测试获取原图 url\n const imageList = document.querySelectorAll(\n '.am__work__main img'\n ) as NodeListOf\n const urls = Array.from(imageList).map((el) => {\n return el.src\n .replace('c/768x1200_80/img-master', 'img-original')\n .replace('_master1200', '')\n })\n\n for (const url of urls) {\n let arr = url.split('/')\n const id = arr[arr.length - 1].split('.')[0].split('_')[0] // 作品id,尝试提取出数字部分\n await this.testExtName(url, id)\n }\n this.crawlFinished()\n } else {\n // 漫画和 cosplay ,直接保存页面上的图片\n let selector = ''\n if (type === 'manga') {\n selector = '.am__work__illust'\n } else if (type === 'cosplay') {\n selector = '.fab__image-block__image img'\n }\n\n // 把图片url添加进数组\n const imageList = document.querySelectorAll(\n selector\n ) as NodeListOf\n Array.from(imageList).forEach((el) => {\n const url = el.src\n if (url !== 'https://i.pximg.net/imgaz/upload/20170407/256097898.jpg') {\n // 跳过Cure的logo图片\n // 漫画页面的图片 url 如:\n // https://i.pximg.net/c/768x1200_80/img-master/img/2017/06/19/01/08/28/63457814_p0_master1200.jpg\n // cosplay 页面的 ur 如:\n // https://i.pximg.net/imgaz/upload/20170808/670930758.jpg\n const arr = url.split('/')\n const id = arr[arr.length - 1].split('.')[0].split('_')[0] // 作品id,尝试提取出数字部分\n const extTest = arr[arr.length - 1].match(/\\.(.*$)/) // 扩展名,不带点 .\n let ext = 'jpg'\n if (extTest && extTest.length > 1) {\n ext = extTest[1]\n }\n this.addResult(id, url, ext)\n }\n })\n this.crawlFinished()\n }\n }\n\n // 通过加载图片来判断图片的后缀名。pixivision 页面直接获取的图片后缀都是 jpg 的\n private async testExtName(url: string, id: string) {\n let ext = 'jpg' // 默认为 jpg\n await Utils.loadImg(url).catch(() => {\n // 如果图片加载失败则把后缀改为 png\n url = url.replace('.jpg', '.png')\n ext = 'png'\n })\n\n this.addResult(id, url, ext)\n\n this.logResultNumber()\n }\n}\nexport { InitPixivisionPage }\n","// 初始化 artwork 排行榜页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { API } from '../API'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { options } from '../setting/Options'\nimport { RankingOption } from '../crawl/CrawlArgument'\nimport { RankingData } from '../crawl/CrawlResult'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { states } from '../store/States'\nimport { Utils } from '../utils/Utils'\n\nclass InitRankingArtworkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private pageCount: number = 10 // 排行榜的页数\n\n private option: RankingOption = this.resetOption()\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取本排行榜作品',\n '_抓取本排行榜作品Title'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n // 判断当前页面是否有“首次登场”标记\n const debutModes = ['daily', 'daily_r18', 'rookie', '']\n const mode = Utils.getURLSearchField(location.href, 'mode')\n\n if (debutModes.includes(mode)) {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取首次登场的作品',\n '_抓取首次登场的作品Title'\n ).addEventListener('click', () => {\n states.debut = true\n this.readyCrawl()\n })\n }\n }\n\n protected initAny() {\n // 抓取完成后,复位 debut 标记\n // 因为 debut 只在抓取阶段被过滤器使用,所以抓取完成后就可以复位\n window.addEventListener(EVT.list.crawlComplete, () => {\n states.debut = false\n })\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n this.maxCount = 500\n\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n private resetOption(): RankingOption {\n return { mode: 'daily', p: 1, worksType: '', date: '' }\n }\n\n private setPartNum() {\n // 设置页数。排行榜页面一页有50张作品,当页面到达底部时会加载下一页\n if (location.pathname.includes('r18g')) {\n // r18g 只有1个榜单,固定1页\n this.pageCount = 1\n } else if (location.pathname.includes('_r18')) {\n // r18 模式,这里的6是最大值,有的排行榜并没有6页\n this.pageCount = 6\n } else {\n // 普通模式,这里的10也是最大值。如果实际没有10页,则在检测到404页面的时候停止抓取下一页\n this.pageCount = 10\n }\n }\n\n protected getWantPage() {\n this.listPageFinished = 0\n // 检查下载页数的设置\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_下载排行榜前x个作品'),\n lang.transl('_向下获取所有作品')\n )\n // 如果设置的作品个数是 -1,则设置为下载所有作品\n if (this.crawlNumber === -1) {\n this.crawlNumber = 500\n }\n }\n\n protected nextStep() {\n // 设置 option 信息\n // mode 一定要有值,其他字段不需要一定有值\n this.option = this.resetOption()\n this.option.mode = Utils.getURLSearchField(location.href, 'mode') || 'daily'\n this.option.worksType = Utils.getURLSearchField(location.href, 'content')\n this.option.date = Utils.getURLSearchField(location.href, 'date')\n\n this.startpageNo = 1\n\n this.setPartNum()\n this.getIdList()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n this.option.p = this.startpageNo + this.listPageFinished\n\n // 发起请求,获取作品列表\n let data: RankingData\n try {\n data = await API.getRankingData(this.option)\n } catch (error) {\n if (error.status === 404) {\n // 如果发生了404错误,则中断抓取,直接下载已有部分。因为可能确实没有下一部分了\n console.log('404错误,直接下载已有部分')\n this.getIdListFinished()\n }\n\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n this.listPageFinished++\n\n const contents = data.contents // 取出作品信息列表\n for (const data of contents) {\n // 检查是否已经抓取到了指定数量的作品\n if (data.rank > this.crawlNumber) {\n return this.getIdListFinished()\n }\n\n const pageCount = parseInt(data.illust_page_count)\n // 目前这个数据里并没有包含收藏数量,所以在这里没办法检查收藏数量要求\n const filterOpt: FilterOption = {\n id: data.illust_id,\n workType: parseInt(data.illust_type) as any,\n tags: data.tags,\n pageCount: pageCount,\n bookmarkData: data.is_bookmarked,\n width: pageCount === 1 ? data.width : 0,\n height: pageCount === 1 ? data.height : 0,\n yes_rank: data.yes_rank,\n userId: data.user_id.toString(),\n }\n\n if (await filter.check(filterOpt)) {\n store.setRankList(data.illust_id.toString(), data.rank)\n\n store.idList.push({\n type: Tools.getWorkTypeString(data.illust_type),\n id: data.illust_id.toString(),\n })\n }\n }\n\n log.log(\n lang.transl('_排行榜进度', this.listPageFinished.toString()),\n 1,\n false\n )\n\n // 抓取完毕\n if (this.listPageFinished === this.pageCount) {\n this.getIdListFinished()\n } else {\n // 继续抓取\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n }\n}\nexport { InitRankingArtworkPage }\n","// 初始化 artwork 搜索页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { DeleteWorks } from '../pageFunciton/DeleteWorks'\nimport { EVT } from '../EVT'\nimport { SearchOption } from '../crawl/CrawlArgument'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Result } from '../store/StoreType'\nimport { settings } from '../setting/Settings'\nimport { FastScreen } from '../pageFunciton/FastScreen'\nimport { Tools } from '../Tools'\nimport { BookmarkAllWorks } from '../pageFunciton/BookmarkAllWorks'\nimport { states } from '../store/States'\nimport { Utils } from '../utils/Utils'\nimport { idListWithPageNo } from '../store/IdListWithPageNo'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { bookmark } from '../Bookmark'\nimport { crawlTagList } from '../crawlMixedPage/CrawlTagList'\nimport { pageType } from '../PageType'\nimport { Config } from '../Config'\nimport { downloadOnClickBookmark } from '../download/DownloadOnClickBookmark'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport '../pageFunciton/RemoveWorksOfFollowedUsersOnSearchPage'\n\ntype AddBMKData = {\n id: number\n tags: string[]\n el: Element\n}\n\ntype FilterCB = (value: Result) => unknown\n\nclass InitSearchArtworkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private readonly worksWrapSelector = '#root section ul'\n private readonly listClass = 'searchList'\n private readonly multipleClass = 'multiplePart'\n private readonly ugoiraClass = 'ugoiraPart'\n private readonly addBMKBtnClass = 'bmkBtn'\n private readonly bookmarkedClass = 'bookmarked'\n private readonly countSelector = 'section h3+div span'\n private countEl?: HTMLElement\n\n private worksType = ''\n private option: SearchOption = {}\n private readonly worksNoPerPage = 60 // 每个页面有多少个作品\n private needCrawlPageCount = 0 // 需要抓取多少个列表页面\n private sendCrawlTaskCount = 0 // 发送抓取请求之前会自增,用于计算要抓取的页码。不是请求完成后自增\n private readonly allOption = [\n 'order',\n 'type',\n 'wlt',\n 'wgt',\n 'hlt',\n 'hgt',\n 'ratio',\n 'tool',\n 's_mode',\n 'mode',\n 'scd',\n 'ecd',\n 'blt',\n 'bgt',\n 'work_lang',\n 'ai_type',\n ]\n\n private resultMeta: Result[] = [] // 每次“开始筛选”完成后,储存当时所有结果,以备“在结果中筛选”使用\n\n private worksWrap: HTMLUListElement | null = null\n\n private deleteId = 0 // 手动删除时,要删除的作品的 id\n\n private causeResultChange = ['firstFewImagesSwitch', 'firstFewImages'] // 这些选项变更时,可能会导致结果改变。但是过滤器 filter 不会检查,所以需要单独检测它的变更,手动处理\n\n private crawlStartBySelf = false // 这次抓取是否是由当前页面的“开始抓取”按钮发起的\n\n private previewCount = 0 // 共显示了多少个作品的预览图\n private showPreviewLimitTip = false // 当预览数量达到上限时显示一次提示\n\n // 储存预览搜索结果的元素\n private workPreviewBuffer = document.createDocumentFragment()\n\n protected setFormOption() {\n const isPremium = Tools.isPremium()\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: `1 - ${isPremium ? 5000 : 1000}`,\n })\n }\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.resultMeta = []\n this.crawlStartBySelf = true\n\n window.addEventListener(EVT.list.addResult, this.createPreview)\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n\n crawlTagList.init()\n\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_在结果中筛选',\n '_在结果中筛选说明'\n ).addEventListener('click', () => {\n this.screenInResult()\n })\n }\n\n protected addAnyElement() {\n const deleteWorks = new DeleteWorks(`.${this.listClass}`)\n\n deleteWorks.addClearMultipleBtn(`.${this.multipleClass}`, () => {\n EVT.fire('clearMultiple')\n })\n\n deleteWorks.addClearUgoiraBtn(`.${this.ugoiraClass}`, () => {\n EVT.fire('clearUgoira')\n })\n\n deleteWorks.addManuallyDeleteBtn((el: HTMLElement) => {\n EVT.fire('deleteWork', el)\n })\n\n // 添加收藏本页所有作品的功能\n const bookmarkAllBtn = Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_收藏本页面的所有作品'\n )\n const bookmarkAll = new BookmarkAllWorks(bookmarkAllBtn)\n\n bookmarkAllBtn.addEventListener('click', () => {\n const listWrap = this.getWorksWrap()\n if (listWrap) {\n const list = listWrap.querySelectorAll('li')\n // 被二次筛选过滤掉的作品会被隐藏,所以批量添加收藏时,过滤掉隐藏的作品\n const showList = Array.from(list).filter((el) => {\n return el.style.display !== 'none'\n })\n bookmarkAll.sendWorkList(showList)\n }\n })\n }\n\n protected initAny() {\n this.removeBlockOnHotBar()\n\n new FastScreen()\n\n window.addEventListener(\n EVT.list.pageSwitchedTypeNotChange,\n this.removeBlockOnHotBar\n )\n\n window.addEventListener(EVT.list.addResult, this.showCount)\n\n window.addEventListener('addBMK', this.addBookmark)\n\n window.addEventListener(EVT.list.crawlComplete, this.onCrawlFinish)\n\n window.addEventListener(EVT.list.clearMultiple, this.clearMultiple)\n\n window.addEventListener(EVT.list.clearUgoira, this.clearUgoira)\n\n window.addEventListener(EVT.list.deleteWork, this.deleteWork)\n\n window.addEventListener(EVT.list.settingChange, this.onSettingChange)\n\n window.addEventListener(EVT.list.crawlTag, this.crawlTag)\n\n // 定期将缓冲中的预览作品元素添加到页面上\n window.setInterval(() => {\n this.showPreview()\n }, 1000)\n }\n\n private showPreview() {\n if (this.workPreviewBuffer.firstChild && this.worksWrap) {\n this.worksWrap.appendChild(this.workPreviewBuffer)\n }\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n\n window.removeEventListener(EVT.list.addResult, this.showCount)\n window.removeEventListener(EVT.list.crawlComplete, this.onCrawlFinish)\n window.removeEventListener(EVT.list.settingChange, this.onSettingChange)\n window.removeEventListener(EVT.list.crawlTag, this.crawlTag)\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n protected async nextStep() {\n this.setSlowCrawl()\n this.initFetchURL()\n\n // 计算应该抓取多少页\n const data = await this.getSearchData(1)\n // 计算总页数\n let pageCount = Math.ceil(data.total / this.worksNoPerPage)\n if (pageCount > 1000) {\n // 如果作品页数大于 1000 页,则判断当前用户是否是 pixiv 会员\n const isPremium = Tools.isPremium()\n if (!isPremium) {\n // 如果用户不是会员,则最多只能抓取到 1000 页\n pageCount = 1000\n log.warning(lang.transl('_搜索页面页数限制', pageCount.toString()))\n } else {\n // 如果用户是会员,最多可以抓取到 5000 页\n if (pageCount > 5000) {\n pageCount = 5000\n log.warning(lang.transl('_搜索页面页数限制', pageCount.toString()))\n }\n }\n }\n\n // 如果当前页面的页码大于有效页码,则不进行抓取\n if (this.startpageNo > pageCount) {\n EVT.fire('crawlComplete')\n EVT.fire('crawlEmpty')\n\n if (data.total === 0) {\n return msgBox.error(lang.transl('_作品总数为0'))\n }\n return msgBox.error(`${lang.transl('_超出最大页码')} ${pageCount}`)\n }\n\n if (this.crawlNumber === -1 || this.crawlNumber > pageCount) {\n this.crawlNumber = pageCount\n }\n\n // 计算从当前页面开始抓取的话,有多少页\n let needFetchPage = pageCount - this.startpageNo + 1\n // 比较用户设置的页数,取较小的那个数值\n this.needCrawlPageCount = Math.min(needFetchPage, this.crawlNumber)\n\n if (this.needCrawlPageCount === 0) {\n return this.noResult()\n }\n\n this.getIdList()\n\n this.clearPreview()\n\n this.countEl = document.querySelector(this.countSelector) as HTMLElement\n }\n\n // 组织要请求的 url 中的参数\n private initFetchURL() {\n // 从 URL 中获取分类。可能有语言标识。\n /*\n https://www.pixiv.net/tags/Fate%2FGrandOrder/illustrations\n https://www.pixiv.net/en/tags/Fate%2FGrandOrder/illustrations\n */\n const URLType = location.pathname.split('tags/')[1].split('/')[1] ?? ''\n // 在“顶部”页面的时候是没有分类的,会是 undefined,此时使用空字符串\n\n switch (URLType) {\n case '':\n this.worksType = 'artworks'\n break\n case 'illustrations':\n case 'illust_and_ugoira':\n case 'ugoira':\n case 'illust':\n this.worksType = 'illustrations'\n break\n case 'manga':\n this.worksType = 'manga'\n break\n\n default:\n this.worksType = 'artworks'\n break\n }\n\n let p = Utils.getURLSearchField(location.href, 'p')\n this.startpageNo = parseInt(p) || 1\n\n // 从页面 url 中获取可以使用的选项\n this.option = {}\n this.allOption.forEach((param) => {\n let value = Utils.getURLSearchField(location.href, param)\n if (value !== '') {\n this.option[param] = value\n }\n })\n\n // 如果 url 里没有显式指定标签匹配模式,则使用 完全一致 模式\n // 因为在这种情况下,pixiv 默认使用的就是 完全一致\n if (!this.option.s_mode) {\n this.option.s_mode = 's_tag_full'\n }\n\n // 在日志里显示标签匹配模式\n log.log(\n `${lang.transl('_搜索模式')}: ${this.tipSearchMode(this.option.s_mode)}`\n )\n }\n\n // 注意:同样的 mode,在搜索图片时和搜索小说时可能有不同的含义。所以这个方法不是通用的。\n private tipSearchMode(mode: string) {\n switch (mode) {\n case 's_tag':\n return lang.transl('_标签部分一致')\n case 's_tag_full':\n return lang.transl('_标签完全一致')\n case 's_tc':\n return lang.transl('_标题说明文字')\n default:\n return mode\n }\n }\n\n // 获取搜索页的数据。因为有多处使用,所以进行了封装\n private async getSearchData(p: number) {\n let data = await API.getSearchData(\n store.tag,\n this.worksType,\n p,\n this.option\n )\n return data.body.illust || data.body.illustManga || data.body.manga\n }\n\n private delayReTry(p: number) {\n window.setTimeout(() => {\n this.getIdList(p)\n }, Config.retryTime)\n // 限制时间大约是 3 分钟,这里为了保险起见,设置了更大的延迟时间。\n }\n\n private tipEmptyResult = Utils.debounce(() => {\n log.error(lang.transl('_抓取被限制时返回空结果的提示'))\n }, 1000)\n\n // 仅当出错重试时,才会传递参数 p。此时直接使用传入的 p,而不是继续让 p 增加\n protected async getIdList(p?: number): Promise {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n if (p === undefined) {\n p = this.startpageNo + this.sendCrawlTaskCount\n this.sendCrawlTaskCount++\n }\n\n // 发起请求,获取列表页\n let data\n try {\n data = await this.getSearchData(p)\n\n if (data.total === 0) {\n console.log(`page ${p}: total 0`)\n this.tipEmptyResult()\n return this.delayReTry(p)\n }\n } catch {\n return this.getIdList(p)\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n data = data.data\n\n for (const nowData of data) {\n // 排除广告信息\n if (nowData.isAdContainer) {\n continue\n }\n\n const filterOpt: FilterOption = {\n aiType: nowData.aiType,\n createDate: nowData.createDate,\n id: nowData.id,\n width: nowData.pageCount === 1 ? nowData.width : 0,\n height: nowData.pageCount === 1 ? nowData.height : 0,\n pageCount: nowData.pageCount,\n bookmarkData: nowData.bookmarkData,\n workType: nowData.illustType,\n tags: nowData.tags,\n userId: nowData.userId,\n xRestrict: nowData.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n idListWithPageNo.add(\n pageType.type,\n {\n type: Tools.getWorkTypeString(nowData.illustType),\n id: nowData.id,\n },\n p\n )\n }\n }\n\n this.listPageFinished++\n\n log.log(\n lang.transl(\n '_列表页抓取进度2',\n this.listPageFinished.toString(),\n this.needCrawlPageCount.toString()\n ),\n 1,\n false\n )\n\n if (this.sendCrawlTaskCount + 1 <= this.needCrawlPageCount) {\n // 继续发送抓取任务(+1 是因为 sendCrawlTaskCount 从 0 开始)\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n } else {\n // 抓取任务已经全部发送\n if (this.listPageFinished === this.needCrawlPageCount) {\n // 抓取任务全部完成\n log.log(lang.transl('_列表页抓取完成'))\n\n idListWithPageNo.store(pageType.type)\n\n this.getIdListFinished()\n }\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n this.sendCrawlTaskCount = 0\n }\n\n // 搜索页把下载任务按收藏数从高到低下载\n protected sortResult() {\n store.resultMeta.sort(Utils.sortByProperty('bmk'))\n store.result.sort(Utils.sortByProperty('bmk'))\n }\n\n private onSettingChange = (event: CustomEventInit) => {\n if (states.crawlTagList) {\n return\n }\n const data = event.detail.data\n if (this.causeResultChange.includes(data.name)) {\n if (store.result.length > 0) {\n this.reAddResult()\n EVT.fire('resultChange')\n }\n }\n }\n\n // 抓取完成后,保存结果的元数据,并重新添加抓取结果\n private onCrawlFinish = () => {\n // 有些操作也会触发抓取完毕的事件,但不应该调整搜索页面的结果。\n if (states.crawlTagList || states.quickCrawl) {\n return\n }\n if (!this.crawlStartBySelf) {\n return\n }\n\n this.resultMeta = [...store.resultMeta]\n\n // 在搜索页面抓取完毕之后,作品数据会按照收藏数量排序。所以这里需要清空之前的预览,重新生成预览\n this.clearPreview()\n this.reAddResult()\n this.showPreview()\n\n // 解绑创建作品元素的事件\n window.removeEventListener(EVT.list.addResult, this.createPreview)\n\n this.crawlStartBySelf = false\n\n setTimeout(() => {\n EVT.fire('worksUpdate')\n }, 0)\n }\n\n // 返回包含作品列表的 ul 元素\n private getWorksWrap() {\n const test = document.querySelectorAll(this.worksWrapSelector)\n if (test.length > 0) {\n if (test.length > 2) {\n // 大于 2 的情况是在搜索页的首页,或者小说页面\n return test[2] as HTMLUListElement\n }\n\n // 在插画、漫画、artworks 页面只有两个 ul 或者一个\n return test[test.length - 1] as HTMLUListElement\n }\n return null\n }\n\n // 显示抓取到的作品数量\n private showCount = () => {\n if (states.crawlTagList || !settings.previewResult) {\n return\n }\n\n if (settings.previewResult && this.countEl) {\n const count = this.resultMeta.length || store.resultMeta.length\n this.countEl.textContent = count.toString()\n }\n }\n\n // 生成抓取结果对应的作品元素\n private createPreview = (event: CustomEventInit) => {\n if (states.crawlTagList) {\n return\n }\n if (!settings.previewResult || !this.worksWrap) {\n return\n }\n\n // 检查显示的预览数量是否达到上限\n if (this.previewCount >= settings.previewResultLimit) {\n if (!this.showPreviewLimitTip) {\n const msg = lang.transl('_预览搜索结果的数量达到上限的提示')\n log.warning(msg)\n msgBox.warning(msg)\n this.showPreviewLimitTip = true\n }\n return\n }\n this.previewCount++\n\n const data = event.detail.data as Result\n\n let r18Text = ''\n if (data.xRestrict === 1) {\n r18Text = 'R-18'\n }\n if (data.xRestrict === 2) {\n r18Text = 'R-18G'\n }\n\n let r18HTML = r18Text\n ? `\n
    \n
    \n
    ${r18Text}
    \n
    \n
    `\n : ''\n\n let multipleHTML = ''\n if (data.pageCount > 1) {\n multipleHTML = `\n
    \n
    \n \n \n \n \n \n \n \n ${data.pageCount}\n
    \n
    `\n }\n\n let ugoiraHTML = ''\n if (data.ugoiraInfo) {\n ugoiraHTML = `\n \n \n \n `\n }\n\n // 添加收藏的作品,让收藏图标变红\n const bookmarkedFlag = data.bookmarked ? this.bookmarkedClass : ''\n\n const html = `\n
    \n
    \n
    \n \n \n
    \n\n \n ${r18HTML}\n\n \n ${multipleHTML}\n \n
    \n \n
    \n \"${\n\n \n ${ugoiraHTML}\n
    \n
    \n \n
    ${data.bmk}
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n ${\n data.title\n }\n \n
    \n \n \n
    \n
    \n `\n // 相比 pixiv 原本的作品预览区域,这里去掉了作者头像的部分,因为抓取到的数据里没有作者头像。\n\n // 生成预览元素\n const li = document.createElement('li')\n li.classList.add(this.listClass)\n li.dataset.id = data.idNum.toString()\n li.innerHTML = html\n\n // 绑定收藏按钮的事件\n const addBMKBtn = li!.querySelector(\n `.${this.addBMKBtnClass}`\n ) as HTMLButtonElement\n const bookmarkedClass = this.bookmarkedClass\n addBMKBtn.addEventListener('click', function () {\n // 添加收藏\n const e = new CustomEvent('addBMK', {\n detail: { data: { id: data.idNum, tags: data.tags, el: addBMKBtn } },\n })\n window.dispatchEvent(e)\n\n // 下载这个作品\n downloadOnClickBookmark.send(data.idNum.toString())\n })\n\n // 添加到缓冲中\n this.workPreviewBuffer.append(li)\n }\n\n // 清空预览作品的列表,在开始抓取时和作品抓取完毕时使用\n private clearPreview() {\n if (!settings.previewResult || !this.crawlStartBySelf) {\n return\n }\n this.worksWrap = this.getWorksWrap()\n if (this.worksWrap) {\n this.worksWrap.innerHTML = ''\n }\n // 同时重置一些变量\n this.previewCount = 0\n this.showPreviewLimitTip = false\n this.workPreviewBuffer = document.createDocumentFragment()\n }\n\n // 传递作品 id 列表,从页面上的作品列表里移除这些作品\n private removeWorks(idList: string[]) {\n // #root section ul .searchList\n const listSelector = `${this.worksWrapSelector} .${this.listClass}`\n const lists = document.querySelectorAll(\n listSelector\n ) as NodeListOf\n for (const li of lists) {\n if (li.dataset.id && idList.includes(li.dataset.id)) {\n li.style.display = 'none'\n // li.remove()\n // 推测隐藏元素可以更快的重绘好页面,因为删除元素修改了 dom 结构,花的时间可能会多一些\n }\n }\n }\n\n // 筛选抓取结果。传入函数,过滤符合条件的结果\n // 在抓取完成之后,所有会从结果合集中删除某些结果的操作都要经过这里\n private async filterResult(callback: FilterCB) {\n if (this.resultMeta.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n const beforeLength = this.resultMeta.length // 储存过滤前的结果数量\n const resultMetaTemp: Result[] = []\n const resultMetaRemoved: Result[] = []\n\n for (const meta of this.resultMeta) {\n if (await callback(meta)) {\n resultMetaTemp.push(meta)\n } else {\n resultMetaRemoved.push(meta)\n }\n }\n\n this.resultMeta = resultMetaTemp\n\n // 如果过滤后,作品元数据发生了改变则重排作品\n if (this.resultMeta.length !== beforeLength) {\n let ids: string[] = []\n for (const result of resultMetaRemoved) {\n ids.push(result.idNum.toString())\n }\n this.removeWorks(ids)\n this.reAddResult()\n }\n\n EVT.fire('resultChange')\n }\n\n // 重新添加抓取结果,执行时机:\n // 1 作品抓取完毕之后,添加抓取到的数据\n // 2 使用“在结果中筛选”或删除作品,使得作品数据变化了,改变作品列表视图\n // 3 修改了“多图下载设置”,导致作品数据变化\n private reAddResult() {\n store.reset()\n\n // store.addResult 会触发 addResult 事件,让本模块生成对应作品的预览,并显示作品数量\n for (let data of this.resultMeta) {\n store.addResult(data)\n }\n\n // showCount 依赖 addResult 事件,但如果清空了所有结果,则不会触发 addResult 事件,所以需要手动调用它\n if (this.resultMeta.length === 0) {\n this.showCount()\n }\n }\n\n // 在当前结果中再次筛选,会修改第一次筛选的结果\n private screenInResult() {\n if (states.busy) {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n this.getMultipleSetting()\n\n this.filterResult((data) => {\n const filterOpt: FilterOption = {\n aiType: data.aiType,\n id: data.id,\n workType: data.type,\n pageCount: data.pageCount,\n tags: data.tags,\n bookmarkCount: data.bmk,\n bookmarkData: data.bookmarked,\n width: data.pageCount === 1 ? data.fullWidth : 0,\n height: data.pageCount === 1 ? data.fullHeight : 0,\n createDate: data.date,\n userId: data.userId,\n xRestrict: data.xRestrict,\n }\n\n return filter.check(filterOpt)\n })\n }\n\n // 清除多图作品\n private clearMultiple = () => {\n this.filterResult((data) => {\n return data.pageCount <= 1\n })\n }\n\n // 清除动图作品\n private clearUgoira = () => {\n this.filterResult((data) => {\n return !data.ugoiraInfo\n })\n }\n\n // 手动删除作品\n private deleteWork = (event: CustomEventInit) => {\n const el = event.detail.data as HTMLElement\n this.deleteId = parseInt(el.dataset.id!)\n\n this.filterResult((data) => {\n return data.idNum !== this.deleteId\n })\n }\n\n private addBookmark = async (event: CustomEventInit) => {\n const data = event.detail.data as AddBMKData\n\n for (const r of store.result) {\n if (r.idNum === data.id) {\n const res = await bookmark.add(data.id.toString(), 'illusts', data.tags)\n if (res === 200) {\n // 同步数据\n r.bookmarked = true\n this.resultMeta.forEach((result) => {\n if (result.idNum === data.id) {\n result.bookmarked = true\n }\n })\n data.el.classList.add(this.bookmarkedClass)\n }\n\n break\n }\n }\n }\n\n // 去除覆盖在热门作品上面的会员购买链接\n private removeBlockOnHotBar() {\n // 需要重复执行,因为这个链接会生成不止一次\n window.setInterval(() => {\n if (pageType.type !== pageType.list.ArtworkSearch) {\n return\n }\n const hotWorksLink = document.querySelector('section a[href^=\"/premium\"]')\n if (hotWorksLink) {\n hotWorksLink.remove()\n }\n }, 300)\n }\n\n private crawlTag = () => {\n if (states.crawlTagList) {\n this.readyCrawl()\n }\n }\n}\n\nexport { InitSearchArtworkPage }\n","// 在搜索页面抓取 tag 列表,抓取完一个 tag 就立即开始下载。下载完毕后再抓取下一个 tag\n// 这是个单例类,为了控制其执行时机,需要手动执行 init 方法来进行一部分初始化\nimport { Tools } from '../Tools'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { msgBox } from '../MsgBox'\nimport { states } from '../store/States'\nimport { toast } from '../Toast'\nimport { EVT } from '../EVT'\nimport { pageType } from '../PageType'\n\nclass CrawlTagList {\n constructor() {}\n\n public init() {\n this.addCrawlBtns()\n this.addElement()\n this.bindEvents()\n this.restoreData()\n }\n\n private bindEventFlag = false\n\n private EnablPage = [pageType.list.ArtworkSearch, pageType.list.NovelSearch]\n\n private _tagList: string[] = []\n\n private get tagList() {\n return this._tagList\n }\n private set tagList(val: string[]) {\n this._tagList = val\n this.storeData()\n this.showTagList()\n this.toggleWrap(true)\n }\n\n private storeName = 'crawlTagList'\n\n private wrap!: HTMLDivElement\n private readonly wrapId = 'crawlTagListInputWrap'\n private input!: HTMLTextAreaElement\n private startCrawlBtn!: HTMLButtonElement\n private clearCrawlBtn!: HTMLButtonElement\n private showTagListWrap!: HTMLUListElement\n\n private addCrawlBtns() {\n Tools.addBtn('crawlBtns', Colors.bgBlue, '_抓取标签列表').addEventListener(\n 'click',\n () => {\n EVT.fire('closeCenterPanel')\n this.toggleWrap(true)\n // 跳转到页面顶部,否则用户可能看不到输入区域\n window.scrollTo(0, 0)\n }\n )\n }\n\n private addElement() {\n const htmlText = `\n

    \n
    \n \n \n
    \n
    \n

    \n
      \n
        \n
    \n `\n\n // 创建输入标签列表的区域。如果页面上已存在该区域,则移除它,重新创建\n const test = document.getElementById(this.wrapId)\n if (test !== null) {\n test.remove()\n }\n\n const wrap = document.createElement('div')\n wrap.id = this.wrapId\n wrap.innerHTML = htmlText\n this.wrap = Tools.insertToHead(wrap)\n lang.register(this.wrap)\n\n this.input = this.wrap.querySelector(\n '#crawlTagListTextArea'\n )! as HTMLTextAreaElement\n this.startCrawlBtn = this.wrap.querySelector(\n '#crawlTagListBtn'\n )! as HTMLButtonElement\n this.clearCrawlBtn = this.wrap.querySelector(\n '#clearTagListBtn'\n )! as HTMLButtonElement\n this.showTagListWrap = this.wrap.querySelector(\n '#showTagList'\n )! as HTMLUListElement\n\n this.startCrawlBtn.addEventListener('click', () => {\n this.checkInput()\n })\n\n this.clearCrawlBtn.addEventListener('click', () => {\n this.clear()\n })\n }\n\n private bindEvents() {\n // 防止事件重复绑定\n if (this.bindEventFlag) {\n return\n }\n this.bindEventFlag = true\n\n window.addEventListener(EVT.list.downloadComplete, this.onDownloadComplete)\n window.addEventListener(EVT.list.crawlEmpty, this.onDownloadComplete)\n // 当页面类型变化时,如果进入到了不支持的页面类型,则隐藏输入区域\n window.addEventListener(EVT.list.pageSwitch, () => {\n if (\n !this.EnablPage.includes(pageType.type) &&\n this._tagList.length === 0\n ) {\n this.toggleWrap(false)\n }\n })\n }\n\n private onDownloadComplete = () => {\n window.setTimeout(() => {\n if (states.crawlTagList) {\n this._tagList.shift()\n this.tagList = this._tagList\n\n if (this._tagList.length === 0) {\n states.crawlTagList = false\n // 输出提示\n this.showTagListWrap.innerHTML = `${lang.transl('_下载完毕')}`\n return\n }\n\n // 继续抓取下一个标签\n this.readyCrawl()\n }\n }, 0)\n }\n\n private checkInput() {\n if (states.busy) {\n return toast.error(lang.transl('_当前任务尚未完成'))\n }\n\n const value = this.input.value.trim()\n if (value === '') {\n return msgBox.error(lang.transl('_没有数据可供使用'))\n }\n\n const array = value.split('\\n').filter((val) => val !== '' && val !== ' ')\n if (array.length === 0) {\n return msgBox.error(lang.transl('_没有数据可供使用'))\n }\n\n this.tagList = array\n this.readyCrawl()\n }\n\n private readyCrawl() {\n if (states.busy) {\n return toast.error(lang.transl('_当前任务尚未完成'))\n }\n\n if (!this.EnablPage.includes(pageType.type)) {\n return msgBox.error(\n lang.transl('_抓取标签列表') +\n '
    ' +\n lang.transl('_只能在搜索页面使用')\n )\n }\n\n states.crawlTagList = true\n const tag = this._tagList[0]\n // 修改 title,便于使用 P_title 建立文件夹\n document.title = tag\n // 修改 url,使用当前抓取的标签替换原本 url 里的标签,便于使用 p_tag 建立文件夹\n const urlTag = Tools.getTagFromURL()\n const newURL = location.href.replace(\n encodeURIComponent(urlTag),\n encodeURIComponent(tag)\n )\n history.pushState({ p_tag: tag }, tag, newURL)\n // 触发抓取事件\n EVT.fire('crawlTag', tag)\n }\n\n // 控制 wrap 的显示,如果不传入参数,则自行切换显示/隐藏状态\n private toggleWrap(flag?: boolean) {\n if (flag !== undefined) {\n this.wrap.style.display = flag ? 'block' : 'none'\n } else {\n const now = this.wrap.style.display\n this.wrap.style.display = now === 'block' ? 'none' : 'block'\n }\n }\n\n private showTagList() {\n const text = this.tagList.map((val) => `
  • ${val}
  • `)\n this.showTagListWrap.innerHTML = text.join('')\n }\n\n private clear() {\n if (this.tagList.length === 0) {\n return\n }\n const confirm = window.confirm(lang.transl('_你确定要停止抓取吗'))\n if (confirm) {\n this.tagList = []\n // states.busy 有可能是因为下载器正在抓取作品,通过刷新页面可以取消抓取。\n if (states.busy) {\n location.reload()\n }\n }\n }\n\n // 每当 tagList 状态变化时,保存 tagList 到本地存储\n private storeData() {\n if (this.tagList.length === 0) {\n return localStorage.removeItem(this.storeName)\n }\n localStorage.setItem(this.storeName, JSON.stringify(this.tagList))\n }\n\n // 启动时从本地存储里读取 tagList 数据\n private restoreData() {\n const str = localStorage.getItem(this.storeName)\n if (!str) {\n return\n }\n const data = JSON.parse(str)\n if (str.length === 0) {\n return\n }\n this.tagList = data\n\n // 在输入框里显示需要抓取的标签列表\n this.input.value = this.tagList.map((val) => val).join('\\n')\n\n // 不会自动开始抓取未完成的标签。这是基于以下考虑:\n // 1. 如果之前有未完成的下载,那么下载器会自动恢复下载。如果此时自动开始抓取,会造成冲突\n // 2. 如果自动开始抓取,那么用户每打开一个新的搜索页面,下载器都会自动开始抓取,影响用户正常使用\n }\n}\n\nconst crawlTagList = new CrawlTagList()\nexport { crawlTagList }\n","// 初始化旧版收藏页面\n// 该页面类型已不复存在,这个类仅做占位之用。\n// 在 PageType 里不能删除 BookmarkLegacy 枚举成员,因为有些代码里硬编码了它的枚举值 3\n// 例如:settings.wantPageArr[pageType.type]\n// settings.nameRuleForEachPageType[pageType.type]\nimport { InitPageBase } from '../crawl/InitPageBase'\n\nclass InitBookmarkLegacyPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n}\nexport { InitBookmarkLegacyPage }\n","// 初始化 关注的用户的新作品页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Utils } from '../utils/Utils'\nimport {\n BookMarkNewIllustData,\n BookMarkNewNovelData,\n} from '../crawl/CrawlResult'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nclass InitBookmarkNewPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected type: 'illust' | 'novel' = 'illust'\n protected tag = ''\n protected r18 = false\n protected newVer = false\n // 这次抓取任务最多可以抓取到多少个作品\n protected crawlWorksMaxNumber = 0\n // 裁剪 API 返回的作品数据时的偏移量\n protected firstOffset = 0\n // 总计抓取了多少个作品(被裁剪掉的不算)\n protected crawledWorksNumber = 0\n // 每当 API 返回数据时,保存第一个作品的 id,用来判断后面的数据是否出现重复\n // 如果数据重复就停止抓取,因为后面的每一页的数据都是完全相同的\n protected firstWorkId = ''\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n this.maxCount = 100\n\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, true)\n }\n\n protected nextStep() {\n this.setSlowCrawl()\n\n this.type = window.location.pathname.includes('/novel') ? 'novel' : 'illust'\n this.tag = Utils.getURLSearchField(window.location.href, 'tag')\n this.r18 = location.pathname.includes('r18')\n this.newVer = !document.querySelector('h1')\n // 根据页数计算最多抓取多少个作品。新版一页 60 个作品,旧版一页 20 个作品\n this.crawlWorksMaxNumber = this.crawlNumber * (this.newVer ? 60 : 20)\n\n // 设置 API 里发起请求的页数\n const p = Utils.getURLSearchField(location.href, 'p')\n const pageNo = parseInt(p) || 1\n if (this.newVer) {\n // 新版页面里,由于 API 返回的就是这一页的作品,所以直接获取地址栏的页码就可以\n this.startpageNo = pageNo\n } else {\n // 旧版页面里,由于 API 一页会返回相当于旧版 3 页的数据,所以不能直接使用地址栏的页码\n // 例如用户在旧版页面的第 5 页开始抓取,实质上是从第 81 个作品开始抓取。所以 API 里要从第 2 页开始抓取(第 61 - 120 个作品),并且设置偏移量为 20\n // API 里开始抓取的页数,向上取整\n this.startpageNo = Math.ceil((pageNo * 20) / 60)\n // 计算 API 返回的 60 个数据里,可以保留多少个\n const howManyLeft = this.startpageNo * 60 - (pageNo - 1) * 20\n // 计算偏移量\n this.firstOffset = 60 - howManyLeft\n }\n\n this.getIdList()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let p = this.startpageNo + this.listPageFinished\n\n let data\n try {\n data = await API.getBookmarkNewWorkData(this.type, p, this.tag, this.r18)\n } catch (error) {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let worksData = data.body.thumbnails[this.type]\n\n // 检查数据,如果数据为空,或者和上一页的数据重复,说明已经不需要继续抓取了\n if (worksData.length === 0 || this.firstWorkId === worksData[0].id) {\n log.log(lang.transl('_列表页抓取完成'))\n return this.getIdListFinished()\n } else {\n // 如果数据没有重复,则保存第一个作品的 id\n this.firstWorkId = worksData[0].id\n }\n\n // 旧版页面可能需要对 API 返回的数据进行裁剪\n if (!this.newVer) {\n // 使用偏移量移除不需要的数据(仅一次)\n if (this.firstOffset > 0) {\n worksData = worksData.slice(this.firstOffset)\n this.firstOffset = 0\n }\n // 计算还有多少个作品需要抓取,然后裁剪数组,避免抓取结果超出预定的数量\n const needCrawl = this.crawlWorksMaxNumber - this.crawledWorksNumber\n if (needCrawl < worksData.length) {\n worksData = worksData.slice(0, needCrawl)\n }\n }\n\n this.crawledWorksNumber += worksData.length\n\n // 过滤作品\n // 过滤插画·漫画\n if (this.type === 'illust') {\n for (const data of worksData) {\n if (data.isAdContainer) {\n continue\n }\n\n const filterOpt: FilterOption = {\n aiType: data.aiType,\n id: data.id,\n width: data.pageCount === 1 ? data.width : 0,\n height: data.pageCount === 1 ? data.height : 0,\n pageCount: data.pageCount,\n bookmarkData: data.bookmarkData,\n workType: data.illustType,\n tags: data.tags,\n userId: data.userId,\n xRestrict: data.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: Tools.getWorkTypeString(data.illustType),\n id: data.id,\n })\n }\n }\n } else {\n // 过滤小说\n for (const data of worksData) {\n const filterOpt: FilterOption = {\n aiType: data.aiType,\n id: data.id,\n workType: 3,\n tags: data.tags,\n bookmarkCount: data.bookmarkCount,\n bookmarkData: data.bookmarkData,\n userId: data.userId,\n }\n\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: 'novels',\n id: data.id,\n })\n }\n }\n }\n\n this.listPageFinished++\n\n log.log(\n lang.transl('_列表页抓取进度', this.listPageFinished.toString()),\n 1,\n false\n )\n\n // 判断任务状态\n // 如果抓取到了指定数量的作品,或者抓取到了最后一页,或者抓取完了指定的页面数量\n if (\n this.crawledWorksNumber >= this.crawlWorksMaxNumber ||\n p >= this.maxCount ||\n this.listPageFinished === this.crawlNumber\n ) {\n log.log(lang.transl('_列表页抓取完成'))\n this.getIdListFinished()\n } else {\n // 继续抓取\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n this.firstOffset = 0\n this.crawledWorksNumber = 0\n this.firstWorkId = ''\n }\n}\nexport { InitBookmarkNewPage }\n","// 初始化新版收藏页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { API } from '../API'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { IDData } from '../store/StoreType'\nimport { options } from '../setting/Options'\nimport {\n ArtworkCommonData,\n BookmarkData,\n BookmarkResult,\n} from '../crawl/CrawlResult'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { token } from '../Token'\nimport { BookmarksAddTag } from '../pageFunciton/BookmarksAddTag'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { Utils } from '../utils/Utils'\nimport { Config } from '../Config'\nimport { states } from '../store/States'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport { toast } from '../Toast'\nimport { unBookmarkWorks } from '../UnBookmarkWorks'\nimport { removeWorksTagsInBookmarks } from '../RemoveWorksTagsInBookmarks'\nimport { EVT } from '../EVT'\nimport { WorkBookmarkData, bookmark } from '../Bookmark'\nimport { showHelp } from '../ShowHelp'\nimport { msgBox } from '../MsgBox'\n\nclass InitBookmarkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private idList: IDData[] = [] // 储存从列表页获取到的 id\n\n private bookmarkDataList: WorkBookmarkData[] = []\n\n private exportList: BookmarkResult[] = []\n\n private type: 'illusts' | 'novels' = 'illusts' // 页面是图片还是小说\n\n private isHide = false // 当前页面是否显示的是非公开收藏\n\n private requsetNumber: number = 0 // 根据页数,计算要抓取的作品个数\n\n private filteredNumber = 0 // 记录检查了多少作品(不论结果是否通过都计入)\n\n private readonly onceRequest: number = 100 // 每次请求多少个数量\n\n private offset: number = 0 // 每次请求的偏移量\n\n // 点击不同的功能按钮时,设定抓取模式\n private crawlMode: 'normal' | 'removeTags' | 'unBookmark' | 'unBookmark404' =\n 'normal'\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n protected addAnyElement() {\n // 如果不存在 token,则不添加与收藏相关的按钮\n if (!token.token) {\n return\n }\n\n // 显示提示\n window.setTimeout(() => {\n showHelp.show(\n 'tipBookmarkManage',\n lang.transl('_在收藏页面里提示有辅助功能可用')\n )\n }, 1000)\n\n // 有些功能按钮只能在用户自己的页面里使用\n // 判断这个收藏页面是不是用户自己的页面\n const URLUserID = Utils.getURLPathField(window.location.pathname, 'users')\n const ownPage = URLUserID && URLUserID === store.loggedUserID\n if (ownPage) {\n const btn = Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_给未分类作品添加添加tag'\n )\n new BookmarksAddTag(btn)\n\n Tools.addBtn(\n 'otherBtns',\n Colors.bgYellow,\n '_移除本页面中所有作品的标签'\n ).addEventListener('click', () => {\n this.removeWorksTagsOnThisPage()\n })\n\n Tools.addBtn(\n 'otherBtns',\n Colors.bgRed,\n '_取消收藏本页面的所有作品'\n ).addEventListener('click', () => {\n this.unBookmarkAllWorksOnThisPage()\n })\n\n Tools.addBtn(\n 'otherBtns',\n Colors.bgRed,\n '_取消收藏所有已被删除的作品'\n ).addEventListener('click', () => {\n this.unBookmarkAll404Works()\n })\n }\n\n // 下面的功能按钮在所有人的收藏页面里都可以使用\n\n const showTip = () => {\n showHelp.show(\n 'tipExportAndImportBookmark',\n lang.transl('_同步收藏列表的说明')\n )\n }\n\n const btnExport = Tools.addBtn('otherBtns', Colors.bgGreen, '_导出收藏列表')\n btnExport.addEventListener('click', () => {\n showTip()\n this.exportBookmarkList()\n })\n\n const btnImport = Tools.addBtn('otherBtns', Colors.bgGreen, '_导入收藏列表')\n btnImport.addEventListener('click', () => {\n this.importBookmarkIDList()\n })\n\n for (const btn of [btnExport, btnImport]) {\n btn.addEventListener('mouseover', showTip)\n }\n }\n\n // 移除本页面中所有作品的标签\n private removeWorksTagsOnThisPage() {\n if (states.busy || this.crawlMode !== 'normal') {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n // 走一遍简化的抓取流程\n this.crawlMode = 'removeTags'\n log.warning(lang.transl('_移除本页面中所有作品的标签'))\n log.warning(lang.transl('_它们会变成未分类状态'))\n toast.warning(lang.transl('_移除本页面中所有作品的标签'), {\n position: 'topCenter',\n })\n EVT.fire('closeCenterPanel')\n // 设置抓取页数为 1\n this.crawlNumber = 1\n this.readyGetIdList()\n this.getIdList()\n }\n\n // 取消收藏本页面的所有作品\n private unBookmarkAllWorksOnThisPage() {\n if (states.busy || this.crawlMode !== 'normal') {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n // 走一遍简化的抓取流程\n this.crawlMode = 'unBookmark'\n log.warning(lang.transl('_取消收藏本页面的所有作品'))\n toast.warning(lang.transl('_取消收藏本页面的所有作品'), {\n position: 'topCenter',\n })\n EVT.fire('closeCenterPanel')\n // 设置抓取页数为 1\n this.crawlNumber = 1\n this.readyGetIdList()\n this.getIdList()\n }\n\n private unBookmarkAll404Works() {\n if (states.busy || this.crawlMode !== 'normal') {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n // 走一遍简化的抓取流程\n this.crawlMode = 'unBookmark404'\n log.warning(lang.transl('_取消收藏所有已被删除的作品'))\n toast.warning(lang.transl('_取消收藏所有已被删除的作品'), {\n position: 'topCenter',\n })\n EVT.fire('closeCenterPanel')\n // 设置抓取页数为 -1\n this.crawlNumber = -1\n this.setSlowCrawl()\n this.readyGetIdList()\n // 抓取全部收藏\n this.offset = 0\n this.getIdList()\n }\n\n private bindExportEvent = false\n private exportBookmarkList() {\n if (states.busy || this.crawlMode !== 'normal') {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n states.exportIDList = true\n this.exportList = []\n EVT.fire('closeCenterPanel')\n\n // 走一遍完整的抓取流程\n // 此时的 crawlMode 是 normal\n // 这会应用用户设置的抓取页数和过滤条件\n this.readyCrawl()\n log.log(lang.transl('_导出收藏列表'), 2)\n\n // 绑定事件,在抓取完成后执行导出动作\n if (this.bindExportEvent === false) {\n window.addEventListener(EVT.list.getIdListFinished, async () => {\n if (states.exportIDList) {\n window.setTimeout(() => {\n states.exportIDList = false\n }, 500)\n\n if (this.exportList.length === 0) {\n return\n }\n\n const resultList = await Utils.json2BlobSafe(this.exportList)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `Bookmark list-total ${\n result.total\n }-from ${Tools.getPageTitle()}-${Utils.replaceUnsafeStr(\n new Date().toLocaleString()\n )}.json`\n )\n }\n\n const msg = '✓ ' + lang.transl('_导出收藏列表')\n log.success(msg)\n toast.success(msg)\n }\n })\n\n this.bindExportEvent = true\n }\n }\n\n private async importBookmarkIDList() {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as BookmarkResult[]\n if (!loadedJSON) {\n return\n }\n\n // 要求是数组并且要有内容\n if (!Array.isArray(loadedJSON) || !loadedJSON.length || !loadedJSON[0]) {\n return toast.error(lang.transl('_格式错误'))\n }\n\n // 检查是否含有必须的字段(只检查了一部分)\n const keys = Object.keys(loadedJSON[0])\n const need = ['id', 'type', 'tags']\n for (const field of need) {\n if (!keys.includes(field)) {\n return toast.error(lang.transl('_格式错误'))\n }\n }\n\n const tip = lang.transl('_导入收藏列表')\n toast.success(tip)\n log.success(tip)\n EVT.fire('closeCenterPanel')\n\n log.log(lang.transl('_作品数量') + ` ${loadedJSON.length}`, 2)\n\n // 如果要收藏的作品数量较多,则先加载现有的收藏列表,以避免重复添加收藏,浪费时间\n // 如果要收藏的作品数量较少,则会直接进行收藏,而不先加载现有的收藏列表。\n // 这是因为当已收藏的作品数量较多的话,加载列表所花费的时间可能就已经超过了添加收藏的时间\n // 其实在导出收藏列表时,是可以知道这个作品有没有被【当时登录的用户】收藏的。\n // 但是在导入收藏的时候,用户可能换了另一个账号,此时无法直接知道这个作品是否被这个账号所收藏。\n // 所以要想避免重复添加收藏,还是必须在导入时先获取当前登录账号的收藏列表\n let oldList: BookmarkResult[] = []\n if (loadedJSON.length > 200) {\n log.log(lang.transl('_加载收藏列表'))\n // 注意,这里使用的必须是当前登录用户的 ID\n // 由于用户可能会在其他用户的页面上执行这个功能,所以不能使用 Tools.getUserId()\n const userID = store.loggedUserID\n let loadIllust = loadedJSON.some((item) => item.type === 'illusts')\n let loadNovel = loadedJSON.some((item) => item.type === 'novels')\n if (loadIllust) {\n log.log(lang.transl('_插画') + ', ' + lang.transl('_公开'))\n const illustsPublic = await bookmark.getAllBookmarkList(\n userID,\n 'illusts',\n '',\n 0,\n false\n )\n\n log.log(lang.transl('_插画') + ', ' + lang.transl('_不公开'))\n const illustsPrivate = await bookmark.getAllBookmarkList(\n userID,\n 'illusts',\n '',\n 0,\n true\n )\n\n oldList = oldList.concat(illustsPublic, illustsPrivate)\n }\n if (loadNovel) {\n log.log(lang.transl('_小说') + ', ' + lang.transl('_公开'))\n const novelsPublic = await bookmark.getAllBookmarkList(\n userID,\n 'novels',\n '',\n 0,\n false\n )\n\n log.log(lang.transl('_小说') + ', ' + lang.transl('_不公开'))\n const novelsPrivate = await bookmark.getAllBookmarkList(\n userID,\n 'novels',\n '',\n 0,\n true\n )\n\n oldList = oldList.concat(novelsPublic, novelsPrivate)\n }\n\n log.log(lang.transl('_一共有x个', oldList.length.toString()), 2)\n }\n\n // 开始批量添加收藏\n bookmark.addBookmarksInBatchs(loadedJSON, oldList)\n }\n\n protected nextStep() {\n this.crawlMode = 'normal'\n this.setSlowCrawl()\n this.readyGetIdList()\n this.getIdList()\n }\n\n protected readyGetIdList() {\n if (window.location.pathname.includes('/novel')) {\n this.type = 'novels'\n }\n\n store.tag = Tools.getTagFromURL()\n\n // 每页个作品数,插画 48 个,小说 24 个\n const onceNumber = window.location.pathname.includes('/novels') ? 24 : 48\n\n // 如果前面有页数,就去掉前面页数的作品数量。即:从本页开始下载\n const nowPage = Utils.getURLSearchField(location.href, 'p') // 判断当前处于第几页,页码从 1 开始。也可能没有页码\n if (nowPage) {\n this.offset = (parseInt(nowPage) - 1) * onceNumber\n }\n if (this.offset < 0) {\n this.offset = 0\n }\n\n // 根据页数设置,计算要下载的个数\n if (this.crawlNumber === -1) {\n this.requsetNumber = Config.worksNumberLimit\n } else {\n this.requsetNumber = onceNumber * this.crawlNumber\n }\n\n // 判断是公开收藏还是非公开收藏\n // 在新旧版 url 里,rest 都是在查询字符串里的\n this.isHide = Utils.getURLSearchField(location.href, 'rest') === 'hide'\n\n log.log(lang.transl('_正在抓取'))\n\n if (this.crawlNumber === -1) {\n log.log(lang.transl('_获取全部书签作品'))\n }\n }\n\n // 获取用户的收藏作品列表\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let data: BookmarkData\n try {\n data = await API.getBookmarkData(\n Tools.getUserId(),\n this.type,\n store.tag,\n this.offset,\n this.isHide\n )\n } catch (error) {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n if (\n data.body.works.length === 0 ||\n this.bookmarkDataList.length >= this.requsetNumber ||\n this.idList.length >= this.requsetNumber ||\n this.filteredNumber >= this.requsetNumber\n ) {\n // 书签页获取完毕\n return this.afterGetIdList()\n } else {\n // 没有抓取完毕时,添加数据\n for (const workData of data.body.works) {\n if (this.filteredNumber >= this.requsetNumber) {\n return this.afterGetIdList()\n }\n\n if (workData.bookmarkData) {\n if (\n this.crawlMode === 'unBookmark' ||\n this.crawlMode === 'removeTags' ||\n (this.crawlMode === 'unBookmark404' &&\n Number.parseInt(workData.userId) == 0)\n ) {\n this.bookmarkDataList.push({\n workID: Number.parseInt(workData.id),\n type:\n (workData as ArtworkCommonData).illustType === undefined\n ? 'novels'\n : 'illusts',\n bookmarkID: workData.bookmarkData.id,\n private: workData.bookmarkData.private,\n })\n }\n }\n\n if (this.crawlMode === 'normal') {\n const filterOpt: FilterOption = {\n aiType: workData.aiType,\n id: workData.id,\n tags: workData.tags,\n bookmarkData: workData.bookmarkData,\n createDate: workData.createDate,\n userId: workData.userId,\n xRestrict: workData.xRestrict,\n }\n\n this.filteredNumber++\n\n if (await filter.check(filterOpt)) {\n this.idList.push({\n type:\n (workData as ArtworkCommonData).illustType === undefined\n ? 'novels'\n : Tools.getWorkTypeString(\n (workData as ArtworkCommonData).illustType\n ),\n id: workData.id,\n })\n\n if (states.exportIDList) {\n this.exportList.push({\n id: workData.id,\n type:\n (workData as ArtworkCommonData).illustType === undefined\n ? 'novels'\n : 'illusts',\n tags: workData.tags,\n restrict: workData.bookmarkData?.private || false,\n })\n }\n }\n }\n }\n\n this.offset += this.onceRequest\n\n const length =\n this.crawlMode === 'normal'\n ? this.idList.length\n : this.bookmarkDataList.length\n log.log(lang.transl('_当前作品个数', length.toString()), 1, false)\n\n // 继续抓取\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n }\n\n // 获取作品 id 列表完毕之后\n private afterGetIdList() {\n // 裁剪作品\n if (this.crawlMode === 'normal') {\n // 因为书签页面一次获取 100 个作品,大于一页的数量。所以可能会抓取多了,需要删除多余的作品\n if (this.idList.length > this.requsetNumber) {\n // 删除后面部分(较早收藏的),留下近期收藏的\n this.idList.splice(this.requsetNumber, this.idList.length)\n // 书签页面的 api 没有考虑页面上的排序顺序,获取到的 id 列表始终是按收藏顺序由近期到早期排列的\n }\n\n if (this.exportList.length > this.requsetNumber) {\n this.exportList.splice(this.requsetNumber, this.exportList.length)\n }\n } else {\n if (this.bookmarkDataList.length > this.requsetNumber) {\n this.bookmarkDataList.splice(\n this.requsetNumber,\n this.bookmarkDataList.length\n )\n }\n }\n\n if (this.crawlMode === 'normal') {\n // 正常抓取\n store.idList = store.idList.concat(this.idList)\n this.getIdListFinished()\n } else if (\n this.crawlMode === 'unBookmark' ||\n this.crawlMode === 'unBookmark404'\n ) {\n // 取消收藏\n\n // 导出已被删除的收藏的 ID 列表\n if (\n this.crawlMode === 'unBookmark404' &&\n this.bookmarkDataList.length > 0\n ) {\n const IDList = []\n for (const item of this.bookmarkDataList) {\n IDList.push(item.workID)\n }\n const blob = Utils.json2Blob(IDList)\n const url = URL.createObjectURL(blob)\n Utils.downloadFile(url, '404 bookmark ID list.txt')\n log.log(lang.transl('_已导出被删除的作品的ID列表'))\n }\n\n const bookmarkDataList = Array.from(this.bookmarkDataList)\n this.resetGetIdListStatus()\n unBookmarkWorks.start(bookmarkDataList)\n } else if (this.crawlMode === 'removeTags') {\n // 移除本页面作品的标签\n const bookmarkDataList = Array.from(this.bookmarkDataList)\n this.resetGetIdListStatus()\n removeWorksTagsInBookmarks.start(bookmarkDataList)\n }\n }\n\n protected resetGetIdListStatus() {\n this.type = 'illusts'\n this.crawlMode = 'normal'\n this.idList = []\n this.bookmarkDataList = []\n this.offset = 0\n this.requsetNumber = 0\n this.filteredNumber = 0\n }\n}\n\nexport { InitBookmarkPage }\n","// 初始化关注页面、好 P 友页面、粉丝页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { createCSV } from '../utils/CreateCSV'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport { toast } from '../Toast'\nimport { showHelp } from '../ShowHelp'\nimport { msgBox } from '../MsgBox'\nimport { token } from '../Token'\nimport { EVT } from '../EVT'\n\ninterface UserInfo {\n userId: string\n userName: string\n homePage: string\n userComment: string\n profileImageUrl: string\n}\n\ntype PageType = 0 | 1 | 2\n\nclass InitFollowingPage extends InitPageBase {\n constructor() {\n super()\n this.getPageType()\n this.init()\n }\n\n private baseOffset = 0 // 开始抓取时,记录初始的偏移量\n private readonly onceNumber = 24 // 每页 24 个画师\n\n private pageType: PageType = 0 // 页面子类型\n // 0 我的关注\n // 1 我的好 P 友\n // 2 我的粉丝\n\n private getUserListNo = 0 // 获取用户列表时,记录请求的次数\n private readonly limit = 100 // 每次请求多少个用户\n\n private totalNeed = Number.MAX_SAFE_INTEGER\n private crawlUserID = ''\n private rest: 'show' | 'hide' = 'show'\n private tag = ''\n\n private userList: string[] = []\n\n private index = 0 // getIdList 时,对 userList 的索引\n\n private task: 'crawl' | 'exportCSV' | 'exportJSON' | 'batchFollow' = 'crawl'\n\n private CSVData: UserInfo[] = [] // 储存用户列表,包含 id 和用户名\n\n private importFollowedUserIDs: string[] = []\n\n private readonly homePrefix = 'https://www.pixiv.net/users/' // 用户主页的通用链接前缀\n\n private getPageType() {\n const pathname = window.location.pathname\n if (pathname.includes('/following')) {\n this.pageType = 0\n } else if (pathname.includes('/mypixiv')) {\n this.pageType = 1\n } else if (pathname.includes('/followers')) {\n this.pageType = 2\n }\n }\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_导出关注列表CSV'\n ).addEventListener('click', () => {\n this.task = 'exportCSV'\n this.readyCrawl()\n })\n\n const exportButton = Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_导出关注列表'\n )\n exportButton.addEventListener('click', () => {\n this.task = 'exportJSON'\n this.readyCrawl()\n })\n exportButton.addEventListener('mouseenter', () => {\n showHelp.show(\n 'tipExportFollowingUserList',\n lang.transl('_导入导出关注用户列表的说明')\n )\n })\n\n const batchFollowButton = Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_批量关注用户'\n )\n batchFollowButton.addEventListener('click', async () => {\n if (states.busy) {\n return toast.error(lang.transl('_当前任务尚未完成'))\n }\n\n if (store.loggedUserID === '') {\n return msgBox.error(lang.transl('_作品页状态码401'))\n }\n\n EVT.fire('clearLog')\n\n log.log(lang.transl('_批量关注用户'))\n this.importFollowedUserIDs = await this.importUserList()\n log.log(\n lang.transl('_导入的用户ID数量') + this.importFollowedUserIDs.length\n )\n if (this.importFollowedUserIDs.length === 0) {\n return log.success(lang.transl('_本次任务已全部完成'))\n }\n\n this.stopAddFollow = false\n this.sendReqNumber = 0\n\n // 导入关注列表后,需要获取关注的所有用户列表,以便在添加关注时跳过已关注的,节约时间\n this.task = 'batchFollow'\n\n states.slowCrawlMode = true\n states.stopCrawl = false\n\n EVT.fire('crawlStart')\n\n // 批量添加关注时,获取所有关注的用户\n this.crawlNumber = -1\n // 把页面类型设置为 0,始终获取关注的用户列表\n this.pageType = 0\n\n log.log(lang.transl('_正在加载关注用户列表'))\n this.readyGet()\n\n // 始终抓取自己的关注列表,而非别人的,因为添加关注时,需要和自己的关注列表进行对比\n this.crawlUserID = store.loggedUserID\n\n this.getUserList()\n })\n batchFollowButton.addEventListener('mouseenter', () => {\n showHelp.show(\n 'tipExportFollowingUserList',\n lang.transl('_导入导出关注用户列表的说明')\n )\n })\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n protected nextStep() {\n this.setSlowCrawl()\n this.readyGet()\n log.log(lang.transl('_正在抓取'))\n this.getPageType()\n this.getUserList()\n }\n\n protected readyGet() {\n this.rest = location.href.includes('rest=hide') ? 'hide' : 'show'\n this.tag = Utils.getURLPathField(window.location.pathname, 'following')\n\n // 获取抓取开始时的页码\n const nowPage = Utils.getURLSearchField(location.href, 'p')\n // 计算开始抓取时的偏移量\n if (nowPage !== '') {\n this.baseOffset = (parseInt(nowPage) - 1) * this.onceNumber\n } else {\n this.baseOffset = 0\n }\n\n // 要抓取多少个用户\n this.totalNeed = Number.MAX_SAFE_INTEGER\n if (this.crawlNumber !== -1) {\n this.totalNeed = this.onceNumber * this.crawlNumber\n }\n\n // 获取当前页面的用户 id\n const test = /users\\/(\\d*)\\//.exec(location.href)\n if (test && test.length > 1) {\n this.crawlUserID = test[1]\n } else {\n const msg = `Get the user's own id failed`\n log.error(msg, 2)\n throw new Error(msg)\n }\n }\n\n // 获取用户列表\n private async getUserList() {\n if (states.stopCrawl) {\n return this.getUserListComplete()\n }\n\n const offset = this.baseOffset + this.getUserListNo * this.limit\n\n let res\n try {\n switch (this.pageType) {\n case 0:\n res = await API.getFollowingList(\n this.crawlUserID,\n this.rest,\n this.tag,\n offset\n )\n break\n case 1:\n res = await API.getMyPixivList(this.crawlUserID, offset)\n break\n case 2:\n res = await API.getFollowersList(this.crawlUserID, offset)\n break\n }\n } catch {\n this.getUserList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getUserListComplete()\n }\n\n const users = res.body.users\n\n if (users.length === 0) {\n // 用户列表抓取完毕\n return this.getUserListComplete()\n }\n\n for (const userData of users) {\n this.userList.push(userData.userId)\n\n if (this.task === 'exportCSV') {\n this.CSVData.push({\n userId: userData.userId,\n userName: userData.userName,\n homePage: this.homePrefix + userData.userId,\n userComment: userData.userComment,\n profileImageUrl: userData.profileImageUrl,\n })\n }\n\n if (this.userList.length >= this.totalNeed) {\n // 抓取到了指定数量的用户\n return this.getUserListComplete()\n }\n }\n\n log.log(\n lang.transl('_当前有x个用户', this.userList.length.toString()),\n 1,\n false\n )\n\n this.getUserListNo++\n this.getUserList()\n }\n\n private async getUserListComplete() {\n log.log(lang.transl('_当前有x个用户', this.userList.length.toString()))\n\n // 在批量关注用户时,抓取结果为 0 并不影响继续执行\n if (this.userList.length === 0 && this.task !== 'batchFollow') {\n return this.getIdListFinished()\n }\n\n if (this.task === 'exportCSV') {\n this.exportCSV()\n const msg = '✓ ' + lang.transl('_导出关注列表CSV')\n log.success(msg)\n toast.success(msg)\n\n this.stopCrawl()\n return\n }\n\n if (this.task === 'exportJSON') {\n this.exportJSON()\n const msg = '✓ ' + lang.transl('_导出关注列表')\n log.success(msg)\n toast.success(msg)\n\n this.stopCrawl()\n return\n }\n\n if (this.task === 'batchFollow') {\n await this.batchFollow()\n this.stopCrawl()\n return\n }\n\n this.getIdList()\n }\n\n private stopCrawl() {\n states.slowCrawlMode = false\n states.busy = false\n\n this.resetGetIdListStatus()\n\n EVT.fire('stopCrawl')\n }\n\n private exportCSV() {\n // 添加用户信息\n const data: string[][] = this.CSVData.map((item) => {\n return Object.values(item)\n })\n\n // 添加用户信息的标题字段\n data.unshift(Object.keys(this.CSVData[0]))\n\n const csv = createCSV.create(data)\n const csvURL = URL.createObjectURL(csv)\n\n const csvName = Tools.getPageTitle()\n\n Utils.downloadFile(csvURL, Utils.replaceUnsafeStr(csvName) + '.csv')\n }\n\n private exportJSON() {\n const blob = Utils.json2Blob(this.userList)\n const url = URL.createObjectURL(blob)\n Utils.downloadFile(\n url,\n `following list-toal ${\n this.userList.length\n }-from user ${Utils.getURLPathField(\n window.location.pathname,\n 'users'\n )}-${Utils.replaceUnsafeStr(new Date().toLocaleString())}.json`\n )\n URL.revokeObjectURL(url)\n }\n\n private async importUserList(): Promise {\n return new Promise(async (resolve) => {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as string[]\n if (!loadedJSON) {\n return resolve([])\n }\n\n // 要求是数组并且为 string[]\n if (\n !Array.isArray(loadedJSON) ||\n loadedJSON.length === 0 ||\n typeof loadedJSON[0] !== 'string'\n ) {\n toast.error(lang.transl('_格式错误'))\n return resolve([])\n }\n\n return resolve(loadedJSON)\n })\n }\n\n private stopAddFollow = false\n private sendReqNumber = 0\n private readonly dailyLimit = 1000 // 每天限制关注的数量,以免被封号\n private tokenHasUpdated = false\n private need_recaptcha_enterprise_score_token = false\n\n private logProgress(current: number, total: number, newAdded: number) {\n log.log(\n `${current} / ${total}, ${lang.transl('_新增x个', newAdded.toString())}`,\n 1,\n false\n )\n }\n\n private async batchFollow(): Promise {\n return new Promise(async (resolve, reject) => {\n const taskName = lang\n .transl('_批量关注用户')\n .replace('(JSON)', '')\n .replace('(JSON)', '')\n log.success(taskName)\n log.warning(lang.transl('_慢速执行以避免引起429错误'))\n log.warning(lang.transl('_提示可以重新执行批量关注任务'))\n\n let followed = 0\n let number = 0\n const total = this.importFollowedUserIDs.length\n\n for (const userID of this.importFollowedUserIDs) {\n this.logProgress(number, total, this.sendReqNumber)\n\n if (this.stopAddFollow) {\n const msg = lang.transl('_任务已中止')\n log.error(msg)\n msgBox.error(msg)\n return resolve()\n }\n\n if (this.sendReqNumber >= this.dailyLimit) {\n this.stopAddFollow = true\n const msg = lang.transl(\n '_新增的关注用户达到每日限制',\n this.dailyLimit.toString()\n )\n log.error(msg)\n msgBox.error(msg)\n return resolve()\n }\n\n number++\n if (this.userList.includes(userID) === false) {\n this.sendReqNumber++\n await this.addFollow(userID)\n } else {\n followed++\n }\n }\n\n this.logProgress(number, total, this.sendReqNumber)\n log.success('✓ ' + taskName)\n msgBox.success('✓ ' + taskName)\n return resolve()\n })\n }\n\n private clearIframe(iframe: HTMLIFrameElement) {\n iframe.src = 'about:blank'\n iframe.remove()\n iframe = null as any\n console.log('清理iframe')\n\n // 下载器每生成一个 iframe,Pixiv 的脚本也会创建一个 iframe,一并清除\n const allIframe = document.querySelectorAll(\n 'body>iframe'\n ) as NodeListOf\n for (const frame of allIframe) {\n if (frame?.src.includes('criteo.com')) {\n frame.remove()\n }\n }\n }\n\n private async addFollow(userID: string): Promise {\n return new Promise(async (resolve) => {\n // 需要携带 need_recaptcha_enterprise_score_token 时,用 iframe 加载网页然后点击关注按钮\n if (this.need_recaptcha_enterprise_score_token) {\n const iframe = await this.clickFollowButton(userID)\n this.clearIframe(iframe)\n\n return resolve(200)\n }\n\n // 不需要携带 need_recaptcha_enterprise_score_token 时可以直接添加关注\n const status = await API.addFollowingUser(userID, token.token)\n if (status !== 200) {\n const errorMsg = `Error: ${Tools.createUserLink(\n userID\n )} Status: ${status}`\n if (status === 404) {\n // 404 可能的原因:\n // 1. token 无效\n // 2. 该用户不存在\n if (this.tokenHasUpdated === true) {\n log.error(errorMsg)\n } else {\n // 404 时尝试重新获取 token,然后重试请求(仅执行一次)\n this.tokenHasUpdated = true\n await token.reset()\n await API.addFollowingUser(userID, token.token)\n }\n } else if (status === 400) {\n // 400 是需要传递 recaptcha_enterprise_score_token 的时候,它的值为空或错误\n // 此时发出一次错误提醒,并重试添加关注\n this.need_recaptcha_enterprise_score_token = true\n log.warning(lang.transl('_模拟用户点击'))\n const iframe = await this.clickFollowButton(userID)\n this.clearIframe(iframe)\n\n return resolve(200)\n } else if (status === 403) {\n // 403 是访问权限已经被限制\n log.error(errorMsg)\n const msg = lang.transl('_你的账号已经被Pixiv限制')\n log.error(msg)\n msgBox.error(msg)\n this.stopAddFollow = true\n return resolve(status)\n } else {\n // 其他错误\n log.error(errorMsg)\n }\n }\n\n // 慢速执行\n // 关注用户的 API 也会触发 429 错误,此时获取作品数据的话会返回 429,\n // 但是关注用户的 API 依然返回 200,并且返回值也正常,但实际上关注用户的操作失败了。无法判断到底有没有关注成功\n // 所以需要限制添加的速度。我用 1400ms 依然会触发 429,所以需要使用更大的时间间隔,以确保不会触发 429\n setTimeoutWorker.set(\n () => {\n return resolve(status)\n },\n Tools.rangeRandom(2500, 3600)\n )\n })\n }\n\n private fun(\n userID: string,\n iframe: HTMLIFrameElement\n ): Promise {\n return new Promise(async (resolve) => {\n // 等待一段时间,默认操作完成。但是如果此时一些请求尚未完成,可能会被取消。所以这个时间最好稍大一点\n setTimeoutWorker.set(\n () => {\n return resolve(iframe)\n },\n Tools.rangeRandom(2500, 3600)\n )\n\n const button = iframe.contentDocument?.querySelector(\n 'button[data-click-label]'\n ) as HTMLButtonElement | null\n if (button) {\n button.click()\n console.log(userID + ' click')\n } else {\n const msg = lang.transl(\n '_没有找到关注按钮的提示',\n Tools.createUserLink(userID)\n )\n log.error(msg)\n\n return resolve(iframe)\n }\n })\n }\n\n private async clickFollowButton(userID: string): Promise {\n return new Promise(async (resolve, reject) => {\n const url = `https://www.pixiv.net/${\n lang.htmlLangType === 'en' ? 'en/' : ''\n }users/${userID}`\n const res = await fetch(url)\n // const text = await res.text()\n const iframe = document.createElement('iframe')\n iframe.style.display = 'none'\n document.body.append(iframe)\n // iframe.srcdoc = text\n iframe.src = url\n\n // 在一定时间后,强制执行回调,不管 iframe.onload 的状态。\n // 因为有时一些广告脚本可能会加载失败,导致很久才能进入 onload。那样会等待太久。\n setTimeoutWorker.set(\n async () => {\n const _iframe = await this.fun(userID, iframe)\n return resolve(_iframe)\n },\n Tools.rangeRandom(2500, 3600)\n )\n })\n }\n\n // 获取用户的 id 列表\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let idList = []\n try {\n idList = await API.getUserWorksByType(this.userList[this.index])\n } catch {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n store.idList = store.idList.concat(idList)\n\n this.index++\n\n log.log(\n `${lang.transl('_已抓取x个用户', this.index.toString())}, ${lang.transl(\n '_当前作品个数',\n store.idList.length.toString()\n )}`,\n 1,\n false\n )\n\n if (this.index >= this.userList.length) {\n return this.getIdListFinished()\n }\n\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.userList = []\n this.task = 'crawl'\n this.CSVData = []\n this.importFollowedUserIDs = []\n this.getUserListNo = 0\n this.index = 0\n }\n\n protected sortResult() {\n // 把作品数据按 id 倒序排列,id 大的在前面,这样可以先下载最新作品,后下载早期作品\n store.result.sort(Utils.sortByProperty('id'))\n }\n}\nexport { InitFollowingPage }\n","// 初始化首页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { IDData } from '../store/StoreType'\nimport { Config } from '../Config'\nimport { toast } from '../Toast'\nimport { theme } from '../Theme'\nimport { Utils } from '../utils/Utils'\nimport { msgBox } from '../MsgBox'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { states } from '../store/States'\nimport { settings } from '../setting/Settings'\nimport { Input } from '../Input'\n\nclass InitHomePage extends InitPageBase {\n constructor() {\n super()\n this.init()\n this.checkPageType()\n this.idRangeTip = this.createidRangeTip()\n }\n\n private downIdButton: HTMLButtonElement = document.createElement('button')\n private importIDListButton: HTMLButtonElement =\n document.createElement('button')\n private idRangeTip: HTMLDivElement\n\n private type: 'novels' | 'illusts' = 'illusts'\n private checkPageType() {\n this.type = window.location.pathname.includes('novel')\n ? 'novels'\n : 'illusts'\n }\n\n protected addCrawlBtns() {\n this.downIdButton = Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_输入id进行抓取'\n )\n this.downIdButton.addEventListener('click', () => {\n this.inputIDList()\n })\n\n const crawlIdRange = Tools.addBtn('crawlBtns', Colors.bgBlue, '_抓取id区间')\n crawlIdRange.addEventListener('click', () => {\n this.crawlIdRange()\n })\n\n this.importIDListButton = Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_导入ID列表'\n )\n this.importIDListButton.addEventListener('click', () => {\n this.importIDList()\n })\n }\n\n protected addAnyElement() {\n Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_清空已保存的抓取结果'\n ).addEventListener('click', () => {\n EVT.fire('clearSavedCrawl')\n })\n }\n\n protected setFormOption() {\n options.hideOption([1])\n }\n\n // 单独添加一个用于提示 id 范围的元素,因为上面的日志显示在日志区域的顶端,不便于查看\n private createidRangeTip(): HTMLDivElement {\n const div = document.createElement('div')\n div.classList.add('id_range_tip', 'beautify_scrollbar', 'logWrap')\n theme.register(div)\n return document.body.insertAdjacentElement(\n 'beforebegin',\n div\n )! as HTMLDivElement\n }\n\n private async inputIDList() {\n EVT.fire('closeCenterPanel')\n this.checkPageType()\n\n const input = new Input({\n width: 400,\n type: 'textarea',\n rows: 10,\n instruction:\n lang.transl('_输入id进行抓取的提示文字') +\n '

    ' +\n lang.transl(\n this.type === 'illusts'\n ? '_输入的ID视为图像ID'\n : '_输入的ID视为小说ID'\n ),\n placeholder: '10000\\n10001\\n10002\\n10003',\n })\n\n const value = await input.submit()\n if (!value) {\n return toast.warning(lang.transl('_本次操作已取消'))\n }\n\n // 不必去重,因为 store 存储抓取结果时会去重\n const array = value.split('\\n')\n const result: string[] = []\n for (const str of array) {\n const id = parseInt(str)\n if (isNaN(id) || id < 22 || id > Config.worksNumberLimit) {\n console.log(lang.transl('_id不合法') + ': ' + str)\n } else {\n result.push(id.toString())\n }\n }\n\n this.addIdList(result)\n }\n\n private async crawlIdRange() {\n EVT.fire('closeCenterPanel')\n this.checkPageType()\n\n let start = 0\n let end = 0\n\n // 接收起点\n const startInput = new Input({\n width: 400,\n instruction:\n lang.transl('_抓取id区间说明') +\n '

    ' +\n lang.transl(\n this.type === 'illusts'\n ? '_输入的ID视为图像ID'\n : '_输入的ID视为小说ID'\n ) +\n '

    ' +\n lang.transl('_抓取id区间起点'),\n placeholder: '100',\n })\n\n const startValue = await startInput.submit()\n if (startValue) {\n const num = Number.parseInt(startValue)\n if (!isNaN(num) && num >= 0) {\n start = num\n } else {\n return toast.error(lang.transl('_参数不合法本次操作已取消'))\n }\n } else {\n return toast.warning(lang.transl('_本次操作已取消'))\n }\n\n // 接收终点\n const endInput = new Input({\n width: 400,\n instruction: lang.transl('_抓取id区间终点'),\n placeholder: '200',\n })\n\n const endValue = await endInput.submit()\n if (endValue) {\n const num = Number.parseInt(endValue)\n if (!isNaN(num) && num >= start) {\n end = num\n } else {\n return toast.error(lang.transl('_参数不合法本次操作已取消'))\n }\n } else {\n return toast.warning(lang.transl('_本次操作已取消'))\n }\n\n // 提示抓取范围,便于用户分批次抓取的时候查看\n const tip = lang.transl('_抓取id区间') + `: ${start} - ${end}`\n this.idRangeTip.textContent = tip\n this.idRangeTip.style.display = 'block'\n // 不要在这里使用 log.log ,因为之后开始抓取时,日志区域会被清空,所以用户在日志区域里看不到这个提示\n\n // 生成 id 列表\n const ids: string[] = []\n while (start <= end) {\n ids.push(start.toString())\n start++\n }\n\n this.addIdList(ids)\n }\n\n // 把 id 列表添加到 store 里,然后开始抓取\n private addIdList(ids: string[]) {\n const idList: IDData[] = []\n for (const id of ids) {\n idList.push({\n type: this.type,\n id: id,\n })\n }\n\n EVT.fire('crawlIdList', idList)\n }\n\n private async importIDList() {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as IDData[]\n if (!loadedJSON) {\n return\n }\n\n // 要求是数组并且要有内容\n if (!Array.isArray(loadedJSON) || !loadedJSON.length || !loadedJSON[0]) {\n return toast.error(lang.transl('_格式错误'))\n }\n\n // 检查是否含有必须的字段(只检查了一部分)\n const keys = Object.keys(loadedJSON[0])\n const need = ['id', 'type']\n for (const field of need) {\n if (!keys.includes(field)) {\n return toast.error(lang.transl('_格式错误'))\n }\n }\n\n log.success('✓ ' + lang.transl('_导入ID列表'))\n\n store.reset()\n\n store.idList = loadedJSON\n\n this.crawlImportIDList()\n }\n\n protected crawlImportIDList() {\n log.log(lang.transl('_当前作品个数', store.idList.length.toString()))\n log.log(lang.transl('_开始获取作品信息'))\n\n if (Tools.checkUserLogin() === false) {\n // 如果未登录账号,则全速抓取\n states.slowCrawlMode = false\n\n if (store.idList.length <= this.ajaxThreadsDefault) {\n this.ajaxThread = store.idList.length\n } else {\n this.ajaxThread = this.ajaxThreadsDefault\n }\n } else {\n // 登录账号后,可以使用慢速抓取\n if (\n settings.slowCrawl &&\n store.idList.length > settings.slowCrawlOnWorksNumber\n ) {\n log.warning(lang.transl('_慢速抓取'))\n states.slowCrawlMode = true\n this.ajaxThread = 1\n }\n }\n\n for (let i = 0; i < this.ajaxThread; i++) {\n this.getWorksData()\n }\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n}\n\nexport { InitHomePage }\n","//初始化 Unlisted 作品页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { options } from '../setting/Options'\nimport { Tools } from '../Tools'\nimport { Utils } from '../utils/Utils'\nimport { IDData } from '../store/StoreType'\nimport { store } from '../store/Store'\n\nclass InitUnlistedPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected addCrawlBtns() {\n Tools.addBtn('crawlBtns', Colors.bgBlue, '_抓取此作品').addEventListener(\n 'click',\n () => {\n this.readyCrawl()\n }\n )\n }\n\n protected setFormOption() {\n options.hideOption([1])\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n\n protected nextStep() {\n this.getIdList()\n }\n\n protected getIdList() {\n const workId = Utils.getURLPathField(window.location.pathname, 'unlisted')\n const isNovel = window.location.href.includes('/novel')\n const idData: IDData = {\n type: isNovel ? 'novels' : 'illusts',\n id: workId,\n }\n store.idList = [idData]\n\n this.getIdListFinished()\n }\n}\n\nexport { InitUnlistedPage }\n","// 初始化用户页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { EVT } from '../EVT'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { userWorksType, tagPageFlag } from '../crawl/CrawlArgument'\nimport { UserImageWorksWithTag, UserNovelsWithTag } from '../crawl/CrawlResult'\nimport { WorkTypeString } from '../store/StoreType'\nimport { states } from '../store/States'\nimport '../pageFunciton/SaveAvatarIcon'\nimport '../pageFunciton/SaveAvatarImage'\nimport '../pageFunciton/SaveUserCover'\nimport { BookmarkAllWorks, IDList } from '../pageFunciton/BookmarkAllWorks'\nimport { Utils } from '../utils/Utils'\nimport { Config } from '../Config'\n\nenum ListType {\n UserHome,\n Artworks,\n Illustrations,\n Manga,\n Novels,\n}\n\nclass InitUserPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private listType: ListType = ListType.UserHome // 当前页面应该获取哪些类型的作品\n\n private onceNumber = 48 // 每页作品个数,插画是 48 个,小说是 24 个\n\n private bookmarkAll = new BookmarkAllWorks()\n\n // 添加中间按钮\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected addAnyElement() {\n Tools.addBtn('otherBtns', Colors.bgGreen, '_保存用户头像').addEventListener(\n 'click',\n () => {\n EVT.fire('saveAvatarImage')\n }\n )\n\n Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_保存用户头像为图标',\n '_保存用户头像为图标说明'\n ).addEventListener('click', () => {\n EVT.fire('saveAvatarIcon')\n })\n\n Tools.addBtn('otherBtns', Colors.bgGreen, '_保存用户封面').addEventListener(\n 'click',\n () => {\n EVT.fire('saveUserCover')\n }\n )\n\n // 添加收藏本页所有作品的功能\n const bookmarkAllBtn = Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_收藏本页面的所有作品'\n )\n this.bookmarkAll = new BookmarkAllWorks(bookmarkAllBtn)\n\n bookmarkAllBtn.addEventListener('click', async () => {\n // 获取该用户的所有作品的 id 列表\n // 模拟了抓取流程,以获取相同的 id 列表\n EVT.fire('bookmarkModeStart')\n store.tag = Tools.getTagFromURL()\n this.crawlNumber = 1 // 设置为只抓取 1 页\n this.readyGetIdList()\n })\n\n window.addEventListener(EVT.list.getIdListFinished, this.sendBookmarkIdList)\n }\n\n private sendBookmarkIdList = () => {\n if (states.bookmarkMode) {\n // 将 id 的 type 设置为 illusts 或 novels\n const list: IDList[] = []\n for (const data of store.idList) {\n if (data.type === 'novels') {\n list.push(data as IDList)\n } else {\n list.push({\n type: 'illusts',\n id: data.id,\n })\n }\n }\n\n store.idList = [] // 清空这次抓取到的 id 列表\n this.bookmarkAll.sendIdList(list)\n }\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n protected nextStep() {\n this.readyGetIdList()\n\n log.log(lang.transl('_正在抓取'))\n }\n\n protected readyGetIdList() {\n // 判断页面类型\n // 匹配 pathname 里用户 id 之后的字符\n const test = location.pathname.match(/\\/users\\/\\d+(\\/.+)/)\n if (test === null) {\n // 用户主页\n this.listType = ListType.UserHome\n } else if (test.length === 2) {\n const str = test[1] //取出用户 id 之后的字符\n if (str.includes('/artworks')) {\n // 插画和漫画列表\n this.listType = ListType.Artworks\n } else if (str.includes('/illustrations')) {\n // 插画列表\n this.listType = ListType.Illustrations\n } else if (str.includes('/manga')) {\n // 漫画列表\n this.listType = ListType.Manga\n } else if (str.includes('/novels')) {\n // 小说列表\n this.listType = ListType.Novels\n this.onceNumber = 24 // 如果是在小说列表页,一页只有 24 个作品\n }\n }\n\n store.tag ? this.getIdListByTag() : this.getIdList()\n }\n\n private getOffset() {\n const nowPage = Utils.getURLSearchField(location.href, 'p') // 判断当前处于第几页,页码从 1 开始。也可能没有页码\n let offset: number = 0\n if (nowPage) {\n offset = (parseInt(nowPage) - 1) * this.onceNumber\n }\n if (offset < 0) {\n offset = 0\n }\n\n return offset\n }\n\n // 根据页数设置,计算要下载的个数\n private getRequsetNumber() {\n let requsetNumber = Config.worksNumberLimit\n if (this.crawlNumber !== -1) {\n requsetNumber = this.onceNumber * this.crawlNumber\n }\n return requsetNumber\n }\n\n // 获取用户某些类型的作品的 id 列表\n protected async getIdList() {\n let type: userWorksType[] = []\n\n switch (this.listType) {\n case ListType.UserHome:\n type = ['illusts', 'manga', 'novels']\n break\n case ListType.Artworks:\n type = ['illusts', 'manga']\n break\n case ListType.Illustrations:\n type = ['illusts']\n break\n case ListType.Manga:\n type = ['manga']\n break\n case ListType.Novels:\n type = ['novels']\n break\n }\n\n let idList = await API.getUserWorksByType(Tools.getUserId(), type)\n\n // 判断是否全都是小说,如果是,把每页的作品个数设置为 24 个\n const allWorkIsNovels = idList.every((data) => {\n return data.type === 'novels'\n })\n allWorkIsNovels && (this.onceNumber = 24)\n\n // 计算偏移量和需要保留的作品个数\n const offset = this.getOffset()\n const requsetNumber = this.getRequsetNumber()\n\n // 按照 id 升序排列,之后会删除不需要的部分\n idList.sort(Utils.sortByProperty('id')).reverse()\n\n // 不带 tag 获取作品时,由于 API 是一次性返回用户的所有作品,可能大于要求的数量,所以需要去掉多余的作品。\n // 删除 offset 需要去掉的部分。删除后面的 id,也就是近期作品\n idList.splice(idList.length - offset, idList.length)\n\n // 删除超过 requsetNumber 的作品。删除前面的 id,也就是早期作品\n if (idList.length > requsetNumber) {\n idList.splice(0, idList.length - requsetNumber)\n }\n\n // 储存\n store.idList = store.idList.concat(idList)\n\n this.getIdListFinished()\n }\n\n // 获取用户某些类型的作品的 id 列表(附带 tag)\n private async getIdListByTag() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n // 这里不用判断用户主页的情况,因为用户主页不会带 tag\n let type: tagPageFlag = 'illustmanga'\n switch (this.listType) {\n case ListType.Artworks:\n type = 'illustmanga'\n break\n case ListType.Illustrations:\n type = 'illusts'\n break\n case ListType.Manga:\n type = 'manga'\n break\n case ListType.Novels:\n type = 'novels'\n break\n }\n\n // 计算初始偏移量\n let offset = this.getOffset()\n // 计算需要获取多少个作品\n const requsetNumber = this.getRequsetNumber()\n\n // 循环请求作品,一次请求一页。假设用户的标签页面最大页数不会超过这个数字\n const maxRequest = 1000\n for (const iterator of new Array(maxRequest)) {\n let data = await API.getUserWorksByTypeWithTag(\n Tools.getUserId(),\n type,\n store.tag,\n offset,\n this.onceNumber\n )\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n // 图片和小说返回的数据是不同的,小说没有 illustType 标记\n if (this.listType === ListType.Novels) {\n const d = data as UserNovelsWithTag\n d.body.works.forEach((data) =>\n store.idList.push({\n type: 'novels',\n id: data.id,\n })\n )\n } else {\n const d = data as UserImageWorksWithTag\n d.body.works.forEach((data) => {\n let type: WorkTypeString = 'illusts'\n switch (data.illustType) {\n case 0:\n type = 'illusts'\n break\n case 1:\n type = 'manga'\n break\n case 2:\n type = 'ugoira'\n break\n }\n store.idList.push({\n type,\n id: data.id,\n })\n })\n }\n\n offset += data.body.works.length\n\n // 如果已经抓取到了预定的数量\n // 或者 API 返回的作品数量不足一页的数量,则认为抓取完毕\n if (\n store.idList.length >= requsetNumber ||\n data.body.works.length < this.onceNumber\n ) {\n return this.getIdListFinished()\n }\n }\n }\n\n protected resetGetIdListStatus() {\n this.listType = ListType.UserHome\n }\n\n protected sortResult() {\n // 把作品数据按 id 倒序排列,id 大的在前面,这样可以先下载最新作品,后下载早期作品\n store.result.sort(Utils.sortByProperty('id'))\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n\n window.removeEventListener(\n EVT.list.getIdListFinished,\n this.sendBookmarkIdList\n )\n }\n}\nexport { InitUserPage }\n","import { Colors } from '../Colors'\nimport { Config } from '../Config'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { pageType } from '../PageType'\nimport { showHelp } from '../ShowHelp'\nimport { states } from '../store/States'\nimport { IDData } from '../store/StoreType'\nimport { toast } from '../Toast'\nimport { Tools } from '../Tools'\n\n// 快速抓取\nclass QuickCrawl {\n constructor() {\n this.addBtn()\n this.setVisible()\n this.bindEvents()\n }\n\n private btn!: HTMLButtonElement\n\n private show = true // 是否显示\n\n // 指定在哪些页面类型里启用\n private readonly enablePageType = [\n pageType.list.Artwork,\n pageType.list.Novel,\n pageType.list.Unlisted,\n ]\n\n private addBtn() {\n // 在右侧添加快速抓取按钮\n this.btn = document.createElement('button')\n this.btn.classList.add('rightButton')\n this.btn.id = 'quickCrawlBtn'\n this.btn.setAttribute('data-xztitle', '_快速下载本页')\n this.btn.innerHTML = `\n \n`\n document.body.append(this.btn)\n lang.register(this.btn)\n }\n\n private bindEvents() {\n // 点击按钮启动快速抓取\n this.btn.addEventListener(\n 'click',\n () => {\n this.sendDownload()\n if (!Config.mobile) {\n showHelp.show(\n 'tipAltQToQuickDownload',\n lang.transl('_快捷键ALTQ快速下载本页作品')\n )\n }\n },\n false\n )\n\n // 使用快捷键 Alt + Q 启动快速抓取\n window.addEventListener(\n 'keydown',\n (ev) => {\n if (this.show && ev.altKey && ev.code === 'KeyQ') {\n this.sendDownload()\n }\n },\n false\n )\n\n // 页面类型改变时设置按钮的显示隐藏\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.setVisible()\n })\n }\n\n private sendDownload() {\n states.quickCrawl = true\n\n const isNovel = window.location.href.includes('/novel')\n\n let idData: IDData\n\n if (isNovel) {\n idData = {\n type: 'novels',\n id: Tools.getNovelId(window.location.href),\n }\n } else {\n idData = {\n type: 'illusts',\n id: Tools.getIllustId(window.location.href),\n }\n }\n\n EVT.fire('crawlIdList', [idData])\n\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n\n private setVisible() {\n this.show = this.enablePageType.includes(pageType.type)\n this.btn.style.display = this.show ? 'flex' : 'none'\n }\n}\n\nnew QuickCrawl()\n","import { API } from '../API'\nimport { GlossaryItem, NovelSeriesGlossaryItem } from '../crawl/CrawlResult'\n\ninterface GlossaryResult {\n id: string\n seriesId: string\n name: string\n items: GlossaryItem[]\n}\n\nclass GetNovelGlossarys {\n /**获取系列小说的设定资料 */\n public async getGlossarys(\n seriesId: string | number\n ): Promise {\n return new Promise(async (resolve, reject) => {\n // 先获取设定资料的分类、每条设定资料的简略数据\n // 注意此时每条设定资料缺少 detail 数据(此时为 null)\n const glossaryData = await API.getNovelSeriesGlossary(seriesId)\n const result = glossaryData.body.categories as unknown as GlossaryResult[]\n\n if (result.length === 0) {\n return resolve(result)\n }\n\n // 请求每条设定资料的详细数据\n for (const categorie of result) {\n for (const item of categorie.items) {\n const data = await API.getNovelSeriesGlossaryItem(\n item.seriesId,\n item.id\n )\n item.detail = data.body.item.detail\n }\n }\n\n return resolve(result)\n })\n }\n\n /**把设定资料用特定格式存储起来 */\n public storeGlossaryText(data: GlossaryResult[]) {\n const array: string[] = []\n for (const categorie of data) {\n array.push(categorie.name)\n array.push('\\n\\n')\n\n for (const item of categorie.items) {\n array.push(item.name)\n array.push('\\n')\n array.push(item.overview)\n array.push('\\n\\n')\n if (item.detail) {\n array.push(item.detail)\n array.push('\\n\\n')\n }\n array.push('----------------------------------------')\n array.push('\\n\\n')\n }\n }\n if (array.length > 0) {\n return array.join('') + '\\n\\n'\n }\n return ''\n }\n}\n\nconst getNovelGlossarys = new GetNovelGlossarys()\nexport { getNovelGlossarys }\n","// 初始化 本站的最新作品 小说页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { NewIllustOption } from '../crawl/CrawlArgument.d'\nimport { NewNovelData } from '../crawl/CrawlResult.d'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nclass InitNewNovelPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private option: NewIllustOption = this.resetOption()\n\n private readonly limitMax = 20 // 每次请求的数量最大是 20\n\n private fetchCount = 0 // 已请求的作品数量\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_下载大家的新作品'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, false)\n }\n\n protected nextStep() {\n this.setSlowCrawl()\n this.initFetchURL()\n this.getIdList()\n }\n\n private resetOption(): NewIllustOption {\n return {\n lastId: '0',\n limit: '20', // 每次请求的数量,可以比 20 小\n type: '',\n r18: '',\n }\n }\n\n // 组织要请求的 url\n private initFetchURL() {\n this.option = this.resetOption()\n\n if (this.crawlNumber < this.limitMax) {\n this.option.limit = this.crawlNumber.toString()\n } else {\n this.option.limit = this.limitMax.toString()\n }\n\n // 是否是 R18 模式\n this.option.r18 = (location.href.includes('_r18.php') || false).toString()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let data: NewNovelData\n try {\n data = await API.getNewNovleData(this.option)\n } catch (error) {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let useData = data.body.novels\n\n for (const nowData of useData) {\n // 抓取够了指定的数量\n if (this.fetchCount + 1 > this.crawlNumber) {\n break\n } else {\n this.fetchCount++\n }\n\n const filterOpt: FilterOption = {\n aiType: nowData.aiType,\n id: nowData.id,\n bookmarkData: nowData.bookmarkData,\n bookmarkCount: nowData.bookmarkCount,\n workType: 3,\n tags: nowData.tags,\n userId: nowData.userId,\n createDate: nowData.createDate,\n xRestrict: nowData.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: 'novels',\n id: nowData.id,\n })\n }\n }\n\n log.log(lang.transl('_新作品进度', this.fetchCount.toString()), 1, false)\n\n // 抓取完毕\n if (\n this.fetchCount >= this.crawlNumber ||\n this.fetchCount >= this.maxCount\n ) {\n log.log(lang.transl('_开始获取作品页面'))\n this.getIdListFinished()\n return\n }\n\n // 继续抓取\n this.option.lastId = data.body.lastId\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.fetchCount = 0\n }\n}\nexport { InitNewNovelPage }\n","//初始化小说作品页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\nimport { userWorksType } from '../crawl/CrawlArgument'\nimport { Tools } from '../Tools'\nimport { API } from '../API'\nimport { Utils } from '../utils/Utils'\n\nclass InitNovelPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private crawlDirection: number = 0 // 抓取方向,指示抓取新作品还是旧作品\n /*\n -1 抓取新作品\n 0 不设置抓取方向\n 1 抓取旧作品\n */\n\n protected initAny() {}\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_从本页开始抓取new'\n ).addEventListener('click', () => {\n this.crawlDirection = -1\n this.readyCrawl()\n })\n\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_从本页开始抓取old'\n ).addEventListener('click', () => {\n this.crawlDirection = 1\n this.readyCrawl()\n })\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n\n protected getWantPage() {\n // 检查下载页数的设置\n const crawlAllTip =\n this.crawlDirection === -1\n ? lang.transl('_从本页开始抓取new')\n : lang.transl('_从本页开始抓取old')\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x个'),\n crawlAllTip\n )\n }\n\n protected async getIdList() {\n let type: userWorksType[] = ['novels']\n let idList = await API.getUserWorksByType(Tools.getUserId(), type)\n\n // 储存符合条件的 id\n let nowId = parseInt(Tools.getNovelId(window.location.href))\n idList.forEach((id) => {\n let idNum = parseInt(id.id)\n // 新作品\n if (idNum >= nowId && this.crawlDirection === -1) {\n store.idList.push(id)\n } else if (idNum <= nowId && this.crawlDirection === 1) {\n // 旧作品\n store.idList.push(id)\n }\n })\n\n // 当设置了下载个数时,进行裁剪\n if (this.crawlNumber !== -1) {\n // 新作品 升序排列\n if (this.crawlDirection === -1) {\n store.idList.sort(Utils.sortByProperty('id')).reverse()\n } else {\n // 旧作品 降序排列\n store.idList.sort(Utils.sortByProperty('id'))\n }\n\n store.idList = store.idList.splice(0, this.crawlNumber)\n }\n\n this.getIdListFinished()\n }\n\n protected resetGetIdListStatus() {\n this.crawlDirection = 0 // 解除下载方向的标记\n }\n}\nexport { InitNovelPage }\n","//初始化小说系列作品页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\nimport { Tools } from '../Tools'\nimport { API } from '../API'\nimport { states } from '../store/States'\nimport { settings } from '../setting/Settings'\nimport { getNovelGlossarys } from './GetNovelGlossarys'\nimport { Utils } from '../utils/Utils'\n\nclass InitNovelSeriesPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private seriesId: string = ''\n private readonly limit = 30\n private last = 0\n\n protected addCrawlBtns() {\n Tools.addBtn('crawlBtns', Colors.bgBlue, '_抓取系列小说').addEventListener(\n 'click',\n () => {\n this.readyCrawl()\n }\n )\n }\n\n protected addAnyElement() {\n Tools.addBtn('crawlBtns', Colors.bgBlue, '_合并系列小说').addEventListener(\n 'click',\n () => {\n states.mergeNovel = true\n this.readyCrawl()\n }\n )\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 隐藏“个数/页数”选项\n options.hideOption([1])\n }\n\n protected getWantPage() {}\n\n protected async nextStep() {\n this.seriesId = Utils.getURLPathField(window.location.pathname, 'series')\n\n if (states.mergeNovel && settings.saveNovelMeta) {\n const data = await getNovelGlossarys.getGlossarys(this.seriesId)\n store.novelSeriesGlossary = getNovelGlossarys.storeGlossaryText(data)\n }\n\n this.getIdList()\n }\n\n protected async getIdList() {\n const seriesData = await API.getNovelSeriesData(\n this.seriesId,\n this.limit,\n this.last,\n 'asc'\n )\n\n const list = seriesData.body.page.seriesContents\n for (const item of list) {\n store.idList.push({\n type: 'novels',\n id: item.id,\n })\n }\n\n this.last += list.length\n\n // 如果这一次返回的作品数量达到了每批限制,可能这次没有请求完,继续请求后续的数据\n if (list.length === this.limit) {\n this.getIdList()\n } else {\n this.getIdListFinished()\n }\n }\n\n protected resetGetIdListStatus() {\n this.seriesId = ''\n this.last = 0\n }\n}\nexport { InitNovelSeriesPage }\n","// 初始化小说排行榜页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\n\nclass InitRankingNovelPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private pageUrlList: string[] = []\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取本排行榜作品',\n '_抓取本排行榜作品Title'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n this.maxCount = 100\n\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n // 检查下载页数的设置\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_下载排行榜前x个作品'),\n lang.transl('_向下获取所有作品')\n )\n // 如果设置的作品个数是 -1,则设置为下载所有作品\n if (this.crawlNumber === -1) {\n this.crawlNumber = this.maxCount\n }\n }\n\n private getPageUrl() {\n const ul = document.querySelector('.ui-selectbox-container ul')\n if (ul) {\n const li = ul.querySelectorAll('li')\n this.maxCount = li.length * 50\n\n for (const el of li) {\n this.pageUrlList.push(el.dataset.url!)\n }\n } else {\n // 只有一页的话,没有页码部分的 ul li\n this.pageUrlList.push(location.href)\n }\n }\n\n protected nextStep() {\n this.getPageUrl()\n this.getIdList()\n }\n\n protected async getIdList() {\n let dom: Document\n try {\n const res = await fetch(this.pageUrlList[this.listPageFinished])\n const text = await res.text()\n const parse = new DOMParser()\n dom = parse.parseFromString(text, 'text/html')\n } catch (error) {\n this.getIdList()\n return\n }\n\n this.listPageFinished++\n\n const rankingItem = dom.querySelectorAll(\n '._ranking-items>div[id]'\n ) as NodeListOf\n\n // 检查每个作品的信息\n for (const item of rankingItem) {\n const rank = parseInt(item.querySelector('h1')!.innerText)\n // 检查是否已经抓取到了指定数量的作品\n if (rank > this.crawlNumber) {\n return this.getIdListFinished()\n }\n\n // https://www.pixiv.net/novel/show.php?id=12831389\n const link = (item.querySelector('.imgbox a') as HTMLAnchorElement)!.href\n const id = parseInt(link.split('id=')[1])\n\n const bmkEl = item.querySelector('.bookmark-count') as HTMLAnchorElement\n let bmk: number = bmkEl ? parseInt(bmkEl.innerText) : 0\n\n const tags: string[] = []\n const tagsA = item.querySelectorAll(\n '.tags>li>a'\n ) as NodeListOf\n for (const a of tagsA) {\n tags.push(a.innerText.trim())\n }\n\n const userId = item.querySelector('img')!.dataset.userId\n\n // 有的作品没有收藏按钮,点进去之后发现这个作品已经被删除了,只是排行榜里没有及时更新。这样的作品没有收藏按钮。\n const bookmarkBtn = item.querySelector('._one-click-bookmark')\n const bookmarked = bookmarkBtn\n ? bookmarkBtn.classList.contains('on')\n : false\n\n const filterOpt: FilterOption = {\n id: id,\n workType: 3,\n tags: tags,\n bookmarkCount: bmk,\n bookmarkData: bookmarked,\n userId: userId,\n }\n\n if (await filter.check(filterOpt)) {\n store.setRankList(id.toString(), rank)\n\n store.idList.push({\n type: 'novels',\n id: id.toString(),\n })\n }\n }\n\n log.log(\n lang.transl('_排行榜进度', this.listPageFinished.toString()),\n 1,\n false\n )\n\n // 抓取完毕\n if (\n store.idList.length >= this.crawlNumber ||\n this.listPageFinished === this.pageUrlList.length\n ) {\n this.getIdListFinished()\n } else {\n // 继续抓取\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.pageUrlList = []\n this.listPageFinished = 0\n }\n}\nexport { InitRankingNovelPage }\n","// 初始化小说搜索页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { SearchOption } from '../crawl/CrawlArgument'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { FastScreen } from '../pageFunciton/FastScreen'\nimport { Tools } from '../Tools'\nimport { BookmarkAllWorks } from '../pageFunciton/BookmarkAllWorks'\nimport { Utils } from '../utils/Utils'\nimport { idListWithPageNo } from '../store/IdListWithPageNo'\nimport { EVT } from '../EVT'\nimport { msgBox } from '../MsgBox'\nimport { crawlTagList } from '../crawlMixedPage/CrawlTagList'\nimport { states } from '../store/States'\nimport { pageType } from '../PageType'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nclass InitSearchNovelPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n new FastScreen()\n crawlTagList.init()\n }\n\n private readonly worksWrapSelector = '#root section>div ul'\n\n private option: SearchOption = {}\n private readonly worksNoPerPage = 24 // 每个页面有多少个作品\n private needCrawlPageCount = 0 // 一共有有多少个列表页面\n private sendCrawlTaskCount = 0 // 已经抓取了多少个列表页面\n private readonly allOption = [\n 'order',\n 'type',\n 'wlt',\n 'wgt',\n 'hlt',\n 'hgt',\n 'ratio',\n 'tool',\n 's_mode',\n 'mode',\n 'scd',\n 'ecd',\n 'blt',\n 'bgt',\n 'tlt',\n 'tgt',\n 'original_only',\n 'work_lang',\n 'ai_type',\n ]\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n private getWorksWrap() {\n const test = document.querySelectorAll(this.worksWrapSelector)\n if (test.length > 0) {\n // 小说页面用这个选择器,只匹配到了一个 ul\n return test[test.length - 1] as HTMLUListElement\n }\n return null\n }\n\n protected addAnyElement() {\n // 添加收藏本页所有作品的功能\n const bookmarkAllBtn = Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_收藏本页面的所有作品'\n )\n const bookmarkAll = new BookmarkAllWorks(bookmarkAllBtn)\n\n bookmarkAllBtn.addEventListener('click', () => {\n const listWrap = this.getWorksWrap()\n if (listWrap) {\n const list = document.querySelectorAll(\n '#root section>div ul>li'\n ) as NodeListOf\n if (list.length > 0) {\n bookmarkAll.sendWorkList(list, 'novels')\n }\n }\n })\n }\n\n protected setFormOption() {\n const isPremium = Tools.isPremium()\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: `1 - ${isPremium ? 5000 : 1000}`,\n })\n }\n\n protected initAny() {\n window.addEventListener(EVT.list.crawlTag, this.crawlTag)\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n\n window.removeEventListener(EVT.list.crawlTag, this.crawlTag)\n }\n\n protected async nextStep() {\n this.setSlowCrawl()\n this.initFetchURL()\n\n // 计算应该抓取多少页\n const data = await this.getSearchData(1)\n // 计算总页数\n let pageCount = Math.ceil(data.total / this.worksNoPerPage)\n if (pageCount > 1000) {\n // 如果作品页数大于 1000 页,则判断当前用户是否是 pixiv 会员\n const isPremium = Tools.isPremium()\n if (!isPremium) {\n // 如果用户不是会员,则最多只能抓取到 1000 页\n pageCount = 1000\n log.warning(lang.transl('_搜索页面页数限制', pageCount.toString()))\n } else {\n // 如果用户是会员,最多可以抓取到 5000 页\n if (pageCount > 5000) {\n pageCount = 5000\n log.warning(lang.transl('_搜索页面页数限制', pageCount.toString()))\n }\n }\n }\n\n // 如果当前页面的页码大于有效页码,则不进行抓取\n if (this.startpageNo > pageCount) {\n EVT.fire('crawlComplete')\n EVT.fire('crawlEmpty')\n\n if (data.total === 0) {\n return msgBox.error(lang.transl('_作品总数为0'))\n }\n return msgBox.error(`${lang.transl('_超出最大页码')} ${pageCount}`)\n }\n\n if (this.crawlNumber === -1 || this.crawlNumber > pageCount) {\n this.crawlNumber = pageCount\n }\n\n // 计算从当前页面开始抓取的话,有多少页\n let needFetchPage = pageCount - this.startpageNo + 1\n // 比较用户设置的页数,取较小的那个数值\n this.needCrawlPageCount = Math.min(needFetchPage, this.crawlNumber)\n\n if (this.needCrawlPageCount === 0) {\n return this.noResult()\n }\n\n this.getIdList()\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n // 获取搜索页的数据。因为有多处使用,所以进行了封装\n private async getSearchData(p: number) {\n let data = await API.getNovelSearchData(store.tag, p, this.option)\n return data.body.novel\n }\n\n // 组织要请求的 url 中的参数\n private initFetchURL() {\n let p = Utils.getURLSearchField(location.href, 'p')\n this.startpageNo = parseInt(p) || 1\n\n // 从页面 url 中获取可以使用的选项\n this.option = {}\n this.allOption.forEach((param) => {\n let value = Utils.getURLSearchField(location.href, param)\n if (value !== '') {\n this.option[param] = value\n }\n })\n\n // 抓取时始终关闭“以系列为单位显示”\n this.option.gs = '0'\n\n // 如果 url 里没有显式指定标签匹配模式,则使用 完全一致 模式\n // 因为在这种情况下,pixiv 默认使用的就是 完全一致\n if (!this.option.s_mode) {\n this.option.s_mode = 's_tag_full'\n }\n\n // 在日志里显示标签匹配模式\n log.log(\n `${lang.transl('_搜索模式')}: ${this.tipSearchMode(this.option.s_mode)}`\n )\n }\n\n // 注意:同样的 mode,在搜索图片时和搜索小说时可能有不同的含义。所以这个方法不是通用的。\n private tipSearchMode(mode: string) {\n switch (mode) {\n case 's_tag_only':\n return lang.transl('_标签部分一致')\n case 's_tag_full':\n return lang.transl('_标签完全一致')\n case 's_tc':\n return lang.transl('_正文')\n case 's_tag':\n return lang.transl('_标签标题说明文字')\n default:\n return mode\n }\n }\n\n private delayReTry(p: number) {\n window.setTimeout(() => {\n this.getIdList(p)\n }, Config.retryTime)\n // 限制时间大约是 3 分钟,这里为了保险起见,设置了更大的延迟时间。\n }\n\n private tipEmptyResult = Utils.debounce(() => {\n log.error(lang.transl('_抓取被限制时返回空结果的提示'))\n }, 1000)\n\n // 仅当出错重试时,才会传递参数 p。此时直接使用传入的 p,而不是继续让 p 增加\n protected async getIdList(p?: number): Promise {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n if (p === undefined) {\n p = this.startpageNo + this.sendCrawlTaskCount\n this.sendCrawlTaskCount++\n }\n\n // 发起请求,获取列表页\n let data\n try {\n data = await this.getSearchData(p)\n\n if (data.total === 0) {\n console.log(`page ${p}: total 0`)\n this.tipEmptyResult()\n return this.delayReTry(p)\n }\n } catch {\n return this.getIdList(p)\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n data = data.data\n for (const nowData of data) {\n const filterOpt: FilterOption = {\n aiType: nowData.aiType,\n createDate: nowData.createDate,\n id: nowData.id,\n bookmarkData: nowData.bookmarkData,\n bookmarkCount: nowData.bookmarkCount,\n workType: 3,\n tags: nowData.tags,\n userId: nowData.userId,\n xRestrict: nowData.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n idListWithPageNo.add(\n pageType.type,\n {\n type: 'novels',\n id: nowData.id,\n },\n p\n )\n }\n }\n\n this.listPageFinished++\n\n log.log(\n lang.transl(\n '_列表页抓取进度2',\n this.listPageFinished.toString(),\n this.needCrawlPageCount.toString()\n ),\n 1,\n false\n )\n\n if (this.sendCrawlTaskCount + 1 <= this.needCrawlPageCount) {\n // 继续发送抓取任务(+1 是因为 sendCrawlTaskCount 从 0 开始)\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n } else {\n // 抓取任务已经全部发送\n if (this.listPageFinished === this.needCrawlPageCount) {\n // 抓取任务全部完成\n log.log(lang.transl('_列表页抓取完成'))\n\n idListWithPageNo.store(pageType.type)\n\n this.getIdListFinished()\n }\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n this.sendCrawlTaskCount = 0\n }\n\n // 搜索页把下载任务按收藏数从高到低下载\n protected sortResult() {\n store.resultMeta.sort(Utils.sortByProperty('bmk'))\n store.result.sort(Utils.sortByProperty('bmk'))\n }\n\n private crawlTag = () => {\n if (states.crawlTagList) {\n this.readyCrawl()\n }\n }\n}\n\nexport { InitSearchNovelPage }\n","// 初始化所有页面抓取流程的基类\nimport { lang } from '../Lang'\nimport { Colors } from '../Colors'\nimport { Tools } from '../Tools'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { EVT } from '../EVT'\nimport { options } from '../setting/Options'\nimport { settings } from '../setting/Settings'\nimport { states } from '../store/States'\nimport { saveArtworkData } from '../store/SaveArtworkData'\nimport { saveNovelData } from '../store/SaveNovelData'\nimport { mute } from '../filter/Mute'\nimport { IDData } from '../store/StoreType'\nimport './StopCrawl'\nimport '../SelectWork'\nimport { destroyManager } from '../pageFunciton/DestroyManager'\nimport { vipSearchOptimize } from './VipSearchOptimize'\nimport { ArtworkData, NovelData } from './CrawlResult.d'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { Utils } from '../utils/Utils'\nimport { pageType } from '../PageType'\nimport { filter } from '../filter/Filter'\nimport { Config } from '../Config'\nimport { timedCrawl } from './TimedCrawl'\nimport '../pageFunciton/QuickBookmark'\nimport '../pageFunciton/DisplayThumbnailListOnMultiImageWorkPage'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nabstract class InitPageBase {\n protected crawlNumber = 0 // 要抓取的个数/页数\n\n protected maxCount = 1000 // 当前页面类型最多有多少个页面/作品\n\n protected startpageNo = 1 // 列表页开始抓取时的页码,只在 api 需要页码时使用\n\n protected listPageFinished = 0 // 记录一共抓取了多少个列表页\n\n protected readonly ajaxThreadsDefault = 10 // 抓取作品数据时的并发请求数量默认值,也是最大值\n\n protected ajaxThread = this.ajaxThreadsDefault // 抓取时的并发请求数\n\n protected finishedRequest = 0 // 抓取作品之后,如果 id 队列为空,则统计有几个并发线程完成了请求。当这个数量等于 ajaxThreads 时,说明所有请求都完成了\n\n // 子组件必须调用 init 方法,并且不可以修改 init 方法\n protected init() {\n this.setFormOption()\n this.addCrawlBtns()\n this.addAnyElement()\n this.initAny()\n\n // 如果在 init 方法中绑定了全局事件,并且该事件只适用于当前页面类型,那么应该在 destroy 中解绑事件。\n\n // 注册当前页面的 destroy 函数\n destroyManager.register(this.destroy.bind(this))\n\n // 切换页面时,如果任务已经完成,则移除日志区域\n EVT.bindOnce('clearLogAfterPageSwitch', EVT.list.pageSwitch, () => {\n if (!states.busy) {\n log.remove()\n }\n })\n\n // 监听下载 id 列表的事件\n EVT.bindOnce('crawlIdList', EVT.list.crawlIdList, (ev: CustomEventInit) => {\n const idList = ev.detail.data as IDData[]\n if (idList) {\n this.crawlIdList(idList)\n }\n // 通过 bindOnce 绑定的 this 是执行此代码时通过这个虚拟类生成的实例,这个 this 是不会变化的\n // 但是这个虚拟类会产生多个实例,所以这里调用 this 的方法时,要求这个方法与具体实例无关,不受实例变化影响\n // 也就是说即使页面类型变化并且生成了新的实例,调用旧实例上的这个方法也依然会正常运行\n // 如果某个方法做不到这一点, 就不要在这里调用。\n // 基于此,在这里修改 this 上的属性是不合适的,因为每个新实例都会复制这个虚拟类上的属性,它们是独立的\n })\n }\n\n // 设置表单里的选项。主要是设置页数,并隐藏不需要的选项。\n protected setFormOption(): void {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n // 添加抓取区域的默认按钮,可以被子类覆写\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n // 添加其他任意元素(如果有)\n protected addAnyElement(): void {}\n\n // 初始化任意内容\n // 如果有一些代码不能归纳到 init 方法的前面几个方法里,那就放在这里\n // 通常用来初始化特有的组件、功能、事件、状态等\n protected initAny() {}\n\n // 销毁初始化页面时添加的元素和事件,恢复设置项等\n protected destroy(): void {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n\n // 作品个数/页数的输入不合法\n private getWantPageError() {\n EVT.fire('wrongSetting')\n const msg = lang.transl('_下载数量错误')\n msgBox.error(msg)\n throw new Error(msg)\n }\n\n // 在某些页面检查页数/个数设置\n // 可以为 -1,或者大于 0\n protected checkWantPageInput(crawlPartTip: string, crawlAllTip: string) {\n const want = settings.wantPageArr[pageType.type]\n\n // 如果比 1 小,并且不是 -1,则不通过\n if ((want < 1 && want !== -1) || isNaN(want)) {\n // 比 1 小的数里,只允许 -1 , 0 也不行\n throw this.getWantPageError()\n }\n\n if (want >= 1) {\n log.warning(crawlPartTip.replace('{}', want.toString()))\n } else if (want === -1) {\n log.warning(crawlAllTip)\n }\n\n return want\n }\n\n // 在某些页面检查页数/个数设置,要求必须大于 0\n // 参数 max 为最大值\n // 参数 page 指示单位是“页”(页面)还是“个”(作品个数)\n protected checkWantPageInputGreater0(max: number, page: boolean) {\n const want = settings.wantPageArr[pageType.type]\n if (want > 0) {\n const result = Math.min(want, max)\n log.warning(\n lang.transl(\n page ? '_从本页开始下载x页' : '_从本页开始下载x个',\n result.toString()\n )\n )\n return result\n } else {\n throw this.getWantPageError()\n }\n }\n\n // 设置要获取的作品数或页数。有些页面使用,有些页面不使用。使用时再具体定义\n protected getWantPage() {}\n\n // 获取多图作品设置。因为这个不属于过滤器 filter,所以在这里直接获取\n protected getMultipleSetting() {\n // 获取作品张数设置\n if (settings.firstFewImagesSwitch) {\n log.warning(\n `${lang.transl('_多图作品只下载前几张图片')} ${settings.firstFewImages}`\n )\n }\n }\n\n /**在日志上显示任意提示 */\n protected showTip() {\n if (\n settings.removeWorksOfFollowedUsersOnSearchPage &&\n (pageType.type === pageType.list.ArtworkSearch ||\n pageType.type === pageType.list.NovelSearch)\n ) {\n log.warning(lang.transl('_在搜索页面里移除已关注用户的作品'))\n }\n }\n\n protected setSlowCrawl() {\n states.slowCrawlMode = settings.slowCrawl\n if (settings.slowCrawl) {\n log.warning(lang.transl('_慢速抓取'))\n }\n }\n\n // 准备正常进行抓取,执行一些检查\n protected async readyCrawl() {\n // 检查是否可以开始抓取\n if (states.busy) {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n EVT.fire('clearLog')\n\n log.success(lang.transl('_开始抓取'))\n toast.show(lang.transl('_开始抓取'), {\n position: 'center',\n })\n\n EVT.fire('crawlStart')\n\n if (Utils.isPixiv()) {\n await mute.getMuteSettings()\n }\n\n this.getWantPage()\n\n this.getMultipleSetting()\n\n this.showTip()\n\n this.finishedRequest = 0\n\n states.stopCrawl = false\n\n // 进入第一个抓取流程\n this.nextStep()\n }\n\n // 基于传递的 id 列表直接开始抓取\n // 这个方法是为了让其他模块可以传递 id 列表,直接进行下载。\n // 这个类的子类没有必要使用这个方法。当子类需要直接指定 id 列表时,修改自己的 getIdList 方法即可。\n protected async crawlIdList(idList: IDData[]) {\n // 检查是否可以开始抓取\n // 如果不能抓取则把 id 列表添加到等待队列中\n if (states.busy) {\n store.waitingIdList.push(...idList)\n } else {\n EVT.fire('clearLog')\n\n log.success(lang.transl('_开始抓取'))\n toast.show(lang.transl('_开始抓取'), {\n position: 'center',\n })\n\n EVT.fire('crawlStart')\n\n if (Utils.isPixiv()) {\n await mute.getMuteSettings()\n }\n\n this.getMultipleSetting()\n\n this.finishedRequest = 0\n\n states.stopCrawl = false\n\n store.idList = idList\n\n this.getIdListFinished()\n }\n }\n\n // 当可以开始抓取时,进入下一个流程。默认情况下,开始获取作品列表。如有不同,由子类具体定义\n protected nextStep() {\n this.getIdList()\n }\n\n // 获取 id 列表,由各个子类具体定义\n protected getIdList() {}\n\n // id 列表获取完毕,开始抓取作品内容页\n protected async getIdListFinished() {\n states.slowCrawlMode = false\n this.resetGetIdListStatus()\n\n EVT.fire('getIdListFinished')\n if (states.stopCrawl || states.bookmarkMode) {\n return\n }\n\n if (store.idList.length === 0) {\n return this.noResult()\n }\n\n log.persistentRefresh()\n log.log(lang.transl('_当前作品个数', store.idList.length.toString()))\n\n // 导出 ID 列表,并停止抓取\n if ((settings.exportIDList || states.exportIDList) && Utils.isPixiv()) {\n states.busy = false\n EVT.fire('stopCrawl')\n log.warning(lang.transl('_已停止抓取'))\n\n if (settings.exportIDList) {\n const resultList = await Utils.json2BlobSafe(store.idList)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `ID list-total ${\n result.total\n }-from ${Tools.getPageTitle()}-${Utils.replaceUnsafeStr(\n new Date().toLocaleString()\n )}.json`\n )\n }\n\n const msg = '✓ ' + lang.transl('_导出ID列表')\n log.success(msg)\n toast.success(msg)\n }\n\n return\n }\n\n // 这个 return 在这里重置任务状态,不继续抓取作品的详情了,用于调试时反复进行抓取\n // return states.busy = false\n\n log.log(lang.transl('_开始获取作品信息'))\n\n if (\n settings.slowCrawl &&\n store.idList.length > settings.slowCrawlOnWorksNumber\n ) {\n // 慢速抓取\n log.warning(lang.transl('_慢速抓取'))\n states.slowCrawlMode = true\n this.ajaxThread = 1\n } else {\n // 全速抓取\n states.slowCrawlMode = false\n this.ajaxThread = Math.min(this.ajaxThreadsDefault, store.idList.length)\n }\n\n // 开始抓取作品数据\n for (let i = 0; i < this.ajaxThread; i++) {\n window.setTimeout(() => {\n store.idList.length > 0 ? this.getWorksData() : this.afterGetWorksData()\n }, 0)\n }\n }\n\n // 重设抓取作品列表时使用的变量或标记\n protected resetGetIdListStatus() {}\n\n protected log429ErrorTip = Utils.debounce(() => {\n log.error(lang.transl('_抓取被限制时返回空结果的提示'))\n }, 500)\n\n // 获取作品的数据\n protected async getWorksData(idData?: IDData): Promise {\n if (states.stopCrawl) {\n return this.crawlFinished()\n }\n\n idData = idData || (store.idList.shift()! as IDData)\n if (!idData) {\n return this.afterGetWorksData()\n }\n const id = idData.id\n\n if (!id) {\n const msg = 'Error: work id is invalid!'\n msgBox.error(msg)\n throw new Error(msg)\n }\n\n // 在抓取之前,预先对 id 进行检查,如果不符合要求则不发送这个请求,直接跳过它\n // 现在这里能够检查 2 种设置条件:\n // 1. 检查 id 是否符合 id 范围条件\n // 2. 检查 id 的发布时间是否符合时间范围条件\n // 3. 区分图像作品和小说。注意:因为在某些情况下,下载器只能确定一个作品是图像还是小说,但不能区分它具体是图像里的哪一种类型(插画、漫画、动图),所以这里不能检查具体的图像类型,只能检查是图像还是小说\n const check = await filter.check({\n id,\n workTypeString: idData.type,\n workType: Tools.getWorkTypeVague(idData.type),\n })\n if (!check) {\n return this.afterGetWorksData()\n }\n\n try {\n const unlisted = pageType.type === pageType.list.Unlisted\n // 这里不能使用 cacheWorkData中的缓存数据,因为某些数据(如作品的收藏状态)可能已经发生变化\n if (idData.type === 'novels') {\n const data = await API.getNovelData(id, unlisted)\n await saveNovelData.save(data)\n this.afterGetWorksData(data)\n } else {\n const data = await API.getArtworkData(id, unlisted)\n await saveArtworkData.save(data)\n this.afterGetWorksData(data)\n }\n } catch (error) {\n // 当 API 里的网络请求的状态码异常时,会 reject,被这里捕获\n if (error.status) {\n // 请求成功,但状态码不正常\n this.logErrorStatus(error.status, idData)\n if (error.status === 500 || error.status === 429) {\n // 如果状态码 500 或 429,获取不到作品数据,可能是被 pixiv 限制了,等待一段时间后再次发送这个请求\n this.log429ErrorTip()\n window.setTimeout(() => {\n this.getWorksData(idData)\n }, Config.retryTime)\n return\n } else {\n this.afterGetWorksData()\n }\n } else {\n // 请求失败,没有获得服务器的返回数据,一般都是\n // TypeError: Failed to fetch\n // 此外这里也会捕获到 save 作品数据时的错误(如果有)\n console.error(error)\n\n // 再次发送这个请求\n window.setTimeout(() => {\n this.getWorksData(idData)\n }, 2000)\n }\n }\n }\n\n // 每当获取完一个作品的信息\n private async afterGetWorksData(\n data?: NovelData | ArtworkData\n ): Promise {\n this.logResultNumber()\n\n // 抓取可能中途停止,保留抓取结果\n if (states.stopCrawl) {\n return this.crawlFinished()\n }\n\n // 如果会员搜索优化策略指示停止抓取,则立即进入完成状态\n if (data && (await vipSearchOptimize.stopCrawl(data))) {\n // 指示抓取已停止\n states.stopCrawl = true\n return this.crawlFinished()\n }\n\n // 在进行下一次抓取前,预先检查这个 id 是否符合过滤条件\n // 如果它不符合过滤条件,则立刻跳过它,这样也不会发送请求来获取这个作品的数据\n // 这样可以加快抓取速度\n if (store.idList.length > 0) {\n const nextIDData = store.idList[0]\n const check = await filter.check({\n id: nextIDData.id,\n workTypeString: nextIDData.type,\n workType: Tools.getWorkTypeVague(nextIDData.type),\n })\n if (!check) {\n store.idList.shift()\n return this.getWorksData()\n }\n }\n\n // 如果存在下一个作品,则继续抓取\n if (store.idList.length > 0) {\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getWorksData()\n }, Config.slowCrawlDealy)\n } else {\n this.getWorksData()\n }\n } else {\n // 没有剩余作品,统计此后有多少个完成的请求\n this.finishedRequest++\n // 所有请求都执行完毕\n if (this.finishedRequest === this.ajaxThread) {\n this.crawlFinished()\n }\n }\n }\n\n // 抓取完毕\n protected crawlFinished() {\n if (store.result.length === 0) {\n return this.noResult()\n }\n\n store.crawlCompleteTime = new Date()\n\n // 对文件进行排序\n if (settings.setFileDownloadOrder) {\n // 按照用户设置的规则进行排序\n const scheme = new Map([\n ['ID', 'id'],\n ['bookmarkCount', 'bmk'],\n ['bookmarkID', 'bmkId'],\n ])\n let key = scheme.get(settings.downloadOrderSortBy)\n // 在搜索页面预览抓取结果时,始终按收藏数量排序\n if (\n pageType.type === pageType.list.ArtworkSearch &&\n settings.previewResult\n ) {\n key = 'bmk'\n }\n store.result.sort(Utils.sortByProperty(key!, settings.downloadOrder))\n store.resultMeta.sort(Utils.sortByProperty(key!, settings.downloadOrder))\n } else {\n // 如果用户未设置排序规则,则每个页面自行处理排序逻辑\n this.sortResult()\n }\n\n log.log(lang.transl('_共抓取到n个作品', store.resultMeta.length.toString()))\n\n log.log(lang.transl('_共抓取到n个文件', store.result.length.toString()))\n\n log.success(lang.transl('_抓取完毕'), 2)\n\n // 发出抓取完毕的信号\n EVT.fire('crawlComplete')\n\n // 自动导出抓取结果\n if (\n settings.autoExportResult &&\n store.result.length > settings.autoExportResultNumber\n ) {\n if (settings.autoExportResultCSV) {\n EVT.fire('exportCSV')\n }\n if (settings.autoExportResultJSON) {\n EVT.fire('exportResult')\n }\n }\n }\n\n // 网络请求状态异常时输出提示\n private logErrorStatus(status: number, idData: IDData) {\n const isNovel = idData.type === 'novels'\n const workLink = Tools.createWorkLink(idData.id, !isNovel)\n switch (status) {\n case 0:\n log.error(workLink + ' ' + lang.transl('_作品页状态码0'))\n break\n\n case 400:\n log.error(workLink + ' ' + lang.transl('_作品页状态码400'))\n break\n\n case 401:\n log.error(workLink + ' ' + lang.transl('_作品页状态码401'))\n break\n\n case 403:\n log.error(workLink + ' ' + lang.transl('_作品页状态码403'))\n break\n\n case 404:\n log.error(workLink + ' ' + lang.transl('_作品页状态码404'))\n break\n\n case 429:\n log.error(workLink + ' ' + lang.transl('_作品页状态码429'))\n break\n\n case 500:\n log.error(workLink + ' ' + lang.transl('_作品页状态码500'))\n break\n\n default:\n log.error(\n lang.transl('_无权访问', workLink) + `HTTP status code: ${status}`\n )\n break\n }\n }\n\n // 每当抓取了一个作品之后,输出提示\n protected logResultNumber() {\n log.log(\n `${lang.transl('_待处理')} ${store.idList.length}, ${lang.transl(\n '_共抓取到n个作品',\n store.resultMeta.length.toString()\n )}`,\n 1,\n false\n )\n }\n\n // 抓取结果为 0 时输出提示\n protected noResult() {\n // 先触发 crawlComplete,后触发 crawlEmpty。这样便于其他组件处理 crawlEmpty 这个例外情况\n // 如果触发顺序反过来,那么最后执行的都是 crawlComplete,可能会覆盖对 crawlEmpty 的处理\n EVT.fire('crawlComplete')\n EVT.fire('crawlEmpty')\n const msg = lang.transl('_抓取结果为零')\n log.error(msg, 2)\n msgBox.error(msg)\n }\n\n // 抓取完成后,对结果进行排序\n protected sortResult() {}\n\n /**定时抓取的按钮 */\n protected addStartTimedCrawlBtn(cb: Function) {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_定时抓取',\n '_定时抓取说明'\n ).addEventListener('click', () => {\n timedCrawl.start(cb)\n })\n }\n\n /**取消定时抓取的按钮 */\n protected addCancelTimedCrawlBtn() {\n const btn = Tools.addBtn('crawlBtns', Colors.bgWarning, '_取消定时抓取')\n btn.style.display = 'none'\n\n btn.addEventListener('click', () => {\n EVT.fire('cancelTimedCrawl')\n btn.style.display = 'none'\n })\n\n // 启动定时抓取之后,显示取消定时抓取的按钮\n window.addEventListener(EVT.list.startTimedCrawl, () => {\n btn.style.display = 'flex'\n })\n }\n}\n\nexport { InitPageBase }\n","import { options } from '../setting/Options'\nimport { InitPageBase } from './InitPageBase'\n\n// 投稿页面\nclass InitRequestPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected initAny() {\n // 为作品容器添加自定义 className,让显示更大的缩率图功能不那么容易失效\n const allSection = document.querySelectorAll('section')\n for (const section of allSection) {\n if (section.parentElement?.nodeName == 'DIV') {\n section.parentElement.classList.add('requestContainer')\n }\n }\n }\n\n protected addCrawlBtns() {}\n\n protected setFormOption() {\n options.hideOption([1])\n }\n}\n\nexport { InitRequestPage }\n","import { options } from '../setting/Options'\nimport { InitPageBase } from './InitPageBase'\n\n// 初始化不支持的页面类型\nclass InitUnsupportedPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n // 在不支持的页面类型里,不会添加专门用于当前页面的抓取按钮\n // 只会由 SelectWork 模块添加通用的“手动抓取”功能\n protected addCrawlBtns() {}\n\n protected setFormOption() {\n options.hideOption([1])\n }\n}\n\nexport { InitUnsupportedPage }\n","import { Colors } from '../Colors'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { log } from '../Log'\nimport { toast } from '../Toast'\nimport { Tools } from '../Tools'\nimport { states } from '../store/States'\n\nclass StopCrawl {\n constructor() {\n this.addBtn()\n this.bindEvents()\n }\n private btn!: HTMLButtonElement\n\n private addBtn() {\n this.btn = Tools.addBtn('stopCrawl', Colors.bgRed, '_停止抓取')\n this.hide()\n\n this.btn.addEventListener('click', () => {\n this.hide()\n const msg = lang.transl('_已停止抓取')\n log.error(msg)\n toast.error(msg)\n EVT.fire('stopCrawl')\n states.stopCrawl = true\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.show()\n })\n\n const hiddenEvents = [EVT.list.crawlComplete, EVT.list.stopCrawl]\n hiddenEvents.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.hide()\n })\n })\n }\n\n private hide() {\n this.btn.style.display = 'none'\n }\n\n private show() {\n this.btn.style.display = 'flex'\n }\n}\n\nnew StopCrawl()\n","import { setSetting, settings } from '../setting/Settings'\nimport { lang } from '../Lang'\nimport { msgBox } from '../MsgBox'\nimport { log } from '../Log'\nimport { EVT } from '../EVT'\nimport { states } from '../store/States'\nimport { Input } from '../Input'\nimport { toast } from '../Toast'\n\nclass TimedCrawl {\n constructor() {\n this.bindEvents()\n }\n\n private callback?: Function\n private time = 0\n private timer?: number\n /**定时器可用的最大延迟时间,这里计算为分钟 */\n // https://developer.mozilla.org/zh-CN/docs/Web/API/setTimeout#%E6%9C%80%E5%A4%A7%E5%BB%B6%E6%97%B6%E5%80%BC\n // max: 2147483647 / 60 / 1000\n private readonly timeMinuteMax = 35791\n /**这次抓取是否是由本模块发起的 */\n private crawlBySelf = false\n\n /**启动定时抓取任务。\n *\n * 只能有 1 个定时抓取任务,如果重复调用此方法,后传递的回调函数会覆盖之前的回调函数。\n */\n public async start(cb: Function) {\n const input = new Input({\n instruction: `${lang.transl('_定时抓取的间隔时间2')} (${lang.transl(\n '_分钟'\n )})`,\n value: settings.timedCrawlInterval.toString(),\n width: 500,\n })\n const value = await input.submit()\n if (!value) {\n return toast.warning(lang.transl('_本次操作已取消'))\n }\n\n const number = Number.parseInt(value)\n if (isNaN(number)) {\n return toast.error(lang.transl('_参数不合法本次操作已取消'))\n }\n\n if (number > this.timeMinuteMax) {\n msgBox.error(\n lang.transl('_定时抓取的时间超过最大值') +\n this.timeMinuteMax +\n lang.transl('_分钟')\n )\n return\n }\n\n if (number < 1) {\n msgBox.error(lang.transl('_定时抓取的时间最小值'))\n return\n }\n\n setSetting('timedCrawlInterval', number)\n\n this.reset()\n this.callback = cb\n this.execute()\n\n EVT.fire('startTimedCrawl')\n const msg = lang.transl(\n '_定时抓取已启动的提示',\n settings.timedCrawlInterval.toString()\n )\n msgBox.show(\n msg +\n '

    ' +\n lang.transl('_定时抓取的推荐用法') +\n '

    ' +\n lang.transl('_定时抓取已启动的提示2')\n )\n log.success(msg)\n }\n\n private execute() {\n this.time = settings.timedCrawlInterval * 60 * 1000\n this.timer = window.setTimeout(() => {\n if (!this.callback) {\n return\n }\n this.crawlBySelf = true\n states.quickCrawl = true\n this.callback()\n\n this.execute()\n }, this.time)\n }\n\n private reset() {\n this.callback = undefined\n window.clearTimeout(this.timer)\n this.crawlBySelf = false\n states.quickCrawl = false\n }\n\n private bindEvents() {\n // 当抓取结果为空,或者下载中止、完成时复位标记\n const resetCrawlBySelf = [\n EVT.list.crawlEmpty,\n EVT.list.downloadStop,\n EVT.list.downloadPause,\n EVT.list.downloadComplete,\n EVT.list.downloadCancel,\n ]\n\n for (const ev of resetCrawlBySelf) {\n window.addEventListener(ev, () => {\n window.setTimeout(() => {\n // 需要延迟执行,在日志提示显示之后再复位状态\n this.crawlBySelf = false\n }, 50)\n })\n }\n\n // 显示一些提示\n window.addEventListener(EVT.list.crawlStart, () => {\n if (!this.crawlBySelf) {\n return\n }\n log.success(lang.transl('_开始定时抓取'))\n log.log(lang.transl('_当前时间') + new Date().toLocaleString())\n })\n\n const tipWaitNextCrawl = [EVT.list.crawlEmpty, EVT.list.downloadComplete]\n\n for (const ev of tipWaitNextCrawl) {\n window.addEventListener(ev, () => {\n window.setTimeout(() => {\n if (this.crawlBySelf) {\n log.log(lang.transl('_当前时间') + new Date().toLocaleString())\n log.success(lang.transl('_等待下一次定时抓取'))\n }\n }, 0)\n })\n }\n\n window.addEventListener(EVT.list.cancelTimedCrawl, () => {\n this.reset()\n const msg = lang.transl('_已取消定时抓取')\n log.success(msg)\n msgBox.success(msg)\n })\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n if (!this.callback) {\n return\n }\n this.reset()\n const msg = lang.transl('_因为URL变化取消定时抓取任务')\n log.error(msg)\n msgBox.error(msg)\n })\n }\n}\n\nconst timedCrawl = new TimedCrawl()\nexport { timedCrawl }\n","import { EVT } from '../EVT'\nimport { pageType } from '../PageType'\nimport { settings } from '../setting/Settings'\nimport { ArtworkData, NovelData } from './CrawlResult.d'\nimport { filter } from '../filter/Filter'\nimport { Utils } from '../utils/Utils'\nimport { Tools } from '../Tools'\n\n// 当 Pixiv 会员使用按热门度排序搜索时,通过检查收藏数量是否符合要求来进行优化\n// 原理:当会员使用热门度排序时,Pixiv 返回的数据是按收藏数量从高到低排序的。(但不是严格一致,经常有少量作品顺序不对)\n// 假如会员用户在下载器里设置了收藏数量大于 10000,那么当查找到小于 10000 收藏的作品时,就可以考虑停止抓取作品了,因为后面的作品都是收藏数量低于 10000 的了\nclass VipSearchOptimize {\n constructor() {\n this.bindEvents()\n }\n\n // 在哪些页面上启用\n private readonly enablePageType: number[] = [pageType.list.ArtworkSearch]\n // 小说搜索页面不需要优化,因为列表数据中包含了每个作品的收藏数\n\n // 只有会员才能使用的排序方式(按热门度排序)\n private readonly vipOrders: string[] = [\n 'popular_d',\n 'popular_male_d',\n 'popular_female_d',\n ]\n // popular_d 受全站欢迎\n // popular_male_d 受男性欢迎\n // popular_female_d 受女性欢迎\n\n // 是否对这次抓取使用优化策略\n private vipSearchOptimize = false\n\n private filterFailed = 0 // 连续检查失败的数量。在检查作品是否满足收藏条件时,如果满足就将此计数清零;如果不满足就自增\n private readonly checkNumber = 30 // 连续多少个作品未达到要求时,停止抓取。这是一个猜测值\n // 设置 checkNumber 的原因:Pixiv 按热门度排序返回的数据其实并不是严格按照收藏数量排序的。所以设置一个数字作为处理这个情况的手段:连续多少个作品都不满足要求时,认为后续都是不满足要求的\n\n private bindEvents() {\n // 启动抓取时设置是否启用优化策略\n window.addEventListener(EVT.list.crawlStart, () => {\n this.vipSearchOptimize = this.setVipOptimize()\n })\n\n // 抓取完毕时重置状态\n window.addEventListener(EVT.list.crawlComplete, () => {\n this.reset()\n })\n }\n\n private reset() {\n this.vipSearchOptimize = false\n this.filterFailed = 0\n }\n\n // 指示是否停止抓取作品\n public async stopCrawl(data: NovelData | ArtworkData) {\n // 如果未启用会员搜索优化,或者没有设置收藏数量要求,则不停止抓取\n if (!this.vipSearchOptimize || !settings.BMKNumSwitch) {\n return false\n }\n\n // 连续多少个作品没有达到要求,则停止抓取\n if (this.filterFailed >= this.checkNumber) {\n return true\n }\n\n // 判断收藏数量是否不符合要求\n // createDate 用于计算日均收藏数量,必须传递\n const check = await filter.check({\n bookmarkCount: data.body.bookmarkCount,\n createDate: data.body.createDate,\n })\n\n if (!check) {\n this.filterFailed++\n } else {\n this.filterFailed = 0\n }\n\n return this.filterFailed >= this.checkNumber\n }\n\n // 设置是否启用优化策略\n private setVipOptimize() {\n // 判断页面类型\n if (!this.enablePageType.includes(pageType.type)) {\n return false\n }\n\n // 判断是否是会员\n if (!Tools.isPremium()) {\n return false\n }\n\n // 判断 order 方式\n const order = Utils.getURLSearchField(window.location.href, 'order')\n // 无排序方式\n if (!order) {\n return false\n }\n\n const vipOrder = this.vipOrders.includes(order)\n // 不是按热门度排序\n if (!vipOrder) {\n return false\n }\n\n // 按热门度排序\n // 判断是否启用了收藏数设置,如果是,则启用会员搜索优化\n return settings.BMKNumSwitch\n }\n}\n\nconst vipSearchOptimize = new VipSearchOptimize()\nexport { vipSearchOptimize }\n","import { store } from '../store/Store'\nimport { settings } from '../setting/Settings'\nimport { lang } from '../Lang'\nimport { EVT } from '../EVT'\nimport { DonwloadSuccessData, DonwloadSkipData } from './DownloadType'\nimport { bookmark } from '../Bookmark'\nimport { log } from '../Log'\n\n// 当文件下载成功后,收藏这个作品\nclass BookmarkAfterDL {\n constructor(tipEl?: HTMLElement) {\n if (tipEl) {\n this.tipEl = tipEl\n lang.register(this.tipEl)\n }\n\n this.bindEvents()\n }\n\n // 储存接收到的 id,用于防止对一个作品重复添加收藏\n // 其实重复添加收藏没什么影响,和只添加一次没区别。为了不浪费网络请求,还是尽量不要重复添加。\n private savedIds: number[] = []\n\n private successCount = 0\n\n private tipEl: HTMLElement = document.createElement('span')\n\n // 如果之前的下载已完成,那么当下一次开始下载时(也就是新的下载,而不是暂停后继续的下载),则重置状态\n private delayReset = false\n\n // 可选传入一个元素,显示收藏的数量和总数\n private bindEvents() {\n // 当有文件下载完成时,提取 id 进行收藏\n window.addEventListener(EVT.list.downloadSuccess, (ev: CustomEventInit) => {\n const successData = ev.detail.data as DonwloadSuccessData\n this.send(Number.parseInt(successData.id))\n })\n\n // 当有文件跳过下载时,如果是重复的下载,也进行收藏\n // 因为重复的下载,本意还是要下载的,只是之前下载过了。所以进行收藏。\n // 其他跳过下载的原因,则是本意就是不下载,所以不收藏。\n window.addEventListener(EVT.list.skipDownload, (ev: CustomEventInit) => {\n const skipData = ev.detail.data as DonwloadSkipData\n if (skipData.reason === 'duplicate') {\n this.send(Number.parseInt(skipData.id))\n }\n })\n\n // 当开始新的抓取时重置状态和提示\n window.addEventListener(EVT.list.crawlStart, (ev: CustomEventInit) => {\n this.reset()\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n this.delayReset = true\n })\n\n window.addEventListener(EVT.list.downloadStart, () => {\n if (this.delayReset) {\n this.reset()\n this.delayReset = false\n }\n })\n }\n\n private showCompleteTip = true\n private showProgress() {\n if (this.savedIds.length === 0) {\n lang.updateText(this.tipEl, '')\n return\n }\n lang.updateText(\n this.tipEl,\n '_已收藏带参数',\n `${this.successCount}/${this.savedIds.length}`\n )\n\n if (this.successCount === this.savedIds.length && this.showCompleteTip) {\n // 当全部收藏完成时,只显示一次提示。否则会显示多次\n this.showCompleteTip = false\n log.success(lang.transl('_收藏作品完毕'))\n }\n }\n\n private reset() {\n this.showCompleteTip = true\n this.savedIds = []\n this.successCount = 0\n this.tipEl.classList.remove('red')\n this.tipEl.classList.add('green')\n this.showProgress()\n }\n\n // 接收作品 id,开始收藏\n private send(id: number | string) {\n if (!settings.bmkAfterDL) {\n return\n }\n\n if (typeof id !== 'number') {\n id = Number.parseInt(id)\n }\n\n // 检查这个 id 是否已经添加了\n if (this.savedIds.includes(id)) {\n return\n }\n\n this.addBookmark(id)\n }\n\n // 给所有作品添加收藏(之前收藏过的,新 tag 将覆盖旧 tag)\n private async addBookmark(id: number) {\n return new Promise(async (resolve, reject) => {\n this.savedIds.push(id)\n this.showProgress()\n\n // 从 store 里查找这个作品的数据\n const dataSource =\n store.resultMeta.length > 0 ? store.resultMeta : store.result\n const data = dataSource.find((val) => val.idNum === id)\n if (data === undefined) {\n log.error(`Not find ${id} in result`)\n return resolve()\n }\n\n // 当抓取结果很少时,不使用慢速收藏\n await bookmark.add(\n id.toString(),\n data.type !== 3 ? 'illusts' : 'novels',\n data.tags,\n undefined,\n undefined,\n store.result.length > 24\n )\n this.successCount++\n\n this.showProgress()\n\n resolve()\n })\n }\n}\n\nexport { BookmarkAfterDL }\n","import { API } from '../API'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { msgBox } from '../MsgBox'\n\n/**当下载数量达到一定数值时,检查当前用户是否被 pixiv 警告 */\nclass CheckWarningMessage {\n constructor() {\n this.bindEvents()\n }\n\n /**已下载(成功保存到硬盘上)的文件数量\n *\n * 这个数字不会重置,除非当前标签页被关闭\n */\n private downloaded = 0\n /**每当保存数量增加了指定数量时,进行一次检查 */\n private readonly unitNumber = 100\n /**上次检查时的下载数量 */\n private lastCheckDownloaded = 0\n\n private bindEvents() {\n // 当有文件保存成功后,计算已下载文件的数量(不会计算跳过的文件)\n window.addEventListener(EVT.list.downloadSuccess, () => {\n this.addDownloaded()\n })\n }\n\n private async addDownloaded() {\n this.downloaded++\n if (this.downloaded >= this.lastCheckDownloaded + this.unitNumber) {\n this.lastCheckDownloaded = this.downloaded\n const result = await this.check()\n if (result) {\n msgBox.error(\n lang.transl('_过度访问警告警告') + '
    ' + lang.transl('_已暂停')\n )\n return EVT.fire('requestPauseDownload')\n }\n }\n }\n\n private async check(): Promise {\n return new Promise(async (resolve, reject) => {\n const data = await API.getLatestMessage(3)\n if (data.error) {\n console.error(data.message)\n return resolve(false)\n }\n if (data.body.total === 0) {\n return resolve(false)\n }\n\n for (const msgData of data.body.message_threads) {\n if (\n msgData.is_official === true &&\n msgData.thread_name === 'pixiv事務局'\n ) {\n if (\n msgData.latest_content.includes('policies.pixiv.net') &&\n msgData.latest_content.includes('14')\n ) {\n // 如果找到了官方账号发送的警告消息,则判断时间\n const now = new Date().getTime()\n const msgTime = Number.parseInt(msgData.modified_at + '000')\n // 如果这是 1 小时内的消息,则视为有效的警告消息\n // 如果警告消息的时间过去比较久了,则不再显示提示消息,否则就会无限提示了\n // 在进行大量下载时,pixiv 的警告消息可能会延迟几十分钟发送\n if (now - msgTime < 60 * 60 * 1000) {\n return resolve(true)\n }\n }\n }\n }\n\n return resolve(false)\n })\n }\n}\n\nnew CheckWarningMessage()\n","// 下载文件,然后发送给浏览器进行保存\nimport { EVT } from '../EVT'\nimport { log } from '../Log'\nimport { lang } from '../Lang'\nimport { fileName } from '../FileName'\nimport { convertUgoira } from '../ConvertUgoira/ConvertUgoira'\nimport {\n downloadArgument,\n SendToBackEndData,\n DonwloadSkipData,\n} from './DownloadType'\nimport { progressBar } from './ProgressBar'\nimport { filter } from '../filter/Filter'\nimport { downloadRecord } from './DownloadRecord'\nimport { settings } from '../setting/Settings'\nimport { MakeNovelFile } from './MakeNovelFile'\nimport { Utils } from '../utils/Utils'\nimport { Config } from '../Config'\nimport { msgBox } from '../MsgBox'\nimport { states } from '../store/States'\nimport { Tools } from '../Tools'\nimport { downloadNovelEmbeddedImage } from './DownloadNovelEmbeddedImage'\nimport { downloadNovelCover } from './DownloadNovelCover'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport { downloadStates } from './DownloadStates'\n\n// 处理下载队列里的任务\n// 不显示在进度条上的下载任务,不在这里处理\nclass Download {\n constructor(\n progressBarIndex: number,\n data: downloadArgument,\n downloadStatesIndex: number\n ) {\n this.progressBarIndex = progressBarIndex\n this.downloadStatesIndex = downloadStatesIndex\n this.beforeDownload(data)\n }\n\n private progressBarIndex: number\n private downloadStatesIndex: number\n\n private retry = 0 // 重试次数\n private lastRequestTime = 0 // 最后一次发起请求的时间戳\n private retryInterval: number[] = [] // 保存每次到达重试环节时,距离上一次请求的时间差\n\n private sizeChecked = false // 是否对文件体积进行了检查\n private skip = false // 这个下载是否应该被跳过。如果这个文件不符合某些过滤条件就应该跳过它\n private error = false // 在下载过程中是否出现了无法解决的错误\n\n private get cancel() {\n return this.skip || this.error || !states.downloading\n }\n\n // 跳过下载这个文件。可以传入用于提示的文本\n private skipDownload(data: DonwloadSkipData, msg?: string) {\n this.skip = true\n if (msg) {\n log.warning(msg)\n }\n if (states.downloading) {\n EVT.fire('skipDownload', data)\n }\n }\n\n // 在开始下载前进行检查\n private async beforeDownload(arg: downloadArgument) {\n // 检查是否是重复文件\n const duplicate = await downloadRecord.checkDeduplication(arg.result)\n if (duplicate) {\n return this.skipDownload(\n {\n id: arg.id,\n reason: 'duplicate',\n },\n lang.transl(\n '_跳过下载因为重复文件',\n Tools.createWorkLink(arg.id, arg.result.type !== 3)\n )\n )\n }\n\n // 如果是动图,再次检查是否排除了动图\n // 因为有时候用户在抓取时没有排除动图,但是在下载时排除了动图。所以下载时需要再次检查\n if (arg.result.type === 2 && !settings.downType2) {\n return this.skipDownload({\n id: arg.id,\n reason: 'excludedType',\n })\n }\n\n // 检查宽高条件和宽高比\n if (\n (settings.setWHSwitch || settings.ratioSwitch) &&\n arg.result.type !== 3\n ) {\n // 默认使用当前作品中第一张图片的宽高\n let wh = {\n width: arg.result.fullWidth,\n height: arg.result.fullHeight,\n }\n // 如果不是第一张图片,则加载图片以获取宽高\n if (arg.result.index > 0) {\n // 始终获取原图的尺寸\n wh = await Utils.getImageSize(arg.result.original)\n }\n\n // 如果获取宽高失败,图片会被视为通过宽高检查\n if (wh.width === 0 || wh.height === 0) {\n log.error(\n lang.transl('_获取图片的宽高时出现错误') +\n Tools.createWorkLink(arg.id)\n )\n // 图片加载失败可能是请求超时,或者图片不存在。这里无法获取到具体原因,所以不直接返回。\n // 如果是 404 错误,在 download 方法中可以处理这个问题\n // 如果是请求超时,则有可能错误的通过了这个图片\n }\n\n const result = await filter.check(wh)\n if (!result) {\n return this.skipDownload(\n {\n id: arg.id,\n reason: 'widthHeight',\n },\n lang.transl('_不保存图片因为宽高', Tools.createWorkLink(arg.id))\n )\n }\n }\n\n this.download(arg)\n }\n\n // 设置进度条信息\n private setProgressBar(name: string, loaded: number, total: number) {\n progressBar.setProgress(this.progressBarIndex, {\n name,\n loaded,\n total,\n })\n }\n\n // 当重试达到最大次数时\n private afterReTryMax(status: number, fileId: string) {\n const errorMsg = lang.transl(\n '_作品id无法下载带状态码',\n Tools.createWorkLink(fileId),\n status.toString()\n )\n // 404, 500 错误,跳过,不会再尝试下载这个文件(因为没有触发 downloadError 事件,所以不会重试下载)\n if (status === 404 || status === 500) {\n log.error(errorMsg)\n return this.skipDownload({\n id: fileId,\n reason: status.toString() as '404' | '500',\n })\n }\n\n // 状态码为 0,可能是系统磁盘空间不足导致的错误,也可能是代理软件导致的网络错误\n // 超时也会返回状态码 0\n if (status === 0) {\n // 判断是否是磁盘空间不足。特征是每次重试之间的间隔时间比较短。\n // 如果是超时,那么等待时间会比较长,可能超过 20 秒\n const timeLimit = 10000 // 如果从发起请求到进入重试的时间间隔小于这个值,则视为磁盘空间不足的情况\n const result = this.retryInterval.filter((val) => val <= timeLimit)\n // 在全部的 10 次请求中,如果有 9 次小于 10 秒,就有可能是磁盘空间不足。\n if (result.length > 9) {\n log.error(errorMsg)\n const tip = lang.transl('_状态码为0的错误提示')\n log.error(tip)\n msgBox.error(tip)\n return EVT.fire('requestPauseDownload')\n }\n }\n\n // 其他状态码,暂时跳过这个任务,但最后还是会尝试重新下载它\n this.error = true\n EVT.fire('downloadError', fileId)\n }\n\n // 下载文件\n private async download(arg: downloadArgument) {\n // 获取文件名\n const _fileName = fileName.createFileName(arg.result)\n\n // 重设当前下载栏的信息\n this.setProgressBar(_fileName, 0, 0)\n\n // 下载文件\n let url: string\n if (arg.result.type === 3) {\n // 生成小说的文件\n if (arg.result.novelMeta) {\n if (arg.result.novelMeta?.coverUrl) {\n downloadNovelCover.download(\n arg.result.novelMeta.coverUrl,\n _fileName,\n 'downloadNovel'\n )\n }\n\n let blob: Blob = await MakeNovelFile.make(arg.result.novelMeta)\n url = URL.createObjectURL(blob)\n\n if (settings.novelSaveAs === 'txt') {\n await downloadNovelEmbeddedImage.TXT(\n arg.result.novelMeta.content,\n arg.result.novelMeta.embeddedImages,\n _fileName\n )\n }\n } else {\n throw new Error('Not found novelMeta')\n }\n } else {\n // 对于图像作品,如果设置了图片尺寸就使用指定的 url,否则使用原图 url\n url = arg.result[settings.imageSize] || arg.result.original\n }\n\n let xhr = new XMLHttpRequest()\n xhr.open('GET', url, true)\n xhr.responseType = 'blob'\n\n // 显示下载进度\n xhr.addEventListener('progress', async (event) => {\n // 检查体积设置\n if (!this.sizeChecked) {\n this.sizeChecked = true\n const result = await filter.check({ size: event.total })\n if (!result) {\n // 当因为体积问题跳过下载时,可能这个下载进度还是 0 或者很少,所以这里直接把进度条拉满\n this.setProgressBar(_fileName, 1, 1)\n this.skipDownload(\n {\n id: arg.id,\n reason: 'size',\n },\n lang.transl('_不保存图片因为体积', Tools.createWorkLink(arg.id))\n )\n }\n }\n\n if (this.cancel) {\n xhr.abort()\n xhr = null as any\n return\n }\n\n this.setProgressBar(_fileName, event.loaded, event.total)\n })\n\n // 文件加载完毕,或者加载出错\n xhr.addEventListener('loadend', async () => {\n if (this.cancel) {\n xhr = null as any\n return\n }\n\n let file: Blob = xhr.response // 要下载的文件\n // 状态码错误,进入重试流程\n if (xhr.status !== 200) {\n // 正常下载完毕的状态码是 200\n // 储存重试的时间戳等信息\n this.retryInterval.push(new Date().getTime() - this.lastRequestTime)\n\n progressBar.errorColor(this.progressBarIndex, true)\n this.retry++\n\n if (this.retry >= Config.retryMax) {\n // 重试达到最大次数\n this.afterReTryMax(xhr.status, arg.id)\n } else {\n // 开始重试\n return this.download(arg)\n }\n } else {\n // 状态码正常\n progressBar.errorColor(this.progressBarIndex, false)\n // 需要转换动图的情况\n const convertExt = ['webm', 'gif', 'png']\n const ext = settings.ugoiraSaveAs\n if (\n convertExt.includes(ext) &&\n arg.result.ugoiraInfo &&\n settings.imageSize !== 'thumb'\n ) {\n // 当下载图片的方形缩略图时,不转换动图,因为此时下载的是作品的静态缩略图,无法进行转换\n try {\n if (ext === 'webm') {\n file = await convertUgoira.webm(\n file,\n arg.result.ugoiraInfo,\n arg.result.idNum\n )\n }\n\n if (ext === 'gif') {\n file = await convertUgoira.gif(\n file,\n arg.result.ugoiraInfo,\n arg.result.idNum\n )\n }\n\n if (ext === 'png') {\n file = await convertUgoira.apng(\n file,\n arg.result.ugoiraInfo,\n arg.result.idNum\n )\n }\n } catch (error) {\n const msg = lang.transl(\n '_动图转换失败的提示',\n Tools.createWorkLink(arg.result.idNum)\n )\n // 因为会重试所以不在日志上显示\n // log.error(msg, 1)\n console.error(msg)\n\n this.error = true\n EVT.fire('downloadError', arg.id)\n }\n }\n }\n\n if (this.cancel) {\n return\n }\n\n // 生成下载链接\n const blobUrl = URL.createObjectURL(file)\n\n // 对插画、漫画进行颜色检查\n // 在这里进行检查的主要原因:抓取时只会检查单图作品的颜色,不会检查多图作品的颜色。所以多图作品需要在这里进行检查。\n // 另一个原因:如果抓取时没有设置图片的颜色条件,下载时才设置颜色条件,那么就必须在这里进行检查。\n if (arg.result.type === 0 || arg.result.type === 1) {\n const result = await filter.check({\n mini: blobUrl,\n })\n if (!result) {\n return this.skipDownload(\n {\n id: arg.id,\n reason: 'color',\n },\n lang.transl('_不保存图片因为颜色', Tools.createWorkLink(arg.id))\n )\n }\n }\n\n // 向浏览器发送下载任务\n if (settings.setFileDownloadOrder) {\n await this.waitPreviousFileDownload()\n }\n this.browserDownload(blobUrl, _fileName, arg.id, arg.taskBatch)\n xhr = null as any\n file = null as any\n })\n\n this.lastRequestTime = new Date().getTime()\n // 没有设置 timeout,默认值是 0,不会超时\n xhr.send()\n }\n\n // 等待上一个文件下载成功之后(浏览器将文件保存到硬盘上),再保存这个文件。这是为了保证文件的保存顺序不会错乱\n private waitPreviousFileDownload() {\n return new Promise(async (resolve) => {\n if (this.downloadStatesIndex === 0) {\n return resolve(true)\n }\n\n if (downloadStates.states[this.downloadStatesIndex - 1] === 1) {\n return resolve(true)\n } else {\n return resolve(\n new Promise((resolve) => {\n setTimeoutWorker.set(() => {\n resolve(this.waitPreviousFileDownload())\n }, 50)\n })\n )\n }\n })\n }\n\n // 向浏览器发送下载任务\n private browserDownload(\n blobUrl: string,\n fileName: string,\n id: string,\n taskBatch: number\n ) {\n // 如果任务已停止,不会向浏览器发送下载任务\n if (this.cancel) {\n // 释放 bloburl\n URL.revokeObjectURL(blobUrl)\n return\n }\n\n const sendData: SendToBackEndData = {\n msg: 'save_work_file',\n fileUrl: blobUrl,\n fileName: fileName,\n id,\n taskBatch,\n }\n\n try {\n chrome.runtime.sendMessage(sendData)\n EVT.fire('sendBrowserDownload')\n } catch (error) {\n let msg = `${lang.transl('_发生错误原因')}
    {}${lang.transl(\n '_请刷新页面'\n )}`\n if ((error as Error).message.includes('Extension context invalidated')) {\n msg = msg.replace('{}', lang.transl('_扩展程序已更新'))\n log.error(msg)\n msgBox.error(msg)\n return\n }\n\n console.error(error)\n msg = msg.replace('{}', lang.transl('_未知错误'))\n log.error(msg)\n msgBox.error(msg)\n }\n }\n}\n\nexport { Download }\n","// 下载控制\nimport { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport {\n downloadArgument,\n DonwloadSuccessData,\n DonwloadSkipData,\n DownloadedMsg,\n TaskList,\n} from './DownloadType'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { lang } from '../Lang'\nimport { Colors } from '../Colors'\nimport { setSetting, settings } from '../setting/Settings'\nimport { Download } from '../download/Download'\nimport { progressBar } from './ProgressBar'\nimport { downloadStates } from './DownloadStates'\nimport { ShowDownloadStates } from './ShowDownloadStates'\nimport { ShowSkipCount } from './ShowSkipCount'\nimport { ShowConvertCount } from './ShowConvertCount'\nimport { BookmarkAfterDL } from './BookmarkAfterDL'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { toast } from '../Toast'\nimport { Utils } from '../utils/Utils'\nimport { pageType } from '../PageType'\nimport { msgBox } from '../MsgBox'\nimport './CheckWarningMessage'\nimport { showHelp } from '../ShowHelp'\n\nclass DownloadControl {\n constructor() {\n this.createResultBtns()\n\n this.createDownloadArea()\n\n this.bindEvents()\n\n const statusTipWrap = this.wrapper.querySelector(\n '.down_status'\n ) as HTMLSpanElement\n new ShowDownloadStates(statusTipWrap)\n\n const skipTipWrap = this.wrapper.querySelector(\n '.skip_tip'\n ) as HTMLSpanElement\n new ShowSkipCount(skipTipWrap)\n\n const convertTipWrap = this.wrapper.querySelector(\n '.convert_tip'\n ) as HTMLSpanElement\n new ShowConvertCount(convertTipWrap)\n\n // 只在 p 站内启用下载后收藏的功能\n if (Utils.isPixiv()) {\n const bmkAfterDLTipWrap = this.wrapper.querySelector(\n '.bmkAfterDL_tip'\n ) as HTMLSpanElement\n new BookmarkAfterDL(bmkAfterDLTipWrap)\n }\n }\n\n private wrapper: HTMLDivElement = document.createElement('div')\n\n /**在插槽里添加的操作抓取结果的按钮 */\n private resultBtns: {\n exportCSV: HTMLButtonElement\n exportJSON: HTMLButtonElement\n importJSON: HTMLButtonElement\n } = {\n exportCSV: document.createElement('button'),\n exportJSON: document.createElement('button'),\n importJSON: document.createElement('button'),\n }\n\n private thread = 5 // 同时下载的线程数的默认值\n // 这里默认设置为 5,是因为国内一些用户的下载速度比较慢,所以不应该同时下载很多文件。\n // 最大值由 Config.downloadThreadMax 定义\n\n private taskBatch = 0 // 标记任务批次,每次重新下载时改变它的值,传递给后台使其知道这是一次新的下载\n\n private taskList: TaskList = {} // 下载任务列表,使用下载的文件的 id 做 key,保存下载栏编号和它在下载状态列表中的索引\n\n private errorIdList: string[] = [] // 有任务下载失败时,保存 id\n\n private downloaded = 0 // 已下载的任务数量\n\n private stop = false // 是否已经停止下载\n\n private pause = false // 是否已经暂停下载\n\n private crawlIdListTimer: undefined | number = undefined\n\n private checkDownloadTimeoutTimer: undefined | number = undefined\n\n private readonly msgFlag = 'uuidTip'\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.hideResultBtns()\n this.hideDownloadArea()\n this.reset()\n })\n\n for (const ev of [\n EVT.list.crawlComplete,\n EVT.list.resultChange,\n EVT.list.resume,\n ]) {\n window.addEventListener(ev, (ev) => {\n // 当恢复了未完成的抓取数据时,将下载状态设置为暂停\n this.pause = ev.type === 'resume'\n // 让开始下载的方法进入任务队列,以便让监听上述事件的其他部分的代码先执行完毕\n window.setTimeout(() => {\n this.readyDownload()\n }, 0)\n })\n }\n\n window.addEventListener(EVT.list.skipDownload, (ev: CustomEventInit) => {\n // 跳过下载的文件不会触发 downloadSuccess 事件\n const data = ev.detail.data as DonwloadSkipData\n this.downloadOrSkipAFile(data)\n })\n\n window.addEventListener(EVT.list.downloadError, (ev: CustomEventInit) => {\n const id = ev.detail.data as string\n this.downloadError(id)\n })\n\n window.addEventListener(EVT.list.requestPauseDownload, (ev) => {\n // 请求暂停下载\n this.pauseDownload()\n })\n\n // 如果下载器让浏览器保存文件到本地,但是之后没有收到回应(不知道文件是否有成功保存),这会导致下载进度卡住\n window.addEventListener(EVT.list.sendBrowserDownload, () => {\n window.clearTimeout(this.checkDownloadTimeoutTimer)\n this.checkDownloadTimeoutTimer = window.setTimeout(() => {\n const msg = lang.transl('_可能发生了错误请刷新页面重试')\n msgBox.once('mayError', msg, 'warning')\n log.warning(msg)\n }, 5000)\n })\n\n const clearDownloadTimeoutTimerList = [\n EVT.list.downloadComplete,\n EVT.list.downloadError,\n EVT.list.downloadPause,\n EVT.list.downloadStop,\n EVT.list.downloadSuccess,\n EVT.list.crawlStart,\n ]\n clearDownloadTimeoutTimerList.forEach((evt) => {\n window.addEventListener(evt, () => {\n window.clearTimeout(this.checkDownloadTimeoutTimer)\n })\n })\n\n // 监听浏览器返回的消息\n chrome.runtime.onMessage.addListener((msg: DownloadedMsg) => {\n if (!this.taskBatch) {\n return\n }\n\n // UUID 的情况\n if (msg.data?.uuid) {\n log.error(lang.transl('_uuid'))\n msgBox.once(this.msgFlag, lang.transl('_uuid'), 'error')\n }\n\n // 文件下载成功\n if (msg.msg === 'downloaded') {\n // 释放 BLOBURL\n URL.revokeObjectURL(msg.data.url)\n\n // 发送下载成功的事件\n EVT.fire('downloadSuccess', msg.data)\n\n this.downloadOrSkipAFile(msg.data)\n } else if (msg.msg === 'download_err') {\n // 浏览器把文件保存到本地失败\n\n // 用户操作导致下载取消的情况,跳过这个文件,不再重试保存它。触发条件如:\n // 用户在浏览器弹出“另存为”对话框时取消保存\n // 用户让 IDM 转接这个下载时\n if (msg.err === 'USER_CANCELED') {\n log.error(\n lang.transl(\n '_user_canceled_tip',\n Tools.createWorkLink(msg.data.id),\n msg.err || 'unknown'\n )\n )\n\n this.downloadOrSkipAFile(msg.data)\n return\n }\n\n // 其他原因,下载器会重试保存这个文件\n log.error(\n lang.transl(\n '_save_file_failed_tip',\n Tools.createWorkLink(msg.data.id),\n msg.err || 'unknown'\n )\n )\n\n if (msg.err === 'FILE_FAILED') {\n log.error(lang.transl('_FILE_FAILED_tip'))\n }\n\n EVT.fire('saveFileError')\n // 重新下载这个文件\n // 但并不确定能否如预期一样重新下载这个文件\n this.saveFileError(msg.data)\n }\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n // 如果有等待中的下载任务,则开始下载等待中的任务\n if (store.waitingIdList.length === 0) {\n toast.success(lang.transl('_下载完毕2'), {\n position: 'center',\n })\n\n // 通知后台清除保存的此标签页的 idList\n chrome.runtime.sendMessage({\n msg: 'clearDownloadsTempData',\n })\n } else {\n window.clearTimeout(this.crawlIdListTimer)\n this.crawlIdListTimer = window.setTimeout(() => {\n states.quickCrawl = true // 下载等待的任务时,不显示下载器面板\n const idList = store.waitingIdList\n store.waitingIdList = []\n EVT.fire('crawlIdList', idList)\n }, 0)\n }\n })\n }\n\n private createDownloadArea() {\n const html = `
    \n
    \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    `\n\n this.wrapper = Tools.useSlot('downloadArea', html) as HTMLDivElement\n lang.register(this.wrapper)\n\n this.wrapper\n .querySelector('.startDownload')!\n .addEventListener('click', () => {\n this.startDownload()\n })\n\n this.wrapper\n .querySelector('.pauseDownload')!\n .addEventListener('click', () => {\n this.pauseDownload()\n })\n\n this.wrapper\n .querySelector('.stopDownload')!\n .addEventListener('click', () => {\n this.stopDownload()\n })\n\n this.wrapper.querySelector('.copyUrl')!.addEventListener('click', () => {\n EVT.fire('showURLs')\n })\n }\n\n private createResultBtns() {\n // 只在 pixiv 上添加这些按钮\n if (Utils.isPixiv()) {\n // 导入抓取结果\n this.resultBtns.importJSON = Tools.addBtn(\n 'exportResult',\n Colors.bgGreen,\n '_导入抓取结果'\n )\n // 导入抓取结果的按钮始终显示,因为它需要始终可用。\n // 导出抓取结果的按钮只有在可以准备下载时才显示\n\n this.resultBtns.importJSON.addEventListener(\n 'click',\n () => {\n EVT.fire('importResult')\n },\n false\n )\n\n // 导出抓取结果\n this.resultBtns.exportJSON = Tools.addBtn(\n 'exportResult',\n Colors.bgGreen,\n '_导出抓取结果'\n )\n this.resultBtns.exportJSON.style.display = 'none'\n\n this.resultBtns.exportJSON.addEventListener(\n 'click',\n () => {\n EVT.fire('exportResult')\n },\n false\n )\n\n // 导出 csv\n this.resultBtns.exportCSV = Tools.addBtn(\n 'exportResult',\n Colors.bgGreen,\n '_导出csv'\n )\n this.resultBtns.exportCSV.style.display = 'none'\n\n this.resultBtns.exportCSV.addEventListener(\n 'click',\n () => {\n EVT.fire('exportCSV')\n },\n false\n )\n\n this.resultBtns.exportCSV.addEventListener(\n 'mouseenter',\n () => {\n showHelp.show('tipCSV', lang.transl('_导出CSV文件的提示'))\n },\n false\n )\n }\n }\n\n // 抓取完毕之后,已经可以开始下载时,显示必要的信息,并决定是否立即开始下载\n private readyDownload() {\n if (states.busy || states.mergeNovel) {\n return\n }\n\n if (store.result.length === 0) {\n return progressBar.reset(0)\n }\n\n if (settings.downloadUgoiraFirst) {\n store.resultMeta.sort(Tools.sortUgoiraFirst)\n store.result.sort(Tools.sortUgoiraFirst)\n }\n\n EVT.fire('readyDownload')\n\n this.showResultBtns()\n\n this.showDownloadArea()\n\n this.setDownloaded()\n\n this.setDownloadThread()\n\n // 在插画漫画搜索页面里,如果启用了“预览搜索页面的筛选结果”\n if (\n pageType.type === pageType.list.ArtworkSearch &&\n settings.previewResult\n ) {\n // “预览搜索页面的筛选结果”会阻止自动开始下载。但是一些情况例外\n // 允许快速抓取发起的下载请求自动开始下载\n // 允许由抓取标签列表功能发起的下载请求自动开始下载\n if (!states.quickCrawl && !states.crawlTagList) {\n return\n }\n }\n\n // 自动开始下载的情况\n if (\n settings.autoStartDownload ||\n states.quickCrawl ||\n states.crawlTagList\n ) {\n this.startDownload()\n }\n }\n\n // 开始下载\n private startDownload() {\n if (states.busy) {\n return toast.error(lang.transl('_当前任务尚未完成'))\n }\n\n if (store.result.length === 0) {\n return toast.error(lang.transl('_没有可用的抓取结果'))\n }\n\n if (this.pause) {\n // 从上次中断的位置继续下载\n // 把“使用中”的下载状态重置为“未使用”\n downloadStates.resume()\n } else {\n // 如果之前没有暂停任务,也没有进入恢复模式,则重新下载\n // 初始化下载状态列表\n downloadStates.init()\n }\n\n this.reset()\n\n msgBox.resetOnce(this.msgFlag)\n\n this.setDownloaded()\n\n this.taskBatch = new Date().getTime() // 修改本批下载任务的标记\n\n this.setDownloadThread()\n\n EVT.fire('downloadStart')\n\n // 建立并发下载线程\n for (let i = 0; i < this.thread; i++) {\n this.createDownload(i)\n }\n\n log.success(lang.transl('_正在下载中'))\n\n if (Config.mobile) {\n log.warning(lang.transl('_Kiwi浏览器可能不能建立文件夹的bug'))\n }\n }\n\n // 暂停下载\n private pauseDownload() {\n if (store.result.length === 0) {\n return\n }\n\n // 停止的优先级高于暂停。点击停止可以取消暂停状态,但点击暂停不能取消停止状态\n if (this.stop === true) {\n return\n }\n\n if (this.pause === false) {\n // 如果正在下载中\n if (states.busy) {\n this.pause = true\n log.warning(lang.transl('_已暂停'), 2)\n\n EVT.fire('downloadPause')\n } else {\n // 不在下载中的话不允许启用暂停功能\n return\n }\n }\n }\n\n // 停止下载\n private stopDownload() {\n if (store.result.length === 0 || this.stop) {\n return\n }\n\n this.stop = true\n log.error(lang.transl('_已停止'), 2)\n this.pause = false\n\n EVT.fire('downloadStop')\n }\n\n private downloadError(id: string) {\n this.errorIdList.push(id)\n\n // 是否继续下载\n const task = this.taskList[id]\n const no = task.progressBarIndex\n if (this.checkContinueDownload()) {\n this.createDownload(no)\n } else {\n this.checkCompleteWithError()\n }\n }\n\n private setDownloaded() {\n this.downloaded = downloadStates.downloadedCount()\n\n const text = `${this.downloaded} / ${store.result.length}`\n log.log(text, 2, false)\n\n // 设置总下载进度条\n progressBar.setTotalProgress(this.downloaded)\n\n store.remainingDownload = store.result.length - this.downloaded\n\n // 所有文件正常下载完毕(跳过下载的文件也算正常下载)\n if (this.downloaded === store.result.length) {\n log.success(lang.transl('_下载完毕'), 2)\n window.setTimeout(() => {\n // 延后触发下载完成的事件。因为下载完成事件是由上游事件(跳过下载,或下载成功事件)派生的,如果这里不延迟触发,可能导致其他模块先接收到下载完成事件,后接收到上游事件。\n EVT.fire('downloadComplete')\n }, 0)\n this.reset()\n }\n\n this.checkCompleteWithError()\n }\n\n // 设置下载线程数量\n private setDownloadThread() {\n const setThread = settings.downloadThread\n if (\n setThread < 1 ||\n setThread > Config.downloadThreadMax ||\n isNaN(setThread)\n ) {\n // 如果数值非法,则重设为默认值\n this.thread = Config.downloadThreadMax\n setSetting('downloadThread', Config.downloadThreadMax)\n } else {\n this.thread = setThread // 设置为用户输入的值\n }\n\n // 如果剩余任务数量少于下载线程数\n if (store.result.length - this.downloaded < this.thread) {\n this.thread = store.result.length - this.downloaded\n }\n\n // 重设下载进度条\n progressBar.reset(this.thread, this.downloaded)\n }\n\n private saveFileError(data: DonwloadSuccessData) {\n if (this.pause || this.stop) {\n return false\n }\n const task = this.taskList[data.id]\n // 复位这个任务的状态\n downloadStates.setState(task.index, -1)\n // 建立下载任务,再次下载它\n this.createDownload(task.progressBarIndex)\n }\n\n private downloadOrSkipAFile(data: DonwloadSuccessData | DonwloadSkipData) {\n const task = this.taskList[data.id]\n\n // 更改这个任务状态为“已完成”\n downloadStates.setState(task.index, 1)\n\n // 统计已下载数量\n this.setDownloaded()\n\n // 是否继续下载\n const no = task.progressBarIndex\n if (this.checkContinueDownload()) {\n this.createDownload(no)\n }\n }\n\n // 当一个文件下载成功或失败之后,检查是否还有后续下载任务\n private checkContinueDownload() {\n // 如果没有全部下载完毕\n if (this.downloaded < store.result.length) {\n // 如果任务已停止\n if (this.pause || this.stop) {\n return false\n }\n // 如果已完成的数量 加上 线程中未完成的数量,仍然没有达到文件总数,继续添加任务\n if (this.downloaded + this.thread - 1 < store.result.length) {\n return true\n } else {\n return false\n }\n } else {\n return false\n }\n }\n\n // 查找需要进行下载的作品,建立下载\n private createDownload(progressBarIndex: number) {\n const index = downloadStates.getFirstDownloadItem()\n if (index === undefined) {\n // 当已经没有需要下载的作品时,检查是否带着错误完成了下载\n // 如果下载过程中没有出错,就不会执行到这个分支\n return this.checkCompleteWithError()\n } else {\n const workData = store.result[index]\n const argument: downloadArgument = {\n id: workData.id,\n result: workData,\n index: index,\n progressBarIndex: progressBarIndex,\n taskBatch: this.taskBatch,\n }\n\n // 保存任务信息\n this.taskList[workData.id] = {\n index,\n progressBarIndex: progressBarIndex,\n }\n\n // 建立下载\n new Download(progressBarIndex, argument, index)\n }\n }\n\n // 在有下载出错的情况下,是否已经完成了下载\n private checkCompleteWithError() {\n if (\n this.errorIdList.length > 0 &&\n this.downloaded + this.errorIdList.length === store.result.length\n ) {\n // 进入暂停状态,一定时间后自动开始下载,重试下载出错的文件\n this.pauseDownload()\n setTimeout(() => {\n this.startDownload()\n }, 2000)\n }\n }\n\n private reset() {\n this.pause = false\n this.stop = false\n this.errorIdList = []\n this.downloaded = 0\n }\n\n private showDownloadArea() {\n this.wrapper.style.display = 'block'\n }\n\n private hideDownloadArea() {\n this.wrapper.style.display = 'none'\n }\n\n private showResultBtns() {\n this.resultBtns.exportJSON.style.display = 'flex'\n this.resultBtns.exportCSV.style.display = 'flex'\n }\n\n private hideResultBtns() {\n this.resultBtns.exportJSON.style.display = 'none'\n this.resultBtns.exportCSV.style.display = 'none'\n }\n}\n\nnew DownloadControl()\n","import { settings } from '../setting/Settings'\nimport { Utils } from '../utils/Utils'\n\nclass DownloadNovelCover {\n /**下载小说的封面图片\n *\n * 默认是正常下载小说的情况,可以设置为合并系列小说的情况\n */\n public async download(\n coverURL: string,\n novelName: string,\n action: 'downloadNovel' | 'mergeNovel' = 'downloadNovel'\n ) {\n if (!settings.downloadNovelCoverImage || !coverURL) {\n return\n }\n\n const url = await this.getCoverBolbURL(coverURL)\n let coverName = Utils.replaceSuffix(novelName, coverURL)\n\n // 合并系列小说时,文件直接保存在下载目录里,封面图片也保存在下载目录里\n // 所以要替换掉封面图路径里的斜线\n if (action === 'mergeNovel') {\n coverName = Utils.replaceUnsafeStr(coverName)\n }\n this.sendDownload(url, coverName)\n }\n\n // 生成封面图片的 Blob URL\n private async getCoverBolbURL(coverURL: string): Promise {\n return new Promise(async (resolve, reject) => {\n const res = await fetch(coverURL, {\n method: 'get',\n credentials: 'same-origin',\n })\n const blob = await res.blob()\n const url = URL.createObjectURL(blob)\n return resolve(url)\n })\n }\n\n private sendDownload(url: string, name: string) {\n chrome.runtime.sendMessage({\n msg: 'save_novel_cover_file',\n fileUrl: url,\n fileName: name,\n })\n }\n}\n\nconst downloadNovelCover = new DownloadNovelCover()\nexport { downloadNovelCover }\n","import { API } from '../API'\nimport { settings } from '../setting/Settings'\nimport { Utils } from '../utils/Utils'\n\ntype EmbeddedImages = null | {\n [key: string]: string\n}\n\ntype IDData = {\n /**图片的 id,可能会重复。id 重复时,它们的 p 不同 */\n id: string\n /**这个属性只在引用其他作品的图片时有实机值,表示这个图片是作品里的第几张图片(从 1 开始)。0 无实际意义。 */\n p: number\n /**表示图片来源自用户上传,或是引用其他作品 */\n type: 'upload' | 'pixiv'\n /**图片的 URL,有可能是 null。当图片是通过引用作品 ID 插入,但下载器获取到作品数据里的 urls 都是 null(通常是因为用户未登录),那这个属性就也是 null。此时无法下载这个图片 */\n url: string | null\n /**图片的 BLOBURL */\n blobURL?: string\n /**图片在原文中的标记文字 */\n flag: string\n}\n\ntype IDList = IDData[]\n\n/**下载小说里的内嵌图片 */\nclass DownloadNovelEmbeddedImage {\n // 小说保存为 txt 时,直接下载小说里的内嵌图片。因为 txt 无法存储图像,只能单独保存\n\n /**下载小说为 txt 时\n *\n * 默认是正常下载小说的情况,可以设置为合并系列小说的情况\n */\n public async TXT(\n content: string,\n embeddedImages: EmbeddedImages,\n novelName: string,\n action: 'downloadNovel' | 'mergeNovel' = 'downloadNovel'\n ) {\n if (!settings.downloadNovelEmbeddedImage) {\n return\n }\n\n const idList = await this.getIdList(content, embeddedImages)\n\n // 保存为 TXT 格式时,每加载完一个图片,就立即保存这个图片\n for (let idData of idList) {\n // 如果 url 是 null,则不会保存这个图片\n if (idData.url) {\n idData = await this.getImageBolbURL(idData)\n let imageName = Utils.replaceSuffix(novelName, idData.url!)\n // 在文件名末尾加上内嵌图片的 id 和序号\n const array = imageName.split('.')\n const addString = `-${idData.id}${idData.p === 0 ? '' : '-' + idData.p}`\n array[array.length - 2] = array[array.length - 2] + addString\n imageName = array.join('.')\n\n // 合并系列小说时,文件直接保存在下载目录里,内嵌图片也保存在下载目录里\n // 所以要替换掉内嵌图片路径里的斜线\n if (action === 'mergeNovel') {\n imageName = Utils.replaceUnsafeStr(imageName)\n }\n this.sendDownload(idData.blobURL!, imageName)\n }\n }\n }\n\n /**下载小说为 EPUB 时,替换内嵌图片标记,把图片用 img 标签保存到正文里 */\n public async EPUB(\n content: string,\n embeddedImages: EmbeddedImages\n ): Promise {\n return new Promise(async (resolve) => {\n if (!settings.downloadNovelEmbeddedImage) {\n return resolve(content)\n }\n\n const idList = await this.getIdList(content, embeddedImages)\n for (let idData of idList) {\n if (idData.url) {\n idData = await this.getImageBolbURL(idData)\n const dataURL = await this.getImageDataURL(idData)\n const html = ``\n content = content.replaceAll(idData.flag, html)\n } else {\n // 如果 url 是 null,则修改标记,做出提示\n content = content.replaceAll(\n idData.flag,\n ` ${idData.flag} url is null`\n )\n }\n }\n\n return resolve(content)\n })\n }\n\n // 获取正文里上传的图片 id 和引用的图片 id\n private async getIdList(\n content: string,\n embeddedImages: EmbeddedImages\n ): Promise {\n return new Promise(async (resolve) => {\n const idList: IDList = []\n\n // 获取上传的图片数据\n if (embeddedImages) {\n for (const [id, url] of Object.entries(embeddedImages)) {\n idList.push({\n id,\n p: 0,\n type: 'upload',\n url,\n flag: `[uploadedimage:${id}]`,\n })\n }\n }\n\n // 获取引用的图片数据\n const reg = /\\[pixivimage:(.+?)\\]/g\n let test\n while ((test = reg.exec(content))) {\n if (test && test.length === 2) {\n // 99381250\n // 一个图像作品可能有多个被引用的图片,如\n // 99760571-1\n // 99760571-130\n const idInfo = test[1].split('-')\n idList.push({\n id: idInfo[0],\n p: idInfo[1] ? parseInt(idInfo[1]) : 0,\n type: 'pixiv',\n url: '',\n flag: `[pixivimage:${test[1]}]`,\n })\n }\n }\n\n // 引用的图片此时没有 URL\n // 统计引用的图像作品的 id (不重复),然后获取每个 id 的数据\n const artworkIDs: Set = new Set()\n idList.forEach((data) => {\n if (data.type === 'pixiv') {\n artworkIDs.add(data.id)\n }\n })\n\n for (const id of Array.from(artworkIDs)) {\n try {\n // 尝试获取原图作品数据,提取 URL\n const workData = await API.getArtworkData(id)\n const p0URL = workData.body.urls.original\n\n for (const idData of idList) {\n if (idData.id === id) {\n // 如果 p 为 0 则表示未指定图片序号,也就是第一张图片\n if (idData.p === 0) {\n idData.url = p0URL\n } else {\n // 如果指定了图片序号,则从第一张图片的 URL 生成指定图片的 URL\n idData.url = p0URL.replace('p0.', `p${idData.p - 1}.`)\n }\n }\n }\n } catch (error) {\n // 原图作品可能被删除了,404\n console.log(error)\n continue\n }\n }\n\n // 返回数据时,删除没有 url 的数据\n const result = idList.filter((data) => data.url !== '')\n return resolve(result)\n })\n }\n\n private async getImageBolbURL(idData: IDData): Promise {\n return new Promise(async (resolve) => {\n if (idData.url) {\n const res = await fetch(idData.url)\n const blob = await res.blob()\n idData.blobURL = URL.createObjectURL(blob)\n }\n resolve(idData)\n })\n }\n\n private async getImageDataURL(data: IDData): Promise {\n return new Promise(async (resolve) => {\n const img = await Utils.loadImg(data.blobURL!)\n const canvas = document.createElement('canvas')\n canvas.width = img.width\n canvas.height = img.height\n const con = canvas.getContext('2d')\n con!.drawImage(img, 0, 0, img.width, img.height)\n\n const suffix = Utils.getSuffix(data.url!)\n // 如果原图是 png 格式,就转换成 png 格式的数据,否则转换为 jpeg 格式\n if (suffix === 'png') {\n const ImgDataURL = canvas.toDataURL()\n return resolve(ImgDataURL)\n } else {\n const ImgDataURL = canvas.toDataURL('image/jpeg', 0.95)\n return resolve(ImgDataURL)\n }\n })\n }\n\n private sendDownload(url: string, name: string) {\n chrome.runtime.sendMessage({\n msg: 'save_novel_embedded_image',\n fileUrl: url,\n fileName: name,\n })\n }\n}\n\nconst downloadNovelEmbeddedImage = new DownloadNovelEmbeddedImage()\nexport { downloadNovelEmbeddedImage }\n","import { WorkTypeString } from '../store/StoreType'\nimport { EVT } from '../EVT'\nimport { settings } from '../setting/Settings'\nimport { states } from '../store/States'\nimport { toast } from '../Toast'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { workToolBar } from '../WorkToolBar'\nimport { pageType } from '../PageType'\nimport { Tools } from '../Tools'\nimport { artworkThumbnail } from '../ArtworkThumbnail'\nimport { novelThumbnail } from '../NovelThumbnail'\n\n// 点击作品的收藏按钮时,下载这个作品\nclass DownloadOnClickBookmark {\n constructor() {\n this.bindEvents()\n }\n\n public bindEvents() {\n // 在作品缩略图上点击收藏按钮时,下载这个作品\n artworkThumbnail.onClickBookmarkBtn((el: HTMLElement, id: string) => {\n if (!id) {\n id = Tools.findWorkIdFromElement(el, 'illusts')\n }\n this.send(id)\n })\n\n novelThumbnail.onClickBookmarkBtn((el: HTMLElement, id: string) => {\n if (!id || id === '0') {\n id = Tools.findWorkIdFromElement(el, 'novels')\n console.log(id)\n }\n this.send(id, 'novels')\n })\n\n // 在作品页面里点击收藏按钮时,下载这个作品\n workToolBar.register(\n (\n toolbar: HTMLDivElement,\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) => {\n pixivBMKDiv.addEventListener('click', () => {\n if (pageType.type === pageType.list.Artwork) {\n this.send(Tools.getIllustId(window.location.href))\n }\n\n if (pageType.type === pageType.list.Novel) {\n this.send(Tools.getNovelId(window.location.href), 'novels')\n }\n })\n }\n )\n }\n\n /**发送作品的 id 和类型,抓取并下载这个作品\n *\n * @type 默认值是 'illusts'\n */\n public send(id: string, type: WorkTypeString = 'illusts') {\n if (settings.downloadOnClickBookmark) {\n states.quickCrawl = true\n\n EVT.fire('crawlIdList', [\n {\n id,\n type,\n },\n ])\n\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n }\n}\n\nconst downloadOnClickBookmark = new DownloadOnClickBookmark()\nexport { downloadOnClickBookmark }\n","import { Colors } from '../Colors'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { pageType } from '../PageType'\nimport { settings } from '../setting/Settings'\nimport { states } from '../store/States'\nimport { WorkTypeString } from '../store/StoreType'\nimport { toast } from '../Toast'\nimport { Tools } from '../Tools'\nimport { workToolBar } from '../WorkToolBar'\n\n// 在作品页面里点赞时,下载这个作品\nclass DownloadOnClickLike {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n workToolBar.register(\n (\n toolbar: HTMLDivElement,\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) => {\n likeBtn.addEventListener('click', () => {\n if (pageType.type === pageType.list.Artwork) {\n this.send(Tools.getIllustId(window.location.href))\n }\n\n if (pageType.type === pageType.list.Novel) {\n this.send(Tools.getNovelId(window.location.href), 'novels')\n }\n })\n }\n )\n }\n\n /**发送作品的 id 和类型,抓取并下载这个作品\n *\n * @type 默认值是 'illusts'\n */\n private send(id: string, type: WorkTypeString = 'illusts') {\n if (settings.downloadOnClickLike) {\n states.quickCrawl = true\n\n EVT.fire('crawlIdList', [\n {\n id,\n type,\n },\n ])\n\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n }\n}\n\nnew DownloadOnClickLike()\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { log } from '../Log'\nimport { settings } from '../setting/Settings'\nimport { DonwloadSuccessData } from './DownloadType'\nimport { IndexedDB } from '../utils/IndexedDB'\nimport { store } from '../store/Store'\nimport { fileName } from '../FileName'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { secretSignal } from '../utils/SecretSignal'\nimport { Result } from '../store/StoreType'\n\ninterface Record {\n id: string\n n: string\n /**文件 URL 里的作品的日期。可能为 undefined,因为旧版本没有这个数据,小说也没有这个数据 */\n d?: string\n}\n\n// 保存下载记录,用来判断重复下载的文件\nclass DownloadRecord {\n constructor() {\n this.IDB = new IndexedDB()\n this.init()\n }\n\n private IDB: IndexedDB\n private readonly DBName = 'DLRecord'\n private readonly DBVer = 1\n private readonly storeNameList: string[] = [\n 'record1',\n 'record2',\n 'record3',\n 'record4',\n 'record5',\n 'record6',\n 'record7',\n 'record8',\n 'record9',\n ] // 表名的列表\n\n private existedIdList: string[] = [] // 检查文件是否重复时,会查询数据库。查询到的数据的 id 会保存到这个列表里。当向数据库添加记录时,可以先查询这个列表,如果已经有过记录就改为 put 而不是 add,因为添加主键重复的数据会报错\n\n // 从图片 url 里取出日期字符串的正则表达式\n private readonly dateRegExp = /img\\/(.*)\\//\n\n private async init() {\n await this.initDB()\n this.bindEvents()\n }\n\n // 初始化数据库,获取数据库对象\n private async initDB() {\n // 在升级事件里创建表和索引\n const onUpdate = (db: IDBDatabase) => {\n for (const name of this.storeNameList) {\n if (!db.objectStoreNames.contains(name)) {\n const store = db.createObjectStore(name, { keyPath: 'id' })\n store.createIndex('id', 'id', { unique: true })\n }\n }\n }\n\n return new Promise(async (resolve, reject) => {\n resolve(await this.IDB.open(this.DBName, this.DBVer, onUpdate))\n })\n }\n\n private bindEvents() {\n // 当有文件下载完成时,存储这个任务的记录\n window.addEventListener(EVT.list.downloadSuccess, (ev: CustomEventInit) => {\n const successData = ev.detail.data as DonwloadSuccessData\n const result = store.findResult(successData.id)\n result && this.addRecord(result)\n })\n\n // 导入含有 id 列表的 txt 文件\n secretSignal.register('recordtxt', () => {\n this.importRecordFromTxt()\n })\n\n // 导入下载记录的按钮\n {\n const btn = document.querySelector('#importDownloadRecord')\n if (btn) {\n btn.addEventListener('click', () => {\n EVT.fire('importDownloadRecord')\n })\n }\n }\n\n // 监听导入下载记录的事件\n window.addEventListener(EVT.list.importDownloadRecord, () => {\n this.importRecordFromJSON()\n })\n\n // 导出下载记录的按钮\n {\n const btn = document.querySelector('#exportDownloadRecord')\n if (btn) {\n btn.addEventListener('click', () => {\n EVT.fire('exportDownloadRecord')\n })\n }\n }\n\n // 监听导出下载记录的事件\n window.addEventListener(EVT.list.exportDownloadRecord, () => {\n this.exportRecord()\n })\n\n // 清空下载记录的按钮\n {\n const btn = document.querySelector('#clearDownloadRecord')\n if (btn) {\n btn.addEventListener('click', () => {\n EVT.fire('clearDownloadRecord')\n })\n }\n }\n\n // 监听清空下载记录的事件\n window.addEventListener(EVT.list.clearDownloadRecord, () => {\n this.clearRecords()\n this.existedIdList = []\n })\n }\n\n // 当要查找或存储一个 id 时,返回它所对应的 storeName\n private getStoreName(id: string) {\n const firstNum = parseInt(id[0])\n return this.storeNameList[firstNum - 1]\n }\n\n // 生成一个下载记录\n private createRecord(data: Result | string): Record {\n let result: Result | undefined = undefined\n if (typeof data === 'string') {\n result = store.findResult(data)\n } else {\n result = data\n }\n if (result === undefined) {\n throw new Error('createRecord failed')\n }\n\n return {\n id: result.id,\n n: fileName.createFileName(result),\n d: this.getDateString(result),\n }\n }\n\n /**返回作品的修改日期字符串 */\n private getDateString(result: Result) {\n // 图像作品不使用 uploadDate,这是历史遗留原因,因为以前下载器的内部数据里没有 uploadDate 数据\n // 而是从文件 URL 里取出日期字符串。例如\n // 'https://i.pximg.net/img-original/img/2021/10/11/00/00/06/93364702_p0.png'\n // 返回\n // '2021/10/11/00/00/06'\n // 为了保持向后兼容,这里不做修改\n if (result.type !== 3) {\n return result.original.match(this.dateRegExp)![1]\n } else {\n // 小说作品使用 uploadDate,返回值如\n // '2021-09-03T14:31:03+00:00'\n return result.uploadDate\n }\n }\n\n // 添加一条下载记录\n private async addRecord(result: Result) {\n const storeName = this.getStoreName(result.id)\n const record = this.createRecord(result)\n\n if (this.existedIdList.includes(result.id)) {\n this.IDB.put(storeName, record)\n } else {\n // 先查询有没有这个记录\n const result = await this.IDB.get(storeName, record.id)\n this.IDB[result ? 'put' : 'add'](storeName, record)\n }\n }\n\n /** 检查一个作品是否是重复下载\n *\n * 返回值 true 表示重复,false 表示不重复\n */\n public async checkDeduplication(result: Result) {\n if (!Utils.isPixiv()) {\n return false\n }\n\n return new Promise(async (resolve, reject) => {\n // 如果未启用去重,直接返回不重复\n if (!settings.deduplication) {\n return resolve(false)\n }\n // 在数据库进行查找\n const storeName = this.getStoreName(result.id)\n const data = (await this.IDB.get(storeName, result.id)) as Record | null\n if (data === null) {\n return resolve(false)\n }\n\n // 有记录,说明这个文件下载过\n this.existedIdList.push(data.id)\n\n // 首先检查日期字符串是否发生了变化\n // 如果日期字符串变化了,则不视为重复文件\n if (data.d !== undefined && data.d !== this.getDateString(result)) {\n return resolve(false)\n }\n // 如果之前的下载记录里没有日期,说明是早期的下载记录,那么就不检查日期\n // 同时,更新这个作品的下载记录,为其添加日期\n if (data.d === undefined) {\n this.addRecord(result)\n }\n // 如果日期字符串没有变化,再根据策略进行判断\n if (settings.dupliStrategy === 'loose') {\n // 如果是宽松策略(不比较文件名)\n return resolve(true)\n } else {\n // 如果是严格策略(考虑文件名)\n const name = fileName.createFileName(result)\n return resolve(name === data.n)\n }\n })\n }\n\n // 清空下载记录\n private async clearRecords() {\n if (window.confirm(lang.transl('确定要清除下载记录吗')) === false) {\n return\n }\n\n log.log(lang.transl('_清除下载记录'))\n toast.show(lang.transl('_清除下载记录'))\n\n let total = this.storeNameList.length\n let num = 0\n\n for (const name of this.storeNameList) {\n log.log(`${lang.transl('_任务进度')} ${num}/${total}`)\n num++\n await this.IDB.clear(name)\n }\n log.log(`${lang.transl('_任务进度')} ${num}/${total}`)\n\n log.success(lang.transl('_下载记录已清除'))\n toast.success(lang.transl('_下载记录已清除'))\n }\n\n // 导出下载记录\n private async exportRecord() {\n log.log(lang.transl('_导出下载记录'))\n toast.show(lang.transl('_导出下载记录'))\n\n let total = this.storeNameList.length\n let num = 0\n\n let record: Record[] = []\n for (const name of this.storeNameList) {\n log.log(`${lang.transl('_任务进度')} ${num}/${total}`)\n num++\n const r = (await this.IDB.getAll(name)) as Record[]\n record = record.concat(r)\n }\n log.log(`${lang.transl('_任务进度')} ${num}/${total}`)\n\n if (record.length === 0) {\n log.error(lang.transl('_没有数据可供使用'))\n toast.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n const resultList = await Utils.json2BlobSafe(record)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `record-total ${result.total}-${Utils.replaceUnsafeStr(\n new Date().toLocaleString()\n )}.json`\n )\n }\n\n const msg = lang.transl('_导出成功')\n log.success(msg)\n toast.success(msg)\n }\n\n // 导入下载记录\n private async importRecord(record: Record[]) {\n log.log(lang.transl('_导入下载记录'))\n\n // 显示导入进度\n let stored = 0\n let total = record.length\n\n if (total > 10000) {\n log.warning(lang.transl('_数据较多需要花费一些时间'))\n }\n\n log.log(`${stored}/${total}`, 1, false)\n\n console.time('importRecord')\n // 依次处理每个存储库\n for (let index = 0; index < this.storeNameList.length; index++) {\n // 提取出要存入这个存储库的数据\n const data: Record[] = []\n for (const r of record) {\n if (parseInt(r.id[0]) - 1 === index) {\n data.push(r)\n }\n }\n\n if (data.length === 0) {\n continue\n }\n\n // 添加数据\n log.log(`${lang.transl('_待处理')} ${data.length}`)\n try {\n // console.time('restoreRecord' + (index + 1))\n await this.IDB.batchAddData(this.storeNameList[index], data, 'id')\n // console.timeEnd('restoreRecord' + (index + 1))\n\n stored += data.length\n log.log(`${stored}/${total}`, 1, false)\n } catch (error) {\n const errorMsg = (error as any)?.target?.error\n const tip = errorMsg ? errorMsg : error\n log.error(tip)\n msgBox.error(tip)\n }\n }\n console.timeEnd('importRecord')\n\n if (stored < total) {\n return\n }\n\n log.success(lang.transl('_导入成功'))\n toast.success(lang.transl('_导入成功'))\n\n msgBox.success(lang.transl('_导入成功'), {\n title: lang.transl('_导入下载记录'),\n })\n\n // 时间参考:导入 100000 条下载记录,花费的时间在 30 秒以内。但偶尔会有例外,中途像卡住了一样,很久没动,最后花了两分钟多的时间。\n }\n\n // 从 json 文件导入\n private async importRecordFromJSON() {\n const record = (await Utils.loadJSONFile().catch((err) => {\n msgBox.error(err)\n return\n })) as Record[]\n\n if (!record) {\n return\n }\n\n // 判断格式是否符合要求\n if (\n Array.isArray(record) === false ||\n record[0].id === undefined ||\n record[0].n === undefined\n ) {\n return msgBox.error(lang.transl('_格式错误'))\n }\n\n this.importRecord(record)\n }\n\n // 从 txt 文件导入\n // 每行一个文件 id(带序号),以换行分割\n private async importRecordFromTxt() {\n const file = (await Utils.selectFile('.txt'))[0]\n const text = await file.text()\n\n // 以换行分割\n let split = '\\r\\n'\n if (!text.includes(split)) {\n split = '\\n'\n }\n const arr = text.split(split)\n\n // 把每一行视为一个 id,进行导入\n const record: Record[] = []\n for (const str of arr) {\n if (str) {\n record.push({\n id: str,\n n: str,\n })\n }\n }\n this.importRecord(record)\n }\n}\n\nconst downloadRecord = new DownloadRecord()\nexport { downloadRecord }\n","import { EVT } from '../EVT'\nimport { store } from '../store/Store'\n\n// 每个任务会在数组中的对应位置用一个数字表示它的下载状态。数字和含义:\n// -1 未开始下载\n// 0 下载中\n// 1 下载完成\ntype DLStatesI = (-1 | 0 | 1)[]\n\n// 下载状态列表\nclass DownloadStates {\n constructor() {\n this.bindEvents()\n }\n\n public states: DLStatesI = []\n\n private bindEvents() {\n // 初始化下载状态\n const evs = [EVT.list.crawlComplete, EVT.list.resultChange]\n for (const ev of evs) {\n window.addEventListener(ev, () => {\n this.init()\n })\n }\n }\n\n // 创建新的状态列表\n public init() {\n this.states = new Array(store.result.length).fill(-1)\n }\n\n // 统计下载完成的数量\n public downloadedCount() {\n let count = 0\n const length = this.states.length\n for (let i = 0; i < length; i++) {\n if (this.states[i] === 1) {\n count++\n }\n }\n return count\n }\n\n // 接受传入的状态数据\n // 目前只有在恢复下载的时候使用\n public replace(states: DLStatesI) {\n this.states = states\n }\n\n // 恢复之前的下载任务\n // 这会把之前的“下载中”标记复位到“未开始下载”,以便再次下载\n public resume() {\n const length = this.states.length\n for (let i = 0; i < length; i++) {\n if (this.states[i] === 0) {\n this.setState(i, -1)\n }\n }\n }\n\n // 获取第一个“未开始下载”标记的索引\n public getFirstDownloadItem() {\n const length = this.states.length\n for (let i = 0; i < length; i++) {\n if (this.states[i] === -1) {\n this.setState(i, 0)\n return i\n }\n }\n return undefined\n }\n\n // 设置已下载列表中的标记\n public setState(index: number, value: -1 | 0 | 1) {\n this.states[index] = value\n }\n\n public clear() {\n this.states = []\n }\n}\n\nconst downloadStates = new DownloadStates()\nexport { downloadStates, DLStatesI }\n","import { Tools } from '../Tools'\nimport { store } from '../store/Store'\nimport { fileName } from '../FileName'\nimport { lang } from '../Lang'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\n// 输出 lst 文件\nclass ExportLST {\n constructor() {\n this.bindEvents()\n }\n\n private readonly separate = '?/' // 分隔符\n private readonly CRLF = '\\r\\n' // 换行符\n\n private bindEvents() {\n window.addEventListener(\n 'keydown',\n (ev) => {\n if (ev.altKey && ev.code === 'KeyL') {\n this.createLst()\n }\n },\n false\n )\n }\n\n private createLst() {\n if (store.result.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n const array: string[] = []\n for (const data of store.result) {\n array.push(data.original + this.separate + fileName.createFileName(data))\n }\n\n const result = array.join(this.CRLF)\n const blob = new Blob([result])\n const url = URL.createObjectURL(blob)\n const name = Tools.getPageTitle() + '.lst'\n\n Utils.downloadFile(url, name)\n }\n}\n\nnew ExportLST()\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { store } from '../store/Store'\nimport { lang } from '../Lang'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\nimport { log } from '../Log'\n\nclass ExportResult {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.exportResult, () => {\n this.output()\n })\n }\n\n private async output() {\n if (store.result.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n const resultList = await Utils.json2BlobSafe(store.result)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `result-total ${result.total}-${Utils.replaceUnsafeStr(\n Tools.getPageTitle()\n )}-${Utils.replaceUnsafeStr(\n store.crawlCompleteTime.toLocaleString()\n )}.json`\n )\n }\n\n const msg = lang.transl('_导出成功')\n log.success(msg)\n toast.success(msg)\n }\n}\n\nnew ExportResult()\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { Config } from '../Config'\nimport { store } from '../store/Store'\nimport { Result } from '../store/StoreType'\nimport { fileName } from '../FileName'\nimport { createCSV } from '../utils/CreateCSV'\nimport { toast } from '../Toast'\nimport { Utils } from '../utils/Utils'\nimport { showHelp } from '../ShowHelp'\n\n// 定义字段信息\ninterface Field {\n name: string\n index: keyof Result\n}\n// name 这个字段在 csv 里的标题\n// index 这个字段在数据里的索引名\n\n// 导出抓取结果为 csv 文件\nclass ExportResult2CSV {\n constructor() {\n window.addEventListener(EVT.list.exportCSV, () => {\n this.beforeCreate()\n })\n }\n\n // 定义要保存的字段\n private readonly fieldCfg: Field[] = [\n {\n name: 'id',\n index: 'idNum',\n },\n {\n name: 'tags',\n index: 'tags',\n },\n {\n name: 'tags_transl',\n index: 'tagsTranslOnly',\n },\n {\n name: 'user',\n index: 'user',\n },\n {\n name: 'userId',\n index: 'userId',\n },\n {\n name: 'title',\n index: 'title',\n },\n {\n name: 'description',\n index: 'description',\n },\n {\n name: 'type',\n index: 'type',\n },\n {\n name: 'page',\n index: 'pageCount',\n },\n {\n name: 'bookmark',\n index: 'bmk',\n },\n {\n name: 'bookmarked',\n index: 'bookmarked',\n },\n {\n name: 'likeCount',\n index: 'likeCount',\n },\n {\n name: 'viewCount',\n index: 'viewCount',\n },\n {\n name: 'commentCount',\n index: 'commentCount',\n },\n {\n name: 'width',\n index: 'fullWidth',\n },\n {\n name: 'height',\n index: 'fullHeight',\n },\n {\n name: 'xRestrict',\n index: 'xRestrict',\n },\n {\n name: 'AI',\n index: 'aiType',\n },\n {\n name: 'date',\n index: 'date',\n },\n {\n name: 'original',\n index: 'original',\n },\n {\n name: 'thumb',\n index: 'thumb',\n },\n // fileName 字段的 index 属性可以随便写,因为没有影响。\n {\n name: 'fileName',\n index: 'title',\n },\n ]\n\n private beforeCreate() {\n // 如果没有数据则不执行\n if (store.result.length === 0) {\n toast.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n // 使用 result 而不使用 resultMeta。主要是因为断点续传时只会恢复 result,不会恢复 resultMeta,所以 result 最可靠。考虑如下情况:\n // 1:刷新页面后,断点续传恢复了保存的数据,此时只有 result 里有数据,resultMeta 没有数据。\n // 2: 如果在页面 A 进行了下载,resultMeta 保存的是页面 A 的数据。此时进入页面 B,恢复了 B 页面保存的任务,此时 resultMeta 里还是页面 A 的数据。\n // 所以还是使用 result 比较可靠,不易出问题。\n this.create(store.result)\n }\n\n private create(data: Result[]) {\n const body: any[][] = [] // 内容数组\n\n // 标题数组\n const head: string[] = []\n for (const field of this.fieldCfg) {\n head.push(field.name)\n }\n body.push(head)\n\n // 循环每个作品的数据\n for (const d of data) {\n // 每个作品只导出一条记录\n // 如果是多图作品里第一张图之后的图片数据,则跳过\n const index = d.index ?? Tools.getResultIndex(d)\n if (index > 0) {\n continue\n }\n\n const bodyItem: any[] = [] // 储存这个作品生成的所有字段\n // 生成每个字段的结果\n for (const field of this.fieldCfg) {\n if (field.name === 'fileName') {\n bodyItem.push(fileName.createFileName(d))\n } else {\n let result = d[field.index] ?? ''\n\n // 对于某些字段,将其内容特殊化处理\n if (field.name === 'type') {\n result = Config.worksTypeName[result as number]\n }\n\n if (field.name === 'bookmarked') {\n result = (result as boolean) ? 'Yes' : 'No'\n }\n\n if (field.name === 'xRestrict') {\n result = Tools.getXRestrictText(result as number) || ''\n }\n\n if (field.name === 'AI') {\n result = Tools.getAITypeText(d.aiType || 0)\n }\n\n bodyItem.push(result)\n }\n }\n // 把这个作品的数据添加到内容数组里\n body.push(bodyItem)\n }\n\n const csv = createCSV.create(body)\n const csvURL = URL.createObjectURL(csv)\n\n // 设置文件名\n let csvName = `result-total ${body.length - 1}-${Utils.replaceUnsafeStr(\n Tools.getPageTitle()\n )}-${Utils.replaceUnsafeStr(store.crawlCompleteTime.toLocaleString())}.csv`\n\n Utils.downloadFile(csvURL, csvName)\n\n toast.success(lang.transl('_导出成功'))\n\n showHelp.show('tipCSV', lang.transl('_导出CSV文件的提示'))\n }\n}\n\nnew ExportResult2CSV()\n","import { EVT } from '../EVT'\nimport { Result } from '../store/StoreType'\nimport { lang } from '../Lang'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\nimport { store } from '../store/Store'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { filter } from '../filter/Filter'\n\nclass ImportResult {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.importResult, () => {\n if (states.busy) {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n this.import()\n })\n }\n\n private async import() {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as Result[]\n if (!loadedJSON) {\n return\n }\n\n // 要求是数组并且要有内容\n if (!Array.isArray(loadedJSON) || !loadedJSON.length || !loadedJSON[0]) {\n return toast.error(lang.transl('_格式错误'))\n }\n\n // 检查是否含有必须的字段(只检查了一部分)\n const keys = Object.keys(loadedJSON[0])\n const need = ['idNum', 'id', 'original', 'type', 'ext']\n for (const field of need) {\n if (!keys.includes(field)) {\n return toast.error(lang.transl('_格式错误'))\n }\n }\n\n // 根据过滤选项,过滤导入的结果\n const temp: Result[] = []\n for (const result of loadedJSON) {\n const check = await filter.check({\n aiType: result.aiType,\n id: result.idNum,\n workType: result.type,\n pageCount: result.pageCount,\n tags: result.tagsWithTransl,\n bookmarkCount: result.bmk,\n bookmarkData: result.bookmarked,\n width: result.pageCount === 1 ? result.fullWidth : 0,\n height: result.pageCount === 1 ? result.fullHeight : 0,\n createDate: result.date,\n userId: result.userId,\n xRestrict: result.xRestrict,\n })\n if (check) {\n temp.push(result)\n }\n }\n\n // 如果没有符合过滤条件的结果\n if (temp.length === 0) {\n msgBox.warning(lang.transl('_没有符合条件的结果'))\n return\n }\n\n // 恢复数据\n // 通过 store.addResult 添加数据,可以应用多图作品设置,对导入的结果进行调整\n store.reset()\n for (const r of temp) {\n store.addResult(r)\n }\n\n // 发送通知\n EVT.fire('crawlComplete')\n\n msgBox.success(lang.transl('_导入成功'))\n }\n}\n\nnew ImportResult()\n","import { NovelMeta } from '../store/StoreType'\nimport { settings } from '../setting/Settings'\nimport { Tools } from '../Tools'\nimport { Utils } from '../utils/Utils'\nimport { downloadNovelEmbeddedImage } from './DownloadNovelEmbeddedImage'\n\ndeclare const EpubMaker: any\n\nclass MakeNovelFile {\n static async make(data: NovelMeta, type = settings.novelSaveAs) {\n if (type === 'txt') {\n return this.makeTXT(data, settings.saveNovelMeta)\n }\n return this.makeEPUB(data, settings.saveNovelMeta)\n }\n\n static makeTXT(data: NovelMeta, saveMeta = true) {\n let content = saveMeta ? data.meta + data.content : data.content\n\n // 替换换行标签,移除 html 标签\n content = content.replace(/
    /g, '\\n').replace(/<\\/?.+?>/g, '')\n\n return new Blob([content], {\n type: 'text/plain',\n })\n }\n\n static makeEPUB(data: NovelMeta, saveMeta = true): Promise {\n return new Promise(async (resolve, reject) => {\n let content = saveMeta ? data.meta + data.content : data.content\n\n content = Tools.replaceEPUBText(content)\n\n // 添加小说里内嵌的图片。这部分必须放在 replaceEPUBText 后面,否则 标签的左尖括号会被转义\n content = await downloadNovelEmbeddedImage.EPUB(\n content,\n data.embeddedImages\n )\n\n // epub 内部会使用标题 title 建立一个文件夹,把一些文件存放进去,所以要替换掉标题的特殊字符。特殊字符会导致这个文件夹名被截断,结果就是这个 epub 文件无法被解析。\n const userName = Tools.replaceEPUBText(\n Utils.replaceUnsafeStr(data.userName)\n )\n const title = Tools.replaceEPUBText(Utils.replaceUnsafeStr(data.title))\n new EpubMaker()\n .withTemplate('idpf-wasteland')\n .withAuthor(userName)\n .withModificationDate(new Date(data.createDate))\n .withRights({\n description: Tools.replaceEPUBText(data.description),\n license: '',\n })\n .withAttributionUrl(\n `https://www.pixiv.net/novel/show.php?id=${data.id}`\n )\n .withCover(data.coverUrl, {\n license: '',\n attributionUrl: '',\n })\n .withTitle(title)\n .withSection(\n new EpubMaker.Section(\n 'chapter',\n null,\n {\n title: title,\n content: content,\n },\n true,\n true\n )\n )\n .makeEpub()\n .then((blob: Blob) => {\n resolve(blob)\n })\n })\n }\n}\n\nexport { MakeNovelFile }\n","import { store } from '../store/Store'\nimport { Result } from '../store/StoreType'\nimport { EVT } from '../EVT'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\nimport { settings } from '../setting/Settings'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { downloadNovelCover } from '../download/DownloadNovelCover'\nimport { downloadNovelEmbeddedImage } from './DownloadNovelEmbeddedImage'\n\n// 单个小说的数据\ninterface NovelData {\n /**小说在系列中的排序,是从 1 开始的数字 */\n no: number\n title: string\n content: string\n embeddedImages: null | {\n [key: string]: string\n }\n}\n\n// https://github.com/bbottema/js-epub-maker\ndeclare const EpubMaker: any\n\nclass MergeNovel {\n constructor() {\n this.init()\n }\n\n private readonly CRLF = '\\n' // pixiv 小说的换行符\n\n /**在文件开头添加的元数据 */\n private meta = ''\n\n private init() {\n window.addEventListener(EVT.list.crawlComplete, () => {\n window.setTimeout(() => {\n if (states.mergeNovel) {\n this.merge()\n }\n }, 0)\n })\n }\n\n private async merge() {\n if (\n store.resultMeta.length === 0 ||\n store.resultMeta[0].novelMeta === null\n ) {\n states.mergeNovel = false\n return\n }\n\n // 因为结果里的小说顺序可能是乱的,所以需要按照小说的序号对结果进行排序\n const allResult = store.resultMeta.sort(\n Utils.sortByProperty('seriesOrder', 'asc')\n )\n\n const firstResult = store.resultMeta[0]\n\n // 汇总小说数据\n const allNovelData: NovelData[] = []\n for (const result of allResult) {\n allNovelData.push({\n no: result.seriesOrder!,\n title: Utils.replaceUnsafeStr(result.title),\n content: result.novelMeta!.content,\n embeddedImages: result.novelMeta!.embeddedImages,\n })\n }\n\n // 生成 meta 文本\n this.meta = ''\n if (settings.saveNovelMeta) {\n const metaArray: string[] = []\n // 系列标题\n metaArray.push(firstResult.seriesTitle!)\n // 作者\n metaArray.push(firstResult.user)\n // 网址链接\n const link = `https://www.pixiv.net/novel/series/${firstResult.seriesId}`\n metaArray.push(link + this.CRLF.repeat(2))\n // 设定资料\n if (store.novelSeriesGlossary) {\n metaArray.push(store.novelSeriesGlossary)\n }\n\n this.meta = metaArray.join(this.CRLF.repeat(2))\n }\n\n // 生成小说文件并下载\n let file: Blob | null = null\n const novelName = `${firstResult.seriesTitle}-tags_${firstResult.tags}-user_${firstResult.user}-seriesId_${firstResult.seriesId}.${settings.novelSaveAs}`\n if (settings.novelSaveAs === 'txt') {\n file = await this.makeTXT(allNovelData)\n // 保存为 txt 格式时,在这里下载小说内嵌的图片\n for (const result of allResult) {\n await downloadNovelEmbeddedImage.TXT(\n result.novelMeta!.content,\n result.novelMeta!.embeddedImages,\n novelName,\n 'mergeNovel'\n )\n }\n } else {\n file = await this.makeEPUB(allNovelData, firstResult)\n }\n\n const url = URL.createObjectURL(file)\n Utils.downloadFile(url, Utils.replaceUnsafeStr(novelName))\n\n states.mergeNovel = false\n EVT.fire('downloadComplete')\n\n // 保存第一个小说的封面图片\n // 实际上系列的封面不一定是第一个小说的封面,这里用第一个小说的封面凑合一下\n if (firstResult.novelMeta?.coverUrl) {\n downloadNovelCover.download(\n firstResult.novelMeta.coverUrl,\n novelName,\n 'mergeNovel'\n )\n }\n\n store.reset()\n }\n\n private async makeTXT(novelDataArray: NovelData[]): Promise {\n return new Promise(async (resolve, reject) => {\n const result: string[] = []\n if (settings.saveNovelMeta) {\n result.push(this.meta)\n }\n\n for (const data of novelDataArray) {\n // 添加章节名\n result.push(`${this.chapterNo(data.no)} ${data.title}`)\n // 在章节名与正文之间添加换行\n result.push(this.CRLF.repeat(2))\n // 添加正文\n // 替换换行标签,移除 html 标签\n result.push(\n data.content.replace(/
    /g, this.CRLF).replace(/<\\/?.+?>/g, '')\n )\n // 在正文结尾添加换行标记,使得不同章节之间区分开来\n result.push(this.CRLF.repeat(4))\n }\n\n const blob = new Blob(result, {\n type: 'text/plain',\n })\n return resolve(blob)\n })\n }\n\n private makeEPUB(\n novelDataArray: NovelData[],\n firstResult: Result\n ): Promise {\n return new Promise(async (resolve, reject) => {\n // 添加一些元数据\n let epubData = new EpubMaker()\n .withTemplate('idpf-wasteland')\n .withAuthor(Utils.replaceUnsafeStr(firstResult.novelMeta!.userName))\n .withModificationDate(new Date(firstResult.novelMeta!.createDate))\n .withRights({\n description: firstResult.novelMeta!.description,\n license: '',\n })\n .withAttributionUrl(\n `https://www.pixiv.net/novel/show.php?id=${firstResult.novelMeta!.id}`\n )\n .withCover(firstResult.novelMeta!.coverUrl, {\n license: '',\n attributionUrl: '',\n })\n .withTitle(Utils.replaceUnsafeStr(firstResult.seriesTitle!))\n\n // 下面注释的伪代码是用于创建二级目录用的。目前 pixiv 的小说只需要一层目录就够了,所以这里的代码未被使用\n // const Section = new EpubMaker.Section(...........)\n // for (const data of novelDataArray) {\n // Section.withSubSection(\n // new EpubMaker.Section(...........)\n // )\n // }\n // epubData = epubData.withSection(Section)\n\n if (settings.saveNovelMeta) {\n epubData.withSection(\n new EpubMaker.Section(\n 'chapter',\n 0,\n {\n title: lang.transl('_设定资料'),\n content: Tools.replaceEPUBText(this.meta),\n },\n true,\n true\n )\n )\n }\n\n // 为每一篇小说创建一个章节\n for (const data of novelDataArray) {\n let content = Tools.replaceEPUBText(data.content)\n\n // 添加小说里内嵌的图片。这部分必须放在 replaceEPUBText 后面,否则 标签的左尖括号会被转义\n content = await downloadNovelEmbeddedImage.EPUB(\n content,\n data.embeddedImages\n )\n\n // 创建 epub 文件时不需要在标题和正文后面添加换行符\n epubData.withSection(\n new EpubMaker.Section(\n 'chapter',\n data.no,\n {\n title: `${this.chapterNo(data.no)} ${data.title}`,\n content: content,\n },\n true,\n true\n )\n // 倒数第二个参数是 includeInToc,必须为 true,否则某些小说阅读软件无法读取章节信息\n // includeInToc 的作用是在 .ncx 文件和 nav.xhtml 文件里添加导航信息\n )\n }\n\n epubData.makeEpub().then((blob: Blob) => {\n resolve(blob)\n })\n })\n }\n\n // 在每个小说的开头加上章节编号\n // 在 TXT 格式的小说里添加章节编号,可以使小说阅读软件能够识别章节,以及显示章节导航,提高阅读体验\n // 对于 EPUB 格式的小说,由于其内部自带分章结构,所以并不依赖这里的章节编号\n private chapterNo(number: number | string) {\n // 如果是中文用户,返回“第N章”。这样最容易被国内的小说阅读软件识别出来\n if (lang.type === 'zh-cn' || lang.type === 'zh-tw' || lang.type === 'ja') {\n return `第${number}章`\n } else {\n // 对于其他地区,返回 `Chapter N`。但是由于我没有使用过国外的小说阅读软件,所以并不清楚是否能够起到分章作用\n return `Chapter ${number}`\n }\n // 我还尝试过使用 #1 这样的编号,但是这种方式并不可靠,有的小说可以分章有的小说不可以\n }\n}\n\nnew MergeNovel()\n","// 下载进度条\nimport { store } from '../store/Store'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { EVT } from '../EVT'\n\ninterface ProgressBarEl {\n name: HTMLSpanElement\n loaded: HTMLSpanElement\n progress: HTMLDivElement\n}\n\ninterface ProgressData {\n name: string\n loaded: number\n total: number\n}\n\n// 进度条\nclass ProgressBar {\n constructor() {\n this.createElements()\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private readonly wrapHTML = `\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n 0\n /\n 0\n
    \n
    \n
    \n\n
      \n
      \n `\n\n private readonly barHTML = `
    • \n
      \n
      \n
      \n
      \n \n \n \n \n
      \n
    • `\n\n private wrap!: HTMLDivElement\n private downloadedEl!: HTMLSpanElement\n private progressColorEl!: HTMLDivElement\n private listWrap!: HTMLUListElement\n private totalNumberEl!: HTMLSpanElement\n private allProgressBar: ProgressBarEl[] = []\n\n private readonly KB = 1024\n private readonly MB = 1024 * 1024\n\n private createElements() {\n this.wrap = Tools.useSlot('progressBar', this.wrapHTML) as HTMLDivElement\n this.downloadedEl = this.wrap.querySelector(\n '.downloaded'\n ) as HTMLSpanElement\n this.progressColorEl = this.wrap.querySelector(\n '.progress1'\n ) as HTMLDivElement\n this.listWrap = this.wrap.querySelector(\n '.progressBarList'\n ) as HTMLUListElement\n this.totalNumberEl = this.wrap.querySelector(\n '.totalNumber'\n ) as HTMLSpanElement\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.hide()\n })\n }\n\n // 重设所有进度\n public reset(progressBarNum: number, downloaded: number = 0) {\n if (progressBarNum === 0) {\n // 如果进度条数量为 0(抓取结果为空),则隐藏进度条区域\n return this.hide()\n }\n\n // 重置总进度条\n this.setTotalProgress(downloaded)\n this.totalNumberEl.textContent = store.result.length.toString()\n // 重置子进度条\n this.listWrap.innerHTML = this.barHTML.repeat(progressBarNum)\n\n this.show()\n\n // 保存子进度条上需要使用到的元素\n const allProgressBar = this.listWrap.querySelectorAll('.downloadBar')\n this.allProgressBar = []\n for (const bar of allProgressBar) {\n const data: ProgressBarEl = {\n name: bar.querySelector('.fileName')! as HTMLSpanElement,\n loaded: bar.querySelector('.loaded')! as HTMLSpanElement,\n progress: bar.querySelector('.progress')! as HTMLDivElement,\n }\n\n this.allProgressBar.push(data)\n }\n }\n\n // 设置总进度条的进度\n public setTotalProgress(downloaded: number) {\n this.downloadedEl.textContent = downloaded.toString()\n\n const progress = (downloaded / store.result.length) * 100\n this.progressColorEl.style.width = progress + '%'\n }\n\n // 设置子进度条的进度\n public setProgress(index: number, data: ProgressData) {\n const bar = this.allProgressBar[index]\n if (!bar) {\n console.error(index, this.allProgressBar)\n return\n }\n bar.name.textContent = data.name\n bar.name.setAttribute('title', data.name)\n\n let text = ''\n if (data.total >= this.MB) {\n // 如果判断条件加上: || data.total === 0\n // 则文件未下载时显示的默认单位会是 MiB\n // 使用 MiB 作为单位\n text = `${(data.loaded / this.MB).toFixed(1)}/${(\n data.total / this.MB\n ).toFixed(1)} MiB`\n } else {\n // 使用 KiB 作为单位\n text = `${Math.floor(data.loaded / this.KB)}/${Math.floor(\n data.total / this.KB\n )} KiB`\n }\n\n bar.loaded.textContent = text\n\n const progress = data.loaded / data.total || 0 // 若结果为 NaN 则设为 0\n bar.progress.style.width = progress * 100 + '%'\n }\n\n // 让某个子进度条显示警告色\n public errorColor(index: number, show: boolean) {\n const bar = this.allProgressBar[index]\n if (!bar) {\n console.error(index, this.allProgressBar)\n return\n }\n bar.name.classList[show ? 'add' : 'remove']('downloadError')\n }\n\n private show() {\n this.wrap.style.display = 'block'\n }\n\n private hide() {\n this.wrap.style.display = 'none'\n }\n}\n\nconst progressBar = new ProgressBar()\nexport { progressBar }\n","import { EVT } from '../EVT'\nimport { log } from '../Log'\nimport { lang } from '../Lang'\nimport { store } from '../store/Store'\nimport { states } from '../store/States'\nimport { downloadStates, DLStatesI } from './DownloadStates'\nimport { Result } from '../store/StoreType'\nimport { IndexedDB } from '../utils/IndexedDB'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\ninterface TaskMeta {\n id: number\n url: string\n URLWhenCrawlStart: string\n part: number\n date: Date\n}\n\ninterface TaskData {\n id: number\n data: Result[]\n}\n\ninterface TaskStates {\n id: number\n states: DLStatesI\n}\n\n// 断点续传。恢复未完成的下载\nclass Resume {\n constructor() {\n this.IDB = new IndexedDB()\n this.init()\n }\n\n private IDB: IndexedDB\n private readonly DBName = 'PBD'\n private readonly DBVer = 3\n private metaName = 'taskMeta' // 下载任务元数据的表名\n private dataName = 'taskData' // 下载任务数据的表名\n private statesName = 'taskStates' // 下载状态列表的表名\n // 本模块所操作的下载数据的 id\n private taskId!: number\n\n private part: number[] = [] // 储存每个分段里的数据的数量\n\n private try = 0 // 任务结果是分批储存的,记录每批失败了几次。根据失败次数减少每批的数量\n\n // 尝试存储抓取结果时,单次存储的数量不能超过这个数字。因为超过这个数字可能会碰到单次存储的上限\n // 由于每个结果的体积可能不同,所以这只是一个预估值\n // 这有助于减少尝试次数。因为存储的思路是存储失败时改为上次数量的 1/2。例如有 100 w 个结果,存储算法会依次尝试存入 100 w、50 w、25 w、12.5 w 以此类推,直到最后有一次能成功存储一批数据。这样的话就进行了 4 次尝试才成功存入一批数据。但通过直接指定一批数据的大小为 onceMax,理想情况下可以只尝试一次就成功存入一批数据。\n // 非理想情况下,即这个数量的结果已经超过了单次存储上限(目前推测这可能会在大量抓取小说、动图时出现;如果抓取的作品大部分是插画、漫画,这个数量的结果应该不可能超出存储上限),那么这不会减少尝试数量,但因为每次尝试存储的数量不会超过这个数字,这依然有助于减少每次尝试时的资源占用、耗费时间。\n private readonly onceMax = 150000\n\n private readonly putStatesTime = 1000 // 每隔指定时间存储一次最新的下载状态\n\n private needPutStates = false // 指示是否需要更新存储的下载状态\n\n private async init() {\n if (!Utils.isPixiv()) {\n return\n }\n\n await this.initDB()\n this.bindEvents()\n\n if (states.settingInitialized) {\n this.restoreData()\n }\n\n this.regularPutStates()\n this.clearExired()\n }\n\n // 初始化数据库,获取数据库对象\n private async initDB() {\n // 在升级事件里创建表和索引\n const onUpdate = (db: IDBDatabase) => {\n if (!db.objectStoreNames.contains(this.metaName)) {\n const metaStore = db.createObjectStore(this.metaName, {\n keyPath: 'id',\n })\n metaStore.createIndex('id', 'id', { unique: true })\n metaStore.createIndex('url', 'url', { unique: true })\n }\n\n if (!db.objectStoreNames.contains(this.dataName)) {\n const dataStore = db.createObjectStore(this.dataName, {\n keyPath: 'id',\n })\n dataStore.createIndex('id', 'id', { unique: true })\n }\n\n if (!db.objectStoreNames.contains(this.statesName)) {\n const statesStore = db.createObjectStore(this.statesName, {\n keyPath: 'id',\n })\n statesStore.createIndex('id', 'id', { unique: true })\n }\n }\n\n // 打开数据库\n return new Promise(async (resolve, reject) => {\n resolve(await this.IDB.open(this.DBName, this.DBVer, onUpdate))\n })\n }\n\n private bindEvents() {\n // 切换页面时,重新检查恢复数据\n const restoreEvt = [EVT.list.pageSwitch, EVT.list.settingInitialized]\n restoreEvt.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.restoreData()\n })\n })\n\n // 抓取完成时,保存这次任务的数据\n const evs = [EVT.list.crawlComplete, EVT.list.resultChange]\n for (const ev of evs) {\n window.addEventListener(ev, async () => {\n this.saveData()\n })\n }\n\n // 当有文件下载完成或者跳过下载时,更新下载状态\n const saveEv = [EVT.list.downloadSuccess, EVT.list.skipDownload]\n saveEv.forEach((val) => {\n window.addEventListener(val, () => {\n this.needPutStates = true\n })\n })\n\n // 任务下载完毕时,以及停止任务时,清除这次任务的数据\n const clearDataEv = [EVT.list.downloadComplete, EVT.list.downloadStop]\n for (const ev of clearDataEv) {\n window.addEventListener(ev, async () => {\n this.clearData()\n })\n }\n\n // 清空已保存的抓取结果\n window.addEventListener(EVT.list.clearSavedCrawl, () => {\n this.clearSavedCrawl()\n })\n }\n\n // 恢复未完成任务的数据\n private async restoreData() {\n // 如果下载器在抓取或者在下载,则不恢复数据\n if (states.busy) {\n return\n }\n\n // 1 获取任务的元数据\n const meta = (await this.IDB.get(\n this.metaName,\n this.getURL(),\n 'url'\n )) as TaskMeta | null\n if (!meta) {\n return\n }\n\n log.warning(lang.transl('_正在恢复抓取结果'))\n\n this.taskId = meta.id\n\n // 2 恢复抓取结果\n\n // 生成每批数据的 id 列表\n const dataIdList: number[] = this.createIdList(meta.id, meta.part)\n // 读取全部数据并恢复\n const promiseList = []\n for (const id of dataIdList) {\n promiseList.push(this.IDB.get(this.dataName, id))\n }\n\n await Promise.all(promiseList).then((res) => {\n // 恢复数据时不适合使用 store.addResult,因为那样会被多图作品设置影响,可能导致恢复的数据和之前下载时不一致\n // 所以这里直接替换整个 store.result\n store.result = []\n const r = res as TaskData[]\n for (const taskData of r) {\n for (const data of taskData.data) {\n store.result.push(data)\n }\n }\n\n store.resetDownloadCount()\n })\n\n // 3 恢复下载状态\n const data = (await this.IDB.get(\n this.statesName,\n this.taskId\n )) as TaskStates\n\n if (data) {\n downloadStates.replace(data.states)\n }\n\n store.crawlCompleteTime = meta.date\n store.URLWhenCrawlStart = meta.URLWhenCrawlStart || ''\n\n // 恢复模式就绪\n log.success(lang.transl('_已恢复抓取结果'), 2)\n EVT.fire('resume')\n }\n\n private async saveData() {\n if (states.mergeNovel) {\n return\n }\n // 首先检查这个网址下是否已经存在数据,如果有数据,则清除之前的数据,保持每个网址只有一份数据\n const taskData = (await this.IDB.get(\n this.metaName,\n this.getURL(),\n 'url'\n )) as TaskMeta | null\n\n if (taskData) {\n await this.IDB.delete(this.metaName, taskData.id)\n await this.IDB.delete(this.statesName, taskData.id)\n }\n\n // 保存本次任务的数据\n // 如果此时本次任务已经完成,就不进行保存了\n if (downloadStates.downloadedCount() === store.result.length) {\n return\n }\n\n log.warning(lang.transl('_正在保存抓取结果'))\n this.taskId = new Date().getTime()\n\n this.part = []\n\n await this.saveTaskData()\n\n // 保存 meta 数据\n const metaData = {\n id: this.taskId,\n url: this.getURL(),\n URLWhenCrawlStart: store.URLWhenCrawlStart,\n part: this.part.length,\n date: store.crawlCompleteTime,\n }\n\n this.IDB.add(this.metaName, metaData)\n\n // 保存 states 数据\n const statesData = {\n id: this.taskId,\n states: downloadStates.states,\n }\n\n this.IDB.add(this.statesName, statesData)\n\n log.success(lang.transl('_已保存抓取结果'), 2)\n }\n\n // 存储抓取结果\n private async saveTaskData() {\n return new Promise(async (resolve, reject) => {\n // 每一批任务的第一次执行会尝试保存所有剩余数据(0.5 的 0 次幂是 1)\n // 如果出错了,则每次执行会尝试保存上一次数据量的一半,直到这次存储成功\n // 之后继续进行下一批任务(如果有)\n let tryNum = Math.floor(store.result.length * Math.pow(0.5, this.try))\n // 如果这批尝试数据大于指定数量,则设置为指定数量\n tryNum > this.onceMax && (tryNum = this.onceMax)\n let data = {\n id: this.numAppendNum(this.taskId, this.part.length),\n data: store.result.slice(\n this.getPartTotal(),\n this.getPartTotal() + tryNum\n ),\n }\n\n try {\n // 当成功存储了一批数据时\n await this.IDB.add(this.dataName, data)\n this.part.push(data.data.length) // 记录这一次保存的结果数量\n this.try = 0 // 重置已尝试次数\n\n // 任务数据全部添加完毕\n if (this.getPartTotal() >= store.result.length) {\n resolve(true)\n } else {\n // 任务数据没有添加完毕,继续添加\n resolve(this.saveTaskData())\n }\n } catch (error) {\n // 当存储失败时\n console.error(error)\n if (error.target && error.target.error && error.target.error.message) {\n const msg = error.target.error.message as string\n if (msg.includes('too large')) {\n // 体积超大\n // 尝试次数 + 1 ,进行下一次尝试\n this.try++\n resolve(this.saveTaskData())\n } else {\n // 未知错误,不再进行尝试\n this.try = 0\n log.error('IndexedDB: ' + msg)\n reject(error)\n }\n }\n }\n })\n }\n\n // 定时 put 下载状态\n private async regularPutStates() {\n window.setInterval(() => {\n if (this.needPutStates) {\n const statesData = {\n id: this.taskId,\n states: downloadStates.states,\n }\n this.needPutStates = false\n // 如果此时本次任务已经完成,就不进行保存了\n if (downloadStates.downloadedCount() === store.result.length) {\n return\n }\n this.IDB.put(this.statesName, statesData)\n }\n }, this.putStatesTime)\n }\n\n private async clearData() {\n if (!this.taskId) {\n return\n }\n const meta = (await this.IDB.get(this.metaName, this.taskId)) as TaskMeta\n\n if (!meta) {\n return\n }\n\n this.IDB.delete(this.metaName, this.taskId)\n this.IDB.delete(this.statesName, this.taskId)\n\n const dataIdList = this.createIdList(this.taskId, meta.part)\n for (const id of dataIdList) {\n this.IDB.delete(this.dataName, id)\n }\n }\n\n // 清除过期的数据\n private async clearExired() {\n // 数据的过期时间,设置为 30 天。30*24*60*60*1000\n const expiryTime = 2592000000\n\n // 每隔一天检查一次数据是否过期\n const nowTime = new Date().getTime()\n let lastCheckTime = 0\n const storeName = 'lastCheckExired'\n const data = localStorage.getItem(storeName)\n if (data === null) {\n localStorage.setItem(storeName, lastCheckTime.toString())\n } else {\n lastCheckTime = Number.parseInt(data)\n }\n if (nowTime - lastCheckTime < 86400000) {\n return\n }\n localStorage.setItem(storeName, nowTime.toString())\n\n // 检查数据是否过期\n const callback = (item: IDBCursorWithValue | null) => {\n if (item) {\n const data = item.value as TaskMeta\n if (nowTime - data.id > expiryTime) {\n this.IDB.delete(this.metaName, data.id)\n this.IDB.delete(this.statesName, data.id)\n\n const dataIdList = this.createIdList(data.id, data.part)\n for (const id of dataIdList) {\n this.IDB.delete(this.dataName, id)\n }\n }\n item.continue()\n }\n }\n\n this.IDB.openCursor(this.metaName, callback)\n }\n\n // 计算 part 数组里的数字之和\n private getPartTotal() {\n if (this.part.length === 0) {\n return 0\n }\n\n return this.part.reduce((prev, curr) => {\n return prev + curr\n })\n }\n\n // 处理本页面的 url\n private getURL() {\n return window.location.href.split('#')[0]\n }\n\n // 在数字后面追加数字\n // 用于在 task id 后面追加序号数字(part)\n private numAppendNum(id: number, num: number) {\n return parseInt(id.toString() + num)\n }\n\n // 根据 taskMeta 里的 id 和 part 数量,生成 taskData 里对应的数据的 id 列表\n private createIdList(taskid: number, part: number) {\n // part 记录数据分成了几部分,所以是从 1 开始的,而不是从 0 开始\n // 生成的 id 的结尾是从 0 开始增加的\n const arr = []\n let start = 0\n while (start < part) {\n arr.push(this.numAppendNum(taskid, start))\n start++\n }\n return arr\n }\n\n // 清空已保存的抓取结果\n private async clearSavedCrawl() {\n await Promise.all([\n this.IDB.clear(this.metaName),\n this.IDB.clear(this.dataName),\n this.IDB.clear(this.statesName),\n ])\n toast.success(lang.transl('_数据清除完毕'))\n }\n}\n\nnew Resume()\n","import { EVT } from '../EVT'\nimport { store } from '../store/Store'\nimport { DonwloadSuccessData } from './DownloadType'\nimport { fileName } from '../FileName'\nimport { Result } from '../store/StoreType'\nimport { settings } from '../setting/Settings'\nimport { Utils } from '../utils/Utils'\nimport { Tools } from '../Tools'\n\n// 为每个作品创建一个 txt 文件,保存这个作品的元数据\nclass SaveWorkMeta {\n constructor() {\n this.bindEvents()\n }\n\n // 保存已经下载了元数据的作品的 id\n private savedIds: number[] = []\n\n private readonly CRLF = '\\n' // txt 文件中使用的换行符\n\n private bindEvents() {\n // 当有作品文件下载成功时,保存其元数据\n window.addEventListener(EVT.list.downloadSuccess, (ev: CustomEventInit) => {\n const successData = ev.detail.data as DonwloadSuccessData\n this.saveMeta(Number.parseInt(successData.id))\n })\n\n // 当开始新的抓取时,清空保存的 id 列表\n window.addEventListener(EVT.list.crawlStart, () => {\n this.savedIds = []\n })\n }\n\n // 添加一项元数据\n // 在 name 和 value 后面添加换行符\n private addMeta(name: string, value: string) {\n return `${name}${this.CRLF}${value}${this.CRLF.repeat(2)}`\n }\n\n private getWorkURL(data: Result) {\n return `https://www.pixiv.net/${data.type === 3 ? 'n' : 'i'}/${data.idNum}`\n }\n\n private joinTags(tags: String[]) {\n const format = tags.map((tag) => '#' + tag)\n return format.join(this.CRLF)\n }\n\n // 根据作品类型判断是否需要保存它的元数据\n private checkNeedSave(type: 0 | 1 | 2 | 3): boolean {\n switch (type) {\n case 0:\n return settings.saveMetaType0\n case 1:\n return settings.saveMetaType1\n case 2:\n return settings.saveMetaType2\n case 3:\n return settings.saveMetaType3\n default:\n return false\n }\n }\n\n private saveMeta(id: number) {\n // 如果所有类型的作品都不需要保存元数据\n if (\n !settings.saveMetaType0 &&\n !settings.saveMetaType1 &&\n !settings.saveMetaType2 &&\n !settings.saveMetaType3\n ) {\n return\n }\n\n if (this.savedIds.includes(id)) {\n return\n }\n\n // 查找这个作品的数据\n const dataSource =\n store.resultMeta.length > 0 ? store.resultMeta : store.result\n const data = dataSource.find((val) => val.idNum === id)\n if (data === undefined) {\n console.error(`Not find ${id} in result`)\n return\n }\n\n if (this.checkNeedSave(data.type) === false) {\n return\n }\n\n // 添加文件内容\n const fileContent: string[] = []\n fileContent.push(this.addMeta('ID', data.idNum.toString()))\n fileContent.push(this.addMeta('URL', this.getWorkURL(data)))\n if (data.type !== 3) {\n fileContent.push(this.addMeta('Original', data.original))\n }\n fileContent.push(this.addMeta('Thumbnail', data.thumb))\n fileContent.push(\n this.addMeta('xRestrict', Tools.getXRestrictText(data.xRestrict)!)\n )\n fileContent.push(this.addMeta('AI', Tools.getAITypeText(data.aiType || 0)))\n fileContent.push(this.addMeta('User', data.user))\n fileContent.push(this.addMeta('UserID', data.userId))\n fileContent.push(this.addMeta('Title', data.title))\n fileContent.push(\n this.addMeta('Description', Utils.htmlToText(data.description))\n )\n fileContent.push(this.addMeta('Tags', this.joinTags(data.tags)))\n if (data.type !== 3) {\n fileContent.push(\n this.addMeta('Size', `${data.fullWidth} x ${data.fullHeight}`)\n )\n }\n fileContent.push(this.addMeta('Bookmark', data.bmk.toString()))\n fileContent.push(this.addMeta('Date', data.date))\n\n // 生成文件\n const blob = new Blob(fileContent, {\n type: 'text/plain',\n })\n\n // 生成文件名\n // 元数据文件需要和它对应的图片/小说文件的路径相同,文件名相似,这样它们才能在资源管理器里排在一起,便于查看\n\n // 生成这个数据的路径和文件名\n const _fileName = fileName.createFileName(data)\n // 取出后缀名之前的部分\n const index = _fileName.lastIndexOf('.')\n let part1 = _fileName.substring(0, index)\n\n if (!settings.zeroPadding) {\n // 把 id 字符串换成数字 id,这是为了去除 id 后面可能存在的序号,如 p0\n // 但如果用户启用了在序号前面填充 0,则不替换 id,因为文件名里的 id 后面可能带多个 0,如 p000,用 idNum 去替换的话替换不了后面两个 0\n part1 = part1.replace(data.id, data.idNum.toString())\n }\n // 拼接出元数据文件的文件名\n const metaFileName = `${part1}-meta.txt`\n\n // 发送下载请求\n // 因为我偷懒,所以后台不会返回下载状态,默认为下载成功\n chrome.runtime.sendMessage({\n msg: 'save_description_file',\n fileUrl: URL.createObjectURL(blob),\n fileName: metaFileName,\n })\n\n this.savedIds.push(id)\n }\n}\n\nnew SaveWorkMeta()\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\n\n// 显示正在转换的文件数量\nclass ShowConvertCount {\n constructor(el: HTMLElement) {\n this.el = el\n lang.register(this.el)\n this.bindEvents()\n }\n\n private el: HTMLElement // 显示提示文本的容器\n\n private bindEvents() {\n window.addEventListener(EVT.list.convertChange, (ev: CustomEventInit) => {\n const count = ev.detail.data\n if (count > 0) {\n lang.updateText(this.el, '_转换任务提示', count.toString())\n } else {\n this.el.textContent = ''\n lang.updateText(this.el, '')\n }\n })\n }\n}\n\nexport { ShowConvertCount }\n","import { Colors } from '../Colors'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\n\n// 显示下载状态\nclass ShowDownloadStates {\n constructor(el: HTMLElement) {\n this.el = el\n this.bindEvents()\n }\n\n private el: HTMLElement\n\n private bindEvents() {\n for (const ev of [\n EVT.list.crawlComplete,\n EVT.list.resultChange,\n EVT.list.resume,\n ]) {\n window.addEventListener(ev, () => {\n this.setText('_未开始下载')\n })\n }\n\n window.addEventListener(EVT.list.downloadStart, () => {\n this.setText('_正在下载中')\n })\n\n window.addEventListener(EVT.list.downloadPause, () => {\n this.setText('_已暂停', '#f00')\n })\n\n window.addEventListener(EVT.list.downloadStop, () => {\n this.setText('_已停止', '#f00')\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n this.setText('_下载完毕', Colors.textSuccess)\n })\n }\n\n private setText(textFlag: string, color: string = Colors.bgBlue) {\n lang.updateText(this.el, textFlag)\n this.el.style.color = color\n }\n}\n\nexport { ShowDownloadStates }\n","import { store } from '../store/Store'\nimport { states } from '../store/States'\nimport { EVT } from '../EVT'\n\n// 在网页标题上显示剩余下载数量\nclass ShowRemainingDownloadOnTitle {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.setInterval(() => {\n this.show()\n }, 500)\n\n const removeStrEvents = [\n EVT.list.downloadStop,\n EVT.list.downloadComplete,\n EVT.list.crawlStart,\n ]\n\n for (const evt of removeStrEvents) {\n window.addEventListener(evt, () => {\n this.removeStr()\n })\n }\n }\n\n // 生成新的字符串\n private createStr() {\n if (store.remainingDownload > 0) {\n return ` ${store.remainingDownload} `\n }\n return ''\n }\n\n // 保存缓存的字符串,后面会需要在标题中查找缓存的字符串\n private str = this.createStr()\n\n // 检查标题中是否有下载状态的 flag\n // 如果没有,就不会显示剩余数量\n private checkStatusFlag() {\n return document.title.indexOf(']') > 0\n }\n\n private show() {\n if (!states.downloading || !this.checkStatusFlag()) {\n return\n }\n\n // 先移除旧的字符串,然后添加新的字符串\n const title = this.removeStr(document.title)\n\n this.str = this.createStr()\n\n if (!this.str || !title) {\n return\n }\n\n document.title = title.replace(']', ']' + this.str)\n }\n\n private removeStr(): undefined\n // 如果传入字符串,则不直接修改 document.title,以提高性能\n private removeStr(titleStr: string): string\n private removeStr(titleStr?: string) {\n if (!this.str) {\n return\n }\n\n if (titleStr) {\n return titleStr.replace(this.str, '')\n } else {\n document.title = document.title.replace(this.str, '')\n }\n }\n}\n\nnew ShowRemainingDownloadOnTitle()\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\n\n// 显示跳过下载的文件数量\nclass ShowSkipCount {\n constructor(el: HTMLElement) {\n this.el = el\n lang.register(this.el)\n this.bindEvents()\n }\n\n private count = 0 // 跳过下载的数量\n private el: HTMLElement // 显示提示文本的容器\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.reset()\n })\n\n window.addEventListener(EVT.list.downloadStop, () => {\n // 重置计数但不清空提示文字,因为用户还需要看\n this.count = 0\n })\n\n window.addEventListener(EVT.list.skipDownload, () => {\n this.addCount()\n })\n\n window.addEventListener(EVT.list.downloadStart, () => {\n if (this.count === 0) {\n this.reset()\n }\n })\n\n window.addEventListener(EVT.list.resultChange, () => {\n this.reset()\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n // 重置计数但不清空提示文字,因为用户还需要看\n this.count = 0\n })\n }\n\n private addCount() {\n this.count++\n lang.updateText(this.el, '_已跳过n个文件', this.count.toString())\n }\n\n private reset() {\n this.count = 0\n lang.updateText(this.el, '')\n }\n}\n\nexport { ShowSkipCount }\n","import { pageType } from '../PageType'\nimport { EVT } from '../EVT'\nimport { states } from '../store/States'\nimport { Tools } from '../Tools'\nimport { store } from '../store/Store'\n\n/**\n↑ 抓取中\n→ 等待下一步操作(搜索页)\n▶ 可以开始下载\n↓ 下载中\n║ 下载暂停\n■ 下载停止\n✓ 下载完毕\n☑ 下载完毕,并且此时的页面不是开始抓取时的页面(页面网址发生了变化)\n*/\nenum Flags {\n crawling = '↑',\n waiting = '→',\n readyDownload = '▶',\n downloading = '↓',\n paused = '║',\n stopped = '■',\n completed = '✓',\n completedAndPageURLChange = '☑',\n space = ' ',\n}\n\n// 把下载器运行中的状态添加到页面标题前面\nclass ShowStatusOnTitle {\n constructor() {\n this.bindEvents()\n }\n\n private flashingTimer: undefined | number // title 闪烁时,使用的定时器\n\n private pageSwitchTimer: undefined | number // 页面切换后,检查页面标题是否变化了的定时器\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.set(Flags.crawling)\n })\n\n window.addEventListener(EVT.list.worksUpdate, () => {\n this.set(Flags.waiting)\n })\n\n for (const ev of [\n EVT.list.crawlComplete,\n EVT.list.resultChange,\n EVT.list.resume,\n ]) {\n window.addEventListener(ev, () => {\n this.set(Flags.readyDownload)\n })\n }\n\n window.addEventListener(EVT.list.downloadStart, () => {\n this.set(Flags.downloading)\n })\n\n // 切换了页面之后,标题可能会被 pixiv 修改,这样就没有标记了\n // 在这里监听页面切换的事件,如果切换后下载器仍在下载中,则重新添加标记\n // 回调函数应该在 pixiv 修改标题之后执行\n // 但是 pageSwitch 触发时,标题尚未被 pixiv 修改。pixiv 是在 pageSwitch 之后修改标题的。\n // 所以我使用定时器来检查标题是否被 pixiv 修改了\n window.addEventListener(EVT.list.pageSwitch, () => {\n window.clearInterval(this.pageSwitchTimer)\n if (!states.downloading) {\n return\n }\n const nowTitle = Tools.getPageTitle()\n this.pageSwitchTimer = window.setInterval(() => {\n if (Tools.getPageTitle() !== nowTitle) {\n this.set(Flags.downloading)\n window.clearInterval(this.pageSwitchTimer)\n }\n }, 500)\n })\n\n // 切换同类型页面时,如果切换之前已经有了正常下载完成的标记,则将其修改为另一个标记\n window.addEventListener(EVT.list.pageSwitchedTypeNotChange, () => {\n if (\n this.includeFlag(Flags.completed) ||\n this.includeFlag(Flags.completedAndPageURLChange)\n ) {\n this.setCompleteFlag()\n }\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n this.setCompleteFlag()\n })\n\n window.addEventListener(EVT.list.downloadPause, () => {\n this.set(Flags.paused)\n })\n\n window.addEventListener(EVT.list.downloadStop, () => {\n this.set(Flags.stopped)\n })\n\n const resetEvents = [EVT.list.crawlEmpty, EVT.list.stopCrawl]\n resetEvents.forEach((event) => {\n window.addEventListener(event, () => {\n this.reset()\n })\n })\n }\n\n // 检查标题里是否含有标记\n private includeFlag(flag?: Flags) {\n if (!flag) {\n // 没有传递标记,则检查所有标记\n for (const value of Object.values(Flags)) {\n const str = `[${value}]`\n if (document.title.includes(str)) {\n return true\n }\n }\n } else {\n // 否则检查指定标记\n const str = `[${flag}]`\n return document.title.includes(str)\n }\n return false\n }\n\n // 重设 title\n private reset() {\n window.clearInterval(this.flashingTimer)\n\n const metaTagPage = [\n pageType.list.Artwork,\n pageType.list.UserHome,\n pageType.list.Novel,\n ]\n // 从 og:title 标签获取标题。og:title 标签是最早更新标题的。但不确定是否在所有页面上都可以直接使用 og:title 标签的内容,所以这里只在部分页面上使用\n if (metaTagPage.includes(pageType.type)) {\n const ogTitle = document.querySelector(\n 'meta[property=\"og:title\"]'\n )! as HTMLMetaElement\n if (ogTitle) {\n document.title = ogTitle.content\n return\n }\n }\n\n // 去掉 title 里的标记\n const index = document.title.indexOf(']')\n document.title = document.title.substring(index + 1)\n }\n\n // 在标题上显示指定标记\n private set(flag: Flags) {\n const str = `[${flag}]`\n // 如果 title 里没有标记,就添加标记\n if (!this.includeFlag()) {\n document.title = `${str} ${document.title}`\n } else {\n // 如果已经有标记了,则替换为新当前传入的标记\n document.title = document.title.replace(/\\[.?\\]/, str)\n }\n\n // 可以开始下载,或者等待下一步操作,进行闪烁提醒\n if (flag === Flags.readyDownload || flag === Flags.waiting) {\n this.flashing(flag)\n } else {\n window.clearInterval(this.flashingTimer)\n }\n }\n\n private setCompleteFlag() {\n let flag = Flags.completed\n if (\n store.URLWhenCrawlStart !== '' &&\n window.location.href !== store.URLWhenCrawlStart\n ) {\n flag = Flags.completedAndPageURLChange\n }\n this.set(flag)\n }\n\n // 闪烁提醒,把给定的标记替换成空白,来回切换\n private flashing(flag: Flags.readyDownload | Flags.waiting) {\n window.clearInterval(this.flashingTimer)\n const str = `[${flag}]`\n const whiteSpace = `[${Flags.space}]`\n this.flashingTimer = window.setInterval(() => {\n if (this.includeFlag(flag)) {\n // 如果含有标记,就替换成空白\n document.title = document.title.replace(str, whiteSpace)\n } else {\n if (this.includeFlag(Flags.space)) {\n // 如果含有空白,就替换成标记\n document.title = document.title.replace(whiteSpace, str)\n } else {\n // 如果都没有,一般是页面切换了,标题被重置了,取消闪烁\n window.clearInterval(this.flashingTimer)\n }\n }\n }, 500)\n }\n}\n\nnew ShowStatusOnTitle()\n","import { store } from '../store/Store'\nimport { states } from '../store/States'\nimport { EVT } from '../EVT'\n\n// 抓取阶段,在网页标题上显示抓取到的结果数量\nclass ShowTotalResultOnTitle {\n constructor() {\n this.bindEvents()\n }\n\n private enable = false\n\n private bindEvents() {\n const enableEvts = [EVT.list.crawlStart, EVT.list.resultChange]\n\n enableEvts.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.removeStr()\n this.enable = true\n })\n })\n\n const disableEvts = [\n EVT.list.downloadStart,\n EVT.list.downloadPause,\n EVT.list.downloadStop,\n ]\n\n disableEvts.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.removeStr()\n this.enable = false\n })\n })\n\n window.setInterval(() => {\n this.enable && this.show()\n }, 500)\n }\n\n // 生成新的字符串\n private createStr() {\n if (store.result.length > 0) {\n return ` ${store.result.length} `\n }\n return ''\n }\n\n // 保存缓存的字符串,后面会需要在标题中查找缓存的字符串\n private str = this.createStr()\n\n // 检查标题中是否有下载状态的 flag\n // 如果没有,就不会显示剩余数量\n private checkStatusFlag() {\n return document.title.indexOf(']') > 0\n }\n\n private show() {\n if (states.downloading || !this.checkStatusFlag()) {\n return\n }\n\n // 先移除旧的字符串,然后添加新的字符串\n const title = this.removeStr(document.title)\n\n this.str = this.createStr()\n\n if (!this.str || !title) {\n return\n }\n\n document.title = title.replace(']', ']' + this.str)\n }\n\n // 如果传入字符串,则不直接修改 document.title,以提高性能\n private removeStr(titleStr?: string) {\n if (!this.str) {\n return\n }\n\n if (titleStr) {\n return titleStr.replace(this.str, '')\n } else {\n document.title = document.title.replace(this.str, '')\n }\n }\n}\n\nnew ShowTotalResultOnTitle()\n","import { Utils } from '../utils/Utils'\n\n// 检查图片是否是黑白图片\n// 获取图片中 rgb 三色的平均值,如果很接近就判断为黑白图片\n// 这是一个不太可靠的方法,在少数情况下,彩色图片可能会被误判为黑白图片\nclass BlackAndWhiteImage {\n private readonly latitude = 1 // 宽容度\n\n public async check(imgUrl: string): Promise {\n // 加载图片\n let img: HTMLImageElement\n try {\n img = await this.loadImg(imgUrl)\n } catch (error) {\n // loadImg 失败时返回的 reject 会在这里被捕获\n // 直接把这个图片视为彩色图片\n return false\n }\n\n const imgData = this.getImageData(img)\n // 把图片的像素分为 4 份,依次检查它们的色彩\n const pixel = img.width * img.height\n const part = 4\n // 计算每一份有多少字节。由于像素数量可能不是 4 的整数倍,所以向下舍入\n let eachLength = Math.floor(pixel / part) * 4\n let times = 0\n\n while (times < part) {\n const start = times * eachLength\n times++\n const end = times * eachLength\n const bool = this.getResult(imgData, start, end)\n // 如果某一部分是彩色图片,就直接返回结果,把整个图片视为彩色图片\n // 如果这一部分是黑白图片,则继续检查下一部分\n if (!bool) {\n return false\n }\n }\n\n // 因为彩色图片会短路返回,所以执行到这里意味着所有部分都是黑白图片\n return true\n }\n\n private async loadImg(url: string): Promise {\n return new Promise(async (resolve, reject) => {\n // 如果传递的是 blobURL 就直接使用\n if (url.startsWith('blob')) {\n resolve(Utils.loadImg(url))\n } else {\n // 不是 blobURL 的话先获取图片\n const res = await fetch(url).catch((error) => {\n // fetch 加载图片可能会失败 TypeError: Failed to fetch\n console.log(`Load image error! url: ${url}`)\n })\n // 如果 fetch 加载图片失败,res 会是 undefined\n if (!res) {\n return reject()\n }\n const blob = await res.blob()\n const blobURL = URL.createObjectURL(blob)\n resolve(Utils.loadImg(blobURL))\n }\n })\n }\n\n private getImageData(img: HTMLImageElement) {\n const width = img.width\n const height = img.height\n\n const canvas = document.createElement('canvas')\n canvas.width = width\n canvas.height = height\n const con = canvas.getContext('2d')!\n con.drawImage(img, 0, 0)\n const imageData = con.getImageData(0, 0, width, height)\n\n return imageData.data\n }\n\n /**计算 r g b 三种颜色的平均值,判断是否是黑白图片\n *\n * 返回值 true 为黑白图片,false 为彩色图片\n */\n private getResult(imgData: Uint8ClampedArray, start: number, end: number) {\n // 把 R G B 值分别相加\n let r = 0\n let g = 0\n let b = 0\n\n const totalLength = end - start\n while (start < end) {\n r += imgData[start]\n g += imgData[start + 1]\n b += imgData[start + 2]\n start = start + 4\n }\n\n // 求平均值,并取整\n const pixel = totalLength / 4\n r = Math.round(r / pixel)\n g = Math.round(g / pixel)\n b = Math.round(b / pixel)\n\n // 如果 rgb 值相同则是黑白图片\n if (r === g && g === b) {\n return true\n } else {\n // 如果 rgb 值不相同,则根据宽容度判断是否为黑白图片\n // 因为获取 rgb 的结果时,进行了四舍五入,即使 rgb 非常接近,也可能会相差 1,所以我设置了一个宽容度\n const max = Math.max(r, g, b) // 取出 rgb 中的最大值\n const min = max - this.latitude // 允许的最小值\n // 如果 rgb 三个数值与最小的数值相比,差距都在宽容度之内,则视为黑白图片\n return [r, g, b].every((number) => {\n return number >= min\n })\n }\n }\n}\n\nconst blackAndWhiteImage = new BlackAndWhiteImage()\nexport { blackAndWhiteImage }\n","import { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { Utils } from '../utils/Utils'\nimport {\n settings,\n setSetting,\n BlockTagsForSpecificUserItem,\n} from '../setting/Settings'\nimport { API } from '../API'\nimport { theme } from '../Theme'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\n\n// 针对特定用户屏蔽 tag\nclass BlockTagsForSpecificUser {\n constructor() {\n this.createWrap()\n theme.register(this.wrap)\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private rules: typeof settings.blockTagsForSpecificUserList = []\n\n private wrap!: HTMLDivElement // 最外层元素\n\n private expandBtn!: HTMLButtonElement // 展开/折叠 按钮\n private totalSpan!: HTMLSpanElement // 显示规则数量\n private showAddBtn!: HTMLButtonElement // 添加 按钮,点击显示添加区域\n\n private addWrap!: HTMLDivElement // 用于添加新项目的区域\n private addInputUid!: HTMLInputElement // 用于添加新项目的 uid 的输入框\n private addInputTags!: HTMLInputElement // 用于添加新项目的 tags 的输入框\n private addBtn!: HTMLButtonElement // 添加 按钮\n private cancelBtn!: HTMLButtonElement // 取消 按钮\n\n private listWrap!: HTMLDivElement // 列表区域容器\n\n private _addWrapShow = false\n\n set addWrapShow(val: boolean) {\n this._addWrapShow = val\n this.addWrap.style.display = val ? 'block' : 'none'\n\n if (!val) {\n this.addInputUid.value = ''\n this.addInputTags.value = ''\n }\n }\n\n get addWrapShow() {\n return this._addWrapShow\n }\n\n private wrapHTML = `\n
      \n\n
      \n 0\n \n \n
      \n\n
      \n
      \n
      \n \n \n
      \n\n
      \n Tags\n \n
      \n\n
      \n \n\n \n \n
      \n
      \n
      \n\n
      \n
      \n
      \n `\n\n // 创建列表外部的容器,静态html\n private createWrap() {\n this.wrap = Tools.useSlot(\n 'blockTagsForSpecificUser',\n this.wrapHTML\n )! as HTMLDivElement\n this.expandBtn = this.wrap.querySelector('.expand')! as HTMLButtonElement\n this.showAddBtn = this.wrap.querySelector('.showAdd')! as HTMLButtonElement\n this.totalSpan = this.wrap.querySelector('.total')! as HTMLSpanElement\n this.addWrap = this.wrap.querySelector('.addWrap')! as HTMLDivElement\n this.addInputUid = this.wrap.querySelector(\n '.addUidInput'\n )! as HTMLInputElement\n this.addInputTags = this.wrap.querySelector(\n '.addTagsInput'\n )! as HTMLInputElement\n this.addBtn = this.wrap.querySelector('.add')! as HTMLButtonElement\n this.cancelBtn = this.wrap.querySelector('.cancel')! as HTMLButtonElement\n this.listWrap = this.wrap.querySelector('.listWrap')! as HTMLDivElement\n\n // 展开/折叠\n this.expandBtn.addEventListener('click', () => {\n setSetting(\n 'blockTagsForSpecificUserShowList',\n !settings.blockTagsForSpecificUserShowList\n )\n\n if (\n settings.blockTagsForSpecificUserShowList &&\n this.rules.length === 0\n ) {\n toast.error(lang.transl('_没有数据可供使用'))\n }\n })\n\n // 切换显示添加区域\n this.showAddBtn.addEventListener('click', () => {\n this.addWrapShow = !this.addWrapShow\n if (this.addWrapShow) {\n this.addInputUid.focus()\n }\n })\n\n // 添加规则的按钮\n this.addBtn.addEventListener('click', () => {\n this.addRule(this.addInputUid.value, this.addInputTags.value)\n })\n\n // 取消添加的按钮\n this.cancelBtn.addEventListener('click', () => {\n this.addWrapShow = false\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'blockTagsForSpecificUserShowList') {\n this.showListWrap()\n }\n\n if (data.name === 'blockTagsForSpecificUser') {\n this.createAllList()\n }\n\n if (data.name === 'blockTagsForSpecificUserList') {\n this.createAllList()\n }\n })\n }\n\n private showListWrap() {\n const show = settings.blockTagsForSpecificUserShowList\n this.listWrap.style.display = show ? 'block' : 'none'\n lang.updateText(this.expandBtn, show ? '_收起' : '_展开')\n }\n\n // 根据规则动态创建 html\n private createAllList() {\n this.rules = [...settings.blockTagsForSpecificUserList]\n this.wrap.style.display = settings.blockTagsForSpecificUser\n ? 'block'\n : 'none'\n this.totalSpan.textContent = this.rules.length.toString()\n this.listWrap.innerHTML = ''\n for (const data of this.rules) {\n this.createList(data)\n }\n }\n\n // 创建规则对应的元素,并绑定事件\n private createList(data: BlockTagsForSpecificUserItem) {\n const { uid, user, tags } = data\n const html = `\n
      \n
      \n \n \n
      \n\n
      \n Tags\n \n
      \n\n
      \n\n \n\n \n
      \n
      `\n\n // 倒序显示,早添加的处于底部,晚添加的处于顶部\n this.listWrap.insertAdjacentHTML('afterbegin', html)\n\n const uidLabel = this.listWrap.querySelector('.uidLabel')! as HTMLElement\n if (user) {\n lang.updateText(uidLabel, '')\n uidLabel.textContent = user\n } else {\n this.updateUserName(data)\n }\n\n const updateRule = this.listWrap.querySelector(\n `button[data-updateRule='${uid}']`\n )\n const deleteRule = this.listWrap.querySelector(\n `button[data-deleteRule='${uid}']`\n )\n const uidInput = this.listWrap.querySelector(\n `input[data-uidInput='${uid}']`\n )! as HTMLInputElement\n const tagsInput = this.listWrap.querySelector(\n `input[data-tagsInput='${uid}']`\n )! as HTMLInputElement\n\n // 当输入框发生变化时,进行更新\n ;[uidInput, tagsInput].forEach((el) => {\n el?.addEventListener('change', () => {\n if (el.value) {\n this.updateRule(uid, uidInput.value, tagsInput.value, false)\n }\n })\n })\n\n // 更新按钮\n updateRule?.addEventListener('click', () => {\n this.updateRule(uid, uidInput.value, tagsInput.value)\n })\n\n // 删除按钮\n deleteRule?.addEventListener('click', () => {\n this.deleteRule(uid)\n })\n }\n\n // 如果某个规则没有用户名,就获取用户名储存起来\n private async updateUserName(data: BlockTagsForSpecificUserItem) {\n const profile = await API.getUserProfile(data.uid.toString()).catch(\n (err) => {\n console.log(err)\n }\n )\n if (profile && profile.body.name) {\n const name = profile.body.name\n const index = this.findIndex(data.uid)\n if (index > -1) {\n this.rules[index].user = name\n setSetting('blockTagsForSpecificUserList', [...this.rules])\n\n // 显示到页面上\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${data.uid}']`\n )\n if (listElement) {\n const label = listElement.querySelector('.uidLabel')\n label && (label.textContent = name)\n }\n }\n }\n }\n\n // 检查用户输入的值\n private checkValue(uidInput: string, tagsInput: string) {\n const tags = Utils.string2array(tagsInput)\n\n if (!uidInput || !tagsInput || tags.length === 0) {\n msgBox.error(lang.transl('_必填项不能为空'))\n return false\n }\n\n const uid = Number.parseInt(uidInput)\n if (!uid || isNaN(uid)) {\n msgBox.error(lang.transl('_用户ID必须是数字'))\n return false\n }\n\n return {\n uid,\n tags,\n }\n }\n\n private findIndex(uid: number) {\n return this.rules.findIndex((rule) => rule.uid === uid)\n }\n\n // 添加规则\n private addRule(uidInput: string, tagsInput: string) {\n const check = this.checkValue(uidInput, tagsInput)\n if (!check) {\n return\n }\n const { uid, tags } = check\n\n // 查找这个用户是否已经被添加过,如果添加过,则改为更新,而不是添加新规则\n const index = this.findIndex(uid)\n if (index > -1) {\n // 把两次的 tag 合并起来\n const joinTags = this.rules[index].tags.concat(tags)\n return this.updateRule(uid, uid.toString(), joinTags.toString())\n }\n\n this.addWrapShow = false\n this.rules.push(check)\n setSetting('blockTagsForSpecificUserList', [...this.rules])\n setSetting('blockTagsForSpecificUserShowList', true)\n\n toast.success(lang.transl('_添加成功'))\n }\n\n // 更新规则\n // tip 表示是否用消息框进行提示。当用户点击了更新按钮时应该显示提示;输入内容变化导致的自动更新可以不显示提示\n private updateRule(\n oldUid: number,\n uidInput: string,\n tagsInput: string,\n tip = true\n ) {\n const check = this.checkValue(uidInput, tagsInput)\n if (!check) {\n return\n }\n\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${oldUid}']`\n )\n listElement?.remove()\n\n const index = this.findIndex(oldUid)\n this.rules[index] = check\n setSetting('blockTagsForSpecificUserList', [...this.rules])\n\n if (tip) {\n toast.success(lang.transl('_更新成功'))\n }\n\n this.addWrapShow = false\n }\n\n // 删除规则\n private deleteRule(uid: number) {\n const index = this.findIndex(uid)\n this.rules.splice(index, 1)\n setSetting('blockTagsForSpecificUserList', [...this.rules])\n\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${uid}']`\n )\n listElement?.remove()\n }\n\n // 如果找到了符合的记录,则返回 true\n public check(uid: string | number, tags: string[]) {\n if (typeof uid === 'string') {\n uid = Number.parseInt(uid)\n }\n\n // 查找有无记录\n const index = this.findIndex(uid)\n if (index === -1) {\n return false\n }\n\n // 如果有记录则判断是否有相同的 tag,有任意一个就返回\n const rule = this.rules[index]\n const tagsString = tags.toString().toLowerCase()\n for (const tag of rule.tags) {\n if (tagsString.includes(tag.toLowerCase())) {\n return true\n }\n }\n\n // 没有相同的 tag\n return false\n }\n}\n\nconst blockTagsForSpecificUser = new BlockTagsForSpecificUser()\n\nexport { blockTagsForSpecificUser }\n","import { lang } from '../Lang'\nimport { log } from '../Log'\nimport { EVT } from '../EVT'\nimport { states } from '../store/States'\nimport { settings } from '../setting/Settings'\nimport { blackAndWhiteImage } from './BlackandWhiteImage'\nimport { mute } from './Mute'\nimport { blockTagsForSpecificUser } from './BlockTagsForSpecificUser'\nimport { msgBox } from '../MsgBox'\nimport { workPublishTime } from './WorkPublishTime'\nimport { WorkTypeString } from '../store/StoreType'\n\n/** 过滤选项,其中所有字段都是可选的 */\nexport interface FilterOption {\n /**是否为 AI 创作。0 未知 1 否 2 是 */\n aiType?: 0 | 1 | 2\n id?: number | string\n /**作品类型\n * -1 插画、漫画、动图的合集。也就是只知道是图像作品,但是不能确定是哪种具体的类型\n * 0 插画\n * 1 漫画\n * 2 动图\n * 3 小说\n */\n workType?: -1 | 0 | 1 | 2 | 3\n workTypeString?: WorkTypeString\n pageCount?: number\n tags?: string[]\n bookmarkCount?: number\n bookmarkData?: any\n width?: number\n height?: number\n yes_rank?: number\n createDate?: string\n mini?: string\n size?: number\n userId?: string\n xRestrict?: 0 | 1 | 2\n}\n\n// 检查作品是否符合过滤条件\nclass Filter {\n constructor() {\n this.bindEvents()\n }\n\n // 对启用了的过滤选项输出提示\n private showTip() {\n this.getDownType()\n this.getDownTypeByAge()\n this.getAIWorkType()\n this.getDownTypeByImgCount()\n this.getDownTypeByColor()\n this.getDownTypeByBmked()\n\n this.getMultiImageWorkImageLimit()\n\n this.getBMKNum()\n\n this.getSetWh()\n\n this.getRatio()\n\n this.getIdRange()\n\n this.getPostDate()\n\n this.getIncludeTag()\n\n this.getExcludeTag()\n\n if (states.debut) {\n log.warning(lang.transl('_抓取首次登场的作品Title'))\n }\n\n this.getBlockList()\n\n this.getSize()\n }\n\n /**检查作品是否符合过滤器的要求,返回值 false 表示作品不符合要求,true 表示符合要求 */\n // 注意:这是一个异步函数,所以要使用 await 获取检查结果\n // 想要检查哪些数据就传递哪些数据,不需要传递 FilterOption 的所有选项\n // 每个过滤器函数里都必须检查参数为 undefined 的情况\n // 每个过滤器函数必须返回一个 boolean 值,true 表示保留这个作品,false 表示排除这个作品\n public async check(option: FilterOption): Promise {\n // 检查下载的作品类型设置\n if (!this.checkDownType(option.workType)) {\n return false\n }\n\n if (!this.checkDownTypeByAge(option.xRestrict)) {\n return false\n }\n\n if (!this.checkAIWorkType(option.aiType)) {\n return false\n }\n\n // 检查单图、多图的下载\n if (!this.checkPageCount(option.workType, option.pageCount)) {\n return false\n }\n\n // 检查单图、多图的下载\n if (\n !this.checkMultiImageWorkImageLimit(option.workType, option.pageCount)\n ) {\n return false\n }\n\n // 检查收藏和未收藏的要求\n if (!this.checkDownTypeByBmked(option.bookmarkData)) {\n return false\n }\n\n // 检查收藏数要求\n if (!this.checkBMK(option.bookmarkCount, option.createDate)) {\n return false\n }\n\n // 检查要排除的 tag\n if (!this.checkExcludeTag(option.tags)) {\n return false\n }\n\n // 检查必须包含的 tag\n if (!this.checkIncludeTag(option.tags)) {\n return false\n }\n\n // 检查宽高设置\n if (!this.checkWidthHeight(option.width, option.height)) {\n return false\n }\n\n // 检查宽高比设置\n if (!this.checkRatio(option.width, option.height)) {\n return false\n }\n\n // 检查 id 范围设置\n if (!this.checkIdRange(option.id)) {\n return false\n }\n\n // 检查用户在 Pixiv 的屏蔽设定\n if (!(await this.checkMuteUser(option.userId))) {\n return false\n }\n if (!(await this.checkMuteTag(option.tags))) {\n return false\n }\n\n // 检查用户阻止名单\n if (!this.checkBlockList(option.userId)) {\n return false\n }\n\n // 检查针对特定用户屏蔽的 tags\n if (!this.checkBlockTagsForSpecificUser(option.userId, option.tags)) {\n return false\n }\n\n // 检查投稿时间设置\n if (!this.checkPostDate(option.createDate)) {\n return false\n }\n\n // 检查投稿时间设置\n if (!this.checkIdPublishTime(option.id, option.workTypeString)) {\n return false\n }\n\n // 检查首次登场设置\n if (!this.checkDebut(option.yes_rank)) {\n return false\n }\n\n // 检查文件体积设置\n if (!this.checkSize(option.size)) {\n return false\n }\n\n // 检查黑白图片\n // 这一步需要加载图片,需要较长的时间,较多的资源占用,所以放到最后检查\n if (!(await this.checkBlackWhite(option.mini))) {\n return false\n }\n\n return true\n }\n\n // ---------------- get ----------------\n\n // 提示下载的作品类型设置\n private getDownType() {\n // 如果全部排除则取消任务\n if (\n !settings.downType0 &&\n !settings.downType1 &&\n !settings.downType2 &&\n !settings.downType3\n ) {\n this.showWarning(lang.transl('_排除了所有作品类型'))\n }\n\n const tips = []\n !settings.downType0 && tips.push(lang.transl('_插画'))\n !settings.downType1 && tips.push(lang.transl('_漫画'))\n !settings.downType2 && tips.push(lang.transl('_动图'))\n !settings.downType3 && tips.push(lang.transl('_小说'))\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n private getDownTypeByAge() {\n // 如果全部排除则取消任务\n if (!settings.downAllAges && !settings.downR18 && !settings.downR18G) {\n this.showWarning(lang.transl('_排除了所有作品类型'))\n }\n\n const tips = []\n !settings.downAllAges && tips.push(lang.transl('_全年龄'))\n !settings.downR18 && tips.push('R-18')\n !settings.downR18G && tips.push('R-18G')\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n private getAIWorkType() {\n const tips = []\n !settings.AIGenerated && tips.push(lang.transl('_AI生成'))\n !settings.notAIGenerated && tips.push(lang.transl('_非AI生成'))\n !settings.UnknownAI && tips.push(lang.transl('_未知') + '(AI)')\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n private getDownTypeByImgCount() {\n const tips = []\n !settings.downSingleImg && tips.push(lang.transl('_单图作品'))\n !settings.downMultiImg && tips.push(lang.transl('_多图作品'))\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n // 提示图像颜色设置\n private getDownTypeByColor() {\n // 如果全部排除则取消任务\n if (!settings.downColorImg && !settings.downBlackWhiteImg) {\n this.showWarning(lang.transl('_排除了所有作品类型'))\n }\n\n const tips = []\n !settings.downColorImg && tips.push(lang.transl('_彩色图片'))\n !settings.downBlackWhiteImg && tips.push(lang.transl('_黑白图片'))\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n // 提示下载收藏和未收藏作品的设置\n private getDownTypeByBmked() {\n // 如果全部排除则取消任务\n if (!settings.downNotBookmarked && !settings.downBookmarked) {\n this.showWarning(lang.transl('_排除了所有作品类型'))\n }\n\n const tips = []\n !settings.downNotBookmarked && tips.push(lang.transl('_未收藏'))\n !settings.downBookmarked && tips.push(lang.transl('_已收藏'))\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n // 提示多图作品的图片数量限制\n private getMultiImageWorkImageLimit() {\n if (!settings.multiImageWorkImageLimitSwitch) {\n return\n }\n\n if (settings.multiImageWorkImageLimit > 0) {\n log.warning(\n lang.transl('_多图作品的图片数量上限') +\n ':' +\n settings.multiImageWorkImageLimit\n )\n }\n }\n\n // 提示必须包含的tag\n private getIncludeTag() {\n if (!settings.needTagSwitch) {\n return\n }\n\n if (settings.needTag.length > 0) {\n log.warning(\n lang.transl('_设置了必须tag之后的提示') + settings.needTag.toString()\n )\n }\n }\n\n // 提示要排除的tag\n private getExcludeTag() {\n if (!settings.notNeedTagSwitch) {\n return\n }\n\n if (settings.notNeedTag.length > 0) {\n log.warning(\n lang.transl('_设置了排除tag之后的提示') + settings.notNeedTag.toString()\n )\n }\n }\n\n // 提示宽高设置\n private getSetWh() {\n if (!settings.setWHSwitch) {\n return\n }\n\n if (settings.setWidth || settings.setHeight) {\n const andOr = settings.setWidthAndOr\n .replace('|', lang.transl('_或者'))\n .replace('&', lang.transl('_并且'))\n const text = `${lang.transl('_宽度')} ${settings.widthHeightLimit} ${\n settings.setWidth\n } ${andOr} ${lang.transl('_高度')} ${settings.widthHeightLimit} ${\n settings.setHeight\n }`\n log.warning(text)\n }\n }\n\n // 提示输入的收藏数\n private getBMKNum() {\n if (!settings.BMKNumSwitch) {\n return\n }\n\n const min = settings.BMKNumMin\n const max = settings.BMKNumMax\n const average = settings.BMKNumAverage\n\n if (min >= 0) {\n log.warning(lang.transl('_收藏数大于') + min)\n }\n\n if (max >= 0) {\n log.warning(lang.transl('_收藏数小于') + max)\n }\n\n if (average >= 0 && settings.BMKNumAverageSwitch) {\n log.warning(`${lang.transl('_日均收藏数量')} >= ${average}`)\n }\n }\n\n // 提示宽高比设置\n private getRatio() {\n if (!settings.ratioSwitch) {\n return\n }\n\n switch (settings.ratio) {\n case 'square':\n log.warning(\n lang.transl('_设置了宽高比之后的提示', lang.transl('_正方形'))\n )\n break\n case 'horizontal':\n log.warning(\n lang.transl('_设置了宽高比之后的提示', lang.transl('_横图'))\n )\n break\n case 'vertical':\n log.warning(\n lang.transl('_设置了宽高比之后的提示', lang.transl('_竖图'))\n )\n break\n case 'userSet':\n log.warning(\n lang.transl('_宽高比') +\n ` ${settings.userRatioLimit} ` +\n settings.userRatio\n )\n break\n }\n }\n\n // 提示 id 范围设置\n private getIdRange() {\n if (!settings.idRangeSwitch) {\n return\n }\n\n log.warning(`id ${settings.idRange} ${settings.idRangeInput}`)\n }\n\n // 提示投稿时间设置\n private getPostDate() {\n if (!settings.postDate) {\n return\n }\n\n if (isNaN(settings.postDateStart) || isNaN(settings.postDateStart)) {\n const msg = lang.transl('_日期时间格式错误')\n this.showWarning(msg)\n } else {\n const start = new Date(settings.postDateStart).toLocaleString()\n const end = new Date(settings.postDateEnd).toLocaleString()\n log.warning(`${lang.transl('_时间范围')}: ${start} - ${end}`)\n }\n }\n\n // 提示文件体积设置\n private getSize() {\n if (!settings.sizeSwitch) {\n return\n }\n\n log.warning(`Size: ${settings.sizeMin}MiB - ${settings.sizeMax}MiB`)\n }\n\n private getBlockList() {\n if (!settings.userBlockList) {\n return\n }\n\n for (const uid of settings.blockList) {\n if (isNaN(Number.parseInt(uid))) {\n return this.showWarning(lang.transl('_用户ID必须是数字'))\n }\n }\n\n if (settings.blockList.length > 0) {\n log.warning(\n lang.transl('_用户阻止名单') + ': ' + settings.blockList.toString()\n )\n }\n }\n\n // ---------------- check ----------------\n\n // 检查下载的作品类型设置\n private checkDownType(workType: FilterOption['workType']) {\n switch (workType) {\n case -1:\n return settings.downType0 || settings.downType1 || settings.downType2\n case 0:\n return settings.downType0\n case 1:\n return settings.downType1\n case 2:\n return settings.downType2\n case 3:\n return settings.downType3\n default:\n return true\n }\n }\n\n private checkDownTypeByAge(xRestrict?: FilterOption['xRestrict']) {\n switch (xRestrict) {\n case 0:\n return settings.downAllAges\n case 1:\n return settings.downR18\n case 2:\n return settings.downR18G\n default:\n return true\n }\n }\n\n private checkAIWorkType(aiType?: FilterOption['aiType']) {\n switch (aiType) {\n case 0:\n return settings.UnknownAI\n case 1:\n return settings.notAIGenerated\n case 2:\n return settings.AIGenerated\n default:\n return true\n }\n }\n\n // 检查多图作品的图片数量限制\n private checkMultiImageWorkImageLimit(\n workType: FilterOption['workType'],\n pageCount: FilterOption['pageCount']\n ) {\n // 此过滤条件只检查插画和漫画,只对多图作品生效。如果图片数量小于 2 则不检查\n if (\n !settings.multiImageWorkImageLimitSwitch ||\n settings.multiImageWorkImageLimit < 1 ||\n pageCount === undefined ||\n pageCount < 2 ||\n (workType !== 0 && workType !== 1)\n ) {\n return true\n }\n\n return pageCount <= settings.multiImageWorkImageLimit\n }\n\n // 依据图片数量,检查下载的作品类型\n private checkPageCount(\n workType: FilterOption['workType'],\n pageCount: FilterOption['pageCount']\n ) {\n if (workType === undefined || pageCount === undefined) {\n return true\n }\n\n // 将动图视为单图\n if (workType === 2) {\n pageCount = 1\n }\n\n if (pageCount === 1) {\n return settings.downSingleImg\n }\n\n if (pageCount > 1) {\n return settings.downMultiImg\n }\n\n return false\n }\n\n // 检查过滤黑白图像设置\n private async checkBlackWhite(imgUrl: FilterOption['mini']) {\n // 如果没有图片网址,或者没有排除任何一个选项,则不检查\n if (!imgUrl || (settings.downColorImg && settings.downBlackWhiteImg)) {\n return true\n }\n\n // result 为 true,表示它是黑白图片,false 是彩色图片\n const result = await blackAndWhiteImage.check(imgUrl)\n\n return (\n (result && settings.downBlackWhiteImg) ||\n (!result && settings.downColorImg)\n )\n }\n\n // 检查作品是否符合已收藏、未收藏作品的设置\n private checkDownTypeByBmked(bookmarked: any) {\n // 如果没有参数,或者都没有排除\n if (bookmarked === undefined) {\n return true\n }\n\n if (settings.downNotBookmarked && settings.downBookmarked) {\n return true\n }\n\n if (!settings.downNotBookmarked && settings.downBookmarked) {\n // 只下载已收藏\n return !!bookmarked\n } else if (settings.downNotBookmarked && !settings.downBookmarked) {\n // 只下载未收藏\n return !bookmarked\n }\n\n return false\n }\n\n // 检查收藏数要求\n private readonly oneDayTime = 24 * 60 * 60 * 1000 // 一天的毫秒数\n private readonly minimumTime = 4 * 60 * 60 * 1000 // 检查日均收藏数量时,要求作品发表之后经过的时间大于这个值。因为发表之后经过时间很短的作品,其日均收藏数量非常不可靠,所以对于小于这个值的作品不进行日均收藏数量的检查。\n private checkBMK(\n bmk: FilterOption['bookmarkCount'],\n date: FilterOption['createDate']\n ) {\n if (bmk === undefined || !settings.BMKNumSwitch) {\n return true\n }\n\n // 检查收藏数量是否达到设置的最大值、最小值范围\n const checkNumber = bmk >= settings.BMKNumMin && bmk <= settings.BMKNumMax\n\n // 如果没有设置检查日均收藏,就直接返回收藏数量的检查结果\n if (!settings.BMKNumAverageSwitch || date === undefined) {\n return checkNumber\n }\n\n // 检查日均收藏\n const createTime = new Date(date).getTime()\n const nowTime = new Date().getTime()\n\n // 如果作品发表时间太短(小于 4 小时)\n if (nowTime - createTime < this.minimumTime) {\n // 如果 4 小时里的收藏数量已经达到要求,则保留这个作品\n // 如果 4 小时里的收藏数量没有达到要求,则不检查继续它的日均收藏数量,返回收藏数量的检查结果\n return bmk >= settings.BMKNumAverage ? true : checkNumber\n }\n\n const day = (nowTime - createTime) / this.oneDayTime // 计算作品发表以来的天数\n const average = bmk / day\n const checkAverage = average >= settings.BMKNumAverage\n\n // 返回结果。收藏数量和日均收藏并不互斥,两者只要有一个满足条件就会保留这个作品\n return checkNumber || checkAverage\n }\n\n // 检查作品是否符合包含 tag 的条件。返回值表示是否保留这个作品。\n private checkIncludeTag(tags: FilterOption['tags']) {\n if (\n !settings.needTagSwitch ||\n settings.needTag.length === 0 ||\n tags === undefined\n ) {\n return true\n }\n\n let result = false\n // 把设置的包含的 tag 转换成小写,生成数组\n const needTags = settings.needTag.map((val) => {\n return val.toLowerCase()\n })\n\n // 如果设置了必须的 tag\n if (needTags.length > 0) {\n // 把处理的 tag 变成小写,并且去重\n // 如果不区分大小写的话,Fate/grandorder 和 Fate/GrandOrder 会被算作符合两个 tag,所以用 Set 结构去重。测试 id 51811780\n const workTags: Set = new Set()\n for (const tag of tags) {\n workTags.add(tag.toLowerCase())\n }\n\n // 全部包含\n if (settings.needTagMode === 'all') {\n let tagNeedMatched = 0\n for (const tag of workTags) {\n for (const need of needTags) {\n if (tag === need) {\n tagNeedMatched++\n break\n }\n }\n }\n\n // 如果全部匹配\n if (tagNeedMatched >= needTags.length) {\n result = true\n }\n } else {\n // 包含任意一个\n for (const tag of workTags.values()) {\n if (needTags.includes(tag)) {\n result = true\n break\n }\n }\n }\n } else {\n result = true\n }\n\n return result\n }\n\n // 检查作品是否符合排除 tag 的条件, 只要作品包含其中一个就排除。返回值表示是否保留这个作品。\n private checkExcludeTag(tags: FilterOption['tags']) {\n if (\n !settings.notNeedTagSwitch ||\n settings.notNeedTag.length === 0 ||\n tags === undefined\n ) {\n return true\n }\n\n const notNeedTags = settings.notNeedTag.map((str) => str.toLowerCase())\n\n for (const tag of tags) {\n for (const notNeed of notNeedTags) {\n // 部分匹配\n if (settings.tagMatchMode === 'partial') {\n if (tag.toLowerCase().includes(notNeed)) {\n // 如果检查到了排除的 tag,进行复查\n\n // 使用空格对 tag 进行分词,尝试提高准确率\n // 例如:用户本意是排除腐向作品(bl),但是如果作品的 tag 是 Strike the Blood 或者 Blue Poison 都会导致作品被排除。这是错误的。\n // 所以在有分词的情况下,应当对分词进行全等匹配以提高准确度\n const words = tag.split(' ')\n if (words.length > 1) {\n // 如果 tag 有空格,依次使用每个分词进行全词匹配。如果有任一一个 tag 被匹配到则排除这个作品\n if (words.some((word) => word.toLowerCase() === notNeed)) {\n return false\n }\n } else {\n // 如果 tag 没有空格,直接返回结果\n return false\n }\n }\n } else {\n // 全词匹配\n if (tag.toLowerCase() === notNeed) {\n return false\n }\n }\n }\n }\n\n return true\n }\n\n // 检查作品是否符合过滤宽高的条件\n private checkWidthHeight(\n width: FilterOption['width'],\n height: FilterOption['height']\n ) {\n if (\n !settings.setWHSwitch ||\n width === undefined ||\n height === undefined ||\n width === 0 ||\n height === 0\n ) {\n return true\n }\n\n const setWidth = settings.setWidth\n const setHeight = settings.setHeight\n\n // 未设置宽高,或者设置的宽高都不合法\n if (setWidth === 0 && setHeight === 0) {\n return true\n }\n\n if (settings.widthHeightLimit === '>=') {\n // 大于等于\n if (settings.setWidthAndOr === '&') {\n return width >= setWidth && height >= setHeight\n } else {\n return width >= setWidth || height >= setHeight\n }\n } else if (settings.widthHeightLimit === '<=') {\n // 小于等于\n if (settings.setWidthAndOr === '&') {\n return width <= setWidth && height <= setHeight\n } else {\n return width <= setWidth || height <= setHeight\n }\n } else {\n // 精确等于\n if (settings.setWidthAndOr === '&') {\n return width === setWidth && height === setHeight\n } else {\n return width === setWidth || height === setHeight\n }\n }\n }\n\n // 检查作品是否符合宽高比条件\n private checkRatio(\n width: FilterOption['width'],\n height: FilterOption['height']\n ) {\n if (\n !settings.ratioSwitch ||\n width === undefined ||\n height === undefined ||\n width === 0 ||\n height === 0\n ) {\n return true\n }\n\n switch (settings.ratio) {\n case 'square':\n return width === height\n case 'horizontal':\n return width / height > 1\n case 'vertical':\n return width / height < 1\n case 'userSet':\n switch (settings.userRatioLimit) {\n case '>=':\n return width / height >= settings.userRatio\n case '=':\n return width / height === settings.userRatio\n case '<=':\n return width / height <= settings.userRatio\n }\n }\n }\n\n // 检查 id 范围设置\n private checkIdRange(id: FilterOption['id']) {\n if (id === undefined || !settings.idRangeSwitch) {\n return true\n }\n\n const setId = settings.idRangeInput\n let nowId: number\n\n if (typeof id !== 'number') {\n nowId = parseInt(id)\n } else {\n nowId = id\n }\n\n if (settings.idRange === '>') {\n return nowId > setId\n } else {\n return nowId < setId\n }\n }\n\n // 检查投稿时间设置\n private checkPostDate(date: FilterOption['createDate']) {\n if (!settings.postDate || date === undefined) {\n return true\n }\n\n const time = new Date(date).getTime()\n return time >= settings.postDateStart && time <= settings.postDateEnd\n }\n\n private checkIdPublishTime(\n id: FilterOption['id'],\n type: FilterOption['workTypeString']\n ) {\n if (id === undefined || !settings.postDate || !type) {\n return true\n }\n\n const _id = Number.parseInt(id as string)\n const _type = type === 'novels' ? 'novels' : 'illusts'\n const range = workPublishTime.getTimeRange(_id, _type)\n // console.log(new Date(range[0]).toLocaleString())\n // console.log(new Date(range[1]).toLocaleString())\n\n // 如果返回的数据中的开始时间大于用户设置的结束时间,则检查不通过\n // 如果返回的数据中的结束时间小于用户设置的开始时间,则检查不通过\n if (range[0] > settings.postDateEnd || range[1] < settings.postDateStart) {\n return false\n }\n\n // 如果两条记录的时间差大于用户设置的时间差,此时的数据不可采信。将其通过\n if (range[1] - range[0] >= settings.postDateEnd - settings.postDateStart) {\n return true\n }\n\n // 如果两条记录的时间范围与用户设置的时间范围只有部分重叠,此时的数据不可采信。将其通过\n if (\n range[0] < settings.postDateStart &&\n range[1] > settings.postDateStart &&\n range[1] < settings.postDateEnd\n ) {\n return true\n }\n if (\n range[0] > settings.postDateStart &&\n range[0] < settings.postDateEnd &&\n range[1] > settings.postDateEnd\n ) {\n return true\n }\n\n // 达到这里的数据是可信的,不会发生误判\n return (\n range[0] >= settings.postDateStart && range[1] <= settings.postDateEnd\n )\n }\n\n // 检查首次登场设置\n // yes_rank 是昨日排名,如果为 0,则此作品是“首次登场”的作品\n private checkDebut(yes_rank: FilterOption['yes_rank']) {\n if (!states.debut || yes_rank === undefined) {\n return true\n }\n\n return yes_rank === 0\n }\n\n private checkBlockList(userId: FilterOption['userId']) {\n if (!settings.userBlockList || userId === undefined) {\n return true\n }\n\n // 如果阻止名单里有这个用户 id,则返回 false 表示阻止这个作品\n return !settings.blockList.includes(userId)\n }\n\n // 检查文件体积\n private readonly MiB = 1024 * 1024\n private checkSize(size: FilterOption['size']) {\n if (!settings.sizeSwitch || size === undefined) {\n return true\n }\n return (\n size >= settings.sizeMin * this.MiB && size <= settings.sizeMax * this.MiB\n )\n }\n\n private async checkMuteUser(userId: FilterOption['userId']) {\n if (userId === undefined) {\n return true\n }\n return !(await mute.checkUser(userId))\n }\n\n private async checkMuteTag(tags: FilterOption['tags']) {\n if (tags === undefined) {\n return true\n }\n\n // 一旦检查到某个 tag 存在于 mute 列表里,就排除这个作品\n for (const tag of tags) {\n if (await mute.checkTag(tag)) {\n return false\n }\n }\n\n return true\n\n // return !(tags.some((mute.checkTag.bind(mute))))\n }\n\n private checkBlockTagsForSpecificUser(\n userId: FilterOption['userId'],\n tags: FilterOption['tags']\n ) {\n if (\n !settings.blockTagsForSpecificUser ||\n userId === undefined ||\n tags === undefined\n ) {\n return true\n }\n\n // 对结果取反\n return !blockTagsForSpecificUser.check(userId, tags)\n }\n\n // 如果设置项的值不合法,则显示提示\n private showWarning(msg: string) {\n EVT.fire('wrongSetting')\n msgBox.error(msg)\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.showTip()\n })\n }\n}\n\nconst filter = new Filter()\nexport { filter }\n","import { API } from '../API'\nimport { lang } from '../Lang'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\n\n// 获取用户在 Pixiv 里屏蔽的用户和/或 tag,进行过滤\nclass Mute {\n private userList: string[] = []\n private tagList: string[] = []\n private got = false // 是否获取过用户设置\n\n /**检查传入的 user id 是否包含在用户屏蔽设置里 */\n public async checkUser(id: number | string) {\n // 检查时,要求至少进行过一次获取用户设置的操作\n if (!this.got) {\n await this.getMuteSettings()\n }\n\n if (typeof id === 'number') {\n id = id.toString()\n }\n return this.userList.includes(id)\n }\n\n /**检查传入的 tag 是否包含在用户屏蔽设置里 */\n public async checkTag(tag: string) {\n if (!this.got) {\n await this.getMuteSettings()\n }\n\n return this.tagList.includes(tag)\n }\n\n // 此模块不会在初始化时获取设置,这是为了避免增加一次无谓的网络请求\n // 当执行此模块的 check 方法时,如果没有获取过设置,则此模块会主动获取一次设置\n // 其他模块也可以在必要的时候(如开始抓取时)直接执行此方法,预先获取设置,为后面的流程做准备\n public async getMuteSettings() {\n this.userList = []\n this.tagList = []\n\n return new Promise(async (resolve, reject) => {\n if (Tools.checkUserLogin() === false) {\n return resolve(401)\n }\n\n try {\n const response = await API.getMuteSettings()\n const items = response.body.mute_items\n for (const item of items) {\n // 如果这个屏蔽项未启用,则不保存\n if (item.enabled === false) {\n continue\n }\n if (item.type === 'user') {\n this.userList.push(item.value)\n }\n if (item.type === 'tag') {\n this.tagList.push(item.value)\n }\n }\n\n if (this.userList.length > 0 || this.tagList.length > 0) {\n let msg = lang.transl('_屏蔽设定') + ':
      '\n if (this.userList.length > 0) {\n msg += `Users: ${this.userList.join(',')}
      `\n }\n if (this.tagList.length > 0) {\n msg += `Tags: ${this.tagList.join(',')}
      `\n }\n log.warning(msg)\n }\n\n this.got = true\n return resolve(items)\n } catch (error) {\n // 当请求出错时,视为获取完成。不抛出 reject,否则会导致抓取中止\n this.got = true\n if (error.status === 401) {\n console.error(\n 'get mute settings error ' + lang.transl('_作品页状态码401')\n )\n }\n return resolve(error.status)\n }\n })\n }\n}\n\nconst mute = new Mute()\nexport { mute }\n","import { API } from '../API'\nimport { secretSignal } from '../utils/SecretSignal'\nimport { Utils } from '../utils/Utils'\nimport { illustsData } from '../store/workPublishTimeIllusts'\nimport { novelData as novelsData } from '../store/WorkPublishTimeNovels'\n\n// 获取指定 id 的发布时间范围\nclass WorkPublishTime {\n constructor() {\n this.illustsLength = illustsData.length\n this.novelsLength = novelsData.length\n this.bindEvents()\n }\n\n // 数据源是二维数组,里面的每一项都是一个由作品 id 和作品发布时间组成的子数组。如:\n // [[20, 1189343647000], [10000, 1190285376000], [20006, 1190613767000]]\n\n /**每隔 10000 个作品采集一次数据 */\n private readonly gap = 10000\n\n private illustsLength = 0\n private novelsLength = 0\n\n /**获取作品的发布时间范围。\n *\n * 返回值是一个包含 2 个数字的数组,第一个数字是开始时间,第二个数字是结束时间。 */\n public getTimeRange(\n id: number,\n type: 'illusts' | 'novels' = 'illusts'\n ): number[] {\n const data = type === 'illusts' ? illustsData : novelsData\n const length = type === 'illusts' ? this.illustsLength : this.novelsLength\n const index = Math.floor(id / this.gap)\n\n // 如果传入的 id 匹配到最后一条记录,则将结束时间设置为现在\n if (index >= length - 1) {\n return [data[length - 1][1], new Date().getTime()]\n }\n\n // 如果传入的 id 匹配到第一条记录,则直接返回数据\n if (index === 0) {\n return [data[0][1], data[1][1]]\n }\n\n const record = data[index]\n // 如果有与传入 id 相匹配的记录,则判断这个记录的 id 与传入的 id 哪个大\n // 如果记录的 id 等于传入的 id,则直接返回其时间戳\n if (record[0] === id) {\n return [record[1], record[1]]\n } else if (record[0] < id) {\n // 如果记录的 id 小于传入的 id,则此记录的时间作为开始时间,下一条记录的时间作为结束时间\n // 此时必然有下一条记录,因为前面已经处理了没有下一条记录的情况\n return [record[1], data[index + 1][1]]\n } else {\n // 如果记录的 id 大于传入的 id,则此记录的时间作为结束时间,上一条记录的时间作为开始时间\n // 此时必然有上一条记录,因为前面已经处理了没有上一条记录的情况\n return [data[index - 1][1], record[1]]\n }\n }\n\n private bindEvents() {\n secretSignal.register('ppdtask1', () => {\n // 上次记录到 116480000\n this.crawlData(115670000, 116482395)\n })\n\n secretSignal.register('ppdtask2', () => {\n // 上次记录到 21670000\n this.crawlData(21500000, 21679349, 'novels')\n })\n }\n\n private async crawlData(\n start: number,\n end: number,\n type: 'illusts' | 'novels' = 'illusts'\n ): Promise {\n console.log('start crawl time data')\n const result: number[][] = []\n\n const min_illust = 20 // 最早的插画作品\n const min_novel = 129 // 最早的小说作品\n\n let id = start\n if (type === 'illusts' && start < min_illust) {\n id = min_illust\n }\n if (type === 'novels' && start < min_novel) {\n id = min_novel\n }\n\n while (id < end) {\n const data = await this.crawlWork(id, type)\n result.push(data)\n // 使用下一个接近 10000 倍数的 id 进行下一次抓取\n id = (Math.floor(data[0] / this.gap) + 1) * this.gap\n }\n\n console.log(result)\n console.log('crawl time data complete')\n\n const resultList = await Utils.json2BlobSafe(result)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `workPublishTime-${type}-${start}-${end}.json`\n )\n }\n\n return result\n }\n\n // 获取指定作品的发布时间\n // 如果抓取出错(如 404 错误),则顺延到下一个作品 id 重试抓取\n private async crawlWork(\n id: number,\n type: 'illusts' | 'novels' = 'illusts'\n ): Promise {\n return new Promise(async (resolve) => {\n // 为了避免出现 429 错误,每次抓取之间设置了间隔时间\n window.setTimeout(async () => {\n try {\n const data = await API[\n type === 'illusts' ? 'getArtworkData' : 'getNovelData'\n ](id.toString())\n if (data.error === false) {\n const dateStr = data.body.createDate\n if (!dateStr) {\n return resolve(this.crawlWork(++id, type))\n }\n const time = new Date(dateStr).getTime()\n return resolve([id, time])\n } else {\n return resolve(this.crawlWork(++id, type))\n }\n } catch (error) {\n return resolve(this.crawlWork(++id, type))\n }\n }, 1700)\n })\n }\n}\n\nconst workPublishTime = new WorkPublishTime()\nexport { workPublishTime }\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { store } from '../store/Store'\nimport { Utils } from '../utils/Utils'\nimport { Config } from '../Config'\nimport { theme } from '../Theme'\nimport { msgBox } from '../MsgBox'\nimport { toast } from '../Toast'\nimport { CopyToClipboard } from '../CopyToClipboard'\n\nexport type OutputData = {\n content: string\n title: string\n}\n\n// 输出面板\nclass OutputPanel {\n constructor() {\n this.addOutPutPanel()\n\n theme.register(this.outputPanel)\n lang.register(this.outputPanel)\n\n this.bindEvents()\n }\n\n private outputPanel!: HTMLDivElement // 输出面板\n\n private outputTitle!: HTMLDivElement // 标题容器\n\n private outputContent!: HTMLDivElement // 内容容器\n\n private copyBtn!: HTMLButtonElement\n\n private closeBtn!: HTMLDivElement\n\n private bindEvents() {\n this.closeBtn.addEventListener('click', () => {\n this.close()\n })\n\n this.outputPanel.addEventListener('click', (e) => {\n const ev = e || window.event\n ev.stopPropagation()\n })\n\n document.addEventListener('click', () => {\n if (this.outputPanel.style.display !== 'none') {\n this.close()\n }\n })\n\n window.addEventListener(EVT.list.closeCenterPanel, () => {\n this.close()\n })\n\n // 复制输出内容\n this.copyBtn.addEventListener('click', () => {\n const text = this.outputContent.innerText.replaceAll('\\n\\n', '\\n')\n CopyToClipboard.setClipboard(text)\n\n window.setTimeout(() => {\n this.close()\n }, 100)\n })\n\n window.addEventListener(EVT.list.output, (ev: CustomEventInit) => {\n this.output(ev.detail.data)\n })\n }\n\n private addOutPutPanel() {\n const html = `\n
      \n
      ×
      \n
      \n
      \n
      \n \n
      \n
      \n `\n document.body.insertAdjacentHTML('beforebegin', html)\n\n this.outputPanel = document.querySelector('.outputWrap')! as HTMLDivElement\n\n if (Config.mobile) {\n this.outputPanel.classList.add('mobile')\n }\n\n this.outputTitle = this.outputPanel.querySelector(\n '.outputTitle'\n )! as HTMLDivElement\n\n this.outputContent = this.outputPanel.querySelector(\n '.outputContent'\n )! as HTMLDivElement\n\n this.copyBtn = this.outputPanel.querySelector(\n '.outputCopy'\n )! as HTMLButtonElement\n\n this.closeBtn = this.outputPanel.querySelector(\n '.outputClose'\n )! as HTMLDivElement\n }\n\n // 输出内容\n private output(data: OutputData) {\n if (!data.content) {\n return toast.error(lang.transl('_没有数据可供使用'))\n }\n\n if (store.result.length < Config.outputMax) {\n this.copyBtn.disabled = false\n lang.updateText(this.outputTitle, data.title)\n this.outputContent.innerHTML = data.content\n this.outputPanel.style.display = 'block'\n } else {\n // 如果结果较多,则不直接输出,改为保存 txt 文件\n const file = new Blob([data.content], {\n type: 'text/plain',\n })\n const url = URL.createObjectURL(file)\n const fileName = `Output-${new Date().toLocaleString()}.txt`\n Utils.downloadFile(url, fileName)\n\n this.copyBtn.disabled = true\n msgBox.warning(lang.transl('_输出内容太多已经为你保存到文件'))\n }\n }\n\n // 关闭输出面板\n private close() {\n this.outputPanel.style.display = 'none'\n this.outputContent.innerHTML = ''\n lang.updateText(this.outputTitle, '_输出信息')\n }\n}\n\nnew OutputPanel()\n","import { store } from '../store/Store'\nimport { EVT } from '../EVT'\nimport { fileName } from '../FileName'\nimport { lang } from '../Lang'\nimport { Config } from '../Config'\nimport { toast } from '../Toast'\nimport { Tools } from '../Tools'\nimport { Colors } from '../Colors'\n\n// 预览文件名\nclass PreviewFileName {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.previewFileName, () => {\n this.previewFileName()\n })\n\n const prevBtn = Tools.addBtn('namingBtns', Colors.bgGreen, '_预览文件名')\n\n prevBtn.addEventListener(\n 'click',\n () => {\n EVT.fire('previewFileName')\n },\n false\n )\n\n prevBtn.style.display = 'none'\n\n window.addEventListener(EVT.list.crawlStart, () => {\n prevBtn.style.display = 'none'\n })\n\n window.addEventListener(EVT.list.readyDownload, () => {\n prevBtn.style.display = 'flex'\n })\n }\n\n private previewFileName() {\n if (store.result.length === 0) {\n return toast.error(lang.transl('_没有可用的抓取结果'))\n }\n\n // 使用数组储存和拼接字符串,提高性能\n const resultArr: string[] = []\n let result = ''\n\n const length = store.result.length\n if (length < Config.outputMax) {\n // 输出结果,添加 html 标签\n for (let i = 0; i < length; i++) {\n const data = store.result[i]\n\n // 生成文件名,并为文件名添加颜色显示\n // 只有当文件数量少于限制值时才添加颜色。这是因为添加颜色会导致生成的 HTML 元素数量增多,渲染和复制时的资源占用增多\n const part = fileName.createFileName(data).split('/')\n const length = part.length\n for (let i = 0; i < length; i++) {\n const str = part[i]\n if (i < length - 1) {\n // 如果不是最后一项,说明是文件夹名,添加特定的颜色\n part[i] = `${str}`\n } else {\n // 最后一项是文件名,设置为黑色\n part[i] = `${str}`\n }\n }\n const fullNameHtml = part.join('/')\n\n if (data.type !== 3) {\n // 对于图片作品,在文件名前面显示默认文件名\n // 默认文件名有两种选择,一种是使用 url 里的文件名,一种是使用 data.id。这里使用前者,方便用户用其他下载软件下载后,复制输出的内容制作重命名脚本\n const defaultName = data.original.replace(/.*\\//, '')\n const nowResult = `

      ${defaultName}: ${fullNameHtml}

      `\n resultArr.push(nowResult)\n } else {\n // 小说作品不显示原文件名(因为没有此数据)\n const nowResult = `

      ${fullNameHtml}

      `\n resultArr.push(nowResult)\n }\n }\n\n result = resultArr.join('')\n } else {\n // 不生成 html 标签,只生成纯文本,保存为 txt 文件\n for (let i = 0; i < length; i++) {\n const data = store.result[i]\n const fullName = fileName.createFileName(data)\n\n if (data.type !== 3) {\n // 图片作品,在文件名前面显示文件 url 里的文件名\n let defaultName = data.original.replace(/.*\\//, '')\n resultArr.push(`${defaultName}: ${fullName}`)\n } else {\n // 小说作品不显示原文件名(因为没有此数据)\n resultArr.push(fullName)\n }\n }\n\n result = resultArr.join('\\n')\n }\n\n EVT.fire('output', {\n content: result,\n title: '_预览文件名',\n })\n }\n}\n\nnew PreviewFileName()\n","import { store } from '../store/Store'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { settings } from '../setting/Settings'\nimport { toast } from '../Toast'\nimport { Config } from '../Config'\n\n// 显示 url\nclass ShowURLs {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.showURLs, () => {\n this.showURLs()\n })\n }\n\n private showURLs() {\n const urls: string[] = []\n const size = settings.imageSize\n for (const data of store.result) {\n // 只输出图片文件的 url\n // 小说文件没有固定的 url 所以不输出\n if (data.type !== 3) {\n urls.push(data[size])\n }\n }\n\n if (store.result.length === 0 || urls.length === 0) {\n return toast.error(lang.transl('_没有可用的抓取结果'))\n }\n\n let result = ''\n if (store.result.length < Config.outputMax) {\n result = urls.join('
      ')\n } else {\n result = urls.join('\\n')\n }\n\n EVT.fire('output', {\n content: result,\n title: '_复制url',\n })\n }\n}\n\nnew ShowURLs()\n","import { API } from '../API'\nimport { lang } from '../Lang'\nimport { BookmarkResult } from '../crawl/CrawlResult'\nimport { EVT } from '../EVT'\nimport { toast } from '../Toast'\nimport { bookmark } from '../Bookmark'\nimport { Tools } from '../Tools'\nimport { log } from '../Log'\nimport { msgBox } from '../MsgBox'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport { Config } from '../Config'\n\n// 一键收藏所有作品\n// 可以传入页面上的作品元素列表,也可以直接传入 id 列表\n// 一次任务里要么全部传递插画,要么全部传递小说,不要混合\ntype WorkType = 'illusts' | 'novels'\n\nexport interface IDList {\n type: WorkType\n id: string\n}\n\ntype BookmarkData = BookmarkResult & {\n type: WorkType\n}\n\nclass BookmarkAllWorks {\n constructor(tipWrap?: HTMLElement) {\n if (tipWrap) {\n this.tipWrap = tipWrap\n }\n }\n\n private idList: IDList[] = []\n\n private bookmarKData: BookmarkData[] = []\n\n public tipWrap: HTMLElement = document.createElement('button')\n\n // 传递 workList,这是作品列表元素的合集。代码会尝试分析每个作品元素中的超链接,提取出作品 id\n // 如果传递的作品是本页面上的作品,可以省略 type。代码会根据页面 url 判断是图片还是小说。\n // 如果传递的作品不是本页面上的,为防止误判,需要显式传递 type\n public sendWorkList(\n list: NodeListOf | HTMLElement[],\n type?: WorkType\n ) {\n this.reset()\n\n type =\n type ??\n (window.location.pathname.includes('/novel') ? 'novels' : 'illusts')\n\n const regExp = type === 'illusts' ? /\\/artworks\\/(\\d*)/ : /\\?id=(\\d*)/\n for (const el of list) {\n const a = el.querySelector('a')\n if (a) {\n // \"https://www.pixiv.net/artworks/82618568\"\n // \"https://www.pixiv.net/novel/show.php?id=12350618\"\n const test = regExp.exec(a.href)\n if (test && test.length > 1) {\n this.idList.push({\n type,\n id: test[1],\n })\n }\n }\n }\n\n this.startBookmark()\n }\n\n // 直接传递 id 列表\n public sendIdList(list: IDList[]) {\n this.reset()\n\n this.idList = list\n\n this.startBookmark()\n }\n\n private reset() {\n this.idList = []\n this.bookmarKData = []\n }\n\n // 启动收藏流程\n private async startBookmark() {\n if (this.idList.length === 0) {\n toast.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n this.tipWrap.textContent = `Checking`\n this.tipWrap.setAttribute('disabled', 'disabled')\n\n await this.getTagData()\n await this.addBookmarkAll()\n this.complete()\n }\n\n // 获取每个作品的 tag 数据\n private async getTagData() {\n return new Promise(async (resolve, reject) => {\n for (const id of this.idList) {\n this.tipWrap.textContent = `Get data ${this.bookmarKData.length} / ${this.idList.length}`\n\n try {\n // 如果作品数量大于一定数量,则启用慢速抓取,以免在获取作品数据时发生 429 错误\n await new Promise(async (res) => {\n setTimeoutWorker.set(\n async () => {\n let data\n if (id.type === 'novels') {\n data = await API.getNovelData(id.id)\n } else {\n data = await API.getArtworkData(id.id)\n }\n\n this.bookmarKData.push({\n type: id.type,\n id: data.body.id,\n tags: Tools.extractTags(data),\n restrict: false,\n })\n res(id)\n },\n this.idList.length >= 120 ? Config.slowCrawlDealy : 0\n )\n })\n } catch (error) {\n // 捕获错误,主要是为了处理 429 错误。但是现在只会提示,没有重试。因为需要过 3 分钟之后才能重试成功,等待时间太长了\n const e = error as {\n status: number\n statusText: string\n }\n let msg = ''\n if (e.status) {\n msg = `${lang.transl('_发生错误原因')}${lang.transl('_错误代码')}${\n e.status\n }. ${lang.transl('_请稍后重试')}`\n } else {\n msg = `${lang.transl('_发生错误原因')}${lang.transl(\n '_未知错误'\n )}${lang.transl('_请稍后重试')}`\n }\n\n // 显示提示,并中止执行\n log.error(msg)\n msgBox.error(msg)\n this.tipWrap.textContent = `× Error`\n this.tipWrap.removeAttribute('disabled')\n EVT.fire('bookmarkModeEnd')\n return reject()\n }\n }\n\n resolve()\n })\n }\n\n // 给所有作品添加收藏(之前收藏过的,新 tag 将覆盖旧 tag)\n private async addBookmarkAll() {\n return new Promise(async (resolve) => {\n let index = 0\n for (const data of this.bookmarKData) {\n this.tipWrap.textContent = `Add bookmark ${index} / ${this.bookmarKData.length}`\n\n await bookmark.add(\n data.id,\n data.type,\n data.tags,\n undefined,\n undefined,\n true\n )\n index++\n }\n\n resolve()\n })\n }\n\n private complete() {\n this.tipWrap.textContent = `✓ Complete`\n this.tipWrap.removeAttribute('disabled')\n toast.success(lang.transl('_收藏作品完毕'))\n EVT.fire('bookmarkModeEnd')\n }\n}\n\nexport { BookmarkAllWorks }\n","import { API } from '../API'\nimport { Tools } from '../Tools'\nimport {\n BookmarkData,\n NovelCommonData,\n BookmarkResult,\n ArtworkCommonData,\n} from '../crawl/CrawlResult'\nimport { toast } from '../Toast'\nimport { bookmark } from '../Bookmark'\nimport { lang } from '../Lang'\n\n// 给收藏页面里的未分类作品批量添加 tag\nclass BookmarksAddTag {\n constructor(btn: HTMLButtonElement) {\n this.btn = btn\n this.bindEvents()\n }\n\n private type: 'illusts' | 'novels' = 'illusts' // 页面是图片还是小说\n\n private addTagList: BookmarkResult[] = [] // 需要添加 tag 的作品的数据\n\n private addIndex = 0 // 添加 tag 时的计数\n\n private btn: HTMLButtonElement\n\n private readonly once = 100 // 一次请求多少个作品的数据\n\n private bindEvents() {\n this.btn.addEventListener('click', () => {\n // 每次点击重置状态\n this.addTagList = []\n this.addIndex = 0\n\n this.btn.setAttribute('disabled', 'disabled')\n this.btn.textContent = `Checking`\n\n if (window.location.pathname.includes('/novel')) {\n this.type = 'novels'\n }\n\n this.readyAddTag()\n })\n }\n\n // 准备添加 tag。loop 表示这是第几轮循环\n private async readyAddTag(loop: number = 0) {\n const offset = loop * this.once // 一次请求只能获取一部分,所以可能有多次请求,要计算偏移量\n let errorFlag = false\n\n // 发起请求\n const [showData, hideData]: BookmarkData[] = await Promise.all([\n API.getBookmarkData(\n Tools.getUserId(),\n this.type,\n '未分類',\n offset,\n false\n ),\n API.getBookmarkData(Tools.getUserId(), this.type, '未分類', offset, true),\n ]).catch((error) => {\n if (error.status && error.status === 403) {\n this.btn!.textContent = `× Permission denied`\n }\n errorFlag = true\n return []\n })\n\n if (errorFlag) {\n return\n }\n\n // 保存有用的数据\n for (const data of [showData, hideData]) {\n const works = data.body.works\n // 如果作品的 bookmarkData 为假说明没有实际数据,可能是在获取别人的收藏数据。\n if (works.length > 0 && works[0].bookmarkData) {\n works.forEach((work: ArtworkCommonData | NovelCommonData) => {\n // 如果该作品没有标签,则不添加它\n // 这个作品也许确实没有标签,但绝大多数情况下,这表示这个作品已经被删除而不存在了(404)\n if (work.tags.length > 0) {\n this.addTagList.push({\n id: work.id,\n tags: work.tags,\n restrict: work.bookmarkData!.private,\n })\n }\n })\n }\n }\n\n // 已删除或无法访问的作品不会出现在请求结果里。本来一次请求 100 个,但返回的结果有可能会比 100 个少,甚至极端情况下是 0。所以实际获取到的作品可能比 total 数量少,这是正常的。\n\n // 判断是否请求了所有未分类的作品数据\n const total = offset + this.once\n if (total >= showData.body.total && total >= hideData.body.total) {\n if (this.addTagList.length === 0) {\n // 如果结果为空,不需要处理\n this.btn!.textContent = `✓ No need`\n this.btn!.removeAttribute('disabled')\n return\n } else {\n // 开始添加 tag\n this.addTag()\n }\n } else {\n // 需要继续获取\n this.readyAddTag(++loop)\n }\n }\n\n // 给未分类作品添加 tag\n private async addTag(): Promise {\n const item = this.addTagList[this.addIndex]\n\n await bookmark.add(item.id, this.type, item.tags, true, item.restrict, true)\n\n if (this.addIndex < this.addTagList.length - 1) {\n this.addIndex++\n this.btn!.textContent = `${this.addIndex} / ${this.addTagList.length}`\n // 继续添加下一个\n return this.addTag()\n } else {\n // 添加完成\n this.btn!.textContent = `✓ Complete`\n this.btn!.removeAttribute('disabled')\n toast.success(lang.transl('_收藏作品完毕'))\n }\n }\n}\n\nexport { BookmarksAddTag }\n","// 删除页面上的作品\nimport { log } from '../Log'\nimport { lang } from '../Lang'\nimport { Colors } from '../Colors'\nimport { Tools } from '../Tools'\nimport { states } from '../store/States'\nimport { EVT } from '../EVT'\nimport { msgBox } from '../MsgBox'\nimport { Utils } from '../utils/Utils'\nimport { store } from '../store/Store'\nimport { toast } from '../Toast'\n\nclass DeleteWorks {\n constructor(worksSelectors: string) {\n this.worksSelector = worksSelectors\n\n this.icon = this.createDeleteIcon()\n\n this.bindEvents()\n }\n\n private worksSelector: string = '' // 选择页面上所有作品的选择器\n\n private multipleSelector: string = '' // 多图作品特有的元素的标识\n\n private ugoiraSelector: string = '' // 动图作品特有的元素的标识\n\n private delMode: boolean = false // 是否处于手动删除作品状态\n\n private delBtn: HTMLButtonElement = document.createElement('button')\n\n private icon?: HTMLElement // 手动删除时,显示一个指示图标\n private readonly iconId = 'deleteWorkEl'\n private left = 0\n private top = 0\n private half = 12\n\n private deleteWorkCallback: Function = () => {} // 保存手动删除作品的回调函数,因为可能会多次绑定手动删除事件,所以需要保存传入的 callback 备用\n\n private createDeleteIcon() {\n const el = document.createElement('div')\n el.id = this.iconId\n document.body.appendChild(el)\n return el\n }\n\n private updateDeleteIcon() {\n if (!this.icon) {\n return\n }\n\n this.icon.style.display = this.delMode ? 'block' : 'none'\n\n // 如果指示图标处于隐藏状态,就不会更新其坐标。这样可以优化性能\n if (this.delMode) {\n this.icon.style.left = this.left - this.half + 'px'\n this.icon.style.top = this.top - this.half + 'px'\n }\n }\n\n private bindEvents() {\n // 作品列表更新后,需要重新给作品绑定手动删除事件\n window.addEventListener(EVT.list.worksUpdate, () => {\n if (this.delMode) {\n this.bindDeleteEvent()\n }\n })\n\n // 切换页面时,退出手动删除模式\n window.addEventListener(EVT.list.pageSwitch, () => {\n if (this.delMode) {\n this.toggleDeleteMode()\n }\n })\n\n // 鼠标移动时保存鼠标的坐标\n window.addEventListener(\n 'mousemove',\n (ev) => {\n this.moveEvent(ev)\n },\n true\n )\n }\n\n // 监听鼠标移动\n private moveEvent(ev: MouseEvent) {\n this.left = ev.x\n this.top = ev.y\n this.updateDeleteIcon()\n }\n\n // 清除多图作品的按钮\n public addClearMultipleBtn(selector: string, callback: Function = () => {}) {\n this.multipleSelector = selector\n\n Tools.addBtn('crawlBtns', Colors.bgRed, '_清除多图作品').addEventListener(\n 'click',\n () => {\n if (states.busy) {\n msgBox.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n if (store.resultMeta.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n this.clearMultiple()\n callback()\n },\n false\n )\n }\n\n // 清除动图作品的按钮\n public addClearUgoiraBtn(selector: string, callback: Function = () => {}) {\n this.ugoiraSelector = selector\n\n Tools.addBtn('crawlBtns', Colors.bgRed, '_清除动图作品').addEventListener(\n 'click',\n () => {\n if (states.busy) {\n msgBox.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n if (store.resultMeta.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n this.ClearUgoira()\n callback()\n },\n false\n )\n }\n\n // 手动删除作品的按钮\n public addManuallyDeleteBtn(callback: Function = () => {}) {\n this.deleteWorkCallback = callback\n this.delBtn = Tools.addBtn(\n 'crawlBtns',\n Colors.bgRed,\n '_手动删除作品',\n '_手动删除作品Title'\n )\n\n this.delBtn.addEventListener('click', () => {\n this.toggleDeleteMode()\n })\n }\n\n // 切换删除模式\n private toggleDeleteMode() {\n if (store.resultMeta.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n this.delMode = !this.delMode\n\n this.bindDeleteEvent()\n\n this.updateDeleteIcon()\n\n if (this.delMode) {\n lang.updateText(this.delBtn, '_退出手动删除')\n window.setTimeout(() => {\n EVT.fire('closeCenterPanel')\n }, 100)\n } else {\n lang.updateText(this.delBtn, '_手动删除作品')\n }\n }\n\n // 清除多图作品\n private clearMultiple() {\n const allPicArea = document.querySelectorAll(this.worksSelector)\n allPicArea.forEach((el) => {\n if (el.querySelector(this.multipleSelector)) {\n el.remove()\n }\n })\n this.showWorksCount()\n }\n\n // 清除动图作品\n private ClearUgoira() {\n const allPicArea = document.querySelectorAll(this.worksSelector)\n allPicArea.forEach((el) => {\n if (el.querySelector(this.ugoiraSelector)) {\n el.remove()\n }\n })\n this.showWorksCount()\n }\n\n // 给作品绑定手动删除事件\n // 删除作品后,回调函数可以接收到被删除的元素\n private bindDeleteEvent() {\n const listElement: NodeListOf = document.querySelectorAll(\n this.worksSelector\n )\n listElement.forEach((el) => {\n el.onclick = (ev) => {\n if (this.delMode) {\n ev.preventDefault()\n\n if (states.busy) {\n msgBox.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n const target = ev.currentTarget as HTMLElement\n target.remove()\n this.showWorksCount()\n this.deleteWorkCallback(target)\n }\n }\n })\n }\n\n // 显示调整后,列表里的作品数量\n private showWorksCount() {\n const selector = this.worksSelector\n log.success(\n lang.transl('_调整完毕', Utils.getVisibleEl(selector).length.toString()),\n 2,\n false\n )\n }\n}\n\nexport { DeleteWorks }\n","import { pageType } from '../PageType'\nimport { EVT } from '../EVT'\n\n// 管理所有页面的销毁事件\n// 页面把自己的 destory 函数注册到这个类里,当页面类型变化时会自动执行对应\nclass DestroyManager {\n constructor() {\n this.bindEvents()\n }\n\n private list: Map = new Map()\n private lastType = pageType.type\n\n private bindEvents() {\n window.addEventListener(EVT.list.pageSwitchedTypeChange, () => {\n const fun = this.list.get(this.lastType)\n fun && fun()\n\n this.lastType = pageType.type\n })\n }\n\n // 接收 destory 函数,并关联到对应的页面类型\n public register(fun: Function) {\n this.list.set(pageType.type, fun)\n }\n}\n\nconst destroyManager = new DestroyManager()\nexport { destroyManager }\n","import { theme } from '../Theme'\nimport { Tools } from '../Tools'\nimport { pageType } from '../PageType'\nimport { settings } from '../setting/Settings'\nimport { EVT } from '../EVT'\nimport { ImageViewer } from '../ImageViewer'\n\nclass DisplayThumbnailListOnMultiImageWorkPage {\n constructor() {\n this.bindEvents()\n }\n\n private readonly ID = 'viewerWarpper'\n private readonly insertTarget = 'main figcaption'\n private waitTimer: number | undefined\n\n private bindEvents() {\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.init()\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'displayThumbnailListOnMultiImageWorkPage') {\n data.value ? this.init() : this.remove()\n }\n })\n }\n\n private init() {\n this.remove()\n\n if (!settings.displayThumbnailListOnMultiImageWorkPage) {\n return\n }\n\n if (\n pageType.type !== pageType.list.Artwork &&\n pageType.type !== pageType.list.Unlisted\n ) {\n return\n }\n\n window.setTimeout(() => {\n this.display()\n }, 0)\n }\n\n private remove() {\n // 删除之前创建的元素,因为切换页面时它不会被自动清理\n document.querySelector(`#${this.ID}`)?.remove()\n window.clearTimeout(this.waitTimer)\n }\n\n private async display() {\n // 等待要插入的目标元素生成\n const target = document.querySelector(this.insertTarget)\n if (!target) {\n this.waitTimer = window.setTimeout(() => {\n this.display()\n }, 300)\n return\n }\n\n // 把缩略图列表添加到页面上\n const viewer = new ImageViewer({\n workId: Tools.getIllustId(),\n imageNumber: 2,\n })\n const wrap = await viewer.init()\n if (wrap) {\n wrap.id = this.ID\n theme.register(wrap)\n wrap.style.display = 'block'\n target.insertAdjacentElement('beforebegin', wrap)\n }\n }\n}\n\nnew DisplayThumbnailListOnMultiImageWorkPage()\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { theme } from '../Theme'\nimport { settings } from '../setting/Settings'\nimport { Config } from '../Config'\n\n// 在搜索页面按收藏数快速筛选\nclass FastScreen {\n constructor() {\n this.create()\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'showFastSearchArea') {\n this.setDisplay()\n }\n })\n\n window.addEventListener(EVT.list.pageSwitchedTypeChange, () => {\n this.destroy()\n })\n }\n\n private readonly fastScreenArea = document.createElement('div')\n\n private readonly tagList = [\n '100users入り',\n '500users入り',\n '1000users入り',\n '5000users入り',\n '10000users入り',\n '20000users入り',\n '30000users入り',\n '50000users入り',\n '100000users入り',\n ]\n\n // 添加快速筛选功能\n private create() {\n // 判断插入点的元素有没有加载出来\n const selector = Config.mobile ? '.search-header' : '#root>div'\n const target = document.querySelector(selector) as HTMLDivElement\n\n if (!target) {\n setTimeout(() => {\n this.create()\n }, 300)\n return\n }\n\n this.fastScreenArea.className = 'fastScreenArea'\n\n this.tagList.forEach((tag) => {\n const btn = document.createElement('button')\n btn.innerText = tag\n btn.onclick = () => {\n this.openFastScreenLink(tag)\n }\n this.fastScreenArea.appendChild(btn)\n })\n\n theme.register(this.fastScreenArea)\n\n target.insertAdjacentElement('afterend', this.fastScreenArea)\n\n this.setDisplay()\n }\n\n // 设置是否显示快速筛选区域\n private setDisplay() {\n this.fastScreenArea.style.display = settings.showFastSearchArea\n ? 'block'\n : 'none'\n }\n\n // 打开快速筛选链接\n private openFastScreenLink(fastTag: string) {\n // 拼接 tag。因为搜索页面可以无刷新切换搜索的 tag,所以需要动态获取当前 tag\n const nowTag = Tools.getTagFromURL()\n const firstTag = nowTag.split(' ')[0]\n const fullTag = firstTag + ' ' + fastTag\n\n // 用组合后的 tag 替换掉当前网址里的 tag\n let newURL = location.href.replace(\n encodeURIComponent(nowTag),\n encodeURIComponent(fullTag)\n )\n\n // 如果 url 路径的 tags/ 后面没有子路径,代表是在“顶部”分类。\n // “顶部”分类里始终是严格的搜索模式,即使添加 s_mode=s_tag 也无效,这经常会导致搜索结果为 0。所以如果分类是“顶部”,就自动修改为“插画·漫画”分类以获取更多搜索结果。\n // “顶部”分类的 url 示例\n // https://www.pixiv.net/tags/%E9%9B%AA%E8%8A%B1%E3%83%A9%E3%83%9F%E3%82%A3%2010000users%E5%85%A5%E3%82%8A?s_mode=s_tag\n const str = new URL(newURL).pathname.split('tags/')[1]\n if (str.includes('/') === false) {\n // 在 tag 后面添加“插画·漫画”分类的路径\n newURL = newURL.replace(str, str + '/artworks')\n }\n\n // 设置宽松的搜索模式 s_mode=s_tag\n const u = new URL(newURL)\n u.searchParams.set('s_mode', 's_tag')\n\n location.href = u.toString()\n }\n\n private destroy() {\n this.fastScreenArea.remove()\n }\n}\n\nexport { FastScreen }\n","// 作品页面内的快速收藏功能\nimport { API } from '../API'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { token } from '../Token'\nimport { pageType } from '../PageType'\nimport { ArtworkData, NovelData } from '../crawl/CrawlResult'\nimport { bookmark } from '../Bookmark'\nimport { workToolBar } from '../WorkToolBar'\nimport { downloadOnClickBookmark } from '../download/DownloadOnClickBookmark'\nimport { showHelp } from '../ShowHelp'\nimport { Config } from '../Config'\n\ntype WorkType = 'illusts' | 'novels'\n\nclass QuickBookmark {\n constructor() {\n workToolBar.register(\n (\n toolbar: HTMLDivElement,\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) => {\n this.init(toolbar, pixivBMKDiv, likeBtn)\n }\n )\n }\n\n private isNovel = false\n // 初始化时,获取作品数据\n private workData: ArtworkData | NovelData | undefined\n private isBookmarked: boolean | undefined\n\n private ob: MutationObserver | undefined // 监视心形收藏按钮变化\n private btn: HTMLAnchorElement = document.createElement('a') // 快速收藏按钮\n private readonly btnId = 'quickBookmarkEl' // 快速收藏按钮的 id\n private readonly redClass = 'bookmarkedColor' // 收藏后的红色的颜色值\n\n private async init(\n toolbar: HTMLDivElement,\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) {\n // 没有 token 就不能进行收藏\n if (!token.token) {\n return\n }\n\n if (\n pageType.type !== pageType.list.Artwork &&\n pageType.type !== pageType.list.Novel\n ) {\n return\n }\n\n this.isNovel = pageType.type === pageType.list.Novel\n\n // 删除可能存在的旧的快速收藏按钮\n const oldBtn = toolbar.querySelector('#' + this.btnId) as HTMLAnchorElement\n if (oldBtn) {\n oldBtn.remove()\n }\n\n // 判断这个作品是否收藏过了\n this.workData = await this.getWorkData()\n this.isBookmarked = !!this.workData.body.bookmarkData\n\n // 监听心形收藏按钮从未收藏到收藏的变化\n if (!this.isBookmarked) {\n if (!Config.mobile) {\n // 桌面端\n // 没有收藏时,心形按钮的第一个子元素是 button。收藏之后,button 被移除,然后添加一个 a 标签\n this.ob = new MutationObserver((mutations) => {\n for (const change of mutations) {\n if (change.type === 'childList') {\n const added = change.addedNodes\n if (added.length > 0 && added[0].nodeName === 'A') {\n this.isBookmarked = true\n this.redQuickBookmarkBtn()\n }\n }\n }\n })\n this.ob.observe(pixivBMKDiv, {\n childList: true,\n })\n } else {\n // 移动端\n // 点击心形按钮收藏作品后,不会添加 a 标签,也不会跳转到编辑收藏的页面,仅仅会改变 path 的 fill 颜色。\n const path = pixivBMKDiv.querySelector('path')\n if (!path) {\n return\n }\n this.ob = new MutationObserver((mutations) => {\n if (path.getAttribute('fill') === '#FF4060') {\n this.isBookmarked = true\n this.redQuickBookmarkBtn()\n } else {\n this.isBookmarked = false\n this.resetQuickBookmarkBtn()\n }\n })\n this.ob.observe(path, {\n attributes: true,\n attributeFilter: ['fill'],\n })\n }\n }\n\n // 添加快速收藏按钮\n this.btn = this.createBtn()\n lang.register(this.btn)\n toolbar.insertBefore(this.btn, toolbar.childNodes[3])\n\n if (this.isBookmarked) {\n this.redQuickBookmarkBtn()\n } else {\n this.btn.addEventListener('click', () => {\n // 添加收藏\n this.addBookmark(pixivBMKDiv, likeBtn)\n\n // 下载这个作品\n this.sendDownload()\n\n showHelp.show(\n 'tipBookmarkButton',\n lang.transl('_下载器的收藏按钮默认会添加作品的标签')\n )\n })\n }\n\n // 使用快捷键 Ctrl + B 点击快速收藏按钮\n window.addEventListener('keydown', (ev) => {\n if (ev.code === 'KeyB' && ev.ctrlKey) {\n this.btn && this.btn.click()\n }\n })\n }\n\n private sendDownload() {\n if (Tools.isArtworkData(this.workData!)) {\n downloadOnClickBookmark.send(this.workData!.body.illustId)\n } else {\n downloadOnClickBookmark.send(this.workData!.body.id, 'novels')\n }\n }\n\n // 创建快速收藏按钮\n private createBtn() {\n const btn = document.createElement('a')\n btn.id = this.btnId\n btn.textContent = '✩'\n btn.href = 'javascript:void(0)'\n btn.dataset.xztitle = '_快速收藏'\n return btn\n }\n\n private async getWorkData() {\n // 这里不能从缓存的数据中获取作品数据,因为作品的收藏状态可能已经发生了变化\n if (this.isNovel) {\n return await API.getNovelData(Tools.getNovelId())\n } else {\n return await API.getArtworkData(Tools.getIllustId())\n }\n }\n\n private async addBookmark(\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) {\n const type = this.isNovel ? 'novels' : 'illusts'\n const id = this.isNovel ? Tools.getNovelId() : Tools.getIllustId()\n\n // 移动端不自动点赞和设置点赞按钮的颜色,因为切换作品后元素没有重新生成,样式会依旧存在\n if (!Config.mobile) {\n this.like(type, id, likeBtn)\n }\n\n if (this.isBookmarked) {\n return\n }\n\n // 先模拟点击 Pixiv 原本的收藏按钮,这样可以显示推荐作品\n // 这会发送一次 Pixiv 原生的收藏请求\n this.clickPixivBMKBtn(pixivBMKDiv)\n\n // 然后再由下载器发送收藏请求\n // 因为下载器的收藏按钮具有添加标签、非公开收藏等功能,所以要在后面执行,覆盖掉 Pixiv 原生收藏的效果\n window.setTimeout(async () => {\n const res = await bookmark.add(\n id,\n type,\n Tools.extractTags(this.workData!)\n )\n if (res !== 429) {\n // 收藏成功之后\n this.isBookmarked = true\n this.redQuickBookmarkBtn()\n }\n }, 100)\n }\n\n // 点赞这个作品\n private like(type: WorkType, id: string, likeBtn: HTMLButtonElement) {\n API.addLike(id, type, token.token)\n likeBtn.style.color = '#0096fa'\n }\n\n private getEditBookmarkLink() {\n if (this.isNovel) {\n return `/novel/bookmark_add.php?id=${Tools.getNovelId()}`\n } else {\n return `/bookmark_add.php?type=illust&illust_id=${Tools.getIllustId()}`\n }\n }\n\n // 如果这个作品已收藏,则改变快速收藏按钮\n private redQuickBookmarkBtn() {\n this.btn.classList.add(this.redClass)\n this.btn.href = this.getEditBookmarkLink()\n }\n\n // 如果这个作品从已收藏变成未收藏,则改变快速收藏按钮\n private resetQuickBookmarkBtn() {\n this.btn.classList.remove(this.redClass)\n this.btn.href = 'javascript:void(0)'\n }\n\n private clickPixivBMKBtn(pixivBMKDiv: HTMLDivElement) {\n if (Config.mobile) {\n pixivBMKDiv && pixivBMKDiv.click()\n } else {\n const btn = pixivBMKDiv.querySelector('button')\n btn && btn.click()\n }\n // 取消监听心形收藏按钮的变化\n this.ob && this.ob.disconnect()\n }\n}\n\nnew QuickBookmark()\n","import { settings } from '../setting/Settings'\nimport { pageType } from '../PageType'\nimport { store } from '../store/Store'\nimport { lang } from '../Lang'\nimport { log } from '../Log'\nimport { EVT } from '../EVT'\n\n// 在搜索页面里移除已关注用户的作品\nclass RemoveWorksOfFollowedUsersOnSearchPage {\n constructor() {\n // 初始化时,页面上的作品元素尚未生成,所以不必使用 findAllWorks 方法\n // this.findAllWorks()\n\n this.createObserver(document.body)\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (\n data.name === 'removeWorksOfFollowedUsersOnSearchPage' &&\n data.value\n ) {\n this.findAllWorks()\n }\n })\n\n window.addEventListener(EVT.list.followingUsersChange, () => {\n this.findAllWorks()\n })\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.showTip = false\n })\n }\n\n private showTip = false\n\n // 在每个页面上只显示一次提示\n private showTipOnce() {\n if (this.showTip) {\n return\n }\n\n this.showTip = true\n log.warning(lang.transl('_在搜索页面里移除已关注用户的作品'))\n }\n\n private get enable() {\n return (\n settings.removeWorksOfFollowedUsersOnSearchPage &&\n (pageType.type === pageType.list.ArtworkSearch ||\n pageType.type === pageType.list.NovelSearch)\n )\n }\n\n /**传入作品元素,从中检查用户 ID,如果该用户已关注,就移除这个作品 */\n // 这里不能使用 ArtworkThumbnail 类(作品缩略图)所监听的元素来检查,因为 ArtworkThumbnail 监听的不是完整的作品元素,只是作品元素里的图片部分\n // 例如在搜索页面里,一个作品元素分为 3 个部分:1. 缩略图 2. 标题 3. 作者(用户名)\n // ArtworkThumbnail 获取的元素只是缩略图,不是完整的作品元素,所以不能用它来移除作品元素。而且缩略图里面有时可能没有用户信息,无法判断用户是否已关注。\n private check(el: HTMLElement) {\n if (!this.enable) {\n return\n }\n\n const userLink = el.querySelector('a[href*=users]') as HTMLAnchorElement\n if (!userLink) {\n return\n }\n\n // https://www.pixiv.net/users/9212166\n const userID = userLink.href.match(/\\d+/)\n if (userID && store.followingUserIDList.includes(userID[0])) {\n el.remove()\n this.showTipOnce()\n }\n }\n\n // 搜索页面里的插画作品选择器\n private readonly worksSelector = '#root section ul li'\n\n /**检查当前页面上的作品元素 */\n private findAllWorks() {\n if (!this.enable) {\n return\n }\n\n const allLI = document.body.querySelectorAll(\n this.worksSelector\n ) as NodeListOf\n for (const LI of allLI) {\n this.check(LI)\n }\n }\n\n /**使用监视器,检查未来添加的作品元素 */\n protected createObserver(target: HTMLElement) {\n const observer = new MutationObserver((records) => {\n if (!this.enable) {\n return\n }\n\n for (const record of records) {\n if (record.addedNodes.length > 0) {\n // 遍历被添加的元素,检查其中的作品元素\n for (const newEl of record.addedNodes) {\n if (newEl.nodeType !== 1) {\n continue\n }\n\n if (newEl.nodeName === 'LI') {\n this.check(newEl as HTMLElement)\n } else {\n const allLI = (newEl as HTMLElement).querySelectorAll('li')\n for (const LI of allLI) {\n this.check(LI)\n }\n }\n }\n }\n }\n })\n observer.observe(target, {\n childList: true,\n subtree: true,\n })\n }\n}\n\nconst removeWorksOfFollowedUsersOnSearchPage =\n new RemoveWorksOfFollowedUsersOnSearchPage()\nexport { removeWorksOfFollowedUsersOnSearchPage }\n","import { lang } from '../Lang'\nimport { API } from '../API'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { img2ico } from '../utils/imageToIcon'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\n// 保存用户头像为图标\nclass SaveAvatarIcon {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.saveAvatarIcon, () => {\n this.saveAvatarIcon()\n })\n }\n\n private async saveAvatarIcon() {\n const userId = Tools.getUserId()\n const userProfile = await API.getUserProfile(userId)\n const bigImg = userProfile.body.imageBig // imageBig 并不是头像原图,而是裁剪成 170 px 的尺寸\n const fullSizeImg = bigImg.replace('_170', '') // 去掉 170 标记,获取头像图片的原图\n\n // 生成 ico 文件\n // 尺寸固定为 256,因为尺寸更小的图标如 128,在 windows 资源管理器里会被缩小到 48 显示\n const blob = await img2ico.convert({\n size: [256],\n source: fullSizeImg,\n shape: 'fillet',\n bleed: true,\n })\n\n // 直接保存到下载文件夹\n const url = URL.createObjectURL(blob)\n const name = `${userProfile.body.name}_${userId}_icon.ico`\n Utils.downloadFile(url, name)\n\n const msg = '✓ ' + lang.transl('_保存用户头像为图标')\n log.success(msg)\n toast.success(msg)\n EVT.fire('closeCenterPanel')\n }\n}\n\nnew SaveAvatarIcon()\n","import { lang } from '../Lang'\nimport { API } from '../API'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\n// 保存用户头像\nclass SaveAvatarImage {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.saveAvatarImage, () => {\n this.saveAvatarImage()\n })\n }\n\n private async saveAvatarImage() {\n const userId = Tools.getUserId()\n const userProfile = await API.getUserProfile(userId)\n const imageURL = userProfile.body.imageBig\n\n // 提取图片的后缀名\n const arr = imageURL.split('.')\n const ext = arr[arr.length - 1]\n\n // imageBig 并不是头像原图,而是裁剪成 170 px 的尺寸\n // 如果是 gif 格式,则不生成其大图 url,因为生成的大图是静态图。不知道 gif 头像是否有大图,以及其 url 是什么样的\n // 如果是其他格式,则去掉 170 标记,获取头像图片的原图\n const fullSizeImgURL =\n ext === 'gif' ? imageURL : imageURL.replace('_170', '')\n\n // 加载文件\n const img = await fetch(fullSizeImgURL)\n const blob = await img.blob()\n\n // 直接保存到下载文件夹\n const url = URL.createObjectURL(blob)\n const name = `${userProfile.body.name}_${userId}_avatar.${ext}`\n Utils.downloadFile(url, name)\n\n const msg = '✓ ' + lang.transl('_保存用户头像')\n log.success(msg)\n toast.success(msg)\n EVT.fire('closeCenterPanel')\n }\n}\n\nnew SaveAvatarImage()\n","import { lang } from '../Lang'\nimport { API } from '../API'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\n// 保存用户封面图片\nclass SaveUserCover {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.saveUserCover, () => {\n this.saveUserCover()\n })\n }\n\n private async saveUserCover() {\n const userId = Tools.getUserId()\n const userProfile = await API.getUserProfile(userId)\n const bgData = userProfile.body.background\n if (bgData === null) {\n return toast.error(lang.transl('_没有数据可供使用'))\n }\n\n const bgUrl = bgData.url\n\n if (!bgUrl) {\n return toast.error(lang.transl('_没有数据可供使用'))\n }\n\n // 加载文件\n const img = await fetch(bgUrl)\n const blob = await img.blob()\n\n // 提取后缀名\n const arr = bgUrl.split('.')\n const ext = arr[arr.length - 1]\n\n // 直接保存到下载文件夹\n const url = URL.createObjectURL(blob)\n const name = `${userProfile.body.name}_${userId}_cover.${ext}`\n Utils.downloadFile(url, name)\n\n const msg = '✓ ' + lang.transl('_保存用户封面')\n log.success(msg)\n toast.success(msg)\n EVT.fire('closeCenterPanel')\n }\n}\n\nnew SaveUserCover()\n","interface Data {\n [key: string]: {\n [key: string]: string\n }\n}\n\n// 为了兼容以前的版本的设置,把旧的设置值转换为新版本的设置值\nclass ConvertOldSettings {\n // 旧设置和新设置的对应关系\n // 为了集中管理,便于使用,写到了一个对象里\n private readonly data: Data = {\n ratio: {\n '0': 'square',\n '1': 'horizontal',\n '2': 'vertical',\n '3': 'userSet',\n },\n idRange: {\n '1': '>',\n '2': '<',\n },\n widthTag: {\n '1': 'yes',\n '-1': 'no',\n },\n restrict: {\n '1': 'yes',\n '-1': 'no',\n },\n userSetLang: {\n '-1': 'auto',\n '0': 'zh-cn',\n '1': 'ja',\n '2': 'en',\n '3': 'zh-tw',\n '4': 'ko',\n },\n }\n\n // 传递需要转换的设置的键值\n public convert(key: string, value: string): string {\n const map = this.data[key]\n // 如果这是一个可以转换的设置\n if (map) {\n // 如果传递的值是旧的设置值,则能够获取到新的设置值\n // 如果传递的值已经是新的设置值,则获取到的是 undefined ,此时不需要转换\n const newValue = map[value]\n if (newValue !== undefined) {\n return newValue\n }\n }\n\n return value\n }\n}\n\nconst convertOldSettings = new ConvertOldSettings()\n\nexport { convertOldSettings }\n","import { API } from '../API'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { settings, setSetting } from './Settings'\nimport { theme } from '../Theme'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { log } from '../Log'\n\n// 针对某些用户,不下载他们的多图作品的最后几张图片\nclass DoNotDownloadLastFewImages {\n constructor() {\n this.createWrap()\n theme.register(this.wrap)\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private readonly slotName = 'DoNotDownloadLastFewImagesSlot'\n private wrap!: HTMLDivElement // 最外层元素\n\n private expandBtn!: HTMLButtonElement // 展开/折叠 按钮\n private totalSpan!: HTMLSpanElement // 显示规则数量\n private showAddBtn!: HTMLButtonElement // 添加 按钮,点击显示添加区域\n\n private addWrap!: HTMLDivElement // 用于添加新项目的区域\n private addInputUid!: HTMLInputElement // 用于添加新项目的 uid 的输入框\n private addValueInput!: HTMLInputElement // 用于添加新项目的 name 的输入框\n private addBtn!: HTMLButtonElement // 添加 按钮\n private cancelBtn!: HTMLButtonElement // 取消 按钮\n\n private listWrap!: HTMLDivElement // 列表区域容器\n\n private _addWrapShow = false\n\n set addWrapShow(val: boolean) {\n this._addWrapShow = val\n\n if (val) {\n this.addWrap.style.display = 'block'\n this.addInputUid.focus()\n } else {\n this.addWrap.style.display = 'none'\n this.addInputUid.value = ''\n this.addValueInput.value = ''\n }\n }\n\n get addWrapShow() {\n return this._addWrapShow\n }\n\n private wrapHTML = `\n \n\n \n 0\n \n \n \n\n
      \n
      \n
      \n \n \n
      \n\n
      \n \n \n
      \n\n
      \n \n\n \n \n
      \n
      \n
      \n\n
      \n
      \n
      \n `\n\n // 创建列表外部的容器,静态 html\n private createWrap() {\n this.wrap = Tools.useSlot(this.slotName, this.wrapHTML)! as HTMLDivElement\n this.expandBtn = this.wrap.querySelector('.expand')! as HTMLButtonElement\n this.showAddBtn = this.wrap.querySelector('.showAdd')! as HTMLButtonElement\n this.totalSpan = this.wrap.querySelector('.total')! as HTMLSpanElement\n this.addWrap = this.wrap.querySelector('.addWrap')! as HTMLDivElement\n this.addInputUid = this.wrap.querySelector(\n '.addUidInput'\n )! as HTMLInputElement\n this.addValueInput = this.wrap.querySelector(\n '.addValueInput'\n )! as HTMLInputElement\n this.addBtn = this.wrap.querySelector('.add')! as HTMLButtonElement\n this.cancelBtn = this.wrap.querySelector('.cancel')! as HTMLButtonElement\n this.listWrap = this.wrap.querySelector('.listWrap')! as HTMLDivElement\n\n // 展开/折叠按钮\n this.expandBtn.addEventListener('click', () => {\n setSetting(\n 'DoNotDownloadLastFewImagesShow',\n !settings.DoNotDownloadLastFewImagesShow\n )\n })\n\n // 切换显示添加规则的区域\n this.showAddBtn.addEventListener('click', () => {\n this.addWrapShow = !this.addWrapShow\n })\n\n // 添加规则的按钮\n this.addBtn.addEventListener('click', () => {\n this.addRule(this.addInputUid.value, this.addValueInput.value)\n })\n\n // 取消添加的按钮\n this.cancelBtn.addEventListener('click', () => {\n this.addWrapShow = false\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'DoNotDownloadLastFewImagesShow') {\n this.showListWrap()\n }\n if (data.name === 'DoNotDownloadLastFewImagesList') {\n this.createAllList()\n }\n })\n }\n\n private showListWrap() {\n const show = settings.DoNotDownloadLastFewImagesShow\n this.listWrap.style.display = show ? 'flex' : 'none'\n lang.updateText(this.expandBtn, show ? '_收起' : '_展开')\n }\n\n // 根据规则动态创建 html\n private createAllList() {\n this.totalSpan.textContent =\n settings.DoNotDownloadLastFewImagesList.length.toString()\n this.listWrap.innerHTML = ''\n const df = document.createDocumentFragment()\n for (const {\n uid,\n user,\n value,\n } of settings.DoNotDownloadLastFewImagesList) {\n df.append(this.createOneList(uid, user, value))\n }\n this.listWrap.append(df)\n }\n\n // 创建规则对应的元素,并绑定事件\n private createOneList(uid: number, user: string, value: number) {\n const html = `\n
      \n ${user}\n
      \n\n
      \n \n
      \n\n
      \n \n
      \n\n
      \n \n\n \n
      `\n\n const element = document.createElement('div')\n element.classList.add('settingItem')\n element.dataset.key = uid.toString()\n element.innerHTML = html\n\n const updateRule = element.querySelector(`button[data-updateRule='${uid}']`)\n const deleteRule = element.querySelector(`button[data-deleteRule='${uid}']`)\n const uidInput = element.querySelector(\n `input[data-uidInput='${uid}']`\n )! as HTMLInputElement\n const valueInput = element.querySelector(\n `input[data-valueInput='${uid}']`\n )! as HTMLInputElement\n\n // 当输入框发生变化时,进行更新\n ;[uidInput, valueInput].forEach((el) => {\n el?.addEventListener('change', () => {\n if (el.value) {\n this.updateRule(uid, uidInput.value, valueInput.value, false)\n }\n })\n })\n\n // 更新规则\n updateRule?.addEventListener('click', () => {\n this.updateRule(uid, uidInput.value, valueInput.value)\n })\n\n // 删除规则\n deleteRule?.addEventListener('click', () => {\n this.deleteRule(uid)\n })\n\n return element\n }\n\n // 检查用户输入的值\n private checkValue(uidInput: string, value: string) {\n if (!uidInput || !value) {\n msgBox.error(lang.transl('_必填项不能为空'))\n return false\n }\n\n const uid = Number.parseInt(uidInput)\n if (!uid || isNaN(uid)) {\n msgBox.error(lang.transl('_用户ID必须是数字'))\n return false\n }\n\n // value 允许为 0\n const val = Number.parseInt(value)\n if (isNaN(val) || val < 0) {\n msgBox.error(\n lang.transl('_不下载最后几张图片') + ' ' + lang.transl('_必须是数字')\n )\n return false\n }\n\n return {\n uid,\n val,\n }\n }\n\n private async getUserName(uid: number): Promise {\n return new Promise(async (resolve) => {\n const profile = await API.getUserProfile(uid.toString()).catch((err) => {\n console.log(err)\n log.error(\n `ERROR: userID ${uid}, status ${err.status}
      https://www.pixiv.net/users/${uid}`\n )\n })\n if (profile && profile.body.name) {\n return resolve(profile.body.name)\n }\n return resolve('')\n })\n }\n\n // 添加规则\n private async addRule(uid: string, value: string) {\n const check = this.checkValue(uid, value)\n if (!check) {\n return\n }\n\n let old = settings.DoNotDownloadLastFewImagesList.find(\n (item) => item.uid === check.uid\n )\n if (old) {\n old.value = check.val\n } else {\n const user = await this.getUserName(check.uid)\n const data = {\n uid: check.uid,\n user: user,\n value: check.val,\n }\n settings.DoNotDownloadLastFewImagesList.push(data)\n }\n\n setSetting(\n 'DoNotDownloadLastFewImagesList',\n settings.DoNotDownloadLastFewImagesList\n )\n\n this.addWrapShow = false\n\n toast.success(lang.transl('_添加成功'))\n }\n\n // 更新规则\n // tip 表示是否用显示操作成功的提示。当用户点击了更新按钮时应该显示提示;输入内容变化导致的自动更新可以不显示提示\n private async updateRule(\n oldUid: number,\n uid: string,\n value: string,\n tip = true\n ) {\n const check = this.checkValue(uid, value)\n if (!check) {\n return\n }\n\n let old = settings.DoNotDownloadLastFewImagesList.find(\n (item) => item.uid === oldUid\n )\n if (old) {\n // 更新时如果 uid 未改变,依然会获取用户名,因为用户名可能更新了\n const user = await this.getUserName(check.uid)\n old.uid = check.uid\n old.user = user\n old.value = check.val\n } else {\n return\n }\n\n setSetting(\n 'DoNotDownloadLastFewImagesList',\n settings.DoNotDownloadLastFewImagesList\n )\n\n this.addWrapShow = false\n\n if (tip) {\n toast.success(lang.transl('_更新成功'))\n }\n }\n\n // 删除规则\n private deleteRule(uid: number) {\n let index = settings.DoNotDownloadLastFewImagesList.findIndex(\n (item) => item.uid === uid\n )\n if (index > -1) {\n settings.DoNotDownloadLastFewImagesList.splice(index, 1)\n } else {\n return\n }\n\n setSetting(\n 'DoNotDownloadLastFewImagesList',\n settings.DoNotDownloadLastFewImagesList\n )\n\n this.removeListElement(uid)\n }\n\n private removeListElement(uid: number) {\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${uid}']`\n )\n listElement?.remove()\n }\n}\n\nnew DoNotDownloadLastFewImages()\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { formHtml } from './FormHTML'\nimport { SettingsForm } from './SettingsForm'\nimport { SaveNamingRule } from './SaveNamingRule'\nimport { theme } from '../Theme'\nimport { FormSettings } from './FormSettings'\nimport { Utils } from '../utils/Utils'\nimport { settings, setSetting, SettingKeys } from '../setting/Settings'\nimport { options } from '../setting/Options'\n\n// 设置表单\nclass Form {\n constructor() {\n this.form = Tools.useSlot('form', formHtml) as SettingsForm\n\n theme.register(this.form)\n lang.register(this.form)\n\n this.getElements()\n\n const allOptions = this.form.querySelectorAll(\n '.option'\n ) as NodeListOf\n options.init(allOptions)\n\n new SaveNamingRule(this.form.userSetName)\n\n new FormSettings(this.form)\n\n this.bindEvents()\n }\n\n public form: SettingsForm\n\n /**所有的美化表单元素 */\n // 每个美化的 input 控件后面必定有一个 span 元素\n // label 和 子选项区域则不一定有\n private allBeautifyInput: {\n input: HTMLInputElement\n span: HTMLSpanElement\n label: HTMLLabelElement | null\n subOption: HTMLSpanElement | null\n }[] = []\n\n /**一些固定格式的帮助元素 */\n private tips: {\n wrapID: string\n wrap: HTMLSpanElement\n settingName: SettingKeys\n }[] = []\n\n private getElements() {\n // 获取所有的美化控件和它们对应的 span 元素\n const allCheckBox = this.form.querySelectorAll(\n 'input[type=\"checkbox\"]'\n ) as NodeListOf\n const allRadio = this.form.querySelectorAll(\n 'input[type=\"radio\"]'\n ) as NodeListOf\n const checkboxAndRadio = [allCheckBox, allRadio]\n for (const arr of checkboxAndRadio) {\n arr.forEach((input) => {\n let subOption = null\n if (input.classList.contains('checkbox_switch')) {\n subOption = this.form.querySelector(\n `.subOptionWrap[data-show=\"${input.name}\"]`\n ) as HTMLSpanElement\n }\n this.allBeautifyInput.push({\n input: input,\n span: input.nextElementSibling! as HTMLSpanElement,\n label: this.form.querySelector(`label[for=\"${input.id}\"]`),\n subOption: subOption,\n })\n })\n }\n\n // 获取所有在表单上直接显示的提示元素\n for (const item of this.tips) {\n const wrap: HTMLSpanElement = this.form.querySelector(\n '#' + item.wrapID\n ) as HTMLSpanElement\n if (wrap) {\n item.wrap = wrap\n }\n }\n }\n\n private bindEvents() {\n // 为美化的表单控件绑定事件\n for (const item of this.allBeautifyInput) {\n const { input, span } = item\n\n // 点击美化元素时,点击真实的 input 控件\n span.addEventListener('click', () => {\n input.click()\n })\n\n // 当美化元素获得焦点,并且用户按下了回车或空格键时,点击真实的 input 控件\n span.addEventListener('keydown', (event) => {\n if (\n (event.code === 'Enter' || event.code === 'Space') &&\n event.target === span\n ) {\n event.stopPropagation()\n event.preventDefault()\n input.click()\n }\n })\n }\n\n // 设置变化或者重置时,重新设置美化状态\n window.addEventListener(\n EVT.list.settingChange,\n Utils.debounce(() => {\n this.initFormBeautify()\n this.showTips()\n }, 50)\n )\n\n // 用户点击“我知道了”按钮之后不再显示对应的提示\n for (const item of this.tips) {\n if (item.wrap) {\n const btn = item.wrap.querySelector('button')!\n btn.addEventListener('click', () => {\n setSetting(item.settingName, false)\n })\n }\n }\n\n // 选择背景图片\n {\n const el = this.form.querySelector('#selectBG')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('selectBG')\n })\n }\n }\n\n // 清除背景图片\n {\n const el = this.form.querySelector('#clearBG')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('clearBG')\n })\n }\n }\n\n // 重置设置\n {\n const el = this.form.querySelector('#resetSettings')\n if (el) {\n el.addEventListener('click', () => {\n const result = window.confirm(lang.transl('_是否重置设置'))\n if (result) {\n EVT.fire('resetSettings')\n }\n })\n }\n }\n\n // 导出设置\n {\n const el = this.form.querySelector('#exportSettings')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('exportSettings')\n })\n }\n }\n\n // 导入设置\n {\n const el = this.form.querySelector('#importSettings')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('importSettings')\n })\n }\n }\n\n // 重新显示帮助\n {\n const el = this.form.querySelector('#resetHelpTip')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('resetHelpTip')\n })\n }\n }\n\n // 显示命名字段提示\n this.form\n .querySelector('.showFileNameTip')!\n .addEventListener('click', () =>\n Utils.toggleEl(document.querySelector('.fileNameTip')! as HTMLElement)\n )\n\n // 显示日期格式提示\n this.form\n .querySelector('.showDateTip')!\n .addEventListener('click', () =>\n Utils.toggleEl(document.querySelector('.dateFormatTip')! as HTMLElement)\n )\n\n // 显示标签分隔提示\n this.form\n .querySelector('.showTagsSeparatorTip')!\n .addEventListener('click', () =>\n Utils.toggleEl(\n document.querySelector('.tagsSeparatorTip')! as HTMLElement\n )\n )\n\n // 显示标签分隔提示\n this.form\n .querySelector('.showPreviewWorkTip')!\n .addEventListener('click', () =>\n Utils.toggleEl(\n document.querySelector('.previewWorkTip')! as HTMLElement\n )\n )\n\n // 输入框获得焦点时自动选择文本(文件名输入框例外)\n const centerInputs: NodeListOf =\n this.form.querySelectorAll('input[type=text]')\n for (const el of centerInputs) {\n if (el.name !== 'userSetName') {\n el.addEventListener('focus', function () {\n this.select()\n })\n }\n }\n\n // 把下拉框的选择项插入到文本框里\n const from = this.form.fileNameSelect\n const to = this.form.userSetName\n from.addEventListener('change', () => {\n if (from.value !== 'default') {\n // 把选择项插入到光标位置,并设置新的光标位置\n const position = to.selectionStart!\n to.value =\n to.value.substring(0, position) +\n from.value +\n to.value.substring(position)\n to.selectionStart = position + from.value.length\n to.selectionEnd = position + from.value.length\n to.focus()\n }\n })\n }\n\n // 设置表单里的美化元素的状态\n private initFormBeautify() {\n for (const item of this.allBeautifyInput) {\n const { input, span, label, subOption } = item\n // 重设 label 的高亮状态\n if (label) {\n const method = input.checked ? 'add' : 'remove'\n label.classList[method]('active')\n }\n\n // 重设子选项区域的显示/隐藏状态\n if (subOption) {\n subOption.style.display = input.checked ? 'inline' : 'none'\n }\n }\n }\n\n // 是否显示提示\n private showTips() {\n for (const item of this.tips) {\n if (!Utils.isPixiv()) {\n item.wrap.style.display = 'none'\n } else {\n item.wrap.style.display = settings[item.settingName] ? 'block' : 'none'\n }\n }\n }\n}\n\nnew Form()\n","import { Config } from '../Config'\n\n// 目前设置项的最大编号是 88\nexport const formHtml = `
      \n
      \n

      \n \n ? \n  \n \n \n

      \n\n

      \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n \n \n \n \n \n \n

      \n \n

      \n \n \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n <= \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n >= \n \n <= \n \n \n \n \n ? \n \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n\n =\" checked>\n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n =\" checked>\n \n \n\n \n \n \n \n \n \n \n\n \n \n\n \n

      \n\n

      \n \n \n ? \n \n \n \n \" checked>\n \n \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n  - \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n  \n \n \n \n \n \n \n
      \n \n
      \n

      \n\n
      \n \n \n \n
      \n
      \n
      \n

      \n \n \n  \n \n  \n \n \n

      \n

      \n \n {user}/{id}\n
      \n \n
      \n * \n
      \n {id}\n \n
      \n {user}\n \n
      \n {user_id}\n \n
      \n {title}\n \n
      \n {tags}\n \n
      \n {tags_translate}\n \n
      \n {tags_transl_only}\n \n
      \n {page_title}\n \n
      \n * {page_tag}\n \n
      \n {type}\n \n
      \n * {AI}\n \n
      \n {like}\n \n
      \n {bmk}\n \n
      \n {bmk_1000}\n \n
      \n {bmk_id}\n \n
      \n {view}\n \n
      \n * {rank}\n \n
      \n {date}\n \n
      \n {upload_date}\n \n
      \n {task_date}\n \n
      \n {px}\n \n
      \n * {series_title}\n \n
      \n * {series_order}\n \n
      \n * {series_id}\n \n
      \n {id_num}\n \n
      \n {p_num}\n \n

      \n\n

      \n \n \n \n

      \n \n

      \n \n \n \n

      \n \n

      \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n

      \n\n

      \n \n \n ? \n \n \n

      \n\n

      \n \n \n \n

      \n\n
      \n \n \n
      \n\n \n \n
      \n \n
      \n\n
      \n \n
      \n\n

      \n \n \n ? \n \n \n

      \n\n

      \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n

      \n \n

      \n \n \n ? \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n

      \n \n

      \n \n \n \n \n

      \n \n

      \n \n \n \n\n \n \n >\n \n  \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n

      \n\n

      \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n  \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n
      \n \n
      \n

      \n\n

      \n \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n\n \n \n \n \n \n \n \n \n

      \n \n

      \n \n \n ? \n \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n

      \n\n

      \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n

      \n

      \n \n

      \n \n

      \n \n \n ? \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n

      \n\n

      \n \n

      \n \n

      \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n \n

      \n \n

      \n \n \n ? \n \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n \n (1200px)\n \n \n \n (540px)\n \n \n \n (250px)\n

      \n\n

      \n \n \n ? \n \n \n \n MiB\n  - \n MiB\n \n

      \n\n

      \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n\n \n

      \n\n

      \n \n \n ? \n \n \n \n   \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n

      \n \n

      \n \n \n ? \n \n \n \n

      \n \n

      \n \n \n ? \n \n \n \n\n \n\n  \n \n  px\n\n \n

      \n\n

      \n \n \n \n\n \n \n \n \n \n

      \n \n

      \n \n \n \n

      \n\n

      \n \n \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n\n  \n \n  ms\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n \n \n\n \n\n \n

      \n\n

      \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n \n \n\n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n \n \n ? \n \n \n

      \n\n

      \n \n \n ? \n \n \n\n \n \n \n \n

      \n\n

      \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n

      \n\n

      \n \n

      \n\n

      \n \n \n \n

      \n

      \n \n
      \n YYYY 2021\n
      \n YY 21\n
      \n MM 04\n
      \n MMM Apr\n
      \n MMMM April\n
      \n DD 30\n
      \n hh 06\n
      \n mm 40\n
      \n ss 08\n
      \n

      \n\n

      \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n\n  \n \n\n \n

      \n\n

      \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n\n \n\n \n \n \n  \n  \n \n \n \n \n \n \n  \n \n \n

      \n \n

      \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n

      \n\n

      \n Language\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

      \n\n

      \n \n \n \n \n \n

      \n
      \n
      `\n","import { EVT } from '../EVT'\nimport { pageType } from '../PageType'\nimport { settings, setSetting, SettingKeys } from './Settings'\nimport { SettingsForm } from './SettingsForm'\nimport { DateFormat } from '../utils/DateFormat'\nimport { nameRuleManager } from './NameRuleManager'\n\n// 管理 from 表单里的输入选项(input 元素和 textarea 元素)\n// 从 settings 里恢复选项的值;当选项改变时保存到 settings 里\n// 不属于输入选项的设置,不在这里处理\n\ninterface InputFileds {\n text: SettingKeys[]\n textarea: SettingKeys[]\n checkbox: SettingKeys[]\n radio: SettingKeys[]\n datetime: SettingKeys[]\n}\n\nclass FormSettings {\n constructor(form: SettingsForm) {\n this.form = form\n\n nameRuleManager.registerInput(this.form.userSetName)\n\n this.bindEvents()\n\n this.restoreFormSettings()\n\n this.ListenChange()\n }\n\n private form!: SettingsForm\n\n // 没有填写 userSetName 字段,因为这个字段由 nameRuleManager 管理\n private readonly inputFileds: InputFileds = {\n checkbox: [\n 'downType0',\n 'downType1',\n 'downType2',\n 'downType3',\n 'downAllAges',\n 'downR18',\n 'downR18G',\n 'downSingleImg',\n 'downMultiImg',\n 'downColorImg',\n 'downBlackWhiteImg',\n 'downNotBookmarked',\n 'downBookmarked',\n 'firstFewImagesSwitch',\n 'multiImageWorkImageLimitSwitch',\n 'saveNovelMeta',\n 'BMKNumSwitch',\n 'BMKNumAverageSwitch',\n 'setWHSwitch',\n 'ratioSwitch',\n 'userSetChecked',\n 'postDate',\n 'idRangeSwitch',\n 'needTagSwitch',\n 'notNeedTagSwitch',\n 'magnifier',\n 'tagNameToFileName',\n 'noSerialNo',\n 'createFolderByTag',\n 'workDir',\n 'r18Folder',\n 'sizeSwitch',\n 'autoStartDownload',\n 'previewResult',\n 'deduplication',\n 'fileNameLengthLimitSwitch',\n 'bmkAfterDL',\n 'userBlockList',\n 'blockTagsForSpecificUser',\n 'bgDisplay',\n 'createFolderByType',\n 'createFolderByTypeIllust',\n 'createFolderByTypeManga',\n 'createFolderByTypeUgoira',\n 'createFolderByTypeNovel',\n 'zeroPadding',\n 'showFastSearchArea',\n 'saveMetaType0',\n 'saveMetaType1',\n 'saveMetaType2',\n 'saveMetaType3',\n 'setNameRuleForEachPageType',\n 'showAdvancedSettings',\n 'showNotificationAfterDownloadComplete',\n 'boldKeywords',\n 'autoExportResult',\n 'autoExportResultCSV',\n 'autoExportResultJSON',\n 'PreviewWork',\n 'showDownloadBtnOnThumb',\n 'showOriginImage',\n 'replaceSquareThumb',\n 'notFolderWhenOneFile',\n 'noSerialNoForSingleImg',\n 'noSerialNoForMultiImg',\n 'removeAtFromUsername',\n 'showPreviewWorkTip',\n 'showLargerThumbnails',\n 'doubleWidthThumb',\n 'wheelScrollSwitchImageOnPreviewWork',\n 'swicthImageByKeyboard',\n 'doNotDownloadLastImageOfMultiImageWork',\n 'downloadNovelCoverImage',\n 'downloadNovelEmbeddedImage',\n 'previewUgoira',\n 'hiddenBrowserDownloadBar',\n 'slowCrawl',\n 'downloadOnClickBookmark',\n 'downloadOnClickLike',\n 'exportLog',\n 'exportLogNormal',\n 'exportLogError',\n 'UseDifferentNameRuleIfWorkHasTagSwitch',\n 'AIGenerated',\n 'notAIGenerated',\n 'UnknownAI',\n 'setFileDownloadOrder',\n 'highlightFollowingUsers',\n 'exportIDList',\n 'displayThumbnailListOnMultiImageWorkPage',\n 'PreviewWorkDetailInfo',\n 'removeWorksOfFollowedUsersOnSearchPage',\n ],\n text: [\n 'setWantPage',\n 'firstFewImages',\n 'multiImageWorkImageLimit',\n 'convertUgoiraThread',\n 'BMKNumMin',\n 'BMKNumMax',\n 'BMKNumAverage',\n 'setWidth',\n 'setHeight',\n 'userRatio',\n 'idRangeInput',\n 'needTag',\n 'notNeedTag',\n 'workDirFileNumber',\n 'r18FolderName',\n 'sizeMin',\n 'sizeMax',\n 'downloadThread',\n 'fileNameLengthLimit',\n 'dateFormat',\n 'tagsSeparator',\n 'blockList',\n 'bgOpacity',\n 'zeroPaddingLength',\n 'workDirNameRule',\n 'autoExportResultNumber',\n 'previewWorkWait',\n 'previewResultLimit',\n 'timedCrawlInterval',\n 'slowCrawlOnWorksNumber',\n 'exportLogExclude',\n 'PreviewDetailInfoWidth',\n ],\n radio: [\n 'ugoiraSaveAs',\n 'novelSaveAs',\n 'widthHeightLimit',\n 'userRatioLimit',\n 'setWidthAndOr',\n 'ratio',\n 'idRange',\n 'magnifierSize',\n 'magnifierPosition',\n 'dupliStrategy',\n 'imageSize',\n 'userSetLang',\n 'restrict',\n 'widthTag',\n 'needTagMode',\n 'theme',\n 'bgPositionY',\n 'switchTabBar',\n 'tagMatchMode',\n 'prevWorkSize',\n 'showOriginImageSize',\n 'exportLogTiming',\n 'downloadOrder',\n 'downloadOrderSortBy',\n ],\n textarea: ['createFolderTagList'],\n datetime: ['postDateStart', 'postDateEnd'],\n }\n\n private restoreTimer = 0\n\n private bindEvents() {\n // 页面切换时,从设置里恢复当前页面的页数/个数\n window.addEventListener(EVT.list.pageSwitchedTypeChange, () => {\n this.restoreWantPage()\n })\n\n window.addEventListener(EVT.list.settingChange, () => {\n window.clearTimeout(this.restoreTimer)\n this.restoreTimer = window.setTimeout(() => {\n this.restoreFormSettings()\n }, 0)\n })\n }\n\n // 监听所有输入选项的变化\n // 该函数可执行一次,否则事件会重复绑定\n private ListenChange() {\n for (const name of this.inputFileds.text) {\n // 对于某些特定输入框,不使用通用的事件处理函数\n if (name === 'setWantPage') {\n continue\n }\n\n this.saveTextInput(name)\n }\n\n // setWantPage 变化时,保存到 wantPageArr\n this.form.setWantPage.addEventListener('change', () => {\n const temp = Array.from(settings.wantPageArr)\n temp[pageType.type] = Number.parseInt(this.form.setWantPage.value)\n setSetting('wantPageArr', temp)\n })\n\n for (const name of this.inputFileds.textarea) {\n this.saveTextInput(name)\n }\n\n for (const name of this.inputFileds.datetime) {\n this.saveTextInput(name)\n }\n\n for (const name of this.inputFileds.radio) {\n this.saveRadio(name)\n }\n\n for (const name of this.inputFileds.checkbox) {\n this.saveCheckBox(name)\n }\n }\n\n // 读取设置,恢复到表单里\n private restoreFormSettings() {\n for (const name of this.inputFileds.text) {\n // setWantPage 需要从 wantPageArr 恢复\n if (name === 'setWantPage') {\n this.restoreWantPage()\n continue\n }\n\n this.restoreString(name)\n }\n\n for (const name of this.inputFileds.radio) {\n this.restoreString(name)\n }\n\n for (const name of this.inputFileds.textarea) {\n this.restoreString(name)\n }\n\n for (const name of this.inputFileds.checkbox) {\n this.restoreBoolean(name)\n }\n\n for (const name of this.inputFileds.datetime) {\n this.restoreDate(name)\n }\n }\n\n // ---------------------\n\n // 处理输入框: change 时保存 value\n private saveTextInput(name: SettingKeys) {\n const el = this.form[name] as HTMLInputElement\n el.addEventListener('change', () => {\n setSetting(name, el.value)\n })\n }\n\n // 处理复选框: click 时保存 checked\n private saveCheckBox(name: SettingKeys) {\n // 由于表单里存在两个 showAdvancedSettings 设置,会获取到 NodeListOf\n // 其他设置只有一个,是 HTMLInputElement\n const el = this.form[name] as\n | HTMLInputElement\n | NodeListOf\n let elArray: HTMLInputElement[] = []\n if ((el as NodeListOf).length !== undefined) {\n elArray = Array.from(el as NodeListOf)\n } else {\n elArray.push(el as HTMLInputElement)\n }\n elArray.forEach((el) => {\n el.addEventListener('click', () => {\n setSetting(name, el.checked)\n })\n })\n }\n\n // 处理单选框: click 时保存 value\n private saveRadio(name: SettingKeys) {\n const radios = this.form[name]\n for (const radio of radios) {\n radio.addEventListener('click', () => {\n setSetting(name, radio.value)\n })\n }\n }\n\n // 恢复值为 Boolean 的设置项\n private restoreBoolean(name: SettingKeys) {\n if (settings[name] !== undefined) {\n // 由于表单里存在两个 showAdvancedSettings 设置,会获取到 NodeListOf\n // 其他设置只有一个,是 HTMLInputElement\n const el = this.form[name] as\n | HTMLInputElement\n | NodeListOf\n let elArray: HTMLInputElement[] = []\n if ((el as NodeListOf).length !== undefined) {\n elArray = Array.from(el as NodeListOf)\n } else {\n elArray.push(el as HTMLInputElement)\n }\n elArray.forEach((el) => {\n el.checked = settings[name] as boolean\n })\n }\n }\n\n // 恢复值为 string 的设置项\n private restoreString(name: SettingKeys) {\n if (settings[name] !== undefined) {\n this.form[name].value = settings[name].toString()\n }\n }\n\n // 恢复日期、时间设置项\n private restoreDate(name: SettingKeys) {\n if (settings[name] !== undefined) {\n // 把时间戳转换成 input 使用的字符串\n const date = settings[name] as number\n this.form[name].value = DateFormat.format(date, 'YYYY-MM-DDThh:mm')\n }\n }\n\n // 从设置里恢复当前页面的页数/个数\n private restoreWantPage() {\n const want = settings.wantPageArr[pageType.type]\n if (want !== undefined) {\n this.form.setWantPage.value = want.toString()\n }\n }\n}\n\nexport { FormSettings }\n","import { settings, setSetting, SettingKeys } from './Settings'\nimport { secretSignal } from '../utils/SecretSignal'\nimport { log } from '../Log'\nimport { toast } from '../Toast'\n\ntype Cfg = {\n [key in SettingKeys]?: string[]\n}\n\n// 管理不可见的设置。通过预设的按键,切换其开关状态\nclass InvisibleSettings {\n constructor() {\n this.register()\n }\n\n // ppdss: Powerful Pixiv Downloader Secret Settings\n private readonly cfg: Cfg = {\n createFolderBySl: ['ppdss1', 'switchsl', 'kaiguansl'],\n downloadUgoiraFirst: ['ppdss2', 'dlugoirafirst', 'qw111'],\n }\n\n private register() {\n for (const [name, codes] of Object.entries(this.cfg)) {\n for (const code of codes!) {\n secretSignal.register(code, () => {\n this.onChange(name as SettingKeys)\n })\n }\n }\n }\n\n private onChange(name: SettingKeys) {\n const nowValue = settings[name]\n if (typeof nowValue !== 'boolean') {\n return\n }\n\n // 如果查找到了符合的记录,则反转这个设置的值\n const newValue = !settings[name]\n setSetting(name, newValue)\n\n // 显示提示信息\n if (settings[name]) {\n const msg = name + ' On'\n log.success(msg)\n toast.success(msg)\n } else {\n const msg = name + ' Off'\n log.warning(msg)\n toast.warning(msg)\n }\n }\n}\n\nnew InvisibleSettings()\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { msgBox } from '../MsgBox'\nimport { pageType } from '../PageType'\nimport { Utils } from '../utils/Utils'\nimport { settings, setSetting } from './Settings'\n\n// 管理命名规则\n// 在实际使用中,作为 settings.userSetName 的代理\n// 其他类必须使用 nameRuleManager.rule 存取器来存取命名规则\nclass NameRuleManager {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n const evts = [\n EVT.list.settingInitialized,\n EVT.list.resetSettingsEnd,\n EVT.list.pageSwitchedTypeChange,\n ]\n evts.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.setInputValue()\n })\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n // 当用户开启这个开关时,设置当前页面类型的命名规则\n if (data.name === 'setNameRuleForEachPageType' && data.value) {\n if (\n settings.nameRuleForEachPageType[pageType.type] !==\n settings.userSetName\n ) {\n this.setInputValue()\n }\n }\n })\n }\n\n private saveCurrentPageRule(rule: string) {\n settings.nameRuleForEachPageType[pageType.type] = rule\n setSetting('nameRuleForEachPageType', settings.nameRuleForEachPageType)\n }\n\n // 所有页面通用的命名规则\n private readonly generalRule = '{page_title}/{id}'\n\n public get rule() {\n if (settings.setNameRuleForEachPageType) {\n let rule = settings.nameRuleForEachPageType[pageType.type]\n if (rule === undefined) {\n rule = this.generalRule\n this.saveCurrentPageRule(rule)\n }\n return rule\n } else {\n return settings.userSetName\n }\n }\n\n public set rule(str: string) {\n // 检查传递的命名规则的合法性\n // 为了防止文件名重复,命名规则里一定要包含 {id} 或者 {id_num}{p_num}\n const check =\n str.includes('{id}') ||\n (str.includes('{id_num}') && str.includes('{p_num}'))\n if (!check) {\n window.setTimeout(() => {\n msgBox.error(lang.transl('_命名规则一定要包含id'))\n }, 300)\n } else {\n // 替换特殊字符\n str = this.handleUserSetName(str) || this.generalRule\n setSetting('userSetName', str)\n\n if (settings.setNameRuleForEachPageType) {\n this.saveCurrentPageRule(str)\n }\n\n this.setInputValue()\n }\n }\n\n // 命名规则输入框的集合\n private inputList: HTMLInputElement[] = []\n\n // 注册命名规则输入框\n public registerInput(input: HTMLInputElement) {\n this.inputList.push(input)\n this.setInputValue()\n\n // 保存事件被触发之前的值\n let lastValue = input.value\n\n // 给输入框绑定事件\n const evList = ['change', 'focus']\n // change 事件只对用户手动输入有效\n // 当用户从下拉框添加一个命名标记时,不会触发 change 事件,需要监听 focus 事件\n evList.forEach((evName) => {\n input.addEventListener(evName, () => {\n // 当事件触发时,比较输入框的值是否与事件触发之前发生了变化\n // 如果值没有变化,就什么都不做\n // 对于 change 事件来说,值必然发生了变化,但是 focus 就不一定了\n // 试想:用户修改命名规则为非法的规则,例如输入 111,触发 change 事件之后下载器会提示命名规则非法\n // 然后用户点击输入框(focus 事件)想要修改规则,此时值没有变化,就不应该执行后续代码。如果依然执行后续代码,那么每当用户点击输入框,下载器就会马上显示提示,这导致用户根本没办法在输入框里修改命名规则\n if (input.value === lastValue) {\n return\n }\n lastValue = input.value\n if (settings.nameRuleForEachPageType[pageType.type] !== input.value) {\n this.rule = input.value\n }\n })\n })\n }\n\n // 设置输入框的值为当前命名规则\n private setInputValue() {\n // 如果 settings.nameRuleForEachPageType 里面没有当前页面的 key,值就是 undefined,需要设置为默认值\n const rule = this.rule\n this.inputList.forEach((input) => {\n input.value = rule\n })\n\n if (rule !== settings.userSetName) {\n setSetting('userSetName', rule)\n }\n }\n\n // 处理用命名规则的非法字符和非法规则\n // 这里不必处理得非常详尽,因为在生成文件名时,还会对结果进行处理\n // 测试用例:在作品页面内设置下面的命名规则,下载器会自动进行更正\n // /{page_tag}/|/{user}////) {\n this.allOption = allOption\n\n // 获取“页数/个数”设置的元素\n const wantPageOption = this.getOption(1)!\n this.wantPageEls = {\n wrap: wantPageOption.querySelector(\n '.setWantPageWrap'\n )! as HTMLSpanElement,\n text: wantPageOption.querySelector(\n '.setWantPageTip1'\n )! as HTMLSpanElement,\n rangTip: wantPageOption.querySelector(\n '.setWantPageTip2'\n )! as HTMLSpanElement,\n input: wantPageOption.querySelector('.setWantPage')! as HTMLInputElement,\n }\n\n this.handleShowAdvancedSettings()\n this.bindEvents()\n }\n\n private allOption!: NodeListOf\n\n private wantPageEls!: WantPageEls\n\n // 保持显示的选项的 id\n private readonly whiteList: number[] = [\n 1, 2, 4, 13, 17, 32, 44, 50, 51, 57, 64,\n ]\n\n // 某些页面类型需要隐藏某些选项。当调用 hideOption 方法时,把选项 id 保存起来\n // 优先级高于 whiteList\n private hiddenList: number[] = []\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'showAdvancedSettings') {\n this.handleShowAdvancedSettings()\n }\n })\n\n window.addEventListener(EVT.list.settingInitialized, () => {\n this.alwaysHideSomeOption()\n })\n\n const list = [\n EVT.list.pageSwitchedTypeNotChange,\n EVT.list.pageSwitchedTypeChange,\n ]\n list.forEach((ev) => {\n window.addEventListener(ev, () => {\n this.hiddenList = []\n window.setTimeout(() => {\n this.handleShowAdvancedSettings()\n this.alwaysHideSomeOption()\n })\n })\n })\n }\n\n // 总是隐藏某些设置\n private alwaysHideSomeOption() {\n this.hideOption([79, 80])\n\n // 在移动端某些设置不会生效,所以隐藏它们\n // 主要是和作品缩略图相关的一些设置\n if (Config.mobile) {\n this.hideOption([18, 68, 55, 71, 62, 40])\n }\n }\n\n private handleShowAdvancedSettings() {\n for (const option of this.allOption) {\n if (option.dataset.no === undefined) {\n continue\n }\n\n const no = Number.parseInt(option.dataset.no)\n\n // 如果需要隐藏高级设置\n if (!settings.showAdvancedSettings) {\n // 如果在白名单中,并且当前页面不需要隐藏它,那么它就是显示的\n if (this.whiteList.includes(no) && !this.hiddenList.includes(no)) {\n this.showOption([no])\n }\n\n // 如果没有在白名单中,或者当前页面需要隐藏它,就隐藏它\n if (!this.whiteList.includes(no) || this.hiddenList.includes(no)) {\n option.style.display = 'none'\n }\n } else {\n // 如果需要显示高级设置,那么只隐藏当前页面需要隐藏的选项\n if (this.hiddenList.includes(no)) {\n option.style.display = 'none'\n } else {\n this.showOption([no])\n }\n }\n }\n }\n\n // 使用编号获取指定选项的元素\n private getOption(no: number) {\n for (const option of this.allOption) {\n if (option.dataset.no === no.toString()) {\n return option\n }\n }\n throw `Not found this option: ${no}`\n }\n\n // 显示或隐藏指定的选项\n private setOptionDisplay(no: number[], display: string) {\n for (const number of no) {\n this.getOption(number).style.display = display\n }\n }\n\n // 显示所有选项\n // 在切换不同页面时使用\n public showAllOption() {\n for (const el of this.allOption) {\n el.style.display = 'block'\n }\n }\n\n // 隐藏指定的选项。参数是数组,传递设置项的编号。\n // 注意:由于这个方法会修改 hiddenList,所以它是有副作用的\n // 这个方法只应该在其他类里面使用,在这个类里不要直接调用它\n public hideOption(no: number[]) {\n this.hiddenList = no\n this.setOptionDisplay(no, 'none')\n }\n\n // 显示指定的选项。因为页面无刷新加载,所以一些选项被隐藏后,可能需要再次显示\n public showOption(no: number[]) {\n this.setOptionDisplay(no, 'block')\n }\n\n // 设置 “抓取多少作品/页面” 选项的提示和预设值\n public setWantPageTip(arg: WantPageArg) {\n lang.updateText(this.wantPageEls.text, arg.text)\n\n this.wantPageEls.wrap.dataset.xztip = arg.tip\n this.wantPageEls.wrap.dataset.tip = lang.transl(arg.tip as any)\n\n // rangTip 可能需要翻译\n if (arg.rangTip.startsWith('_')) {\n lang.updateText(this.wantPageEls.rangTip, arg.rangTip)\n } else {\n // 也可能直接传递了字符串,不需要翻译\n lang.updateText(this.wantPageEls.rangTip, '')\n this.wantPageEls.rangTip.textContent = arg.rangTip\n }\n }\n}\n\nconst options = new Options()\nexport { options }\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { theme } from '../Theme'\nimport { settings, setSetting } from './Settings'\nimport { toast } from '../Toast'\nimport { nameRuleManager } from './NameRuleManager'\n\n// 保存和加载命名规则列表\nclass SaveNamingRule {\n constructor(ruleInput: HTMLInputElement) {\n this.ruleInput = ruleInput\n\n Tools.clearSlot('saveNamingRule')\n const wrap = Tools.useSlot('saveNamingRule', this.html) as HTMLElement\n theme.register(wrap)\n lang.register(wrap)\n\n this.saveBtn = wrap.querySelector('button.nameSave')! as HTMLButtonElement\n this.loadBtn = wrap.querySelector('button.nameLoad')! as HTMLButtonElement\n this.listWrap = wrap.querySelector('ul.namingRuleList')! as HTMLUListElement\n\n this.createList()\n\n this.bindEvents()\n }\n\n private readonly limit = 20 // 最大保存数量\n private saveBtn: HTMLButtonElement\n private loadBtn: HTMLButtonElement\n private listWrap: HTMLElement\n private ruleInput: HTMLInputElement\n private _show = false // 是否显示列表\n\n private set show(boolean: boolean) {\n this._show = boolean\n boolean ? this.showListWrap() : this.hideListWrap()\n }\n\n private get show() {\n return this._show\n }\n\n private bindEvents() {\n this.saveBtn.addEventListener('click', () => {\n this.add(this.ruleInput.value)\n })\n\n this.loadBtn.addEventListener('click', () => {\n this.show = !this.show\n })\n\n this.listWrap.addEventListener('mouseleave', () => {\n this.show = false\n })\n\n // 设置发生变化时重新创建列表\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'namingRuleList') {\n this.createList()\n }\n })\n }\n\n private add(rule: string) {\n if (settings.namingRuleList.length === this.limit) {\n this.delete(0)\n }\n // 如果这个规则已存在,不会重复添加它\n if (!settings.namingRuleList.includes(rule)) {\n const list = Array.from(settings.namingRuleList)\n list.push(rule)\n setSetting('namingRuleList', list)\n }\n\n toast.success(lang.transl('_已保存命名规则'))\n }\n\n private delete(index: number) {\n const list = Array.from(settings.namingRuleList)\n list.splice(index, 1)\n setSetting('namingRuleList', list)\n }\n\n private select(rule: string) {\n this.ruleInput.value = rule\n nameRuleManager.rule = rule\n }\n\n private createList() {\n const htmlArr = []\n for (let i = 0; i < settings.namingRuleList.length; i++) {\n const html = `
    • \n ${settings.namingRuleList[i]}\n \n
    • `\n htmlArr.push(html)\n }\n if (settings.namingRuleList.length === 0) {\n htmlArr.push(`
    •     no data
    • `)\n }\n this.listWrap.innerHTML = htmlArr.join('')\n\n const ruleEls = this.listWrap.querySelectorAll('.rule')\n for (const el of ruleEls) {\n el.addEventListener('click', () => {\n this.select(el.textContent!)\n this.show = false\n })\n }\n\n const deleteEls = this.listWrap.querySelectorAll(\n '.delete'\n ) as NodeListOf\n for (const el of deleteEls) {\n el.addEventListener('click', () => {\n const index = parseInt(el.dataset.index!)\n this.delete(index)\n })\n }\n }\n\n private showListWrap() {\n this.listWrap.style.display = 'block'\n }\n\n private hideListWrap() {\n this.listWrap.style.display = 'none'\n }\n\n private readonly html = `\n
      \n \n \n
        \n
        `\n}\n\nexport { SaveNamingRule }\n","// settings 保存了下载器的所有设置项\n\n// 获取设置项的值:\n// settings[name]\n\n// 修改设置项的值:\n// setSetting(name, value)\n\n// 本模块会触发 3 个事件:\n\n// EVT.list.settingChange\n// 当任意一个设置项被赋值时触发(不会区分值是否发生了变化)。这是最常用的事件。\n// 事件的参数里会传递这个设置项的名称和值,可以通过 ev.detail.data 获取,格式如:\n// {name: string, value: any}\n// 如果某个模块要监听特定的设置项,应该使用参数的 name 来判断触发事件的设置项是否是自己需要的设置项\n// 如果不依赖于特定设置项,则应该考虑使用节流或者防抖来限制事件的回调函数的执行频率,防止造成性能问题\n\n// EVT.list.settingInitialized\n// 当设置初始化完毕(以及恢复本地储存的设置)之后触发。这个事件在生命周期里只会触发一次。\n// 过程中,每个设置项都会触发一次 settingChange 事件\n\n// EVT.list.resetSettingsEnd\n// 重置设置之后触发\n// 导入设置之后触发\n// 过程中,每个设置项都会触发一次 settingChange 事件\n\n// 如果打开了多个标签页,每个页面的 settings 数据是相互独立的,在一个页面里修改设置不会影响另一个页面里的设置。\n// 但是持久化保存的数据只有一份:最后一次的设置变化是在哪个页面发生的,就保存哪个页面的 settings 数据。\n// 所以当页面刷新时,或者打开新的页面时,会加载设置最后一次发生变化的页面里的 settings 数据\n\nimport { EVT } from '../EVT'\nimport { Utils } from '../utils/Utils'\nimport { convertOldSettings } from './ConvertOldSettings'\nimport { msgBox } from '../MsgBox'\nimport { Config } from '../Config'\nimport { secretSignal } from '../utils/SecretSignal'\nimport { toast } from '../Toast'\nimport { lang } from '../Lang'\n\nexport interface BlockTagsForSpecificUserItem {\n uid: number\n user?: string\n tags: string[]\n}\n\ntype SettingValue =\n | string\n | number\n | boolean\n | string[]\n | number[]\n | object[]\n | { [key: number]: string }\n | Map\n\nexport interface SettingChangeData {\n name: SettingKeys\n value: SettingValue\n}\n\ninterface XzSetting {\n setWantPage: number\n wantPageArr: number[]\n firstFewImagesSwitch: boolean\n firstFewImages: number\n multiImageWorkImageLimitSwitch: boolean\n multiImageWorkImageLimit: number\n downType0: boolean\n downType1: boolean\n downType2: boolean\n downType3: boolean\n downSingleImg: boolean\n downMultiImg: boolean\n downColorImg: boolean\n downBlackWhiteImg: boolean\n downNotBookmarked: boolean\n downBookmarked: boolean\n ugoiraSaveAs: 'webm' | 'gif' | 'zip' | 'png'\n convertUgoiraThread: number\n needTagSwitch: boolean\n notNeedTagSwitch: boolean\n needTag: string[]\n notNeedTag: string[]\n autoStartDownload: boolean\n downloadThread: number\n userSetName: string\n namingRuleList: string[]\n tagNameToFileName: boolean\n workDir: boolean\n workDirFileNumber: number\n workDirNameRule: string\n showOptions: boolean\n postDate: boolean\n postDateStart: number\n postDateEnd: number\n previewResult: boolean\n previewResultLimit: number\n BMKNumSwitch: boolean\n BMKNumMin: number\n BMKNumMax: number\n BMKNumAverageSwitch: boolean\n BMKNumAverage: number\n setWHSwitch: boolean\n widthHeightLimit: '>=' | '=' | '<='\n setWidthAndOr: '&' | '|'\n setWidth: number\n setHeight: number\n ratioSwitch: boolean\n ratio: 'square' | 'horizontal' | 'vertical' | 'userSet'\n userSetChecked: boolean\n userRatio: number\n userRatioLimit: '>=' | '=' | '<='\n idRangeSwitch: boolean\n idRangeInput: number\n idRange: '>' | '<'\n noSerialNo: boolean\n filterBlackWhite: boolean\n sizeSwitch: boolean\n sizeMin: number\n sizeMax: number\n novelSaveAs: 'txt' | 'epub'\n saveNovelMeta: boolean\n deduplication: boolean\n dupliStrategy: 'strict' | 'loose'\n fileNameLengthLimitSwitch: boolean\n tagsSeparator: ',' | '#' | '^' | '&' | '_'\n fileNameLengthLimit: number\n imageSize: 'original' | 'regular' | 'small' | 'thumb'\n dateFormat: string\n userSetLang: 'zh-cn' | 'zh-tw' | 'ja' | 'en' | 'ko' | 'ru' | 'auto'\n bmkAfterDL: boolean\n\n // 选项在表单中的值\n widthTag: 'yes' | 'no'\n // 根据表单中的值转换为实际使用的值\n widthTagBoolean: boolean\n\n // 选项在表单中的值\n restrict: 'yes' | 'no'\n // 根据表单中的值转换为实际使用的值\n restrictBoolean: boolean\n\n userBlockList: boolean\n blockList: string[]\n needTagMode: 'all' | 'one'\n theme: 'auto' | 'white' | 'dark'\n r18Folder: boolean\n r18FolderName: string\n blockTagsForSpecificUser: boolean\n blockTagsForSpecificUserShowList: boolean\n blockTagsForSpecificUserList: BlockTagsForSpecificUserItem[]\n magnifier: boolean\n magnifierSize: 'original' | 'regular'\n magnifierPosition: 'left' | 'right'\n bgDisplay: boolean\n bgOpacity: number\n bgPositionY: 'center' | 'top'\n createFolderByType: boolean\n createFolderByTypeIllust: boolean\n createFolderByTypeManga: boolean\n createFolderByTypeUgoira: boolean\n createFolderByTypeNovel: boolean\n createFolderByTag: boolean\n createFolderTagList: string[]\n createFolderBySl: boolean\n downloadUgoiraFirst: boolean\n downAllAges: boolean\n downR18: boolean\n downR18G: boolean\n switchTabBar: 'over' | 'click'\n zeroPadding: boolean\n zeroPaddingLength: number\n tagMatchMode: 'partial' | 'whole'\n showFastSearchArea: boolean\n saveMetaType0: boolean\n saveMetaType1: boolean\n saveMetaType2: boolean\n saveMetaType3: boolean\n /** 为每个页面类型设置不同的命名规则的开关 */\n setNameRuleForEachPageType: boolean\n /** 每个页面类型所使用的命名规则 */\n // 这里应该使用 Map 结构,但是 JSON.stringify 不能处理 Map 类型,所以简化成了 Object\n nameRuleForEachPageType: {\n [key: number]: string\n }\n showAdvancedSettings: boolean\n showNotificationAfterDownloadComplete: boolean\n boldKeywords: boolean\n autoExportResult: boolean\n autoExportResultCSV: boolean\n autoExportResultJSON: boolean\n autoExportResultNumber: number\n PreviewWork: boolean\n showDownloadBtnOnThumb: boolean\n prevWorkSize: 'original' | 'regular'\n previewWorkWait: number\n showPreviewWorkTip: boolean\n showOriginImage: boolean\n showOriginImageSize: 'original' | 'regular'\n tipHowToUse: boolean\n whatIsNewFlag: string\n replaceSquareThumb: boolean\n notFolderWhenOneFile: boolean\n noSerialNoForSingleImg: boolean\n noSerialNoForMultiImg: boolean\n setUserNameShow: boolean\n setUserNameList: {\n [uid: string]: string\n }\n removeAtFromUsername: boolean\n showLargerThumbnails: boolean\n doubleWidthThumb: boolean\n wheelScrollSwitchImageOnPreviewWork: boolean\n swicthImageByKeyboard: boolean\n /**不抓取多图作品的最后一张图片 */\n doNotDownloadLastImageOfMultiImageWork: boolean\n downloadNovelCoverImage: boolean\n downloadNovelEmbeddedImage: boolean\n previewUgoira: boolean\n hiddenBrowserDownloadBar: boolean\n tipPreviewWork: boolean\n tipHotkeysViewLargeImage: boolean\n /**定时抓取的间隔时间,注意单位是分钟而不是毫秒 */\n timedCrawlInterval: number\n slowCrawl: boolean\n slowCrawlOnWorksNumber: number\n downloadOnClickBookmark: boolean\n downloadOnClickLike: boolean\n exportLog: boolean\n exportLogTiming: 'crawlComplete' | 'downloadComplete'\n exportLogNormal: boolean\n exportLogError: boolean\n exportLogExclude: string[]\n DoNotDownloadLastFewImagesShow: boolean\n DoNotDownloadLastFewImagesList: {\n uid: number\n user: string\n value: number\n }[]\n UseDifferentNameRuleIfWorkHasTagSwitch: boolean\n UseDifferentNameRuleIfWorkHasTagShow: boolean\n UseDifferentNameRuleIfWorkHasTagList: {\n id: number\n tags: string[]\n rule: string\n }[]\n AIGenerated: boolean\n notAIGenerated: boolean\n UnknownAI: boolean\n setFileDownloadOrder: boolean\n downloadOrder: 'desc' | 'asc'\n downloadOrderSortBy: 'ID' | 'bookmarkCount' | 'bookmarkID'\n tipAltXToShowControlPanel: boolean\n tipAltSToSelectWork: boolean\n tipAltQToQuickDownload: boolean\n tipBookmarkButton: boolean\n highlightFollowingUsers: boolean\n tipCSV: boolean\n exportIDList: boolean\n tipExportFollowingUserList: boolean\n displayThumbnailListOnMultiImageWorkPage: boolean\n tipBookmarkManage: boolean\n requestSponsorshipTime: number\n PreviewWorkDetailInfo: boolean\n PreviewDetailInfoWidth: number\n removeWorksOfFollowedUsersOnSearchPage: boolean\n tipExportAndImportBookmark: boolean\n}\n// chrome storage 里不能使用 Map,因为保存时,Map 会被转换为 Object {}\n\ntype SettingKeys = keyof XzSetting\n\nclass Settings {\n constructor() {\n this.restore()\n this.bindEvents()\n }\n\n // 默认设置\n private readonly defaultSettings: XzSetting = {\n setWantPage: -1,\n wantPageArr: [\n -1, -1, -1, -1, -1, 1000, -1, 500, -1, 1000, 100, -1, 100, -1, -1, 1000,\n 100, 100, 100, 100, -1,\n ],\n firstFewImagesSwitch: false,\n firstFewImages: 1,\n multiImageWorkImageLimitSwitch: false,\n multiImageWorkImageLimit: 10,\n downType0: true,\n downType1: true,\n downType2: true,\n downType3: true,\n downAllAges: true,\n downR18: true,\n downR18G: true,\n downSingleImg: true,\n downMultiImg: true,\n downColorImg: true,\n downBlackWhiteImg: true,\n downNotBookmarked: true,\n downBookmarked: true,\n ugoiraSaveAs: 'webm',\n convertUgoiraThread: 1,\n needTag: [],\n notNeedTag: [],\n autoStartDownload: true,\n downloadThread: 5,\n userSetName: '{page_title}/{id}',\n namingRuleList: [],\n tagNameToFileName: false,\n workDir: false,\n workDirFileNumber: 1,\n workDirNameRule: '{id_num}',\n showOptions: true,\n postDate: false,\n postDateStart: 946684800000,\n postDateEnd: 4102444800000,\n previewResult: true,\n previewResultLimit: 3000,\n BMKNumSwitch: false,\n BMKNumMin: 0,\n BMKNumMax: Config.BookmarkCountLimit,\n BMKNumAverageSwitch: false,\n BMKNumAverage: 600,\n setWHSwitch: false,\n widthHeightLimit: '>=',\n setWidthAndOr: '&',\n setWidth: 0,\n setHeight: 0,\n ratioSwitch: false,\n ratio: 'horizontal',\n userSetChecked: false,\n userRatio: 1.4,\n userRatioLimit: '>=',\n idRangeSwitch: false,\n idRangeInput: 0,\n idRange: '>',\n needTagSwitch: false,\n notNeedTagSwitch: false,\n noSerialNo: false,\n filterBlackWhite: false,\n sizeSwitch: false,\n sizeMin: 0,\n sizeMax: 100,\n novelSaveAs: 'txt',\n saveNovelMeta: false,\n deduplication: false,\n dupliStrategy: 'loose',\n fileNameLengthLimitSwitch: false,\n tagsSeparator: ',',\n fileNameLengthLimit: 200,\n imageSize: 'original',\n dateFormat: 'YYYY-MM-DD',\n userSetLang: 'auto',\n bmkAfterDL: false,\n widthTag: 'yes',\n restrict: 'no',\n widthTagBoolean: true,\n restrictBoolean: false,\n userBlockList: false,\n blockList: [],\n theme: 'auto',\n needTagMode: 'all',\n r18Folder: false,\n r18FolderName: '[R-18&R-18G]',\n blockTagsForSpecificUser: false,\n blockTagsForSpecificUserShowList: true,\n blockTagsForSpecificUserList: [],\n magnifier: true,\n magnifierSize: 'original',\n magnifierPosition: 'right',\n bgDisplay: false,\n bgOpacity: 60,\n bgPositionY: 'center',\n createFolderByType: false,\n createFolderByTypeIllust: false,\n createFolderByTypeManga: false,\n createFolderByTypeUgoira: false,\n createFolderByTypeNovel: false,\n createFolderByTag: false,\n createFolderTagList: [],\n createFolderBySl: false,\n downloadUgoiraFirst: false,\n switchTabBar: 'over',\n zeroPadding: false,\n zeroPaddingLength: 3,\n tagMatchMode: 'whole',\n showFastSearchArea: true,\n saveMetaType0: false,\n saveMetaType1: false,\n saveMetaType2: false,\n saveMetaType3: false,\n setNameRuleForEachPageType: false,\n nameRuleForEachPageType: {\n '-1': '{page_title}/{id}',\n '0': '{page_title}/{id}',\n '1': '{page_title}/{id}',\n '2': '{user}/{id}',\n '3': '{page_title}/{id}',\n '4': '{page_title}/{id}',\n '5': '{page_tag}/{id}',\n '6': '{page_title}/{id}',\n '7': '{page_title}/{rank}-{id}',\n '8': '{page_title}/{id}',\n '9': '{page_title}/{id}',\n '10': '{page_title}/{id}',\n '11': '{page_title}/{id}',\n '12': '{page_title}/{id}',\n '13': '{page_title}/{id}-{title}',\n '14': '{user}/{series_title}/{series_order} {title} {id}',\n '15': '{page_tag}/{id}-{title}',\n '16': '{page_title}/{rank}-{id}-{title}',\n '17': '{page_title}/{id}-{title}',\n '18': '{page_title}/{id}-{title}',\n '19': '{user}/{series_title}/{series_order} {title} {id}',\n '20': '{page_title}/{id}',\n '21': '{page_title}/{id}-{title}',\n },\n showAdvancedSettings: false,\n showNotificationAfterDownloadComplete: false,\n boldKeywords: true,\n autoExportResult: false,\n autoExportResultCSV: true,\n autoExportResultJSON: false,\n autoExportResultNumber: 1,\n PreviewWork: true,\n showDownloadBtnOnThumb: true,\n prevWorkSize: 'regular',\n previewWorkWait: 400,\n showPreviewWorkTip: true,\n showOriginImage: true,\n showOriginImageSize: 'original',\n tipHowToUse: true,\n whatIsNewFlag: 'xuejian&saber',\n replaceSquareThumb: true,\n notFolderWhenOneFile: false,\n noSerialNoForSingleImg: true,\n noSerialNoForMultiImg: true,\n setUserNameShow: true,\n setUserNameList: {},\n removeAtFromUsername: false,\n showLargerThumbnails: false,\n doubleWidthThumb: true,\n wheelScrollSwitchImageOnPreviewWork: true,\n swicthImageByKeyboard: true,\n doNotDownloadLastImageOfMultiImageWork: false,\n downloadNovelCoverImage: true,\n downloadNovelEmbeddedImage: true,\n previewUgoira: true,\n hiddenBrowserDownloadBar: false,\n tipPreviewWork: true,\n tipHotkeysViewLargeImage: true,\n timedCrawlInterval: 120,\n slowCrawl: true,\n slowCrawlOnWorksNumber: 100,\n downloadOnClickBookmark: false,\n downloadOnClickLike: false,\n exportLog: false,\n exportLogTiming: 'downloadComplete',\n exportLogNormal: false,\n exportLogError: true,\n exportLogExclude: ['404', '429', '500'],\n DoNotDownloadLastFewImagesShow: false,\n DoNotDownloadLastFewImagesList: [],\n UseDifferentNameRuleIfWorkHasTagSwitch: false,\n UseDifferentNameRuleIfWorkHasTagShow: true,\n UseDifferentNameRuleIfWorkHasTagList: [],\n AIGenerated: true,\n notAIGenerated: true,\n UnknownAI: true,\n setFileDownloadOrder: false,\n downloadOrder: 'desc',\n downloadOrderSortBy: 'ID',\n tipAltXToShowControlPanel: true,\n tipAltSToSelectWork: true,\n tipAltQToQuickDownload: true,\n tipBookmarkButton: true,\n highlightFollowingUsers: true,\n tipCSV: true,\n exportIDList: false,\n tipExportFollowingUserList: true,\n displayThumbnailListOnMultiImageWorkPage: true,\n tipBookmarkManage: true,\n requestSponsorshipTime: 0,\n PreviewWorkDetailInfo: false,\n PreviewDetailInfoWidth: 400,\n removeWorksOfFollowedUsersOnSearchPage: false,\n tipExportAndImportBookmark: true,\n }\n\n private allSettingKeys = Object.keys(this.defaultSettings)\n\n // 值为浮点数的选项\n private floatNumberKey = ['userRatio', 'sizeMin', 'sizeMax']\n\n // 值为整数的选项不必单独列出\n\n // 值为数字数组的选项\n private numberArrayKeys = ['wantPageArr']\n\n // 值为字符串数组的选项\n private stringArrayKeys = [\n 'namingRuleList',\n 'blockList',\n 'needTag',\n 'notNeedTag',\n 'createFolderTagList',\n 'exportLogExclude',\n ]\n\n // 以默认设置作为初始设置\n public settings: XzSetting = Utils.deepCopy(this.defaultSettings)\n\n private bindEvents() {\n // 当设置发生变化时进行本地存储\n window.addEventListener(EVT.list.settingChange, () => {\n this.store()\n })\n\n window.addEventListener(EVT.list.resetSettings, () => {\n this.reset()\n })\n\n window.addEventListener(EVT.list.exportSettings, () => {\n this.exportSettings()\n })\n\n window.addEventListener(EVT.list.importSettings, () => {\n this.importSettings()\n })\n\n window.addEventListener(EVT.list.resetHelpTip, () => {\n this.resetHelpTip()\n })\n\n // 切换只选择动图/选择全部作品类型\n const codes = ['onlyugoira', 'qw222']\n for (const code of codes) {\n secretSignal.register(code, () => {\n // 如果只有动图被选中,则选择全部作品类型\n // 反之,只选择动图\n if (\n this.settings.downType2 &&\n !this.settings.downType0 &&\n !this.settings.downType1 &&\n !this.settings.downType3\n ) {\n this.settings.downType0 = true\n this.settings.downType1 = true\n this.settings.downType3 = true\n // 多次修改只触发一次改变事件,提高效率\n this.setSetting('downType0', true)\n toast.warning('onlyUgoira off')\n } else {\n this.settings.downType0 = false\n this.settings.downType1 = false\n this.settings.downType2 = true\n this.settings.downType3 = false\n this.setSetting('downType2', true)\n toast.success('onlyUgoira on')\n }\n })\n }\n }\n\n // 读取恢复设置\n private restore() {\n let restoreData = this.defaultSettings\n // 首先从 chrome.storage 获取配置(从 11.5.0 版本开始)\n chrome.storage.local.get(Config.settingStoreName, (result) => {\n if (result[Config.settingStoreName]) {\n restoreData = result[Config.settingStoreName]\n } else {\n // 如无数据则尝试从 localStorage 获取配置,因为旧版本的配置储存在 localStorage 中\n const savedSettings = localStorage.getItem(Config.settingStoreName)\n if (savedSettings) {\n restoreData = JSON.parse(savedSettings)\n }\n }\n this.assignSettings(restoreData)\n EVT.fire('settingInitialized')\n })\n }\n\n private store = Utils.debounce(() => {\n // chrome.storage.local 的储存上限是 5 MiB(5242880 Byte)\n chrome.storage.local.set({\n [Config.settingStoreName]: this.settings,\n })\n }, 50)\n\n // 接收整个设置项,通过循环将其更新到 settings 上\n // 循环设置而不是整个替换的原因:\n // 1. 进行类型转换,如某些设置项是 number ,但是数据来源里是 string,setSetting 可以把它们转换到正确的类型\n // 2. 某些选项在旧版本里没有,所以不能用旧的设置整个覆盖\n private assignSettings(data: XzSetting) {\n const origin = Utils.deepCopy(data)\n for (const [key, value] of Object.entries(origin)) {\n this.setSetting(key as SettingKeys, value)\n }\n }\n\n private exportSettings() {\n const blob = Utils.json2Blob(this.settings)\n const url = URL.createObjectURL(blob)\n Utils.downloadFile(url, Config.appName + ` Settings.json`)\n URL.revokeObjectURL(url)\n toast.success(lang.transl('_导出成功'))\n }\n\n private async importSettings() {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as XzSetting\n if (!loadedJSON) {\n return\n }\n // 检查是否存在设置里的属性\n if (loadedJSON.downloadThread === undefined) {\n return msgBox.error(lang.transl('_格式错误'))\n }\n // 开始恢复导入的设置\n this.reset(loadedJSON)\n toast.success(lang.transl('_导入成功'))\n }\n\n // 有些帮助信息是只显示一次的,这里可以让它们再次显示\n // 主要是通过 showHelp.show 显示的帮助\n private resetHelpTip() {\n this.setSetting('tipHowToUse', true)\n this.setSetting('tipAltXToShowControlPanel', true)\n this.setSetting('tipPreviewWork', true)\n this.setSetting('tipHotkeysViewLargeImage', true)\n this.setSetting('tipAltSToSelectWork', true)\n this.setSetting('tipAltQToQuickDownload', true)\n this.setSetting('tipBookmarkButton', true)\n this.setSetting('tipCSV', true)\n this.setSetting('tipExportFollowingUserList', true)\n this.setSetting('tipBookmarkManage', true)\n this.setSetting('tipExportAndImportBookmark', true)\n\n toast.success('✓ ' + lang.transl('_重新显示帮助'))\n }\n\n // 重置设置 或者 导入设置\n // 可选参数:传递一份设置数据,用于从配置文件导入,恢复设置\n private reset(data?: XzSetting) {\n this.assignSettings(data ? data : this.defaultSettings)\n EVT.fire('resetSettingsEnd')\n }\n\n private tipError(key: string) {\n msgBox.error(`${key}: Invalid value`)\n }\n\n // 更改设置项\n // 其他模块应该通过这个方法更改设置\n // 这里面有一些类型转换的代码,主要目的:\n // 1. 兼容旧版本的设置。读取旧版本的设置时,将其转换成新版本的设置。例如某个设置在旧版本里是 string 类型,值为 'a,b,c'。新版本里是 string[] 类型,这里会自动将其转换成 ['a','b','c']\n // 2. 减少额外操作。例如某个设置的类型为 string[],其他模块可以传入 string 类型的值如 'a,b,c',而不必先把它转换成 string[]\n public setSetting(key: SettingKeys, value: SettingValue) {\n if (!this.allSettingKeys.includes(key)) {\n return\n }\n\n const keyType = typeof this.defaultSettings[key]\n const valueType = typeof value\n\n // 把旧的设置值转换为新的设置值。需要转换的值都是 string 类型\n if (valueType === 'string') {\n value = convertOldSettings.convert(key, value as string)\n }\n\n // 将传入的值转换成选项对应的类型\n if (keyType === 'string' && valueType !== 'string') {\n value = value.toString()\n }\n\n if (keyType === 'number' && valueType !== 'number') {\n // 时间是需要特殊处理的 number 类型\n if (key === 'postDateStart' || key == 'postDateEnd') {\n if (valueType === 'string') {\n if (value === '') {\n // 如果日期是空字符串,则替换为默认值\n value = this.defaultSettings[key]\n } else {\n // 把日期字符串转换成时间戳\n const date = new Date(value as string)\n value = date.getTime()\n }\n }\n } else {\n // 处理普通的 number 类型\n if (this.floatNumberKey.includes(key)) {\n value = Number.parseFloat(value as any)\n } else {\n value = Number.parseInt(value as any)\n }\n }\n\n if (isNaN(value as number)) {\n return this.tipError(key)\n }\n }\n\n if (keyType === 'boolean' && valueType !== 'boolean') {\n value = !!value\n }\n\n // 处理数组类型的值\n if (Array.isArray(this.defaultSettings[key])) {\n if (this.stringArrayKeys.includes(key)) {\n // 字符串转换成 string[]\n if (valueType === 'string') {\n value = Utils.string2array(value as string)\n }\n }\n\n if (this.numberArrayKeys.includes(key)) {\n // 把数组转换成 number[]\n if (Array.isArray(value)) {\n value = (value as any[]).map((val: string | number) => {\n if (typeof val !== 'number') {\n return Number(val)\n } else {\n return val\n }\n })\n } else {\n return\n }\n }\n }\n\n // 对于一些不合法的值,重置为默认值\n if (key === 'firstFewImages' && value < 1) {\n value = this.defaultSettings[key]\n }\n\n if (key === 'fileNameLengthLimit' && value < 1) {\n value = this.defaultSettings[key]\n }\n\n if (key === 'setWidthAndOr' && value === '') {\n value = this.defaultSettings[key]\n }\n\n if (key === 'previewResultLimit' && value < 0) {\n value = 999999\n }\n\n if (key === 'workDirNameRule') {\n value = (value as string).replace('{id}', '{id_num}')\n }\n\n // 更改设置\n ;(this.settings[key] as any) = value\n\n // 当修改某些设置时,顺便修改以来它的设置\n if (key === 'widthTag') {\n this.settings.widthTagBoolean = value === 'yes'\n }\n if (key === 'restrict') {\n this.settings.restrictBoolean = value === 'yes'\n }\n\n if (key === 'ratio') {\n this.settings.userSetChecked = value === 'userSet'\n }\n\n // 触发设置变化的事件\n EVT.fire('settingChange', { name: key, value: value })\n }\n}\n\nconst self = new Settings()\nconst settings = self.settings\nconst setSetting = self.setSetting.bind(self)\n\nexport { settings, setSetting, SettingKeys }\n","import { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { settings, setSetting } from './Settings'\nimport { theme } from '../Theme'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { Utils } from '../utils/Utils'\n\n// 如果作品含有某个标签,则对这个作品使用另一种命名规则\nclass UseDifferentNameRuleIfWorkHasTag {\n constructor() {\n this.createWrap()\n theme.register(this.wrap)\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private readonly slotName = 'UseDifferentNameRuleIfWorkHasTagSlot'\n private wrap!: HTMLDivElement // 最外层元素\n\n private expandBtn!: HTMLButtonElement // 展开/折叠 按钮\n private totalSpan!: HTMLSpanElement // 显示规则数量\n private showAddBtn!: HTMLButtonElement // 添加 按钮,点击显示添加区域\n\n private addWrap!: HTMLDivElement // 用于添加新项目的区域\n private addTagsInput!: HTMLInputElement // 用于添加新项目的 Tags 的输入框\n private addRuleInput!: HTMLInputElement // 用于添加新项目的命名规则的输入框\n private addBtn!: HTMLButtonElement // 添加 按钮\n private cancelBtn!: HTMLButtonElement // 取消 按钮\n\n private listWrap!: HTMLDivElement // 列表区域容器\n\n private _addWrapShow = false\n\n set addWrapShow(val: boolean) {\n this._addWrapShow = val\n\n if (val) {\n this.addWrap.style.display = 'block'\n this.addTagsInput.focus()\n } else {\n this.addWrap.style.display = 'none'\n this.addTagsInput.value = ''\n this.addRuleInput.value = ''\n }\n }\n\n get addWrapShow() {\n return this._addWrapShow\n }\n\n private wrapHTML = `\n
        \n\n \n 0\n \n \n \n\n
        \n
        \n
        \n Tags\n \n
        \n\n
        \n \n \n
        \n\n
        \n \n\n \n \n
        \n
        \n
        \n\n
        \n
        \n
        \n `\n\n // 创建列表外部的容器,静态 html\n private createWrap() {\n this.wrap = Tools.useSlot(this.slotName, this.wrapHTML)! as HTMLDivElement\n this.expandBtn = this.wrap.querySelector('.expand')! as HTMLButtonElement\n this.showAddBtn = this.wrap.querySelector('.showAdd')! as HTMLButtonElement\n this.totalSpan = this.wrap.querySelector('.total')! as HTMLSpanElement\n this.addWrap = this.wrap.querySelector('.addWrap')! as HTMLDivElement\n this.addTagsInput = this.wrap.querySelector(\n '.addTagsInput'\n )! as HTMLInputElement\n this.addRuleInput = this.wrap.querySelector(\n '.addRuleInput'\n )! as HTMLInputElement\n this.addBtn = this.wrap.querySelector('.add')! as HTMLButtonElement\n this.cancelBtn = this.wrap.querySelector('.cancel')! as HTMLButtonElement\n this.listWrap = this.wrap.querySelector('.listWrap')! as HTMLDivElement\n\n // 展开/折叠按钮\n this.expandBtn.addEventListener('click', () => {\n setSetting(\n 'UseDifferentNameRuleIfWorkHasTagShow',\n !settings.UseDifferentNameRuleIfWorkHasTagShow\n )\n })\n\n // 切换显示添加规则的区域\n this.showAddBtn.addEventListener('click', () => {\n this.addWrapShow = !this.addWrapShow\n })\n\n // 添加规则的按钮\n this.addBtn.addEventListener('click', () => {\n this.addRule(this.addTagsInput.value, this.addRuleInput.value)\n })\n\n // 取消添加的按钮\n this.cancelBtn.addEventListener('click', () => {\n this.addWrapShow = false\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'UseDifferentNameRuleIfWorkHasTagShow') {\n this.showListWrap()\n }\n if (data.name === 'UseDifferentNameRuleIfWorkHasTagList') {\n this.createAllList()\n }\n })\n }\n\n private showListWrap() {\n const show = settings.UseDifferentNameRuleIfWorkHasTagShow\n this.listWrap.style.display = show ? 'flex' : 'none'\n lang.updateText(this.expandBtn, show ? '_收起' : '_展开')\n }\n\n // 根据规则动态创建 html\n private createAllList() {\n this.totalSpan.textContent =\n settings.UseDifferentNameRuleIfWorkHasTagList.length.toString()\n this.listWrap.innerHTML = ''\n const df = document.createDocumentFragment()\n for (const {\n id,\n tags,\n rule,\n } of settings.UseDifferentNameRuleIfWorkHasTagList) {\n df.append(this.createOneList(id, tags, rule))\n }\n this.listWrap.append(df)\n }\n\n // 创建规则对应的元素,并绑定事件\n private createOneList(id: number, tags: string[], rule: string) {\n const html = `\n
        \n ${id}\n
        \n\n
        \n \n
        \n\n
        \n \n
        \n\n
        \n \n\n \n
        `\n\n const element = document.createElement('div')\n element.classList.add('settingItem')\n element.dataset.key = id.toString()\n element.innerHTML = html\n\n const updateRule = element.querySelector(`button[data-updateRule='${id}']`)\n const deleteRule = element.querySelector(`button[data-deleteRule='${id}']`)\n const tagsInput = element.querySelector(\n `input[data-tagsInput='${id}']`\n )! as HTMLInputElement\n const ruleInput = element.querySelector(\n `input[data-ruleInput='${id}']`\n )! as HTMLInputElement\n\n // 当输入框发生变化时,进行更新\n ;[tagsInput, ruleInput].forEach((el) => {\n el?.addEventListener('change', () => {\n if (el.value) {\n this.updateRule(id, tagsInput.value, ruleInput.value, false)\n }\n })\n })\n\n // 更新规则\n updateRule?.addEventListener('click', () => {\n this.updateRule(id, tagsInput.value, ruleInput.value)\n })\n\n // 删除规则\n deleteRule?.addEventListener('click', () => {\n this.deleteRule(id)\n })\n\n return element\n }\n\n // 检查用户输入的值\n private checkValue(tagsInput: string, rule: string) {\n if (!tagsInput || !rule) {\n msgBox.error(lang.transl('_必填项不能为空'))\n return false\n }\n\n return {\n tags: Utils.string2array(tagsInput),\n rule,\n }\n }\n\n // 添加规则\n private async addRule(tagsInput: string, rule: string) {\n const check = this.checkValue(tagsInput, rule)\n if (!check) {\n return\n }\n\n const idList = settings.UseDifferentNameRuleIfWorkHasTagList.map(\n (item) => item.id\n )\n const id = idList.length === 0 ? 0 : Math.max(...idList) + 1\n const data = {\n id: id,\n tags: check.tags,\n rule: rule,\n }\n settings.UseDifferentNameRuleIfWorkHasTagList.push(data)\n\n setSetting(\n 'UseDifferentNameRuleIfWorkHasTagList',\n settings.UseDifferentNameRuleIfWorkHasTagList\n )\n\n console.log(...settings.UseDifferentNameRuleIfWorkHasTagList)\n this.addWrapShow = false\n\n toast.success(lang.transl('_添加成功'))\n }\n\n // 更新规则\n // tip 表示是否用显示操作成功的提示。当用户点击了更新按钮时应该显示提示;输入内容变化导致的自动更新可以不显示提示\n private async updateRule(\n id: number,\n tagsInput: string,\n rule: string,\n tip = true\n ) {\n const check = this.checkValue(tagsInput, rule)\n if (!check) {\n return\n }\n\n let old = settings.UseDifferentNameRuleIfWorkHasTagList.find(\n (item) => item.id === id\n )\n if (old) {\n old.tags = check.tags\n old.rule = rule\n } else {\n return\n }\n\n setSetting(\n 'UseDifferentNameRuleIfWorkHasTagList',\n settings.UseDifferentNameRuleIfWorkHasTagList\n )\n\n console.log(...settings.UseDifferentNameRuleIfWorkHasTagList)\n this.addWrapShow = false\n\n if (tip) {\n toast.success(lang.transl('_更新成功'))\n }\n }\n\n // 删除规则\n private deleteRule(id: number) {\n let index = settings.UseDifferentNameRuleIfWorkHasTagList.findIndex(\n (item) => item.id === id\n )\n if (index > -1) {\n settings.UseDifferentNameRuleIfWorkHasTagList.splice(index, 1)\n } else {\n return\n }\n\n setSetting(\n 'UseDifferentNameRuleIfWorkHasTagList',\n settings.UseDifferentNameRuleIfWorkHasTagList\n )\n\n console.log(...settings.UseDifferentNameRuleIfWorkHasTagList)\n this.removeListElement(id)\n }\n\n private removeListElement(id: number) {\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${id}']`\n )\n listElement?.remove()\n }\n}\n\nnew UseDifferentNameRuleIfWorkHasTag()\n","import { ArtworkData } from '../crawl/CrawlResult'\n\n// 本程序有多个模块需要在抓取流程之外获取作品数据\n// 为了避免重复发起请求,以及解决浏览器有时候不读取缓存的问题,所以在这里缓存一些作品数据\n// 即使下载器获取过某个作品的数据,但是以后再次请求时,浏览器也有可能不会读取缓存,而是重新发起请求。\nclass CacheWorkData {\n private cache: ArtworkData[] = []\n // 一个图像作品的数据大约是 5 KB\n private readonly max = 20\n\n public set(data: ArtworkData) {\n if (this.has(data.body.id)) {\n return\n }\n if (this.cache.length >= this.max) {\n this.cache.shift()\n }\n this.cache.push(data)\n }\n\n public get(id: string) {\n return this.cache.find((val) => val.body.id === id)\n }\n\n public has(id: string) {\n return this.cache.some((val) => val.body.id === id)\n }\n}\n\nconst cacheWorkData = new CacheWorkData()\nexport { cacheWorkData }\n","import { store } from './Store'\nimport { IDData } from './StoreType'\nimport { Utils } from '../utils/Utils'\n\ntype IDDataWithPageNo = IDData & {\n page: number\n}\n\n// 这是为了解决抓取多个列表页面时,获得的 id 数据顺序混乱的问题\n// 这个类会保留每个 id 所处的页码。抓取完成后可以把这些 id 按页码顺序排列,保证 id 的顺序和在页码里的顺序一致\nclass IdListWithPageNo {\n // 存储 id 列表,按 pageId 不同分别存储\n private allList: {\n [pageId: number]: IDDataWithPageNo[]\n } = {}\n\n // 添加一条记录\n public add(pageId: number, idData: IDData, page: number) {\n if (this.allList[pageId] === undefined) {\n this.allList[pageId] = []\n }\n this.allList[pageId].push({\n id: idData.id,\n type: idData.type,\n page: page,\n })\n }\n\n // 清空记录\n public clear(pageId: number) {\n if (this.allList[pageId]) {\n delete this.allList[pageId]\n }\n }\n\n // 排序\n private sort(pageId: number) {\n if (this.allList[pageId]) {\n this.allList[pageId].sort(Utils.sortByProperty('page', 'asc'))\n }\n }\n\n // 转储到 store.idList 里\n // 自动排序\n // 转储之后自动清空\n public store(pageId: number) {\n if (this.allList[pageId]) {\n this.sort(pageId)\n\n for (const data of this.allList[pageId]) {\n store.idList.push({\n id: data.id,\n type: data.type,\n })\n }\n\n this.clear(pageId)\n }\n }\n\n // 如果没有值,返回的就是 undefined\n public get(pageId: number) {\n return this.allList[pageId]\n }\n}\n\nconst idListWithPageNo = new IdListWithPageNo()\nexport { idListWithPageNo }\n","import { API } from '../API'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { settings } from '../setting/Settings'\nimport { ArtworkData } from '../crawl/CrawlResult'\nimport { store } from './Store'\nimport { Tools } from '../Tools'\nimport { log } from '../Log'\nimport { Utils } from '../utils/Utils'\n\n// 保存图片作品的数据\nclass SaveArtworkData {\n public async save(data: ArtworkData) {\n // 获取需要检查的信息\n const body = data.body\n const fullWidth = body.width // 原图宽度\n const fullHeight = body.height // 原图高度\n const bmk = body.bookmarkCount // 收藏数\n\n const tags: string[] = Tools.extractTags(data) // tag 列表\n const tagsWithTransl: string[] = Tools.extractTags(data, 'both') // 保存 tag 列表,附带翻译后的 tag\n const tagsTranslOnly: string[] = Tools.extractTags(data, 'transl') // 保存翻译后的 tag 列表\n\n const aiMarkString = Tools.getAIGeneratedMark(body.aiType)\n if (aiMarkString) {\n tags.unshift(aiMarkString)\n tagsWithTransl.unshift(aiMarkString)\n tagsTranslOnly.unshift(aiMarkString)\n }\n\n const filterOpt: FilterOption = {\n aiType: body.aiType,\n createDate: body.createDate,\n id: body.id,\n workType: body.illustType,\n tags: tagsWithTransl,\n pageCount: body.pageCount,\n bookmarkCount: bmk,\n bookmarkData: body.bookmarkData,\n width: body.pageCount === 1 ? fullWidth : 0,\n height: body.pageCount === 1 ? fullHeight : 0,\n mini: body.pageCount === 1 ? body.urls.mini : undefined,\n userId: body.userId,\n xRestrict: body.xRestrict,\n }\n // 对于多图作品,其宽高和颜色不在这里进行检查。也就是只会在下载时检查。\n // 这是因为在多图作品里,第一张图片的宽高和颜色不能代表剩余的图片。\n\n // 检查通过\n if (await filter.check(filterOpt)) {\n const idNum = parseInt(body.id)\n const title = body.title // 作品标题\n const userId = body.userId // 用户id\n const user = body.userName // 用户名\n const pageCount = body.pageCount\n const bookmarked = !!body.bookmarkData\n\n // 保存作品在排行榜上的编号\n const rankData = store.getRankList(body.id)\n const rank = rankData ? rankData : null\n\n const seriesTitle = body.seriesNavData ? body.seriesNavData.title : ''\n const seriesOrder = body.seriesNavData ? body.seriesNavData.order : null\n\n // 保存作品信息\n const description = Utils.htmlDecode(body.description)\n\n if (body.illustType === 0 || body.illustType === 1) {\n // 插画或漫画\n const imgUrl = body.urls.original // 作品的原图 URL\n if (imgUrl === null) {\n log.error(`${Tools.createWorkLink(body.id, true)} URLs are null`)\n return\n }\n\n const tempExt = imgUrl.split('.')\n const ext = tempExt[tempExt.length - 1]\n\n store.addResult({\n aiType: body.aiType,\n id: body.id,\n idNum: idNum,\n // 对于插画和漫画的缩略图,当一个作品包含多个图片文件时,需要转换缩略图 url\n thumb:\n body.pageCount > 1\n ? Tools.convertArtworkThumbURL(body.urls.thumb, 0)\n : body.urls.thumb,\n pageCount: pageCount,\n original: imgUrl,\n regular: body.urls.regular,\n small: body.urls.small,\n title: title,\n description: description,\n tags: tags,\n tagsWithTransl: tagsWithTransl,\n tagsTranslOnly: tagsTranslOnly,\n user: user,\n userId: userId,\n fullWidth: fullWidth,\n fullHeight: fullHeight,\n ext: ext,\n bmk: bmk,\n bmkId: body.bookmarkData ? body.bookmarkData.id : '',\n bookmarked: bookmarked,\n date: body.createDate,\n uploadDate: body.uploadDate,\n type: body.illustType,\n rank: rank,\n seriesTitle: seriesTitle,\n seriesOrder: seriesOrder,\n seriesId: body.seriesNavData ? body.seriesNavData!.seriesId : null,\n viewCount: body.viewCount,\n likeCount: body.likeCount,\n commentCount: body.commentCount,\n xRestrict: body.xRestrict,\n sl: body.sl,\n })\n } else if (body.illustType === 2) {\n // 动图\n // 获取动图的信息\n const meta = await API.getUgoiraMeta(body.id)\n // 动图帧延迟数据\n const ugoiraInfo = {\n frames: meta.body.frames,\n mime_type: meta.body.mime_type,\n }\n\n // 当下载图片的方形缩略图时,它的后缀名从 url 中提取。\n // 此时不应该把它的后缀名设置为动图的保存格式,因为缩略图无法转换成动图\n let ext: string = settings.ugoiraSaveAs\n if (settings.imageSize === 'thumb') {\n const tempExt = body.urls.thumb.split('.')\n ext = tempExt[tempExt.length - 1]\n }\n\n store.addResult({\n aiType: body.aiType,\n id: body.id,\n idNum: idNum,\n thumb: body.urls.thumb,\n pageCount: pageCount,\n original: meta.body.originalSrc,\n regular: meta.body.src,\n small: meta.body.src,\n title: title,\n description: description,\n tags: tags,\n tagsWithTransl: tagsWithTransl,\n tagsTranslOnly: tagsTranslOnly,\n user: user,\n userId: userId,\n fullWidth: fullWidth,\n fullHeight: fullHeight,\n ext: ext,\n bmk: bmk,\n bmkId: body.bookmarkData ? body.bookmarkData.id : '',\n bookmarked: bookmarked,\n date: body.createDate,\n uploadDate: body.uploadDate,\n type: body.illustType,\n rank: rank,\n ugoiraInfo: ugoiraInfo,\n seriesTitle: seriesTitle,\n seriesOrder: seriesOrder,\n viewCount: body.viewCount,\n likeCount: body.likeCount,\n commentCount: body.commentCount,\n xRestrict: body.xRestrict,\n sl: body.sl,\n })\n }\n }\n }\n}\n\nconst saveArtworkData = new SaveArtworkData()\nexport { saveArtworkData }\n","import { filter, FilterOption } from '../filter/Filter'\nimport { NovelData } from '../crawl/CrawlResult'\nimport { store } from './Store'\nimport { settings } from '../setting/Settings'\nimport { Tools } from '../Tools'\nimport { Utils } from '../utils/Utils'\n\n// 保存单个小说作品的数据\nclass SaveNovelData {\n public async save(data: NovelData) {\n // 小说没有 illustType 属性, 把小说的 illustType 设置为 3,这是为了方便检查\n const illustType = 3\n\n // 获取需要检查的信息\n const body = data.body\n const bmk = body.bookmarkCount // 收藏数\n\n const tags: string[] = Tools.extractTags(data) // tag 列表\n // 小说的标签没有进行翻译,所以没有翻译后的标签\n\n const aiMarkString = Tools.getAIGeneratedMark(body.aiType)\n if (aiMarkString) {\n tags.unshift(aiMarkString)\n }\n\n const filterOpt: FilterOption = {\n aiType: body.aiType,\n createDate: body.createDate,\n id: body.id,\n workType: illustType,\n tags: tags,\n bookmarkCount: bmk,\n bookmarkData: body.bookmarkData,\n userId: body.userId,\n xRestrict: body.xRestrict,\n }\n\n // 检查通过\n if (await filter.check(filterOpt)) {\n const id = body.id\n const idNum = parseInt(id)\n const title = body.title\n const userId = body.userId\n const user = body.userName\n const bookmarked = !!body.bookmarkData\n\n // 保存作品在排行榜上的编号\n const rankData = store.getRankList(id)\n const rank = rankData ? rankData : null\n\n // 系列标题和序号\n const seriesTitle = body.seriesNavData ? body.seriesNavData.title : ''\n const seriesOrder = body.seriesNavData ? body.seriesNavData.order : null\n\n // 保存小说的一些元数据\n let meta = ''\n let metaArr: string[] = []\n\n const pageUrl = `https://www.pixiv.net/novel/show.php?id=${id}`\n const tagsA = []\n for (const tag of tags) {\n tagsA.push('#' + tag)\n }\n metaArr.push(title, user, pageUrl, body.description, tagsA.join('\\n'))\n meta = metaArr.join('\\n\\n') + '\\n\\n\\n'\n\n // 提取嵌入的图片资源\n let embeddedImages: null | {\n [key: string]: string\n } = null\n if (body.textEmbeddedImages) {\n embeddedImages = {}\n for (const [id, value] of Object.entries(body.textEmbeddedImages)) {\n embeddedImages[id] = value.urls.original\n }\n }\n\n // 保存作品信息\n const description = Utils.htmlDecode(body.description)\n\n store.addResult({\n aiType: body.aiType,\n id: id,\n idNum: idNum,\n thumb: body.coverUrl || undefined,\n title: title,\n description: description,\n tags: tags,\n tagsWithTransl: tags,\n tagsTranslOnly: tags,\n user: user,\n userId: userId,\n // 这里的 ext 并不重要,下载时会根据 novelSaveAs 设置自动生成对应的数据\n ext: settings.novelSaveAs,\n bmk: bmk,\n bmkId: body.bookmarkData ? body.bookmarkData.id : '',\n bookmarked: bookmarked,\n date: body.createDate,\n uploadDate: body.uploadDate,\n type: illustType,\n rank: rank,\n seriesTitle: seriesTitle,\n seriesOrder: seriesOrder,\n seriesId: body.seriesNavData ? body.seriesNavData!.seriesId : null,\n viewCount: body.viewCount,\n likeCount: body.likeCount,\n commentCount: body.commentCount,\n novelMeta: {\n id: body.id,\n title: body.title,\n content: this.replaceFlag(body.content),\n description: description,\n coverUrl: body.coverUrl,\n createDate: body.createDate,\n userName: body.userName,\n embeddedImages: embeddedImages,\n meta: meta,\n },\n xRestrict: body.xRestrict,\n })\n }\n }\n\n // '[[jumpuri:予約ページ>https://www.amazon.co.jp/dp/4758092486]]'\n // 替换成\n // '予約ページ(https://www.amazon.co.jp/dp/4758092486)'\n private replaceJumpuri(str: string) {\n let reg = /\\[\\[jumpuri:(.*?)>(.*?)\\]\\]/g\n let temp\n while ((temp = reg.exec(str))) {\n str = str.replace(temp[0], `${temp[1].trim()}(${temp[2].trim()})`)\n reg.lastIndex = 0\n }\n\n return str\n }\n\n // > '[[rb:莉莉丝 > Lilith]]'\n // 替换成\n // '莉莉丝(Lilith)'\n private replaceRb(str: string) {\n let reg = /\\[\\[rb:(.*?)>(.*?)\\]\\]/g\n let temp\n while ((temp = reg.exec(str))) {\n str = str.replace(temp[0], `${temp[1].trim()}(${temp[2].trim()})`)\n reg.lastIndex = 0\n }\n return str\n }\n\n // > '[chapter:标题]'\n // 替换成\n // '标题'\n private replaceChapter(str: string) {\n const reg = /\\[chapter:(.*?)\\]/g\n let temp\n while ((temp = reg.exec(str))) {\n str = str.replace(temp[0], temp[1])\n reg.lastIndex = 0\n }\n return str\n }\n\n // 对小说里的一些标记进行替换\n private replaceFlag(str: string) {\n str = str.replace(/\\[newpage\\]/g, '')\n\n str = this.replaceJumpuri(str)\n\n str = str.replace(/\\[jump:.*?\\]/g, '')\n\n str = this.replaceRb(str)\n\n str = this.replaceChapter(str)\n\n return str\n }\n}\n\nconst saveNovelData = new SaveNovelData()\nexport { saveNovelData }\n","import { EVT } from '../EVT'\n\n// 储存下载器内部产生的、会变化的状态\n// 这里的状态不需要持久化保存\n// 状态的值通常只由单一的模块修改\nclass States {\n constructor() {\n this.bindEvents()\n }\n\n /**指示 settings 是否初始化完毕 */\n public settingInitialized = false\n\n /**表示下载器是否处于繁忙状态\n *\n * 繁忙:下载器正在抓取作品,或者正在下载文件,或者正在批量添加收藏\n */\n public busy = false\n\n /**快速下载标记\n *\n * 快速下载模式中不会显示下载面板,并且总是会自动开始下载\n *\n * 启动快速下载时设为 true,下载完成或中止时复位到 false\n */\n public quickCrawl = false\n\n /**指示是否应该停止抓取 */\n public stopCrawl = false\n\n /**在排行榜抓取时,是否只抓取“首次登场”的作品 */\n // 修改者:InitRankingArtworkPage 模块修改这个状态\n public debut = false\n\n /**收藏模式的标记 */\n // 开始批量收藏时设为 true,收藏完成之后复位到 false\n public bookmarkMode = false\n\n /**合并系列小说时使用的标记 */\n public mergeNovel = false\n\n /**抓取标签列表时使用的标记 */\n public crawlTagList = false\n\n /**是否处于手动选择作品状态 */\n public selectWork = false\n\n /**是否处于下载中 */\n public downloading = false\n\n /**是否应用慢速抓取模式 */\n // 由 InitPageBase 修改它的值\n public slowCrawlMode = false\n\n /**是否在获取完作品 ID 列表后立即导出,并停止抓取 */\n // 这和 settings 里的 exportIDList 作用是相同的,但不是持久设置,\n // 因为它只在某些特定功能上临时使用,之后会被重置\n public exportIDList = false\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingInitialized, () => {\n this.settingInitialized = true\n })\n\n const idle = [\n EVT.list.stopCrawl,\n EVT.list.crawlComplete,\n EVT.list.downloadPause,\n EVT.list.downloadStop,\n EVT.list.downloadComplete,\n EVT.list.bookmarkModeEnd,\n ]\n\n idle.forEach((type) => {\n window.addEventListener(type, () => {\n this.busy = false\n })\n })\n\n const busy = [\n EVT.list.crawlStart,\n EVT.list.downloadStart,\n EVT.list.bookmarkModeStart,\n ]\n\n busy.forEach((type) => {\n window.addEventListener(type, () => {\n this.busy = true\n })\n })\n\n window.addEventListener(EVT.list.bookmarkModeStart, () => {\n this.bookmarkMode = true\n })\n\n window.addEventListener(EVT.list.bookmarkModeEnd, () => {\n this.bookmarkMode = false\n })\n\n // 下载完成,或者下载中止时,复位快速下载类状态\n const resetQuickState = [\n EVT.list.crawlEmpty,\n EVT.list.downloadStop,\n EVT.list.downloadPause,\n EVT.list.downloadComplete,\n EVT.list.downloadCancel,\n ]\n\n for (const ev of resetQuickState) {\n window.addEventListener(ev, () => {\n this.quickCrawl = false\n })\n }\n\n window.addEventListener(EVT.list.downloadStart, () => {\n this.downloading = true\n })\n\n const downloadIdle = [\n EVT.list.downloadPause,\n EVT.list.downloadStop,\n EVT.list.downloadComplete,\n ]\n for (const ev of downloadIdle) {\n window.addEventListener(ev, () => {\n this.downloading = false\n })\n }\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n // 当用户关闭设置里的慢速抓取时,在这里把慢速抓取模式的标记设为 false\n // 但是当用户开启慢速抓取时,不应该在这里把标记设为 true\n if (data.name === 'slowCrawl' && data.value === false) {\n this.slowCrawlMode = false\n }\n })\n }\n}\n\nconst states = new States()\nexport { states }\n","import { EVT } from '../EVT'\nimport { settings } from '../setting/Settings'\nimport { Tools } from '../Tools'\nimport { Result, ResultOptional, RankList, IDData } from './StoreType'\n\n// 保存抓取结果和其他一些公用数据\nclass Store {\n constructor() {\n this.loggedUserID = Tools.getLoggedUserID()\n this.bindEvents()\n }\n\n public loggedUserID = ''\n\n public idList: IDData[] = [] // 储存从列表中抓取到的作品的 id\n\n public waitingIdList: IDData[] = [] // 下载器尚未完成本次下载时,如果有新的下载请求,则添加到这里,下载完成后再处理\n\n public resultMeta: Result[] = [] // 储存抓取结果的元数据。\n // 当用于图片作品时,它可以根据每个作品需要下载多少张,生成每一张图片的信息\n\n /**系列小说的设定资料 */\n public novelSeriesGlossary = ''\n\n private artworkIDList: number[] = [] // 储存抓取到的图片作品的 id 列表,用来避免重复添加\n private novelIDList: number[] = [] // 储存抓取到的小说作品的 id 列表,用来避免重复添加\n\n public result: Result[] = [] // 储存抓取结果\n\n /**当前登录用户的关注用户列表 */\n public followingUserIDList: string[] = []\n\n /**记录从每个作品里下载多少个文件 */\n public downloadCount: {\n [workID: string]: number\n } = {}\n\n // 恢复未完成的下载之后,生成 downloadCount 数据\n // 因为保存的任务数据里没有 downloadCount,并且恢复数据时也没有生成 downloadCount\n public resetDownloadCount() {\n this.downloadCount = {}\n for (const r of this.result) {\n this.downloadCount[r.idNum] = (this.downloadCount[r.idNum] || 0) + 1\n }\n }\n\n public remainingDownload = 0 // 剩余多少个等待下载和保存的文件\n\n private rankList: RankList = {} // 储存作品在排行榜中的排名\n\n public tag = '' // 开始抓取时,储存页面此时的 tag\n\n public title = '' // 开始抓取时,储存页面此时的 title\n\n public URLWhenCrawlStart = '' // 开始抓取时,储存页面此时的 URL\n\n public crawlCompleteTime: Date = new Date()\n\n /**只下载作品里的一部分图片 */\n private downloadOnlyPart: {\n [workID: string]: number[]\n } = {}\n\n public setDownloadOnlyPart(workID: number, indexList: number[]) {\n if (this.downloadOnlyPart[workID]) {\n this.downloadOnlyPart[workID] = Array.from(\n new Set(this.downloadOnlyPart[workID].concat(indexList))\n )\n } else {\n this.downloadOnlyPart[workID] = indexList\n }\n }\n\n private readonly fileDataDefault: Result = {\n aiType: 0,\n idNum: 0,\n id: '',\n original: '',\n thumb: '',\n regular: '',\n small: '',\n title: '',\n description: '',\n pageCount: 1,\n index: 0,\n tags: [],\n tagsWithTransl: [],\n tagsTranslOnly: [],\n user: '',\n userId: '',\n fullWidth: 0,\n fullHeight: 0,\n ext: '',\n bmk: 0,\n bookmarked: false,\n bmkId: '',\n date: '',\n uploadDate: '',\n type: 0,\n rank: null,\n ugoiraInfo: null,\n seriesTitle: null,\n seriesOrder: null,\n seriesId: null,\n novelMeta: null,\n likeCount: 0,\n viewCount: 0,\n commentCount: 0,\n xRestrict: 0,\n sl: null,\n }\n\n // 添加每个作品的信息。只需要传递有值的属性\n // 如果一个作品有多张图片,只需要传递第一张图片的数据。后面的数据会根据设置自动生成\n public addResult(data: ResultOptional) {\n // 检查该作品 id 是否已存在,已存在则不添加\n const useList = data.type === 3 ? this.novelIDList : this.artworkIDList\n if (data.idNum !== undefined) {\n if (useList.includes(data.idNum)) {\n return\n }\n useList.push(data.idNum)\n }\n\n // 添加该作品的元数据\n const workData = Object.assign({}, this.fileDataDefault, data)\n // 注意:由于 Object.assign 不是深拷贝,所以不可以修改 result 的引用类型数据,否则会影响到源对象\n // 可以修改基础类型的数据\n\n if (workData.type === 0 || workData.type === 1) {\n workData.id = workData.idNum + `_p0`\n } else {\n workData.id = workData.idNum.toString()\n }\n\n this.resultMeta.push(workData)\n\n EVT.fire('addResult', workData)\n\n // 保存这个作品里每个文件的数据\n if (workData.type === 2 || workData.type === 3) {\n // 动图和小说作品直接添加\n this.result.push(workData)\n\n this.downloadCount[workData.idNum] = 1\n } else {\n // 插画和漫画\n\n // 储存需要下载的图片的索引\n let fileIndexList: number[] = []\n\n // 只下载部分图片\n if (this.downloadOnlyPart[workData.idNum]) {\n fileIndexList = this.downloadOnlyPart[workData.idNum]\n delete this.downloadOnlyPart[workData.idNum]\n } else {\n // 下载全部图片\n let total = workData.pageCount\n\n // 如果下载全部图片,则检查一些过滤器\n // 只下载部分图片时,用户已经手动指定了要下载的图片,所以不要检查这些过滤器\n\n // 多图作品只下载前几张图片\n if (settings.firstFewImagesSwitch) {\n total = Math.min(workData.pageCount, settings.firstFewImages)\n }\n\n // 不抓取多图作品的最后一张图片\n if (\n settings.doNotDownloadLastImageOfMultiImageWork &&\n workData.pageCount > 1\n ) {\n total = Math.min(total, workData.pageCount - 1)\n }\n\n // 特定用户的多图作品不下载最后几张图片\n if (workData.pageCount > 1) {\n const removeLastFew = settings.DoNotDownloadLastFewImagesList.find(\n (item) => item.uid === Number.parseInt(workData.userId)\n )\n\n if (removeLastFew && removeLastFew.value > 0) {\n let number = workData.pageCount - removeLastFew.value\n if (number < 1) {\n // 用户设置的值有可能把这个作品的图片全部排除了,此时只跳过最后一张\n number = workData.pageCount - 1\n }\n total = Math.min(total, number)\n }\n }\n\n for (let i = 0; i < total; i++) {\n fileIndexList.push(i)\n }\n }\n\n this.downloadCount[workData.idNum] = fileIndexList.length\n\n // 生成每个图片的数据\n const p0 = 'p0'\n for (const i of fileIndexList) {\n const fileData = Object.assign({}, workData)\n const pi = 'p' + i\n fileData.index = i\n fileData.id = fileData.id.replace(p0, pi)\n fileData.original = fileData.original.replace(p0, pi)\n fileData.regular = fileData.regular.replace(p0, pi)\n fileData.small = fileData.small.replace(p0, pi)\n fileData.thumb = fileData.thumb.replace(p0, pi)\n this.result.push(fileData)\n }\n }\n }\n\n public getRankList(index: string) {\n return this.rankList[index]\n }\n\n public setRankList(id: string, rank: number) {\n this.rankList[id] = rank\n }\n\n public findResult(id: string) {\n for (const result of this.result) {\n if (result.id === id) {\n return result\n }\n }\n }\n\n public reset() {\n this.resultMeta = []\n this.artworkIDList = []\n this.novelIDList = []\n this.result = []\n this.idList = []\n this.waitingIdList = []\n this.rankList = {}\n this.remainingDownload = 0\n this.novelSeriesGlossary = ''\n this.tag = Tools.getTagFromURL()\n this.title = Tools.getPageTitle()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.URLWhenCrawlStart = window.location.href\n this.reset()\n })\n\n // 停止下载时,清空等待下载的任务\n window.addEventListener(EVT.list.downloadStop, () => {\n this.waitingIdList = []\n })\n\n window.addEventListener(EVT.list.resume, () => {\n this.tag = Tools.getTagFromURL()\n this.title = Tools.getPageTitle()\n })\n }\n}\n\nconst store = new Store()\nexport { store }\n","export const novelData = [\n [129, 1280384594000],\n [10007, 1280558885000],\n [20001, 1281099833000],\n [30006, 1282016726000],\n [40000, 1283058990000],\n [50003, 1284130800000],\n [60002, 1285248459000],\n [70000, 1286383797000],\n [80000, 1287587350000],\n [90003, 1288702643000],\n [100000, 1289750009000],\n [110000, 1290800661000],\n [120000, 1291911048000],\n [130000, 1293023102000],\n [140001, 1293990763000],\n [150004, 1294921696000],\n [160004, 1295784678000],\n [170001, 1296580286000],\n [180000, 1297357894000],\n [190002, 1298051246000],\n [200000, 1298800698000],\n [210000, 1299544965000],\n [220000, 1300512363000],\n [230000, 1301213084000],\n [240000, 1301836904000],\n [250000, 1302561861000],\n [260000, 1303376035000],\n [270002, 1304084248000],\n [280000, 1304695785000],\n [290000, 1305338427000],\n [300000, 1305942926000],\n [310002, 1306521475000],\n [320000, 1307103716000],\n [330000, 1307628374000],\n [340000, 1308152212000],\n [350001, 1308671940000],\n [360003, 1309193210000],\n [370000, 1309707590000],\n [380001, 1310224382000],\n [390002, 1310744385000],\n [400000, 1311240590000],\n [410000, 1311714592000],\n [420003, 1312224244000],\n [430001, 1312731339000],\n [440001, 1313296075000],\n [450003, 1313764835000],\n [460000, 1314249696000],\n [470003, 1314711329000],\n [480000, 1315145953000],\n [490007, 1315659922000],\n [500000, 1316129991000],\n [510003, 1316556988000],\n [520000, 1316999883000],\n [530004, 1317484198000],\n [540001, 1317970536000],\n [550003, 1318383439000],\n [560001, 1318844138000],\n [570001, 1319298372000],\n [580000, 1319786020000],\n [590001, 1320157532000],\n [600000, 1320589354000],\n [610003, 1321033402000],\n [620000, 1321519466000],\n [630002, 1321925666000],\n [640000, 1322323144000],\n [650001, 1322778841000],\n [660000, 1323187376000],\n [670000, 1323619422000],\n [680002, 1324113471000],\n [690005, 1324542346000],\n [700000, 1324863292000],\n [710000, 1325265330000],\n [720001, 1325664232000],\n [730000, 1326030447000],\n [740000, 1326447371000],\n [750000, 1326813089000],\n [760000, 1327222222000],\n [770000, 1327616533000],\n [780001, 1327978661000],\n [790006, 1328363509000],\n [800000, 1328708326000],\n [810002, 1329049070000],\n [820000, 1329313827000],\n [830000, 1329661069000],\n [840000, 1330044197000],\n [850002, 1330399536000],\n [860000, 1330760171000],\n [870000, 1331091059000],\n [880001, 1331430688000],\n [890000, 1331740424000],\n [900000, 1332056343000],\n [910000, 1332342034000],\n [920004, 1332657590000],\n [930000, 1332950185000],\n [940001, 1333253995000],\n [950001, 1333531155000],\n [960003, 1333851677000],\n [970001, 1334204901000],\n [980001, 1334509654000],\n [990000, 1334915605000],\n [1000004, 1335194889000],\n [1010001, 1335577999000],\n [1020001, 1335865453000],\n [1030000, 1336148344000],\n [1040000, 1336430393000],\n [1050000, 1336801524000],\n [1060001, 1337093451000],\n [1070000, 1337435442000],\n [1080003, 1337748152000],\n [1090000, 1338048813000],\n [1100000, 1338386829000],\n [1110006, 1338706652000],\n [1120001, 1338995770000],\n [1130003, 1339304913000],\n [1140000, 1339594732000],\n [1150005, 1339900812000],\n [1160000, 1340181428000],\n [1170000, 1340467013000],\n [1180000, 1340798549000],\n [1190004, 1341081318000],\n [1200000, 1341378294000],\n [1210000, 1341627003000],\n [1220000, 1341838882000],\n [1230002, 1342107912000],\n [1240001, 1342366761000],\n [1250000, 1342624522000],\n [1260000, 1342893053000],\n [1270001, 1343141451000],\n [1280000, 1343411297000],\n [1290000, 1343663085000],\n [1300001, 1343920259000],\n [1310000, 1344169879000],\n [1320002, 1344409293000],\n [1330000, 1344659199000],\n [1340000, 1344896869000],\n [1350000, 1345124715000],\n [1360009, 1345359194000],\n [1370002, 1345599272000],\n [1380000, 1345835088000],\n [1390000, 1346075877000],\n [1400001, 1346330394000],\n [1410001, 1346550028000],\n [1420000, 1346779027000],\n [1430000, 1347060633000],\n [1440001, 1347279773000],\n [1450001, 1347538265000],\n [1460005, 1347781791000],\n [1470001, 1347973096000],\n [1480002, 1348233789000],\n [1490000, 1348421630000],\n [1500001, 1348700844000],\n [1510001, 1348937413000],\n [1520000, 1349157850000],\n [1530001, 1349372979000],\n [1540002, 1349606131000],\n [1550001, 1349795097000],\n [1560001, 1350052229000],\n [1570002, 1350269341000],\n [1580001, 1350532237000],\n [1590000, 1350758415000],\n [1600000, 1350997858000],\n [1610006, 1351261071000],\n [1620003, 1351479480000],\n [1630002, 1351693412000],\n [1640000, 1351949249000],\n [1650005, 1352189853000],\n [1660000, 1352449647000],\n [1670002, 1352637939000],\n [1680001, 1352884190000],\n [1690000, 1353154000000],\n [1700000, 1353402782000],\n [1710000, 1353638092000],\n [1720001, 1353848294000],\n [1730000, 1354118175000],\n [1740003, 1354378863000],\n [1750002, 1354631450000],\n [1760000, 1354938336000],\n [1770001, 1355153123000],\n [1780000, 1355444255000],\n [1790003, 1355670988000],\n [1800000, 1355934280000],\n [1810000, 1356190313000],\n [1820001, 1356371790000],\n [1830001, 1356616228000],\n [1840003, 1356868743000],\n [1850002, 1357070395000],\n [1860000, 1357313538000],\n [1870000, 1357548863000],\n [1880001, 1357824009000],\n [1890000, 1358074605000],\n [1900000, 1358265865000],\n [1910000, 1358569040000],\n [1920003, 1358779320000],\n [1930000, 1359041117000],\n [1940001, 1359285099000],\n [1950002, 1359536718000],\n [1960000, 1359745109000],\n [1970002, 1359966846000],\n [1980000, 1360210328000],\n [1990001, 1360429921000],\n [2000000, 1360642383000],\n [2010000, 1360844563000],\n [2020000, 1361026805000],\n [2030005, 1361263382000],\n [2040000, 1361519812000],\n [2050000, 1361713982000],\n [2060001, 1361973749000],\n [2070000, 1362225095000],\n [2080000, 1362416157000],\n [2090000, 1362671650000],\n [2100001, 1362903499000],\n [2110004, 1363125268000],\n [2120000, 1363354484000],\n [2130000, 1363575696000],\n [2140000, 1363788816000],\n [2150000, 1364031500000],\n [2160000, 1364224743000],\n [2170003, 1364468664000],\n [2180001, 1364685260000],\n [2190000, 1364872459000],\n [2200001, 1365085949000],\n [2210001, 1365305116000],\n [2220000, 1365521609000],\n [2230000, 1365821669000],\n [2240001, 1366035468000],\n [2250001, 1366338753000],\n [2260002, 1366554728000],\n [2270000, 1366817986000],\n [2280001, 1367079795000],\n [2290001, 1367301796000],\n [2300000, 1367535148000],\n [2310000, 1367755047000],\n [2320001, 1367938482000],\n [2330002, 1368198077000],\n [2340002, 1368402443000],\n [2350002, 1368671885000],\n [2360000, 1368908138000],\n [2370000, 1369143679000],\n [2380000, 1369399230000],\n [2390002, 1369586696000],\n [2400004, 1369887355000],\n [2410000, 1370104099000],\n [2420002, 1370341310000],\n [2430001, 1370603557000],\n [2440001, 1370788687000],\n [2450000, 1371038666000],\n [2460002, 1371286007000],\n [2470000, 1371481119000],\n [2480000, 1371732988000],\n [2490002, 1371958259000],\n [2500000, 1372170531000],\n [2510000, 1372430704000],\n [2520001, 1372617024000],\n [2530004, 1372871380000],\n [2540001, 1373120348000],\n [2550000, 1373293117000],\n [2560000, 1373552201000],\n [2570001, 1373799086000],\n [2580000, 1373990399000],\n [2590001, 1374251028000],\n [2600000, 1374478513000],\n [2610000, 1374695793000],\n [2620001, 1374935403000],\n [2630001, 1375151019000],\n [2640000, 1375366140000],\n [2650003, 1375582844000],\n [2660006, 1375789458000],\n [2670000, 1375982223000],\n [2680001, 1376219077000],\n [2690000, 1376419869000],\n [2700000, 1376641349000],\n [2710002, 1376830708000],\n [2720001, 1377025884000],\n [2730003, 1377257395000],\n [2740002, 1377439480000],\n [2750000, 1377658821000],\n [2760000, 1377871532000],\n [2770000, 1378042294000],\n [2780000, 1378279211000],\n [2790004, 1378512151000],\n [2800000, 1378707972000],\n [2810000, 1378919770000],\n [2820001, 1379167185000],\n [2830000, 1379338634000],\n [2840000, 1379588368000],\n [2850000, 1379791566000],\n [2860002, 1379998199000],\n [2870001, 1380244352000],\n [2880001, 1380458162000],\n [2890000, 1380709854000],\n [2900001, 1380955990000],\n [2910000, 1381149483000],\n [2920000, 1381395761000],\n [2930000, 1381600314000],\n [2940005, 1381806653000],\n [2950001, 1382032915000],\n [2960000, 1382266138000],\n [2970000, 1382497296000],\n [2980001, 1382722022000],\n [2990002, 1382958224000],\n [3000001, 1383198845000],\n [3010001, 1383402564000],\n [3020000, 1383581008000],\n [3030002, 1383836419000],\n [3040001, 1384069244000],\n [3050000, 1384263193000],\n [3060003, 1384524757000],\n [3070001, 1384737837000],\n [3080000, 1384996638000],\n [3090003, 1385212146000],\n [3100003, 1385431019000],\n [3110000, 1385699731000],\n [3120003, 1385900847000],\n [3130000, 1386153660000],\n [3140002, 1386408440000],\n [3150000, 1386604510000],\n [3160003, 1386865240000],\n [3170000, 1387110539000],\n [3180000, 1387367749000],\n [3190000, 1387604327000],\n [3200000, 1387802332000],\n [3210000, 1387970572000],\n [3220007, 1388160975000],\n [3230000, 1388398804000],\n [3240000, 1388570893000],\n [3250002, 1388768138000],\n [3260001, 1388976072000],\n [3270002, 1389194106000],\n [3280001, 1389440923000],\n [3290006, 1389592662000],\n [3300000, 1389790343000],\n [3310000, 1390038223000],\n [3320001, 1390228417000],\n [3330003, 1390483721000],\n [3340000, 1390708173000],\n [3350001, 1390916206000],\n [3360000, 1391147130000],\n [3370000, 1391328790000],\n [3380002, 1391519054000],\n [3390001, 1391742834000],\n [3400000, 1391928566000],\n [3410000, 1392108927000],\n [3420001, 1392300500000],\n [3430000, 1392440337000],\n [3440000, 1392581355000],\n [3450000, 1392818545000],\n [3460000, 1393053469000],\n [3470003, 1393240576000],\n [3480000, 1393469026000],\n [3490004, 1393675973000],\n [3500000, 1393852227000],\n [3510001, 1394081671000],\n [3520001, 1394285166000],\n [3530001, 1394462801000],\n [3540002, 1394697374000],\n [3550000, 1394880049000],\n [3560002, 1395050621000],\n [3570000, 1395246872000],\n [3580003, 1395474465000],\n [3590000, 1395659536000],\n [3600001, 1395846777000],\n [3610003, 1396065846000],\n [3620000, 1396244134000],\n [3630001, 1396417542000],\n [3640000, 1396614221000],\n [3650001, 1396791326000],\n [3660000, 1397022134000],\n [3670000, 1397274214000],\n [3680003, 1397465091000],\n [3690003, 1397723422000],\n [3700000, 1397926553000],\n [3710001, 1398151228000],\n [3720005, 1398391812000],\n [3730000, 1398595954000],\n [3740000, 1398778603000],\n [3750000, 1398968016000],\n [3760000, 1399202230000],\n [3770001, 1399372076000],\n [3780000, 1399569729000],\n [3790000, 1399790469000],\n [3800000, 1399992962000],\n [3810000, 1400246876000],\n [3820000, 1400425983000],\n [3830000, 1400679476000],\n [3840002, 1400911387000],\n [3850000, 1401098715000],\n [3860001, 1401339903000],\n [3870000, 1401551332000],\n [3880001, 1401759755000],\n [3890001, 1401983592000],\n [3900002, 1402204857000],\n [3910000, 1402398206000],\n [3920001, 1402640662000],\n [3930000, 1402831875000],\n [3940001, 1403027766000],\n [3950001, 1403273218000],\n [3960001, 1403448681000],\n [3970001, 1403689984000],\n [3980003, 1403925632000],\n [3990001, 1404107465000],\n [4000000, 1404318974000],\n [4010001, 1404563643000],\n [4020003, 1404739221000],\n [4030003, 1404955522000],\n [4040000, 1405172711000],\n [4050001, 1405356399000],\n [4060004, 1405613850000],\n [4070000, 1405857345000],\n [4080000, 1406040627000],\n [4090000, 1406291871000],\n [4100002, 1406484212000],\n [4110000, 1406727405000],\n [4120000, 1406945016000],\n [4130001, 1407141824000],\n [4140010, 1407340131000],\n [4150000, 1407562661000],\n [4160000, 1407734796000],\n [4170001, 1407935639000],\n [4180000, 1408125359000],\n [4190000, 1408330818000],\n [4200001, 1408532218000],\n [4210000, 1408722044000],\n [4220000, 1408901567000],\n [4230001, 1409137675000],\n [4240001, 1409330881000],\n [4250005, 1409500868000],\n [4260002, 1409744703000],\n [4270002, 1409967629000],\n [4280003, 1410150372000],\n [4290000, 1410357905000],\n [4300000, 1410596035000],\n [4310000, 1410775372000],\n [4320000, 1410968927000],\n [4330000, 1411212383000],\n [4340001, 1411396391000],\n [4350000, 1411601413000],\n [4360000, 1411826286000],\n [4370002, 1412006421000],\n [4380000, 1412254595000],\n [4390001, 1412446854000],\n [4400000, 1412610825000],\n [4410002, 1412853440000],\n [4420000, 1413040935000],\n [4430002, 1413210796000],\n [4440001, 1413449251000],\n [4450003, 1413674476000],\n [4460002, 1413895354000],\n [4470002, 1414148442000],\n [4480003, 1414334560000],\n [4490000, 1414587176000],\n [4500000, 1414768048000],\n [4510002, 1414948293000],\n [4520000, 1415180576000],\n [4530000, 1415427122000],\n [4540000, 1415620756000],\n [4550000, 1415833945000],\n [4560002, 1416071344000],\n [4570004, 1416308460000],\n [4580002, 1416572690000],\n [4590000, 1416760063000],\n [4600002, 1417003566000],\n [4610002, 1417259849000],\n [4620001, 1417447473000],\n [4630000, 1417714518000],\n [4640000, 1417956598000],\n [4650000, 1418216048000],\n [4660000, 1418475241000],\n [4670000, 1418710339000],\n [4680004, 1418970521000],\n [4690002, 1419169105000],\n [4700005, 1419358497000],\n [4710000, 1419526254000],\n [4720000, 1419772928000],\n [4730000, 1419974551000],\n [4740000, 1420161657000],\n [4750001, 1420365381000],\n [4760002, 1420562341000],\n [4770000, 1420815773000],\n [4780001, 1421031408000],\n [4790001, 1421246156000],\n [4800000, 1421501308000],\n [4810000, 1421686861000],\n [4820000, 1421939002000],\n [4830000, 1422169526000],\n [4840000, 1422371808000],\n [4850000, 1422623205000],\n [4860000, 1422797374000],\n [4870000, 1423017739000],\n [4880000, 1423234605000],\n [4890000, 1423410499000],\n [4900000, 1423644484000],\n [4910001, 1423837444000],\n [4920000, 1423970388000],\n [4930001, 1424165273000],\n [4940001, 1424364687000],\n [4950002, 1424582000000],\n [4960001, 1424768846000],\n [4970001, 1424966114000],\n [4980000, 1425171871000],\n [4990000, 1425349395000],\n [5000000, 1425559592000],\n [5010001, 1425741575000],\n [5020003, 1425913279000],\n [5030003, 1426126824000],\n [5040001, 1426327854000],\n [5050000, 1426495511000],\n [5060001, 1426693282000],\n [5070005, 1426922090000],\n [5080000, 1427098056000],\n [5090000, 1427293125000],\n [5100000, 1427514626000],\n [5110000, 1427695785000],\n [5120002, 1427877197000],\n [5130002, 1428060146000],\n [5140001, 1428234288000],\n [5150000, 1428419973000],\n [5160000, 1428671937000],\n [5170002, 1428847629000],\n [5180001, 1429094087000],\n [5190000, 1429341649000],\n [5200003, 1429525955000],\n [5210000, 1429765217000],\n [5220000, 1429975534000],\n [5230001, 1430176975000],\n [5240002, 1430391697000],\n [5250000, 1430580945000],\n [5260000, 1430763266000],\n [5270001, 1430924583000],\n [5280000, 1431154114000],\n [5290000, 1431323463000],\n [5300002, 1431536550000],\n [5310000, 1431780262000],\n [5320000, 1431956743000],\n [5330000, 1432204529000],\n [5340001, 1432398271000],\n [5350006, 1432606153000],\n [5360001, 1432841545000],\n [5370000, 1433063471000],\n [5380003, 1433258662000],\n [5390000, 1433508887000],\n [5400000, 1433685193000],\n [5410001, 1433916258000],\n [5420000, 1434135276000],\n [5430001, 1434333869000],\n [5440001, 1434559422000],\n [5450000, 1434804693000],\n [5460001, 1434979921000],\n [5470000, 1435217857000],\n [5480001, 1435416104000],\n [5490000, 1435602027000],\n [5500001, 1435840850000],\n [5510000, 1436030904000],\n [5520003, 1436227024000],\n [5530000, 1436442515000],\n [5540003, 1436663422000],\n [5550000, 1436874223000],\n [5560001, 1437120062000],\n [5570000, 1437316067000],\n [5580000, 1437494808000],\n [5590000, 1437746039000],\n [5600002, 1437929627000],\n [5610001, 1438176113000],\n [5620000, 1438388870000],\n [5630000, 1438589507000],\n [5640000, 1438796233000],\n [5650000, 1439030571000],\n [5660004, 1439214144000],\n [5670001, 1439431273000],\n [5680000, 1439642569000],\n [5690001, 1439824201000],\n [5700005, 1440058580000],\n [5710000, 1440256699000],\n [5720000, 1440475809000],\n [5730002, 1440689040000],\n [5740000, 1440914751000],\n [5750003, 1441110359000],\n [5760000, 1441364816000],\n [5770000, 1441549697000],\n [5780006, 1441797710000],\n [5790001, 1442037713000],\n [5800002, 1442233888000],\n [5810000, 1442481291000],\n [5820003, 1442705357000],\n [5830000, 1442908303000],\n [5840000, 1443086697000],\n [5850003, 1443282432000],\n [5860000, 1443459310000],\n [5870006, 1443707232000],\n [5880001, 1443928257000],\n [5890001, 1444139874000],\n [5900001, 1444396252000],\n [5910001, 1444577096000],\n [5920000, 1444792260000],\n [5930002, 1445029691000],\n [5940001, 1445245605000],\n [5950000, 1445504572000],\n [5960000, 1445731426000],\n [5970002, 1445953442000],\n [5980000, 1446211281000],\n [5990002, 1446383992000],\n [6000000, 1446580875000],\n [6010003, 1446842203000],\n [6020001, 1447044347000],\n [6030000, 1447253873000],\n [6040000, 1447505627000],\n [6050000, 1447691164000],\n [6060001, 1447947945000],\n [6070005, 1448186860000],\n [6080000, 1448365784000],\n [6090000, 1448624170000],\n [6100002, 1448810246000],\n [6110000, 1449066515000],\n [6120000, 1449317021000],\n [6130002, 1449507406000],\n [6140001, 1449770690000],\n [6150000, 1450002546000],\n [6160000, 1450231069000],\n [6170001, 1450484327000],\n [6180001, 1450692134000],\n [6190000, 1450882802000],\n [6200001, 1451053403000],\n [6210000, 1451234149000],\n [6220003, 1451471784000],\n [6230000, 1451644655000],\n [6240000, 1451713332000],\n [6250000, 1451847328000],\n [6260005, 1452076808000],\n [6270000, 1452299253000],\n [6280000, 1452496401000],\n [6290000, 1452698011000],\n [6300000, 1452951233000],\n [6310000, 1453142080000],\n [6320001, 1453393135000],\n [6330000, 1453616322000],\n [6340001, 1453812318000],\n [6350000, 1454055730000],\n [6360003, 1454238250000],\n [6370000, 1454427033000],\n [6380000, 1454661000000],\n [6390000, 1454842409000],\n [6400000, 1455041335000],\n [6410000, 1455272058000],\n [6420000, 1455429130000],\n [6430000, 1455565696000],\n [6440000, 1455807564000],\n [6450000, 1456029749000],\n [6460000, 1456225146000],\n [6470000, 1456470713000],\n [6480000, 1456663870000],\n [6490003, 1456892356000],\n [6500001, 1457110676000],\n [6510002, 1457312408000],\n [6520000, 1457531526000],\n [6530000, 1457759895000],\n [6540001, 1457945527000],\n [6550000, 1458146778000],\n [6560000, 1458393176000],\n [6570001, 1458570750000],\n [6580000, 1458809559000],\n [6590000, 1459016231000],\n [6600000, 1459238945000],\n [6610000, 1459438183000],\n [6620004, 1459646525000],\n [6630000, 1459854652000],\n [6640001, 1460090525000],\n [6650000, 1460290792000],\n [6660000, 1460548807000],\n [6670000, 1460814501000],\n [6680000, 1461034745000],\n [6690000, 1461309246000],\n [6700004, 1461504246000],\n [6710000, 1461752821000],\n [6720003, 1461973135000],\n [6730001, 1462174879000],\n [6740001, 1462370008000],\n [6750001, 1462548340000],\n [6760000, 1462720908000],\n [6770002, 1462975121000],\n [6780000, 1463232933000],\n [6790007, 1463433933000],\n [6800002, 1463714821000],\n [6810000, 1463920668000],\n [6820000, 1464128839000],\n [6830004, 1464385492000],\n [6840000, 1464599226000],\n [6850001, 1464861239000],\n [6860002, 1465075280000],\n [6870000, 1465297401000],\n [6880001, 1465549772000],\n [6890000, 1465736580000],\n [6900000, 1465964679000],\n [6910001, 1466179197000],\n [6920000, 1466354374000],\n [6930001, 1466603732000],\n [6940002, 1466845739000],\n [6950000, 1467033992000],\n [6960000, 1467284783000],\n [6970001, 1467480681000],\n [6980000, 1467714202000],\n [6990002, 1467914778000],\n [7000001, 1468145606000],\n [7010000, 1468384915000],\n [7020000, 1468639043000],\n [7030001, 1468840463000],\n [7040002, 1469087617000],\n [7050000, 1469337012000],\n [7060002, 1469582162000],\n [7070002, 1469845430000],\n [7080002, 1470060235000],\n [7090000, 1470312128000],\n [7100000, 1470548609000],\n [7110000, 1470754953000],\n [7120000, 1470989043000],\n [7130001, 1471190531000],\n [7140000, 1471414854000],\n [7150004, 1471624400000],\n [7160000, 1471854212000],\n [7170000, 1472088374000],\n [7180002, 1472310616000],\n [7190001, 1472520312000],\n [7200000, 1472738227000],\n [7210002, 1472965256000],\n [7220001, 1473171102000],\n [7230000, 1473424874000],\n [7240001, 1473609515000],\n [7250000, 1473863715000],\n [7260001, 1474116184000],\n [7270003, 1474295985000],\n [7280000, 1474535039000],\n [7290000, 1474737285000],\n [7300000, 1474975696000],\n [7310000, 1475234975000],\n [7320000, 1475421025000],\n [7330001, 1475671020000],\n [7340001, 1475911455000],\n [7350005, 1476103986000],\n [7360002, 1476361587000],\n [7370000, 1476599211000],\n [7380001, 1476815745000],\n [7390000, 1477099543000],\n [7400000, 1477316178000],\n [7410001, 1477579038000],\n [7420003, 1477818419000],\n [7430002, 1478011264000],\n [7440000, 1478264690000],\n [7450002, 1478480338000],\n [7460006, 1478769027000],\n [7470001, 1478994247000],\n [7480000, 1479219274000],\n [7490000, 1479486058000],\n [7500002, 1479730140000],\n [7510003, 1479958570000],\n [7520003, 1480222232000],\n [7530001, 1480471579000],\n [7540000, 1480749927000],\n [7550000, 1480952230000],\n [7560000, 1481224069000],\n [7570001, 1481463117000],\n [7580000, 1481722387000],\n [7590002, 1481985058000],\n [7600001, 1482227418000],\n [7610001, 1482478601000],\n [7620000, 1482645299000],\n [7630003, 1482841839000],\n [7640001, 1483074183000],\n [7650000, 1483258759000],\n [7660004, 1483452663000],\n [7670000, 1483674720000],\n [7680002, 1483879318000],\n [7690000, 1484064960000],\n [7700000, 1484322340000],\n [7710000, 1484542900000],\n [7720000, 1484812130000],\n [7730001, 1485026320000],\n [7740000, 1485257233000],\n [7750006, 1485510790000],\n [7760000, 1485696491000],\n [7770000, 1485932317000],\n [7780000, 1486164673000],\n [7790001, 1486362226000],\n [7800000, 1486599658000],\n [7810000, 1486822612000],\n [7820001, 1487000522000],\n [7830000, 1487174999000],\n [7840000, 1487419341000],\n [7850000, 1487602867000],\n [7860000, 1487855018000],\n [7870000, 1488086339000],\n [7880000, 1488292733000],\n [7890001, 1488543208000],\n [7900000, 1488728156000],\n [7910001, 1488979685000],\n [7920001, 1489220616000],\n [7930000, 1489412693000],\n [7940003, 1489631325000],\n [7950001, 1489848873000],\n [7960000, 1490044638000],\n [7970002, 1490279983000],\n [7980001, 1490516089000],\n [7990001, 1490719990000],\n [8000000, 1490963479000],\n [8010000, 1491137084000],\n [8020002, 1491375868000],\n [8030000, 1491612912000],\n [8040001, 1491803454000],\n [8050001, 1492077857000],\n [8060002, 1492324560000],\n [8070003, 1492561737000],\n [8080002, 1492838030000],\n [8090002, 1493043924000],\n [8100001, 1493307660000],\n [8110002, 1493543878000],\n [8120000, 1493769888000],\n [8130004, 1493982506000],\n [8140000, 1494142350000],\n [8150001, 1494318814000],\n [8160000, 1494568833000],\n [8170000, 1494762677000],\n [8180002, 1495006227000],\n [8190000, 1495250700000],\n [8200000, 1495443298000],\n [8210002, 1495646825000],\n [8220011, 1495894082000],\n [8230000, 1496082134000],\n [8240000, 1496326810000],\n [8250000, 1496555088000],\n [8260000, 1496756385000],\n [8270000, 1497007056000],\n [8280001, 1497183503000],\n [8290002, 1497397397000],\n [8300003, 1497629360000],\n [8310000, 1497796088000],\n [8320000, 1498023980000],\n [8330001, 1498235560000],\n [8340001, 1498396394000],\n [8350000, 1498613161000],\n [8360001, 1498837786000],\n [8370000, 1499015731000],\n [8380001, 1499265524000],\n [8390002, 1499481547000],\n [8400001, 1499686732000],\n [8410005, 1499932800000],\n [8420001, 1500169609000],\n [8430000, 1500374791000],\n [8440006, 1500617656000],\n [8450000, 1500814972000],\n [8460003, 1501039768000],\n [8470000, 1501277295000],\n [8480001, 1501477676000],\n [8490000, 1501697581000],\n [8500002, 1501932379000],\n [8510000, 1502117905000],\n [8520002, 1502331968000],\n [8530000, 1502540146000],\n [8540000, 1502722627000],\n [8550001, 1502898202000],\n [8560004, 1503134037000],\n [8570003, 1503323268000],\n [8580002, 1503521778000],\n [8590002, 1503744984000],\n [8600000, 1503928192000],\n [8610000, 1504170146000],\n [8620000, 1504371768000],\n [8630002, 1504602602000],\n [8640004, 1504820812000],\n [8650000, 1505027878000],\n [8660001, 1505226480000],\n [8670000, 1505482045000],\n [8680000, 1505658395000],\n [8690000, 1505834586000],\n [8700001, 1506089466000],\n [8710000, 1506264067000],\n [8720000, 1506500571000],\n [8730002, 1506728331000],\n [8740000, 1506914687000],\n [8750000, 1507128072000],\n [8760000, 1507345605000],\n [8770000, 1507518334000],\n [8780000, 1507708428000],\n [8790001, 1507940275000],\n [8800002, 1508138851000],\n [8810000, 1508387594000],\n [8820000, 1508606774000],\n [8830000, 1508827234000],\n [8840001, 1509091766000],\n [8850004, 1509287015000],\n [8860000, 1509490049000],\n [8870000, 1509723653000],\n [8880000, 1509932817000],\n [8890002, 1510207133000],\n [8900004, 1510424299000],\n [8910000, 1510667493000],\n [8920001, 1510940639000],\n [8930000, 1511186220000],\n [8940000, 1511451946000],\n [8950000, 1511704396000],\n [8960000, 1511990454000],\n [8970002, 1512274717000],\n [8980000, 1512537099000],\n [8990000, 1512820550000],\n [9000001, 1513072801000],\n [9010001, 1513357525000],\n [9020000, 1513609923000],\n [9030000, 1513915128000],\n [9040000, 1514118493000],\n [9050002, 1514301843000],\n [9060000, 1514555378000],\n [9070000, 1514732301000],\n [9080001, 1514962790000],\n [9090001, 1515172312000],\n [9100002, 1515397618000],\n [9110000, 1515639717000],\n [9120002, 1515896492000],\n [9130001, 1516144113000],\n [9140000, 1516418097000],\n [9150001, 1516626163000],\n [9160001, 1516883176000],\n [9170001, 1517111440000],\n [9180000, 1517325014000],\n [9190000, 1517578594000],\n [9200001, 1517757784000],\n [9210001, 1518010671000],\n [9220000, 1518256808000],\n [9230005, 1518430798000],\n [9240001, 1518605600000],\n [9250000, 1518794113000],\n [9260001, 1518995823000],\n [9270000, 1519225213000],\n [9280003, 1519458758000],\n [9290001, 1519651282000],\n [9300001, 1519890063000],\n [9310000, 1520090182000],\n [9320000, 1520286849000],\n [9330001, 1520520452000],\n [9340000, 1520744294000],\n [9350002, 1520943868000],\n [9360001, 1521147293000],\n [9370002, 1521362086000],\n [9380000, 1521558925000],\n [9390001, 1521769563000],\n [9400001, 1521973588000],\n [9410000, 1522173272000],\n [9420000, 1522410936000],\n [9430000, 1522582869000],\n [9440000, 1522765509000],\n [9450000, 1523004539000],\n [9460000, 1523190018000],\n [9470000, 1523431728000],\n [9480000, 1523685971000],\n [9490002, 1523878396000],\n [9500002, 1524128292000],\n [9510004, 1524330609000],\n [9520004, 1524533838000],\n [9530000, 1524759003000],\n [9540000, 1524987989000],\n [9550001, 1525164608000],\n [9560002, 1525357365000],\n [9570003, 1525528111000],\n [9580002, 1525674935000],\n [9590000, 1525878167000],\n [9600000, 1526120272000],\n [9610000, 1526290836000],\n [9620000, 1526490579000],\n [9630000, 1526727803000],\n [9640000, 1526907002000],\n [9650002, 1527128556000],\n [9660000, 1527340038000],\n [9670001, 1527517920000],\n [9680002, 1527765780000],\n [9690002, 1527957463000],\n [9700000, 1528151574000],\n [9710000, 1528379137000],\n [9720000, 1528580383000],\n [9730001, 1528772398000],\n [9740001, 1528987967000],\n [9750000, 1529204175000],\n [9760000, 1529406774000],\n [9770001, 1529609683000],\n [9780000, 1529819612000],\n [9790000, 1530014717000],\n [9800000, 1530245547000],\n [9810002, 1530432261000],\n [9820001, 1530629380000],\n [9830000, 1530874223000],\n [9840000, 1531041319000],\n [9850000, 1531235299000],\n [9860001, 1531486297000],\n [9870000, 1531670196000],\n [9880001, 1531889979000],\n [9890001, 1532135177000],\n [9900000, 1532338734000],\n [9910000, 1532578434000],\n [9920001, 1532787506000],\n [9930000, 1532975363000],\n [9940002, 1533210580000],\n [9950002, 1533417619000],\n [9960000, 1533624914000],\n [9970001, 1533822046000],\n [9980000, 1534037713000],\n [9990000, 1534228523000],\n [10000000, 1534413149000],\n [10010001, 1534602898000],\n [10020000, 1534783503000],\n [10030000, 1535021938000],\n [10040001, 1535212003000],\n [10050000, 1535428390000],\n [10060003, 1535641964000],\n [10070001, 1535858219000],\n [10080001, 1536054602000],\n [10090000, 1536289206000],\n [10100000, 1536480473000],\n [10110000, 1536676444000],\n [10120000, 1536926627000],\n [10130002, 1537109324000],\n [10140002, 1537291222000],\n [10150000, 1537542002000],\n [10160001, 1537742745000],\n [10170000, 1537951046000],\n [10180001, 1538191192000],\n [10190000, 1538335437000],\n [10200000, 1538573831000],\n [10210000, 1538809742000],\n [10220001, 1538988459000],\n [10230001, 1539181117000],\n [10240000, 1539420771000],\n [10250000, 1539603667000],\n [10260000, 1539849223000],\n [10270001, 1540053876000],\n [10280002, 1540283911000],\n [10290000, 1540536175000],\n [10300001, 1540729543000],\n [10310000, 1540922544000],\n [10320000, 1541154968000],\n [10330000, 1541337866000],\n [10340001, 1541577224000],\n [10350000, 1541802693000],\n [10360000, 1541963072000],\n [10370000, 1542202693000],\n [10380000, 1542444218000],\n [10390000, 1542627147000],\n [10400000, 1542839314000],\n [10410000, 1543047446000],\n [10420001, 1543235621000],\n [10430000, 1543484894000],\n [10440000, 1543685077000],\n [10450000, 1543913221000],\n [10460000, 1544159482000],\n [10470003, 1544358248000],\n [10480004, 1544606237000],\n [10490002, 1544855404000],\n [10500000, 1545051752000],\n [10510000, 1545300827000],\n [10520005, 1545521938000],\n [10530000, 1545661181000],\n [10540000, 1545834409000],\n [10550000, 1546063345000],\n [10560000, 1546244119000],\n [10570000, 1546421525000],\n [10580000, 1546614293000],\n [10590000, 1546787040000],\n [10600000, 1547033210000],\n [10610000, 1547273443000],\n [10620006, 1547455616000],\n [10630000, 1547657448000],\n [10640000, 1547904630000],\n [10650001, 1548082511000],\n [10660000, 1548328452000],\n [10670000, 1548524147000],\n [10680000, 1548734159000],\n [10690000, 1548948502000],\n [10700000, 1549167894000],\n [10710000, 1549362890000],\n [10720000, 1549582063000],\n [10730001, 1549784961000],\n [10740000, 1549939861000],\n [10750001, 1550125895000],\n [10760001, 1550285616000],\n [10770000, 1550431490000],\n [10780004, 1550660401000],\n [10790000, 1550851727000],\n [10800000, 1551023024000],\n [10810000, 1551259433000],\n [10820002, 1551458705000],\n [10830001, 1551629225000],\n [10840002, 1551870373000],\n [10850001, 1552064671000],\n [10860000, 1552234630000],\n [10870002, 1552471261000],\n [10880000, 1552662209000],\n [10890000, 1552836681000],\n [10900002, 1553069704000],\n [10910000, 1553257072000],\n [10920000, 1553422366000],\n [10930000, 1553606730000],\n [10940001, 1553802181000],\n [10950000, 1553998231000],\n [10960000, 1554134490000],\n [10970002, 1554360751000],\n [10980000, 1554554642000],\n [10990000, 1554735834000],\n [11000000, 1554991576000],\n [11010001, 1555218769000],\n [11020000, 1555420366000],\n [11030000, 1555672640000],\n [11040001, 1555849807000],\n [11050001, 1556084207000],\n [11060000, 1556299720000],\n [11070000, 1556504671000],\n [11080001, 1556632398000],\n [11090000, 1556782396000],\n [11100002, 1556955999000],\n [11110000, 1557106544000],\n [11120000, 1557296907000],\n [11130000, 1557514210000],\n [11140000, 1557684014000],\n [11150001, 1557925678000],\n [11160001, 1558170113000],\n [11170000, 1558354050000],\n [11180001, 1558597755000],\n [11190000, 1558792328000],\n [11200001, 1558975623000],\n [11210000, 1559221084000],\n [11220009, 1559435114000],\n [11230001, 1559636873000],\n [11240000, 1559873390000],\n [11250001, 1560067885000],\n [11260002, 1560253598000],\n [11270000, 1560479047000],\n [11280000, 1560672273000],\n [11290000, 1560863233000],\n [11300003, 1561102493000],\n [11310000, 1561287305000],\n [11320000, 1561489991000],\n [11330000, 1561731006000],\n [11340000, 1561903335000],\n [11350000, 1562136969000],\n [11360001, 1562344828000],\n [11370000, 1562510422000],\n [11380000, 1562736164000],\n [11390000, 1562948007000],\n [11400000, 1563125661000],\n [11410001, 1563328806000],\n [11420000, 1563546056000],\n [11430000, 1563724029000],\n [11440003, 1563963216000],\n [11450001, 1564167040000],\n [11460001, 1564335184000],\n [11470001, 1564568121000],\n [11480000, 1564760362000],\n [11490005, 1564962205000],\n [11500000, 1565179291000],\n [11510000, 1565367541000],\n [11520001, 1565572757000],\n [11530000, 1565747468000],\n [11540000, 1565914332000],\n [11550002, 1566091110000],\n [11560000, 1566252215000],\n [11570001, 1566459388000],\n [11580001, 1566648694000],\n [11590000, 1566824198000],\n [11600001, 1567013191000],\n [11610000, 1567228025000],\n [11620001, 1567393806000],\n [11630001, 1567606734000],\n [11640000, 1567835845000],\n [11650001, 1568012646000],\n [11660000, 1568212823000],\n [11670000, 1568435781000],\n [11680003, 1568605425000],\n [11690002, 1568787569000],\n [11700002, 1568989756000],\n [11710000, 1569163036000],\n [11720003, 1569334820000],\n [11730000, 1569574593000],\n [11740000, 1569752468000],\n [11750000, 1569935750000],\n [11760000, 1570150966000],\n [11770000, 1570332151000],\n [11780000, 1570509507000],\n [11790003, 1570715608000],\n [11800003, 1570888809000],\n [11810000, 1571034246000],\n [11820001, 1571216151000],\n [11830000, 1571419097000],\n [11840000, 1571584069000],\n [11850001, 1571757789000],\n [11860001, 1571993843000],\n [11870001, 1572169847000],\n [11880002, 1572357033000],\n [11890000, 1572533610000],\n [11900000, 1572715665000],\n [11910000, 1572878846000],\n [11920000, 1573112560000],\n [11930000, 1573308611000],\n [11940000, 1573474898000],\n [11950000, 1573661969000],\n [11960000, 1573890077000],\n [11970001, 1574075552000],\n [11980000, 1574297595000],\n [11990004, 1574507058000],\n [12000000, 1574681239000],\n [12010000, 1574895129000],\n [12020000, 1575113068000],\n [12030004, 1575288871000],\n [12040000, 1575515481000],\n [12050000, 1575722999000],\n [12060000, 1575900754000],\n [12070000, 1576138200000],\n [12080001, 1576334837000],\n [12090001, 1576511372000],\n [12100000, 1576752334000],\n [12110000, 1576943163000],\n [12120000, 1577116967000],\n [12130001, 1577281370000],\n [12140000, 1577461695000],\n [12150000, 1577646401000],\n [12160000, 1577796064000],\n [12170001, 1577957614000],\n [12180001, 1578127602000],\n [12190001, 1578279558000],\n [12200000, 1578477602000],\n [12210000, 1578666504000],\n [12220000, 1578839347000],\n [12230000, 1579008316000],\n [12240000, 1579227285000],\n [12250002, 1579415678000],\n [12260003, 1579607375000],\n [12270000, 1579805432000],\n [12280000, 1580008380000],\n [12290002, 1580191030000],\n [12300000, 1580389984000],\n [12310001, 1580566786000],\n [12320003, 1580730297000],\n [12330000, 1580915887000],\n [12340001, 1581129374000],\n [12350001, 1581261750000],\n [12360000, 1581430178000],\n [12370000, 1581606681000],\n [12380000, 1581751510000],\n [12390001, 1581868909000],\n [12400000, 1582069408000],\n [12410001, 1582272103000],\n [12420003, 1582429352000],\n [12430000, 1582554250000],\n [12440000, 1582738718000],\n [12450004, 1582951392000],\n [12460000, 1583070874000],\n [12470002, 1583235146000],\n [12480001, 1583402022000],\n [12490003, 1583559433000],\n [12500000, 1583673315000],\n [12510000, 1583825446000],\n [12520002, 1583980204000],\n [12530001, 1584135315000],\n [12540000, 1584263921000],\n [12550000, 1584416516000],\n [12560001, 1584590400000],\n [12570001, 1584744451000],\n [12580000, 1584885405000],\n [12590000, 1585058908000],\n [12600002, 1585236381000],\n [12610000, 1585399742000],\n [12620000, 1585517492000],\n [12630001, 1585669259000],\n [12640000, 1585828423000],\n [12650000, 1585989472000],\n [12660003, 1586098998000],\n [12670001, 1586269270000],\n [12680000, 1586438019000],\n [12690001, 1586591555000],\n [12700000, 1586695382000],\n [12710003, 1586836653000],\n [12720001, 1586971750000],\n [12730000, 1587131198000],\n [12740003, 1587258788000],\n [12750000, 1587373867000],\n [12760000, 1587488314000],\n [12770000, 1587641662000],\n [12780000, 1587781045000],\n [12790000, 1587893479000],\n [12800000, 1588002355000],\n [12810001, 1588148020000],\n [12820000, 1588261459000],\n [12830000, 1588405175000],\n [12840000, 1588508532000],\n [12850000, 1588603233000],\n [12860002, 1588689904000],\n [12870001, 1588780404000],\n [12880000, 1588926173000],\n [12890001, 1589031515000],\n [12900004, 1589112738000],\n [12910000, 1589198403000],\n [12920000, 1589338200000],\n [12930000, 1589463502000],\n [12940000, 1589580481000],\n [12950000, 1589690404000],\n [12960003, 1589796092000],\n [12970000, 1589904983000],\n [12980000, 1590056583000],\n [12990001, 1590174208000],\n [13000000, 1590293031000],\n [13010000, 1590402693000],\n [13020000, 1590542113000],\n [13030000, 1590673782000],\n [13040000, 1590817020000],\n [13050000, 1590921816000],\n [13060000, 1591050960000],\n [13070003, 1591197055000],\n [13080001, 1591357890000],\n [13090001, 1591464609000],\n [13100000, 1591588831000],\n [13110001, 1591714925000],\n [13120001, 1591874091000],\n [13130000, 1592018956000],\n [13140000, 1592127066000],\n [13150003, 1592239701000],\n [13160001, 1592403491000],\n [13170000, 1592562322000],\n [13180000, 1592673515000],\n [13190002, 1592805607000],\n [13200003, 1592944390000],\n [13210000, 1593102620000],\n [13220000, 1593261761000],\n [13230000, 1593358849000],\n [13240000, 1593523575000],\n [13250001, 1593691848000],\n [13260001, 1593849928000],\n [13270000, 1593953075000],\n [13280002, 1594098141000],\n [13290000, 1594221705000],\n [13300000, 1594391310000],\n [13310001, 1594528320000],\n [13320000, 1594646658000],\n [13330000, 1594810055000],\n [13340000, 1594974088000],\n [13350000, 1595086699000],\n [13360002, 1595219750000],\n [13370000, 1595373630000],\n [13380004, 1595514554000],\n [13390000, 1595646365000],\n [13400000, 1595752459000],\n [13410003, 1595863524000],\n [13420003, 1596029751000],\n [13430000, 1596194279000],\n [13440000, 1596306883000],\n [13450001, 1596441247000],\n [13460002, 1596593681000],\n [13470002, 1596734690000],\n [13480000, 1596886682000],\n [13490001, 1596987319000],\n [13500000, 1597123137000],\n [13510001, 1597244082000],\n [13520000, 1597387488000],\n [13530000, 1597496781000],\n [13540000, 1597589882000],\n [13550001, 1597746996000],\n [13560000, 1597895740000],\n [13570002, 1598026651000],\n [13580000, 1598162365000],\n [13590002, 1598279240000],\n [13600000, 1598443997000],\n [13610000, 1598608599000],\n [13620003, 1598726042000],\n [13630002, 1598859157000],\n [13640001, 1598978674000],\n [13650001, 1599140606000],\n [13660000, 1599296267000],\n [13670000, 1599398967000],\n [13680001, 1599550784000],\n [13690000, 1599701636000],\n [13700000, 1599841328000],\n [13710000, 1599975477000],\n [13720001, 1600089113000],\n [13730000, 1600252766000],\n [13740001, 1600416357000],\n [13750001, 1600532583000],\n [13760002, 1600665853000],\n [13770000, 1600769092000],\n [13780000, 1600891369000],\n [13790004, 1601046381000],\n [13800000, 1601178160000],\n [13810000, 1601294975000],\n [13820002, 1601457229000],\n [13830001, 1601618680000],\n [13840000, 1601742168000],\n [13850001, 1601888032000],\n [13860001, 1602053063000],\n [13870001, 1602229323000],\n [13880001, 1602343999000],\n [13890000, 1602487521000],\n [13900000, 1602647496000],\n [13910000, 1602824568000],\n [13920000, 1602952732000],\n [13930000, 1603099598000],\n [13940001, 1603269016000],\n [13950001, 1603431520000],\n [13960000, 1603553517000],\n [13970000, 1603683799000],\n [13980001, 1603825799000],\n [13990000, 1603990293000],\n [14000000, 1604141441000],\n [14010000, 1604239538000],\n [14020002, 1604392582000],\n [14030001, 1604547728000],\n [14040000, 1604710282000],\n [14050002, 1604831865000],\n [14060001, 1604978794000],\n [14070003, 1605111829000],\n [14080000, 1605281377000],\n [14090000, 1605426595000],\n [14100000, 1605544081000],\n [14110001, 1605710566000],\n [14120000, 1605878130000],\n [14130000, 1606009270000],\n [14140000, 1606110664000],\n [14150000, 1606228059000],\n [14160000, 1606395766000],\n [14170000, 1606550198000],\n [14180000, 1606655608000],\n [14190005, 1606811213000],\n [14200001, 1606977488000],\n [14210000, 1607132673000],\n [14220002, 1607254867000],\n [14230000, 1607408548000],\n [14240000, 1607578193000],\n [14250000, 1607731193000],\n [14260000, 1607855866000],\n [14270001, 1608015495000],\n [14280000, 1608188196000],\n [14290000, 1608344622000],\n [14300001, 1608467026000],\n [14310000, 1608631924000],\n [14320001, 1608787087000],\n [14330001, 1608900065000],\n [14340004, 1609032182000],\n [14350001, 1609157888000],\n [14360002, 1609289135000],\n [14370000, 1609392601000],\n [14380004, 1609477161000],\n [14390000, 1609591619000],\n [14400000, 1609687852000],\n [14410000, 1609831223000],\n [14420001, 1609957660000],\n [14430000, 1610118005000],\n [14440000, 1610261298000],\n [14450000, 1610366620000],\n [14460000, 1610524924000],\n [14470000, 1610684778000],\n [14480001, 1610809189000],\n [14490000, 1610930924000],\n [14500000, 1611076353000],\n [14510000, 1611244136000],\n [14520000, 1611399289000],\n [14530001, 1611494532000],\n [14540000, 1611645230000],\n [14550001, 1611779802000],\n [14560000, 1611929597000],\n [14570000, 1612053001000],\n [14580000, 1612159145000],\n [14590000, 1612284409000],\n [14600002, 1612445935000],\n [14610002, 1612594878000],\n [14620000, 1612696360000],\n [14630000, 1612822111000],\n [14640002, 1612968761000],\n [14650000, 1613108310000],\n [14660000, 1613224941000],\n [14670000, 1613306449000],\n [14680003, 1613406134000],\n [14690002, 1613567319000],\n [14700001, 1613724799000],\n [14710001, 1613833209000],\n [14720002, 1613937109000],\n [14730000, 1614073989000],\n [14740000, 1614203006000],\n [14750000, 1614348178000],\n [14760000, 1614475529000],\n [14770000, 1614583382000],\n [14780001, 1614704431000],\n [14790001, 1614865547000],\n [14800000, 1615013503000],\n [14810000, 1615118546000],\n [14820001, 1615260353000],\n [14830000, 1615392435000],\n [14840001, 1615554134000],\n [14850000, 1615656736000],\n [14860000, 1615777688000],\n [14870000, 1615909277000],\n [14880000, 1616074253000],\n [14890000, 1616225241000],\n [14900000, 1616329884000],\n [14910001, 1616479813000],\n [14920001, 1616639805000],\n [14930000, 1616776543000],\n [14940000, 1616919064000],\n [14950001, 1617033405000],\n [14960000, 1617192850000],\n [14970000, 1617324478000],\n [14980000, 1617457126000],\n [14990001, 1617560471000],\n [15000000, 1617721110000],\n [15010000, 1617890905000],\n [15020001, 1618051846000],\n [15030000, 1618154216000],\n [15040001, 1618325640000],\n [15050000, 1618498930000],\n [15060000, 1618661401000],\n [15070000, 1618759507000],\n [15080000, 1618927949000],\n [15090000, 1619101646000],\n [15100003, 1619267671000],\n [15110001, 1619366377000],\n [15120000, 1619539865000],\n [15130001, 1619698940000],\n [15140000, 1619841193000],\n [15150000, 1619952445000],\n [15160001, 1620053070000],\n [15170000, 1620147984000],\n [15180001, 1620264427000],\n [15190000, 1620408103000],\n [15200001, 1620542441000],\n [15210000, 1620656347000],\n [15220002, 1620827018000],\n [15230002, 1620996871000],\n [15240001, 1621125933000],\n [15250005, 1621247716000],\n [15260000, 1621414260000],\n [15270000, 1621576564000],\n [15280004, 1621693448000],\n [15290001, 1621784663000],\n [15300001, 1621944874000],\n [15310000, 1622111419000],\n [15320000, 1622262907000],\n [15330001, 1622368908000],\n [15340001, 1622490000000],\n [15350000, 1622646046000],\n [15360000, 1622811317000],\n [15370000, 1622934001000],\n [15380000, 1623050332000],\n [15390002, 1623204454000],\n [15400001, 1623345615000],\n [15410000, 1623499760000],\n [15420000, 1623596380000],\n [15430000, 1623754940000],\n [15440000, 1623917063000],\n [15450006, 1624062216000],\n [15460000, 1624173519000],\n [15470000, 1624285944000],\n [15480001, 1624446884000],\n [15490001, 1624611602000],\n [15500001, 1624721981000],\n [15510000, 1624848973000],\n [15520000, 1624987994000],\n [15530000, 1625149123000],\n [15540001, 1625305857000],\n [15550000, 1625407992000],\n [15560001, 1625570458000],\n [15570000, 1625708289000],\n [15580001, 1625846024000],\n [15590000, 1625983462000],\n [15600000, 1626102253000],\n [15610000, 1626268263000],\n [15620001, 1626435982000],\n [15630000, 1626571357000],\n [15640000, 1626697635000],\n [15650000, 1626859260000],\n [15660001, 1626984401000],\n [15670001, 1627121694000],\n [15680000, 1627222279000],\n [15690000, 1627377515000],\n [15700001, 1627534685000],\n [15710002, 1627667668000],\n [15720000, 1627799205000],\n [15730001, 1627916409000],\n [15740002, 1628077710000],\n [15750001, 1628239296000],\n [15760000, 1628352705000],\n [15770000, 1628478255000],\n [15780001, 1628594784000],\n [15790001, 1628735344000],\n [15800001, 1628858188000],\n [15810000, 1628957693000],\n [15820000, 1629072598000],\n [15830000, 1629203998000],\n [15840000, 1629345639000],\n [15850000, 1629469386000],\n [15860002, 1629589331000],\n [15870000, 1629705588000],\n [15880000, 1629823753000],\n [15890001, 1629980009000],\n [15900001, 1630116572000],\n [15910000, 1630221709000],\n [15920000, 1630329553000],\n [15930000, 1630470444000],\n [15940001, 1630596817000],\n [15950000, 1630742907000],\n [15960000, 1630841882000],\n [15970000, 1630949694000],\n [15980000, 1631107604000],\n [15990001, 1631258037000],\n [16000000, 1631368076000],\n [16010001, 1631459740000],\n [16020000, 1631616392000],\n [16030000, 1631759130000],\n [16040000, 1631890364000],\n [16050002, 1632006000000],\n [16060000, 1632113580000],\n [16070000, 1632224017000],\n [16080000, 1632357039000],\n [16090000, 1632479964000],\n [16100002, 1632584915000],\n [16110000, 1632693601000],\n [16120001, 1632837146000],\n [16130001, 1632992269000],\n [16140000, 1633103302000],\n [16150000, 1633236036000],\n [16160000, 1633351627000],\n [16170000, 1633510429000],\n [16180001, 1633670463000],\n [16190000, 1633787504000],\n [16200000, 1633879002000],\n [16210000, 1634036463000],\n [16220000, 1634190311000],\n [16230000, 1634316909000],\n [16240001, 1634449090000],\n [16250001, 1634564297000],\n [16260000, 1634731148000],\n [16270000, 1634894514000],\n [16280001, 1635006911000],\n [16290000, 1635146973000],\n [16300000, 1635296235000],\n [16310001, 1635438801000],\n [16320000, 1635596200000],\n [16330000, 1635683945000],\n [16340001, 1635813965000],\n [16350000, 1635944185000],\n [16360001, 1636104318000],\n [16370000, 1636216125000],\n [16380001, 1636349708000],\n [16390000, 1636485778000],\n [16400000, 1636633126000],\n [16410000, 1636775436000],\n [16420000, 1636887831000],\n [16430000, 1637035157000],\n [16440000, 1637202106000],\n [16450000, 1637344438000],\n [16460000, 1637480688000],\n [16470001, 1637592913000],\n [16480002, 1637739009000],\n [16490000, 1637904942000],\n [16500000, 1638026842000],\n [16510000, 1638162888000],\n [16520000, 1638292148000],\n [16530000, 1638458030000],\n [16540002, 1638615167000],\n [16550000, 1638714393000],\n [16560000, 1638876409000],\n [16570000, 1639040028000],\n [16580000, 1639187217000],\n [16590000, 1639307662000],\n [16600000, 1639454477000],\n [16610000, 1639627185000],\n [16620000, 1639779710000],\n [16630000, 1639907263000],\n [16640003, 1640056572000],\n [16650000, 1640195488000],\n [16660000, 1640347206000],\n [16670002, 1640441258000],\n [16680000, 1640558659000],\n [16690000, 1640704773000],\n [16700000, 1640851001000],\n [16710000, 1640944416000],\n [16720000, 1641034407000],\n [16730001, 1641145162000],\n [16740001, 1641287228000],\n [16750001, 1641432930000],\n [16760000, 1641569488000],\n [16770000, 1641714711000],\n [16780000, 1641819617000],\n [16790000, 1641976092000],\n [16800002, 1642135341000],\n [16810000, 1642258816000],\n [16820000, 1642376854000],\n [16830000, 1642522447000],\n [16840000, 1642692211000],\n [16850001, 1642848145000],\n [16860001, 1642946066000],\n [16870006, 1643104274000],\n [16880000, 1643256755000],\n [16890000, 1643383270000],\n [16900001, 1643513558000],\n [16910000, 1643624822000],\n [16920000, 1643761593000],\n [16930000, 1643897518000],\n [16940001, 1644046689000],\n [16950000, 1644148988000],\n [16960000, 1644292691000],\n [16970000, 1644424029000],\n [16980001, 1644571875000],\n [16990000, 1644672859000],\n [17000000, 1644761982000],\n [17010001, 1644848140000],\n [17020000, 1644994685000],\n [17030000, 1645143682000],\n [17040000, 1645269253000],\n [17050001, 1645357332000],\n [17060001, 1645465591000],\n [17070000, 1645604057000],\n [17080001, 1645725342000],\n [17090000, 1645877056000],\n [17100000, 1645972181000],\n [17110000, 1646124672000],\n [17120000, 1646276532000],\n [17130000, 1646407396000],\n [17140000, 1646535918000],\n [17150000, 1646650916000],\n [17160001, 1646804197000],\n [17170001, 1646946167000],\n [17180000, 1647084906000],\n [17190000, 1647182489000],\n [17200000, 1647314276000],\n [17210000, 1647447683000],\n [17220000, 1647607726000],\n [17230002, 1647721896000],\n [17240000, 1647838182000],\n [17250000, 1647954518000],\n [17260001, 1648112167000],\n [17270000, 1648244365000],\n [17280000, 1648363832000],\n [17290002, 1648479018000],\n [17300000, 1648637593000],\n [17310000, 1648744721000],\n [17320000, 1648882125000],\n [17330001, 1648989613000],\n [17340001, 1649121083000],\n [17350002, 1649258940000],\n [17360000, 1649424449000],\n [17370000, 1649558056000],\n [17380002, 1649679221000],\n [17390000, 1649848546000],\n [17400000, 1650014854000],\n [17410001, 1650127780000],\n [17420000, 1650265614000],\n [17430000, 1650415187000],\n [17440000, 1650565548000],\n [17450000, 1650718660000],\n [17460000, 1650817714000],\n [17470000, 1650980883000],\n [17480001, 1651147321000],\n [17490000, 1651256656000],\n [17500000, 1651380792000],\n [17510000, 1651497322000],\n [17520000, 1651636671000],\n [17530000, 1651742579000],\n [17540001, 1651852590000],\n [17550000, 1651980986000],\n [17560000, 1652097812000],\n [17570000, 1652258339000],\n [17580000, 1652418951000],\n [17590000, 1652537092000],\n [17600000, 1652648521000],\n [17610000, 1652798828000],\n [17620000, 1652966576000],\n [17630000, 1653120396000],\n [17640000, 1653224595000],\n [17650000, 1653366436000],\n [17660000, 1653503365000],\n [17670000, 1653662025000],\n [17680002, 1653797175000],\n [17690001, 1653916799000],\n [17700000, 1654083042000],\n [17710000, 1654250603000],\n [17720001, 1654366796000],\n [17730000, 1654500942000],\n [17740000, 1654659950000],\n [17750000, 1654795307000],\n [17760001, 1654949442000],\n [17770000, 1655049498000],\n [17780000, 1655209018000],\n [17790000, 1655371763000],\n [17800000, 1655523056000],\n [17810000, 1655635213000],\n [17820000, 1655777166000],\n [17830001, 1655925251000],\n [17840000, 1656082802000],\n [17850000, 1656223265000],\n [17860001, 1656347789000],\n [17870000, 1656519562000],\n [17880000, 1656686470000],\n [17890001, 1656823962000],\n [17900000, 1656943371000],\n [17910000, 1657110378000],\n [17920000, 1657261432000],\n [17930000, 1657389177000],\n [17940000, 1657537359000],\n [17950001, 1657703351000],\n [17960001, 1657862126000],\n [17970000, 1657982775000],\n [17980000, 1658107869000],\n [17990000, 1658231351000],\n [18000000, 1658390432000],\n [18010000, 1658529832000],\n [18020000, 1658657110000],\n [18030000, 1658786587000],\n [18040000, 1658931410000],\n [18050000, 1659090621000],\n [18060002, 1659210315000],\n [18070000, 1659342601000],\n [18080000, 1659490247000],\n [18090000, 1659623847000],\n [18100000, 1659771081000],\n [18110000, 1659878153000],\n [18120000, 1660020634000],\n [18130000, 1660135471000],\n [18140000, 1660271287000],\n [18150000, 1660392085000],\n [18160000, 1660493452000],\n [18170001, 1660634551000],\n [18180001, 1660751722000],\n [18190001, 1660907787000],\n [18200000, 1661015264000],\n [18210001, 1661154293000],\n [18220000, 1661296680000],\n [18230000, 1661441105000],\n [18240000, 1661594422000],\n [18250000, 1661697793000],\n [18260000, 1661860267000],\n [18270000, 1662006107000],\n [18280000, 1662153346000],\n [18290000, 1662284110000],\n [18300000, 1662417637000],\n [18310001, 1662564937000],\n [18320000, 1662732210000],\n [18330000, 1662864886000],\n [18340000, 1662989323000],\n [18350000, 1663157286000],\n [18360001, 1663325776000],\n [18370001, 1663457990000],\n [18380001, 1663569154000],\n [18390000, 1663685381000],\n [18400000, 1663854279000],\n [18410000, 1663986345000],\n [18420002, 1664098955000],\n [18430003, 1664233443000],\n [18440000, 1664381791000],\n [18450000, 1664545903000],\n [18460001, 1664672366000],\n [18470000, 1664797315000],\n [18480000, 1664963327000],\n [18490001, 1665129129000],\n [18500000, 1665249079000],\n [18510000, 1665378101000],\n [18520000, 1665498402000],\n [18530000, 1665666274000],\n [18540000, 1665822906000],\n [18550000, 1665928917000],\n [18560000, 1666091693000],\n [18570000, 1666258710000],\n [18580000, 1666413011000],\n [18590000, 1666525787000],\n [18600000, 1666683378000],\n [18610001, 1666856198000],\n [18620000, 1667012932000],\n [18630001, 1667130397000],\n [18640000, 1667227842000],\n [18650000, 1667391437000],\n [18660000, 1667537375000],\n [18670000, 1667659115000],\n [18680000, 1667778232000],\n [18690000, 1667928642000],\n [18700000, 1668092558000],\n [18710000, 1668243412000],\n [18720000, 1668347270000],\n [18730000, 1668511156000],\n [18740000, 1668681913000],\n [18750000, 1668835345000],\n [18760000, 1668948613000],\n [18770000, 1669107023000],\n [18780001, 1669217357000],\n [18790000, 1669385287000],\n [18800000, 1669521446000],\n [18810000, 1669644488000],\n [18820000, 1669806609000],\n [18830000, 1669969123000],\n [18840000, 1670085906000],\n [18850001, 1670230236000],\n [18860000, 1670388111000],\n [18870000, 1670553568000],\n [18880000, 1670680140000],\n [18890001, 1670803201000],\n [18900000, 1670955818000],\n [18910000, 1671119233000],\n [18920000, 1671281912000],\n [18930000, 1671409195000],\n [18940000, 1671567402000],\n [18950000, 1671721208000],\n [18960000, 1671861312000],\n [18970000, 1671954612000],\n [18980000, 1672061020000],\n [18990001, 1672222393000],\n [19000000, 1672353531000],\n [19010000, 1672467100000],\n [19020000, 1672553764000],\n [19030000, 1672671491000],\n [19040000, 1672808932000],\n [19050000, 1672932463000],\n [19060000, 1673087550000],\n [19070000, 1673193657000],\n [19080000, 1673334059000],\n [19090000, 1673495777000],\n [19100000, 1673631095000],\n [19110000, 1673768998000],\n [19120000, 1673885155000],\n [19130000, 1674054006000],\n [19140000, 1674222465000],\n [19150000, 1674353315000],\n [19160000, 1674473730000],\n [19170001, 1674632979000],\n [19180000, 1674785242000],\n [19190000, 1674912941000],\n [19200000, 1675017226000],\n [19210000, 1675171526000],\n [19220000, 1675332469000],\n [19230000, 1675444750000],\n [19240000, 1675578816000],\n [19250000, 1675692430000],\n [19260000, 1675852157000],\n [19270000, 1675999035000],\n [19280000, 1676117630000],\n [19290000, 1676213750000],\n [19300000, 1676339631000],\n [19310001, 1676450914000],\n [19320000, 1676596485000],\n [19330000, 1676726295000],\n [19340000, 1676824763000],\n [19350000, 1676985136000],\n [19360000, 1677125230000],\n [19370001, 1677247234000],\n [19380000, 1677373760000],\n [19390000, 1677495165000],\n [19400000, 1677633838000],\n [19410000, 1677769224000],\n [19420000, 1677919084000],\n [19430000, 1678019683000],\n [19440001, 1678155656000],\n [19450001, 1678288614000],\n [19460000, 1678449353000],\n [19470000, 1678577300000],\n [19480000, 1678704079000],\n [19490001, 1678828261000],\n [19500000, 1678977066000],\n [19510000, 1679123089000],\n [19520000, 1679232561000],\n [19530001, 1679366629000],\n [19540000, 1679492483000],\n [19550000, 1679650444000],\n [19560000, 1679756408000],\n [19570000, 1679865472000],\n [19580000, 1680010450000],\n [19590000, 1680165108000],\n [19600000, 1680274893000],\n [19610000, 1680386401000],\n [19620000, 1680512613000],\n [19630001, 1680642045000],\n [19640001, 1680788039000],\n [19650000, 1680928729000],\n [19660000, 1681038067000],\n [19670000, 1681176951000],\n [19680000, 1681327167000],\n [19690000, 1681483914000],\n [19700000, 1681613428000],\n [19710000, 1681733363000],\n [19720000, 1681901262000],\n [19730000, 1682061980000],\n [19740000, 1682176670000],\n [19750000, 1682309707000],\n [19760001, 1682466416000],\n [19770000, 1682617585000],\n [19780001, 1682768367000],\n [19790000, 1682866680000],\n [19800000, 1683019738000],\n [19810000, 1683136858000],\n [19820000, 1683268994000],\n [19830000, 1683372201000],\n [19840001, 1683462031000],\n [19850001, 1683603948000],\n [19860000, 1683730620000],\n [19870000, 1683898327000],\n [19880001, 1684024153000],\n [19890000, 1684148452000],\n [19900000, 1684313296000],\n [19910000, 1684469994000],\n [19920002, 1684590680000],\n [19930000, 1684699592000],\n [19940001, 1684851189000],\n [19950000, 1685017223000],\n [19960001, 1685169953000],\n [19970000, 1685278382000],\n [19980000, 1685433556000],\n [19990000, 1685564102000],\n [20000000, 1685716288000],\n [20010003, 1685847463000],\n [20020000, 1685964724000],\n [20030000, 1686119859000],\n [20040000, 1686275819000],\n [20050000, 1686401217000],\n [20060001, 1686496334000],\n [20070001, 1686654781000],\n [20080000, 1686814224000],\n [20090000, 1686958417000],\n [20100000, 1687078105000],\n [20110000, 1687190663000],\n [20120001, 1687355764000],\n [20130000, 1687523522000],\n [20140000, 1687645127000],\n [20150000, 1687774959000],\n [20160000, 1687936267000],\n [20170000, 1688078953000],\n [20180002, 1688208028000],\n [20190000, 1688306045000],\n [20200000, 1688453116000],\n [20210000, 1688598008000],\n [20220000, 1688737374000],\n [20230000, 1688867724000],\n [20240000, 1688988884000],\n [20250001, 1689149214000],\n [20260000, 1689311524000],\n [20270000, 1689433202000],\n [20280000, 1689564424000],\n [20290000, 1689687736000],\n [20300000, 1689856471000],\n [20310000, 1690007766000],\n [20320000, 1690119474000],\n [20330000, 1690271740000],\n [20340000, 1690412997000],\n [20350000, 1690556408000],\n [20360000, 1690695983000],\n [20370000, 1690813374000],\n [20380000, 1690966802000],\n [20390001, 1691109438000],\n [20400000, 1691241419000],\n [20410000, 1691360804000],\n [20420000, 1691498119000],\n [20430001, 1691642753000],\n [20440000, 1691761055000],\n [20450001, 1691887415000],\n [20460000, 1692010504000],\n [20470000, 1692112959000],\n [20480000, 1692255348000],\n [20490000, 1692372791000],\n [20500000, 1692508140000],\n [20510000, 1692624146000],\n [20520000, 1692765923000],\n [20530000, 1692888700000],\n [20540000, 1693038437000],\n [20550000, 1693143069000],\n [20560001, 1693284776000],\n [20570000, 1693409238000],\n [20580000, 1693558804000],\n [20590000, 1693667983000],\n [20600001, 1693801909000],\n [20610000, 1693950411000],\n [20620000, 1694100047000],\n [20630001, 1694257179000],\n [20640000, 1694357698000],\n [20650001, 1694519970000],\n [20660000, 1694683520000],\n [20670000, 1694831389000],\n [20680002, 1694954414000],\n [20690000, 1695056275000],\n [20700001, 1695217826000],\n [20710000, 1695374863000],\n [20720000, 1695482728000],\n [20730000, 1695622806000],\n [20740000, 1695771949000],\n [20750000, 1695917849000],\n [20760000, 1696066366000],\n [20770000, 1696167557000],\n [20780002, 1696333609000],\n [20790001, 1696498978000],\n [20800000, 1696647600000],\n [20810000, 1696769069000],\n [20820000, 1696880989000],\n [20830000, 1697036612000],\n [20840000, 1697205385000],\n [20850000, 1697351378000],\n [20860000, 1697475553000],\n [20870001, 1697647826000],\n [20880000, 1697814223000],\n [20890000, 1697964038000],\n [20900000, 1698114540000],\n [20910000, 1698284373000],\n [20920000, 1698442869000],\n [20930000, 1698575354000],\n [20940000, 1698701279000],\n [20950000, 1698838714000],\n [20960000, 1698999234000],\n [20970001, 1699114399000],\n [20980000, 1699258766000],\n [20990000, 1699425433000],\n [21000000, 1699598512000],\n [21010001, 1699714856000],\n [21020000, 1699857336000],\n [21030002, 1700020188000],\n [21040000, 1700195973000],\n [21050000, 1700322845000],\n [21060000, 1700475217000],\n [21070000, 1700647081000],\n [21080000, 1700787860000],\n [21090000, 1700923757000],\n [21100000, 1701068828000],\n [21110000, 1701228360000],\n [21120001, 1701375951000],\n [21130002, 1701523398000],\n [21140000, 1701654327000],\n [21150000, 1701804625000],\n [21160000, 1701961975000],\n [21170000, 1702121359000],\n [21180000, 1702224558000],\n [21190000, 1702390238000],\n [21200000, 1702559901000],\n [21210000, 1702721469000],\n [21220000, 1702834825000],\n [21230000, 1703001809000],\n [21240001, 1703174055000],\n [21250000, 1703333512000],\n [21260000, 1703427102000],\n [21270001, 1703527561000],\n [21280000, 1703689409000],\n [21290000, 1703848444000],\n [21300001, 1703952652000],\n [21310000, 1704035239000],\n [21320001, 1704184959000],\n [21330000, 1704299117000],\n [21340000, 1704457111000],\n [21350000, 1704591749000],\n [21360000, 1704709211000],\n [21370002, 1704864150000],\n [21380000, 1705033355000],\n [21390000, 1705161084000],\n [21400000, 1705311385000],\n [21410001, 1705480370000],\n [21420000, 1705646826000],\n [21430000, 1705767267000],\n [21440000, 1705911585000],\n [21450000, 1706063572000],\n [21460000, 1706200084000],\n [21470000, 1706359804000],\n [21480000, 1706484417000],\n [21490000, 1706628284000],\n [21500000, 1706787810000],\n [21510000, 1706936708000],\n [21520000, 1707051230000],\n [21530000, 1707203452000],\n [21540000, 1707358202000],\n [21550001, 1707493684000],\n [21560000, 1707632981000],\n [21570000, 1707741391000],\n [21580000, 1707864128000],\n [21590000, 1707983294000],\n [21600001, 1708108861000],\n [21610002, 1708246649000],\n [21620000, 1708362354000],\n [21630000, 1708523363000],\n [21640000, 1708665620000],\n [21650000, 1708777893000],\n [21660000, 1708872340000],\n [21670000, 1709024108000],\n]\n","export const illustsData = [\n [20, 1189343647000],\n [10000, 1190285376000],\n [20006, 1190613767000],\n [30001, 1190901997000],\n [40003, 1191179021000],\n [50004, 1191500729000],\n [60000, 1191759823000],\n [70000, 1192017141000],\n [80000, 1192296354000],\n [90000, 1192548870000],\n [100003, 1192843804000],\n [110000, 1193153408000],\n [120000, 1193485993000],\n [130000, 1193765339000],\n [140003, 1194150173000],\n [150001, 1194467241000],\n [160003, 1194796339000],\n [170000, 1195152402000],\n [180003, 1195485536000],\n [190002, 1195857370000],\n [200000, 1196184465000],\n [210004, 1196522277000],\n [220000, 1196828559000],\n [230000, 1197146134000],\n [240016, 1197455278000],\n [250000, 1197763170000],\n [260000, 1198103280000],\n [270001, 1198395166000],\n [280002, 1198674253000],\n [290000, 1198977560000],\n [300000, 1199330503000],\n [310002, 1199612897000],\n [320004, 1199885562000],\n [330000, 1200159374000],\n [340000, 1200450945000],\n [350005, 1200756520000],\n [360000, 1201025513000],\n [370004, 1201333829000],\n [380000, 1201596101000],\n [390006, 1201873948000],\n [400004, 1202135836000],\n [410003, 1202447870000],\n [420007, 1202718864000],\n [430003, 1202989278000],\n [440000, 1203245126000],\n [450000, 1203510072000],\n [460002, 1203775430000],\n [470001, 1204038291000],\n [480003, 1204299199000],\n [490000, 1204552308000],\n [500002, 1204820237000],\n [510004, 1205065613000],\n [520000, 1205311670000],\n [530009, 1205550410000],\n [540001, 1205766458000],\n [550000, 1205954720000],\n [560001, 1206140135000],\n [570001, 1206322998000],\n [580000, 1206511254000],\n [590005, 1206701143000],\n [600000, 1206881009000],\n [610000, 1207061727000],\n [620000, 1207243644000],\n [630002, 1207434510000],\n [640001, 1207637232000],\n [650001, 1207836760000],\n [660005, 1208020490000],\n [670001, 1208205586000],\n [680002, 1208438014000],\n [690001, 1208621430000],\n [700004, 1208802131000],\n [710007, 1209032196000],\n [720000, 1209218825000],\n [730002, 1209397610000],\n [740003, 1209565351000],\n [750000, 1209741709000],\n [760002, 1209914404000],\n [770000, 1210074595000],\n [780000, 1210252468000],\n [790001, 1210423656000],\n [800005, 1210580882000],\n [810005, 1210756954000],\n [820000, 1210937741000],\n [830000, 1211087983000],\n [840004, 1211236844000],\n [850000, 1211411767000],\n [860003, 1211592338000],\n [870000, 1211724268000],\n [880001, 1211896787000],\n [890000, 1212071744000],\n [900000, 1212240265000],\n [910003, 1212397535000],\n [920001, 1212570167000],\n [930000, 1212743643000],\n [940003, 1212888537000],\n [950001, 1213021904000],\n [960000, 1213191145000],\n [970010, 1213356614000],\n [980000, 1213490592000],\n [990000, 1213625981000],\n [1000000, 1213792360000],\n [1010001, 1213948014000],\n [1020002, 1214066142000],\n [1030000, 1214206483000],\n [1040004, 1214328257000],\n [1050004, 1214488555000],\n [1060000, 1214636988000],\n [1070003, 1214748702000],\n [1080011, 1214904492000],\n [1090000, 1215036636000],\n [1100011, 1215186680000],\n [1110006, 1215322803000],\n [1120006, 1215438170000],\n [1130000, 1215590433000],\n [1140001, 1215708492000],\n [1150000, 1215865334000],\n [1160001, 1215963472000],\n [1170001, 1216117693000],\n [1180001, 1216241875000],\n [1190003, 1216390773000],\n [1200003, 1216522697000],\n [1210010, 1216637029000],\n [1220004, 1216746895000],\n [1230000, 1216894616000],\n [1240001, 1217006818000],\n [1250013, 1217139907000],\n [1260003, 1217251726000],\n [1270003, 1217366045000],\n [1280005, 1217498788000],\n [1290001, 1217605113000],\n [1300002, 1217732126000],\n [1310000, 1217852250000],\n [1320001, 1217956806000],\n [1330000, 1218098038000],\n [1340000, 1218211024000],\n [1350000, 1218344320000],\n [1360003, 1218460214000],\n [1370003, 1218580323000],\n [1380000, 1218713348000],\n [1390001, 1218835149000],\n [1400000, 1218978021000],\n [1410004, 1219086217000],\n [1420005, 1219223973000],\n [1430000, 1219331134000],\n [1440000, 1219461421000],\n [1450000, 1219574536000],\n [1460003, 1219676680000],\n [1470001, 1219797775000],\n [1480000, 1219916216000],\n [1490007, 1220021891000],\n [1500004, 1220118737000],\n [1510007, 1220235399000],\n [1520005, 1220360467000],\n [1530000, 1220465705000],\n [1540005, 1220616937000],\n [1550002, 1220711361000],\n [1560000, 1220798947000],\n [1570000, 1220900621000],\n [1580000, 1221030344000],\n [1590003, 1221138309000],\n [1600001, 1221236989000],\n [1610000, 1221344315000],\n [1620000, 1221452031000],\n [1630009, 1221553447000],\n [1640000, 1221658718000],\n [1650003, 1221757535000],\n [1660006, 1221879285000],\n [1670004, 1221973316000],\n [1680002, 1222068582000],\n [1690002, 1222162793000],\n [1700004, 1222263169000],\n [1710000, 1222365270000],\n [1720000, 1222493935000],\n [1730006, 1222589500000],\n [1740000, 1222690957000],\n [1750006, 1222787660000],\n [1760002, 1222894188000],\n [1770003, 1223028337000],\n [1780000, 1223124745000],\n [1790000, 1223210324000],\n [1800000, 1223305149000],\n [1810000, 1223408306000],\n [1820004, 1223541292000],\n [1830001, 1223645742000],\n [1840003, 1223737145000],\n [1850004, 1223827774000],\n [1860001, 1223913165000],\n [1870001, 1224038216000],\n [1880000, 1224153575000],\n [1890002, 1224253802000],\n [1900005, 1224343693000],\n [1910000, 1224426875000],\n [1920000, 1224524581000],\n [1930000, 1224662433000],\n [1940001, 1224764799000],\n [1950002, 1224865468000],\n [1960008, 1224960411000],\n [1970006, 1225042106000],\n [1980000, 1225168238000],\n [1990000, 1225279658000],\n [2000002, 1225377623000],\n [2010002, 1225468910000],\n [2020002, 1225561524000],\n [2030001, 1225653134000],\n [2040000, 1225734805000],\n [2050002, 1225861022000],\n [2060005, 1225972185000],\n [2070002, 1226068225000],\n [2080002, 1226156629000],\n [2090000, 1226238861000],\n [2100002, 1226332222000],\n [2110001, 1226430234000],\n [2120005, 1226553119000],\n [2130000, 1226661352000],\n [2140000, 1226749829000],\n [2150005, 1226829597000],\n [2160003, 1226921698000],\n [2170001, 1227016838000],\n [2180004, 1227112662000],\n [2190003, 1227258648000],\n [2200001, 1227347281000],\n [2210021, 1227434020000],\n [2220001, 1227514291000],\n [2230004, 1227602927000],\n [2240003, 1227701091000],\n [2250000, 1227797903000],\n [2260001, 1227892579000],\n [2270000, 1227979672000],\n [2280000, 1228058900000],\n [2290000, 1228175237000],\n [2300008, 1228292564000],\n [2310003, 1228393475000],\n [2320002, 1228488496000],\n [2330001, 1228575829000],\n [2340001, 1228656923000],\n [2350005, 1228749831000],\n [2360001, 1228841515000],\n [2370000, 1228945993000],\n [2380009, 1229065515000],\n [2390001, 1229153952000],\n [2400001, 1229227924000],\n [2410003, 1229280540000],\n [2420002, 1229375501000],\n [2430001, 1229477555000],\n [2440005, 1229576902000],\n [2450000, 1229673103000],\n [2460000, 1229761464000],\n [2470002, 1229843101000],\n [2480006, 1229923737000],\n [2490004, 1230006968000],\n [2500004, 1230059526000],\n [2510001, 1230137905000],\n [2520001, 1230219194000],\n [2530001, 1230306089000],\n [2540001, 1230392672000],\n [2550001, 1230480029000],\n [2560002, 1230569639000],\n [2570000, 1230659339000],\n [2580001, 1230737516000],\n [2590003, 1230811927000],\n [2600002, 1230898077000],\n [2610002, 1230980712000],\n [2620001, 1231057356000],\n [2630000, 1231132141000],\n [2640011, 1231205232000],\n [2650004, 1231263657000],\n [2660001, 1231344684000],\n [2670002, 1231429477000],\n [2680003, 1231515785000],\n [2690000, 1231597519000],\n [2700002, 1231675854000],\n [2710000, 1231747570000],\n [2720000, 1231814599000],\n [2730001, 1231910705000],\n [2740000, 1231993040000],\n [2750000, 1232072385000],\n [2760000, 1232152007000],\n [2770000, 1232211499000],\n [2780002, 1232283039000],\n [2790000, 1232364267000],\n [2800003, 1232447068000],\n [2810016, 1232530355000],\n [2820000, 1232613279000],\n [2830003, 1232711358000],\n [2840005, 1232782422000],\n [2850001, 1232848213000],\n [2860000, 1232898493000],\n [2870002, 1232983769000],\n [2880002, 1233069479000],\n [2890000, 1233154231000],\n [2900004, 1233239012000],\n [2910002, 1233322130000],\n [2920002, 1233393929000],\n [2930000, 1233456592000],\n [2940000, 1233504254000],\n [2950000, 1233587016000],\n [2960005, 1233668117000],\n [2970000, 1233748455000],\n [2980004, 1233827735000],\n [2990000, 1233906015000],\n [3000000, 1233973497000],\n [3010000, 1234025920000],\n [3020000, 1234097404000],\n [3030000, 1234174857000],\n [3040000, 1234250595000],\n [3050012, 1234308966000],\n [3060001, 1234362854000],\n [3070000, 1234441241000],\n [3080001, 1234517324000],\n [3090003, 1234567842000],\n [3100005, 1234620065000],\n [3110007, 1234682828000],\n [3120001, 1234723962000],\n [3130004, 1234799784000],\n [3140000, 1234881157000],\n [3150000, 1234963132000],\n [3160000, 1235043967000],\n [3170003, 1235121229000],\n [3180000, 1235186214000],\n [3190000, 1235234695000],\n [3200001, 1235304366000],\n [3210000, 1235374231000],\n [3220002, 1235438963000],\n [3230001, 1235497393000],\n [3240000, 1235576230000],\n [3250001, 1235657222000],\n [3260003, 1235736421000],\n [3270000, 1235805204000],\n [3280000, 1235860055000],\n [3290000, 1235919464000],\n [3300000, 1235999012000],\n [3310000, 1236077174000],\n [3320000, 1236150033000],\n [3330002, 1236213654000],\n [3340001, 1236276161000],\n [3350001, 1236355989000],\n [3360002, 1236430601000],\n [3370003, 1236498230000],\n [3380001, 1236547557000],\n [3390006, 1236613645000],\n [3400001, 1236691737000],\n [3410001, 1236767006000],\n [3420000, 1236836892000],\n [3430001, 1236888047000],\n [3440008, 1236958235000],\n [3450008, 1237029038000],\n [3460001, 1237092055000],\n [3470005, 1237134446000],\n [3480010, 1237212359000],\n [3490002, 1237289939000],\n [3500002, 1237359461000],\n [3510004, 1237428257000],\n [3520000, 1237479684000],\n [3530003, 1237551651000],\n [3540007, 1237616270000],\n [3550002, 1237660604000],\n [3560001, 1237726693000],\n [3570006, 1237795071000],\n [3580000, 1237847938000],\n [3590000, 1237909900000],\n [3600001, 1237985785000],\n [3610007, 1238053132000],\n [3620003, 1238102589000],\n [3630001, 1238168800000],\n [3640002, 1238242579000],\n [3650000, 1238309057000],\n [3660000, 1238349121000],\n [3670004, 1238422770000],\n [3680002, 1238494104000],\n [3690001, 1238548283000],\n [3700001, 1238598887000],\n [3710003, 1238669626000],\n [3720001, 1238731713000],\n [3730001, 1238777676000],\n [3740000, 1238848576000],\n [3750001, 1238911413000],\n [3760002, 1238949271000],\n [3770000, 1239025032000],\n [3780003, 1239097177000],\n [3790010, 1239166551000],\n [3800001, 1239221210000],\n [3810000, 1239297378000],\n [3820002, 1239380016000],\n [3830002, 1239453905000],\n [3840000, 1239515903000],\n [3850002, 1239553333000],\n [3860000, 1239634973000],\n [3870003, 1239717244000],\n [3880001, 1239804843000],\n [3890000, 1239886748000],\n [3900000, 1239968879000],\n [3910000, 1240036921000],\n [3920000, 1240080529000],\n [3930003, 1240144719000],\n [3940003, 1240222544000],\n [3950000, 1240296272000],\n [3960001, 1240357930000],\n [3970000, 1240423383000],\n [3980001, 1240503305000],\n [3990000, 1240585260000],\n [4000000, 1240655799000],\n [4010001, 1240712027000],\n [4020000, 1240756100000],\n [4030002, 1240836439000],\n [4040004, 1240916533000],\n [4050002, 1240978980000],\n [4060012, 1241019328000],\n [4070000, 1241098459000],\n [4080001, 1241172464000],\n [4090010, 1241232896000],\n [4100000, 1241279884000],\n [4110001, 1241352170000],\n [4120001, 1241415995000],\n [4130000, 1241459609000],\n [4140013, 1241524607000],\n [4150003, 1241579188000],\n [4160001, 1241618637000],\n [4170003, 1241693840000],\n [4180000, 1241754350000],\n [4190001, 1241802244000],\n [4200004, 1241869051000],\n [4210001, 1241903352000],\n [4220007, 1241957470000],\n [4230000, 1242020819000],\n [4240001, 1242064990000],\n [4250000, 1242142670000],\n [4260000, 1242222455000],\n [4270003, 1242301994000],\n [4280001, 1242375986000],\n [4290000, 1242429235000],\n [4300000, 1242484029000],\n [4310001, 1242545688000],\n [4320003, 1242577020000],\n [4330000, 1242655220000],\n [4340000, 1242731764000],\n [4350002, 1242798205000],\n [4360000, 1242842152000],\n [4370005, 1242916566000],\n [4380000, 1242990862000],\n [4390003, 1243043132000],\n [4400003, 1243087966000],\n [4410000, 1243142065000],\n [4420004, 1243173603000],\n [4430003, 1243245111000],\n [4440000, 1243295775000],\n [4450001, 1243352896000],\n [4460000, 1243428716000],\n [4470000, 1243499239000],\n [4480000, 1243546633000],\n [4490008, 1243611829000],\n [4500000, 1243680471000],\n [4510007, 1243726638000],\n [4520000, 1243773896000],\n [4530000, 1243840248000],\n [4540001, 1243880872000],\n [4550001, 1243955623000],\n [4560003, 1244033430000],\n [4570000, 1244106466000],\n [4580000, 1244161088000],\n [4590000, 1244217575000],\n [4600012, 1244283613000],\n [4610000, 1244317138000],\n [4620001, 1244374605000],\n [4630000, 1244426298000],\n [4640003, 1244475731000],\n [4650014, 1244552008000],\n [4660002, 1244619636000],\n [4670003, 1244661268000],\n [4680000, 1244733110000],\n [4690002, 1244810784000],\n [4700003, 1244869895000],\n [4710005, 1244908052000],\n [4720001, 1244966932000],\n [4730000, 1244996596000],\n [4740000, 1245073495000],\n [4750005, 1245148333000],\n [4760003, 1245211674000],\n [4770002, 1245257650000],\n [4780002, 1245335654000],\n [4790001, 1245411977000],\n [4800003, 1245470179000],\n [4810001, 1245512460000],\n [4820004, 1245575170000],\n [4830001, 1245608036000],\n [4840000, 1245682116000],\n [4850001, 1245758893000],\n [4860000, 1245830517000],\n [4870001, 1245878690000],\n [4880000, 1245947115000],\n [4890001, 1246026562000],\n [4900002, 1246093663000],\n [4910002, 1246141590000],\n [4920000, 1246194756000],\n [4930006, 1246269185000],\n [4940000, 1246330995000],\n [4950003, 1246380594000],\n [4960004, 1246456810000],\n [4970001, 1246532999000],\n [4980000, 1246600659000],\n [4990001, 1246646313000],\n [5000000, 1246712162000],\n [5010000, 1246764226000],\n [5020002, 1246802551000],\n [5030000, 1246874584000],\n [5040002, 1246921322000],\n [5050000, 1246978642000],\n [5060001, 1247053952000],\n [5070003, 1247122990000],\n [5080000, 1247163071000],\n [5090012, 1247237814000],\n [5100001, 1247303799000],\n [5110000, 1247340850000],\n [5120006, 1247400292000],\n [5130000, 1247464875000],\n [5140001, 1247505727000],\n [5150000, 1247581477000],\n [5160000, 1247657605000],\n [5170000, 1247734497000],\n [5180003, 1247779280000],\n [5190011, 1247844270000],\n [5200001, 1247912117000],\n [5210000, 1247959876000],\n [5220003, 1248010424000],\n [5230001, 1248067662000],\n [5240002, 1248102071000],\n [5250009, 1248171495000],\n [5260001, 1248215258000],\n [5270005, 1248272067000],\n [5280003, 1248338387000],\n [5290015, 1248372446000],\n [5300001, 1248441311000],\n [5310000, 1248499026000],\n [5320000, 1248537062000],\n [5330001, 1248597583000],\n [5340000, 1248630173000],\n [5350000, 1248699529000],\n [5360001, 1248758099000],\n [5370001, 1248796495000],\n [5380001, 1248865288000],\n [5390008, 1248910616000],\n [5400006, 1248962620000],\n [5410005, 1249022010000],\n [5420000, 1249055536000],\n [5430008, 1249119772000],\n [5440000, 1249159590000],\n [5450008, 1249215395000],\n [5460000, 1249267500000],\n [5470001, 1249314199000],\n [5480002, 1249381222000],\n [5490009, 1249425570000],\n [5500000, 1249481249000],\n [5510000, 1249544055000],\n [5520001, 1249580138000],\n [5530002, 1249648156000],\n [5540006, 1249702201000],\n [5550000, 1249745436000],\n [5560006, 1249808811000],\n [5570006, 1249843110000],\n [5580011, 1249908731000],\n [5590001, 1249962535000],\n [5600000, 1250004013000],\n [5610000, 1250067638000],\n [5620000, 1250105377000],\n [5630010, 1250170869000],\n [5640001, 1250234408000],\n [5650000, 1250283303000],\n [5660000, 1250348991000],\n [5670002, 1250417131000],\n [5680002, 1250470126000],\n [5690003, 1250518788000],\n [5700000, 1250583103000],\n [5710000, 1250615540000],\n [5720000, 1250683273000],\n [5730001, 1250737779000],\n [5740001, 1250779234000],\n [5750000, 1250841660000],\n [5760004, 1250876242000],\n [5770002, 1250942945000],\n [5780000, 1250994139000],\n [5790000, 1251035549000],\n [5800012, 1251097978000],\n [5810000, 1251131781000],\n [5820001, 1251200871000],\n [5830000, 1251252353000],\n [5840002, 1251298144000],\n [5850004, 1251362895000],\n [5860002, 1251393581000],\n [5870000, 1251458864000],\n [5880004, 1251501747000],\n [5890000, 1251552074000],\n [5900000, 1251603656000],\n [5910003, 1251640979000],\n [5920001, 1251701011000],\n [5930001, 1251731077000],\n [5940004, 1251799106000],\n [5950002, 1251833410000],\n [5960000, 1251900933000],\n [5970002, 1251969785000],\n [5980001, 1252003787000],\n [5990001, 1252073509000],\n [6000009, 1252134109000],\n [6010001, 1252167556000],\n [6020008, 1252226737000],\n [6030006, 1252253877000],\n [6040005, 1252324357000],\n [6050004, 1252377437000],\n [6060001, 1252422863000],\n [6070000, 1252491703000],\n [6080000, 1252518066000],\n [6090000, 1252590024000],\n [6100000, 1252657336000],\n [6110000, 1252689755000],\n [6120000, 1252752938000],\n [6130001, 1252787625000],\n [6140000, 1252842284000],\n [6150001, 1252887499000],\n [6160004, 1252940963000],\n [6170000, 1253014662000],\n [6180000, 1253072324000],\n [6190003, 1253117275000],\n [6200000, 1253192710000],\n [6210007, 1253259594000],\n [6220004, 1253293456000],\n [6230002, 1253359261000],\n [6240001, 1253408051000],\n [6250000, 1253454244000],\n [6260000, 1253510197000],\n [6270005, 1253545430000],\n [6280003, 1253603112000],\n [6290000, 1253633675000],\n [6300000, 1253690076000],\n [6310004, 1253718754000],\n [6320000, 1253787672000],\n [6330009, 1253827693000],\n [6340003, 1253890698000],\n [6350000, 1253949685000],\n [6360003, 1253981010000],\n [6370003, 1254038599000],\n [6380000, 1254065917000],\n [6390007, 1254138466000],\n [6400002, 1254161381000],\n [6410002, 1254232715000],\n [6420005, 1254297948000],\n [6430001, 1254328569000],\n [6440003, 1254402664000],\n [6450000, 1254470858000],\n [6460000, 1254505532000],\n [6470005, 1254569748000],\n [6480004, 1254607798000],\n [6490004, 1254657512000],\n [6500001, 1254711690000],\n [6510000, 1254757243000],\n [6520003, 1254832152000],\n [6530002, 1254899396000],\n [6540001, 1254936211000],\n [6550000, 1255002705000],\n [6560005, 1255054676000],\n [6570001, 1255103185000],\n [6580004, 1255187603000],\n [6590004, 1255241732000],\n [6600006, 1255275381000],\n [6610006, 1255335923000],\n [6620004, 1255365040000],\n [6630000, 1255437371000],\n [6640004, 1255503196000],\n [6650000, 1255542374000],\n [6660003, 1255616844000],\n [6670006, 1255692389000],\n [6680002, 1255747536000],\n [6690000, 1255789048000],\n [6700007, 1255845043000],\n [6710001, 1255876623000],\n [6720006, 1255947630000],\n [6730001, 1255999240000],\n [6740001, 1256052059000],\n [6750001, 1256127357000],\n [6760000, 1256192620000],\n [6770001, 1256230979000],\n [6780004, 1256305273000],\n [6790000, 1256366761000],\n [6800002, 1256399088000],\n [6810001, 1256457917000],\n [6820014, 1256481202000],\n [6830000, 1256530568000],\n [6840003, 1256569253000],\n [6850000, 1256640930000],\n [6860001, 1256686001000],\n [6870001, 1256740999000],\n [6880001, 1256810974000],\n [6890001, 1256846841000],\n [6900006, 1256909975000],\n [6910008, 1256956991000],\n [6920001, 1256993093000],\n [6930002, 1257021797000],\n [6940007, 1257074334000],\n [6950006, 1257112755000],\n [6960010, 1257171176000],\n [6970029, 1257229635000],\n [6980001, 1257260628000],\n [6990009, 1257333480000],\n [7000004, 1257389136000],\n [7010001, 1257435146000],\n [7020003, 1257509404000],\n [7030000, 1257562969000],\n [7040011, 1257602634000],\n [7050001, 1257654208000],\n [7060007, 1257686818000],\n [7070003, 1257747290000],\n [7080000, 1257781719000],\n [7090002, 1257854092000],\n [7100000, 1257906922000],\n [7110000, 1257949717000],\n [7120010, 1258017940000],\n [7130000, 1258052980000],\n [7140003, 1258121655000],\n [7150004, 1258179932000],\n [7160005, 1258212028000],\n [7170018, 1258268171000],\n [7180007, 1258297347000],\n [7190003, 1258369922000],\n [7200000, 1258423598000],\n [7210001, 1258471779000],\n [7220000, 1258547279000],\n [7230006, 1258613975000],\n [7240009, 1258652603000],\n [7250000, 1258726763000],\n [7260001, 1258788982000],\n [7270001, 1258820885000],\n [7280001, 1258881797000],\n [7290021, 1258901428000],\n [7300003, 1258941371000],\n [7310003, 1258978847000],\n [7320000, 1258997635000],\n [7330003, 1259068970000],\n [7340002, 1259137031000],\n [7350004, 1259172407000],\n [7360000, 1259245313000],\n [7370001, 1259318445000],\n [7380001, 1259366162000],\n [7390001, 1259413895000],\n [7400001, 1259463754000],\n [7410003, 1259500536000],\n [7420006, 1259566058000],\n [7430004, 1259600101000],\n [7440000, 1259674892000],\n [7450006, 1259746273000],\n [7460007, 1259794215000],\n [7470003, 1259853521000],\n [7480001, 1259928386000],\n [7490002, 1259983081000],\n [7500006, 1260022442000],\n [7510000, 1260071171000],\n [7520000, 1260106690000],\n [7530000, 1260172447000],\n [7540000, 1260208351000],\n [7550009, 1260281963000],\n [7560001, 1260355097000],\n [7570000, 1260411385000],\n [7580002, 1260459860000],\n [7590001, 1260534424000],\n [7600000, 1260587470000],\n [7610007, 1260627276000],\n [7620004, 1260684093000],\n [7630004, 1260715167000],\n [7640004, 1260784681000],\n [7650004, 1260830330000],\n [7660002, 1260889337000],\n [7670001, 1260964691000],\n [7680001, 1261029793000],\n [7690002, 1261071760000],\n [7700003, 1261146596000],\n [7710009, 1261212831000],\n [7720001, 1261245754000],\n [7730011, 1261307347000],\n [7740001, 1261355745000],\n [7750000, 1261408395000],\n [7760010, 1261482358000],\n [7770010, 1261537178000],\n [7780002, 1261576719000],\n [7790002, 1261610556000],\n [7800002, 1261659130000],\n [7810001, 1261699801000],\n [7820004, 1261746610000],\n [7830000, 1261793852000],\n [7840001, 1261837044000],\n [7850001, 1261893306000],\n [7860000, 1261927165000],\n [7870000, 1261988405000],\n [7880006, 1262022689000],\n [7890001, 1262089362000],\n [7900000, 1262147767000],\n [7910004, 1262187188000],\n [7920000, 1262246668000],\n [7930000, 1262272485000],\n [7940000, 1262310429000],\n [7950000, 1262345982000],\n [7960000, 1262374368000],\n [7970001, 1262435699000],\n [7980006, 1262482125000],\n [7990006, 1262523783000],\n [8000000, 1262571603000],\n [8010002, 1262611322000],\n [8020002, 1262662269000],\n [8030000, 1262699160000],\n [8040000, 1262751940000],\n [8050001, 1262787880000],\n [8060003, 1262847522000],\n [8070004, 1262879016000],\n [8080003, 1262948453000],\n [8090000, 1263005525000],\n [8100001, 1263043440000],\n [8110004, 1263090083000],\n [8120001, 1263129819000],\n [8130001, 1263178927000],\n [8140000, 1263213746000],\n [8150000, 1263264406000],\n [8160001, 1263308752000],\n [8170001, 1263381109000],\n [8180000, 1263433234000],\n [8190004, 1263482236000],\n [8200001, 1263552778000],\n [8210000, 1263582347000],\n [8220000, 1263641955000],\n [8230000, 1263668432000],\n [8240000, 1263721345000],\n [8250002, 1263743461000],\n [8260003, 1263812466000],\n [8270001, 1263840381000],\n [8280000, 1263909812000],\n [8290002, 1263975879000],\n [8300002, 1264004629000],\n [8310008, 1264073609000],\n [8320001, 1264112814000],\n [8330000, 1264170205000],\n [8340003, 1264225027000],\n [8350000, 1264256849000],\n [8360004, 1264306527000],\n [8370004, 1264337256000],\n [8380000, 1264381896000],\n [8390002, 1264429503000],\n [8400000, 1264495753000],\n [8410000, 1264525760000],\n [8420000, 1264595385000],\n [8430002, 1264646313000],\n [8440000, 1264688257000],\n [8450004, 1264751892000],\n [8460000, 1264781077000],\n [8470002, 1264839031000],\n [8480003, 1264864949000],\n [8490001, 1264912159000],\n [8500001, 1264940198000],\n [8510002, 1264963055000],\n [8520005, 1265026244000],\n [8530003, 1265055913000],\n [8540004, 1265115694000],\n [8550006, 1265158385000],\n [8560001, 1265203504000],\n [8570001, 1265251639000],\n [8580003, 1265292623000],\n [8590005, 1265351842000],\n [8600000, 1265384653000],\n [8610001, 1265441412000],\n [8620000, 1265468298000],\n [8630000, 1265516784000],\n [8640001, 1265545204000],\n [8650001, 1265574034000],\n [8660001, 1265633483000],\n [8670000, 1265675793000],\n [8680002, 1265721819000],\n [8690004, 1265769855000],\n [8700000, 1265809934000],\n [8710003, 1265851086000],\n [8720010, 1265885485000],\n [8730000, 1265904395000],\n [8740000, 1265966419000],\n [8750000, 1265991793000],\n [8760005, 1266046654000],\n [8770002, 1266072240000],\n [8780000, 1266109367000],\n [8790000, 1266142840000],\n [8800000, 1266162438000],\n [8810001, 1266223290000],\n [8820004, 1266248215000],\n [8830000, 1266311115000],\n [8840000, 1266336776000],\n [8850002, 1266404590000],\n [8860003, 1266431080000],\n [8870011, 1266495239000],\n [8880000, 1266532193000],\n [8890004, 1266586323000],\n [8900006, 1266634787000],\n [8910000, 1266671132000],\n [8920003, 1266704552000],\n [8930000, 1266748887000],\n [8940001, 1266771304000],\n [8950007, 1266834419000],\n [8960000, 1266853031000],\n [8970000, 1266914766000],\n [8980000, 1266941561000],\n [8990002, 1267006421000],\n [9000002, 1267033072000],\n [9010000, 1267099263000],\n [9020000, 1267136814000],\n [9030001, 1267189340000],\n [9040001, 1267227765000],\n [9050002, 1267271033000],\n [9060001, 1267295095000],\n [9070001, 1267349581000],\n [9080000, 1267372556000],\n [9090001, 1267437953000],\n [9100001, 1267464018000],\n [9110000, 1267529940000],\n [9120002, 1267557994000],\n [9130000, 1267619150000],\n [9140001, 1267649393000],\n [9150000, 1267707477000],\n [9160001, 1267756145000],\n [9170002, 1267797588000],\n [9180003, 1267845140000],\n [9190000, 1267880161000],\n [9200000, 1267911888000],\n [9210000, 1267956602000],\n [9220000, 1267977687000],\n [9230001, 1268041678000],\n [9240001, 1268067085000],\n [9250003, 1268128511000],\n [9260000, 1268150764000],\n [9270004, 1268213052000],\n [9280000, 1268238021000],\n [9290010, 1268301488000],\n [9300001, 1268326858000],\n [9310000, 1268390142000],\n [9320000, 1268414486000],\n [9330001, 1268469126000],\n [9340000, 1268493356000],\n [9350001, 1268544135000],\n [9360001, 1268572846000],\n [9370002, 1268619924000],\n [9380007, 1268658826000],\n [9390000, 1268701926000],\n [9400000, 1268743976000],\n [9410007, 1268782970000],\n [9420003, 1268828664000],\n [9430003, 1268860371000],\n [9440002, 1268914210000],\n [9450002, 1268947479000],\n [9460005, 1269001003000],\n [9470002, 1269031061000],\n [9480000, 1269082722000],\n [9490002, 1269106998000],\n [9500001, 1269162960000],\n [9510000, 1269187333000],\n [9520000, 1269242743000],\n [9530002, 1269268090000],\n [9540002, 1269321764000],\n [9550000, 1269352784000],\n [9560000, 1269403387000],\n [9570002, 1269436975000],\n [9580005, 1269480995000],\n [9590004, 1269519219000],\n [9600000, 1269544500000],\n [9610002, 1269600989000],\n [9620002, 1269624459000],\n [9630002, 1269680285000],\n [9640006, 1269704898000],\n [9650002, 1269757853000],\n [9660003, 1269785364000],\n [9670007, 1269835201000],\n [9680001, 1269868455000],\n [9690001, 1269910981000],\n [9700002, 1269950640000],\n [9710004, 1269974845000],\n [9720000, 1270030676000],\n [9730002, 1270050327000],\n [9740002, 1270097462000],\n [9750008, 1270124323000],\n [9760010, 1270142744000],\n [9770005, 1270196324000],\n [9780007, 1270220578000],\n [9790001, 1270268030000],\n [9800000, 1270299979000],\n [9810000, 1270327188000],\n [9820004, 1270374286000],\n [9830001, 1270395746000],\n [9840007, 1270450706000],\n [9850002, 1270477065000],\n [9860000, 1270522915000],\n [9870005, 1270558305000],\n [9880002, 1270587924000],\n [9890003, 1270641211000],\n [9900009, 1270667244000],\n [9910002, 1270729503000],\n [9920000, 1270772739000],\n [9930002, 1270820871000],\n [9940000, 1270867332000],\n [9950000, 1270902222000],\n [9960000, 1270923509000],\n [9970002, 1270973617000],\n [9980005, 1270995483000],\n [9990001, 1271052458000],\n [10000000, 1271084467000],\n [10010000, 1271152586000],\n [10020001, 1271178520000],\n [10030002, 1271249106000],\n [10040004, 1271300905000],\n [10050001, 1271342704000],\n [10060001, 1271411103000],\n [10070000, 1271438670000],\n [10080000, 1271497617000],\n [10090000, 1271520730000],\n [10100006, 1271572090000],\n [10110001, 1271596744000],\n [10120000, 1271640791000],\n [10130001, 1271686480000],\n [10140000, 1271748797000],\n [10150000, 1271776989000],\n [10160002, 1271844770000],\n [10170001, 1271870174000],\n [10180000, 1271939973000],\n [10190000, 1271982449000],\n [10200002, 1272031889000],\n [10210002, 1272079184000],\n [10220000, 1272113379000],\n [10230001, 1272138602000],\n [10240005, 1272186107000],\n [10250008, 1272207045000],\n [10260000, 1272269454000],\n [10270000, 1272295567000],\n [10280004, 1272362958000],\n [10290002, 1272386402000],\n [10300003, 1272455984000],\n [10310001, 1272480451000],\n [10320003, 1272533421000],\n [10330002, 1272555900000],\n [10340001, 1272619333000],\n [10350001, 1272643694000],\n [10360000, 1272699431000],\n [10370000, 1272726810000],\n [10380000, 1272778479000],\n [10390002, 1272809410000],\n [10400003, 1272858602000],\n [10410000, 1272892018000],\n [10420001, 1272930483000],\n [10430000, 1272971101000],\n [10440000, 1272990692000],\n [10450004, 1273039646000],\n [10460004, 1273063064000],\n [10470003, 1273082413000],\n [10480012, 1273148702000],\n [10490001, 1273178432000],\n [10500000, 1273237856000],\n [10510003, 1273272118000],\n [10520000, 1273314937000],\n [10530003, 1273335371000],\n [10540003, 1273383275000],\n [10550000, 1273407737000],\n [10560003, 1273427935000],\n [10570001, 1273493380000],\n [10580000, 1273518887000],\n [10590001, 1273583380000],\n [10600000, 1273629537000],\n [10610003, 1273673975000],\n [10620002, 1273736864000],\n [10630008, 1273765536000],\n [10640001, 1273832963000],\n [10650001, 1273856472000],\n [10660000, 1273913403000],\n [10670003, 1273938190000],\n [10680003, 1273987415000],\n [10690002, 1274013883000],\n [10700001, 1274041442000],\n [10710001, 1274101755000],\n [10720001, 1274148034000],\n [10730000, 1274191649000],\n [10740001, 1274251918000],\n [10750000, 1274281421000],\n [10760001, 1274344952000],\n [10770001, 1274370852000],\n [10780000, 1274437849000],\n [10790001, 1274461341000],\n [10800003, 1274516434000],\n [10810000, 1274540863000],\n [10820000, 1274585874000],\n [10830001, 1274613400000],\n [10840000, 1274630996000],\n [10850002, 1274696077000],\n [10860002, 1274718536000],\n [10870000, 1274786118000],\n [10880005, 1274810518000],\n [10890000, 1274877703000],\n [10900005, 1274924038000],\n [10910000, 1274969786000],\n [10920003, 1275033999000],\n [10930001, 1275062164000],\n [10940002, 1275117814000],\n [10950000, 1275143781000],\n [10960001, 1275188364000],\n [10970000, 1275218494000],\n [10980000, 1275236993000],\n [10990001, 1275304384000],\n [11000001, 1275326405000],\n [11010008, 1275394258000],\n [11020002, 1275426312000],\n [11030000, 1275484933000],\n [11040001, 1275533742000],\n [11050001, 1275575272000],\n [11060005, 1275635913000],\n [11070002, 1275664460000],\n [11080000, 1275714355000],\n [11090004, 1275744055000],\n [11100000, 1275769810000],\n [11110000, 1275814398000],\n [11120011, 1275834332000],\n [11130002, 1275887874000],\n [11140002, 1275920205000],\n [11150000, 1275975608000],\n [11160000, 1276007756000],\n [11170001, 1276065720000],\n [11180000, 1276094358000],\n [11190000, 1276153093000],\n [11200003, 1276182302000],\n [11210003, 1276247378000],\n [11220003, 1276272594000],\n [11230001, 1276326893000],\n [11240005, 1276352916000],\n [11250002, 1276396637000],\n [11260002, 1276427108000],\n [11270002, 1276443222000],\n [11280002, 1276506906000],\n [11290001, 1276530201000],\n [11300004, 1276597379000],\n [11310000, 1276620884000],\n [11320004, 1276688782000],\n [11330000, 1276714922000],\n [11340000, 1276780694000],\n [11350003, 1276831842000],\n [11360001, 1276871333000],\n [11370004, 1276918283000],\n [11380006, 1276951279000],\n [11390000, 1276973002000],\n [11400005, 1277023272000],\n [11410005, 1277044636000],\n [11420007, 1277100970000],\n [11430001, 1277132150000],\n [11440000, 1277193416000],\n [11450005, 1277220644000],\n [11460000, 1277286195000],\n [11470000, 1277310437000],\n [11480007, 1277378868000],\n [11490001, 1277405797000],\n [11500000, 1277471329000],\n [11510005, 1277510838000],\n [11520014, 1277552590000],\n [11530000, 1277574577000],\n [11540002, 1277626363000],\n [11550000, 1277650324000],\n [11560003, 1277711981000],\n [11570002, 1277739469000],\n [11580003, 1277805672000],\n [11590002, 1277833631000],\n [11600007, 1277901407000],\n [11610000, 1277943642000],\n [11620004, 1277992741000],\n [11630006, 1278052857000],\n [11640004, 1278085215000],\n [11650000, 1278141043000],\n [11660000, 1278168247000],\n [11670001, 1278211901000],\n [11680005, 1278242882000],\n [11690000, 1278263525000],\n [11700000, 1278331018000],\n [11710001, 1278363283000],\n [11720001, 1278422573000],\n [11730001, 1278467910000],\n [11740002, 1278508847000],\n [11750001, 1278546502000],\n [11760002, 1278596862000],\n [11770055, 1278654118000],\n [11780003, 1278686331000],\n [11790002, 1278735703000],\n [11800000, 1278768480000],\n [11810000, 1278807401000],\n [11820006, 1278844282000],\n [11830002, 1278863674000],\n [11840002, 1278927490000],\n [11850000, 1278949803000],\n [11860004, 1279015329000],\n [11870004, 1279037966000],\n [11880006, 1279102801000],\n [11890001, 1279125228000],\n [11900000, 1279191755000],\n [11910003, 1279216455000],\n [11920000, 1279282608000],\n [11930000, 1279320656000],\n [11940000, 1279367086000],\n [11950005, 1279391585000],\n [11960001, 1279444783000],\n [11970000, 1279467624000],\n [11980002, 1279516298000],\n [11990000, 1279544139000],\n [12000006, 1279573067000],\n [12010002, 1279632740000],\n [12020000, 1279674263000],\n [12030001, 1279714985000],\n [12040004, 1279739983000],\n [12050001, 1279797478000],\n [12060002, 1279819893000],\n [12070000, 1279880710000],\n [12080001, 1279903895000],\n [12090000, 1279959100000],\n [12100000, 1279984330000],\n [12110008, 1280031762000],\n [12120000, 1280061767000],\n [12130001, 1280097529000],\n [12140002, 1280146450000],\n [12150004, 1280175516000],\n [12160000, 1280231047000],\n [12170003, 1280253885000],\n [12180004, 1280312366000],\n [12190010, 1280334261000],\n [12200002, 1280392960000],\n [12210000, 1280416789000],\n [12220001, 1280470620000],\n [12230002, 1280500335000],\n [12240000, 1280546599000],\n [12250001, 1280580530000],\n [12260000, 1280605572000],\n [12270000, 1280653774000],\n [12280002, 1280675302000],\n [12290000, 1280725084000],\n [12300000, 1280756249000],\n [12310000, 1280793725000],\n [12320002, 1280837490000],\n [12330002, 1280862689000],\n [12340001, 1280920068000],\n [12350001, 1280942280000],\n [12360002, 1280999471000],\n [12370001, 1281023696000],\n [12380000, 1281079371000],\n [12390006, 1281107837000],\n [12400001, 1281157949000],\n [12410008, 1281189784000],\n [12420004, 1281231583000],\n [12430001, 1281267381000],\n [12440012, 1281287383000],\n [12450005, 1281343947000],\n [12460000, 1281367264000],\n [12470000, 1281417336000],\n [12480000, 1281447426000],\n [12490000, 1281485017000],\n [12500002, 1281525838000],\n [12510000, 1281547664000],\n [12520000, 1281601916000],\n [12530003, 1281626599000],\n [12540000, 1281681792000],\n [12550000, 1281712170000],\n [12560000, 1281768918000],\n [12570000, 1281799924000],\n [12580005, 1281857189000],\n [12590008, 1281885144000],\n [12600000, 1281939245000],\n [12610001, 1281967862000],\n [12620000, 1282015601000],\n [12630000, 1282050647000],\n [12640000, 1282086682000],\n [12650007, 1282132325000],\n [12660001, 1282154655000],\n [12670000, 1282213268000],\n [12680003, 1282235398000],\n [12690005, 1282292642000],\n [12700001, 1282318186000],\n [12710000, 1282369235000],\n [12720002, 1282399052000],\n [12730001, 1282440554000],\n [12740000, 1282477003000],\n [12750000, 1282498068000],\n [12760003, 1282556916000],\n [12770001, 1282579108000],\n [12780007, 1282634809000],\n [12790002, 1282662019000],\n [12800001, 1282713987000],\n [12810000, 1282745037000],\n [12820000, 1282790864000],\n [12830002, 1282828562000],\n [12840002, 1282866685000],\n [12850005, 1282911120000],\n [12860002, 1282935089000],\n [12870000, 1282988256000],\n [12880000, 1283011329000],\n [12890004, 1283061649000],\n [12900010, 1283088208000],\n [12910002, 1283123926000],\n [12920000, 1283169509000],\n [12930000, 1283188995000],\n [12940001, 1283245495000],\n [12950000, 1283266662000],\n [12960001, 1283321664000],\n [12970000, 1283352413000],\n [12980001, 1283411926000],\n [12990003, 1283440104000],\n [13000000, 1283500853000],\n [13010001, 1283527719000],\n [13020004, 1283579691000],\n [13030004, 1283608092000],\n [13040004, 1283643707000],\n [13050000, 1283681660000],\n [13060000, 1283701069000],\n [13070004, 1283763448000],\n [13080010, 1283787320000],\n [13090001, 1283851111000],\n [13100002, 1283874086000],\n [13110003, 1283937995000],\n [13120002, 1283960387000],\n [13130000, 1284021968000],\n [13140001, 1284044422000],\n [13150001, 1284103338000],\n [13160000, 1284131400000],\n [13170000, 1284181635000],\n [13180003, 1284210864000],\n [13190000, 1284238395000],\n [13200004, 1284281470000],\n [13210003, 1284302032000],\n [13220003, 1284356532000],\n [13230000, 1284386961000],\n [13240000, 1284438215000],\n [13250004, 1284472990000],\n [13260003, 1284523883000],\n [13270000, 1284559545000],\n [13280001, 1284613657000],\n [13290003, 1284647063000],\n [13300000, 1284703307000],\n [13310002, 1284734091000],\n [13320002, 1284780594000],\n [13330004, 1284816503000],\n [13340000, 1284859349000],\n [13350001, 1284898520000],\n [13360000, 1284922896000],\n [13370002, 1284973746000],\n [13380000, 1284995064000],\n [13390004, 1285058627000],\n [13400002, 1285084289000],\n [13410005, 1285151263000],\n [13420000, 1285174192000],\n [13430000, 1285227503000],\n [13440004, 1285250843000],\n [13450007, 1285301710000],\n [13460000, 1285338172000],\n [13470007, 1285386754000],\n [13480002, 1285418930000],\n [13490002, 1285443125000],\n [13500001, 1285491869000],\n [13510006, 1285512382000],\n [13520000, 1285572669000],\n [13530003, 1285599963000],\n [13540002, 1285663189000],\n [13550000, 1285688428000],\n [13560001, 1285753766000],\n [13570000, 1285777318000],\n [13580005, 1285845224000],\n [13590002, 1285866408000],\n [13600001, 1285932869000],\n [13610003, 1285955477000],\n [13620000, 1286011278000],\n [13630001, 1286033520000],\n [13640001, 1286079742000],\n [13650001, 1286106928000],\n [13660002, 1286124128000],\n [13670005, 1286189352000],\n [13680002, 1286210184000],\n [13690000, 1286277190000],\n [13700001, 1286298612000],\n [13710002, 1286366512000],\n [13720001, 1286391268000],\n [13730002, 1286455082000],\n [13740007, 1286486830000],\n [13750001, 1286543733000],\n [13760001, 1286582060000],\n [13770000, 1286622918000],\n [13780003, 1286642450000],\n [13790000, 1286692726000],\n [13800001, 1286718021000],\n [13810003, 1286752215000],\n [13820000, 1286791489000],\n [13830001, 1286810989000],\n [13840001, 1286875998000],\n [13850003, 1286899374000],\n [13860000, 1286965646000],\n [13870000, 1286989108000],\n [13880001, 1287056928000],\n [13890003, 1287079973000],\n [13900000, 1287145497000],\n [13910002, 1287172085000],\n [13920000, 1287225384000],\n [13930004, 1287245969000],\n [13940003, 1287296215000],\n [13950003, 1287320263000],\n [13960000, 1287346883000],\n [13970011, 1287406934000],\n [13980000, 1287449201000],\n [13990002, 1287496124000],\n [14000000, 1287550315000],\n [14010002, 1287585133000],\n [14020002, 1287645957000],\n [14030000, 1287674130000],\n [14040003, 1287738931000],\n [14050002, 1287763516000],\n [14060000, 1287818586000],\n [14070005, 1287844055000],\n [14080003, 1287886605000],\n [14090001, 1287917308000],\n [14100000, 1287934346000],\n [14110007, 1287997009000],\n [14120003, 1288019639000],\n [14130002, 1288084105000],\n [14140000, 1288107911000],\n [14150000, 1288175810000],\n [14160003, 1288199607000],\n [14170001, 1288268739000],\n [14180000, 1288301838000],\n [14190002, 1288357841000],\n [14200005, 1288383988000],\n [14210000, 1288430900000],\n [14220000, 1288450015000],\n [14230001, 1288460894000],\n [14240001, 1288503897000],\n [14250002, 1288524444000],\n [14260002, 1288536417000],\n [14270001, 1288559551000],\n [14280004, 1288614494000],\n [14290000, 1288636790000],\n [14300001, 1288701069000],\n [14310000, 1288724423000],\n [14320002, 1288776052000],\n [14330000, 1288796401000],\n [14340003, 1288857588000],\n [14350006, 1288883585000],\n [14360004, 1288949700000],\n [14370001, 1288973472000],\n [14380001, 1289028320000],\n [14390005, 1289053182000],\n [14400004, 1289092512000],\n [14410000, 1289124567000],\n [14420002, 1289142469000],\n [14430000, 1289200698000],\n [14440000, 1289226741000],\n [14450000, 1289286036000],\n [14460001, 1289314520000],\n [14470002, 1289376224000],\n [14480002, 1289401742000],\n [14490001, 1289460865000],\n [14500001, 1289484283000],\n [14510000, 1289523233000],\n [14520001, 1289569043000],\n [14530002, 1289607472000],\n [14540001, 1289646752000],\n [14550004, 1289665668000],\n [14560005, 1289714543000],\n [14570002, 1289738263000],\n [14580001, 1289759036000],\n [14590001, 1289822837000],\n [14600006, 1289844897000],\n [14610004, 1289910783000],\n [14620000, 1289940668000],\n [14630004, 1289999394000],\n [14640000, 1290044327000],\n [14650001, 1290088675000],\n [14660010, 1290146173000],\n [14670003, 1290178715000],\n [14680006, 1290229305000],\n [14690001, 1290258858000],\n [14700000, 1290283021000],\n [14710001, 1290330017000],\n [14720001, 1290351368000],\n [14730000, 1290407282000],\n [14740002, 1290435028000],\n [14750000, 1290464600000],\n [14760004, 1290505101000],\n [14770005, 1290524323000],\n [14780002, 1290585156000],\n [14790002, 1290611533000],\n [14800002, 1290675115000],\n [14810005, 1290699536000],\n [14820003, 1290765982000],\n [14830002, 1290789167000],\n [14840001, 1290843946000],\n [14850000, 1290869019000],\n [14860000, 1290913104000],\n [14870000, 1290943562000],\n [14880003, 1290963089000],\n [14890000, 1291030901000],\n [14900000, 1291054197000],\n [14910000, 1291121135000],\n [14920001, 1291167073000],\n [14930001, 1291212813000],\n [14940001, 1291277195000],\n [14950003, 1291305231000],\n [14960001, 1291373249000],\n [14970000, 1291398478000],\n [14980003, 1291454733000],\n [14990006, 1291477691000],\n [15000018, 1291527486000],\n [15010002, 1291553361000],\n [15020002, 1291586032000],\n [15030000, 1291642446000],\n [15040001, 1291699202000],\n [15050004, 1291733347000],\n [15060010, 1291798100000],\n [15070001, 1291824339000],\n [15080000, 1291893540000],\n [15090000, 1291922099000],\n [15100005, 1291986770000],\n [15110000, 1292032722000],\n [15120005, 1292069186000],\n [15130001, 1292090384000],\n [15140000, 1292141815000],\n [15150000, 1292164081000],\n [15160001, 1292223938000],\n [15170002, 1292251943000],\n [15180009, 1292315000000],\n [15190001, 1292339700000],\n [15200000, 1292399890000],\n [15210000, 1292423274000],\n [15220007, 1292475878000],\n [15230002, 1292508400000],\n [15240003, 1292562759000],\n [15250003, 1292596779000],\n [15260000, 1292646528000],\n [15270004, 1292677534000],\n [15280001, 1292703551000],\n [15290000, 1292750853000],\n [15300001, 1292770943000],\n [15310005, 1292830092000],\n [15320003, 1292856886000],\n [15330003, 1292916490000],\n [15340000, 1292943635000],\n [15350000, 1293001746000],\n [15360003, 1293029691000],\n [15370002, 1293077329000],\n [15380000, 1293107925000],\n [15390000, 1293124460000],\n [15400012, 1293177148000],\n [15410000, 1293200478000],\n [15420002, 1293223235000],\n [15430000, 1293268036000],\n [15440002, 1293288596000],\n [15450000, 1293330169000],\n [15460004, 1293364717000],\n [15470003, 1293384306000],\n [15480004, 1293441672000],\n [15490001, 1293465151000],\n [15500002, 1293518526000],\n [15510001, 1293546831000],\n [15520002, 1293597431000],\n [15530005, 1293630221000],\n [15540002, 1293675124000],\n [15550000, 1293712423000],\n [15560002, 1293736274000],\n [15570000, 1293785654000],\n [15580000, 1293807104000],\n [15590000, 1293813108000],\n [15600004, 1293848040000],\n [15610006, 1293872314000],\n [15620010, 1293890945000],\n [15630001, 1293917668000],\n [15640001, 1293964548000],\n [15650000, 1293984667000],\n [15660000, 1294034714000],\n [15670000, 1294059820000],\n [15680002, 1294081042000],\n [15690008, 1294132088000],\n [15700004, 1294153388000],\n [15710001, 1294198562000],\n [15720001, 1294229511000],\n [15730000, 1294247497000],\n [15740000, 1294301349000],\n [15750001, 1294325182000],\n [15760002, 1294376467000],\n [15770000, 1294407648000],\n [15780002, 1294444452000],\n [15790003, 1294485613000],\n [15800003, 1294506185000],\n [15810001, 1294559429000],\n [15820000, 1294583260000],\n [15830001, 1294623456000],\n [15840000, 1294655809000],\n [15850001, 1294673991000],\n [15860000, 1294737035000],\n [15870000, 1294760300000],\n [15880003, 1294826572000],\n [15890003, 1294849889000],\n [15900000, 1294917508000],\n [15910001, 1294941223000],\n [15920002, 1295007709000],\n [15930001, 1295029623000],\n [15940002, 1295083114000],\n [15950000, 1295105042000],\n [15960008, 1295150096000],\n [15970000, 1295176582000],\n [15980003, 1295193532000],\n [15990008, 1295257398000],\n [16000000, 1295279291000],\n [16010001, 1295344325000],\n [16020001, 1295365579000],\n [16030000, 1295430007000],\n [16040000, 1295451532000],\n [16050000, 1295515049000],\n [16060001, 1295537558000],\n [16070000, 1295601077000],\n [16080006, 1295625363000],\n [16090003, 1295677743000],\n [16100002, 1295703430000],\n [16110005, 1295729619000],\n [16120000, 1295773021000],\n [16130001, 1295792062000],\n [16140002, 1295841907000],\n [16150000, 1295876478000],\n [16160003, 1295920129000],\n [16170001, 1295961719000],\n [16180003, 1296005962000],\n [16190001, 1296048001000],\n [16200000, 1296084003000],\n [16210001, 1296132386000],\n [16220000, 1296154256000],\n [16230002, 1296214941000],\n [16240001, 1296233843000],\n [16250000, 1296285251000],\n [16260001, 1296308274000],\n [16270000, 1296328631000],\n [16280000, 1296373529000],\n [16290003, 1296393394000],\n [16300004, 1296412941000],\n [16310000, 1296473201000],\n [16320003, 1296490245000],\n [16330006, 1296550062000],\n [16340000, 1296571947000],\n [16350000, 1296623456000],\n [16360000, 1296652965000],\n [16370000, 1296675824000],\n [16380002, 1296731668000],\n [16390000, 1296748000000],\n [16400000, 1296806467000],\n [16410000, 1296830277000],\n [16420000, 1296870503000],\n [16430000, 1296902174000],\n [16440000, 1296919854000],\n [16450000, 1296962274000],\n [16460001, 1296987424000],\n [16470002, 1297003969000],\n [16480000, 1297047879000],\n [16490006, 1297082200000],\n [16500001, 1297099131000],\n [16510003, 1297158628000],\n [16520001, 1297177734000],\n [16530004, 1297231023000],\n [16540001, 1297258924000],\n [16550000, 1297293429000],\n [16560000, 1297339287000],\n [16570000, 1297356967000],\n [16580000, 1297406230000],\n [16590005, 1297428558000],\n [16600000, 1297444000000],\n [16610005, 1297492058000],\n [16620000, 1297515324000],\n [16630004, 1297532087000],\n [16640002, 1297580468000],\n [16650000, 1297602605000],\n [16660000, 1297615573000],\n [16670000, 1297667071000],\n [16680001, 1297687168000],\n [16690001, 1297697982000],\n [16700001, 1297749017000],\n [16710000, 1297776910000],\n [16720000, 1297805417000],\n [16730000, 1297857224000],\n [16740004, 1297876015000],\n [16750002, 1297935653000],\n [16760000, 1297956063000],\n [16770000, 1298009599000],\n [16780000, 1298036761000],\n [16790001, 1298065707000],\n [16800000, 1298109530000],\n [16810002, 1298128885000],\n [16820000, 1298170973000],\n [16830000, 1298198906000],\n [16840000, 1298215638000],\n [16850003, 1298271332000],\n [16860003, 1298297297000],\n [16870001, 1298334574000],\n [16880000, 1298374612000],\n [16890000, 1298387834000],\n [16900006, 1298440832000],\n [16910001, 1298468928000],\n [16920002, 1298506815000],\n [16930003, 1298550268000],\n [16940000, 1298572618000],\n [16950001, 1298631374000],\n [16960001, 1298650858000],\n [16970003, 1298702149000],\n [16980000, 1298727161000],\n [16990001, 1298750306000],\n [17000000, 1298796449000],\n [17010000, 1298816402000],\n [17020001, 1298861035000],\n [17030001, 1298897501000],\n [17040000, 1298918040000],\n [17050001, 1298976561000],\n [17060002, 1298995413000],\n [17070000, 1299054977000],\n [17080002, 1299077821000],\n [17090002, 1299127707000],\n [17100000, 1299157842000],\n [17110002, 1299180217000],\n [17120003, 1299238067000],\n [17130000, 1299257087000],\n [17140006, 1299308923000],\n [17150000, 1299332822000],\n [17160002, 1299356148000],\n [17170000, 1299399969000],\n [17180001, 1299419595000],\n [17190003, 1299451732000],\n [17200000, 1299497993000],\n [17210006, 1299515396000],\n [17220000, 1299573968000],\n [17230000, 1299595987000],\n [17240001, 1299641799000],\n [17250002, 1299672911000],\n [17260000, 1299688220000],\n [17270004, 1299744534000],\n [17280000, 1299767015000],\n [17290000, 1299810783000],\n [17300003, 1299862908000],\n [17310003, 1299930844000],\n [17320000, 1299984696000],\n [17330001, 1300017855000],\n [17340009, 1300066730000],\n [17350001, 1300107195000],\n [17360002, 1300158110000],\n [17370001, 1300194119000],\n [17380001, 1300244735000],\n [17390002, 1300279598000],\n [17400002, 1300319831000],\n [17410000, 1300361932000],\n [17420000, 1300384138000],\n [17430000, 1300440756000],\n [17440000, 1300461723000],\n [17450000, 1300509897000],\n [17460003, 1300536055000],\n [17470009, 1300554024000],\n [17480004, 1300601614000],\n [17490002, 1300623320000],\n [17500002, 1300638827000],\n [17510002, 1300684104000],\n [17520001, 1300705166000],\n [17530000, 1300719958000],\n [17540002, 1300762970000],\n [17550001, 1300793717000],\n [17560001, 1300809983000],\n [17570006, 1300860379000],\n [17580002, 1300885414000],\n [17590001, 1300905210000],\n [17600002, 1300957348000],\n [17610000, 1300978270000],\n [17620004, 1301022368000],\n [17630000, 1301051509000],\n [17640002, 1301068408000],\n [17650005, 1301115630000],\n [17660002, 1301141633000],\n [17670000, 1301159101000],\n [17680000, 1301207711000],\n [17690001, 1301230061000],\n [17700000, 1301247769000],\n [17710001, 1301300097000],\n [17720004, 1301321694000],\n [17730004, 1301359814000],\n [17740000, 1301394002000],\n [17750002, 1301412230000],\n [17760001, 1301461723000],\n [17770000, 1301488134000],\n [17780000, 1301505666000],\n [17790009, 1301556016000],\n [17800002, 1301578213000],\n [17810001, 1301593721000],\n [17820002, 1301640723000],\n [17830001, 1301662323000],\n [17840002, 1301677376000],\n [17850001, 1301725555000],\n [17860000, 1301749268000],\n [17870000, 1301766216000],\n [17880000, 1301813367000],\n [17890005, 1301834761000],\n [17900010, 1301849283000],\n [17910000, 1301900908000],\n [17920000, 1301924610000],\n [17930001, 1301957678000],\n [17940002, 1301998758000],\n [17950001, 1302017959000],\n [17960002, 1302072029000],\n [17970000, 1302097165000],\n [17980001, 1302133258000],\n [17990000, 1302175976000],\n [18000000, 1302197316000],\n [18010003, 1302258790000],\n [18020004, 1302278230000],\n [18030010, 1302327468000],\n [18040001, 1302352435000],\n [18050005, 1302368737000],\n [18060000, 1302416328000],\n [18070000, 1302439072000],\n [18080000, 1302457025000],\n [18090000, 1302521270000],\n [18100001, 1302541649000],\n [18110000, 1302607823000],\n [18120001, 1302629764000],\n [18130006, 1302695816000],\n [18140000, 1302717159000],\n [18150002, 1302782840000],\n [18160001, 1302806997000],\n [18170000, 1302870683000],\n [18180001, 1302894611000],\n [18190002, 1302944980000],\n [18200004, 1302965974000],\n [18210001, 1303006426000],\n [18220000, 1303034427000],\n [18230001, 1303051920000],\n [18240003, 1303108733000],\n [18250000, 1303136821000],\n [18260001, 1303195064000],\n [18270000, 1303224047000],\n [18280001, 1303282325000],\n [18290003, 1303309822000],\n [18300000, 1303368067000],\n [18310004, 1303396790000],\n [18320000, 1303453454000],\n [18330000, 1303482659000],\n [18340001, 1303525887000],\n [18350003, 1303555922000],\n [18360005, 1303572740000],\n [18370001, 1303614719000],\n [18380009, 1303640637000],\n [18390003, 1303656640000],\n [18400001, 1303712501000],\n [18410001, 1303740814000],\n [18420000, 1303793239000],\n [18430000, 1303826988000],\n [18440003, 1303878971000],\n [18450001, 1303912501000],\n [18460000, 1303952901000],\n [18470001, 1303996909000],\n [18480001, 1304026701000],\n [18490004, 1304070588000],\n [18500000, 1304090317000],\n [18510001, 1304134618000],\n [18520003, 1304163399000],\n [18530000, 1304179558000],\n [18540000, 1304224315000],\n [18550003, 1304248335000],\n [18560000, 1304264348000],\n [18570003, 1304318720000],\n [18580005, 1304344670000],\n [18590000, 1304380431000],\n [18600000, 1304418142000],\n [18610000, 1304436977000],\n [18620000, 1304483107000],\n [18630000, 1304510844000],\n [18640001, 1304525913000],\n [18650002, 1304571627000],\n [18660001, 1304594862000],\n [18670000, 1304612428000],\n [18680000, 1304670820000],\n [18690000, 1304692839000],\n [18700001, 1304730933000],\n [18710001, 1304762137000],\n [18720001, 1304779328000],\n [18730005, 1304805791000],\n [18740000, 1304842467000],\n [18750001, 1304861184000],\n [18760001, 1304880764000],\n [18770003, 1304942590000],\n [18780005, 1304959461000],\n [18790000, 1305024086000],\n [18800000, 1305042511000],\n [18810000, 1305105612000],\n [18820000, 1305126851000],\n [18830002, 1305186649000],\n [18840002, 1305211233000],\n [18850001, 1305263143000],\n [18860002, 1305296090000],\n [18870007, 1305334791000],\n [18880002, 1305369203000],\n [18890000, 1305386728000],\n [18900002, 1305427616000],\n [18910001, 1305454232000],\n [18920000, 1305470965000],\n [18930002, 1305522320000],\n [18940001, 1305553956000],\n [18950001, 1305596355000],\n [18960001, 1305638411000],\n [18970001, 1305673304000],\n [18980002, 1305723866000],\n [18990001, 1305757275000],\n [19000000, 1305809290000],\n [19010009, 1305837813000],\n [19020007, 1305894834000],\n [19030001, 1305913206000],\n [19040002, 1305965220000],\n [19050002, 1305986717000],\n [19060004, 1306009914000],\n [19070000, 1306049956000],\n [19080003, 1306069433000],\n [19090002, 1306087127000],\n [19100000, 1306150069000],\n [19110000, 1306166258000],\n [19120003, 1306228843000],\n [19130003, 1306250294000],\n [19140006, 1306311779000],\n [19150002, 1306335760000],\n [19160002, 1306393436000],\n [19170000, 1306420009000],\n [19180000, 1306473281000],\n [19190000, 1306504375000],\n [19200002, 1306530639000],\n [19210000, 1306573710000],\n [19220003, 1306593144000],\n [19230000, 1306621510000],\n [19240003, 1306655709000],\n [19250004, 1306673753000],\n [19260001, 1306688234000],\n [19270001, 1306749515000],\n [19280001, 1306768188000],\n [19290000, 1306826654000],\n [19300000, 1306852185000],\n [19310001, 1306898547000],\n [19320000, 1306935589000],\n [19330003, 1306973637000],\n [19340005, 1307019857000],\n [19350002, 1307045441000],\n [19360000, 1307103660000],\n [19370000, 1307119838000],\n [19380000, 1307169540000],\n [19390003, 1307193572000],\n [19400001, 1307210358000],\n [19410001, 1307255861000],\n [19420003, 1307276768000],\n [19430000, 1307290443000],\n [19440000, 1307350716000],\n [19450001, 1307371274000],\n [19460000, 1307422771000],\n [19470001, 1307455172000],\n [19480001, 1307499891000],\n [19490000, 1307539315000],\n [19500000, 1307567911000],\n [19510004, 1307622498000],\n [19520000, 1307640381000],\n [19530001, 1307704413000],\n [19540001, 1307722120000],\n [19550002, 1307768243000],\n [19560000, 1307794803000],\n [19570002, 1307811258000],\n [19580003, 1307857708000],\n [19590005, 1307879918000],\n [19600001, 1307895029000],\n [19610000, 1307958216000],\n [19620002, 1307978222000],\n [19630002, 1308040399000],\n [19640000, 1308063792000],\n [19650003, 1308124029000],\n [19660002, 1308150027000],\n [19670001, 1308210699000],\n [19680003, 1308236169000],\n [19690000, 1308296022000],\n [19700000, 1308322119000],\n [19710001, 1308363044000],\n [19720002, 1308395885000],\n [19730004, 1308413453000],\n [19740002, 1308458162000],\n [19750010, 1308481668000],\n [19760006, 1308496706000],\n [19770008, 1308555450000],\n [19780001, 1308580470000],\n [19790001, 1308634952000],\n [19800000, 1308666162000],\n [19810003, 1308718375000],\n [19820000, 1308752129000],\n [19830000, 1308803871000],\n [19840000, 1308838040000],\n [19850001, 1308887980000],\n [19860001, 1308923907000],\n [19870002, 1308962490000],\n [19880002, 1308998955000],\n [19890003, 1309017577000],\n [19900012, 1309064025000],\n [19910001, 1309089449000],\n [19920000, 1309106589000],\n [19930000, 1309172893000],\n [19940004, 1309193070000],\n [19950000, 1309260287000],\n [19960001, 1309282649000],\n [19970001, 1309349322000],\n [19980001, 1309378576000],\n [19990002, 1309438414000],\n [20000000, 1309470273000],\n [20010000, 1309524618000],\n [20020000, 1309552158000],\n [20030000, 1309600178000],\n [20040003, 1309620373000],\n [20050002, 1309663215000],\n [20060000, 1309690686000],\n [20070000, 1309707046000],\n [20080001, 1309766699000],\n [20090000, 1309790656000],\n [20100001, 1309846681000],\n [20110000, 1309876281000],\n [20120004, 1309932570000],\n [20130000, 1309961691000],\n [20140000, 1310003497000],\n [20150000, 1310041811000],\n [20160000, 1310056900000],\n [20170000, 1310120484000],\n [20180001, 1310141027000],\n [20190001, 1310192843000],\n [20200001, 1310218573000],\n [20210003, 1310240759000],\n [20220001, 1310284832000],\n [20230000, 1310305227000],\n [20240000, 1310341152000],\n [20250000, 1310388758000],\n [20260001, 1310418431000],\n [20270000, 1310475992000],\n [20280001, 1310508762000],\n [20290003, 1310561348000],\n [20300000, 1310591204000],\n [20310004, 1310646798000],\n [20320001, 1310670408000],\n [20330007, 1310731839000],\n [20340002, 1310755076000],\n [20350002, 1310806937000],\n [20360001, 1310829167000],\n [20370000, 1310873205000],\n [20380004, 1310902877000],\n [20390001, 1310920468000],\n [20400001, 1310968321000],\n [20410006, 1310991474000],\n [20420000, 1311006875000],\n [20430000, 1311064100000],\n [20440000, 1311084772000],\n [20450001, 1311123782000],\n [20460002, 1311162399000],\n [20470001, 1311178561000],\n [20480000, 1311235088000],\n [20490000, 1311258344000],\n [20500000, 1311303174000],\n [20510002, 1311339356000],\n [20520000, 1311362905000],\n [20530000, 1311413763000],\n [20540001, 1311434039000],\n [20550000, 1311475736000],\n [20560001, 1311505255000],\n [20570001, 1311522648000],\n [20580000, 1311579354000],\n [20590002, 1311604273000],\n [20600000, 1311653390000],\n [20610001, 1311687194000],\n [20620004, 1311730278000],\n [20630001, 1311770214000],\n [20640001, 1311795655000],\n [20650002, 1311850920000],\n [20660000, 1311871766000],\n [20670001, 1311929902000],\n [20680002, 1311953147000],\n [20690002, 1312003428000],\n [20700000, 1312032538000],\n [20710000, 1312059365000],\n [20720004, 1312104991000],\n [20730002, 1312124466000],\n [20740000, 1312170787000],\n [20750000, 1312202579000],\n [20760004, 1312222639000],\n [20770000, 1312277576000],\n [20780003, 1312297129000],\n [20790000, 1312343645000],\n [20800001, 1312375698000],\n [20810005, 1312396079000],\n [20820000, 1312451540000],\n [20830000, 1312472965000],\n [20840007, 1312526698000],\n [20850001, 1312553734000],\n [20860002, 1312594022000],\n [20870000, 1312629862000],\n [20880000, 1312649133000],\n [20890001, 1312698590000],\n [20900003, 1312724121000],\n [20910006, 1312751963000],\n [20920006, 1312800742000],\n [20930002, 1312820645000],\n [20940007, 1312875899000],\n [20950000, 1312900379000],\n [20960001, 1312941650000],\n [20970000, 1312978307000],\n [20980003, 1312998067000],\n [20990000, 1313051765000],\n [21000001, 1313076106000],\n [21010000, 1313130407000],\n [21020001, 1313160975000],\n [21030001, 1313215417000],\n [21040004, 1313247433000],\n [21050005, 1313301467000],\n [21060001, 1313332019000],\n [21070003, 1313381642000],\n [21080000, 1313414672000],\n [21090000, 1313455024000],\n [21100003, 1313495199000],\n [21110002, 1313516792000],\n [21120001, 1313572991000],\n [21130001, 1313595683000],\n [21140004, 1313650708000],\n [21150000, 1313677682000],\n [21160000, 1313726375000],\n [21170003, 1313758608000],\n [21180000, 1313781396000],\n [21190001, 1313833429000],\n [21200001, 1313855451000],\n [21210003, 1313906661000],\n [21220000, 1313933611000],\n [21230005, 1313974048000],\n [21240002, 1314015010000],\n [21250000, 1314035676000],\n [21260007, 1314093605000],\n [21270000, 1314115440000],\n [21280000, 1314172198000],\n [21290001, 1314197976000],\n [21300002, 1314250182000],\n [21310000, 1314280626000],\n [21320002, 1314322037000],\n [21330000, 1314362035000],\n [21340000, 1314386898000],\n [21350000, 1314439830000],\n [21360001, 1314461821000],\n [21370001, 1314512215000],\n [21380000, 1314538371000],\n [21390000, 1314575380000],\n [21400000, 1314620028000],\n [21410001, 1314642285000],\n [21420001, 1314701761000],\n [21430001, 1314721520000],\n [21440000, 1314777562000],\n [21450000, 1314800426000],\n [21460000, 1314846685000],\n [21470001, 1314884232000],\n [21480001, 1314930814000],\n [21490000, 1314969958000],\n [21500000, 1314999773000],\n [21510003, 1315042331000],\n [21520000, 1315062498000],\n [21530002, 1315104703000],\n [21540006, 1315134496000],\n [21550000, 1315151760000],\n [21560003, 1315214710000],\n [21570004, 1315237490000],\n [21580002, 1315303317000],\n [21590000, 1315326783000],\n [21600001, 1315394334000],\n [21610000, 1315417250000],\n [21620007, 1315484272000],\n [21630005, 1315514205000],\n [21640002, 1315572280000],\n [21650001, 1315597738000],\n [21660000, 1315650322000],\n [21670009, 1315671921000],\n [21680001, 1315722958000],\n [21690001, 1315747606000],\n [21700000, 1315786265000],\n [21710002, 1315831829000],\n [21720000, 1315864633000],\n [21730000, 1315919301000],\n [21740001, 1315965116000],\n [21750000, 1316008394000],\n [21760003, 1316062939000],\n [21770000, 1316097353000],\n [21780013, 1316159041000],\n [21790000, 1316186261000],\n [21800005, 1316239287000],\n [21810001, 1316267691000],\n [21820003, 1316306735000],\n [21830010, 1316343785000],\n [21840001, 1316363104000],\n [21850001, 1316414441000],\n [21860003, 1316438203000],\n [21870001, 1316470394000],\n [21880001, 1316522778000],\n [21890000, 1316554809000],\n [21900000, 1316600632000],\n [21910000, 1316619796000],\n [21920009, 1316684574000],\n [21930001, 1316707729000],\n [21940001, 1316763644000],\n [21950001, 1316788791000],\n [21960000, 1316835026000],\n [21970004, 1316867190000],\n [21980000, 1316889287000],\n [21990000, 1316940627000],\n [22000000, 1316961644000],\n [22010001, 1317021110000],\n [22020004, 1317049342000],\n [22030000, 1317116618000],\n [22040000, 1317141016000],\n [22050001, 1317209989000],\n [22060000, 1317236089000],\n [22070001, 1317301682000],\n [22080000, 1317349434000],\n [22090002, 1317390868000],\n [22100004, 1317432575000],\n [22110003, 1317469757000],\n [22120000, 1317488614000],\n [22130007, 1317539969000],\n [22140002, 1317562919000],\n [22150004, 1317609637000],\n [22160000, 1317650002000],\n [22170000, 1317704968000],\n [22180000, 1317738990000],\n [22190003, 1317801343000],\n [22200000, 1317827808000],\n [22210000, 1317895808000],\n [22220003, 1317919863000],\n [22230002, 1317988722000],\n [22240000, 1318016522000],\n [22250001, 1318071385000],\n [22260001, 1318093300000],\n [22270003, 1318147216000],\n [22280000, 1318170584000],\n [22290000, 1318208160000],\n [22300003, 1318240420000],\n [22310000, 1318258161000],\n [22320003, 1318316469000],\n [22330003, 1318344717000],\n [22340001, 1318409556000],\n [22350000, 1318435205000],\n [22360001, 1318504263000],\n [22370000, 1318529232000],\n [22380002, 1318595828000],\n [22390000, 1318618338000],\n [22400000, 1318671167000],\n [22410002, 1318691515000],\n [22420001, 1318735377000],\n [22430000, 1318764254000],\n [22440003, 1318781325000],\n [22450005, 1318848420000],\n [22460001, 1318869603000],\n [22470000, 1318938778000],\n [22480001, 1318967790000],\n [22490004, 1319030449000],\n [22500004, 1319079994000],\n [22510002, 1319119857000],\n [22520003, 1319179130000],\n [22530000, 1319208961000],\n [22540001, 1319255965000],\n [22550003, 1319286551000],\n [22560000, 1319305301000],\n [22570001, 1319356571000],\n [22580000, 1319378199000],\n [22590003, 1319426643000],\n [22600001, 1319463672000],\n [22610000, 1319512754000],\n [22620004, 1319551356000],\n [22630000, 1319610153000],\n [22640005, 1319641157000],\n [22650000, 1319707349000],\n [22660000, 1319731547000],\n [22670001, 1319800581000],\n [22680000, 1319819486000],\n [22690003, 1319873970000],\n [22700001, 1319897967000],\n [22710001, 1319935963000],\n [22720004, 1319968209000],\n [22730003, 1319985235000],\n [22740001, 1320011852000],\n [22750000, 1320058950000],\n [22760000, 1320071362000],\n [22770003, 1320098160000],\n [22780001, 1320152372000],\n [22790001, 1320190601000],\n [22800001, 1320241044000],\n [22810001, 1320284413000],\n [22820004, 1320319340000],\n [22830001, 1320337268000],\n [22840003, 1320404415000],\n [22850002, 1320425018000],\n [22860001, 1320480947000],\n [22870000, 1320503617000],\n [22880005, 1320543865000],\n [22890002, 1320574159000],\n [22900002, 1320591657000],\n [22910000, 1320651757000],\n [22920003, 1320677541000],\n [22930000, 1320741302000],\n [22940003, 1320765723000],\n [22950001, 1320831753000],\n [22960006, 1320855105000],\n [22970001, 1320924795000],\n [22980002, 1320944792000],\n [22990001, 1321008281000],\n [23000000, 1321023750000],\n [23010002, 1321070842000],\n [23020003, 1321103718000],\n [23030000, 1321129017000],\n [23040000, 1321177273000],\n [23050002, 1321196946000],\n [23060001, 1321261553000],\n [23070000, 1321285909000],\n [23080000, 1321355699000],\n [23090000, 1321383060000],\n [23100005, 1321449832000],\n [23110002, 1321506266000],\n [23120003, 1321541632000],\n [23130002, 1321607482000],\n [23140001, 1321632446000],\n [23150000, 1321687922000],\n [23160008, 1321712956000],\n [23170003, 1321755137000],\n [23180004, 1321786716000],\n [23190002, 1321804967000],\n [23200000, 1321873109000],\n [23210001, 1321895437000],\n [23220003, 1321963844000],\n [23230002, 1321984715000],\n [23240001, 1322039864000],\n [23250001, 1322060908000],\n [23260000, 1322127226000],\n [23270002, 1322153048000],\n [23280001, 1322222793000],\n [23290001, 1322254119000],\n [23300000, 1322305405000],\n [23310000, 1322327316000],\n [23320000, 1322381472000],\n [23330000, 1322404249000],\n [23340002, 1322465114000],\n [23350000, 1322493113000],\n [23360006, 1322560101000],\n [23370001, 1322584337000],\n [23380000, 1322653117000],\n [23390001, 1322680475000],\n [23400002, 1322745694000],\n [23410000, 1322805019000],\n [23420001, 1322838363000],\n [23430004, 1322893389000],\n [23440000, 1322920931000],\n [23450001, 1322957348000],\n [23460001, 1322993838000],\n [23470000, 1323013257000],\n [23480002, 1323079810000],\n [23490000, 1323104038000],\n [23500001, 1323173670000],\n [23510000, 1323209081000],\n [23520000, 1323264634000],\n [23530000, 1323321279000],\n [23540000, 1323355034000],\n [23550000, 1323418051000],\n [23560000, 1323446018000],\n [23570002, 1323502786000],\n [23580003, 1323529242000],\n [23590001, 1323577529000],\n [23600001, 1323605404000],\n [23610002, 1323626059000],\n [23620000, 1323692297000],\n [23630002, 1323722658000],\n [23640000, 1323782683000],\n [23650002, 1323837289000],\n [23660002, 1323873320000],\n [23670000, 1323936718000],\n [23680000, 1323963767000],\n [23690000, 1324032527000],\n [23700002, 1324058055000],\n [23710002, 1324116644000],\n [23720000, 1324140121000],\n [23730002, 1324193994000],\n [23740000, 1324217210000],\n [23750013, 1324272754000],\n [23760005, 1324304982000],\n [23770001, 1324365660000],\n [23780000, 1324394436000],\n [23790000, 1324459838000],\n [23800000, 1324484711000],\n [23810000, 1324550120000],\n [23820000, 1324573423000],\n [23830002, 1324631388000],\n [23840000, 1324653579000],\n [23850006, 1324696103000],\n [23860002, 1324726178000],\n [23870000, 1324741818000],\n [23880005, 1324784124000],\n [23890000, 1324810794000],\n [23900002, 1324825733000],\n [23910008, 1324876708000],\n [23920002, 1324907837000],\n [23930004, 1324949590000],\n [23940001, 1324988433000],\n [23950000, 1325009155000],\n [23960001, 1325065524000],\n [23970003, 1325088851000],\n [23980000, 1325144565000],\n [23990000, 1325171450000],\n [24000001, 1325225873000],\n [24010000, 1325255398000],\n [24020000, 1325299260000],\n [24030001, 1325329713000],\n [24040000, 1325343849000],\n [24050000, 1325354156000],\n [24060002, 1325391700000],\n [24070005, 1325414182000],\n [24080002, 1325431130000],\n [24090005, 1325478851000],\n [24100000, 1325508947000],\n [24110003, 1325530378000],\n [24120001, 1325581779000],\n [24130000, 1325602300000],\n [24140003, 1325647072000],\n [24150003, 1325677503000],\n [24160000, 1325695447000],\n [24170000, 1325751276000],\n [24180003, 1325775153000],\n [24190000, 1325826025000],\n [24200004, 1325856193000],\n [24210000, 1325881515000],\n [24220004, 1325930803000],\n [24230005, 1325951349000],\n [24240002, 1326004206000],\n [24250002, 1326030421000],\n [24260000, 1326066557000],\n [24270000, 1326104441000],\n [24280000, 1326122937000],\n [24290000, 1326185192000],\n [24300004, 1326209696000],\n [24310000, 1326276388000],\n [24320006, 1326301033000],\n [24330000, 1326370510000],\n [24340004, 1326401119000],\n [24350000, 1326460332000],\n [24360000, 1326497622000],\n [24370001, 1326539733000],\n [24380003, 1326558635000],\n [24390005, 1326609165000],\n [24400001, 1326632524000],\n [24410000, 1326656873000],\n [24420001, 1326718293000],\n [24430003, 1326756418000],\n [24440000, 1326807702000],\n [24450000, 1326863425000],\n [24460001, 1326897026000],\n [24470000, 1326958084000],\n [24480003, 1326985898000],\n [24490003, 1327050172000],\n [24500000, 1327074420000],\n [24510007, 1327128099000],\n [24520000, 1327153359000],\n [24530001, 1327179534000],\n [24540000, 1327223273000],\n [24550001, 1327242616000],\n [24560000, 1327296026000],\n [24570000, 1327327396000],\n [24580001, 1327380190000],\n [24590004, 1327414612000],\n [24600003, 1327472400000],\n [24610001, 1327502381000],\n [24620000, 1327564547000],\n [24630000, 1327591471000],\n [24640000, 1327656324000],\n [24650000, 1327679517000],\n [24660001, 1327732168000],\n [24670000, 1327757534000],\n [24680000, 1327786496000],\n [24690001, 1327827888000],\n [24700003, 1327847355000],\n [24710000, 1327901011000],\n [24720002, 1327931464000],\n [24730000, 1327978534000],\n [24740003, 1328015394000],\n [24750002, 1328045492000],\n [24760003, 1328097938000],\n [24770005, 1328118306000],\n [24780001, 1328180280000],\n [24790001, 1328199589000],\n [24800000, 1328260480000],\n [24810000, 1328281188000],\n [24820003, 1328326341000],\n [24830000, 1328356163000],\n [24840001, 1328373411000],\n [24850005, 1328421344000],\n [24860000, 1328444479000],\n [24870000, 1328460248000],\n [24880003, 1328518733000],\n [24890003, 1328539867000],\n [24900002, 1328589557000],\n [24910000, 1328620608000],\n [24920000, 1328648168000],\n [24930000, 1328702024000],\n [24940000, 1328721346000],\n [24950006, 1328783479000],\n [24960000, 1328803437000],\n [24970000, 1328863429000],\n [24980001, 1328886008000],\n [24990000, 1328929723000],\n [25000000, 1328960415000],\n [25010002, 1328977344000],\n [25020000, 1329025731000],\n [25030001, 1329049980000],\n [25040000, 1329068690000],\n [25050004, 1329130478000],\n [25060001, 1329146399000],\n [25070000, 1329183000000],\n [25080002, 1329215844000],\n [25090000, 1329228949000],\n [25100001, 1329244207000],\n [25110000, 1329302631000],\n [25120001, 1329321708000],\n [25130000, 1329381029000],\n [25140000, 1329404840000],\n [25150000, 1329462877000],\n [25160000, 1329489644000],\n [25170003, 1329534862000],\n [25180003, 1329566487000],\n [25190004, 1329585135000],\n [25200000, 1329633782000],\n [25210001, 1329656239000],\n [25220000, 1329678393000],\n [25230003, 1329737720000],\n [25240000, 1329757682000],\n [25250001, 1329819619000],\n [25260006, 1329839336000],\n [25270001, 1329895309000],\n [25280001, 1329916969000],\n [25290000, 1329931156000],\n [25300002, 1329990158000],\n [25310001, 1330010883000],\n [25320002, 1330069055000],\n [25330005, 1330093987000],\n [25340002, 1330135679000],\n [25350001, 1330167880000],\n [25360000, 1330185900000],\n [25370005, 1330233020000],\n [25380000, 1330257575000],\n [25390000, 1330275288000],\n [25400006, 1330337069000],\n [25410001, 1330358238000],\n [25420000, 1330419710000],\n [25430000, 1330442947000],\n [25440000, 1330501132000],\n [25450002, 1330524884000],\n [25460003, 1330571420000],\n [25470000, 1330607826000],\n [25480000, 1330646728000],\n [25490000, 1330690283000],\n [25500000, 1330707682000],\n [25510000, 1330757961000],\n [25520002, 1330781287000],\n [25530000, 1330801141000],\n [25540000, 1330848222000],\n [25550002, 1330868611000],\n [25560000, 1330896046000],\n [25570001, 1330946186000],\n [25580002, 1330963906000],\n [25590000, 1331022524000],\n [25600002, 1331045469000],\n [25610000, 1331096539000],\n [25620000, 1331126122000],\n [25630000, 1331153408000],\n [25640001, 1331206395000],\n [25650002, 1331224551000],\n [25660000, 1331280542000],\n [25670000, 1331301283000],\n [25680000, 1331320141000],\n [25690001, 1331368532000],\n [25700000, 1331389470000],\n [25710000, 1331423623000],\n [25720001, 1331460346000],\n [25730001, 1331477367000],\n [25740002, 1331525812000],\n [25750000, 1331557421000],\n [25760002, 1331583780000],\n [25770003, 1331637365000],\n [25780002, 1331655489000],\n [25790000, 1331711754000],\n [25800002, 1331734318000],\n [25810000, 1331772872000],\n [25820004, 1331812945000],\n [25830000, 1331831627000],\n [25840002, 1331889754000],\n [25850005, 1331910420000],\n [25860000, 1331953728000],\n [25870005, 1331982874000],\n [25880001, 1331999511000],\n [25890001, 1332046691000],\n [25900002, 1332071972000],\n [25910008, 1332089058000],\n [25920000, 1332147695000],\n [25930000, 1332169521000],\n [25940000, 1332215782000],\n [25950001, 1332244364000],\n [25960000, 1332261210000],\n [25970001, 1332318531000],\n [25980001, 1332341176000],\n [25990001, 1332391355000],\n [26000000, 1332421461000],\n [26010001, 1332448273000],\n [26020001, 1332498487000],\n [26030003, 1332517971000],\n [26040003, 1332568170000],\n [26050005, 1332593995000],\n [26060000, 1332612085000],\n [26070001, 1332661599000],\n [26080000, 1332682793000],\n [26090000, 1332715829000],\n [26100001, 1332759035000],\n [26110000, 1332777419000],\n [26120001, 1332831588000],\n [26130000, 1332856823000],\n [26140001, 1332899875000],\n [26150003, 1332935043000],\n [26160005, 1332953658000],\n [26170000, 1333009094000],\n [26180002, 1333032588000],\n [26190002, 1333081253000],\n [26200000, 1333110673000],\n [26210005, 1333131212000],\n [26220001, 1333180480000],\n [26230003, 1333202751000],\n [26240002, 1333216958000],\n [26250003, 1333261703000],\n [26260001, 1333283092000],\n [26270002, 1333297313000],\n [26280003, 1333350689000],\n [26290000, 1333374776000],\n [26300003, 1333414324000],\n [26310000, 1333448080000],\n [26320001, 1333465609000],\n [26330002, 1333513846000],\n [26340000, 1333543161000],\n [26350000, 1333565419000],\n [26360000, 1333620535000],\n [26370016, 1333641602000],\n [26380000, 1333698076000],\n [26390003, 1333722924000],\n [26400000, 1333767843000],\n [26410001, 1333799891000],\n [26420000, 1333819060000],\n [26430001, 1333869652000],\n [26440004, 1333891179000],\n [26450008, 1333926182000],\n [26460000, 1333975402000],\n [26470000, 1334009892000],\n [26480001, 1334063752000],\n [26490000, 1334104979000],\n [26500001, 1334150649000],\n [26510003, 1334197725000],\n [26520006, 1334239625000],\n [26530002, 1334300793000],\n [26540002, 1334329381000],\n [26550000, 1334378884000],\n [26560004, 1334407100000],\n [26570003, 1334425369000],\n [26580001, 1334474696000],\n [26590000, 1334496269000],\n [26600000, 1334531353000],\n [26610000, 1334582684000],\n [26620000, 1334632119000],\n [26630000, 1334671685000],\n [26640003, 1334732050000],\n [26650003, 1334761449000],\n [26660000, 1334828133000],\n [26670003, 1334851309000],\n [26680000, 1334918853000],\n [26690002, 1334940306000],\n [26700001, 1334994930000],\n [26710001, 1335018257000],\n [26720000, 1335058796000],\n [26730002, 1335087232000],\n [26740000, 1335104499000],\n [26750003, 1335157043000],\n [26760002, 1335189740000],\n [26770000, 1335245891000],\n [26780000, 1335278145000],\n [26790000, 1335339602000],\n [26800003, 1335366431000],\n [26810000, 1335431515000],\n [26820000, 1335454402000],\n [26830000, 1335519587000],\n [26840000, 1335541861000],\n [26850001, 1335594938000],\n [26860000, 1335620982000],\n [26870001, 1335654336000],\n [26880000, 1335693317000],\n [26890000, 1335712127000],\n [26900000, 1335752226000],\n [26910002, 1335780274000],\n [26920001, 1335797031000],\n [26930002, 1335840978000],\n [26940001, 1335876413000],\n [26950004, 1335894469000],\n [26960010, 1335953947000],\n [26970002, 1335972896000],\n [26980002, 1336020059000],\n [26990000, 1336047444000],\n [27000004, 1336063912000],\n [27010000, 1336112956000],\n [27020000, 1336137514000],\n [27030000, 1336153320000],\n [27040002, 1336202325000],\n [27050001, 1336224411000],\n [27060000, 1336241566000],\n [27070003, 1336288292000],\n [27080002, 1336308446000],\n [27090002, 1336324327000],\n [27100000, 1336390568000],\n [27110005, 1336408761000],\n [27120004, 1336476729000],\n [27130001, 1336496528000],\n [27140000, 1336563051000],\n [27150003, 1336582429000],\n [27160002, 1336650098000],\n [27170000, 1336671286000],\n [27180001, 1336738136000],\n [27190008, 1336762649000],\n [27200001, 1336816258000],\n [27210000, 1336836124000],\n [27220001, 1336881015000],\n [27230000, 1336907644000],\n [27240001, 1336923102000],\n [27250000, 1336984269000],\n [27260001, 1337006982000],\n [27270000, 1337064011000],\n [27280003, 1337092299000],\n [27290000, 1337148869000],\n [27300001, 1337178811000],\n [27310000, 1337236012000],\n [27320001, 1337265681000],\n [27330002, 1337325114000],\n [27340000, 1337352785000],\n [27350000, 1337400123000],\n [27360001, 1337430078000],\n [27370001, 1337446930000],\n [27380000, 1337494574000],\n [27390000, 1337516826000],\n [27400000, 1337533460000],\n [27410003, 1337597039000],\n [27420000, 1337616114000],\n [27430001, 1337681477000],\n [27440000, 1337702199000],\n [27450003, 1337766827000],\n [27460001, 1337785580000],\n [27470001, 1337843145000],\n [27480000, 1337870282000],\n [27490002, 1337926687000],\n [27500006, 1337956060000],\n [27510001, 1338000450000],\n [27520002, 1338032806000],\n [27530003, 1338049617000],\n [27540001, 1338098559000],\n [27550000, 1338121850000],\n [27560001, 1338141443000],\n [27570002, 1338206892000],\n [27580003, 1338229454000],\n [27590000, 1338293963000],\n [27600005, 1338315960000],\n [27610005, 1338380867000],\n [27620000, 1338404423000],\n [27630000, 1338467376000],\n [27640002, 1338486580000],\n [27650000, 1338549472000],\n [27660001, 1338566618000],\n [27670000, 1338615989000],\n [27680000, 1338642024000],\n [27690003, 1338660669000],\n [27700001, 1338707484000],\n [27710004, 1338728007000],\n [27720000, 1338744173000],\n [27730002, 1338808696000],\n [27740000, 1338826837000],\n [27750002, 1338893483000],\n [27760003, 1338912375000],\n [27770000, 1338976276000],\n [27780000, 1338997211000],\n [27790000, 1339061938000],\n [27800005, 1339083281000],\n [27810001, 1339148802000],\n [27820001, 1339169278000],\n [27830003, 1339217169000],\n [27840004, 1339243775000],\n [27850000, 1339257949000],\n [27860001, 1339303042000],\n [27870003, 1339327478000],\n [27880001, 1339342682000],\n [27890001, 1339406105000],\n [27900002, 1339428305000],\n [27910001, 1339492536000],\n [27920000, 1339514526000],\n [27930000, 1339577898000],\n [27940000, 1339600802000],\n [27950001, 1339666418000],\n [27960000, 1339688855000],\n [27970001, 1339754701000],\n [27980000, 1339775979000],\n [27990002, 1339827471000],\n [28000001, 1339851999000],\n [28010000, 1339869886000],\n [28020003, 1339917808000],\n [28030000, 1339938744000],\n [28040001, 1339956022000],\n [28050000, 1340019221000],\n [28060000, 1340035977000],\n [28070001, 1340096245000],\n [28080001, 1340116922000],\n [28090006, 1340172198000],\n [28100000, 1340201271000],\n [28110000, 1340251067000],\n [28120000, 1340286408000],\n [28130005, 1340331666000],\n [28140001, 1340372317000],\n [28150001, 1340405911000],\n [28160007, 1340447121000],\n [28170001, 1340467578000],\n [28180005, 1340515988000],\n [28190000, 1340540304000],\n [28200000, 1340557451000],\n [28210001, 1340622994000],\n [28220000, 1340641537000],\n [28230002, 1340710729000],\n [28240002, 1340740385000],\n [28250002, 1340802755000],\n [28260001, 1340855684000],\n [28270001, 1340893485000],\n [28280000, 1340956017000],\n [28290001, 1340983084000],\n [28300006, 1341034045000],\n [28310002, 1341062165000],\n [28320002, 1341083841000],\n [28330003, 1341130422000],\n [28340002, 1341150295000],\n [28350001, 1341191796000],\n [28360003, 1341235505000],\n [28370002, 1341282818000],\n [28380002, 1341322738000],\n [28390004, 1341368707000],\n [28400002, 1341409081000],\n [28410002, 1341459614000],\n [28420000, 1341497096000],\n [28430000, 1341552647000],\n [28440001, 1341585199000],\n [28450003, 1341622267000],\n [28460000, 1341655958000],\n [28470002, 1341672783000],\n [28480004, 1341710315000],\n [28490009, 1341741193000],\n [28500000, 1341759278000],\n [28510001, 1341816710000],\n [28520002, 1341844218000],\n [28530012, 1341901072000],\n [28540000, 1341930582000],\n [28550001, 1341988592000],\n [28560004, 1342017454000],\n [28570000, 1342075828000],\n [28580001, 1342103967000],\n [28590000, 1342161081000],\n [28600003, 1342190253000],\n [28610001, 1342235717000],\n [28620001, 1342268239000],\n [28630001, 1342286166000],\n [28640010, 1342337530000],\n [28650001, 1342360857000],\n [28660003, 1342396987000],\n [28670000, 1342431172000],\n [28680003, 1342450217000],\n [28690000, 1342508733000],\n [28700000, 1342536379000],\n [28710001, 1342596428000],\n [28720002, 1342623394000],\n [28730002, 1342684054000],\n [28740000, 1342709478000],\n [28750000, 1342765943000],\n [28760006, 1342795449000],\n [28770000, 1342842784000],\n [28780001, 1342873829000],\n [28790000, 1342892175000],\n [28800000, 1342941622000],\n [28810000, 1342963500000],\n [28820001, 1342994775000],\n [28830003, 1343043964000],\n [28840001, 1343063586000],\n [28850006, 1343123005000],\n [28860001, 1343144148000],\n [28870002, 1343199642000],\n [28880003, 1343226067000],\n [28890000, 1343274080000],\n [28900001, 1343307927000],\n [28910004, 1343345931000],\n [28920000, 1343389753000],\n [28930005, 1343409584000],\n [28940001, 1343463465000],\n [28950000, 1343487606000],\n [28960005, 1343533031000],\n [28970002, 1343561406000],\n [28980000, 1343578531000],\n [28990001, 1343635911000],\n [29000001, 1343659416000],\n [29010000, 1343708503000],\n [29020001, 1343739760000],\n [29030000, 1343759280000],\n [29040002, 1343813698000],\n [29050000, 1343833676000],\n [29060003, 1343881064000],\n [29070000, 1343911244000],\n [29080000, 1343928684000],\n [29090003, 1343983187000],\n [29100001, 1344005495000],\n [29110001, 1344049127000],\n [29120000, 1344080978000],\n [29130003, 1344100077000],\n [29140000, 1344149355000],\n [29150001, 1344172653000],\n [29160001, 1344192347000],\n [29170000, 1344245752000],\n [29180000, 1344265213000],\n [29190004, 1344310025000],\n [29200000, 1344341702000],\n [29210000, 1344357427000],\n [29220000, 1344408602000],\n [29230005, 1344432797000],\n [29240000, 1344449877000],\n [29250004, 1344499896000],\n [29260003, 1344522133000],\n [29270000, 1344558985000],\n [29280000, 1344597380000],\n [29290000, 1344617865000],\n [29300000, 1344672749000],\n [29310000, 1344697892000],\n [29320002, 1344750005000],\n [29330001, 1344778553000],\n [29340000, 1344819126000],\n [29350002, 1344857294000],\n [29360000, 1344877526000],\n [29370005, 1344931746000],\n [29380004, 1344955704000],\n [29390002, 1344999794000],\n [29400003, 1345031254000],\n [29410001, 1345048813000],\n [29420002, 1345102616000],\n [29430001, 1345126849000],\n [29440002, 1345169851000],\n [29450000, 1345205034000],\n [29460000, 1345224004000],\n [29470001, 1345275931000],\n [29480001, 1345300341000],\n [29490003, 1345342277000],\n [29500000, 1345374875000],\n [29510000, 1345392844000],\n [29520002, 1345449113000],\n [29530000, 1345473512000],\n [29540001, 1345521340000],\n [29550002, 1345553473000],\n [29560000, 1345576673000],\n [29570000, 1345631832000],\n [29580000, 1345652011000],\n [29590009, 1345707406000],\n [29600004, 1345731272000],\n [29610003, 1345774886000],\n [29620005, 1345810760000],\n [29630001, 1345831478000],\n [29640002, 1345883956000],\n [29650000, 1345907135000],\n [29660000, 1345952305000],\n [29670001, 1345981178000],\n [29680000, 1345998619000],\n [29690000, 1346056048000],\n [29700001, 1346079034000],\n [29710002, 1346128089000],\n [29720003, 1346159030000],\n [29730009, 1346185433000],\n [29740005, 1346238445000],\n [29750001, 1346257670000],\n [29760000, 1346316933000],\n [29770000, 1346338800000],\n [29780005, 1346374925000],\n [29790011, 1346409902000],\n [29800001, 1346425111000],\n [29810000, 1346463735000],\n [29820002, 1346496963000],\n [29830001, 1346515159000],\n [29840003, 1346562643000],\n [29850001, 1346587804000],\n [29860004, 1346605220000],\n [29870002, 1346668826000],\n [29880000, 1346688952000],\n [29890004, 1346755226000],\n [29900002, 1346777475000],\n [29910000, 1346843623000],\n [29920003, 1346865832000],\n [29930005, 1346931902000],\n [29940001, 1346953696000],\n [29950000, 1347018301000],\n [29960000, 1347039567000],\n [29970000, 1347092333000],\n [29980002, 1347115246000],\n [29990001, 1347153602000],\n [30000002, 1347183917000],\n [30010000, 1347201084000],\n [30020000, 1347249061000],\n [30030003, 1347284093000],\n [30040001, 1347322819000],\n [30050000, 1347367541000],\n [30060000, 1347391244000],\n [30070002, 1347452321000],\n [30080000, 1347475900000],\n [30090000, 1347537862000],\n [30100002, 1347559116000],\n [30110002, 1347623392000],\n [30120002, 1347642254000],\n [30130001, 1347695632000],\n [30140002, 1347719027000],\n [30150005, 1347760228000],\n [30160005, 1347792525000],\n [30170000, 1347810529000],\n [30180003, 1347858045000],\n [30190000, 1347882687000],\n [30200005, 1347898127000],\n [30210001, 1347961234000],\n [30220000, 1347982321000],\n [30230000, 1348046296000],\n [30240009, 1348068337000],\n [30250002, 1348133170000],\n [30260000, 1348155473000],\n [30270002, 1348221215000],\n [30280000, 1348242526000],\n [30290000, 1348295069000],\n [30300000, 1348320609000],\n [30310002, 1348344515000],\n [30320004, 1348388630000],\n [30330002, 1348407709000],\n [30340000, 1348445478000],\n [30350001, 1348491432000],\n [30360002, 1348526881000],\n [30370003, 1348578382000],\n [30380006, 1348619988000],\n [30390004, 1348666157000],\n [30400001, 1348717374000],\n [30410000, 1348754288000],\n [30420001, 1348810599000],\n [30430000, 1348842518000],\n [30440001, 1348887881000],\n [30450004, 1348920258000],\n [30460001, 1348937804000],\n [30470006, 1348984917000],\n [30480001, 1349005416000],\n [30490000, 1349017720000],\n [30500001, 1349067895000],\n [30510001, 1349098051000],\n [30520000, 1349128966000],\n [30530001, 1349180813000],\n [30540000, 1349200374000],\n [30550001, 1349262605000],\n [30560004, 1349279737000],\n [30570000, 1349341873000],\n [30580001, 1349362683000],\n [30590004, 1349418047000],\n [30600003, 1349446021000],\n [30610002, 1349478102000],\n [30620000, 1349516772000],\n [30630002, 1349536086000],\n [30640001, 1349582802000],\n [30650005, 1349612047000],\n [30660000, 1349630540000],\n [30670000, 1349681778000],\n [30680001, 1349702931000],\n [30690005, 1349729020000],\n [30700000, 1349784465000],\n [30710000, 1349800542000],\n [30720005, 1349864590000],\n [30730002, 1349883197000],\n [30740007, 1349948520000],\n [30750000, 1349970840000],\n [30760001, 1350037993000],\n [30770000, 1350059990000],\n [30780006, 1350114426000],\n [30790001, 1350137646000],\n [30800000, 1350176862000],\n [30810002, 1350207937000],\n [30820001, 1350225907000],\n [30830004, 1350283400000],\n [30840000, 1350311590000],\n [30850000, 1350373544000],\n [30860000, 1350400104000],\n [30870000, 1350464861000],\n [30880001, 1350488021000],\n [30890002, 1350554413000],\n [30900000, 1350576170000],\n [30910002, 1350641788000],\n [30920001, 1350662648000],\n [30930000, 1350716905000],\n [30940004, 1350741541000],\n [30950000, 1350779641000],\n [30960001, 1350813264000],\n [30970000, 1350830966000],\n [30980004, 1350891403000],\n [30990001, 1350916993000],\n [31000000, 1350976045000],\n [31010001, 1351003096000],\n [31020001, 1351065860000],\n [31030002, 1351091655000],\n [31040002, 1351158698000],\n [31050001, 1351181008000],\n [31060001, 1351248541000],\n [31070000, 1351270528000],\n [31080000, 1351326009000],\n [31090001, 1351348327000],\n [31100000, 1351391151000],\n [31110001, 1351419833000],\n [31120000, 1351436406000],\n [31130002, 1351494007000],\n [31140000, 1351520318000],\n [31150001, 1351571494000],\n [31160000, 1351603993000],\n [31170001, 1351616879000],\n [31180001, 1351672701000],\n [31190004, 1351688915000],\n [31200002, 1351697284000],\n [31210001, 1351755761000],\n [31220000, 1351781594000],\n [31230001, 1351844251000],\n [31240000, 1351868361000],\n [31250000, 1351915604000],\n [31260002, 1351945557000],\n [31270000, 1351963493000],\n [31280001, 1352014755000],\n [31290000, 1352035437000],\n [31300001, 1352071439000],\n [31310002, 1352119911000],\n [31320000, 1352157772000],\n [31330000, 1352207601000],\n [31340000, 1352252867000],\n [31350001, 1352295460000],\n [31360003, 1352343034000],\n [31370001, 1352382698000],\n [31380000, 1352436799000],\n [31390001, 1352472324000],\n [31400000, 1352520774000],\n [31410000, 1352551559000],\n [31420003, 1352568588000],\n [31430001, 1352613659000],\n [31440001, 1352633614000],\n [31450005, 1352645308000],\n [31460008, 1352691678000],\n [31470001, 1352727836000],\n [31480000, 1352780469000],\n [31490000, 1352816844000],\n [31500003, 1352880609000],\n [31510001, 1352907694000],\n [31520001, 1352977785000],\n [31530002, 1353005580000],\n [31540000, 1353072123000],\n [31550001, 1353121500000],\n [31560003, 1353155121000],\n [31570001, 1353175532000],\n [31580000, 1353226769000],\n [31590001, 1353248098000],\n [31600002, 1353306006000],\n [31610002, 1353337613000],\n [31620001, 1353405329000],\n [31630003, 1353426802000],\n [31640003, 1353492674000],\n [31650001, 1353513109000],\n [31660002, 1353579990000],\n [31670000, 1353600377000],\n [31680001, 1353655160000],\n [31690000, 1353680325000],\n [31700000, 1353724383000],\n [31710001, 1353759163000],\n [31720002, 1353779334000],\n [31730001, 1353830614000],\n [31740000, 1353852339000],\n [31750001, 1353907684000],\n [31760001, 1353941076000],\n [31770000, 1354006974000],\n [31780001, 1354032634000],\n [31790002, 1354102566000],\n [31800000, 1354126363000],\n [31810000, 1354193232000],\n [31820003, 1354241685000],\n [31830000, 1354284395000],\n [31840009, 1354331929000],\n [31850000, 1354364870000],\n [31860001, 1354387817000],\n [31870001, 1354438127000],\n [31880001, 1354459257000],\n [31890002, 1354519928000],\n [31900002, 1354547493000],\n [31910000, 1354615038000],\n [31920001, 1354639209000],\n [31930000, 1354708282000],\n [31940000, 1354745934000],\n [31950001, 1354800989000],\n [31960001, 1354860621000],\n [31970001, 1354892723000],\n [31980000, 1354946804000],\n [31990000, 1354973952000],\n [32000000, 1355011859000],\n [32010004, 1355047009000],\n [32020000, 1355065908000],\n [32030000, 1355130015000],\n [32040001, 1355154706000],\n [32050002, 1355224028000],\n [32060000, 1355249813000],\n [32070000, 1355315780000],\n [32080000, 1355362193000],\n [32090000, 1355407121000],\n [32100000, 1355469050000],\n [32110000, 1355498162000],\n [32120002, 1355553225000],\n [32130000, 1355579716000],\n [32140000, 1355619367000],\n [32150000, 1355653645000],\n [32160000, 1355672606000],\n [32170000, 1355737957000],\n [32180000, 1355760599000],\n [32190000, 1355826598000],\n [32200000, 1355849812000],\n [32210003, 1355916669000],\n [32220001, 1355935338000],\n [32230000, 1355999504000],\n [32240000, 1356019847000],\n [32250000, 1356084601000],\n [32260002, 1356106676000],\n [32270005, 1356162133000],\n [32280001, 1356186797000],\n [32290004, 1356230230000],\n [32300001, 1356262480000],\n [32310002, 1356278457000],\n [32320003, 1356322817000],\n [32330004, 1356347954000],\n [32340000, 1356361566000],\n [32350000, 1356398407000],\n [32360000, 1356432951000],\n [32370002, 1356448195000],\n [32380000, 1356496994000],\n [32390009, 1356528420000],\n [32400001, 1356560459000],\n [32410001, 1356606089000],\n [32420003, 1356625487000],\n [32430005, 1356679025000],\n [32440001, 1356704600000],\n [32450002, 1356747556000],\n [32460001, 1356782493000],\n [32470002, 1356804577000],\n [32480005, 1356857553000],\n [32490000, 1356879703000],\n [32500000, 1356921717000],\n [32510002, 1356949912000],\n [32520001, 1356965991000],\n [32530000, 1356971788000],\n [32540000, 1357005717000],\n [32550001, 1357028963000],\n [32560008, 1357047482000],\n [32570000, 1357065837000],\n [32580000, 1357116945000],\n [32590002, 1357138715000],\n [32600001, 1357183055000],\n [32610000, 1357212910000],\n [32620006, 1357230509000],\n [32630001, 1357284201000],\n [32640000, 1357308794000],\n [32650010, 1357346583000],\n [32660000, 1357382482000],\n [32670004, 1357401362000],\n [32680001, 1357451550000],\n [32690000, 1357476017000],\n [32700000, 1357494075000],\n [32710003, 1357552561000],\n [32720000, 1357573049000],\n [32730002, 1357636115000],\n [32740001, 1357658985000],\n [32750000, 1357722615000],\n [32760001, 1357746111000],\n [32770002, 1357812581000],\n [32780001, 1357835793000],\n [32790003, 1357903657000],\n [32800002, 1357926407000],\n [32810000, 1357982969000],\n [32820005, 1358004671000],\n [32830003, 1358054726000],\n [32840001, 1358080998000],\n [32850000, 1358100823000],\n [32860001, 1358149594000],\n [32870001, 1358169325000],\n [32880003, 1358199284000],\n [32890000, 1358255481000],\n [32900000, 1358306245000],\n [32910001, 1358345546000],\n [32920000, 1358407151000],\n [32930000, 1358436073000],\n [32940001, 1358502920000],\n [32950000, 1358526289000],\n [32960001, 1358582688000],\n [32970001, 1358606161000],\n [32980002, 1358649874000],\n [32990001, 1358678827000],\n [33000005, 1358695809000],\n [33010004, 1358759419000],\n [33020001, 1358782613000],\n [33030002, 1358847606000],\n [33040001, 1358870521000],\n [33050001, 1358936101000],\n [33060000, 1358958980000],\n [33070001, 1359025425000],\n [33080001, 1359048058000],\n [33090003, 1359113713000],\n [33100002, 1359136635000],\n [33110001, 1359190541000],\n [33120000, 1359212401000],\n [33130002, 1359257152000],\n [33140001, 1359285220000],\n [33150003, 1359301502000],\n [33160000, 1359364171000],\n [33170002, 1359386594000],\n [33180003, 1359450774000],\n [33190001, 1359473743000],\n [33200001, 1359535857000],\n [33210003, 1359558011000],\n [33220000, 1359608548000],\n [33230000, 1359638083000],\n [33240001, 1359659753000],\n [33250001, 1359717631000],\n [33260000, 1359736486000],\n [33270000, 1359787846000],\n [33280000, 1359810823000],\n [33290005, 1359828486000],\n [33300002, 1359875996000],\n [33310004, 1359895908000],\n [33320002, 1359912237000],\n [33330000, 1359972666000],\n [33340003, 1359991723000],\n [33350000, 1360051414000],\n [33360000, 1360075785000],\n [33370000, 1360129999000],\n [33380004, 1360158180000],\n [33390002, 1360202106000],\n [33400000, 1360240975000],\n [33410000, 1360266923000],\n [33420002, 1360324787000],\n [33430000, 1360345066000],\n [33440001, 1360398665000],\n [33450000, 1360420991000],\n [33460000, 1360463006000],\n [33470000, 1360495216000],\n [33480000, 1360512536000],\n [33490000, 1360562472000],\n [33500002, 1360586674000],\n [33510002, 1360607159000],\n [33520004, 1360668303000],\n [33530001, 1360689941000],\n [33540000, 1360752747000],\n [33550000, 1360769416000],\n [33560000, 1360811670000],\n [33570000, 1360840391000],\n [33580000, 1360852612000],\n [33590000, 1360879818000],\n [33600000, 1360929139000],\n [33610001, 1360947954000],\n [33620000, 1361001599000],\n [33630002, 1361024996000],\n [33640001, 1361066180000],\n [33650000, 1361096699000],\n [33660002, 1361114495000],\n [33670001, 1361172685000],\n [33680000, 1361198026000],\n [33690004, 1361249539000],\n [33700001, 1361281162000],\n [33710000, 1361325351000],\n [33720001, 1361365549000],\n [33730000, 1361406340000],\n [33740003, 1361451235000],\n [33750002, 1361481535000],\n [33760003, 1361531344000],\n [33770001, 1361546410000],\n [33780000, 1361594376000],\n [33790003, 1361623143000],\n [33800001, 1361643129000],\n [33810002, 1361692896000],\n [33820003, 1361714116000],\n [33830002, 1361759930000],\n [33840000, 1361798429000],\n [33850001, 1361848052000],\n [33860000, 1361885684000],\n [33870001, 1361934021000],\n [33880000, 1361970745000],\n [33890001, 1362013181000],\n [33900001, 1362056052000],\n [33910000, 1362083062000],\n [33920001, 1362138442000],\n [33930000, 1362158543000],\n [33940002, 1362211924000],\n [33950000, 1362233946000],\n [33960003, 1362268771000],\n [33970000, 1362302007000],\n [33980005, 1362320066000],\n [33990000, 1362368927000],\n [34000001, 1362404229000],\n [34010001, 1362451090000],\n [34020001, 1362489362000],\n [34030001, 1362533721000],\n [34040000, 1362573912000],\n [34050000, 1362608923000],\n [34060000, 1362657771000],\n [34070000, 1362680849000],\n [34080000, 1362740206000],\n [34090001, 1362758897000],\n [34100000, 1362807733000],\n [34110001, 1362831210000],\n [34120000, 1362843477000],\n [34130001, 1362883265000],\n [34140000, 1362908291000],\n [34150000, 1362925095000],\n [34160000, 1362966745000],\n [34170000, 1363003879000],\n [34180000, 1363022619000],\n [34190001, 1363082209000],\n [34200003, 1363102242000],\n [34210001, 1363158027000],\n [34220006, 1363183022000],\n [34230000, 1363214377000],\n [34240000, 1363259970000],\n [34250003, 1363275997000],\n [34260003, 1363332164000],\n [34270001, 1363356684000],\n [34280000, 1363392926000],\n [34290000, 1363426876000],\n [34300000, 1363446114000],\n [34310004, 1363489717000],\n [34320004, 1363517532000],\n [34330000, 1363533647000],\n [34340000, 1363588591000],\n [34350001, 1363613184000],\n [34360004, 1363646755000],\n [34370000, 1363693573000],\n [34380000, 1363712786000],\n [34390000, 1363764801000],\n [34400004, 1363787051000],\n [34410006, 1363823001000],\n [34420000, 1363866102000],\n [34430000, 1363886655000],\n [34440002, 1363945291000],\n [34450006, 1363966020000],\n [34460000, 1364014561000],\n [34470001, 1364041700000],\n [34480001, 1364060263000],\n [34490002, 1364110667000],\n [34500002, 1364132150000],\n [34510000, 1364158715000],\n [34520002, 1364207776000],\n [34530000, 1364227606000],\n [34540000, 1364282648000],\n [34550001, 1364307643000],\n [34560005, 1364354029000],\n [34570000, 1364386780000],\n [34580001, 1364406700000],\n [34590000, 1364460535000],\n [34600002, 1364482170000],\n [34610000, 1364530121000],\n [34620000, 1364560514000],\n [34630002, 1364580436000],\n [34640003, 1364631885000],\n [34650002, 1364654125000],\n [34660000, 1364695210000],\n [34670001, 1364724468000],\n [34680000, 1364741581000],\n [34690004, 1364774365000],\n [34700001, 1364812449000],\n [34710000, 1364829362000],\n [34720004, 1364879934000],\n [34730002, 1364907299000],\n [34740001, 1364927146000],\n [34750001, 1364980183000],\n [34760003, 1365000659000],\n [34770001, 1365045313000],\n [34780000, 1365076504000],\n [34790003, 1365094373000],\n [34800002, 1365149517000],\n [34810000, 1365172056000],\n [34820000, 1365213235000],\n [34830004, 1365242665000],\n [34840000, 1365259978000],\n [34850000, 1365298274000],\n [34860003, 1365327124000],\n [34870003, 1365345164000],\n [34880002, 1365396764000],\n [34890001, 1365429032000],\n [34900003, 1365480402000],\n [34910002, 1365515898000],\n [34920000, 1365571064000],\n [34930001, 1365604805000],\n [34940003, 1365667660000],\n [34950000, 1365694831000],\n [34960000, 1365763981000],\n [34970002, 1365788159000],\n [34980003, 1365844846000],\n [34990002, 1365866098000],\n [35000000, 1365912680000],\n [35010000, 1365938418000],\n [35020009, 1365954749000],\n [35030002, 1366020003000],\n [35040003, 1366041754000],\n [35050001, 1366111126000],\n [35060002, 1366136702000],\n [35070001, 1366202459000],\n [35080006, 1366248627000],\n [35090000, 1366297213000],\n [35100000, 1366362163000],\n [35110001, 1366386116000],\n [35120000, 1366440216000],\n [35130002, 1366464803000],\n [35140002, 1366496101000],\n [35150001, 1366533569000],\n [35160002, 1366552354000],\n [35170000, 1366599837000],\n [35180003, 1366638967000],\n [35190001, 1366696124000],\n [35200005, 1366727915000],\n [35210001, 1366789728000],\n [35220000, 1366814996000],\n [35230001, 1366877875000],\n [35240000, 1366902753000],\n [35250004, 1366967102000],\n [35260002, 1366989933000],\n [35270003, 1367042683000],\n [35280000, 1367069376000],\n [35290001, 1367097857000],\n [35300001, 1367140787000],\n [35310002, 1367160512000],\n [35320000, 1367203401000],\n [35330000, 1367231060000],\n [35340004, 1367247611000],\n [35350000, 1367298029000],\n [35360000, 1367326900000],\n [35370000, 1367340896000],\n [35380001, 1367401377000],\n [35390000, 1367420920000],\n [35400001, 1367474131000],\n [35410001, 1367503508000],\n [35420002, 1367547259000],\n [35430003, 1367582146000],\n [35440000, 1367600557000],\n [35450000, 1367653215000],\n [35460003, 1367676318000],\n [35470003, 1367702380000],\n [35480002, 1367743839000],\n [35490003, 1367763454000],\n [35500002, 1367799672000],\n [35510000, 1367831949000],\n [35520007, 1367849485000],\n [35530000, 1367897825000],\n [35540001, 1367935595000],\n [35550001, 1367994106000],\n [35560001, 1368024203000],\n [35570006, 1368086266000],\n [35580000, 1368111893000],\n [35590000, 1368173676000],\n [35600001, 1368198005000],\n [35610001, 1368243823000],\n [35620002, 1368272106000],\n [35630000, 1368288754000],\n [35640000, 1368334385000],\n [35650002, 1368358082000],\n [35660002, 1368372869000],\n [35670000, 1368435347000],\n [35680000, 1368457871000],\n [35690001, 1368520421000],\n [35700000, 1368544432000],\n [35710002, 1368609152000],\n [35720000, 1368632844000],\n [35730001, 1368699096000],\n [35740000, 1368720560000],\n [35750002, 1368788434000],\n [35760000, 1368809626000],\n [35770004, 1368864506000],\n [35780000, 1368887525000],\n [35790002, 1368928451000],\n [35800006, 1368957247000],\n [35810000, 1368974492000],\n [35820000, 1369027081000],\n [35830000, 1369058682000],\n [35840001, 1369108781000],\n [35850000, 1369144659000],\n [35860000, 1369196731000],\n [35870000, 1369231420000],\n [35880000, 1369284640000],\n [35890000, 1369317701000],\n [35900000, 1369365115000],\n [35910000, 1369403469000],\n [35920002, 1369445821000],\n [35930000, 1369480312000],\n [35940001, 1369498786000],\n [35950000, 1369547395000],\n [35960005, 1369570839000],\n [35970003, 1369588480000],\n [35980000, 1369654650000],\n [35990004, 1369677301000],\n [36000003, 1369744096000],\n [36010001, 1369773124000],\n [36020000, 1369832322000],\n [36030000, 1369892728000],\n [36040000, 1369923001000],\n [36050003, 1369976757000],\n [36060001, 1370008172000],\n [36070000, 1370034071000],\n [36080002, 1370078311000],\n [36090004, 1370097755000],\n [36100000, 1370137880000],\n [36110001, 1370165367000],\n [36120000, 1370182475000],\n [36130002, 1370227262000],\n [36140000, 1370266045000],\n [36150000, 1370305401000],\n [36160001, 1370352160000],\n [36170004, 1370397133000],\n [36180000, 1370439727000],\n [36190003, 1370485761000],\n [36200001, 1370525228000],\n [36210000, 1370569914000],\n [36220004, 1370611516000],\n [36230009, 1370648909000],\n [36240001, 1370686818000],\n [36250000, 1370704462000],\n [36260003, 1370745990000],\n [36270000, 1370773068000],\n [36280001, 1370789150000],\n [36290000, 1370838426000],\n [36300001, 1370871222000],\n [36310000, 1370913442000],\n [36320001, 1370956581000],\n [36330002, 1370997170000],\n [36340001, 1371041329000],\n [36350000, 1371066729000],\n [36360003, 1371126696000],\n [36370000, 1371154621000],\n [36380001, 1371213332000],\n [36390002, 1371236016000],\n [36400000, 1371287069000],\n [36410000, 1371308204000],\n [36420000, 1371349710000],\n [36430002, 1371378306000],\n [36440000, 1371394756000],\n [36450001, 1371450733000],\n [36460000, 1371479351000],\n [36470001, 1371530182000],\n [36480000, 1371563379000],\n [36490002, 1371606919000],\n [36500002, 1371647601000],\n [36510001, 1371688831000],\n [36520002, 1371733114000],\n [36530000, 1371767609000],\n [36540000, 1371818399000],\n [36550001, 1371842736000],\n [36560002, 1371892516000],\n [36570002, 1371913541000],\n [36580000, 1371957173000],\n [36590006, 1371984267000],\n [36600001, 1372000119000],\n [36610000, 1372059277000],\n [36620000, 1372085763000],\n [36630000, 1372147271000],\n [36640002, 1372172906000],\n [36650000, 1372233724000],\n [36660002, 1372258397000],\n [36670003, 1372316050000],\n [36680000, 1372344310000],\n [36690003, 1372403092000],\n [36700000, 1372430704000],\n [36710003, 1372478206000],\n [36720001, 1372508088000],\n [36730001, 1372526097000],\n [36740003, 1372574807000],\n [36750000, 1372597137000],\n [36760000, 1372615663000],\n [36770000, 1372678627000],\n [36780004, 1372700829000],\n [36790002, 1372766402000],\n [36800001, 1372792926000],\n [36810000, 1372852918000],\n [36820003, 1372874800000],\n [36830003, 1372937528000],\n [36840000, 1372958129000],\n [36850001, 1373022700000],\n [36860000, 1373043138000],\n [36870000, 1373097021000],\n [36880006, 1373120418000],\n [36890005, 1373144993000],\n [36900000, 1373183895000],\n [36910000, 1373202657000],\n [36920000, 1373218741000],\n [36930000, 1373281954000],\n [36940000, 1373301604000],\n [36950000, 1373367314000],\n [36960000, 1373388217000],\n [36970005, 1373453035000],\n [36980000, 1373474500000],\n [36990000, 1373540055000],\n [37000001, 1373563115000],\n [37010000, 1373628900000],\n [37020000, 1373650645000],\n [37030002, 1373704437000],\n [37040000, 1373727114000],\n [37050006, 1373771545000],\n [37060005, 1373802717000],\n [37070000, 1373821369000],\n [37080001, 1373870908000],\n [37090000, 1373892934000],\n [37100000, 1373911492000],\n [37110003, 1373974641000],\n [37120000, 1373997077000],\n [37130001, 1374061966000],\n [37140002, 1374087619000],\n [37150001, 1374148800000],\n [37160008, 1374174217000],\n [37170000, 1374234991000],\n [37180001, 1374255688000],\n [37190001, 1374309357000],\n [37200002, 1374331853000],\n [37210001, 1374375180000],\n [37220000, 1374404348000],\n [37230002, 1374420626000],\n [37240000, 1374477526000],\n [37250000, 1374502909000],\n [37260001, 1374552567000],\n [37270000, 1374585225000],\n [37280003, 1374626401000],\n [37290000, 1374667952000],\n [37300001, 1374693759000],\n [37310001, 1374750480000],\n [37320000, 1374772297000],\n [37330002, 1374831692000],\n [37340000, 1374854036000],\n [37350001, 1374908418000],\n [37360004, 1374935059000],\n [37370001, 1374979887000],\n [37380000, 1375011527000],\n [37390002, 1375029597000],\n [37400002, 1375087939000],\n [37410000, 1375109998000],\n [37420001, 1375161830000],\n [37430001, 1375191923000],\n [37440000, 1375232946000],\n [37450000, 1375272094000],\n [37460001, 1375287532000],\n [37470000, 1375341379000],\n [37480000, 1375365927000],\n [37490000, 1375404444000],\n [37500003, 1375443179000],\n [37510001, 1375461256000],\n [37520002, 1375513602000],\n [37530002, 1375538515000],\n [37540002, 1375575106000],\n [37550004, 1375610354000],\n [37560000, 1375628282000],\n [37570002, 1375675631000],\n [37580000, 1375707251000],\n [37590001, 1375727391000],\n [37600001, 1375781193000],\n [37610002, 1375801243000],\n [37620001, 1375848211000],\n [37630000, 1375879256000],\n [37640005, 1375896679000],\n [37650000, 1375950116000],\n [37660002, 1375972012000],\n [37670001, 1376008998000],\n [37680001, 1376045664000],\n [37690006, 1376064238000],\n [37700002, 1376117367000],\n [37710001, 1376144696000],\n [37720005, 1376191150000],\n [37730000, 1376223380000],\n [37740001, 1376249258000],\n [37750001, 1376302974000],\n [37760000, 1376324962000],\n [37770003, 1376379604000],\n [37780001, 1376404591000],\n [37790001, 1376451395000],\n [37800001, 1376483821000],\n [37810000, 1376505856000],\n [37820002, 1376557229000],\n [37830000, 1376578917000],\n [37840000, 1376625963000],\n [37850001, 1376656561000],\n [37860001, 1376677251000],\n [37870002, 1376728731000],\n [37880000, 1376751974000],\n [37890004, 1376800729000],\n [37900000, 1376829027000],\n [37910000, 1376849565000],\n [37920000, 1376905760000],\n [37930000, 1376925891000],\n [37940000, 1376979900000],\n [37950000, 1377007345000],\n [37960000, 1377052827000],\n [37970001, 1377088208000],\n [37980000, 1377110956000],\n [37990006, 1377166181000],\n [38000001, 1377186057000],\n [38010000, 1377239944000],\n [38020002, 1377266798000],\n [38030000, 1377307287000],\n [38040001, 1377341505000],\n [38050003, 1377361200000],\n [38060000, 1377412670000],\n [38070005, 1377437016000],\n [38080003, 1377474053000],\n [38090003, 1377518447000],\n [38100002, 1377540322000],\n [38110001, 1377600153000],\n [38120001, 1377621114000],\n [38130000, 1377681632000],\n [38140001, 1377704485000],\n [38150000, 1377763375000],\n [38160003, 1377788184000],\n [38170002, 1377842353000],\n [38180005, 1377871027000],\n [38190000, 1377900233000],\n [38200002, 1377939649000],\n [38210001, 1377958601000],\n [38220003, 1377986125000],\n [38230001, 1378025318000],\n [38240002, 1378044932000],\n [38250000, 1378095298000],\n [38260000, 1378129838000],\n [38270000, 1378181543000],\n [38280001, 1378217043000],\n [38290000, 1378270350000],\n [38300000, 1378303716000],\n [38310001, 1378360455000],\n [38320001, 1378392908000],\n [38330000, 1378456687000],\n [38340001, 1378481391000],\n [38350000, 1378535921000],\n [38360001, 1378562601000],\n [38370002, 1378601699000],\n [38380000, 1378634402000],\n [38390000, 1378652499000],\n [38400000, 1378710554000],\n [38410000, 1378737840000],\n [38420003, 1378797520000],\n [38430001, 1378825252000],\n [38440001, 1378888982000],\n [38450002, 1378913608000],\n [38460000, 1378979577000],\n [38470000, 1379002251000],\n [38480001, 1379069153000],\n [38490000, 1379090230000],\n [38500000, 1379146714000],\n [38510001, 1379170837000],\n [38520001, 1379219093000],\n [38530001, 1379246161000],\n [38540000, 1379264109000],\n [38550000, 1379312723000],\n [38560000, 1379335204000],\n [38570000, 1379356798000],\n [38580001, 1379421630000],\n [38590000, 1379465000000],\n [38600002, 1379512079000],\n [38610000, 1379566247000],\n [38620004, 1379600141000],\n [38630002, 1379656975000],\n [38640002, 1379688418000],\n [38650003, 1379740660000],\n [38660001, 1379770479000],\n [38670001, 1379815814000],\n [38680004, 1379850237000],\n [38690001, 1379870995000],\n [38700002, 1379925107000],\n [38710000, 1379947170000],\n [38720001, 1380011108000],\n [38730002, 1380036696000],\n [38740000, 1380106543000],\n [38750001, 1380137694000],\n [38760000, 1380202580000],\n [38770001, 1380268313000],\n [38780000, 1380297975000],\n [38790001, 1380358738000],\n [38800000, 1380382146000],\n [38810000, 1380435524000],\n [38820001, 1380460498000],\n [38830002, 1380504622000],\n [38840001, 1380548581000],\n [38850003, 1380599636000],\n [38860001, 1380636128000],\n [38870000, 1380695813000],\n [38880000, 1380726816000],\n [38890000, 1380793282000],\n [38900002, 1380817153000],\n [38910005, 1380886252000],\n [38920002, 1380911028000],\n [38930001, 1380966632000],\n [38940004, 1380987605000],\n [38950000, 1381036757000],\n [38960001, 1381062521000],\n [38970001, 1381083578000],\n [38980000, 1381147999000],\n [38990002, 1381183596000],\n [39000000, 1381238718000],\n [39010000, 1381289418000],\n [39020001, 1381327969000],\n [39030001, 1381378325000],\n [39040001, 1381414484000],\n [39050002, 1381473072000],\n [39060001, 1381503610000],\n [39070000, 1381557108000],\n [39080001, 1381587652000],\n [39090002, 1381638859000],\n [39100005, 1381670136000],\n [39110001, 1381713463000],\n [39120002, 1381750602000],\n [39130000, 1381771266000],\n [39140000, 1381840441000],\n [39150004, 1381886453000],\n [39160000, 1381928937000],\n [39170001, 1381987485000],\n [39180001, 1382023386000],\n [39190000, 1382094081000],\n [39200000, 1382118886000],\n [39210002, 1382176669000],\n [39220000, 1382198409000],\n [39230000, 1382251062000],\n [39240000, 1382275083000],\n [39250000, 1382319937000],\n [39260000, 1382363621000],\n [39270003, 1382424605000],\n [39280000, 1382454868000],\n [39290002, 1382522396000],\n [39300000, 1382545319000],\n [39310000, 1382614356000],\n [39320001, 1382636773000],\n [39330000, 1382702066000],\n [39340001, 1382723317000],\n [39350001, 1382777459000],\n [39360000, 1382800070000],\n [39370003, 1382851982000],\n [39380000, 1382879757000],\n [39390004, 1382933535000],\n [39400001, 1382971415000],\n [39410000, 1383039852000],\n [39420000, 1383064852000],\n [39430003, 1383134247000],\n [39440000, 1383150130000],\n [39450003, 1383209088000],\n [39460004, 1383226803000],\n [39470001, 1383239461000],\n [39480002, 1383305804000],\n [39490000, 1383330874000],\n [39500003, 1383389307000],\n [39510002, 1383410824000],\n [39520000, 1383465663000],\n [39530001, 1383488952000],\n [39540004, 1383536354000],\n [39550001, 1383566404000],\n [39560000, 1383587943000],\n [39570001, 1383655387000],\n [39580000, 1383709273000],\n [39590001, 1383749270000],\n [39600000, 1383817042000],\n [39610004, 1383844566000],\n [39620000, 1383914206000],\n [39630002, 1383958908000],\n [39640009, 1383999261000],\n [39650000, 1384025481000],\n [39660000, 1384074693000],\n [39670001, 1384094814000],\n [39680002, 1384144502000],\n [39690000, 1384176297000],\n [39700000, 1384206383000],\n [39710000, 1384264473000],\n [39720000, 1384332176000],\n [39730000, 1384362320000],\n [39740000, 1384434643000],\n [39750002, 1384497066000],\n [39760001, 1384530859000],\n [39770001, 1384591769000],\n [39780000, 1384616741000],\n [39790005, 1384670466000],\n [39800001, 1384695642000],\n [39810003, 1384750781000],\n [39820000, 1384787697000],\n [39830002, 1384861205000],\n [39840001, 1384917103000],\n [39850000, 1384959607000],\n [39860000, 1385027424000],\n [39870001, 1385053575000],\n [39880001, 1385122298000],\n [39890001, 1385152257000],\n [39900001, 1385205088000],\n [39910001, 1385227283000],\n [39920001, 1385282720000],\n [39930000, 1385304834000],\n [39940006, 1385370821000],\n [39950002, 1385397805000],\n [39960001, 1385469875000],\n [39970002, 1385532270000],\n [39980002, 1385566841000],\n [39990003, 1385639730000],\n [40000001, 1385692970000],\n [40010000, 1385736566000],\n [40020004, 1385795632000],\n [40030000, 1385823366000],\n [40040004, 1385872369000],\n [40050002, 1385901651000],\n [40060000, 1385946562000],\n [40070001, 1385995108000],\n [40080000, 1386063717000],\n [40090003, 1386093291000],\n [40100004, 1386163639000],\n [40110001, 1386226926000],\n [40120001, 1386258746000],\n [40130000, 1386331000000],\n [40140001, 1386375148000],\n [40150000, 1386418743000],\n [40160001, 1386444120000],\n [40170000, 1386494429000],\n [40180000, 1386515214000],\n [40190000, 1386583554000],\n [40200002, 1386610726000],\n [40210001, 1386680661000],\n [40220000, 1386740668000],\n [40230000, 1386775701000],\n [40240001, 1386847675000],\n [40250002, 1386895894000],\n [40260002, 1386944786000],\n [40270006, 1387000670000],\n [40280000, 1387031121000],\n [40290000, 1387082024000],\n [40300001, 1387111458000],\n [40310000, 1387155881000],\n [40320002, 1387203263000],\n [40330000, 1387269619000],\n [40340001, 1387298063000],\n [40350000, 1387367915000],\n [40360000, 1387414556000],\n [40370000, 1387461528000],\n [40380000, 1387517028000],\n [40390000, 1387551023000],\n [40400002, 1387605448000],\n [40410001, 1387635538000],\n [40420002, 1387682554000],\n [40430001, 1387715737000],\n [40440001, 1387743208000],\n [40450000, 1387793441000],\n [40460000, 1387812170000],\n [40470002, 1387863887000],\n [40480000, 1387891948000],\n [40490001, 1387906185000],\n [40500004, 1387960133000],\n [40510000, 1387980328000],\n [40520000, 1388012402000],\n [40530000, 1388059806000],\n [40540002, 1388080796000],\n [40550001, 1388139588000],\n [40560000, 1388160731000],\n [40570001, 1388213456000],\n [40580001, 1388240301000],\n [40590000, 1388286861000],\n [40600001, 1388321884000],\n [40610002, 1388366148000],\n [40620000, 1388406437000],\n [40630001, 1388432055000],\n [40640003, 1388479513000],\n [40650000, 1388500080000],\n [40660000, 1388506206000],\n [40670000, 1388541772000],\n [40680000, 1388566722000],\n [40690000, 1388586411000],\n [40700002, 1388631705000],\n [40710000, 1388666584000],\n [40720000, 1388697954000],\n [40730004, 1388746402000],\n [40740002, 1388767513000],\n [40750000, 1388821955000],\n [40760000, 1388845971000],\n [40770000, 1388891736000],\n [40780002, 1388920808000],\n [40790000, 1388938832000],\n [40800000, 1388999657000],\n [40810001, 1389023069000],\n [40820000, 1389086558000],\n [40830004, 1389111542000],\n [40840002, 1389179422000],\n [40850001, 1389204596000],\n [40860002, 1389271476000],\n [40870001, 1389314701000],\n [40880001, 1389362164000],\n [40890005, 1389408217000],\n [40900003, 1389443723000],\n [40910000, 1389466321000],\n [40920000, 1389520043000],\n [40930000, 1389541663000],\n [40940001, 1389595713000],\n [40950000, 1389619982000],\n [40960001, 1389670949000],\n [40970000, 1389710777000],\n [40980000, 1389777793000],\n [40990003, 1389805633000],\n [41000001, 1389876411000],\n [41010004, 1389930176000],\n [41020000, 1389969392000],\n [41030003, 1390022259000],\n [41040000, 1390052441000],\n [41050000, 1390095627000],\n [41060001, 1390129212000],\n [41070000, 1390148564000],\n [41080002, 1390218360000],\n [41090000, 1390253841000],\n [41100000, 1390310266000],\n [41110002, 1390365394000],\n [41120000, 1390400848000],\n [41130000, 1390462727000],\n [41140000, 1390490469000],\n [41150006, 1390557209000],\n [41160000, 1390581485000],\n [41170000, 1390639346000],\n [41180000, 1390662146000],\n [41190001, 1390711554000],\n [41200000, 1390738921000],\n [41210000, 1390761786000],\n [41220001, 1390825685000],\n [41230004, 1390864879000],\n [41240001, 1390914926000],\n [41250000, 1390967166000],\n [41260001, 1391003550000],\n [41270000, 1391057312000],\n [41280001, 1391090640000],\n [41290000, 1391133271000],\n [41300004, 1391173543000],\n [41310001, 1391196402000],\n [41320000, 1391248927000],\n [41330004, 1391268984000],\n [41340002, 1391318292000],\n [41350003, 1391343049000],\n [41360000, 1391358890000],\n [41370006, 1391420322000],\n [41380002, 1391440394000],\n [41390000, 1391500984000],\n [41400001, 1391526066000],\n [41410003, 1391586012000],\n [41420001, 1391612173000],\n [41430000, 1391671991000],\n [41440000, 1391698434000],\n [41450000, 1391757471000],\n [41460000, 1391784929000],\n [41470000, 1391834616000],\n [41480000, 1391862063000],\n [41490003, 1391881559000],\n [41500000, 1391932582000],\n [41510000, 1391953765000],\n [41520004, 1391998284000],\n [41530002, 1392037552000],\n [41540000, 1392066530000],\n [41550000, 1392112644000],\n [41560000, 1392131840000],\n [41570001, 1392194076000],\n [41580000, 1392219316000],\n [41590000, 1392282853000],\n [41600000, 1392304606000],\n [41610005, 1392348357000],\n [41620001, 1392376215000],\n [41630000, 1392389474000],\n [41640001, 1392426804000],\n [41650000, 1392460251000],\n [41660002, 1392478667000],\n [41670001, 1392526199000],\n [41680001, 1392552314000],\n [41690001, 1392570369000],\n [41700000, 1392633722000],\n [41710000, 1392655918000],\n [41720000, 1392721170000],\n [41730000, 1392744219000],\n [41740002, 1392810166000],\n [41750000, 1392839290000],\n [41760000, 1392899792000],\n [41770001, 1392946266000],\n [41780003, 1392989834000],\n [41790000, 1393032132000],\n [41800001, 1393067824000],\n [41810001, 1393084402000],\n [41820001, 1393135710000],\n [41830000, 1393161351000],\n [41840002, 1393203897000],\n [41850002, 1393248383000],\n [41860001, 1393291912000],\n [41870001, 1393335014000],\n [41880000, 1393388020000],\n [41890001, 1393424619000],\n [41900004, 1393484298000],\n [41910001, 1393513270000],\n [41920000, 1393575080000],\n [41930004, 1393599724000],\n [41940000, 1393649411000],\n [41950001, 1393678485000],\n [41960000, 1393701470000],\n [41970000, 1393749770000],\n [41980000, 1393770253000],\n [41990000, 1393815455000],\n [42000000, 1393852628000],\n [42010003, 1393897936000],\n [42020000, 1393940871000],\n [42030000, 1393995575000],\n [42040000, 1394028460000],\n [42050003, 1394084274000],\n [42060000, 1394116297000],\n [42070006, 1394174826000],\n [42080000, 1394203514000],\n [42090000, 1394254421000],\n [42100001, 1394284010000],\n [42110001, 1394306295000],\n [42120004, 1394353495000],\n [42130000, 1394372476000],\n [42140000, 1394403256000],\n [42150003, 1394454978000],\n [42160002, 1394492825000],\n [42170001, 1394542229000],\n [42180000, 1394584146000],\n [42190000, 1394628598000],\n [42200001, 1394665824000],\n [42210000, 1394712644000],\n [42220000, 1394732736000],\n [42230006, 1394793084000],\n [42240000, 1394811767000],\n [42250000, 1394861234000],\n [42260001, 1394888921000],\n [42270000, 1394916941000],\n [42280002, 1394963854000],\n [42290000, 1394983698000],\n [42300005, 1395045978000],\n [42310003, 1395070383000],\n [42320002, 1395132113000],\n [42330003, 1395157270000],\n [42340000, 1395220938000],\n [42350002, 1395245872000],\n [42360000, 1395308429000],\n [42370003, 1395331913000],\n [42380000, 1395390043000],\n [42390000, 1395414897000],\n [42400001, 1395466421000],\n [42410002, 1395495043000],\n [42420002, 1395535189000],\n [42430001, 1395571843000],\n [42440003, 1395591434000],\n [42450001, 1395653812000],\n [42460000, 1395677629000],\n [42470000, 1395738654000],\n [42480002, 1395762934000],\n [42490000, 1395822734000],\n [42500002, 1395847945000],\n [42510000, 1395906367000],\n [42520001, 1395933159000],\n [42530002, 1395991085000],\n [42540002, 1396018980000],\n [42550001, 1396071207000],\n [42560001, 1396100789000],\n [42570002, 1396138699000],\n [42580000, 1396175404000],\n [42590001, 1396194254000],\n [42600002, 1396252141000],\n [42610000, 1396277944000],\n [42620000, 1396323943000],\n [42630002, 1396357555000],\n [42640000, 1396391700000],\n [42650000, 1396440208000],\n [42660002, 1396469027000],\n [42670000, 1396524679000],\n [42680001, 1396546938000],\n [42690001, 1396606462000],\n [42700001, 1396627908000],\n [42710002, 1396682080000],\n [42720000, 1396707226000],\n [42730001, 1396750142000],\n [42740003, 1396782763000],\n [42750000, 1396800959000],\n [42760001, 1396863535000],\n [42770000, 1396887145000],\n [42780001, 1396954829000],\n [42790001, 1396982837000],\n [42800001, 1397049398000],\n [42810002, 1397110653000],\n [42820000, 1397143579000],\n [42830000, 1397215545000],\n [42840002, 1397254675000],\n [42850002, 1397301720000],\n [42860000, 1397322967000],\n [42870002, 1397375930000],\n [42880000, 1397397773000],\n [42890001, 1397455706000],\n [42900000, 1397488856000],\n [42910000, 1397560697000],\n [42920001, 1397599593000],\n [42930005, 1397657542000],\n [42940000, 1397724358000],\n [42950000, 1397752975000],\n [42960000, 1397823929000],\n [42970004, 1397861939000],\n [42980000, 1397906037000],\n [42990001, 1397925324000],\n [43000001, 1397977859000],\n [43010002, 1398000649000],\n [43020001, 1398051368000],\n [43030002, 1398090478000],\n [43040000, 1398155348000],\n [43050000, 1398182383000],\n [43060000, 1398253653000],\n [43070000, 1398292539000],\n [43080002, 1398347725000],\n [43090000, 1398411627000],\n [43100001, 1398440983000],\n [43110000, 1398499356000],\n [43120000, 1398524216000],\n [43130000, 1398571734000],\n [43140000, 1398600068000],\n [43150000, 1398618732000],\n [43160008, 1398685865000],\n [43170000, 1398709556000],\n [43180003, 1398763821000],\n [43190002, 1398783609000],\n [43200001, 1398842780000],\n [43210000, 1398868275000],\n [43220000, 1398917399000],\n [43230000, 1398951267000],\n [43240001, 1398985439000],\n [43250002, 1399033139000],\n [43260000, 1399053659000],\n [43270002, 1399106899000],\n [43280000, 1399129212000],\n [43290001, 1399181866000],\n [43300000, 1399212177000],\n [43310004, 1399255726000],\n [43320000, 1399290772000],\n [43330001, 1399309105000],\n [43340003, 1399363810000],\n [43350000, 1399385332000],\n [43360002, 1399442840000],\n [43370000, 1399475201000],\n [43380000, 1399544901000],\n [43390001, 1399570022000],\n [43400000, 1399638792000],\n [43410001, 1399670418000],\n [43420001, 1399718529000],\n [43430002, 1399738317000],\n [43440002, 1399790375000],\n [43450000, 1399814799000],\n [43460002, 1399864598000],\n [43470001, 1399905263000],\n [43480000, 1399971974000],\n [43490003, 1399999898000],\n [43500000, 1400070205000],\n [43510000, 1400115414000],\n [43520000, 1400163520000],\n [43530003, 1400228908000],\n [43540000, 1400255949000],\n [43550001, 1400313912000],\n [43560000, 1400339124000],\n [43570000, 1400388580000],\n [43580004, 1400416359000],\n [43590002, 1400444855000],\n [43600005, 1400506605000],\n [43610001, 1400569839000],\n [43620000, 1400601150000],\n [43630001, 1400672517000],\n [43640000, 1400723348000],\n [43650003, 1400769717000],\n [43660000, 1400837345000],\n [43670003, 1400862090000],\n [43680003, 1400921009000],\n [43690002, 1400945026000],\n [43700000, 1400996183000],\n [43710000, 1401022371000],\n [43720000, 1401063071000],\n [43730002, 1401112830000],\n [43740000, 1401177721000],\n [43750000, 1401208122000],\n [43760000, 1401280984000],\n [43770000, 1401333522000],\n [43780001, 1401375608000],\n [43790001, 1401444365000],\n [43800001, 1401471127000],\n [43810003, 1401530344000],\n [43820001, 1401550961000],\n [43830000, 1401600993000],\n [43840000, 1401626966000],\n [43850000, 1401657217000],\n [43860008, 1401713968000],\n [43870003, 1401767777000],\n [43880001, 1401807602000],\n [43890002, 1401876480000],\n [43900000, 1401904346000],\n [43910001, 1401973528000],\n [43920001, 1402025979000],\n [43930000, 1402063985000],\n [43940000, 1402112952000],\n [43950000, 1402145459000],\n [43960001, 1402172306000],\n [43970001, 1402218554000],\n [43980000, 1402238671000],\n [43990000, 1402291402000],\n [44000001, 1402324160000],\n [44010000, 1402384520000],\n [44020002, 1402413601000],\n [44030000, 1402483256000],\n [44040000, 1402509616000],\n [44050000, 1402578519000],\n [44060000, 1402623458000],\n [44070002, 1402667904000],\n [44080001, 1402715545000],\n [44090000, 1402750894000],\n [44100000, 1402785867000],\n [44110000, 1402826595000],\n [44120000, 1402846052000],\n [44130000, 1402913327000],\n [44140000, 1402938297000],\n [44150000, 1403006985000],\n [44160001, 1403044298000],\n [44170002, 1403097803000],\n [44180000, 1403150518000],\n [44190000, 1403188706000],\n [44200000, 1403253194000],\n [44210002, 1403279667000],\n [44220001, 1403336437000],\n [44230002, 1403361689000],\n [44240001, 1403406798000],\n [44250004, 1403437621000],\n [44260000, 1403458355000],\n [44270001, 1403526600000],\n [44280000, 1403575405000],\n [44290000, 1403619591000],\n [44300006, 1403682903000],\n [44310002, 1403706840000],\n [44320003, 1403759025000],\n [44330002, 1403791871000],\n [44340000, 1403845932000],\n [44350000, 1403878913000],\n [44360000, 1403926002000],\n [44370000, 1403958052000],\n [44380004, 1403978310000],\n [44390002, 1404027816000],\n [44400000, 1404049867000],\n [44410002, 1404092202000],\n [44420000, 1404134229000],\n [44430000, 1404164270000],\n [44440001, 1404218810000],\n [44450000, 1404257765000],\n [44460001, 1404307517000],\n [44470000, 1404361188000],\n [44480000, 1404396968000],\n [44490000, 1404450979000],\n [44500000, 1404484370000],\n [44510000, 1404531329000],\n [44520002, 1404563707000],\n [44530000, 1404586575000],\n [44540003, 1404635596000],\n [44550000, 1404656947000],\n [44560001, 1404700582000],\n [44570000, 1404737750000],\n [44580001, 1404759751000],\n [44590000, 1404823038000],\n [44600002, 1404871988000],\n [44610000, 1404914244000],\n [44620000, 1404970300000],\n [44630000, 1405002069000],\n [44640002, 1405060766000],\n [44650000, 1405091407000],\n [44660000, 1405146732000],\n [44670001, 1405174715000],\n [44680001, 1405220483000],\n [44690002, 1405251314000],\n [44700000, 1405270285000],\n [44710000, 1405337178000],\n [44720000, 1405361842000],\n [44730002, 1405427494000],\n [44740003, 1405475240000],\n [44750004, 1405519456000],\n [44760003, 1405582910000],\n [44770000, 1405612234000],\n [44780003, 1405680048000],\n [44790003, 1405709128000],\n [44800000, 1405766040000],\n [44810000, 1405789241000],\n [44820001, 1405845253000],\n [44830002, 1405869189000],\n [44840001, 1405922372000],\n [44850002, 1405949188000],\n [44860000, 1405992548000],\n [44870000, 1406035142000],\n [44880001, 1406086433000],\n [44890001, 1406124315000],\n [44900002, 1406182689000],\n [44910005, 1406214574000],\n [44920000, 1406278021000],\n [44930000, 1406305823000],\n [44940001, 1406365818000],\n [44950000, 1406392124000],\n [44960001, 1406448520000],\n [44970001, 1406473115000],\n [44980002, 1406534631000],\n [44990000, 1406562421000],\n [45000000, 1406627631000],\n [45010000, 1406653768000],\n [45020000, 1406718289000],\n [45030000, 1406745105000],\n [45040002, 1406806551000],\n [45050007, 1406826261000],\n [45060000, 1406886698000],\n [45070000, 1406909284000],\n [45080002, 1406964417000],\n [45090003, 1406990559000],\n [45100001, 1407037498000],\n [45110000, 1407068214000],\n [45120000, 1407091073000],\n [45130000, 1407150920000],\n [45140000, 1407174945000],\n [45150001, 1407236279000],\n [45160000, 1407260335000],\n [45170004, 1407322261000],\n [45180000, 1407346097000],\n [45190001, 1407407515000],\n [45200002, 1407428521000],\n [45210000, 1407487560000],\n [45220002, 1407510877000],\n [45230001, 1407563375000],\n [45240001, 1407591542000],\n [45250000, 1407630080000],\n [45260002, 1407664218000],\n [45270001, 1407683121000],\n [45280000, 1407735019000],\n [45290001, 1407765570000],\n [45300001, 1407812110000],\n [45310000, 1407847709000],\n [45320000, 1407873477000],\n [45330000, 1407926302000],\n [45340000, 1407947772000],\n [45350002, 1408002387000],\n [45360000, 1408027778000],\n [45370001, 1408077726000],\n [45380000, 1408111355000],\n [45390002, 1408162182000],\n [45400000, 1408197659000],\n [45410000, 1408248522000],\n [45420004, 1408280781000],\n [45430000, 1408324617000],\n [45440001, 1408366777000],\n [45450002, 1408408751000],\n [45460005, 1408452134000],\n [45470002, 1408488705000],\n [45480000, 1408537718000],\n [45490000, 1408577858000],\n [45500001, 1408624745000],\n [45510000, 1408661595000],\n [45520000, 1408709941000],\n [45530001, 1408739295000],\n [45540002, 1408790292000],\n [45550001, 1408813387000],\n [45560000, 1408869060000],\n [45570000, 1408892386000],\n [45580003, 1408950609000],\n [45590001, 1408978478000],\n [45600001, 1409038069000],\n [45610000, 1409066062000],\n [45620006, 1409128203000],\n [45630000, 1409153928000],\n [45640000, 1409216945000],\n [45650000, 1409241599000],\n [45660002, 1409305363000],\n [45670002, 1409329768000],\n [45680001, 1409387563000],\n [45690001, 1409411227000],\n [45700002, 1409456447000],\n [45710001, 1409485571000],\n [45720001, 1409501028000],\n [45730010, 1409567310000],\n [45740000, 1409591429000],\n [45750000, 1409660281000],\n [45760001, 1409706661000],\n [45770000, 1409753397000],\n [45780001, 1409817467000],\n [45790000, 1409846233000],\n [45800001, 1409916309000],\n [45810001, 1409955523000],\n [45820001, 1410004195000],\n [45830002, 1410027341000],\n [45840001, 1410080086000],\n [45850000, 1410101234000],\n [45860003, 1410159791000],\n [45870002, 1410188406000],\n [45880000, 1410251730000],\n [45890000, 1410277481000],\n [45900002, 1410346533000],\n [45910000, 1410373358000],\n [45920001, 1410441075000],\n [45930000, 1410494820000],\n [45940000, 1410533064000],\n [45950000, 1410586687000],\n [45960002, 1410617477000],\n [45970001, 1410666060000],\n [45980000, 1410700170000],\n [45990001, 1410742254000],\n [46000003, 1410780600000],\n [46010001, 1410800885000],\n [46020000, 1410871404000],\n [46030001, 1410925985000],\n [46040000, 1410965180000],\n [46050002, 1411035539000],\n [46060000, 1411068445000],\n [46070002, 1411132729000],\n [46080000, 1411179286000],\n [46090001, 1411217966000],\n [46100001, 1411260613000],\n [46110002, 1411299116000],\n [46120001, 1411324250000],\n [46130002, 1411392713000],\n [46140002, 1411444634000],\n [46150004, 1411477767000],\n [46160001, 1411533742000],\n [46170002, 1411571943000],\n [46180002, 1411644554000],\n [46190000, 1411694810000],\n [46200002, 1411742253000],\n [46210003, 1411796970000],\n [46220001, 1411827559000],\n [46230000, 1411878229000],\n [46240000, 1411909469000],\n [46250001, 1411958548000],\n [46260000, 1412001347000],\n [46270000, 1412069171000],\n [46280000, 1412092418000],\n [46290000, 1412159293000],\n [46300000, 1412182471000],\n [46310004, 1412251678000],\n [46320001, 1412292704000],\n [46330001, 1412343931000],\n [46340000, 1412390517000],\n [46350000, 1412426684000],\n [46360003, 1412459043000],\n [46370001, 1412502758000],\n [46380000, 1412522089000],\n [46390000, 1412579126000],\n [46400001, 1412606211000],\n [46410000, 1412670515000],\n [46420000, 1412697641000],\n [46430000, 1412769724000],\n [46440000, 1412805139000],\n [46450003, 1412861657000],\n [46460001, 1412900611000],\n [46470000, 1412946324000],\n [46480000, 1412966082000],\n [46490000, 1413021523000],\n [46500000, 1413045739000],\n [46510004, 1413105184000],\n [46520002, 1413132385000],\n [46530001, 1413189711000],\n [46540000, 1413212103000],\n [46550001, 1413279134000],\n [46560000, 1413308431000],\n [46570002, 1413380899000],\n [46580000, 1413448537000],\n [46590000, 1413481017000],\n [46600002, 1413553814000],\n [46610001, 1413610622000],\n [46620000, 1413643873000],\n [46630000, 1413699682000],\n [46640002, 1413727940000],\n [46650000, 1413796851000],\n [46660000, 1413829473000],\n [46670000, 1413900925000],\n [46680000, 1413972104000],\n [46690001, 1414020575000],\n [46700006, 1414077321000],\n [46710001, 1414153803000],\n [46720000, 1414209098000],\n [46730000, 1414246272000],\n [46740001, 1414300019000],\n [46750000, 1414330741000],\n [46760000, 1414395376000],\n [46770001, 1414429636000],\n [46780003, 1414504384000],\n [46790001, 1414577244000],\n [46800001, 1414622603000],\n [46810000, 1414678523000],\n [46820000, 1414722059000],\n [46830001, 1414757909000],\n [46840001, 1414769504000],\n [46850000, 1414823220000],\n [46860000, 1414852020000],\n [46870001, 1414903508000],\n [46880000, 1414934932000],\n [46890002, 1414980757000],\n [46900002, 1415017619000],\n [46910000, 1415062708000],\n [46920000, 1415112999000],\n [46930000, 1415187739000],\n [46940002, 1415248447000],\n [46950003, 1415289061000],\n [46960000, 1415364291000],\n [46970001, 1415417408000],\n [46980003, 1415454956000],\n [46990000, 1415507307000],\n [47000000, 1415539055000],\n [47010000, 1415588639000],\n [47020000, 1415631586000],\n [47030002, 1415696295000],\n [47040002, 1415718900000],\n [47050002, 1415789004000],\n [47060000, 1415839179000],\n [47070003, 1415891607000],\n [47080000, 1415967746000],\n [47090005, 1416022074000],\n [47100000, 1416060637000],\n [47110001, 1416115908000],\n [47120001, 1416146173000],\n [47130000, 1416208876000],\n [47140001, 1416242085000],\n [47150000, 1416317801000],\n [47160000, 1416390921000],\n [47170000, 1416448604000],\n [47180000, 1416497398000],\n [47190000, 1416574038000],\n [47200001, 1416629021000],\n [47210003, 1416666230000],\n [47220001, 1416721789000],\n [47230001, 1416753783000],\n [47240000, 1416813201000],\n [47250000, 1416842192000],\n [47260002, 1416918200000],\n [47270000, 1416984962000],\n [47280002, 1417023611000],\n [47290000, 1417098065000],\n [47300000, 1417172998000],\n [47310000, 1417218646000],\n [47320006, 1417265182000],\n [47330000, 1417309885000],\n [47340001, 1417348922000],\n [47350001, 1417374842000],\n [47360001, 1417442238000],\n [47370000, 1417514169000],\n [47380001, 1417573663000],\n [47390001, 1417621738000],\n [47400000, 1417698110000],\n [47410001, 1417763923000],\n [47420000, 1417799488000],\n [47430000, 1417865705000],\n [47440002, 1417903772000],\n [47450000, 1417951702000],\n [47460002, 1417989019000],\n [47470002, 1418050247000],\n [47480000, 1418125512000],\n [47490000, 1418188809000],\n [47500001, 1418230565000],\n [47510003, 1418304837000],\n [47520000, 1418374861000],\n [47530001, 1418410134000],\n [47540001, 1418472019000],\n [47550000, 1418516238000],\n [47560001, 1418557982000],\n [47570001, 1418602760000],\n [47580000, 1418655482000],\n [47590000, 1418728714000],\n [47600002, 1418786472000],\n [47610000, 1418830833000],\n [47620000, 1418906555000],\n [47630001, 1418974005000],\n [47640003, 1419006790000],\n [47650000, 1419070128000],\n [47660000, 1419094682000],\n [47670002, 1419153085000],\n [47680003, 1419175796000],\n [47690000, 1419244695000],\n [47700000, 1419274769000],\n [47710000, 1419333862000],\n [47720000, 1419354340000],\n [47730001, 1419415711000],\n [47740000, 1419433879000],\n [47750007, 1419479734000],\n [47760000, 1419511462000],\n [47770001, 1419528679000],\n [47780001, 1419591419000],\n [47790000, 1419614182000],\n [47800003, 1419670281000],\n [47810001, 1419695043000],\n [47820003, 1419753778000],\n [47830000, 1419782289000],\n [47840000, 1419844011000],\n [47850001, 1419874897000],\n [47860000, 1419938290000],\n [47870000, 1419964946000],\n [47880001, 1420015097000],\n [47890000, 1420036028000],\n [47900000, 1420042361000],\n [47910000, 1420078699000],\n [47920001, 1420103980000],\n [47930000, 1420123777000],\n [47940000, 1420175074000],\n [47950000, 1420206280000],\n [47960001, 1420253354000],\n [47970000, 1420288344000],\n [47980000, 1420321580000],\n [47990000, 1420368200000],\n [48000001, 1420388763000],\n [48010000, 1420453511000],\n [48020004, 1420478404000],\n [48030000, 1420544239000],\n [48040000, 1420579475000],\n [48050001, 1420636400000],\n [48060002, 1420694718000],\n [48070001, 1420731031000],\n [48080000, 1420801573000],\n [48090005, 1420828904000],\n [48100000, 1420887623000],\n [48110005, 1420911824000],\n [48120000, 1420970320000],\n [48130001, 1420995201000],\n [48140001, 1421053286000],\n [48150003, 1421076820000],\n [48160001, 1421150311000],\n [48170002, 1421208087000],\n [48180002, 1421249944000],\n [48190001, 1421323732000],\n [48200001, 1421380565000],\n [48210000, 1421421390000],\n [48220001, 1421480469000],\n [48230000, 1421507793000],\n [48240001, 1421562583000],\n [48250000, 1421589740000],\n [48260000, 1421647746000],\n [48270001, 1421681904000],\n [48280000, 1421752922000],\n [48290002, 1421796949000],\n [48300002, 1421848870000],\n [48310000, 1421910136000],\n [48320000, 1421940971000],\n [48330000, 1422009927000],\n [48340004, 1422037304000],\n [48350000, 1422095668000],\n [48360001, 1422119397000],\n [48370000, 1422177393000],\n [48380000, 1422200867000],\n [48390000, 1422271145000],\n [48400000, 1422314467000],\n [48410000, 1422367980000],\n [48420000, 1422433504000],\n [48430004, 1422463457000],\n [48440000, 1422534768000],\n [48450000, 1422587272000],\n [48460003, 1422627741000],\n [48470000, 1422677639000],\n [48480003, 1422710491000],\n [48490003, 1422746403000],\n [48500000, 1422788824000],\n [48510000, 1422811475000],\n [48520002, 1422879052000],\n [48530005, 1422919644000],\n [48540000, 1422969688000],\n [48550000, 1423021714000],\n [48560000, 1423059994000],\n [48570000, 1423124083000],\n [48580000, 1423151799000],\n [48590001, 1423219438000],\n [48600001, 1423248799000],\n [48610001, 1423307183000],\n [48620003, 1423331652000],\n [48630000, 1423387909000],\n [48640000, 1423410111000],\n [48650000, 1423475783000],\n [48660000, 1423504414000],\n [48670000, 1423571959000],\n [48680001, 1423617558000],\n [48690000, 1423656664000],\n [48700000, 1423695965000],\n [48710002, 1423747660000],\n [48720002, 1423801076000],\n [48730004, 1423838902000],\n [48740006, 1423880064000],\n [48750001, 1423912035000],\n [48760000, 1423927165000],\n [48770000, 1423976919000],\n [48780001, 1424005623000],\n [48790004, 1424052534000],\n [48800001, 1424095460000],\n [48810002, 1424156267000],\n [48820000, 1424187104000],\n [48830004, 1424253921000],\n [48840002, 1424281276000],\n [48850000, 1424350047000],\n [48860000, 1424405036000],\n [48870000, 1424445222000],\n [48880001, 1424506523000],\n [48890000, 1424533717000],\n [48900002, 1424588830000],\n [48910003, 1424612370000],\n [48920000, 1424657127000],\n [48930000, 1424700853000],\n [48940005, 1424764099000],\n [48950001, 1424794919000],\n [48960000, 1424863985000],\n [48970004, 1424907331000],\n [48980000, 1424958445000],\n [48990000, 1425020098000],\n [49000000, 1425052228000],\n [49010000, 1425113573000],\n [49020002, 1425137788000],\n [49030000, 1425192625000],\n [49040000, 1425218915000],\n [49050000, 1425277345000],\n [49060000, 1425310019000],\n [49070001, 1425376397000],\n [49080000, 1425401283000],\n [49090000, 1425470717000],\n [49100001, 1425522821000],\n [49110002, 1425565908000],\n [49120000, 1425631623000],\n [49130001, 1425661246000],\n [49140001, 1425721796000],\n [49150000, 1425746273000],\n [49160000, 1425803701000],\n [49170000, 1425826933000],\n [49180000, 1425888991000],\n [49190000, 1425914570000],\n [49200001, 1425980130000],\n [49210005, 1426009556000],\n [49220001, 1426078336000],\n [49230000, 1426135941000],\n [49240003, 1426172068000],\n [49250000, 1426237030000],\n [49260000, 1426264348000],\n [49270002, 1426321389000],\n [49280002, 1426346221000],\n [49290002, 1426401154000],\n [49300000, 1426429467000],\n [49310001, 1426492115000],\n [49320000, 1426522044000],\n [49330000, 1426593267000],\n [49340001, 1426648563000],\n [49350000, 1426690127000],\n [49360000, 1426758029000],\n [49370002, 1426788601000],\n [49380008, 1426855140000],\n [49390001, 1426902362000],\n [49400002, 1426943270000],\n [49410000, 1426990368000],\n [49420000, 1427027854000],\n [49430000, 1427076951000],\n [49440002, 1427121382000],\n [49450003, 1427188723000],\n [49460000, 1427221714000],\n [49470001, 1427288345000],\n [49480001, 1427346664000],\n [49490000, 1427382958000],\n [49500000, 1427449110000],\n [49510000, 1427478001000],\n [49520001, 1427538782000],\n [49530000, 1427565781000],\n [49540001, 1427621536000],\n [49550002, 1427644856000],\n [49560003, 1427710766000],\n [49570001, 1427741876000],\n [49580000, 1427804380000],\n [49590000, 1427835668000],\n [49600002, 1427889902000],\n [49610005, 1427922598000],\n [49620000, 1427980018000],\n [49630000, 1428033261000],\n [49640001, 1428070688000],\n [49650004, 1428122102000],\n [49660001, 1428155752000],\n [49670004, 1428198715000],\n [49680001, 1428233407000],\n [49690000, 1428253898000],\n [49700002, 1428317973000],\n [49710001, 1428348567000],\n [49720001, 1428412177000],\n [49730000, 1428469600000],\n [49740002, 1428506182000],\n [49750004, 1428578339000],\n [49760002, 1428621049000],\n [49770001, 1428675507000],\n [49780000, 1428730122000],\n [49790003, 1428762157000],\n [49800000, 1428810192000],\n [49810000, 1428841777000],\n [49820000, 1428880711000],\n [49830001, 1428934950000],\n [49840000, 1429006335000],\n [49850000, 1429054292000],\n [49860001, 1429109898000],\n [49870000, 1429183117000],\n [49880000, 1429236717000],\n [49890000, 1429283590000],\n [49900001, 1429345715000],\n [49910000, 1429372438000],\n [49920001, 1429427262000],\n [49930000, 1429452183000],\n [49940000, 1429511794000],\n [49950000, 1429545046000],\n [49960001, 1429620425000],\n [49970001, 1429683143000],\n [49980000, 1429720850000],\n [49990000, 1429795605000],\n [50000000, 1429863864000],\n [50010000, 1429898787000],\n [50020000, 1429961496000],\n [50030000, 1429996983000],\n [50040004, 1430045105000],\n [50050000, 1430067028000],\n [50060003, 1430139388000],\n [50070002, 1430200615000],\n [50080002, 1430235720000],\n [50090001, 1430296784000],\n [50100000, 1430321228000],\n [50110000, 1430389982000],\n [50120001, 1430412736000],\n [50130002, 1430479345000],\n [50140000, 1430501860000],\n [50150000, 1430557445000],\n [50160001, 1430581431000],\n [50170001, 1430636674000],\n [50180000, 1430664979000],\n [50190006, 1430719047000],\n [50200001, 1430750240000],\n [50210000, 1430802866000],\n [50220000, 1430835446000],\n [50230000, 1430886375000],\n [50240000, 1430917406000],\n [50250001, 1430969831000],\n [50260000, 1431011510000],\n [50270001, 1431083973000],\n [50280003, 1431123849000],\n [50290002, 1431172739000],\n [50300000, 1431204867000],\n [50310001, 1431252706000],\n [50320000, 1431275326000],\n [50330001, 1431349340000],\n [50340000, 1431415400000],\n [50350002, 1431450112000],\n [50360000, 1431524579000],\n [50370004, 1431595757000],\n [50380000, 1431629249000],\n [50390001, 1431698689000],\n [50400001, 1431753573000],\n [50410000, 1431786571000],\n [50420000, 1431837465000],\n [50430000, 1431868109000],\n [50440003, 1431924122000],\n [50450000, 1431963346000],\n [50460001, 1432038066000],\n [50470002, 1432100070000],\n [50480000, 1432137840000],\n [50490001, 1432212978000],\n [50500001, 1432280391000],\n [50510000, 1432314638000],\n [50520000, 1432378486000],\n [50530000, 1432405540000],\n [50540000, 1432460533000],\n [50550001, 1432483593000],\n [50560000, 1432556836000],\n [50570001, 1432620778000],\n [50580000, 1432659550000],\n [50590001, 1432733347000],\n [50600000, 1432803486000],\n [50610004, 1432845996000],\n [50620001, 1432910338000],\n [50630000, 1432969407000],\n [50640000, 1432999743000],\n [50650000, 1433054954000],\n [50660001, 1433081521000],\n [50670000, 1433139525000],\n [50680005, 1433174212000],\n [50690003, 1433247766000],\n [50700007, 1433304560000],\n [50710000, 1433344640000],\n [50720000, 1433417598000],\n [50730002, 1433465723000],\n [50740000, 1433515819000],\n [50750000, 1433573481000],\n [50760000, 1433603104000],\n [50770000, 1433656399000],\n [50780000, 1433684476000],\n [50790006, 1433742245000],\n [50800000, 1433776632000],\n [50810002, 1433846603000],\n [50820000, 1433874860000],\n [50830002, 1433943909000],\n [50840000, 1434010217000],\n [50850001, 1434045170000],\n [50860002, 1434115301000],\n [50870000, 1434165997000],\n [50880000, 1434203013000],\n [50890000, 1434250611000],\n [50900000, 1434284671000],\n [50910000, 1434328565000],\n [50920000, 1434378765000],\n [50930001, 1434449589000],\n [50940000, 1434495986000],\n [50950002, 1434551913000],\n [50960000, 1434622524000],\n [50970001, 1434660867000],\n [50980001, 1434723356000],\n [50990000, 1434781138000],\n [51000000, 1434812712000],\n [51010005, 1434865927000],\n [51020003, 1434894231000],\n [51030000, 1434949765000],\n [51040001, 1434986243000],\n [51050001, 1435058040000],\n [51060000, 1435104020000],\n [51070004, 1435156327000],\n [51080001, 1435224543000],\n [51090000, 1435255929000],\n [51100000, 1435323878000],\n [51110003, 1435371108000],\n [51120002, 1435410415000],\n [51130000, 1435457064000],\n [51140000, 1435494630000],\n [51150001, 1435548043000],\n [51160000, 1435590927000],\n [51170000, 1435661743000],\n [51180000, 1435693160000],\n [51190000, 1435757210000],\n [51200001, 1435820137000],\n [51210000, 1435852363000],\n [51220001, 1435924090000],\n [51230000, 1435963538000],\n [51240000, 1436011041000],\n [51250000, 1436041964000],\n [51260001, 1436092245000],\n [51270002, 1436113783000],\n [51280000, 1436184639000],\n [51290001, 1436222209000],\n [51300002, 1436274448000],\n [51310000, 1436321505000],\n [51320000, 1436367233000],\n [51330000, 1436438434000],\n [51340000, 1436482573000],\n [51350000, 1436539264000],\n [51360001, 1436600774000],\n [51370005, 1436630589000],\n [51380000, 1436689104000],\n [51390000, 1436714870000],\n [51400000, 1436787425000],\n [51410000, 1436842693000],\n [51420000, 1436886365000],\n [51430000, 1436959083000],\n [51440001, 1437015088000],\n [51450000, 1437059007000],\n [51460002, 1437127790000],\n [51470001, 1437161200000],\n [51480000, 1437221108000],\n [51490000, 1437266583000],\n [51500000, 1437310382000],\n [51510001, 1437353953000],\n [51520001, 1437393709000],\n [51530001, 1437429645000],\n [51540002, 1437486190000],\n [51550009, 1437545501000],\n [51560000, 1437579146000],\n [51570000, 1437647564000],\n [51580001, 1437688568000],\n [51590000, 1437746118000],\n [51600006, 1437804136000],\n [51610001, 1437838006000],\n [51620001, 1437896582000],\n [51630000, 1437924161000],\n [51640004, 1437993698000],\n [51650001, 1438041123000],\n [51660000, 1438092330000],\n [51670000, 1438155491000],\n [51680000, 1438188475000],\n [51690001, 1438258316000],\n [51700004, 1438310555000],\n [51710001, 1438352766000],\n [51720000, 1438404349000],\n [51730000, 1438439607000],\n [51740000, 1438492706000],\n [51750000, 1438523901000],\n [51760000, 1438576479000],\n [51770000, 1438613331000],\n [51780001, 1438676812000],\n [51790000, 1438707698000],\n [51800001, 1438775013000],\n [51810000, 1438822665000],\n [51820000, 1438868881000],\n [51830000, 1438925089000],\n [51840001, 1438959605000],\n [51850003, 1439015686000],\n [51860000, 1439046332000],\n [51870001, 1439101072000],\n [51880001, 1439129645000],\n [51890000, 1439180053000],\n [51900001, 1439215210000],\n [51910001, 1439268110000],\n [51920001, 1439303260000],\n [51930002, 1439357219000],\n [51940000, 1439389903000],\n [51950001, 1439439328000],\n [51960000, 1439474031000],\n [51970000, 1439522995000],\n [51980002, 1439562464000],\n [51990001, 1439619122000],\n [52000003, 1439652589000],\n [52010002, 1439713106000],\n [52020000, 1439737809000],\n [52030001, 1439796813000],\n [52040002, 1439825293000],\n [52050002, 1439887490000],\n [52060002, 1439915547000],\n [52070001, 1439981728000],\n [52080000, 1440007097000],\n [52090000, 1440071411000],\n [52100000, 1440105179000],\n [52110002, 1440161382000],\n [52120002, 1440204370000],\n [52130002, 1440247573000],\n [52140000, 1440293559000],\n [52150002, 1440333019000],\n [52160002, 1440378395000],\n [52170001, 1440424211000],\n [52180003, 1440482841000],\n [52190000, 1440515889000],\n [52200000, 1440582877000],\n [52210003, 1440612864000],\n [52220000, 1440679254000],\n [52230003, 1440726969000],\n [52240002, 1440770502000],\n [52250001, 1440819055000],\n [52260001, 1440855205000],\n [52270001, 1440904479000],\n [52280001, 1440940469000],\n [52290003, 1440986585000],\n [52300001, 1441027528000],\n [52310000, 1441071842000],\n [52320000, 1441118194000],\n [52330000, 1441188677000],\n [52340002, 1441231428000],\n [52350000, 1441290113000],\n [52360000, 1441359877000],\n [52370001, 1441396714000],\n [52380000, 1441456240000],\n [52390001, 1441503699000],\n [52400000, 1441542484000],\n [52410000, 1441591959000],\n [52420002, 1441638157000],\n [52430000, 1441710469000],\n [52440000, 1441757685000],\n [52450000, 1441808428000],\n [52460001, 1441877759000],\n [52470001, 1441925058000],\n [52480001, 1441983737000],\n [52490008, 1442044638000],\n [52500000, 1442073356000],\n [52510000, 1442131880000],\n [52520001, 1442157561000],\n [52530002, 1442230417000],\n [52540002, 1442285982000],\n [52550000, 1442331304000],\n [52560006, 1442406457000],\n [52570000, 1442469129000],\n [52580003, 1442507932000],\n [52590000, 1442582714000],\n [52600000, 1442640190000],\n [52610000, 1442675304000],\n [52620000, 1442734874000],\n [52630001, 1442765771000],\n [52640000, 1442832097000],\n [52650000, 1442874140000],\n [52660000, 1442925918000],\n [52670001, 1442973989000],\n [52680000, 1443013257000],\n [52690001, 1443073808000],\n [52700001, 1443112150000],\n [52710000, 1443187348000],\n [52720001, 1443245159000],\n [52730000, 1443279080000],\n [52740000, 1443331711000],\n [52750003, 1443360896000],\n [52760000, 1443416366000],\n [52770003, 1443454110000],\n [52780000, 1443526258000],\n [52790000, 1443573159000],\n [52800000, 1443623335000],\n [52810000, 1443687223000],\n [52820000, 1443715413000],\n [52830000, 1443785028000],\n [52840000, 1443812701000],\n [52850000, 1443868318000],\n [52860001, 1443892966000],\n [52870002, 1443951923000],\n [52880001, 1443977319000],\n [52890002, 1444050020000],\n [52900001, 1444112972000],\n [52910000, 1444150582000],\n [52920001, 1444224436000],\n [52930000, 1444293770000],\n [52940000, 1444328660000],\n [52950001, 1444398014000],\n [52960001, 1444448428000],\n [52970001, 1444485550000],\n [52980001, 1444537079000],\n [52990000, 1444571696000],\n [53000000, 1444624072000],\n [53010005, 1444658586000],\n [53020001, 1444728690000],\n [53030000, 1444776865000],\n [53040001, 1444834638000],\n [53050000, 1444910842000],\n [53060001, 1444974041000],\n [53070000, 1445012878000],\n [53080000, 1445077854000],\n [53090000, 1445107072000],\n [53100000, 1445164056000],\n [53110001, 1445193150000],\n [53120000, 1445264139000],\n [53130000, 1445339154000],\n [53140000, 1445396667000],\n [53150003, 1445441692000],\n [53160000, 1445518494000],\n [53170000, 1445588117000],\n [53180002, 1445628093000],\n [53190001, 1445689759000],\n [53200001, 1445738163000],\n [53210000, 1445775998000],\n [53220001, 1445833271000],\n [53230000, 1445876063000],\n [53240002, 1445952191000],\n [53250001, 1446023732000],\n [53260001, 1446071058000],\n [53270003, 1446130056000],\n [53280000, 1446200786000],\n [53290000, 1446222908000],\n [53300000, 1446276180000],\n [53310002, 1446298208000],\n [53320002, 1446314767000],\n [53330007, 1446368379000],\n [53340001, 1446391392000],\n [53350000, 1446463645000],\n [53360000, 1446511544000],\n [53370000, 1446554904000],\n [53380000, 1446613562000],\n [53390000, 1446652845000],\n [53400001, 1446728534000],\n [53410001, 1446798097000],\n [53420000, 1446835848000],\n [53430000, 1446897512000],\n [53440000, 1446935447000],\n [53450000, 1446979710000],\n [53460000, 1447002529000],\n [53470000, 1447074958000],\n [53480003, 1447138089000],\n [53490002, 1447171463000],\n [53500000, 1447241068000],\n [53510000, 1447263850000],\n [53520000, 1447334523000],\n [53530001, 1447400956000],\n [53540000, 1447434309000],\n [53550001, 1447495192000],\n [53560001, 1447520520000],\n [53570001, 1447579045000],\n [53580002, 1447602584000],\n [53590001, 1447677054000],\n [53600000, 1447734384000],\n [53610001, 1447774550000],\n [53620000, 1447848786000],\n [53630001, 1447909667000],\n [53640000, 1447950831000],\n [53650000, 1448025195000],\n [53660000, 1448081028000],\n [53670000, 1448117623000],\n [53680002, 1448173146000],\n [53690000, 1448202318000],\n [53700002, 1448256072000],\n [53710000, 1448286558000],\n [53720008, 1448350876000],\n [53730002, 1448385838000],\n [53740003, 1448459361000],\n [53750001, 1448529328000],\n [53760001, 1448571384000],\n [53770000, 1448635733000],\n [53780001, 1448695133000],\n [53790000, 1448725329000],\n [53800001, 1448783477000],\n [53810000, 1448809518000],\n [53820000, 1448882576000],\n [53830000, 1448935147000],\n [53840001, 1448982556000],\n [53850000, 1449056968000],\n [53860001, 1449120058000],\n [53870000, 1449160498000],\n [53880000, 1449235420000],\n [53890001, 1449294310000],\n [53900002, 1449328023000],\n [53910000, 1449385484000],\n [53920000, 1449413366000],\n [53930000, 1449486304000],\n [53940000, 1449545121000],\n [53950000, 1449590438000],\n [53960000, 1449666749000],\n [53970000, 1449737401000],\n [53980000, 1449782727000],\n [53990003, 1449845097000],\n [54000005, 1449906786000],\n [54010002, 1449935748000],\n [54020000, 1449994184000],\n [54030000, 1450019154000],\n [54040000, 1450089997000],\n [54050000, 1450138364000],\n [54060000, 1450190996000],\n [54070002, 1450263073000],\n [54080000, 1450319232000],\n [54090001, 1450366580000],\n [54100000, 1450442905000],\n [54110001, 1450501438000],\n [54120002, 1450537128000],\n [54130000, 1450594818000],\n [54140000, 1450622901000],\n [54150000, 1450692686000],\n [54160002, 1450728829000],\n [54170001, 1450792823000],\n [54180000, 1450849584000],\n [54190000, 1450880944000],\n [54200002, 1450930324000],\n [54210002, 1450964468000],\n [54220001, 1450990001000],\n [54230001, 1451040270000],\n [54240001, 1451058045000],\n [54250000, 1451113602000],\n [54260000, 1451142117000],\n [54270001, 1451193442000],\n [54280001, 1451222549000],\n [54290001, 1451262047000],\n [54300000, 1451306768000],\n [54310001, 1451353931000],\n [54320001, 1451397388000],\n [54330000, 1451455072000],\n [54340002, 1451488299000],\n [54350000, 1451541348000],\n [54360000, 1451568664000],\n [54370003, 1451578081000],\n [54380002, 1451583548000],\n [54390046, 1451584646000],\n [54400004, 1451585608000],\n [54410135, 1451586483000],\n [54420052, 1451587666000],\n [54430122, 1451589379000],\n [54440001, 1451591925000],\n [54450001, 1451625209000],\n [54460004, 1451641989000],\n [54470000, 1451655523000],\n [54480004, 1451675422000],\n [54490001, 1451730868000],\n [54500000, 1451755391000],\n [54510000, 1451810931000],\n [54520003, 1451834335000],\n [54530000, 1451893722000],\n [54540001, 1451921581000],\n [54550000, 1451981684000],\n [54560000, 1452009596000],\n [54570003, 1452069136000],\n [54580000, 1452096975000],\n [54590000, 1452165734000],\n [54600000, 1452206246000],\n [54610001, 1452262161000],\n [54620000, 1452316918000],\n [54630001, 1452349574000],\n [54640001, 1452402538000],\n [54650001, 1452434481000],\n [54660000, 1452486057000],\n [54670000, 1452517947000],\n [54680000, 1452572400000],\n [54690000, 1452613850000],\n [54700001, 1452690017000],\n [54710000, 1452756792000],\n [54720000, 1452790521000],\n [54730001, 1452863830000],\n [54740000, 1452921765000],\n [54750002, 1452955817000],\n [54760000, 1453008750000],\n [54770000, 1453038460000],\n [54780000, 1453098873000],\n [54790001, 1453132481000],\n [54800002, 1453204722000],\n [54810004, 1453257872000],\n [54820000, 1453302010000],\n [54830002, 1453372832000],\n [54840001, 1453411706000],\n [54850001, 1453470798000],\n [54860007, 1453522524000],\n [54870000, 1453556436000],\n [54880002, 1453604239000],\n [54890001, 1453638389000],\n [54900000, 1453683740000],\n [54910004, 1453731139000],\n [54920001, 1453798773000],\n [54930000, 1453830095000],\n [54940000, 1453900095000],\n [54950000, 1453960642000],\n [54960002, 1453996322000],\n [54970000, 1454066614000],\n [54980000, 1454101949000],\n [54990002, 1454153860000],\n [55000000, 1454178375000],\n [55010003, 1454233202000],\n [55020000, 1454253981000],\n [55030000, 1454318469000],\n [55040000, 1454344713000],\n [55050000, 1454413707000],\n [55060000, 1454444292000],\n [55070000, 1454503062000],\n [55080004, 1454545766000],\n [55090000, 1454592044000],\n [55100000, 1454640952000],\n [55110000, 1454680957000],\n [55120000, 1454731019000],\n [55130002, 1454764695000],\n [55140000, 1454807309000],\n [55150001, 1454845415000],\n [55160002, 1454873571000],\n [55170001, 1454936377000],\n [55180007, 1454994613000],\n [55190000, 1455030538000],\n [55200008, 1455098217000],\n [55210001, 1455132058000],\n [55220001, 1455190327000],\n [55230000, 1455224267000],\n [55240002, 1455284238000],\n [55250001, 1455337972000],\n [55260000, 1455371967000],\n [55270000, 1455402129000],\n [55280001, 1455438260000],\n [55290002, 1455457052000],\n [55300000, 1455479181000],\n [55310001, 1455539860000],\n [55320007, 1455593116000],\n [55330001, 1455634142000],\n [55340000, 1455699982000],\n [55350000, 1455732305000],\n [55360000, 1455801485000],\n [55370001, 1455862899000],\n [55380001, 1455897144000],\n [55390000, 1455960059000],\n [55400003, 1455986485000],\n [55410000, 1456044639000],\n [55420000, 1456068698000],\n [55430000, 1456133038000],\n [55440002, 1456155786000],\n [55450003, 1456225718000],\n [55460000, 1456273371000],\n [55470001, 1456324697000],\n [55480000, 1456393085000],\n [55490004, 1456439002000],\n [55500002, 1456496132000],\n [55510001, 1456554911000],\n [55520001, 1456585844000],\n [55530000, 1456641519000],\n [55540001, 1456669586000],\n [55550000, 1456731043000],\n [55560000, 1456758846000],\n [55570000, 1456825629000],\n [55580000, 1456860157000],\n [55590000, 1456926706000],\n [55600000, 1456989100000],\n [55610001, 1457020517000],\n [55620005, 1457091333000],\n [55630000, 1457138155000],\n [55640002, 1457181847000],\n [55650000, 1457222400000],\n [55660001, 1457262443000],\n [55670002, 1457284199000],\n [55680000, 1457351979000],\n [55690002, 1457396717000],\n [55700000, 1457445365000],\n [55710001, 1457502688000],\n [55720002, 1457533722000],\n [55730001, 1457592521000],\n [55740005, 1457622716000],\n [55750000, 1457688390000],\n [55760002, 1457713904000],\n [55770005, 1457770918000],\n [55780002, 1457796696000],\n [55790000, 1457854875000],\n [55800002, 1457881729000],\n [55810004, 1457947485000],\n [55820000, 1457973754000],\n [55830000, 1458043691000],\n [55840003, 1458095965000],\n [55850001, 1458140031000],\n [55860000, 1458209267000],\n [55870000, 1458249917000],\n [55880000, 1458308641000],\n [55890001, 1458363092000],\n [55900000, 1458397132000],\n [55910000, 1458450051000],\n [55920001, 1458482981000],\n [55930000, 1458537698000],\n [55940001, 1458569645000],\n [55950001, 1458632632000],\n [55960002, 1458663443000],\n [55970002, 1458733391000],\n [55980000, 1458781771000],\n [55990001, 1458828772000],\n [56000001, 1458891213000],\n [56010006, 1458922690000],\n [56020001, 1458985543000],\n [56030000, 1459013112000],\n [56040001, 1459071569000],\n [56050001, 1459095916000],\n [56060000, 1459163470000],\n [56070000, 1459195288000],\n [56080000, 1459256338000],\n [56090000, 1459314017000],\n [56100000, 1459351265000],\n [56110001, 1459417661000],\n [56120000, 1459444333000],\n [56130001, 1459507802000],\n [56140000, 1459534425000],\n [56150002, 1459595264000],\n [56160002, 1459623731000],\n [56170000, 1459678424000],\n [56180001, 1459701527000],\n [56190002, 1459766357000],\n [56200000, 1459804779000],\n [56210000, 1459863795000],\n [56220000, 1459926641000],\n [56230002, 1459959385000],\n [56240001, 1460029929000],\n [56250002, 1460079251000],\n [56260000, 1460127601000],\n [56270002, 1460187551000],\n [56280000, 1460216748000],\n [56290000, 1460273543000],\n [56300001, 1460297446000],\n [56310000, 1460365122000],\n [56320000, 1460415361000],\n [56330002, 1460474858000],\n [56340001, 1460551981000],\n [56350001, 1460622390000],\n [56360002, 1460680949000],\n [56370002, 1460735958000],\n [56380001, 1460804923000],\n [56390000, 1460843792000],\n [56400003, 1460890412000],\n [56410000, 1460916070000],\n [56420000, 1460987720000],\n [56430000, 1461058187000],\n [56440000, 1461104036000],\n [56450001, 1461164452000],\n [56460001, 1461239528000],\n [56470001, 1461299694000],\n [56480000, 1461340726000],\n [56490002, 1461404556000],\n [56500000, 1461430336000],\n [56510000, 1461485723000],\n [56520001, 1461509999000],\n [56530000, 1461579857000],\n [56540001, 1461622012000],\n [56550002, 1461680516000],\n [56560003, 1461750402000],\n [56570000, 1461783666000],\n [56580001, 1461851082000],\n [56590001, 1461905468000],\n [56600000, 1461939707000],\n [56610000, 1461992012000],\n [56620000, 1462024178000],\n [56630000, 1462064072000],\n [56640001, 1462100062000],\n [56650000, 1462118558000],\n [56660000, 1462178165000],\n [56670000, 1462202537000],\n [56680002, 1462258590000],\n [56690000, 1462287637000],\n [56700000, 1462343808000],\n [56710000, 1462374018000],\n [56720000, 1462425879000],\n [56730000, 1462455521000],\n [56740000, 1462512257000],\n [56750000, 1462547701000],\n [56760000, 1462606894000],\n [56770000, 1462634736000],\n [56780000, 1462687724000],\n [56790000, 1462715398000],\n [56800001, 1462776332000],\n [56810000, 1462811630000],\n [56820000, 1462885637000],\n [56830000, 1462947935000],\n [56840001, 1462985941000],\n [56850003, 1463060847000],\n [56860002, 1463130472000],\n [56870001, 1463167081000],\n [56880000, 1463227574000],\n [56890000, 1463267664000],\n [56900000, 1463310778000],\n [56910002, 1463340423000],\n [56920000, 1463407866000],\n [56930000, 1463480118000],\n [56940001, 1463536446000],\n [56950001, 1463586244000],\n [56960000, 1463661415000],\n [56970000, 1463724491000],\n [56980000, 1463762636000],\n [56990002, 1463827553000],\n [57000000, 1463858294000],\n [57010000, 1463911420000],\n [57020000, 1463935233000],\n [57030000, 1464008061000],\n [57040000, 1464057361000],\n [57050000, 1464100893000],\n [57060000, 1464172598000],\n [57070000, 1464221271000],\n [57080000, 1464274322000],\n [57090002, 1464346599000],\n [57100000, 1464389456000],\n [57110000, 1464437876000],\n [57120001, 1464482219000],\n [57130000, 1464522044000],\n [57140001, 1464562495000],\n [57150002, 1464619102000],\n [57160000, 1464692561000],\n [57170003, 1464741541000],\n [57180000, 1464792809000],\n [57190001, 1464866840000],\n [57200000, 1464923308000],\n [57210001, 1464968228000],\n [57220002, 1465031928000],\n [57230000, 1465058901000],\n [57240000, 1465116687000],\n [57250000, 1465139412000],\n [57260000, 1465209025000],\n [57270000, 1465250979000],\n [57280002, 1465308208000],\n [57290000, 1465377991000],\n [57300002, 1465411049000],\n [57310000, 1465477312000],\n [57320000, 1465531970000],\n [57330000, 1465571088000],\n [57340002, 1465629183000],\n [57350000, 1465657956000],\n [57360001, 1465712022000],\n [57370002, 1465739702000],\n [57380003, 1465798169000],\n [57390000, 1465832711000],\n [57400002, 1465905402000],\n [57410001, 1465957217000],\n [57420000, 1466002806000],\n [57430002, 1466072473000],\n [57440000, 1466108320000],\n [57450003, 1466170932000],\n [57460000, 1466222949000],\n [57470000, 1466258707000],\n [57480002, 1466307682000],\n [57490002, 1466340883000],\n [57500001, 1466392225000],\n [57510000, 1466435119000],\n [57520000, 1466506445000],\n [57530002, 1466555125000],\n [57540001, 1466606467000],\n [57550001, 1466677968000],\n [57560000, 1466726102000],\n [57570001, 1466780549000],\n [57580000, 1466842875000],\n [57590000, 1466872426000],\n [57600003, 1466930708000],\n [57610000, 1466957296000],\n [57620001, 1467031096000],\n [57630004, 1467094259000],\n [57640001, 1467130515000],\n [57650002, 1467202266000],\n [57660000, 1467256271000],\n [57670000, 1467298424000],\n [57680001, 1467362753000],\n [57690001, 1467391224000],\n [57700001, 1467451186000],\n [57710000, 1467477064000],\n [57720001, 1467533842000],\n [57730001, 1467559523000],\n [57740000, 1467630123000],\n [57750000, 1467683320000],\n [57760001, 1467731359000],\n [57770000, 1467803600000],\n [57780000, 1467846628000],\n [57790001, 1467898220000],\n [57800002, 1467956415000],\n [57810004, 1467994201000],\n [57820000, 1468058296000],\n [57830000, 1468088599000],\n [57840000, 1468145940000],\n [57850000, 1468172938000],\n [57860000, 1468242988000],\n [57870000, 1468308685000],\n [57880001, 1468343747000],\n [57890000, 1468415336000],\n [57900000, 1468480127000],\n [57910002, 1468515175000],\n [57920000, 1468588085000],\n [57930000, 1468644842000],\n [57940000, 1468681404000],\n [57950001, 1468740473000],\n [57960000, 1468769888000],\n [57970000, 1468830116000],\n [57980000, 1468856568000],\n [57990000, 1468930009000],\n [58000000, 1468991107000],\n [58010000, 1469029824000],\n [58020000, 1469102160000],\n [58030001, 1469157377000],\n [58040002, 1469201597000],\n [58050001, 1469270090000],\n [58060000, 1469317980000],\n [58070002, 1469364513000],\n [58080003, 1469424004000],\n [58090000, 1469464510000],\n [58100001, 1469536743000],\n [58110006, 1469599305000],\n [58120000, 1469638732000],\n [58130000, 1469710329000],\n [58140003, 1469771253000],\n [58150000, 1469807649000],\n [58160000, 1469873493000],\n [58170000, 1469909390000],\n [58180000, 1469963816000],\n [58190002, 1469992257000],\n [58200000, 1470054609000],\n [58210001, 1470105154000],\n [58220001, 1470146582000],\n [58230000, 1470204408000],\n [58240001, 1470238306000],\n [58250001, 1470306237000],\n [58260000, 1470348275000],\n [58270005, 1470402711000],\n [58280000, 1470454252000],\n [58290002, 1470491835000],\n [58300000, 1470543014000],\n [58310000, 1470576227000],\n [58320004, 1470626364000],\n [58330000, 1470665253000],\n [58340000, 1470719718000],\n [58350006, 1470752430000],\n [58360000, 1470804496000],\n [58370000, 1470838465000],\n [58380001, 1470886060000],\n [58390001, 1470920134000],\n [58400001, 1470962532000],\n [58410000, 1471007534000],\n [58420001, 1471062944000],\n [58430001, 1471100546000],\n [58440000, 1471163099000],\n [58450000, 1471193115000],\n [58460000, 1471256200000],\n [58470000, 1471285401000],\n [58480001, 1471346036000],\n [58490006, 1471379846000],\n [58500000, 1471436710000],\n [58510003, 1471483845000],\n [58520000, 1471527272000],\n [58530000, 1471579773000],\n [58540002, 1471616931000],\n [58550001, 1471668133000],\n [58560001, 1471701994000],\n [58570001, 1471754111000],\n [58580004, 1471788458000],\n [58590000, 1471847283000],\n [58600000, 1471879199000],\n [58610001, 1471946052000],\n [58620000, 1471990282000],\n [58630000, 1472046646000],\n [58640002, 1472111711000],\n [58650000, 1472149702000],\n [58660005, 1472218227000],\n [58670001, 1472276534000],\n [58680001, 1472311268000],\n [58690001, 1472371312000],\n [58700004, 1472398255000],\n [58710000, 1472465816000],\n [58720000, 1472507006000],\n [58730003, 1472562516000],\n [58740002, 1472612751000],\n [58750001, 1472652473000],\n [58760002, 1472710864000],\n [58770001, 1472744177000],\n [58780000, 1472815308000],\n [58790002, 1472854851000],\n [58800001, 1472904365000],\n [58810002, 1472946637000],\n [58820003, 1472990669000],\n [58830000, 1473039462000],\n [58840001, 1473088018000],\n [58850001, 1473162209000],\n [58860001, 1473219832000],\n [58870001, 1473262856000],\n [58880001, 1473337075000],\n [58890000, 1473398787000],\n [58900004, 1473438865000],\n [58910004, 1473503559000],\n [58920000, 1473529656000],\n [58930000, 1473585805000],\n [58940000, 1473610448000],\n [58950000, 1473682349000],\n [58960000, 1473737224000],\n [58970000, 1473780525000],\n [58980001, 1473853142000],\n [58990000, 1473903889000],\n [59000002, 1473949244000],\n [59010001, 1474015896000],\n [59020000, 1474050478000],\n [59030001, 1474112215000],\n [59040000, 1474157059000],\n [59050002, 1474202612000],\n [59060001, 1474252489000],\n [59070005, 1474291094000],\n [59080001, 1474352936000],\n [59090000, 1474388153000],\n [59100000, 1474464391000],\n [59110001, 1474523991000],\n [59120000, 1474556977000],\n [59130003, 1474630670000],\n [59140000, 1474683088000],\n [59150000, 1474725202000],\n [59160005, 1474779589000],\n [59170000, 1474812561000],\n [59180000, 1474883449000],\n [59190000, 1474935867000],\n [59200000, 1474989339000],\n [59210001, 1475064332000],\n [59220000, 1475129668000],\n [59230000, 1475170305000],\n [59240002, 1475244164000],\n [59250001, 1475303419000],\n [59260001, 1475334591000],\n [59270000, 1475392316000],\n [59280005, 1475419783000],\n [59290000, 1475488696000],\n [59300000, 1475528870000],\n [59310001, 1475590468000],\n [59320000, 1475657907000],\n [59330001, 1475686232000],\n [59340000, 1475757932000],\n [59350003, 1475812066000],\n [59360004, 1475852837000],\n [59370000, 1475911406000],\n [59380001, 1475941922000],\n [59390001, 1476004293000],\n [59400000, 1476034568000],\n [59410000, 1476096636000],\n [59420000, 1476129978000],\n [59430000, 1476196619000],\n [59440000, 1476272537000],\n [59450000, 1476340363000],\n [59460004, 1476384975000],\n [59470000, 1476456661000],\n [59480003, 1476521187000],\n [59490002, 1476552341000],\n [59500000, 1476612768000],\n [59510000, 1476644723000],\n [59520002, 1476714278000],\n [59530003, 1476789295000],\n [59540004, 1476854219000],\n [59550000, 1476898255000],\n [59560002, 1476972714000],\n [59570001, 1477045122000],\n [59580000, 1477092184000],\n [59590002, 1477141991000],\n [59600001, 1477195190000],\n [59610000, 1477230360000],\n [59620000, 1477300850000],\n [59630000, 1477358100000],\n [59640000, 1477410899000],\n [59650000, 1477489171000],\n [59660000, 1477563831000],\n [59670001, 1477626136000],\n [59680000, 1477670133000],\n [59690000, 1477737118000],\n [59700003, 1477771839000],\n [59710001, 1477825224000],\n [59720000, 1477844574000],\n [59730000, 1477908183000],\n [59740001, 1477926263000],\n [59750000, 1477992314000],\n [59760000, 1478035514000],\n [59770000, 1478098882000],\n [59780000, 1478165969000],\n [59790000, 1478199515000],\n [59800003, 1478269516000],\n [59810001, 1478333879000],\n [59820000, 1478366872000],\n [59830000, 1478428778000],\n [59840001, 1478470292000],\n [59850000, 1478530563000],\n [59860001, 1478607047000],\n [59870000, 1478676582000],\n [59880001, 1478740581000],\n [59890001, 1478793768000],\n [59900001, 1478867764000],\n [59910001, 1478918808000],\n [59920002, 1478960589000],\n [59930003, 1479018936000],\n [59940000, 1479048927000],\n [59950000, 1479121186000],\n [59960000, 1479182550000],\n [59970005, 1479229974000],\n [59980001, 1479307323000],\n [59990000, 1479384685000],\n [60000000, 1479455423000],\n [60010000, 1479514144000],\n [60020001, 1479564619000],\n [60030000, 1479623969000],\n [60040000, 1479654902000],\n [60050000, 1479732185000],\n [60060000, 1479804841000],\n [60070000, 1479857950000],\n [60080000, 1479907841000],\n [60090000, 1479980658000],\n [60100000, 1480047221000],\n [60110002, 1480096515000],\n [60120002, 1480164784000],\n [60130004, 1480221877000],\n [60140007, 1480256393000],\n [60150000, 1480327810000],\n [60160001, 1480389639000],\n [60170000, 1480437775000],\n [60180000, 1480515550000],\n [60190001, 1480590152000],\n [60200001, 1480656554000],\n [60210001, 1480701685000],\n [60220000, 1480769066000],\n [60230001, 1480823736000],\n [60240000, 1480859801000],\n [60250000, 1480928761000],\n [60260001, 1480986080000],\n [60270000, 1481040525000],\n [60280000, 1481118864000],\n [60290000, 1481195165000],\n [60300000, 1481265395000],\n [60310000, 1481317642000],\n [60320000, 1481376091000],\n [60330001, 1481434401000],\n [60340002, 1481467474000],\n [60350000, 1481542146000],\n [60360000, 1481611462000],\n [60370000, 1481658725000],\n [60380000, 1481727720000],\n [60390000, 1481805784000],\n [60400001, 1481879887000],\n [60410000, 1481937290000],\n [60420000, 1481984144000],\n [60430002, 1482044400000],\n [60440000, 1482075538000],\n [60450002, 1482151308000],\n [60460000, 1482217539000],\n [60470000, 1482260096000],\n [60480001, 1482331019000],\n [60490002, 1482403591000],\n [60500000, 1482456355000],\n [60510000, 1482500440000],\n [60520000, 1482546777000],\n [60530000, 1482582859000],\n [60540000, 1482601298000],\n [60550000, 1482652348000],\n [60560000, 1482674545000],\n [60570001, 1482721794000],\n [60580000, 1482762956000],\n [60590000, 1482820331000],\n [60600002, 1482851372000],\n [60610001, 1482910028000],\n [60620000, 1482939295000],\n [60630000, 1483000868000],\n [60640002, 1483028900000],\n [60650000, 1483091458000],\n [60660000, 1483122307000],\n [60670001, 1483175760000],\n [60680004, 1483196425000],\n [60690000, 1483210669000],\n [60700003, 1483254919000],\n [60710000, 1483280373000],\n [60720001, 1483331831000],\n [60730000, 1483365638000],\n [60740000, 1483419372000],\n [60750000, 1483451305000],\n [60760000, 1483503879000],\n [60770000, 1483538081000],\n [60780000, 1483594341000],\n [60790003, 1483628720000],\n [60800001, 1483696774000],\n [60810002, 1483726056000],\n [60820001, 1483785559000],\n [60830005, 1483815367000],\n [60840001, 1483873749000],\n [60850001, 1483903342000],\n [60860000, 1483959039000],\n [60870001, 1484000637000],\n [60880001, 1484058261000],\n [60890002, 1484130896000],\n [60900000, 1484187151000],\n [60910000, 1484235037000],\n [60920000, 1484310570000],\n [60930000, 1484369465000],\n [60940001, 1484406004000],\n [60950002, 1484465204000],\n [60960000, 1484493581000],\n [60970001, 1484568233000],\n [60980000, 1484632631000],\n [60990000, 1484673727000],\n [61000000, 1484747006000],\n [61010000, 1484818553000],\n [61020000, 1484873088000],\n [61030004, 1484924798000],\n [61040000, 1484989157000],\n [61050000, 1485019482000],\n [61060003, 1485079433000],\n [61070003, 1485106552000],\n [61080000, 1485176741000],\n [61090001, 1485243764000],\n [61100002, 1485280302000],\n [61110001, 1485351326000],\n [61120002, 1485419493000],\n [61130005, 1485452399000],\n [61140000, 1485520824000],\n [61150000, 1485569319000],\n [61160001, 1485609703000],\n [61170000, 1485661493000],\n [61180000, 1485696254000],\n [61190001, 1485756890000],\n [61200000, 1485791360000],\n [61210000, 1485864250000],\n [61220000, 1485916122000],\n [61230000, 1485961290000],\n [61240002, 1486029393000],\n [61250001, 1486060297000],\n [61260000, 1486126376000],\n [61270000, 1486176696000],\n [61280000, 1486215506000],\n [61290000, 1486266720000],\n [61300001, 1486299874000],\n [61310000, 1486353467000],\n [61320000, 1486393351000],\n [61330003, 1486463624000],\n [61340003, 1486507596000],\n [61350002, 1486561760000],\n [61360001, 1486626809000],\n [61370000, 1486657775000],\n [61380000, 1486727915000],\n [61390000, 1486773392000],\n [61400000, 1486816368000],\n [61410000, 1486865070000],\n [61420000, 1486904647000],\n [61430000, 1486965714000],\n [61440000, 1486999592000],\n [61450000, 1487058450000],\n [61460000, 1487082681000],\n [61470000, 1487141957000],\n [61480002, 1487177786000],\n [61490000, 1487249996000],\n [61500000, 1487315623000],\n [61510004, 1487351938000],\n [61520000, 1487417611000],\n [61530000, 1487464184000],\n [61540000, 1487506450000],\n [61550000, 1487558601000],\n [61560001, 1487602436000],\n [61570002, 1487673379000],\n [61580000, 1487729561000],\n [61590001, 1487773681000],\n [61600001, 1487840488000],\n [61610000, 1487886123000],\n [61620000, 1487946620000],\n [61630000, 1488009110000],\n [61640000, 1488041915000],\n [61650000, 1488104050000],\n [61660000, 1488137656000],\n [61670003, 1488203273000],\n [61680000, 1488272954000],\n [61690004, 1488306578000],\n [61700001, 1488374500000],\n [61710002, 1488439391000],\n [61720000, 1488476649000],\n [61730003, 1488546944000],\n [61740000, 1488604970000],\n [61750000, 1488640963000],\n [61760001, 1488700486000],\n [61770000, 1488727677000],\n [61780000, 1488799826000],\n [61790001, 1488857988000],\n [61800000, 1488900604000],\n [61810001, 1488975206000],\n [61820000, 1489034828000],\n [61830000, 1489072603000],\n [61840003, 1489142367000],\n [61850002, 1489193541000],\n [61860000, 1489239443000],\n [61870000, 1489294279000],\n [61880001, 1489327105000],\n [61890001, 1489392956000],\n [61900000, 1489426148000],\n [61910001, 1489495011000],\n [61920001, 1489548258000],\n [61930000, 1489589470000],\n [61940001, 1489659435000],\n [61950001, 1489705940000],\n [61960000, 1489759515000],\n [61970000, 1489814949000],\n [61980000, 1489848301000],\n [61990002, 1489899476000],\n [62000000, 1489932248000],\n [62010000, 1489989312000],\n [62020001, 1490024376000],\n [62030001, 1490098245000],\n [62040001, 1490161753000],\n [62050000, 1490201923000],\n [62060000, 1490274647000],\n [62070002, 1490341815000],\n [62080001, 1490380510000],\n [62090000, 1490445446000],\n [62100000, 1490500749000],\n [62110001, 1490536871000],\n [62120000, 1490603274000],\n [62130000, 1490642055000],\n [62140004, 1490708949000],\n [62150001, 1490777542000],\n [62160000, 1490820295000],\n [62170003, 1490881477000],\n [62180001, 1490946798000],\n [62190004, 1490976957000],\n [62200002, 1491039126000],\n [62210001, 1491067568000],\n [62220000, 1491128642000],\n [62230002, 1491159785000],\n [62240004, 1491224760000],\n [62250000, 1491283628000],\n [62260000, 1491320899000],\n [62270002, 1491393053000],\n [62280002, 1491453235000],\n [62290000, 1491494583000],\n [62300000, 1491567593000],\n [62310000, 1491623151000],\n [62320002, 1491661534000],\n [62330002, 1491716479000],\n [62340003, 1491746742000],\n [62350000, 1491815038000],\n [62360001, 1491871127000],\n [62370001, 1491925389000],\n [62380000, 1492003693000],\n [62390000, 1492082003000],\n [62400000, 1492151690000],\n [62410002, 1492198376000],\n [62420000, 1492260748000],\n [62430000, 1492312442000],\n [62440000, 1492348959000],\n [62450000, 1492413755000],\n [62460000, 1492453035000],\n [62470002, 1492526215000],\n [62480000, 1492599361000],\n [62490001, 1492660202000],\n [62500000, 1492705541000],\n [62510000, 1492781135000],\n [62520001, 1492841436000],\n [62530002, 1492874780000],\n [62540002, 1492933762000],\n [62550001, 1492960691000],\n [62560000, 1493033974000],\n [62570001, 1493093628000],\n [62580002, 1493136732000],\n [62590000, 1493211622000],\n [62600000, 1493276444000],\n [62610003, 1493312435000],\n [62620000, 1493385440000],\n [62630001, 1493438388000],\n [62640000, 1493473315000],\n [62650000, 1493522097000],\n [62660000, 1493555085000],\n [62670001, 1493586549000],\n [62680003, 1493641931000],\n [62690003, 1493681520000],\n [62700002, 1493731183000],\n [62710000, 1493778538000],\n [62720000, 1493818359000],\n [62730003, 1493872141000],\n [62740000, 1493910022000],\n [62750000, 1493968043000],\n [62760001, 1493997052000],\n [62770000, 1494057461000],\n [62780000, 1494086198000],\n [62790000, 1494144157000],\n [62800000, 1494170300000],\n [62810000, 1494245199000],\n [62820001, 1494308647000],\n [62830000, 1494351165000],\n [62840000, 1494425972000],\n [62850000, 1494501435000],\n [62860000, 1494567101000],\n [62870000, 1494610007000],\n [62880001, 1494673577000],\n [62890000, 1494716102000],\n [62900001, 1494760899000],\n [62910002, 1494795763000],\n [62920000, 1494858716000],\n [62930001, 1494933038000],\n [62940001, 1494999035000],\n [62950000, 1495045116000],\n [62960000, 1495117455000],\n [62970002, 1495192286000],\n [62980001, 1495245451000],\n [62990000, 1495288662000],\n [63000000, 1495342893000],\n [63010001, 1495375426000],\n [63020000, 1495443878000],\n [63030001, 1495488210000],\n [63040002, 1495550606000],\n [63050000, 1495621709000],\n [63060000, 1495673523000],\n [63070003, 1495725794000],\n [63080001, 1495800279000],\n [63090001, 1495855801000],\n [63100000, 1495896259000],\n [63110000, 1495956096000],\n [63120004, 1495984862000],\n [63130000, 1496058038000],\n [63140001, 1496116229000],\n [63150000, 1496159773000],\n [63160001, 1496236152000],\n [63170001, 1496303987000],\n [63180001, 1496350329000],\n [63190002, 1496414214000],\n [63200000, 1496477730000],\n [63210001, 1496509683000],\n [63220000, 1496568699000],\n [63230002, 1496593843000],\n [63240001, 1496667827000],\n [63250000, 1496730997000],\n [63260002, 1496768310000],\n [63270000, 1496841898000],\n [63280000, 1496910562000],\n [63290001, 1496945416000],\n [63300000, 1497013621000],\n [63310000, 1497063495000],\n [63320002, 1497102454000],\n [63330002, 1497153633000],\n [63340000, 1497187604000],\n [63350001, 1497249375000],\n [63360000, 1497286640000],\n [63370000, 1497359990000],\n [63380000, 1497426544000],\n [63390000, 1497463041000],\n [63400001, 1497533901000],\n [63410000, 1497600873000],\n [63420001, 1497634004000],\n [63430000, 1497695549000],\n [63440000, 1497730358000],\n [63450001, 1497783481000],\n [63460001, 1497819943000],\n [63470004, 1497881556000],\n [63480001, 1497952328000],\n [63490006, 1498004419000],\n [63500001, 1498055950000],\n [63510000, 1498127512000],\n [63520000, 1498184357000],\n [63530000, 1498232682000],\n [63540000, 1498297671000],\n [63550001, 1498328857000],\n [63560000, 1498384089000],\n [63570004, 1498408425000],\n [63580000, 1498481408000],\n [63590001, 1498547374000],\n [63600002, 1498592418000],\n [63610001, 1498659877000],\n [63620000, 1498732262000],\n [63630000, 1498789573000],\n [63640000, 1498834886000],\n [63650000, 1498893446000],\n [63660000, 1498924888000],\n [63670001, 1498984295000],\n [63680000, 1499011669000],\n [63690002, 1499084640000],\n [63700001, 1499145935000],\n [63710000, 1499184277000],\n [63720001, 1499256812000],\n [63730000, 1499319244000],\n [63740000, 1499358325000],\n [63750000, 1499427606000],\n [63760000, 1499473779000],\n [63770000, 1499518404000],\n [63780000, 1499570137000],\n [63790000, 1499606468000],\n [63800001, 1499667532000],\n [63810001, 1499705198000],\n [63820000, 1499777692000],\n [63830000, 1499842313000],\n [63840000, 1499880848000],\n [63850000, 1499952096000],\n [63860001, 1500019471000],\n [63870000, 1500060664000],\n [63880000, 1500121683000],\n [63890003, 1500175988000],\n [63900002, 1500214550000],\n [63910000, 1500271015000],\n [63920000, 1500302259000],\n [63930002, 1500369797000],\n [63940002, 1500417210000],\n [63950000, 1500474447000],\n [63960001, 1500541939000],\n [63970004, 1500591859000],\n [63980001, 1500646704000],\n [63990000, 1500702985000],\n [64000000, 1500737424000],\n [64010000, 1500797122000],\n [64020003, 1500824521000],\n [64030000, 1500894449000],\n [64040001, 1500944980000],\n [64050001, 1500993080000],\n [64060000, 1501059445000],\n [64070000, 1501096994000],\n [64080000, 1501161638000],\n [64090001, 1501220721000],\n [64100002, 1501255441000],\n [64110000, 1501317242000],\n [64120000, 1501347076000],\n [64130000, 1501406103000],\n [64140000, 1501432171000],\n [64150000, 1501497471000],\n [64160003, 1501534700000],\n [64170000, 1501589484000],\n [64180001, 1501640305000],\n [64190000, 1501682663000],\n [64200001, 1501740921000],\n [64210000, 1501774003000],\n [64220001, 1501840191000],\n [64230003, 1501876461000],\n [64240001, 1501933039000],\n [64250000, 1501975601000],\n [64260000, 1502018981000],\n [64270002, 1502054247000],\n [64280000, 1502108300000],\n [64290000, 1502147937000],\n [64300001, 1502196328000],\n [64310000, 1502239978000],\n [64320001, 1502283677000],\n [64330001, 1502327192000],\n [64340000, 1502369852000],\n [64350001, 1502414935000],\n [64360000, 1502456746000],\n [64370000, 1502507657000],\n [64380000, 1502545058000],\n [64390000, 1502599020000],\n [64400002, 1502635191000],\n [64410001, 1502694201000],\n [64420002, 1502725088000],\n [64430000, 1502784283000],\n [64440000, 1502811813000],\n [64450000, 1502873020000],\n [64460003, 1502900305000],\n [64470000, 1502965681000],\n [64480000, 1502994637000],\n [64490001, 1503057862000],\n [64500004, 1503094715000],\n [64510003, 1503141827000],\n [64520000, 1503177780000],\n [64530000, 1503229320000],\n [64540001, 1503269341000],\n [64550000, 1503322079000],\n [64560000, 1503380947000],\n [64570000, 1503417451000],\n [64580000, 1503487289000],\n [64590000, 1503541439000],\n [64600000, 1503585532000],\n [64610001, 1503651473000],\n [64620001, 1503691200000],\n [64630000, 1503749613000],\n [64640001, 1503798428000],\n [64650000, 1503837777000],\n [64660000, 1503888823000],\n [64670000, 1503931542000],\n [64680000, 1503998660000],\n [64690000, 1504037284000],\n [64700000, 1504099208000],\n [64710000, 1504145326000],\n [64720002, 1504185871000],\n [64730000, 1504235552000],\n [64740000, 1504278115000],\n [64750000, 1504338313000],\n [64760000, 1504368311000],\n [64770000, 1504426725000],\n [64780002, 1504453083000],\n [64790004, 1504525423000],\n [64800000, 1504581975000],\n [64810000, 1504625026000],\n [64820000, 1504696220000],\n [64830000, 1504746792000],\n [64840003, 1504794394000],\n [64850001, 1504862330000],\n [64860000, 1504893632000],\n [64870002, 1504950575000],\n [64880000, 1504977342000],\n [64890000, 1505032864000],\n [64900001, 1505057676000],\n [64910000, 1505128148000],\n [64920000, 1505179616000],\n [64930000, 1505227942000],\n [64940001, 1505298552000],\n [64950000, 1505350667000],\n [64960000, 1505402075000],\n [64970000, 1505475364000],\n [64980000, 1505527756000],\n [64990000, 1505567634000],\n [65000000, 1505619955000],\n [65010000, 1505653358000],\n [65020002, 1505700308000],\n [65030002, 1505739476000],\n [65040000, 1505798668000],\n [65050001, 1505841437000],\n [65060002, 1505916471000],\n [65070000, 1505990197000],\n [65080000, 1506053515000],\n [65090003, 1506098572000],\n [65100000, 1506165418000],\n [65110000, 1506213077000],\n [65120001, 1506257441000],\n [65130004, 1506317830000],\n [65140002, 1506361335000],\n [65150002, 1506434369000],\n [65160000, 1506505630000],\n [65170001, 1506559410000],\n [65180000, 1506611217000],\n [65190000, 1506685849000],\n [65200000, 1506741954000],\n [65210000, 1506781740000],\n [65220000, 1506837965000],\n [65230001, 1506868001000],\n [65240001, 1506935676000],\n [65250002, 1506967887000],\n [65260001, 1507038169000],\n [65270000, 1507105220000],\n [65280001, 1507137257000],\n [65290000, 1507208805000],\n [65300000, 1507266104000],\n [65310002, 1507303384000],\n [65320001, 1507359758000],\n [65330002, 1507389726000],\n [65340000, 1507452124000],\n [65350004, 1507486625000],\n [65360003, 1507548526000],\n [65370000, 1507595053000],\n [65380000, 1507647739000],\n [65390000, 1507724768000],\n [65400002, 1507796920000],\n [65410001, 1507852793000],\n [65420000, 1507908618000],\n [65430000, 1507976799000],\n [65440000, 1508026300000],\n [65450000, 1508071551000],\n [65460002, 1508138699000],\n [65470003, 1508194279000],\n [65480000, 1508253836000],\n [65490000, 1508329397000],\n [65500000, 1508402756000],\n [65510000, 1508461111000],\n [65520000, 1508513731000],\n [65530000, 1508580291000],\n [65540001, 1508622937000],\n [65550002, 1508672935000],\n [65560000, 1508723206000],\n [65570000, 1508771508000],\n [65580003, 1508849150000],\n [65590000, 1508921514000],\n [65600001, 1508982148000],\n [65610000, 1509035394000],\n [65620003, 1509113929000],\n [65630001, 1509181233000],\n [65640000, 1509225439000],\n [65650001, 1509277179000],\n [65660001, 1509320755000],\n [65670000, 1509375281000],\n [65680001, 1509435848000],\n [65690000, 1509461170000],\n [65700000, 1509525368000],\n [65710000, 1509572960000],\n [65720000, 1509634932000],\n [65730000, 1509702456000],\n [65740000, 1509748102000],\n [65750002, 1509802062000],\n [65760000, 1509860261000],\n [65770001, 1509894005000],\n [65780001, 1509970166000],\n [65790001, 1510043296000],\n [65800000, 1510099873000],\n [65810002, 1510155255000],\n [65820000, 1510233192000],\n [65830000, 1510307681000],\n [65840000, 1510362918000],\n [65850002, 1510406391000],\n [65860000, 1510458601000],\n [65870000, 1510496232000],\n [65880003, 1510569457000],\n [65890000, 1510633348000],\n [65900000, 1510683341000],\n [65910000, 1510758402000],\n [65920001, 1510837965000],\n [65930000, 1510913169000],\n [65940001, 1510976767000],\n [65950000, 1511019100000],\n [65960000, 1511084403000],\n [65970000, 1511132352000],\n [65980001, 1511193070000],\n [65990002, 1511274902000],\n [66000000, 1511355236000],\n [66010001, 1511424780000],\n [66020000, 1511486569000],\n [66030001, 1511548859000],\n [66040000, 1511618201000],\n [66050000, 1511682667000],\n [66060000, 1511716807000],\n [66070000, 1511794805000],\n [66080000, 1511876394000],\n [66090000, 1511953844000],\n [66100000, 1512027193000],\n [66110001, 1512082204000],\n [66120000, 1512142392000],\n [66130002, 1512212602000],\n [66140001, 1512268916000],\n [66150000, 1512310671000],\n [66160000, 1512383781000],\n [66170003, 1512452862000],\n [66180001, 1512514503000],\n [66190000, 1512576281000],\n [66200003, 1512656239000],\n [66210000, 1512735127000],\n [66220000, 1512801376000],\n [66230000, 1512841118000],\n [66240001, 1512906660000],\n [66250001, 1512970369000],\n [66260001, 1513026996000],\n [66270000, 1513093478000],\n [66280001, 1513174934000],\n [66290000, 1513255346000],\n [66300001, 1513332121000],\n [66310000, 1513398412000],\n [66320002, 1513439931000],\n [66330001, 1513506007000],\n [66340000, 1513557857000],\n [66350000, 1513615875000],\n [66360003, 1513694759000],\n [66370001, 1513773236000],\n [66380000, 1513847414000],\n [66390000, 1513911314000],\n [66400002, 1513960253000],\n [66410002, 1514028888000],\n [66420002, 1514072781000],\n [66430000, 1514113979000],\n [66440000, 1514132751000],\n [66450000, 1514194504000],\n [66460000, 1514217822000],\n [66470001, 1514287260000],\n [66480001, 1514332191000],\n [66490000, 1514381665000],\n [66500002, 1514436757000],\n [66510001, 1514473371000],\n [66520001, 1514536420000],\n [66530000, 1514571264000],\n [66540000, 1514634599000],\n [66550001, 1514681448000],\n [66560000, 1514718967000],\n [66570001, 1514733848000],\n [66580000, 1514770953000],\n [66590001, 1514805113000],\n [66600000, 1514838239000],\n [66610000, 1514896743000],\n [66620001, 1514951564000],\n [66630002, 1514989931000],\n [66640000, 1515053617000],\n [66650000, 1515088457000],\n [66660001, 1515158299000],\n [66670002, 1515218400000],\n [66680000, 1515253066000],\n [66690000, 1515315406000],\n [66700001, 1515344449000],\n [66710001, 1515405256000],\n [66720000, 1515436566000],\n [66730002, 1515506638000],\n [66740003, 1515577451000],\n [66750004, 1515636081000],\n [66760000, 1515686408000],\n [66770000, 1515763229000],\n [66780000, 1515824048000],\n [66790000, 1515859245000],\n [66800000, 1515923095000],\n [66810002, 1515962501000],\n [66820000, 1516028988000],\n [66830000, 1516105801000],\n [66840000, 1516175859000],\n [66850000, 1516226300000],\n [66860001, 1516288122000],\n [66870000, 1516364367000],\n [66880000, 1516427246000],\n [66890002, 1516462797000],\n [66900000, 1516524145000],\n [66910000, 1516553175000],\n [66920000, 1516625683000],\n [66930000, 1516689581000],\n [66940001, 1516728074000],\n [66950003, 1516801407000],\n [66960001, 1516872999000],\n [66970000, 1516930948000],\n [66980000, 1516980600000],\n [66990000, 1517045188000],\n [67000003, 1517081791000],\n [67010002, 1517139796000],\n [67020002, 1517192905000],\n [67030000, 1517242650000],\n [67040000, 1517319211000],\n [67050000, 1517392855000],\n [67060000, 1517450939000],\n [67070000, 1517499186000],\n [67080001, 1517571947000],\n [67090001, 1517626970000],\n [67100002, 1517667339000],\n [67110001, 1517726092000],\n [67120003, 1517756647000],\n [67130002, 1517828941000],\n [67140001, 1517889529000],\n [67150000, 1517934672000],\n [67160000, 1518009187000],\n [67170002, 1518080642000],\n [67180000, 1518137129000],\n [67190000, 1518189353000],\n [67200000, 1518253579000],\n [67210003, 1518285361000],\n [67220000, 1518347750000],\n [67230000, 1518393591000],\n [67240000, 1518438178000],\n [67250000, 1518496710000],\n [67260002, 1518535498000],\n [67270000, 1518594649000],\n [67280001, 1518619642000],\n [67290000, 1518680031000],\n [67300001, 1518715800000],\n [67310000, 1518787067000],\n [67320002, 1518846975000],\n [67330000, 1518882031000],\n [67340000, 1518942703000],\n [67350000, 1518969582000],\n [67360000, 1519041746000],\n [67370000, 1519099005000],\n [67380000, 1519140204000],\n [67390000, 1519211860000],\n [67400000, 1519260688000],\n [67410002, 1519306946000],\n [67420001, 1519362722000],\n [67430002, 1519399402000],\n [67440000, 1519459261000],\n [67450000, 1519488534000],\n [67460000, 1519550053000],\n [67470001, 1519582526000],\n [67480003, 1519652081000],\n [67490001, 1519721536000],\n [67500003, 1519767915000],\n [67510001, 1519826491000],\n [67520001, 1519891484000],\n [67530001, 1519927907000],\n [67540000, 1519998020000],\n [67550000, 1520056025000],\n [67560000, 1520089627000],\n [67570001, 1520148400000],\n [67580001, 1520176867000],\n [67590005, 1520247852000],\n [67600000, 1520304428000],\n [67610000, 1520349746000],\n [67620000, 1520422811000],\n [67630000, 1520486827000],\n [67640000, 1520524749000],\n [67650000, 1520595483000],\n [67660001, 1520646573000],\n [67670000, 1520690096000],\n [67680000, 1520746182000],\n [67690001, 1520779081000],\n [67700000, 1520848667000],\n [67710002, 1520899906000],\n [67720000, 1520952228000],\n [67730001, 1521021293000],\n [67740000, 1521057070000],\n [67750000, 1521120782000],\n [67760000, 1521184574000],\n [67770000, 1521218836000],\n [67780000, 1521281394000],\n [67790000, 1521316367000],\n [67800000, 1521373329000],\n [67810000, 1521423767000],\n [67820001, 1521471600000],\n [67830001, 1521542819000],\n [67840000, 1521598520000],\n [67850000, 1521638974000],\n [67860000, 1521702616000],\n [67870000, 1521742100000],\n [67880000, 1521811971000],\n [67890001, 1521872786000],\n [67900000, 1521906671000],\n [67910000, 1521969555000],\n [67920007, 1522001670000],\n [67930000, 1522070406000],\n [67940000, 1522135837000],\n [67950000, 1522173584000],\n [67960002, 1522242791000],\n [67970000, 1522306809000],\n [67980000, 1522344460000],\n [67990001, 1522412594000],\n [68000000, 1522468069000],\n [68010000, 1522506554000],\n [68020000, 1522557559000],\n [68030000, 1522590706000],\n [68040000, 1522650575000],\n [68050000, 1522685331000],\n [68060000, 1522756281000],\n [68070000, 1522813717000],\n [68080000, 1522856141000],\n [68090003, 1522928876000],\n [68100000, 1522988245000],\n [68110000, 1523029133000],\n [68120001, 1523093331000],\n [68130002, 1523125014000],\n [68140001, 1523183935000],\n [68150001, 1523227230000],\n [68160000, 1523284539000],\n [68170002, 1523358484000],\n [68180000, 1523420575000],\n [68190001, 1523466033000],\n [68200001, 1523541144000],\n [68210000, 1523615555000],\n [68220000, 1523672390000],\n [68230000, 1523713946000],\n [68240000, 1523766455000],\n [68250001, 1523798848000],\n [68260000, 1523863242000],\n [68270001, 1523901468000],\n [68280000, 1523973786000],\n [68290001, 1524047744000],\n [68300001, 1524107018000],\n [68310000, 1524154044000],\n [68320001, 1524229042000],\n [68330000, 1524286922000],\n [68340000, 1524323212000],\n [68350000, 1524381473000],\n [68360000, 1524409014000],\n [68370000, 1524478747000],\n [68380001, 1524525543000],\n [68390000, 1524580850000],\n [68400000, 1524653994000],\n [68410000, 1524709045000],\n [68420000, 1524755100000],\n [68430000, 1524826488000],\n [68440000, 1524865483000],\n [68450000, 1524916337000],\n [68460001, 1524953059000],\n [68470000, 1524999613000],\n [68480001, 1525025191000],\n [68490000, 1525080615000],\n [68500002, 1525101539000],\n [68510003, 1525162635000],\n [68520002, 1525187749000],\n [68530000, 1525245718000],\n [68540000, 1525273420000],\n [68550000, 1525327908000],\n [68560001, 1525359119000],\n [68570002, 1525416288000],\n [68580000, 1525447801000],\n [68590001, 1525506649000],\n [68600004, 1525534849000],\n [68610000, 1525591851000],\n [68620003, 1525618511000],\n [68630000, 1525643849000],\n [68640001, 1525701190000],\n [68650000, 1525767545000],\n [68660000, 1525808401000],\n [68670000, 1525876015000],\n [68680000, 1525949150000],\n [68690000, 1526007825000],\n [68700000, 1526056163000],\n [68710000, 1526122821000],\n [68720000, 1526169299000],\n [68730000, 1526210632000],\n [68740001, 1526245158000],\n [68750000, 1526306217000],\n [68760000, 1526373997000],\n [68770001, 1526422460000],\n [68780000, 1526482497000],\n [68790000, 1526556215000],\n [68800001, 1526614484000],\n [68810000, 1526660277000],\n [68820001, 1526726230000],\n [68830000, 1526766179000],\n [68840000, 1526815391000],\n [68850000, 1526860749000],\n [68860001, 1526914592000],\n [68870001, 1526986814000],\n [68880000, 1527046837000],\n [68890007, 1527089275000],\n [68900002, 1527162614000],\n [68910000, 1527220624000],\n [68920000, 1527263825000],\n [68930000, 1527328049000],\n [68940001, 1527361209000],\n [68950004, 1527416538000],\n [68960000, 1527442251000],\n [68970000, 1527513976000],\n [68980001, 1527583168000],\n [68990000, 1527634736000],\n [69000000, 1527691902000],\n [69010001, 1527766421000],\n [69020000, 1527823668000],\n [69030000, 1527868950000],\n [69040000, 1527935212000],\n [69050000, 1527978877000],\n [69060000, 1528025307000],\n [69070002, 1528064391000],\n [69080001, 1528123377000],\n [69090000, 1528198458000],\n [69100000, 1528260415000],\n [69110001, 1528302226000],\n [69120000, 1528377728000],\n [69130000, 1528447154000],\n [69140002, 1528488138000],\n [69150000, 1528545941000],\n [69160000, 1528592623000],\n [69170000, 1528632255000],\n [69180000, 1528680956000],\n [69190005, 1528729587000],\n [69200000, 1528803749000],\n [69210000, 1528862130000],\n [69220000, 1528905872000],\n [69230001, 1528981229000],\n [69240000, 1529046681000],\n [69250000, 1529088379000],\n [69260000, 1529150795000],\n [69270000, 1529200936000],\n [69280000, 1529240724000],\n [69290000, 1529300926000],\n [69300003, 1529343151000],\n [69310000, 1529416036000],\n [69320002, 1529486838000],\n [69330000, 1529539015000],\n [69340000, 1529593237000],\n [69350001, 1529667628000],\n [69360000, 1529722072000],\n [69370002, 1529763311000],\n [69380002, 1529818645000],\n [69390000, 1529851102000],\n [69400001, 1529920747000],\n [69410001, 1529975408000],\n [69420002, 1530027810000],\n [69430000, 1530103971000],\n [69440001, 1530173255000],\n [69450000, 1530224811000],\n [69460000, 1530283275000],\n [69470000, 1530342956000],\n [69480002, 1530373895000],\n [69490000, 1530432807000],\n [69500000, 1530461484000],\n [69510002, 1530536210000],\n [69520001, 1530605315000],\n [69530002, 1530658087000],\n [69540000, 1530716093000],\n [69550001, 1530790105000],\n [69560000, 1530854239000],\n [69570000, 1530895115000],\n [69580000, 1530957423000],\n [69590000, 1530988766000],\n [69600000, 1531046898000],\n [69610000, 1531091459000],\n [69620002, 1531148189000],\n [69630004, 1531223860000],\n [69640000, 1531291270000],\n [69650000, 1531340220000],\n [69660000, 1531407337000],\n [69670000, 1531481045000],\n [69680000, 1531538663000],\n [69690004, 1531581179000],\n [69700004, 1531642256000],\n [69710000, 1531674430000],\n [69720001, 1531736842000],\n [69730000, 1531780044000],\n [69740000, 1531839242000],\n [69750002, 1531912872000],\n [69760000, 1531978052000],\n [69770001, 1532024345000],\n [69780000, 1532096007000],\n [69790001, 1532160363000],\n [69800000, 1532195393000],\n [69810001, 1532255368000],\n [69820001, 1532295023000],\n [69830001, 1532355365000],\n [69840004, 1532425955000],\n [69850001, 1532481458000],\n [69860002, 1532531549000],\n [69870001, 1532604726000],\n [69880002, 1532664516000],\n [69890000, 1532707078000],\n [69900000, 1532772952000],\n [69910001, 1532811097000],\n [69920001, 1532864268000],\n [69930000, 1532911701000],\n [69940001, 1532961232000],\n [69950000, 1533028668000],\n [69960000, 1533065978000],\n [69970000, 1533128703000],\n [69980000, 1533187983000],\n [69990000, 1533224798000],\n [70000001, 1533293626000],\n [70010000, 1533341881000],\n [70020002, 1533388770000],\n [70030003, 1533441440000],\n [70040003, 1533475406000],\n [70050000, 1533530540000],\n [70060000, 1533568278000],\n [70070001, 1533634816000],\n [70080000, 1533663670000],\n [70090001, 1533727595000],\n [70100000, 1533754702000],\n [70110001, 1533815063000],\n [70120001, 1533853793000],\n [70130001, 1533907802000],\n [70140001, 1533965009000],\n [70150000, 1534003521000],\n [70160001, 1534068838000],\n [70170003, 1534116792000],\n [70180000, 1534167758000],\n [70190000, 1534226116000],\n [70200000, 1534261750000],\n [70210000, 1534324674000],\n [70220001, 1534354181000],\n [70230002, 1534417528000],\n [70240001, 1534457754000],\n [70250000, 1534510811000],\n [70260000, 1534559909000],\n [70270004, 1534599747000],\n [70280000, 1534654766000],\n [70290000, 1534689851000],\n [70300000, 1534757233000],\n [70310002, 1534799115000],\n [70320000, 1534859703000],\n [70330001, 1534925365000],\n [70340000, 1534965074000],\n [70350000, 1535029985000],\n [70360002, 1535091868000],\n [70370000, 1535129089000],\n [70380001, 1535193273000],\n [70390000, 1535240430000],\n [70400001, 1535286462000],\n [70410000, 1535341070000],\n [70420002, 1535383883000],\n [70430000, 1535457290000],\n [70440000, 1535518458000],\n [70450000, 1535560250000],\n [70460000, 1535633551000],\n [70470001, 1535689162000],\n [70480001, 1535727872000],\n [70490000, 1535789665000],\n [70500002, 1535821987000],\n [70510000, 1535882378000],\n [70520000, 1535916475000],\n [70530001, 1535983603000],\n [70540000, 1536050503000],\n [70550000, 1536088917000],\n [70560000, 1536157094000],\n [70570000, 1536231786000],\n [70580000, 1536296501000],\n [70590000, 1536340085000],\n [70600002, 1536406617000],\n [70610000, 1536455059000],\n [70620000, 1536495553000],\n [70630001, 1536547843000],\n [70640000, 1536593072000],\n [70650000, 1536668563000],\n [70660000, 1536736908000],\n [70670001, 1536780704000],\n [70680000, 1536848733000],\n [70690000, 1536921949000],\n [70700001, 1536973292000],\n [70710001, 1537017778000],\n [70720000, 1537069850000],\n [70730000, 1537107049000],\n [70740000, 1537164128000],\n [70750000, 1537196639000],\n [70760000, 1537270358000],\n [70770000, 1537331917000],\n [70780001, 1537378349000],\n [70790000, 1537452583000],\n [70800002, 1537526264000],\n [70810000, 1537581934000],\n [70820000, 1537627198000],\n [70830002, 1537688897000],\n [70840000, 1537722143000],\n [70850000, 1537780273000],\n [70860000, 1537804597000],\n [70870000, 1537872500000],\n [70880000, 1537917687000],\n [70890000, 1537971507000],\n [70900001, 1538039774000],\n [70910000, 1538089855000],\n [70920000, 1538147137000],\n [70930000, 1538210737000],\n [70940000, 1538242739000],\n [70950000, 1538297704000],\n [70960000, 1538320420000],\n [70970000, 1538386328000],\n [70980000, 1538422301000],\n [70990000, 1538489010000],\n [71000000, 1538556741000],\n [71010001, 1538597401000],\n [71020000, 1538661225000],\n [71030000, 1538728102000],\n [71040000, 1538761843000],\n [71050000, 1538820539000],\n [71060002, 1538854718000],\n [71070000, 1538911539000],\n [71080002, 1538957736000],\n [71090000, 1539001928000],\n [71100000, 1539061140000],\n [71110003, 1539102071000],\n [71120001, 1539174711000],\n [71130003, 1539239471000],\n [71140000, 1539279611000],\n [71150003, 1539352332000],\n [71160002, 1539417036000],\n [71170001, 1539450581000],\n [71180000, 1539511324000],\n [71190000, 1539540615000],\n [71200000, 1539610136000],\n [71210000, 1539681105000],\n [71220001, 1539738088000],\n [71230000, 1539788591000],\n [71240001, 1539861270000],\n [71250000, 1539922323000],\n [71260003, 1539968212000],\n [71270000, 1540035844000],\n [71280000, 1540088174000],\n [71290000, 1540127974000],\n [71300000, 1540194402000],\n [71310000, 1540241544000],\n [71320000, 1540306298000],\n [71330001, 1540382709000],\n [71340000, 1540449555000],\n [71350001, 1540496571000],\n [71360000, 1540564024000],\n [71370000, 1540627992000],\n [71380000, 1540662656000],\n [71390000, 1540724624000],\n [71400002, 1540774195000],\n [71410002, 1540825418000],\n [71420000, 1540900181000],\n [71430001, 1540942900000],\n [71440000, 1540988683000],\n [71450000, 1541013088000],\n [71460001, 1541078575000],\n [71470000, 1541149141000],\n [71480000, 1541200241000],\n [71490000, 1541251238000],\n [71500000, 1541308607000],\n [71510000, 1541341872000],\n [71520000, 1541412652000],\n [71530000, 1541472532000],\n [71540000, 1541520635000],\n [71550000, 1541596851000],\n [71560001, 1541668759000],\n [71570000, 1541726871000],\n [71580001, 1541777843000],\n [71590000, 1541845928000],\n [71600002, 1541888736000],\n [71610000, 1541934928000],\n [71620000, 1541964051000],\n [71630000, 1542031527000],\n [71640000, 1542103996000],\n [71650000, 1542165525000],\n [71660001, 1542213349000],\n [71670001, 1542288816000],\n [71680000, 1542361750000],\n [71690000, 1542418474000],\n [71700000, 1542464082000],\n [71710000, 1542521873000],\n [71720000, 1542551494000],\n [71730001, 1542621946000],\n [71740002, 1542667578000],\n [71750000, 1542722500000],\n [71760000, 1542791211000],\n [71770000, 1542824840000],\n [71780003, 1542892813000],\n [71790000, 1542943408000],\n [71800000, 1542982468000],\n [71810000, 1543043560000],\n [71820006, 1543080139000],\n [71830000, 1543142640000],\n [71840000, 1543192718000],\n [71850002, 1543246324000],\n [71860003, 1543323743000],\n [71870001, 1543396323000],\n [71880000, 1543454076000],\n [71890004, 1543506855000],\n [71900000, 1543582963000],\n [71910000, 1543644113000],\n [71920001, 1543681587000],\n [71930001, 1543744321000],\n [71940001, 1543782600000],\n [71950001, 1543847396000],\n [71960000, 1543910919000],\n [71970002, 1543949491000],\n [71980000, 1544014940000],\n [71990002, 1544077125000],\n [72000002, 1544121143000],\n [72010003, 1544190546000],\n [72020000, 1544254822000],\n [72030000, 1544292984000],\n [72040001, 1544353258000],\n [72050000, 1544397195000],\n [72060000, 1544454946000],\n [72070000, 1544530756000],\n [72080002, 1544600454000],\n [72090000, 1544654112000],\n [72100000, 1544712024000],\n [72110000, 1544784886000],\n [72120000, 1544843542000],\n [72130002, 1544886475000],\n [72140000, 1544947989000],\n [72150000, 1544978552000],\n [72160000, 1545051850000],\n [72170000, 1545120134000],\n [72180000, 1545174503000],\n [72190000, 1545232427000],\n [72200000, 1545306855000],\n [72210000, 1545371245000],\n [72220000, 1545413187000],\n [72230000, 1545477616000],\n [72240001, 1545523994000],\n [72250000, 1545568189000],\n [72260001, 1545607132000],\n [72270001, 1545648313000],\n [72280000, 1545666632000],\n [72290000, 1545723283000],\n [72300002, 1545749364000],\n [72310000, 1545808557000],\n [72320001, 1545839607000],\n [72330003, 1545905923000],\n [72340001, 1545937307000],\n [72350001, 1545997652000],\n [72360002, 1546044137000],\n [72370001, 1546089745000],\n [72380000, 1546143723000],\n [72390000, 1546181512000],\n [72400000, 1546233763000],\n [72410000, 1546262657000],\n [72420000, 1546274077000],\n [72430000, 1546317453000],\n [72440000, 1546348206000],\n [72450000, 1546396049000],\n [72460000, 1546437174000],\n [72470000, 1546493281000],\n [72480000, 1546527962000],\n [72490000, 1546592449000],\n [72500000, 1546629592000],\n [72510001, 1546688629000],\n [72520000, 1546734599000],\n [72530004, 1546775131000],\n [72540001, 1546815138000],\n [72550002, 1546870083000],\n [72560000, 1546939278000],\n [72570000, 1546987244000],\n [72580000, 1547043211000],\n [72590003, 1547110805000],\n [72600000, 1547152350000],\n [72610000, 1547214363000],\n [72620001, 1547271736000],\n [72630000, 1547305600000],\n [72640001, 1547363893000],\n [72650000, 1547394641000],\n [72660000, 1547454693000],\n [72670001, 1547482786000],\n [72680000, 1547554701000],\n [72690000, 1547614636000],\n [72700000, 1547656970000],\n [72710000, 1547729496000],\n [72720000, 1547795122000],\n [72730000, 1547836724000],\n [72740000, 1547898735000],\n [72750001, 1547945548000],\n [72760000, 1547986028000],\n [72770002, 1548033768000],\n [72780000, 1548082371000],\n [72790001, 1548152633000],\n [72800000, 1548202317000],\n [72810000, 1548253713000],\n [72820001, 1548321357000],\n [72830000, 1548360891000],\n [72840000, 1548423665000],\n [72850001, 1548480132000],\n [72860002, 1548514935000],\n [72870001, 1548574649000],\n [72880000, 1548604181000],\n [72890001, 1548677054000],\n [72900001, 1548739463000],\n [72910000, 1548781107000],\n [72920002, 1548853626000],\n [72930000, 1548919152000],\n [72940000, 1548951077000],\n [72950000, 1549019715000],\n [72960001, 1549068329000],\n [72970003, 1549111971000],\n [72980001, 1549159968000],\n [72990000, 1549196188000],\n [73000000, 1549237832000],\n [73010002, 1549289058000],\n [73020002, 1549354695000],\n [73030005, 1549392741000],\n [73040000, 1549458883000],\n [73050003, 1549520105000],\n [73060002, 1549555854000],\n [73070000, 1549627217000],\n [73080001, 1549681748000],\n [73090000, 1549720758000],\n [73100002, 1549772898000],\n [73110000, 1549807132000],\n [73120002, 1549856659000],\n [73130000, 1549890810000],\n [73140001, 1549946094000],\n [73150001, 1549986080000],\n [73160000, 1550056521000],\n [73170000, 1550084186000],\n [73180001, 1550140671000],\n [73190001, 1550159800000],\n [73200001, 1550224779000],\n [73210001, 1550260933000],\n [73220000, 1550316429000],\n [73230000, 1550353828000],\n [73240001, 1550400558000],\n [73250000, 1550425730000],\n [73260001, 1550492995000],\n [73270000, 1550546568000],\n [73280000, 1550587970000],\n [73290000, 1550653467000],\n [73300001, 1550684542000],\n [73310001, 1550751102000],\n [73320000, 1550793473000],\n [73330001, 1550841517000],\n [73340001, 1550881298000],\n [73350002, 1550922499000],\n [73360001, 1550958074000],\n [73370000, 1551006541000],\n [73380000, 1551041014000],\n [73390001, 1551099431000],\n [73400002, 1551157089000],\n [73410000, 1551196014000],\n [73420000, 1551266496000],\n [73430001, 1551314543000],\n [73440000, 1551362590000],\n [73450002, 1551420873000],\n [73460000, 1551456707000],\n [73470002, 1551518312000],\n [73480001, 1551546935000],\n [73490000, 1551601645000],\n [73500000, 1551625574000],\n [73510001, 1551692198000],\n [73520001, 1551733459000],\n [73530000, 1551794253000],\n [73540000, 1551856997000],\n [73550002, 1551892186000],\n [73560001, 1551961298000],\n [73570003, 1552017331000],\n [73580000, 1552059548000],\n [73590000, 1552120744000],\n [73600000, 1552148547000],\n [73610000, 1552206052000],\n [73620001, 1552232092000],\n [73630002, 1552299864000],\n [73640000, 1552343880000],\n [73650000, 1552398957000],\n [73660001, 1552464772000],\n [73670000, 1552499469000],\n [73680000, 1552567147000],\n [73690000, 1552619001000],\n [73700000, 1552662176000],\n [73710000, 1552721307000],\n [73720000, 1552751752000],\n [73730000, 1552808226000],\n [73740000, 1552835248000],\n [73750000, 1552902939000],\n [73760001, 1552954284000],\n [73770000, 1553006331000],\n [73780000, 1553073115000],\n [73790000, 1553113343000],\n [73800001, 1553169072000],\n [73810000, 1553216422000],\n [73820000, 1553265664000],\n [73830001, 1553325454000],\n [73840001, 1553356922000],\n [73850000, 1553416024000],\n [73860000, 1553442284000],\n [73870000, 1553511233000],\n [73880001, 1553558316000],\n [73890000, 1553609553000],\n [73900001, 1553674157000],\n [73910001, 1553708617000],\n [73920000, 1553776601000],\n [73930000, 1553833131000],\n [73940001, 1553872563000],\n [73950003, 1553931861000],\n [73960001, 1553960734000],\n [73970000, 1554014776000],\n [73980000, 1554042148000],\n [73990000, 1554093422000],\n [74000000, 1554131333000],\n [74010000, 1554199206000],\n [74020000, 1554250709000],\n [74030000, 1554302489000],\n [74040001, 1554372228000],\n [74050000, 1554423465000],\n [74060000, 1554474600000],\n [74070000, 1554534629000],\n [74080000, 1554567156000],\n [74090001, 1554626234000],\n [74100000, 1554651766000],\n [74110002, 1554721970000],\n [74120000, 1554780065000],\n [74130000, 1554824868000],\n [74140001, 1554899176000],\n [74150003, 1554964923000],\n [74160000, 1555009812000],\n [74170000, 1555078977000],\n [74180000, 1555142601000],\n [74190000, 1555177120000],\n [74200000, 1555233822000],\n [74210000, 1555258531000],\n [74220000, 1555330359000],\n [74230000, 1555394652000],\n [74240000, 1555439575000],\n [74250002, 1555509015000],\n [74260000, 1555581255000],\n [74270000, 1555633380000],\n [74280001, 1555686276000],\n [74290000, 1555749001000],\n [74300000, 1555780505000],\n [74310000, 1555837371000],\n [74320001, 1555862390000],\n [74330000, 1555933600000],\n [74340000, 1555989889000],\n [74350000, 1556034502000],\n [74360001, 1556107770000],\n [74370000, 1556167348000],\n [74380000, 1556208193000],\n [74390000, 1556281031000],\n [74400001, 1556331452000],\n [74410004, 1556370777000],\n [74420000, 1556420818000],\n [74430000, 1556458605000],\n [74440000, 1556511455000],\n [74450000, 1556546313000],\n [74460001, 1556593795000],\n [74470000, 1556624857000],\n [74480000, 1556637699000],\n [74490001, 1556688527000],\n [74500000, 1556718811000],\n [74510001, 1556765309000],\n [74520000, 1556802015000],\n [74530002, 1556849353000],\n [74540002, 1556889643000],\n [74550002, 1556939986000],\n [74560000, 1556977364000],\n [74570000, 1557023415000],\n [74580000, 1557059372000],\n [74590000, 1557096900000],\n [74600001, 1557140408000],\n [74610000, 1557172924000],\n [74620003, 1557238020000],\n [74630000, 1557309534000],\n [74640000, 1557363295000],\n [74650000, 1557414782000],\n [74660001, 1557488614000],\n [74670001, 1557541721000],\n [74680002, 1557583324000],\n [74690001, 1557636382000],\n [74700000, 1557669411000],\n [74710000, 1557733896000],\n [74720000, 1557775631000],\n [74730000, 1557842303000],\n [74740000, 1557910870000],\n [74750000, 1557960886000],\n [74760000, 1558019461000],\n [74770000, 1558092814000],\n [74780000, 1558146423000],\n [74790000, 1558188463000],\n [74800001, 1558243324000],\n [74810000, 1558274890000],\n [74820002, 1558338702000],\n [74830000, 1558378003000],\n [74840000, 1558445935000],\n [74850002, 1558515890000],\n [74860001, 1558566351000],\n [74870001, 1558622469000],\n [74880003, 1558691372000],\n [74890000, 1558739188000],\n [74900002, 1558789053000],\n [74910001, 1558841401000],\n [74920000, 1558876318000],\n [74930001, 1558932416000],\n [74940001, 1558974705000],\n [74950000, 1559048815000],\n [74960000, 1559117085000],\n [74970001, 1559163704000],\n [74980000, 1559226208000],\n [74990000, 1559296147000],\n [75000000, 1559341839000],\n [75010000, 1559391087000],\n [75020001, 1559440340000],\n [75030000, 1559478346000],\n [75040001, 1559528747000],\n [75050000, 1559574491000],\n [75060002, 1559649834000],\n [75070000, 1559711830000],\n [75080000, 1559753905000],\n [75090002, 1559824921000],\n [75100000, 1559886875000],\n [75110004, 1559923687000],\n [75120000, 1559985944000],\n [75130000, 1560016514000],\n [75140000, 1560072057000],\n [75150001, 1560095010000],\n [75160001, 1560165185000],\n [75170003, 1560218438000],\n [75180000, 1560265400000],\n [75190000, 1560336925000],\n [75200000, 1560388429000],\n [75210001, 1560438284000],\n [75220000, 1560510607000],\n [75230000, 1560564573000],\n [75240000, 1560605980000],\n [75250000, 1560656737000],\n [75260001, 1560691792000],\n [75270000, 1560751011000],\n [75280001, 1560791029000],\n [75290000, 1560862353000],\n [75300000, 1560927205000],\n [75310001, 1560964659000],\n [75320000, 1561035219000],\n [75330000, 1561095592000],\n [75340000, 1561133284000],\n [75350001, 1561193649000],\n [75360000, 1561223789000],\n [75370002, 1561281019000],\n [75380000, 1561308233000],\n [75390001, 1561379138000],\n [75400000, 1561437826000],\n [75410000, 1561481017000],\n [75420000, 1561553132000],\n [75430000, 1561616259000],\n [75440000, 1561655761000],\n [75450001, 1561726404000],\n [75460000, 1561782418000],\n [75470000, 1561819049000],\n [75480000, 1561872925000],\n [75490000, 1561903030000],\n [75500003, 1561960317000],\n [75510001, 1561996854000],\n [75520002, 1562067922000],\n [75530002, 1562124498000],\n [75540000, 1562167665000],\n [75550001, 1562240504000],\n [75560000, 1562298567000],\n [75570000, 1562341575000],\n [75580000, 1562406542000],\n [75590000, 1562437694000],\n [75600004, 1562491887000],\n [75610000, 1562514825000],\n [75620003, 1562585131000],\n [75630000, 1562636339000],\n [75640000, 1562683191000],\n [75650002, 1562753859000],\n [75660000, 1562800478000],\n [75670000, 1562854095000],\n [75680000, 1562918120000],\n [75690001, 1562950801000],\n [75700000, 1563010535000],\n [75710002, 1563041761000],\n [75720002, 1563099712000],\n [75730002, 1563130877000],\n [75740001, 1563186079000],\n [75750000, 1563218209000],\n [75760000, 1563282794000],\n [75770000, 1563344879000],\n [75780001, 1563381629000],\n [75790000, 1563453956000],\n [75800000, 1563517085000],\n [75810000, 1563553688000],\n [75820000, 1563613736000],\n [75830003, 1563643643000],\n [75840000, 1563703356000],\n [75850000, 1563734344000],\n [75860001, 1563799753000],\n [75870001, 1563858045000],\n [75880000, 1563898194000],\n [75890000, 1563968622000],\n [75900000, 1564027533000],\n [75910001, 1564069923000],\n [75920000, 1564139955000],\n [75930000, 1564192711000],\n [75940000, 1564235050000],\n [75950000, 1564290089000],\n [75960001, 1564323613000],\n [75970002, 1564388017000],\n [75980000, 1564423582000],\n [75990000, 1564490729000],\n [76000000, 1564547542000],\n [76010000, 1564586012000],\n [76020002, 1564650865000],\n [76030000, 1564685184000],\n [76040000, 1564749129000],\n [76050000, 1564798987000],\n [76060000, 1564840050000],\n [76070000, 1564892912000],\n [76080000, 1564926788000],\n [76090001, 1564986889000],\n [76100001, 1565020129000],\n [76110000, 1565086406000],\n [76120000, 1565118741000],\n [76130002, 1565180359000],\n [76140000, 1565220758000],\n [76150001, 1565267646000],\n [76160002, 1565313456000],\n [76170000, 1565358718000],\n [76180000, 1565413169000],\n [76190000, 1565450269000],\n [76200001, 1565511983000],\n [76210001, 1565546923000],\n [76220002, 1565607908000],\n [76230001, 1565656671000],\n [76240000, 1565703462000],\n [76250001, 1565759227000],\n [76260001, 1565795841000],\n [76270000, 1565855146000],\n [76280000, 1565883889000],\n [76290000, 1565946107000],\n [76300000, 1565978408000],\n [76310000, 1566039436000],\n [76320002, 1566079948000],\n [76330003, 1566125560000],\n [76340000, 1566153619000],\n [76350001, 1566216889000],\n [76360000, 1566265859000],\n [76370000, 1566310563000],\n [76380000, 1566372197000],\n [76390000, 1566403363000],\n [76400000, 1566471275000],\n [76410001, 1566509566000],\n [76420001, 1566565068000],\n [76430000, 1566611680000],\n [76440001, 1566652231000],\n [76450003, 1566702182000],\n [76460001, 1566740305000],\n [76470000, 1566799829000],\n [76480000, 1566837513000],\n [76490000, 1566908438000],\n [76500000, 1566967629000],\n [76510002, 1567007870000],\n [76520000, 1567078974000],\n [76530003, 1567135140000],\n [76540000, 1567178242000],\n [76550000, 1567236718000],\n [76560000, 1567264875000],\n [76570000, 1567320844000],\n [76580000, 1567349250000],\n [76590000, 1567414982000],\n [76600000, 1567457714000],\n [76610000, 1567518907000],\n [76620000, 1567587982000],\n [76630002, 1567637441000],\n [76640000, 1567694711000],\n [76650000, 1567766416000],\n [76660002, 1567819638000],\n [76670005, 1567864904000],\n [76680002, 1567919174000],\n [76690000, 1567951278000],\n [76700001, 1568011851000],\n [76710002, 1568047453000],\n [76720000, 1568119256000],\n [76730003, 1568183199000],\n [76740001, 1568225531000],\n [76750000, 1568295584000],\n [76760000, 1568362361000],\n [76770002, 1568402570000],\n [76780000, 1568463499000],\n [76790000, 1568513761000],\n [76800001, 1568553173000],\n [76810002, 1568604342000],\n [76820001, 1568640092000],\n [76830001, 1568699299000],\n [76840001, 1568738525000],\n [76850003, 1568811673000],\n [76860000, 1568875384000],\n [76870000, 1568917822000],\n [76880000, 1568986806000],\n [76890002, 1569046157000],\n [76900000, 1569080246000],\n [76910001, 1569139762000],\n [76920001, 1569168747000],\n [76930000, 1569226998000],\n [76940000, 1569253569000],\n [76950000, 1569325964000],\n [76960000, 1569386704000],\n [76970000, 1569431406000],\n [76980001, 1569505424000],\n [76990002, 1569576236000],\n [77000002, 1569626464000],\n [77010000, 1569675238000],\n [77020000, 1569727667000],\n [77030000, 1569762931000],\n [77040000, 1569822825000],\n [77050000, 1569858533000],\n [77060000, 1569929216000],\n [77070000, 1569980978000],\n [77080002, 1570027438000],\n [77090001, 1570095720000],\n [77100001, 1570135068000],\n [77110000, 1570195330000],\n [77120000, 1570248898000],\n [77130001, 1570284981000],\n [77140002, 1570336741000],\n [77150000, 1570366946000],\n [77160000, 1570417375000],\n [77170000, 1570459051000],\n [77180000, 1570526961000],\n [77190001, 1570565629000],\n [77200002, 1570627858000],\n [77210000, 1570687028000],\n [77220000, 1570724875000],\n [77230001, 1570796190000],\n [77240000, 1570847380000],\n [77250001, 1570883067000],\n [77260000, 1570926372000],\n [77270000, 1570963263000],\n [77280000, 1570984991000],\n [77290000, 1571041957000],\n [77300001, 1571067701000],\n [77310000, 1571139043000],\n [77320001, 1571193128000],\n [77330000, 1571239423000],\n [77340005, 1571312887000],\n [77350000, 1571369811000],\n [77360002, 1571411950000],\n [77370000, 1571473839000],\n [77380000, 1571505313000],\n [77390000, 1571563317000],\n [77400000, 1571591232000],\n [77410000, 1571660678000],\n [77420000, 1571712562000],\n [77430003, 1571750399000],\n [77440000, 1571813293000],\n [77450000, 1571851607000],\n [77460001, 1571923655000],\n [77470000, 1571992236000],\n [77480000, 1572037784000],\n [77490000, 1572092494000],\n [77500000, 1572142437000],\n [77510000, 1572180148000],\n [77520001, 1572231861000],\n [77530000, 1572275768000],\n [77540000, 1572348116000],\n [77550001, 1572405568000],\n [77560000, 1572447709000],\n [77570001, 1572501282000],\n [77580000, 1572529172000],\n [77590001, 1572568204000],\n [77600000, 1572616006000],\n [77610000, 1572672492000],\n [77620001, 1572707631000],\n [77630000, 1572765930000],\n [77640000, 1572795506000],\n [77650002, 1572855145000],\n [77660003, 1572883288000],\n [77670000, 1572955653000],\n [77680002, 1573016599000],\n [77690001, 1573058789000],\n [77700001, 1573131780000],\n [77710002, 1573197783000],\n [77720000, 1573239769000],\n [77730000, 1573299891000],\n [77740000, 1573348388000],\n [77750000, 1573387544000],\n [77760000, 1573428601000],\n [77770000, 1573478893000],\n [77780003, 1573537253000],\n [77790000, 1573576677000],\n [77800000, 1573648497000],\n [77810000, 1573711114000],\n [77820000, 1573750607000],\n [77830001, 1573822482000],\n [77840000, 1573880260000],\n [77850001, 1573917037000],\n [77860000, 1573977296000],\n [77870000, 1574006064000],\n [77880000, 1574077861000],\n [77890000, 1574136265000],\n [77900000, 1574181839000],\n [77910001, 1574255379000],\n [77920000, 1574323713000],\n [77930002, 1574374417000],\n [77940000, 1574431990000],\n [77950000, 1574490397000],\n [77960002, 1574521934000],\n [77970000, 1574578831000],\n [77980000, 1574607595000],\n [77990001, 1574675031000],\n [78000000, 1574722236000],\n [78010000, 1574778123000],\n [78020000, 1574847408000],\n [78030001, 1574893044000],\n [78040000, 1574949601000],\n [78050000, 1575015696000],\n [78060001, 1575050002000],\n [78070000, 1575112026000],\n [78080000, 1575151289000],\n [78090005, 1575198305000],\n [78100004, 1575233752000],\n [78110000, 1575293230000],\n [78120000, 1575359472000],\n [78130000, 1575396543000],\n [78140000, 1575465710000],\n [78150001, 1575533610000],\n [78160000, 1575579854000],\n [78170000, 1575640986000],\n [78180000, 1575701599000],\n [78190000, 1575733850000],\n [78200001, 1575794252000],\n [78210000, 1575823317000],\n [78220000, 1575896218000],\n [78230000, 1575964173000],\n [78240000, 1576011655000],\n [78250000, 1576073933000],\n [78260001, 1576144389000],\n [78270000, 1576200749000],\n [78280000, 1576250393000],\n [78290000, 1576315055000],\n [78300000, 1576351491000],\n [78310001, 1576406488000],\n [78320000, 1576444214000],\n [78330000, 1576504997000],\n [78340002, 1576574146000],\n [78350000, 1576621106000],\n [78360002, 1576678062000],\n [78370001, 1576746527000],\n [78380000, 1576794604000],\n [78390002, 1576851721000],\n [78400000, 1576911721000],\n [78410004, 1576943227000],\n [78420000, 1577002401000],\n [78430001, 1577028867000],\n [78440001, 1577096620000],\n [78450000, 1577123671000],\n [78460000, 1577184292000],\n [78470001, 1577203292000],\n [78480000, 1577257657000],\n [78490001, 1577283436000],\n [78500000, 1577332465000],\n [78510000, 1577369168000],\n [78520000, 1577418022000],\n [78530001, 1577454785000],\n [78540000, 1577504358000],\n [78550000, 1577541845000],\n [78560002, 1577594977000],\n [78570000, 1577628750000],\n [78580000, 1577681692000],\n [78590000, 1577714761000],\n [78600000, 1577760133000],\n [78610001, 1577789089000],\n [78620000, 1577804530000],\n [78630000, 1577821920000],\n [78640000, 1577860275000],\n [78650001, 1577885897000],\n [78660000, 1577930220000],\n [78670001, 1577968102000],\n [78680000, 1578013562000],\n [78690000, 1578054428000],\n [78700000, 1578097732000],\n [78710000, 1578138315000],\n [78720000, 1578173994000],\n [78730001, 1578218433000],\n [78740001, 1578241469000],\n [78750000, 1578305688000],\n [78760000, 1578337485000],\n [78770000, 1578398338000],\n [78780000, 1578444020000],\n [78790000, 1578491624000],\n [78800001, 1578551468000],\n [78810000, 1578583667000],\n [78820000, 1578649262000],\n [78830000, 1578679125000],\n [78840001, 1578735714000],\n [78850000, 1578763096000],\n [78860001, 1578820711000],\n [78870000, 1578847582000],\n [78880000, 1578904548000],\n [78890001, 1578930264000],\n [78900000, 1578999366000],\n [78910000, 1579045378000],\n [78920001, 1579097395000],\n [78930000, 1579163961000],\n [78940001, 1579201038000],\n [78950000, 1579265770000],\n [78960001, 1579313475000],\n [78970003, 1579352400000],\n [78980000, 1579400812000],\n [78990000, 1579436538000],\n [79000003, 1579479371000],\n [79010001, 1579529582000],\n [79020000, 1579593758000],\n [79030000, 1579628044000],\n [79040000, 1579695257000],\n [79050000, 1579748926000],\n [79060000, 1579791612000],\n [79070000, 1579858764000],\n [79080001, 1579894275000],\n [79090000, 1579950627000],\n [79100002, 1579987385000],\n [79110000, 1580034338000],\n [79120003, 1580058941000],\n [79130000, 1580125354000],\n [79140000, 1580172351000],\n [79150000, 1580219627000],\n [79160000, 1580281139000],\n [79170001, 1580313877000],\n [79180000, 1580381019000],\n [79190000, 1580418004000],\n [79200000, 1580474093000],\n [79210001, 1580516349000],\n [79220001, 1580557493000],\n [79230001, 1580589474000],\n [79240000, 1580635332000],\n [79250000, 1580655762000],\n [79260000, 1580712913000],\n [79270000, 1580742007000],\n [79280002, 1580803170000],\n [79290001, 1580833015000],\n [79300001, 1580898048000],\n [79310000, 1580930509000],\n [79320000, 1580991151000],\n [79330000, 1581040569000],\n [79340001, 1581083505000],\n [79350000, 1581133125000],\n [79360000, 1581166802000],\n [79370000, 1581209820000],\n [79380000, 1581245802000],\n [79390000, 1581268960000],\n [79400000, 1581332594000],\n [79410000, 1581365287000],\n [79420000, 1581414114000],\n [79430000, 1581436278000],\n [79440001, 1581499724000],\n [79450000, 1581527485000],\n [79460002, 1581591921000],\n [79470000, 1581611896000],\n [79480002, 1581664302000],\n [79490000, 1581686246000],\n [79500000, 1581707828000],\n [79510001, 1581755219000],\n [79520000, 1581778876000],\n [79530001, 1581827495000],\n [79540001, 1581855277000],\n [79550000, 1581885174000],\n [79560000, 1581940328000],\n [79570000, 1581979931000],\n [79580000, 1582030075000],\n [79590001, 1582079484000],\n [79600001, 1582120357000],\n [79610000, 1582175729000],\n [79620001, 1582210202000],\n [79630001, 1582270110000],\n [79640001, 1582298785000],\n [79650000, 1582350093000],\n [79660000, 1582377404000],\n [79670000, 1582413033000],\n [79680000, 1582453470000],\n [79690000, 1582476625000],\n [79700000, 1582529117000],\n [79710000, 1582554052000],\n [79720000, 1582608340000],\n [79730000, 1582642389000],\n [79740000, 1582703142000],\n [79750000, 1582733106000],\n [79760000, 1582797396000],\n [79770000, 1582831796000],\n [79780000, 1582891176000],\n [79790000, 1582932604000],\n [79800002, 1582973282000],\n [79810000, 1582993603000],\n [79820000, 1583041517000],\n [79830001, 1583066674000],\n [79840000, 1583097399000],\n [79850000, 1583147549000],\n [79860001, 1583175322000],\n [79870000, 1583230930000],\n [79880001, 1583254210000],\n [79890000, 1583312479000],\n [79900000, 1583337435000],\n [79910000, 1583395809000],\n [79920002, 1583421490000],\n [79930000, 1583478558000],\n [79940000, 1583507226000],\n [79950003, 1583559493000],\n [79960001, 1583588210000],\n [79970000, 1583630350000],\n [79980004, 1583660784000],\n [79990000, 1583680236000],\n [80000000, 1583729581000],\n [80010001, 1583760195000],\n [80020000, 1583800746000],\n [80030001, 1583841420000],\n [80040001, 1583873476000],\n [80050002, 1583924963000],\n [80060001, 1583954200000],\n [80070003, 1584013619000],\n [80080002, 1584053110000],\n [80090000, 1584098273000],\n [80100001, 1584123740000],\n [80110000, 1584172919000],\n [80120000, 1584196207000],\n [80130000, 1584236963000],\n [80140000, 1584268538000],\n [80150000, 1584288460000],\n [80160004, 1584346855000],\n [80170000, 1584374092000],\n [80180000, 1584433499000],\n [80190000, 1584460885000],\n [80200001, 1584520112000],\n [80210000, 1584547904000],\n [80220001, 1584607409000],\n [80230002, 1584633704000],\n [80240001, 1584689221000],\n [80250001, 1584717343000],\n [80260000, 1584769637000],\n [80270000, 1584799213000],\n [80280001, 1584844859000],\n [80290004, 1584876896000],\n [80300001, 1584901795000],\n [80310000, 1584960974000],\n [80320000, 1584994959000],\n [80330000, 1585050808000],\n [80340001, 1585093198000],\n [80350000, 1585140198000],\n [80360000, 1585188885000],\n [80370000, 1585229910000],\n [80380000, 1585282846000],\n [80390000, 1585318135000],\n [80400000, 1585366586000],\n [80410000, 1585398047000],\n [80420000, 1585431266000],\n [80430000, 1585471931000],\n [80440000, 1585493157000],\n [80450000, 1585546072000],\n [80460000, 1585578800000],\n [80470001, 1585632499000],\n [80480000, 1585664658000],\n [80490000, 1585710656000],\n [80500000, 1585745275000],\n [80510000, 1585784723000],\n [80520001, 1585829200000],\n [80530001, 1585869472000],\n [80540000, 1585914540000],\n [80550000, 1585951327000],\n [80560000, 1585994226000],\n [80570000, 1586016746000],\n [80580001, 1586065316000],\n [80590000, 1586090070000],\n [80600000, 1586122548000],\n [80610001, 1586171687000],\n [80620001, 1586201295000],\n [80630001, 1586256244000],\n [80640000, 1586285461000],\n [80650001, 1586340914000],\n [80660000, 1586366212000],\n [80670000, 1586423226000],\n [80680003, 1586448333000],\n [80690001, 1586505875000],\n [80700000, 1586531864000],\n [80710002, 1586583545000],\n [80720000, 1586611358000],\n [80730001, 1586649157000],\n [80740000, 1586681597000],\n [80750000, 1586701176000],\n [80760000, 1586745365000],\n [80770000, 1586780528000],\n [80780000, 1586814400000],\n [80790000, 1586861417000],\n [80800000, 1586886787000],\n [80810000, 1586941592000],\n [80820000, 1586965088000],\n [80830001, 1587020675000],\n [80840001, 1587048413000],\n [80850004, 1587098709000],\n [80860001, 1587129781000],\n [80870000, 1587171493000],\n [80880000, 1587203816000],\n [80890000, 1587223661000],\n [80900000, 1587267891000],\n [80910001, 1587293885000],\n [80920000, 1587311373000],\n [80930000, 1587362365000],\n [80940000, 1587390170000],\n [80950000, 1587434564000],\n [80960004, 1587470310000],\n [80970001, 1587500856000],\n [80980000, 1587548549000],\n [80990001, 1587571495000],\n [81000000, 1587623222000],\n [81010000, 1587650355000],\n [81020000, 1587695608000],\n [81030000, 1587729330000],\n [81040000, 1587758238000],\n [81050002, 1587802832000],\n [81060000, 1587825583000],\n [81070001, 1587868470000],\n [81080000, 1587895722000],\n [81090001, 1587914447000],\n [81100001, 1587963144000],\n [81110000, 1587991996000],\n [81120001, 1588028404000],\n [81130002, 1588069594000],\n [81140001, 1588092759000],\n [81150000, 1588142605000],\n [81160002, 1588166470000],\n [81170000, 1588206886000],\n [81180000, 1588243564000],\n [81190000, 1588264193000],\n [81200000, 1588314060000],\n [81210001, 1588339106000],\n [81220000, 1588373618000],\n [81230000, 1588407867000],\n [81240000, 1588429734000],\n [81250000, 1588469180000],\n [81260000, 1588497556000],\n [81270000, 1588517856000],\n [81280000, 1588557854000],\n [81290000, 1588585602000],\n [81300001, 1588604457000],\n [81310000, 1588639853000],\n [81320001, 1588667014000],\n [81330000, 1588686356000],\n [81340000, 1588716907000],\n [81350001, 1588752094000],\n [81360001, 1588771880000],\n [81370000, 1588806874000],\n [81380001, 1588846871000],\n [81390000, 1588868932000],\n [81400000, 1588921819000],\n [81410001, 1588947698000],\n [81420000, 1588988258000],\n [81430002, 1589018884000],\n [81440001, 1589038387000],\n [81450000, 1589081675000],\n [81460001, 1589106242000],\n [81470001, 1589122621000],\n [81480000, 1589165020000],\n [81490000, 1589198298000],\n [81500000, 1589222553000],\n [81510001, 1589274227000],\n [81520003, 1589297244000],\n [81530001, 1589348690000],\n [81540002, 1589377233000],\n [81550001, 1589419759000],\n [81560000, 1589455384000],\n [81570000, 1589476947000],\n [81580000, 1589529412000],\n [81590001, 1589553375000],\n [81600000, 1589597520000],\n [81610000, 1589626092000],\n [81620000, 1589644519000],\n [81630000, 1589687424000],\n [81640000, 1589712385000],\n [81650000, 1589729438000],\n [81660000, 1589776069000],\n [81670000, 1589805780000],\n [81680000, 1589831247000],\n [81690000, 1589878317000],\n [81700000, 1589900422000],\n [81710000, 1589946751000],\n [81720001, 1589977852000],\n [81730000, 1590004142000],\n [81740000, 1590052120000],\n [81750000, 1590074143000],\n [81760000, 1590122002000],\n [81770000, 1590152424000],\n [81780000, 1590186109000],\n [81790000, 1590223220000],\n [81800000, 1590244149000],\n [81810001, 1590280602000],\n [81820000, 1590309802000],\n [81830000, 1590328866000],\n [81840000, 1590365787000],\n [81850001, 1590404238000],\n [81860000, 1590426625000],\n [81870002, 1590481067000],\n [81880001, 1590505421000],\n [81890001, 1590554488000],\n [81900000, 1590585537000],\n [81910003, 1590627640000],\n [81920000, 1590666740000],\n [81930002, 1590696478000],\n [81940001, 1590746190000],\n [81950001, 1590768658000],\n [81960000, 1590817160000],\n [81970000, 1590843166000],\n [81980000, 1590870668000],\n [81990000, 1590910285000],\n [82000001, 1590930718000],\n [82010000, 1590956360000],\n [82020001, 1591005181000],\n [82030002, 1591026660000],\n [82040000, 1591083085000],\n [82050000, 1591110373000],\n [82060000, 1591163968000],\n [82070000, 1591193751000],\n [82080001, 1591243811000],\n [82090000, 1591277157000],\n [82100001, 1591322136000],\n [82110000, 1591359589000],\n [82120001, 1591389164000],\n [82130000, 1591431941000],\n [82140000, 1591453966000],\n [82150000, 1591494520000],\n [82160000, 1591523716000],\n [82170000, 1591542092000],\n [82180006, 1591592338000],\n [82190000, 1591624821000],\n [82200001, 1591672179000],\n [82210002, 1591708023000],\n [82220000, 1591751015000],\n [82230000, 1591791293000],\n [82240000, 1591830419000],\n [82250000, 1591875827000],\n [82260001, 1591911847000],\n [82270000, 1591961077000],\n [82280000, 1591986746000],\n [82290000, 1592034683000],\n [82300001, 1592057862000],\n [82310001, 1592099204000],\n [82320000, 1592127432000],\n [82330000, 1592145964000],\n [82340000, 1592193978000],\n [82350001, 1592228903000],\n [82360002, 1592277287000],\n [82370001, 1592314508000],\n [82380002, 1592362674000],\n [82390000, 1592400722000],\n [82400000, 1592450790000],\n [82410000, 1592487981000],\n [82420002, 1592538424000],\n [82430000, 1592574401000],\n [82440002, 1592619918000],\n [82450000, 1592653527000],\n [82460001, 1592678101000],\n [82470001, 1592723845000],\n [82480000, 1592746447000],\n [82490002, 1592786843000],\n [82500003, 1592829927000],\n [82510003, 1592872839000],\n [82520000, 1592917116000],\n [82530000, 1592963754000],\n [82540000, 1593004368000],\n [82550000, 1593053016000],\n [82560000, 1593091205000],\n [82570000, 1593140653000],\n [82580000, 1593179016000],\n [82590000, 1593226109000],\n [82600000, 1593260110000],\n [82610000, 1593292880000],\n [82620000, 1593333710000],\n [82630001, 1593355075000],\n [82640000, 1593405247000],\n [82650000, 1593439573000],\n [82660000, 1593489699000],\n [82670001, 1593523829000],\n [82680001, 1593567734000],\n [82690002, 1593608143000],\n [82700001, 1593653460000],\n [82710001, 1593695518000],\n [82720000, 1593745692000],\n [82730000, 1593783686000],\n [82740000, 1593828572000],\n [82750000, 1593862380000],\n [82760001, 1593886312000],\n [82770000, 1593934010000],\n [82780000, 1593956231000],\n [82790002, 1593998674000],\n [82800000, 1594039473000],\n [82810000, 1594075207000],\n [82820000, 1594120404000],\n [82830000, 1594141724000],\n [82840001, 1594200917000],\n [82850001, 1594226720000],\n [82860000, 1594287260000],\n [82870000, 1594314277000],\n [82880000, 1594374352000],\n [82890001, 1594400826000],\n [82900000, 1594452807000],\n [82910003, 1594479187000],\n [82920000, 1594522939000],\n [82930000, 1594552179000],\n [82940000, 1594571960000],\n [82950000, 1594630946000],\n [82960000, 1594655608000],\n [82970001, 1594714679000],\n [82980000, 1594740707000],\n [82990002, 1594799679000],\n [83000000, 1594827097000],\n [83010000, 1594886333000],\n [83020000, 1594914451000],\n [83030000, 1594975465000],\n [83040000, 1595002269000],\n [83050000, 1595054245000],\n [83060000, 1595081829000],\n [83070004, 1595124763000],\n [83080000, 1595154475000],\n [83090001, 1595173905000],\n [83100003, 1595230572000],\n [83110000, 1595257562000],\n [83120001, 1595315003000],\n [83130003, 1595343775000],\n [83140001, 1595399483000],\n [83150000, 1595429817000],\n [83160003, 1595478091000],\n [83170000, 1595508448000],\n [83180000, 1595546386000],\n [83190000, 1595584953000],\n [83200000, 1595607597000],\n [83210000, 1595657153000],\n [83220001, 1595683315000],\n [83230000, 1595717647000],\n [83240000, 1595751744000],\n [83250000, 1595772715000],\n [83260000, 1595818547000],\n [83270002, 1595855249000],\n [83280001, 1595900392000],\n [83290004, 1595940913000],\n [83300001, 1595985442000],\n [83310000, 1596026279000],\n [83320000, 1596067464000],\n [83330000, 1596112206000],\n [83340000, 1596153373000],\n [83350000, 1596196765000],\n [83360000, 1596223051000],\n [83370000, 1596269059000],\n [83380001, 1596292424000],\n [83390000, 1596334336000],\n [83400000, 1596363703000],\n [83410000, 1596381794000],\n [83420000, 1596434923000],\n [83430000, 1596464523000],\n [83440001, 1596516746000],\n [83450000, 1596550377000],\n [83460000, 1596601180000],\n [83470000, 1596635514000],\n [83480001, 1596685585000],\n [83490003, 1596720358000],\n [83500000, 1596766201000],\n [83510000, 1596803270000],\n [83520000, 1596837133000],\n [83530000, 1596878712000],\n [83540000, 1596901234000],\n [83550000, 1596949353000],\n [83560003, 1596977164000],\n [83570000, 1597008775000],\n [83580000, 1597048325000],\n [83590000, 1597071327000],\n [83600001, 1597119083000],\n [83610001, 1597151951000],\n [83620001, 1597194929000],\n [83630000, 1597232364000],\n [83640001, 1597263295000],\n [83650000, 1597310339000],\n [83660001, 1597334343000],\n [83670001, 1597386089000],\n [83680000, 1597413459000],\n [83690003, 1597454239000],\n [83700000, 1597486103000],\n [83710008, 1597506740000],\n [83720000, 1597551335000],\n [83730000, 1597577788000],\n [83740001, 1597597200000],\n [83750000, 1597653183000],\n [83760002, 1597678126000],\n [83770000, 1597734775000],\n [83780001, 1597763020000],\n [83790000, 1597818557000],\n [83800000, 1597847957000],\n [83810000, 1597900828000],\n [83820000, 1597932895000],\n [83830000, 1597985003000],\n [83840000, 1598017642000],\n [83850000, 1598061692000],\n [83860000, 1598095381000],\n [83870000, 1598120266000],\n [83880000, 1598166455000],\n [83890002, 1598189754000],\n [83900000, 1598230443000],\n [83910000, 1598272013000],\n [83920001, 1598311996000],\n [83930001, 1598356953000],\n [83940000, 1598393233000],\n [83950001, 1598441409000],\n [83960000, 1598473930000],\n [83970001, 1598526618000],\n [83980000, 1598557164000],\n [83990000, 1598611628000],\n [84000001, 1598640860000],\n [84010001, 1598691060000],\n [84020000, 1598714144000],\n [84030000, 1598758204000],\n [84040000, 1598786391000],\n [84050000, 1598802968000],\n [84060000, 1598854786000],\n [84070001, 1598880613000],\n [84080000, 1598915240000],\n [84090000, 1598960805000],\n [84100000, 1598992906000],\n [84110000, 1599044803000],\n [84120000, 1599071788000],\n [84130000, 1599129363000],\n [84140000, 1599157743000],\n [84150000, 1599215826000],\n [84160000, 1599244993000],\n [84170000, 1599294970000],\n [84180001, 1599318855000],\n [84190002, 1599365651000],\n [84200000, 1599393085000],\n [84210000, 1599414750000],\n [84220000, 1599471537000],\n [84230000, 1599495506000],\n [84240000, 1599556292000],\n [84250000, 1599582680000],\n [84260001, 1599642678000],\n [84270003, 1599667852000],\n [84280001, 1599728801000],\n [84290000, 1599756746000],\n [84300001, 1599818638000],\n [84310000, 1599844574000],\n [84320000, 1599895309000],\n [84330002, 1599920152000],\n [84340003, 1599962736000],\n [84350000, 1599992375000],\n [84360000, 1600010654000],\n [84370000, 1600067378000],\n [84380000, 1600096395000],\n [84390000, 1600154553000],\n [84400001, 1600182935000],\n [84410000, 1600243243000],\n [84420000, 1600270065000],\n [84430000, 1600333148000],\n [84440001, 1600360786000],\n [84450000, 1600422881000],\n [84460000, 1600450161000],\n [84470000, 1600503314000],\n [84480000, 1600528307000],\n [84490001, 1600577352000],\n [84500000, 1600606321000],\n [84510004, 1600644331000],\n [84520000, 1600684992000],\n [84530001, 1600709066000],\n [84540001, 1600760266000],\n [84550000, 1600784472000],\n [84560003, 1600833748000],\n [84570000, 1600869873000],\n [84580000, 1600925480000],\n [84590000, 1600958971000],\n [84600000, 1601017833000],\n [84610000, 1601047273000],\n [84620000, 1601099559000],\n [84630000, 1601126922000],\n [84640000, 1601166841000],\n [84650000, 1601199955000],\n [84660000, 1601220002000],\n [84670000, 1601279997000],\n [84680000, 1601307991000],\n [84690002, 1601371822000],\n [84700000, 1601399958000],\n [84710000, 1601460743000],\n [84720002, 1601484176000],\n [84730001, 1601543158000],\n [84740001, 1601568062000],\n [84750000, 1601628361000],\n [84760001, 1601654620000],\n [84770000, 1601706617000],\n [84780000, 1601734222000],\n [84790002, 1601777347000],\n [84800000, 1601807920000],\n [84810001, 1601826134000],\n [84820001, 1601883369000],\n [84830000, 1601910614000],\n [84840001, 1601968183000],\n [84850000, 1601997403000],\n [84860000, 1602056593000],\n [84870000, 1602083577000],\n [84880002, 1602144536000],\n [84890000, 1602172352000],\n [84900000, 1602233741000],\n [84910001, 1602259465000],\n [84920000, 1602311733000],\n [84930000, 1602337315000],\n [84940000, 1602377797000],\n [84950000, 1602411111000],\n [84960000, 1602430625000],\n [84970000, 1602489973000],\n [84980000, 1602517478000],\n [84990001, 1602578895000],\n [85000002, 1602605576000],\n [85010001, 1602668663000],\n [85020003, 1602701055000],\n [85030001, 1602761490000],\n [85040003, 1602802821000],\n [85050000, 1602851208000],\n [85060000, 1602896027000],\n [85070000, 1602933391000],\n [85080000, 1602960055000],\n [85090000, 1603008554000],\n [85100000, 1603031419000],\n [85110000, 1603084867000],\n [85120000, 1603118190000],\n [85130001, 1603176350000],\n [85140000, 1603207204000],\n [85150000, 1603269807000],\n [85160000, 1603298349000],\n [85170000, 1603361902000],\n [85180000, 1603392486000],\n [85190006, 1603451581000],\n [85200000, 1603488670000],\n [85210000, 1603534355000],\n [85220000, 1603558403000],\n [85230000, 1603607507000],\n [85240001, 1603632338000],\n [85250000, 1603674774000],\n [85260001, 1603717899000],\n [85270000, 1603768489000],\n [85280000, 1603807261000],\n [85290000, 1603863363000],\n [85300000, 1603897106000],\n [85310000, 1603958296000],\n [85320000, 1603987706000],\n [85330000, 1604049178000],\n [85340000, 1604071668000],\n [85350000, 1604113097000],\n [85360001, 1604138820000],\n [85370000, 1604154118000],\n [85380000, 1604182076000],\n [85390000, 1604217262000],\n [85400001, 1604238600000],\n [85410000, 1604283830000],\n [85420000, 1604322279000],\n [85430001, 1604365714000],\n [85440000, 1604401200000],\n [85450006, 1604426722000],\n [85460000, 1604488455000],\n [85470000, 1604522436000],\n [85480002, 1604575885000],\n [85490001, 1604614044000],\n [85500000, 1604665701000],\n [85510001, 1604707601000],\n [85520000, 1604746791000],\n [85530000, 1604771476000],\n [85540000, 1604820463000],\n [85550001, 1604843004000],\n [85560000, 1604888244000],\n [85570001, 1604928134000],\n [85580000, 1604978324000],\n [85590000, 1605017606000],\n [85600001, 1605066713000],\n [85610000, 1605101470000],\n [85620000, 1605150004000],\n [85630000, 1605189793000],\n [85640000, 1605244786000],\n [85650002, 1605278578000],\n [85660000, 1605328883000],\n [85670000, 1605360539000],\n [85680000, 1605403968000],\n [85690000, 1605435942000],\n [85700002, 1605455705000],\n [85710000, 1605517074000],\n [85720000, 1605543716000],\n [85730000, 1605605844000],\n [85740000, 1605634746000],\n [85750000, 1605696751000],\n [85760000, 1605730228000],\n [85770000, 1605786348000],\n [85780000, 1605827263000],\n [85790001, 1605875392000],\n [85800002, 1605915640000],\n [85810000, 1605954736000],\n [85820002, 1605978690000],\n [85830000, 1606029172000],\n [85840000, 1606052878000],\n [85850002, 1606092611000],\n [85860000, 1606126897000],\n [85870000, 1606148517000],\n [85880000, 1606211093000],\n [85890001, 1606239435000],\n [85900001, 1606301459000],\n [85910000, 1606332601000],\n [85920002, 1606390291000],\n [85930000, 1606426752000],\n [85940000, 1606478449000],\n [85950000, 1606514400000],\n [85960000, 1606557362000],\n [85970003, 1606578715000],\n [85980000, 1606627726000],\n [85990003, 1606653018000],\n [86000001, 1606683108000],\n [86010000, 1606735819000],\n [86020000, 1606762500000],\n [86030000, 1606818754000],\n [86040000, 1606848141000],\n [86050001, 1606906257000],\n [86060000, 1606940375000],\n [86070001, 1606996588000],\n [86080000, 1607037903000],\n [86090000, 1607084583000],\n [86100000, 1607127525000],\n [86110000, 1607165807000],\n [86120001, 1607190672000],\n [86130000, 1607240200000],\n [86140000, 1607263451000],\n [86150001, 1607309630000],\n [86160002, 1607347237000],\n [86170003, 1607396501000],\n [86180000, 1607435611000],\n [86190002, 1607490136000],\n [86200000, 1607524276000],\n [86210001, 1607581076000],\n [86220000, 1607612673000],\n [86230000, 1607673108000],\n [86240000, 1607701001000],\n [86250000, 1607754713000],\n [86260001, 1607781967000],\n [86270000, 1607825737000],\n [86280000, 1607857680000],\n [86290000, 1607880016000],\n [86300000, 1607940113000],\n [86310000, 1607969943000],\n [86320000, 1608031851000],\n [86330001, 1608073772000],\n [86340001, 1608122282000],\n [86350000, 1608172435000],\n [86360000, 1608214074000],\n [86370000, 1608271201000],\n [86380000, 1608303611000],\n [86390001, 1608357966000],\n [86400001, 1608386966000],\n [86410000, 1608432676000],\n [86420000, 1608464132000],\n [86430000, 1608491850000],\n [86440000, 1608548383000],\n [86450000, 1608584314000],\n [86460000, 1608637792000],\n [86470000, 1608680410000],\n [86480000, 1608726826000],\n [86490000, 1608763061000],\n [86500001, 1608804647000],\n [86510000, 1608822113000],\n [86520000, 1608858720000],\n [86530003, 1608891984000],\n [86540000, 1608909214000],\n [86550001, 1608956008000],\n [86560000, 1608986831000],\n [86570000, 1609024070000],\n [86580000, 1609061639000],\n [86590000, 1609083571000],\n [86600002, 1609136877000],\n [86610000, 1609166538000],\n [86620002, 1609215625000],\n [86630001, 1609246633000],\n [86640000, 1609281333000],\n [86650001, 1609318776000],\n [86660000, 1609340404000],\n [86670002, 1609378551000],\n [86680001, 1609402813000],\n [86690000, 1609419573000],\n [86700000, 1609427833000],\n [86710001, 1609438598000],\n [86720000, 1609471195000],\n [86730000, 1609492245000],\n [86740001, 1609510048000],\n [86750000, 1609542326000],\n [86760000, 1609576482000],\n [86770000, 1609597332000],\n [86780001, 1609636492000],\n [86790000, 1609666321000],\n [86800000, 1609685861000],\n [86810000, 1609730596000],\n [86820000, 1609761612000],\n [86830000, 1609785653000],\n [86840002, 1609838038000],\n [86850002, 1609860617000],\n [86860002, 1609913574000],\n [86870000, 1609942399000],\n [86880000, 1609989846000],\n [86890003, 1610024770000],\n [86900000, 1610067652000],\n [86910003, 1610108358000],\n [86920001, 1610143689000],\n [86930000, 1610185067000],\n [86940001, 1610206533000],\n [86950001, 1610253334000],\n [86960000, 1610280157000],\n [86970000, 1610301936000],\n [86980000, 1610349015000],\n [86990000, 1610372052000],\n [87000000, 1610415162000],\n [87010000, 1610455354000],\n [87020001, 1610499781000],\n [87030000, 1610542450000],\n [87040001, 1610588105000],\n [87050000, 1610628593000],\n [87060000, 1610674146000],\n [87070000, 1610714760000],\n [87080000, 1610755748000],\n [87090000, 1610792712000],\n [87100000, 1610813843000],\n [87110000, 1610860693000],\n [87120004, 1610885481000],\n [87130000, 1610905671000],\n [87140000, 1610963265000],\n [87150001, 1610987688000],\n [87160000, 1611047115000],\n [87170001, 1611073100000],\n [87180000, 1611133202000],\n [87190000, 1611158922000],\n [87200000, 1611218267000],\n [87210001, 1611244919000],\n [87220003, 1611303699000],\n [87230000, 1611328247000],\n [87240001, 1611376847000],\n [87250001, 1611404915000],\n [87260000, 1611429073000],\n [87270001, 1611473057000],\n [87280001, 1611494297000],\n [87290002, 1611532048000],\n [87300000, 1611574806000],\n [87310001, 1611603103000],\n [87320000, 1611657841000],\n [87330000, 1611683185000],\n [87340001, 1611740504000],\n [87350001, 1611764653000],\n [87360000, 1611823133000],\n [87370000, 1611847489000],\n [87380001, 1611904116000],\n [87390000, 1611931539000],\n [87400000, 1611976818000],\n [87410000, 1612007710000],\n [87420000, 1612028208000],\n [87430003, 1612073912000],\n [87440000, 1612095997000],\n [87450000, 1612114063000],\n [87460000, 1612168956000],\n [87470000, 1612192262000],\n [87480001, 1612244712000],\n [87490000, 1612273447000],\n [87500000, 1612318002000],\n [87510001, 1612355620000],\n [87520000, 1612393200000],\n [87530000, 1612439260000],\n [87540000, 1612470865000],\n [87550000, 1612521992000],\n [87560000, 1612546329000],\n [87570000, 1612597585000],\n [87580000, 1612621395000],\n [87590001, 1612663032000],\n [87600000, 1612692007000],\n [87610000, 1612710664000],\n [87620000, 1612761984000],\n [87630001, 1612792557000],\n [87640000, 1612840944000],\n [87650005, 1612876756000],\n [87660000, 1612922132000],\n [87670000, 1612961112000],\n [87680000, 1613002087000],\n [87690000, 1613038016000],\n [87700000, 1613059448000],\n [87710000, 1613115117000],\n [87720000, 1613141773000],\n [87730000, 1613187144000],\n [87740000, 1613216930000],\n [87750000, 1613234854000],\n [87760000, 1613272307000],\n [87770000, 1613293810000],\n [87780000, 1613308342000],\n [87790000, 1613323241000],\n [87800000, 1613374101000],\n [87810001, 1613398896000],\n [87820000, 1613444966000],\n [87830001, 1613480261000],\n [87840001, 1613517135000],\n [87850000, 1613561701000],\n [87860000, 1613588747000],\n [87870000, 1613643245000],\n [87880001, 1613668258000],\n [87890000, 1613726307000],\n [87900000, 1613748976000],\n [87910000, 1613799261000],\n [87920000, 1613826002000],\n [87930000, 1613857147000],\n [87940000, 1613895016000],\n [87950001, 1613915579000],\n [87960000, 1613952398000],\n [87970000, 1613991958000],\n [87980000, 1614010102000],\n [87990000, 1614057614000],\n [88000000, 1614083703000],\n [88010000, 1614108067000],\n [88020000, 1614160604000],\n [88030001, 1614182571000],\n [88040000, 1614240526000],\n [88050000, 1614266222000],\n [88060000, 1614322531000],\n [88070000, 1614350324000],\n [88080000, 1614395570000],\n [88090001, 1614425858000],\n [88100000, 1614445571000],\n [88110000, 1614490959000],\n [88120002, 1614513295000],\n [88130000, 1614528724000],\n [88140000, 1614581461000],\n [88150000, 1614607485000],\n [88160001, 1614652568000],\n [88170000, 1614687823000],\n [88180000, 1614722235000],\n [88190000, 1614769470000],\n [88200000, 1614794834000],\n [88210001, 1614852362000],\n [88220000, 1614877875000],\n [88230000, 1614935713000],\n [88240000, 1614958693000],\n [88250001, 1615008512000],\n [88260000, 1615035799000],\n [88270001, 1615069177000],\n [88280000, 1615105490000],\n [88290003, 1615125960000],\n [88300003, 1615169063000],\n [88310004, 1615207124000],\n [88320000, 1615239351000],\n [88330000, 1615285711000],\n [88340001, 1615306402000],\n [88350000, 1615362866000],\n [88360001, 1615388634000],\n [88370000, 1615444524000],\n [88380000, 1615474182000],\n [88390001, 1615527046000],\n [88400000, 1615557587000],\n [88410000, 1615601796000],\n [88420000, 1615633604000],\n [88430000, 1615653786000],\n [88440000, 1615699116000],\n [88450000, 1615722802000],\n [88460000, 1615739556000],\n [88470000, 1615795474000],\n [88480000, 1615820457000],\n [88490002, 1615875495000],\n [88500001, 1615904999000],\n [88510000, 1615956873000],\n [88520000, 1615989658000],\n [88530000, 1616039715000],\n [88540000, 1616075008000],\n [88550000, 1616123180000],\n [88560002, 1616159310000],\n [88570000, 1616196667000],\n [88580000, 1616233617000],\n [88590002, 1616254733000],\n [88600000, 1616300154000],\n [88610001, 1616325026000],\n [88620000, 1616342572000],\n [88630001, 1616397499000],\n [88640000, 1616424247000],\n [88650000, 1616477154000],\n [88660000, 1616508572000],\n [88670000, 1616558712000],\n [88680000, 1616592726000],\n [88690001, 1616637905000],\n [88700001, 1616676059000],\n [88710002, 1616716130000],\n [88720000, 1616759999000],\n [88730000, 1616795128000],\n [88740001, 1616838735000],\n [88750000, 1616860732000],\n [88760001, 1616908211000],\n [88770000, 1616933790000],\n [88780000, 1616958010000],\n [88790000, 1617011950000],\n [88800003, 1617036555000],\n [88810000, 1617093907000],\n [88820000, 1617118816000],\n [88830001, 1617174316000],\n [88840001, 1617200731000],\n [88850001, 1617243634000],\n [88860002, 1617278494000],\n [88870000, 1617309504000],\n [88880000, 1617358689000],\n [88890001, 1617383138000],\n [88900000, 1617434397000],\n [88910000, 1617459553000],\n [88920001, 1617501009000],\n [88930000, 1617529499000],\n [88940002, 1617548191000],\n [88950000, 1617595153000],\n [88960002, 1617627783000],\n [88970000, 1617672115000],\n [88980001, 1617712524000],\n [88990000, 1617752994000],\n [89000000, 1617797507000],\n [89010000, 1617836768000],\n [89020001, 1617883489000],\n [89030000, 1617921920000],\n [89040000, 1617969299000],\n [89050001, 1617999997000],\n [89060001, 1618045483000],\n [89070000, 1618068552000],\n [89080000, 1618115428000],\n [89090000, 1618142898000],\n [89100001, 1618169322000],\n [89110000, 1618225851000],\n [89120000, 1618256800000],\n [89130000, 1618312355000],\n [89140001, 1618343716000],\n [89150001, 1618399131000],\n [89160001, 1618434000000],\n [89170000, 1618487875000],\n [89180001, 1618530483000],\n [89190001, 1618576475000],\n [89200000, 1618617370000],\n [89210000, 1618654080000],\n [89220001, 1618675923000],\n [89230001, 1618722709000],\n [89240000, 1618748103000],\n [89250000, 1618773431000],\n [89260000, 1618829097000],\n [89270001, 1618855923000],\n [89280001, 1618915423000],\n [89290001, 1618945208000],\n [89300000, 1619003717000],\n [89310001, 1619038604000],\n [89320001, 1619090895000],\n [89330000, 1619125411000],\n [89340000, 1619177962000],\n [89350000, 1619211232000],\n [89360000, 1619256552000],\n [89370000, 1619278794000],\n [89380000, 1619326404000],\n [89390001, 1619352456000],\n [89400000, 1619379540000],\n [89410000, 1619435000000],\n [89420000, 1619465104000],\n [89430000, 1619522412000],\n [89440000, 1619558208000],\n [89450000, 1619610454000],\n [89460001, 1619650162000],\n [89470000, 1619690241000],\n [89480000, 1619712665000],\n [89490000, 1619768104000],\n [89500002, 1619793721000],\n [89510000, 1619838000000],\n [89520000, 1619868624000],\n [89530001, 1619891012000],\n [89540000, 1619936521000],\n [89550000, 1619961045000],\n [89560000, 1619998134000],\n [89570000, 1620035507000],\n [89580000, 1620056966000],\n [89590000, 1620104538000],\n [89600001, 1620132106000],\n [89610001, 1620156501000],\n [89620000, 1620197445000],\n [89630002, 1620218762000],\n [89640000, 1620246460000],\n [89650000, 1620296840000],\n [89660000, 1620321447000],\n [89670000, 1620378694000],\n [89680001, 1620402803000],\n [89690000, 1620453849000],\n [89700000, 1620480136000],\n [89710000, 1620515600000],\n [89720000, 1620548748000],\n [89730002, 1620568797000],\n [89740000, 1620606311000],\n [89750001, 1620647872000],\n [89760000, 1620676706000],\n [89770001, 1620730642000],\n [89780000, 1620757879000],\n [89790001, 1620815341000],\n [89800000, 1620840939000],\n [89810000, 1620900235000],\n [89820000, 1620924966000],\n [89830000, 1620983564000],\n [89840000, 1621006065000],\n [89850001, 1621053339000],\n [89860001, 1621081841000],\n [89870000, 1621109974000],\n [89880000, 1621150548000],\n [89890000, 1621171336000],\n [89900000, 1621208665000],\n [89910000, 1621252583000],\n [89920000, 1621286110000],\n [89930000, 1621335985000],\n [89940001, 1621365022000],\n [89950000, 1621419685000],\n [89960001, 1621445054000],\n [89970000, 1621503348000],\n [89980002, 1621528309000],\n [89990001, 1621586938000],\n [90000000, 1621611201000],\n [90010000, 1621660634000],\n [90020000, 1621688662000],\n [90030000, 1621721040000],\n [90040000, 1621756835000],\n [90050000, 1621776870000],\n [90060000, 1621812602000],\n [90070000, 1621855438000],\n [90080004, 1621881435000],\n [90090000, 1621937529000],\n [90100000, 1621963889000],\n [90110001, 1622022538000],\n [90120000, 1622047836000],\n [90130000, 1622107620000],\n [90140000, 1622134471000],\n [90150001, 1622193679000],\n [90160001, 1622217099000],\n [90170000, 1622266721000],\n [90180000, 1622293836000],\n [90190000, 1622325877000],\n [90200000, 1622361667000],\n [90210000, 1622381815000],\n [90220000, 1622420125000],\n [90230000, 1622461211000],\n [90240000, 1622482229000],\n [90250000, 1622538039000],\n [90260000, 1622559740000],\n [90270000, 1622614058000],\n [90280002, 1622642923000],\n [90290000, 1622691764000],\n [90300000, 1622727037000],\n [90310001, 1622773389000],\n [90320001, 1622809521000],\n [90330000, 1622843167000],\n [90340000, 1622884240000],\n [90350000, 1622905227000],\n [90360000, 1622946676000],\n [90370000, 1622973786000],\n [90380000, 1622991614000],\n [90390000, 1623042022000],\n [90400000, 1623073658000],\n [90410000, 1623119778000],\n [90420000, 1623157012000],\n [90430000, 1623195060000],\n [90440001, 1623239172000],\n [90450000, 1623272548000],\n [90460000, 1623323818000],\n [90470000, 1623356437000],\n [90480000, 1623408801000],\n [90490000, 1623434687000],\n [90500000, 1623484497000],\n [90510000, 1623508098000],\n [90520000, 1623551323000],\n [90530000, 1623579777000],\n [90540000, 1623597466000],\n [90550000, 1623652098000],\n [90560000, 1623680595000],\n [90570000, 1623732073000],\n [90580000, 1623765415000],\n [90590000, 1623815281000],\n [90600000, 1623849449000],\n [90610000, 1623894287000],\n [90620000, 1623933712000],\n [90630002, 1623975946000],\n [90640000, 1624017229000],\n [90650000, 1624048744000],\n [90660000, 1624092010000],\n [90670000, 1624114410000],\n [90680000, 1624155450000],\n [90690000, 1624183428000],\n [90700000, 1624201282000],\n [90710000, 1624250418000],\n [90720000, 1624283420000],\n [90730000, 1624329178000],\n [90740001, 1624366823000],\n [90750001, 1624409521000],\n [90760000, 1624451215000],\n [90770000, 1624488127000],\n [90780001, 1624534770000],\n [90790000, 1624565483000],\n [90800000, 1624617743000],\n [90810001, 1624642581000],\n [90820000, 1624693006000],\n [90830001, 1624717159000],\n [90840001, 1624759122000],\n [90850000, 1624788393000],\n [90860001, 1624807262000],\n [90870002, 1624862147000],\n [90880000, 1624890846000],\n [90890000, 1624941410000],\n [90900000, 1624975119000],\n [90910003, 1625023200000],\n [90920000, 1625057873000],\n [90930002, 1625093378000],\n [90940000, 1625137864000],\n [90950001, 1625167064000],\n [90960000, 1625221678000],\n [90970000, 1625247018000],\n [90980000, 1625297083000],\n [90990000, 1625321661000],\n [91000000, 1625361446000],\n [91010000, 1625391835000],\n [91020000, 1625410814000],\n [91030001, 1625460847000],\n [91040000, 1625492417000],\n [91050002, 1625538794000],\n [91060000, 1625576331000],\n [91070000, 1625612008000],\n [91080000, 1625655607000],\n [91090000, 1625676564000],\n [91100000, 1625734139000],\n [91110000, 1625758730000],\n [91120001, 1625815829000],\n [91130000, 1625841974000],\n [91140000, 1625886925000],\n [91150000, 1625918380000],\n [91160000, 1625944463000],\n [91170000, 1625988355000],\n [91180001, 1626010374000],\n [91190000, 1626048401000],\n [91200000, 1626090518000],\n [91210001, 1626120952000],\n [91220000, 1626173755000],\n [91230000, 1626201993000],\n [91240000, 1626257370000],\n [91250000, 1626282016000],\n [91260001, 1626339404000],\n [91270000, 1626364995000],\n [91280001, 1626422902000],\n [91290001, 1626448420000],\n [91300000, 1626497465000],\n [91310000, 1626526559000],\n [91320000, 1626562870000],\n [91330001, 1626598863000],\n [91340000, 1626619253000],\n [91350000, 1626667572000],\n [91360000, 1626702033000],\n [91370000, 1626748789000],\n [91380000, 1626786000000],\n [91390000, 1626832490000],\n [91400000, 1626871207000],\n [91410000, 1626910348000],\n [91420000, 1626950240000],\n [91430001, 1626975304000],\n [91440001, 1627025779000],\n [91450000, 1627052434000],\n [91460000, 1627098880000],\n [91470000, 1627129161000],\n [91480001, 1627159365000],\n [91490001, 1627200772000],\n [91500001, 1627222086000],\n [91510000, 1627266953000],\n [91520002, 1627303365000],\n [91530000, 1627344228000],\n [91540000, 1627386109000],\n [91550002, 1627419996000],\n [91560000, 1627469441000],\n [91570002, 1627496681000],\n [91580002, 1627552012000],\n [91590000, 1627577244000],\n [91600000, 1627633974000],\n [91610002, 1627658630000],\n [91620003, 1627707670000],\n [91630000, 1627735328000],\n [91640000, 1627758052000],\n [91650001, 1627800425000],\n [91660000, 1627822804000],\n [91670000, 1627854019000],\n [91680000, 1627899489000],\n [91690000, 1627922287000],\n [91700000, 1627977531000],\n [91710000, 1628002930000],\n [91720000, 1628055932000],\n [91730000, 1628086281000],\n [91740000, 1628135358000],\n [91750000, 1628169378000],\n [91760000, 1628214699000],\n [91770000, 1628252181000],\n [91780001, 1628284290000],\n [91790001, 1628325896000],\n [91800001, 1628348457000],\n [91810001, 1628390478000],\n [91820000, 1628419243000],\n [91830002, 1628438044000],\n [91840000, 1628482975000],\n [91850000, 1628509353000],\n [91860002, 1628530158000],\n [91870000, 1628580157000],\n [91880001, 1628605566000],\n [91890002, 1628650436000],\n [91900000, 1628684140000],\n [91910000, 1628717443000],\n [91920002, 1628760853000],\n [91930000, 1628783284000],\n [91940000, 1628833352000],\n [91950000, 1628859509000],\n [91960000, 1628888945000],\n [91970000, 1628929003000],\n [91980002, 1628949933000],\n [91990001, 1628976385000],\n [92000000, 1629013891000],\n [92010000, 1629034080000],\n [92020001, 1629050568000],\n [92030000, 1629098917000],\n [92040001, 1629122464000],\n [92050001, 1629165939000],\n [92060000, 1629201251000],\n [92070000, 1629228686000],\n [92080000, 1629279438000],\n [92090003, 1629301654000],\n [92100000, 1629354528000],\n [92110000, 1629382820000],\n [92120001, 1629428380000],\n [92130000, 1629461783000],\n [92140000, 1629489334000],\n [92150000, 1629533407000],\n [92160000, 1629554732000],\n [92170000, 1629591443000],\n [92180000, 1629622576000],\n [92190000, 1629642144000],\n [92200000, 1629684467000],\n [92210000, 1629720044000],\n [92220000, 1629747693000],\n [92230000, 1629798593000],\n [92240000, 1629820858000],\n [92250002, 1629875567000],\n [92260000, 1629901711000],\n [92270000, 1629949310000],\n [92280000, 1629982572000],\n [92290000, 1630018215000],\n [92300001, 1630060374000],\n [92310000, 1630081934000],\n [92320000, 1630129786000],\n [92330001, 1630155300000],\n [92340000, 1630183059000],\n [92350000, 1630221839000],\n [92360000, 1630242352000],\n [92370000, 1630271314000],\n [92380001, 1630317518000],\n [92390000, 1630337159000],\n [92400000, 1630382926000],\n [92410000, 1630412215000],\n [92420001, 1630429095000],\n [92430001, 1630483322000],\n [92440000, 1630508357000],\n [92450000, 1630560280000],\n [92460000, 1630590093000],\n [92470000, 1630636193000],\n [92480000, 1630671179000],\n [92490001, 1630700747000],\n [92500000, 1630744157000],\n [92510000, 1630765812000],\n [92520001, 1630806856000],\n [92530000, 1630835440000],\n [92540001, 1630853116000],\n [92550000, 1630898590000],\n [92560000, 1630932842000],\n [92570000, 1630970533000],\n [92580000, 1631014453000],\n [92590000, 1631043850000],\n [92600000, 1631095907000],\n [92610000, 1631119701000],\n [92620000, 1631176254000],\n [92630000, 1631199949000],\n [92640002, 1631253216000],\n [92650002, 1631282400000],\n [92660001, 1631324551000],\n [92670002, 1631357277000],\n [92680000, 1631377229000],\n [92690000, 1631422503000],\n [92700003, 1631446220000],\n [92710000, 1631462798000],\n [92720000, 1631516450000],\n [92730000, 1631542583000],\n [92740003, 1631591632000],\n [92750000, 1631625667000],\n [92760000, 1631669372000],\n [92770000, 1631708250000],\n [92780000, 1631746635000],\n [92790000, 1631792358000],\n [92800000, 1631826201000],\n [92810000, 1631874789000],\n [92820003, 1631896937000],\n [92830003, 1631946719000],\n [92840001, 1631971337000],\n [92850000, 1632003550000],\n [92860002, 1632040968000],\n [92870000, 1632062151000],\n [92880000, 1632104085000],\n [92890000, 1632134232000],\n [92900000, 1632153650000],\n [92910000, 1632207629000],\n [92920000, 1632233716000],\n [92930001, 1632281347000],\n [92940003, 1632316006000],\n [92950002, 1632354953000],\n [92960000, 1632390604000],\n [92970000, 1632411632000],\n [92980002, 1632468523000],\n [92990001, 1632494582000],\n [93000000, 1632539184000],\n [93010001, 1632569325000],\n [93020000, 1632591106000],\n [93030000, 1632637348000],\n [93040002, 1632659517000],\n [93050000, 1632686353000],\n [93060002, 1632738377000],\n [93070000, 1632762448000],\n [93080000, 1632820353000],\n [93090000, 1632844137000],\n [93100000, 1632902683000],\n [93110000, 1632928133000],\n [93120000, 1632983492000],\n [93130000, 1633011118000],\n [93140000, 1633055783000],\n [93150000, 1633090148000],\n [93160000, 1633117454000],\n [93170001, 1633162248000],\n [93180000, 1633185803000],\n [93190001, 1633227999000],\n [93200000, 1633257628000],\n [93210001, 1633276861000],\n [93220001, 1633333310000],\n [93230001, 1633359566000],\n [93240001, 1633412563000],\n [93250001, 1633444232000],\n [93260000, 1633498298000],\n [93270001, 1633530121000],\n [93280000, 1633582979000],\n [93290001, 1633615633000],\n [93300000, 1633668364000],\n [93310000, 1633701509000],\n [93320000, 1633745574000],\n [93330000, 1633778453000],\n [93340000, 1633799743000],\n [93350000, 1633846044000],\n [93360000, 1633869822000],\n [93370000, 1633898119000],\n [93380000, 1633948902000],\n [93390002, 1633973431000],\n [93400000, 1634032282000],\n [93410000, 1634057765000],\n [93420000, 1634117857000],\n [93430000, 1634144756000],\n [93440000, 1634205236000],\n [93450000, 1634234014000],\n [93460001, 1634293036000],\n [93470000, 1634318727000],\n [93480002, 1634368869000],\n [93490000, 1634394483000],\n [93500001, 1634437527000],\n [93510001, 1634467278000],\n [93520000, 1634486578000],\n [93530000, 1634546192000],\n [93540001, 1634572876000],\n [93550000, 1634634855000],\n [93560000, 1634662513000],\n [93570000, 1634724092000],\n [93580000, 1634750955000],\n [93590000, 1634812596000],\n [93600000, 1634848910000],\n [93610001, 1634902063000],\n [93620000, 1634932691000],\n [93630001, 1634980370000],\n [93640001, 1635003828000],\n [93650001, 1635051305000],\n [93660000, 1635077962000],\n [93670000, 1635106708000],\n [93680000, 1635159684000],\n [93690000, 1635188542000],\n [93700000, 1635245335000],\n [93710003, 1635273356000],\n [93720000, 1635331885000],\n [93730000, 1635363989000],\n [93740000, 1635419650000],\n [93750002, 1635456306000],\n [93760000, 1635506037000],\n [93770000, 1635534789000],\n [93780000, 1635583147000],\n [93790000, 1635604701000],\n [93800001, 1635632402000],\n [93810000, 1635661010000],\n [93820000, 1635678590000],\n [93830000, 1635690570000],\n [93840000, 1635717518000],\n [93850000, 1635761107000],\n [93860000, 1635783455000],\n [93870000, 1635843752000],\n [93880000, 1635869652000],\n [93890000, 1635922335000],\n [93900002, 1635948667000],\n [93910000, 1636001431000],\n [93920001, 1636035436000],\n [93930001, 1636087879000],\n [93940000, 1636121598000],\n [93950004, 1636168844000],\n [93960002, 1636201173000],\n [93970000, 1636235282000],\n [93980000, 1636274954000],\n [93990000, 1636296417000],\n [94000000, 1636347998000],\n [94010000, 1636380724000],\n [94020000, 1636432758000],\n [94030000, 1636467490000],\n [94040000, 1636524000000],\n [94050000, 1636556411000],\n [94060000, 1636609572000],\n [94070000, 1636639397000],\n [94080001, 1636688884000],\n [94090000, 1636724837000],\n [94100001, 1636769763000],\n [94110000, 1636804397000],\n [94120000, 1636832830000],\n [94130000, 1636877299000],\n [94140001, 1636898962000],\n [94150000, 1636945784000],\n [94160001, 1636983624000],\n [94170000, 1637035689000],\n [94180001, 1637071919000],\n [94190000, 1637126743000],\n [94200000, 1637160488000],\n [94210000, 1637217623000],\n [94220002, 1637248047000],\n [94230000, 1637307501000],\n [94240003, 1637335174000],\n [94250000, 1637387507000],\n [94260001, 1637415849000],\n [94270000, 1637457796000],\n [94280003, 1637490222000],\n [94290000, 1637510450000],\n [94300000, 1637568614000],\n [94310001, 1637594427000],\n [94320000, 1637645400000],\n [94330000, 1637673692000],\n [94340000, 1637717882000],\n [94350000, 1637758190000],\n [94360000, 1637804370000],\n [94370000, 1637845662000],\n [94380000, 1637895340000],\n [94390000, 1637932735000],\n [94400000, 1637975870000],\n [94410000, 1638010801000],\n [94420000, 1638034566000],\n [94430000, 1638082864000],\n [94440000, 1638106561000],\n [94450000, 1638150124000],\n [94460001, 1638190313000],\n [94470001, 1638236140000],\n [94480000, 1638275362000],\n [94490000, 1638312529000],\n [94500001, 1638359064000],\n [94510000, 1638396225000],\n [94520000, 1638446401000],\n [94530000, 1638487812000],\n [94540001, 1638534056000],\n [94550000, 1638573040000],\n [94560001, 1638611797000],\n [94570001, 1638633654000],\n [94580001, 1638681819000],\n [94590000, 1638707684000],\n [94600002, 1638739779000],\n [94610000, 1638791053000],\n [94620000, 1638827797000],\n [94630000, 1638877512000],\n [94640001, 1638916136000],\n [94650000, 1638964380000],\n [94660000, 1639002600000],\n [94670000, 1639051564000],\n [94680000, 1639092606000],\n [94690000, 1639138004000],\n [94700000, 1639175470000],\n [94710000, 1639216802000],\n [94720000, 1639240239000],\n [94730000, 1639289730000],\n [94740000, 1639314497000],\n [94750000, 1639355956000],\n [94760000, 1639399376000],\n [94770000, 1639446657000],\n [94780000, 1639488341000],\n [94790000, 1639540890000],\n [94800000, 1639578070000],\n [94810000, 1639634825000],\n [94820000, 1639667014000],\n [94830000, 1639727096000],\n [94840000, 1639754857000],\n [94850002, 1639807985000],\n [94860000, 1639836570000],\n [94870000, 1639881936000],\n [94880000, 1639913328000],\n [94890001, 1639939256000],\n [94900001, 1639997861000],\n [94910000, 1640032136000],\n [94920000, 1640086745000],\n [94930001, 1640126944000],\n [94940000, 1640174567000],\n [94950000, 1640216396000],\n [94960000, 1640262124000],\n [94970000, 1640293978000],\n [94980000, 1640337791000],\n [94990000, 1640355810000],\n [95000000, 1640383148000],\n [95010000, 1640417193000],\n [95020000, 1640437332000],\n [95030000, 1640457665000],\n [95040000, 1640502272000],\n [95050000, 1640525742000],\n [95060000, 1640568505000],\n [95070000, 1640607220000],\n [95080000, 1640643662000],\n [95090000, 1640688477000],\n [95100000, 1640713771000],\n [95110001, 1640765263000],\n [95120000, 1640789455000],\n [95130000, 1640836018000],\n [95140000, 1640865820000],\n [95150000, 1640886986000],\n [95160000, 1640929078000],\n [95170000, 1640948539000],\n [95180000, 1640962119000],\n [95190000, 1640967773000],\n [95200000, 1640999289000],\n [95210001, 1641021726000],\n [95220000, 1641041414000],\n [95230000, 1641062154000],\n [95240001, 1641107276000],\n [95250000, 1641130900000],\n [95260000, 1641169453000],\n [95270000, 1641202441000],\n [95280000, 1641222169000],\n [95290001, 1641268706000],\n [95300000, 1641299401000],\n [95310000, 1641331812000],\n [95320000, 1641378569000],\n [95330000, 1641402623000],\n [95340000, 1641459753000],\n [95350001, 1641484334000],\n [95360000, 1641541402000],\n [95370000, 1641567555000],\n [95380000, 1641614938000],\n [95390000, 1641645081000],\n [95400001, 1641678389000],\n [95410000, 1641718133000],\n [95420000, 1641740063000],\n [95430000, 1641783577000],\n [95440000, 1641813730000],\n [95450000, 1641836631000],\n [95460000, 1641893792000],\n [95470000, 1641919136000],\n [95480000, 1641979082000],\n [95490000, 1642005692000],\n [95500000, 1642066270000],\n [95510001, 1642094064000],\n [95520000, 1642152651000],\n [95530001, 1642178810000],\n [95540000, 1642231351000],\n [95550000, 1642256244000],\n [95560000, 1642301175000],\n [95570000, 1642330779000],\n [95580000, 1642350152000],\n [95590001, 1642407721000],\n [95600000, 1642433495000],\n [95610000, 1642491125000],\n [95620003, 1642518675000],\n [95630000, 1642577539000],\n [95640000, 1642605531000],\n [95650000, 1642662484000],\n [95660002, 1642691138000],\n [95670000, 1642748927000],\n [95680000, 1642777004000],\n [95690001, 1642824011000],\n [95700000, 1642853326000],\n [95710000, 1642879158000],\n [95720001, 1642923104000],\n [95730000, 1642944769000],\n [95740001, 1642984481000],\n [95750000, 1643025451000],\n [95760001, 1643061600000],\n [95770002, 1643108753000],\n [95780000, 1643139339000],\n [95790000, 1643193042000],\n [95800000, 1643219513000],\n [95810000, 1643276236000],\n [95820000, 1643301999000],\n [95830000, 1643359596000],\n [95840000, 1643384088000],\n [95850000, 1643436377000],\n [95860000, 1643463390000],\n [95870000, 1643503825000],\n [95880001, 1643535017000],\n [95890000, 1643554532000],\n [95900000, 1643602080000],\n [95910000, 1643634055000],\n [95920000, 1643669363000],\n [95930000, 1643713379000],\n [95940000, 1643739115000],\n [95950000, 1643793651000],\n [95960000, 1643816717000],\n [95970000, 1643870775000],\n [95980000, 1643897062000],\n [95990000, 1643943154000],\n [96000000, 1643978568000],\n [96010000, 1644014001000],\n [96020000, 1644052331000],\n [96030000, 1644073609000],\n [96040000, 1644117712000],\n [96050000, 1644144613000],\n [96060000, 1644163045000],\n [96070004, 1644217418000],\n [96080001, 1644245022000],\n [96090001, 1644294817000],\n [96100002, 1644327396000],\n [96110000, 1644373211000],\n [96120000, 1644410656000],\n [96130000, 1644452618000],\n [96140000, 1644492703000],\n [96150001, 1644522089000],\n [96160000, 1644568767000],\n [96170000, 1644591604000],\n [96180000, 1644636121000],\n [96190001, 1644665864000],\n [96200000, 1644687566000],\n [96210000, 1644732574000],\n [96220000, 1644754873000],\n [96230001, 1644769034000],\n [96240000, 1644810107000],\n [96250000, 1644835977000],\n [96260000, 1644849447000],\n [96270000, 1644884644000],\n [96280000, 1644923709000],\n [96290000, 1644948749000],\n [96300000, 1645004525000],\n [96310000, 1645027867000],\n [96320000, 1645085715000],\n [96330000, 1645111159000],\n [96340001, 1645166953000],\n [96350000, 1645194497000],\n [96360000, 1645238464000],\n [96370000, 1645270349000],\n [96380000, 1645291965000],\n [96390003, 1645338654000],\n [96400000, 1645362057000],\n [96410000, 1645396567000],\n [96420000, 1645441201000],\n [96430000, 1645465905000],\n [96440003, 1645518199000],\n [96450000, 1645538687000],\n [96460000, 1645578555000],\n [96470000, 1645612446000],\n [96480000, 1645634807000],\n [96490000, 1645691338000],\n [96500000, 1645716653000],\n [96510000, 1645776440000],\n [96520000, 1645801874000],\n [96530000, 1645852693000],\n [96540000, 1645882000000],\n [96550000, 1645922691000],\n [96560001, 1645954326000],\n [96570001, 1645974002000],\n [96580000, 1646021264000],\n [96590000, 1646053246000],\n [96600000, 1646089480000],\n [96610001, 1646132910000],\n [96620000, 1646160063000],\n [96630000, 1646215743000],\n [96640000, 1646240060000],\n [96650001, 1646298000000],\n [96660000, 1646321417000],\n [96670000, 1646379141000],\n [96680000, 1646405726000],\n [96690000, 1646452784000],\n [96700000, 1646481415000],\n [96710000, 1646506562000],\n [96720000, 1646551308000],\n [96730000, 1646573095000],\n [96740000, 1646613282000],\n [96750000, 1646653562000],\n [96760000, 1646688519000],\n [96770000, 1646737225000],\n [96780000, 1646761941000],\n [96790001, 1646815449000],\n [96800000, 1646837455000],\n [96810003, 1646889463000],\n [96820000, 1646920634000],\n [96830000, 1646970593000],\n [96840000, 1647004780000],\n [96850000, 1647047991000],\n [96860001, 1647081744000],\n [96870000, 1647104597000],\n [96880000, 1647151938000],\n [96890000, 1647175394000],\n [96900001, 1647201204000],\n [96910000, 1647250064000],\n [96920000, 1647270916000],\n [96930000, 1647323937000],\n [96940000, 1647352851000],\n [96950001, 1647400831000],\n [96960001, 1647435932000],\n [96970001, 1647482574000],\n [96980001, 1647520201000],\n [96990000, 1647559457000],\n [97000000, 1647601584000],\n [97010000, 1647625416000],\n [97020000, 1647675245000],\n [97030000, 1647699013000],\n [97040001, 1647738565000],\n [97050000, 1647770012000],\n [97060000, 1647788815000],\n [97070000, 1647832918000],\n [97080000, 1647862795000],\n [97090001, 1647885819000],\n [97100000, 1647941829000],\n [97110000, 1647967953000],\n [97120000, 1648025460000],\n [97130000, 1648050847000],\n [97140000, 1648108091000],\n [97150000, 1648134375000],\n [97160000, 1648187483000],\n [97170000, 1648217127000],\n [97180000, 1648260677000],\n [97190000, 1648292570000],\n [97200000, 1648313035000],\n [97210000, 1648360179000],\n [97220001, 1648385292000],\n [97230002, 1648416624000],\n [97240000, 1648464289000],\n [97250000, 1648490405000],\n [97260000, 1648545108000],\n [97270000, 1648570375000],\n [97280000, 1648627532000],\n [97290000, 1648653425000],\n [97300000, 1648706876000],\n [97310000, 1648735286000],\n [97320000, 1648774530000],\n [97330000, 1648811160000],\n [97340000, 1648832900000],\n [97350000, 1648883188000],\n [97360000, 1648909261000],\n [97370000, 1648951531000],\n [97380000, 1648981759000],\n [97390000, 1649000134000],\n [97400000, 1649048805000],\n [97410001, 1649079946000],\n [97420000, 1649124773000],\n [97430001, 1649162281000],\n [97440000, 1649202085000],\n [97450001, 1649245271000],\n [97460000, 1649279910000],\n [97470000, 1649329956000],\n [97480000, 1649362356000],\n [97490000, 1649415174000],\n [97500000, 1649443697000],\n [97510001, 1649492288000],\n [97520000, 1649516238000],\n [97530001, 1649559814000],\n [97540000, 1649588261000],\n [97550001, 1649607526000],\n [97560000, 1649665207000],\n [97570000, 1649691288000],\n [97580000, 1649749484000],\n [97590000, 1649777794000],\n [97600000, 1649837193000],\n [97610000, 1649864455000],\n [97620000, 1649924301000],\n [97630000, 1649951118000],\n [97640001, 1650010638000],\n [97650000, 1650036067000],\n [97660000, 1650085732000],\n [97670001, 1650114550000],\n [97680000, 1650149599000],\n [97690000, 1650184582000],\n [97700001, 1650204445000],\n [97710000, 1650246943000],\n [97720000, 1650285061000],\n [97730000, 1650324640000],\n [97740000, 1650369926000],\n [97750000, 1650406505000],\n [97760001, 1650454683000],\n [97770000, 1650488690000],\n [97780000, 1650539666000],\n [97790000, 1650572092000],\n [97800000, 1650623950000],\n [97810000, 1650649218000],\n [97820000, 1650698937000],\n [97830000, 1650723060000],\n [97840000, 1650763419000],\n [97850001, 1650793105000],\n [97860000, 1650811744000],\n [97870000, 1650859436000],\n [97880000, 1650892827000],\n [97890000, 1650937001000],\n [97900000, 1650976372000],\n [97910000, 1651012201000],\n [97920000, 1651058881000],\n [97930000, 1651085134000],\n [97940000, 1651140494000],\n [97950000, 1651164143000],\n [97960000, 1651214464000],\n [97970000, 1651238558000],\n [97980000, 1651274894000],\n [97990000, 1651309740000],\n [98000000, 1651329556000],\n [98010000, 1651367050000],\n [98020000, 1651395706000],\n [98030001, 1651414572000],\n [98040000, 1651453238000],\n [98050000, 1651489385000],\n [98060000, 1651511038000],\n [98070000, 1651560061000],\n [98080001, 1651585717000],\n [98090000, 1651626209000],\n [98100000, 1651660631000],\n [98110001, 1651680777000],\n [98120000, 1651727064000],\n [98130000, 1651752712000],\n [98140000, 1651777533000],\n [98150000, 1651829455000],\n [98160000, 1651850625000],\n [98170000, 1651897753000],\n [98180000, 1651925450000],\n [98190000, 1651949752000],\n [98200000, 1651991741000],\n [98210000, 1652013784000],\n [98220000, 1652040136000],\n [98230000, 1652091772000],\n [98240000, 1652115170000],\n [98250000, 1652171957000],\n [98260000, 1652195468000],\n [98270001, 1652250334000],\n [98280000, 1652280651000],\n [98290001, 1652333857000],\n [98300000, 1652365069000],\n [98310000, 1652416463000],\n [98320000, 1652449293000],\n [98330000, 1652490305000],\n [98340002, 1652524153000],\n [98350001, 1652544334000],\n [98360001, 1652590508000],\n [98370000, 1652615956000],\n [98380002, 1652636691000],\n [98390000, 1652692865000],\n [98400000, 1652716070000],\n [98410000, 1652774155000],\n [98420001, 1652800199000],\n [98430002, 1652856185000],\n [98440000, 1652885172000],\n [98450000, 1652937760000],\n [98460000, 1652970116000],\n [98470000, 1653019210000],\n [98480000, 1653052985000],\n [98490001, 1653093221000],\n [98500000, 1653127987000],\n [98510000, 1653148724000],\n [98520001, 1653193876000],\n [98530000, 1653219729000],\n [98540000, 1653239894000],\n [98550000, 1653295318000],\n [98560000, 1653318459000],\n [98570000, 1653371956000],\n [98580000, 1653401929000],\n [98590000, 1653449762000],\n [98600000, 1653484814000],\n [98610000, 1653529521000],\n [98620000, 1653568713000],\n [98630001, 1653607977000],\n [98640000, 1653650480000],\n [98650000, 1653674013000],\n [98660000, 1653722738000],\n [98670001, 1653747137000],\n [98680000, 1653787374000],\n [98690000, 1653817935000],\n [98700000, 1653836604000],\n [98710000, 1653888350000],\n [98720000, 1653920114000],\n [98730000, 1653969242000],\n [98740000, 1654003806000],\n [98750000, 1654045210000],\n [98760001, 1654084663000],\n [98770000, 1654118935000],\n [98780000, 1654169178000],\n [98790000, 1654201643000],\n [98800000, 1654253088000],\n [98810000, 1654278868000],\n [98820001, 1654329163000],\n [98830000, 1654354013000],\n [98840000, 1654397808000],\n [98850001, 1654426920000],\n [98860000, 1654445286000],\n [98870000, 1654500301000],\n [98880002, 1654526820000],\n [98890000, 1654579790000],\n [98900000, 1654611580000],\n [98910000, 1654664420000],\n [98920000, 1654697588000],\n [98930000, 1654749487000],\n [98940000, 1654783568000],\n [98950000, 1654833489000],\n [98960001, 1654867663000],\n [98970000, 1654908892000],\n [98980001, 1654944139000],\n [98990000, 1654965503000],\n [99000000, 1655011751000],\n [99010001, 1655036623000],\n [99020000, 1655062050000],\n [99030000, 1655115730000],\n [99040000, 1655140802000],\n [99050001, 1655200238000],\n [99060000, 1655227418000],\n [99070000, 1655286100000],\n [99080000, 1655311322000],\n [99090000, 1655371756000],\n [99100000, 1655397488000],\n [99110000, 1655456409000],\n [99120001, 1655481377000],\n [99130001, 1655530998000],\n [99140000, 1655558478000],\n [99150000, 1655595815000],\n [99160001, 1655629094000],\n [99170000, 1655649877000],\n [99180000, 1655697169000],\n [99190002, 1655732133000],\n [99200001, 1655777542000],\n [99210000, 1655815828000],\n [99220000, 1655858280000],\n [99230000, 1655900428000],\n [99240000, 1655939022000],\n [99250000, 1655985533000],\n [99260000, 1656021877000],\n [99270000, 1656068560000],\n [99280000, 1656092055000],\n [99290001, 1656141419000],\n [99300001, 1656166335000],\n [99310000, 1656207842000],\n [99320000, 1656239403000],\n [99330000, 1656258623000],\n [99340000, 1656314463000],\n [99350000, 1656342153000],\n [99360000, 1656396899000],\n [99370000, 1656427915000],\n [99380000, 1656482185000],\n [99390000, 1656512903000],\n [99400001, 1656562839000],\n [99410000, 1656595579000],\n [99420000, 1656633247000],\n [99430000, 1656675331000],\n [99440000, 1656705852000],\n [99450000, 1656751022000],\n [99460000, 1656774792000],\n [99470000, 1656819776000],\n [99480000, 1656848027000],\n [99490002, 1656869398000],\n [99500000, 1656925839000],\n [99510000, 1656951106000],\n [99520000, 1657009297000],\n [99530000, 1657035775000],\n [99540000, 1657093341000],\n [99550000, 1657120434000],\n [99560000, 1657174517000],\n [99570000, 1657202489000],\n [99580000, 1657249291000],\n [99590000, 1657288695000],\n [99600000, 1657335917000],\n [99610000, 1657368370000],\n [99620001, 1657397214000],\n [99630001, 1657439756000],\n [99640000, 1657461763000],\n [99650000, 1657506983000],\n [99660000, 1657543658000],\n [99670000, 1657583872000],\n [99680000, 1657627368000],\n [99690000, 1657663740000],\n [99700002, 1657710358000],\n [99710000, 1657740367000],\n [99720000, 1657793730000],\n [99730000, 1657819234000],\n [99740000, 1657874904000],\n [99750000, 1657897814000],\n [99760000, 1657947118000],\n [99770000, 1657975961000],\n [99780000, 1658009309000],\n [99790000, 1658047456000],\n [99800000, 1658068837000],\n [99810000, 1658111280000],\n [99820001, 1658140909000],\n [99830000, 1658160879000],\n [99840000, 1658217236000],\n [99850000, 1658242527000],\n [99860001, 1658291248000],\n [99870001, 1658323415000],\n [99880001, 1658366167000],\n [99890000, 1658404801000],\n [99900000, 1658430178000],\n [99910000, 1658480339000],\n [99920000, 1658502571000],\n [99930000, 1658546742000],\n [99940000, 1658576671000],\n [99950000, 1658599585000],\n [99960000, 1658645517000],\n [99970000, 1658668180000],\n [99980000, 1658701239000],\n [99990001, 1658746444000],\n [100000000, 1658770550000],\n [100010001, 1658825057000],\n [100020000, 1658849795000],\n [100030000, 1658902252000],\n [100040000, 1658931216000],\n [100050002, 1658977024000],\n [100060000, 1659011336000],\n [100070000, 1659048276000],\n [100080000, 1659091189000],\n [100090001, 1659114637000],\n [100100000, 1659161710000],\n [100110000, 1659188166000],\n [100120001, 1659225744000],\n [100130000, 1659257431000],\n [100140000, 1659277374000],\n [100150001, 1659315360000],\n [100160000, 1659352775000],\n [100170001, 1659376747000],\n [100180000, 1659428206000],\n [100190000, 1659452356000],\n [100200000, 1659499984000],\n [100210002, 1659532025000],\n [100220000, 1659571779000],\n [100230000, 1659610850000],\n [100240000, 1659635757000],\n [100250002, 1659689460000],\n [100260000, 1659711827000],\n [100270000, 1659757449000],\n [100280000, 1659787156000],\n [100290000, 1659810033000],\n [100300002, 1659854775000],\n [100310000, 1659877201000],\n [100320001, 1659904955000],\n [100330000, 1659950666000],\n [100340000, 1659971854000],\n [100350001, 1660020731000],\n [100360000, 1660051015000],\n [100370000, 1660088507000],\n [100380000, 1660128077000],\n [100390000, 1660150743000],\n [100400000, 1660199251000],\n [100410000, 1660224708000],\n [100420000, 1660263125000],\n [100430000, 1660299268000],\n [100440000, 1660319860000],\n [100450000, 1660368097000],\n [100460000, 1660395113000],\n [100470000, 1660428835000],\n [100480002, 1660467041000],\n [100490000, 1660488418000],\n [100500001, 1660532076000],\n [100510000, 1660563664000],\n [100520000, 1660586072000],\n [100530000, 1660636094000],\n [100540000, 1660660143000],\n [100550001, 1660705709000],\n [100560000, 1660738438000],\n [100570000, 1660769636000],\n [100580000, 1660816247000],\n [100590000, 1660838488000],\n [100600000, 1660890601000],\n [100610000, 1660916383000],\n [100620000, 1660954023000],\n [100630000, 1660988123000],\n [100640000, 1661008313000],\n [100650000, 1661051552000],\n [100660000, 1661078751000],\n [100670000, 1661096020000],\n [100680001, 1661145736000],\n [100690000, 1661175462000],\n [100700000, 1661215588000],\n [100710000, 1661254370000],\n [100720000, 1661280952000],\n [100730001, 1661333728000],\n [100740001, 1661358099000],\n [100750000, 1661414497000],\n [100760000, 1661440179000],\n [100770000, 1661492341000],\n [100780000, 1661521055000],\n [100790000, 1661561197000],\n [100800000, 1661595564000],\n [100810000, 1661617049000],\n [100820001, 1661662917000],\n [100830000, 1661689252000],\n [100840000, 1661718103000],\n [100850000, 1661768784000],\n [100860000, 1661793527000],\n [100870000, 1661849515000],\n [100880001, 1661872195000],\n [100890000, 1661917529000],\n [100900000, 1661948051000],\n [100910000, 1661969237000],\n [100920000, 1662023950000],\n [100930000, 1662046758000],\n [100940001, 1662101858000],\n [100950000, 1662128942000],\n [100960000, 1662173387000],\n [100970000, 1662204890000],\n [100980000, 1662228844000],\n [100990000, 1662273369000],\n [101000001, 1662296585000],\n [101010000, 1662330600000],\n [101020000, 1662375501000],\n [101030000, 1662399311000],\n [101040000, 1662454532000],\n [101050000, 1662478221000],\n [101060000, 1662534277000],\n [101070000, 1662562041000],\n [101080001, 1662615000000],\n [101090000, 1662646251000],\n [101100000, 1662695101000],\n [101110000, 1662728898000],\n [101120000, 1662767763000],\n [101130000, 1662804411000],\n [101140000, 1662826306000],\n [101150000, 1662873053000],\n [101160000, 1662898991000],\n [101170000, 1662921420000],\n [101180000, 1662975008000],\n [101190000, 1662998412000],\n [101200001, 1663055550000],\n [101210000, 1663081475000],\n [101220001, 1663137351000],\n [101230000, 1663167043000],\n [101240000, 1663220786000],\n [101250000, 1663252123000],\n [101260001, 1663303174000],\n [101270000, 1663335605000],\n [101280000, 1663377786000],\n [101290000, 1663411636000],\n [101300000, 1663434514000],\n [101310000, 1663481292000],\n [101320000, 1663506006000],\n [101330000, 1663538154000],\n [101340000, 1663575100000],\n [101350000, 1663596656000],\n [101360001, 1663642801000],\n [101370000, 1663679427000],\n [101380001, 1663723527000],\n [101390001, 1663764847000],\n [101400000, 1663809476000],\n [101410000, 1663850607000],\n [101420000, 1663890675000],\n [101430000, 1663928623000],\n [101440000, 1663950553000],\n [101450000, 1663999393000],\n [101460000, 1664026202000],\n [101470000, 1664062966000],\n [101480000, 1664096841000],\n [101490000, 1664117420000],\n [101500000, 1664166014000],\n [101510001, 1664199412000],\n [101520000, 1664247441000],\n [101530000, 1664284337000],\n [101540000, 1664330061000],\n [101550000, 1664369209000],\n [101560000, 1664413801000],\n [101570000, 1664454981000],\n [101580000, 1664497469000],\n [101590000, 1664538598000],\n [101600000, 1664563614000],\n [101610001, 1664610820000],\n [101620001, 1664634225000],\n [101630000, 1664676093000],\n [101640000, 1664706511000],\n [101650000, 1664726088000],\n [101660000, 1664781204000],\n [101670001, 1664808690000],\n [101680001, 1664860503000],\n [101690000, 1664893068000],\n [101700000, 1664942458000],\n [101710000, 1664977095000],\n [101720000, 1665023401000],\n [101730000, 1665060915000],\n [101740000, 1665104252000],\n [101750000, 1665143938000],\n [101760000, 1665175158000],\n [101770000, 1665218600000],\n [101780000, 1665241251000],\n [101790000, 1665284588000],\n [101800000, 1665312938000],\n [101810000, 1665330821000],\n [101820000, 1665372149000],\n [101830000, 1665398820000],\n [101840000, 1665416394000],\n [101850001, 1665465350000],\n [101860000, 1665494515000],\n [101870000, 1665530852000],\n [101880000, 1665571548000],\n [101890000, 1665593214000],\n [101900000, 1665646911000],\n [101910001, 1665670737000],\n [101920000, 1665712000000],\n [101930001, 1665746769000],\n [101940000, 1665767338000],\n [101950001, 1665810534000],\n [101960001, 1665835542000],\n [101970000, 1665854271000],\n [101980000, 1665894802000],\n [101990000, 1665917567000],\n [102000000, 1665933751000],\n [102010000, 1665979225000],\n [102020001, 1666010201000],\n [102030000, 1666035288000],\n [102040000, 1666084139000],\n [102050001, 1666105768000],\n [102060000, 1666151876000],\n [102070000, 1666183433000],\n [102080000, 1666216827000],\n [102090000, 1666261199000],\n [102100000, 1666282384000],\n [102110000, 1666334679000],\n [102120000, 1666359814000],\n [102130000, 1666396801000],\n [102140000, 1666428164000],\n [102150000, 1666448425000],\n [102160000, 1666485189000],\n [102170000, 1666514196000],\n [102180001, 1666532789000],\n [102190001, 1666565854000],\n [102200000, 1666605896000],\n [102210001, 1666626596000],\n [102220000, 1666675350000],\n [102230000, 1666704277000],\n [102240000, 1666741236000],\n [102250000, 1666781943000],\n [102260000, 1666803294000],\n [102270000, 1666855732000],\n [102280000, 1666881175000],\n [102290000, 1666926797000],\n [102300000, 1666959138000],\n [102310001, 1666985187000],\n [102320000, 1667026497000],\n [102330000, 1667049301000],\n [102340000, 1667074375000],\n [102350000, 1667110331000],\n [102360000, 1667130422000],\n [102370000, 1667143380000],\n [102380000, 1667177656000],\n [102390001, 1667206886000],\n [102400000, 1667221135000],\n [102410000, 1667232357000],\n [102420000, 1667272246000],\n [102430000, 1667301644000],\n [102440000, 1667320439000],\n [102450000, 1667367598000],\n [102460000, 1667394858000],\n [102470000, 1667427666000],\n [102480000, 1667464915000],\n [102490000, 1667485160000],\n [102500000, 1667524862000],\n [102510000, 1667560354000],\n [102520000, 1667580817000],\n [102530000, 1667624234000],\n [102540000, 1667649179000],\n [102550001, 1667668772000],\n [102560000, 1667710692000],\n [102570000, 1667734400000],\n [102580000, 1667750824000],\n [102590000, 1667797645000],\n [102600000, 1667825493000],\n [102610000, 1667852133000],\n [102620000, 1667897579000],\n [102630000, 1667919378000],\n [102640000, 1667962893000],\n [102650000, 1667995549000],\n [102660000, 1668020437000],\n [102670004, 1668068451000],\n [102680000, 1668090936000],\n [102690000, 1668129462000],\n [102700000, 1668162955000],\n [102710002, 1668179889000],\n [102720000, 1668219563000],\n [102730000, 1668247564000],\n [102740001, 1668265922000],\n [102750000, 1668303741000],\n [102760000, 1668329693000],\n [102770000, 1668346874000],\n [102780000, 1668375663000],\n [102790000, 1668418003000],\n [102800000, 1668438783000],\n [102810000, 1668484194000],\n [102820000, 1668514548000],\n [102830000, 1668539261000],\n [102840000, 1668587302000],\n [102850000, 1668609630000],\n [102860001, 1668653622000],\n [102870000, 1668686822000],\n [102880000, 1668713232000],\n [102890000, 1668756421000],\n [102900001, 1668779395000],\n [102910000, 1668811400000],\n [102920001, 1668844024000],\n [102930002, 1668865313000],\n [102940000, 1668896876000],\n [102950000, 1668928452000],\n [102960000, 1668948443000],\n [102970000, 1668971136000],\n [102980000, 1669018484000],\n [102990000, 1669041914000],\n [103000001, 1669085862000],\n [103010000, 1669119022000],\n [103020000, 1669143271000],\n [103030001, 1669186087000],\n [103040000, 1669207952000],\n [103050000, 1669233127000],\n [103060001, 1669279725000],\n [103070000, 1669301857000],\n [103080000, 1669347356000],\n [103090000, 1669378612000],\n [103100000, 1669404460000],\n [103110000, 1669445020000],\n [103120000, 1669467819000],\n [103130000, 1669492431000],\n [103140001, 1669530622000],\n [103150000, 1669551525000],\n [103160000, 1669570387000],\n [103170000, 1669620905000],\n [103180000, 1669644820000],\n [103190000, 1669685233000],\n [103200000, 1669720198000],\n [103210000, 1669740091000],\n [103220001, 1669787993000],\n [103230000, 1669813297000],\n [103240000, 1669837950000],\n [103250000, 1669883072000],\n [103260000, 1669905232000],\n [103270001, 1669948516000],\n [103280000, 1669981254000],\n [103290000, 1670003254000],\n [103300000, 1670048941000],\n [103310000, 1670072034000],\n [103320000, 1670093871000],\n [103330000, 1670133300000],\n [103340000, 1670154660000],\n [103350000, 1670172240000],\n [103360001, 1670220480000],\n [103370000, 1670245740000],\n [103380000, 1670277480000],\n [103390000, 1670319000000],\n [103400000, 1670339280000],\n [103410000, 1670384520000],\n [103420000, 1670416800000],\n [103430000, 1670448720000],\n [103440002, 1670492880000],\n [103450000, 1670513040000],\n [103460000, 1670560200000],\n [103470000, 1670589120000],\n [103480000, 1670613240000],\n [103490000, 1670655000000],\n [103500000, 1670677320000],\n [103510000, 1670706120000],\n [103520000, 1670741520000],\n [103530002, 1670762040000],\n [103540000, 1670783700000],\n [103550000, 1670833980000],\n [103560000, 1670856420000],\n [103570000, 1670900760000],\n [103580000, 1670934000000],\n [103590000, 1670962320000],\n [103600000, 1671009780000],\n [103610000, 1671030900000],\n [103620000, 1671080700000],\n [103630000, 1671109800000],\n [103640000, 1671144180000],\n [103650000, 1671185160000],\n [103660000, 1671204600000],\n [103670000, 1671247980000],\n [103680000, 1671274620000],\n [103690000, 1671292800000],\n [103700000, 1671336000000],\n [103710000, 1671361620000],\n [103720000, 1671379740000],\n [103730001, 1671430260000],\n [103740000, 1671457140000],\n [103750000, 1671496200000],\n [103760000, 1671534780000],\n [103770000, 1671558060000],\n [103780001, 1671608340000],\n [103790000, 1671632100000],\n [103800000, 1671673020000],\n [103810000, 1671708240000],\n [103820000, 1671729660000],\n [103830000, 1671779400000],\n [103840000, 1671802980000],\n [103850000, 1671830220000],\n [103860000, 1671863040000],\n [103870000, 1671882180000],\n [103880000, 1671894900000],\n [103890000, 1671923820000],\n [103900000, 1671949680000],\n [103910002, 1671967260000],\n [103920000, 1671979860000],\n [103930000, 1672016040000],\n [103940000, 1672049280000],\n [103950000, 1672068720000],\n [103960001, 1672113420000],\n [103970000, 1672143420000],\n [103980000, 1672170420000],\n [103990001, 1672215780000],\n [104000002, 1672237620000],\n [104010000, 1672277580000],\n [104020000, 1672308120000],\n [104030000, 1672327620000],\n [104040001, 1672369020000],\n [104050000, 1672396500000],\n [104060002, 1672414380000],\n [104070000, 1672451820000],\n [104080001, 1672474140000],\n [104090000, 1672489980000],\n [104100000, 1672499040000],\n [104110000, 1672506000000],\n [104120000, 1672535640000],\n [104130000, 1672556220000],\n [104140000, 1672573980000],\n [104150000, 1672587900000],\n [104160000, 1672627680000],\n [104170000, 1672652520000],\n [104180000, 1672671420000],\n [104190001, 1672707180000],\n [104200000, 1672735260000],\n [104210000, 1672753800000],\n [104220000, 1672785120000],\n [104230000, 1672820400000],\n [104240000, 1672840680000],\n [104250001, 1672873500000],\n [104260001, 1672910940000],\n [104270000, 1672930620000],\n [104280000, 1672973160000],\n [104290000, 1673003400000],\n [104300000, 1673021340000],\n [104310000, 1673064360000],\n [104320000, 1673089800000],\n [104330000, 1673107200000],\n [104340000, 1673147580000],\n [104350000, 1673173320000],\n [104360000, 1673190720000],\n [104370003, 1673229120000],\n [104380001, 1673256120000],\n [104390000, 1673274420000],\n [104400000, 1673311620000],\n [104410000, 1673348880000],\n [104420001, 1673368980000],\n [104430000, 1673420820000],\n [104440000, 1673445180000],\n [104450000, 1673485080000],\n [104460000, 1673522160000],\n [104470000, 1673545560000],\n [104480000, 1673596860000],\n [104490002, 1673619300000],\n [104500000, 1673657220000],\n [104510000, 1673688540000],\n [104520000, 1673708040000],\n [104530000, 1673745120000],\n [104540000, 1673773260000],\n [104550000, 1673791200000],\n [104560000, 1673825220000],\n [104570000, 1673864820000],\n [104580000, 1673885040000],\n [104590000, 1673934000000],\n [104600000, 1673962200000],\n [104610000, 1673999460000],\n [104620000, 1674039420000],\n [104630000, 1674061140000],\n [104640000, 1674113160000],\n [104650000, 1674138060000],\n [104660000, 1674181200000],\n [104670000, 1674214680000],\n [104680000, 1674236760000],\n [104690000, 1674280920000],\n [104700000, 1674304680000],\n [104710000, 1674326040000],\n [104720001, 1674367080000],\n [104730000, 1674389700000],\n [104740000, 1674409380000],\n [104750000, 1674459780000],\n [104760000, 1674483000000],\n [104770000, 1674523860000],\n [104780000, 1674559440000],\n [104790000, 1674583860000],\n [104800000, 1674634020000],\n [104810000, 1674656880000],\n [104820000, 1674698640000],\n [104830000, 1674733980000],\n [104840000, 1674756420000],\n [104850000, 1674807060000],\n [104860000, 1674828660000],\n [104870000, 1674865320000],\n [104880000, 1674896700000],\n [104890000, 1674916080000],\n [104900000, 1674951780000],\n [104910000, 1674981120000],\n [104920000, 1674999360000],\n [104930000, 1675029120000],\n [104940000, 1675071180000],\n [104950000, 1675090860000],\n [104960000, 1675134780000],\n [104970000, 1675165980000],\n [104980000, 1675184040000],\n [104990000, 1675233960000],\n [105000000, 1675257900000],\n [105010000, 1675291800000],\n [105020000, 1675331520000],\n [105030000, 1675350300000],\n [105040000, 1675392780000],\n [105050000, 1675420440000],\n [105060000, 1675436520000],\n [105070000, 1675474320000],\n [105080000, 1675503360000],\n [105090000, 1675522200000],\n [105100000, 1675558380000],\n [105110000, 1675585200000],\n [105120002, 1675602960000],\n [105130000, 1675627260000],\n [105140000, 1675672260000],\n [105150000, 1675693560000],\n [105160000, 1675731060000],\n [105170000, 1675766760000],\n [105180000, 1675785300000],\n [105190000, 1675833960000],\n [105200000, 1675860600000],\n [105210000, 1675885440000],\n [105220000, 1675932240000],\n [105230000, 1675953420000],\n [105240000, 1675992780000],\n [105250002, 1676024520000],\n [105260000, 1676041800000],\n [105270002, 1676079780000],\n [105280000, 1676107800000],\n [105290002, 1676126580000],\n [105300000, 1676160780000],\n [105310000, 1676188440000],\n [105320000, 1676206560000],\n [105330000, 1676225340000],\n [105340000, 1676272800000],\n [105350000, 1676294880000],\n [105360000, 1676311260000],\n [105370000, 1676348580000],\n [105380001, 1676371620000],\n [105390000, 1676384640000],\n [105400000, 1676409600000],\n [105410000, 1676449440000],\n [105420000, 1676470320000],\n [105430000, 1676508780000],\n [105440000, 1676545200000],\n [105450000, 1676564940000],\n [105460000, 1676612940000],\n [105470000, 1676639400000],\n [105480000, 1676666880000],\n [105490000, 1676704980000],\n [105500000, 1676726100000],\n [105510000, 1676749800000],\n [105520000, 1676785860000],\n [105530000, 1676807280000],\n [105540000, 1676822100000],\n [105550000, 1676867460000],\n [105560000, 1676895900000],\n [105570000, 1676917800000],\n [105580000, 1676964120000],\n [105590000, 1676987460000],\n [105600000, 1677019320000],\n [105610000, 1677056400000],\n [105620000, 1677074880000],\n [105630000, 1677107340000],\n [105640000, 1677140760000],\n [105650000, 1677160500000],\n [105660001, 1677190980000],\n [105670001, 1677230340000],\n [105680000, 1677250140000],\n [105690000, 1677286440000],\n [105700000, 1677315960000],\n [105710000, 1677334920000],\n [105720000, 1677367080000],\n [105730000, 1677396720000],\n [105740000, 1677415680000],\n [105750000, 1677433800000],\n [105760000, 1677480480000],\n [105770000, 1677503760000],\n [105780000, 1677530640000],\n [105790000, 1677572460000],\n [105800000, 1677592500000],\n [105810000, 1677622380000],\n [105820000, 1677661200000],\n [105830000, 1677680520000],\n [105840000, 1677717300000],\n [105850000, 1677752820000],\n [105860000, 1677771060000],\n [105870001, 1677815100000],\n [105880000, 1677843900000],\n [105890000, 1677860640000],\n [105900000, 1677902400000],\n [105910000, 1677927600000],\n [105920000, 1677944280000],\n [105930000, 1677982920000],\n [105940000, 1678007760000],\n [105950000, 1678024380000],\n [105960000, 1678053060000],\n [105970000, 1678092960000],\n [105980001, 1678112340000],\n [105990001, 1678147500000],\n [106000000, 1678183140000],\n [106010000, 1678201560000],\n [106020000, 1678243800000],\n [106030000, 1678274820000],\n [106040000, 1678291920000],\n [106050000, 1678335600000],\n [106060000, 1678362480000],\n [106070000, 1678378860000],\n [106080000, 1678424700000],\n [106090000, 1678450320000],\n [106100000, 1678468860000],\n [106110003, 1678509420000],\n [106120000, 1678534200000],\n [106130000, 1678551480000],\n [106140000, 1678589880000],\n [106150000, 1678612680000],\n [106160000, 1678628940000],\n [106170000, 1678657140000],\n [106180001, 1678696680000],\n [106190000, 1678716480000],\n [106200000, 1678748040000],\n [106210002, 1678784760000],\n [106220000, 1678803420000],\n [106230001, 1678837920000],\n [106240000, 1678873860000],\n [106250000, 1678892280000],\n [106260000, 1678932720000],\n [106270000, 1678964280000],\n [106280000, 1678981860000],\n [106290000, 1679026080000],\n [106300000, 1679053320000],\n [106310000, 1679069340000],\n [106320000, 1679109120000],\n [106330000, 1679134200000],\n [106340000, 1679151540000],\n [106350001, 1679186760000],\n [106360001, 1679214420000],\n [106370000, 1679232180000],\n [106380000, 1679252820000],\n [106390000, 1679296680000],\n [106400000, 1679318520000],\n [106410000, 1679342340000],\n [106420001, 1679380200000],\n [106430002, 1679401020000],\n [106440000, 1679418060000],\n [106450000, 1679463300000],\n [106460000, 1679488440000],\n [106470000, 1679508780000],\n [106480000, 1679554320000],\n [106490000, 1679577120000],\n [106500000, 1679600640000],\n [106510000, 1679643120000],\n [106520000, 1679663400000],\n [106530000, 1679683500000],\n [106540002, 1679720880000],\n [106550000, 1679743920000],\n [106560000, 1679759700000],\n [106570000, 1679797680000],\n [106580001, 1679821260000],\n [106590000, 1679837700000],\n [106600000, 1679859600000],\n [106610001, 1679901840000],\n [106620000, 1679923920000],\n [106630000, 1679951700000],\n [106640000, 1679991780000],\n [106650002, 1680012240000],\n [106660000, 1680045000000],\n [106670000, 1680081360000],\n [106680000, 1680100500000],\n [106690000, 1680135900000],\n [106700000, 1680170400000],\n [106710000, 1680188520000],\n [106720000, 1680226920000],\n [106730000, 1680257820000],\n [106740000, 1680274800000],\n [106750000, 1680304680000],\n [106760000, 1680332820000],\n [106770000, 1680352440000],\n [106780001, 1680368580000],\n [106790000, 1680406200000],\n [106800001, 1680429600000],\n [106810000, 1680445200000],\n [106820000, 1680474780000],\n [106830000, 1680512220000],\n [106840001, 1680530820000],\n [106850001, 1680562320000],\n [106860000, 1680598080000],\n [106870000, 1680617100000],\n [106880000, 1680649320000],\n [106890000, 1680684540000],\n [106900000, 1680702720000],\n [106910000, 1680732360000],\n [106920000, 1680770640000],\n [106930000, 1680789660000],\n [106940000, 1680820620000],\n [106950000, 1680856980000],\n [106960000, 1680876000000],\n [106970000, 1680904440000],\n [106980000, 1680936780000],\n [106990000, 1680956820000],\n [107000000, 1680973380000],\n [107010000, 1681010520000],\n [107020002, 1681032780000],\n [107030000, 1681047960000],\n [107040001, 1681070400000],\n [107050000, 1681111800000],\n [107060000, 1681132800000],\n [107070000, 1681158360000],\n [107080000, 1681200660000],\n [107090000, 1681221060000],\n [107100000, 1681251480000],\n [107110000, 1681290420000],\n [107120000, 1681309740000],\n [107130000, 1681345620000],\n [107140000, 1681381920000],\n [107150000, 1681399140000],\n [107160000, 1681441740000],\n [107170000, 1681471620000],\n [107180002, 1681488720000],\n [107190000, 1681527900000],\n [107200000, 1681553220000],\n [107210000, 1681570560000],\n [107220000, 1681603440000],\n [107230002, 1681629840000],\n [107240000, 1681647480000],\n [107250001, 1681661760000],\n [107260000, 1681704120000],\n [107270000, 1681732020000],\n [107280000, 1681748280000],\n [107290000, 1681792260000],\n [107300000, 1681819620000],\n [107310001, 1681837560000],\n [107320000, 1681883220000],\n [107330000, 1681908120000],\n [107340000, 1681928760000],\n [107350000, 1681974480000],\n [107360003, 1681996560000],\n [107370000, 1682024220000],\n [107380000, 1682065620000],\n [107390000, 1682084640000],\n [107400000, 1682111160000],\n [107410000, 1682145360000],\n [107420001, 1682165520000],\n [107430001, 1682181480000],\n [107440000, 1682219040000],\n [107450000, 1682241480000],\n [107460000, 1682256660000],\n [107470000, 1682277480000],\n [107480000, 1682321460000],\n [107490000, 1682341980000],\n [107500000, 1682365200000],\n [107510000, 1682407980000],\n [107520000, 1682428140000],\n [107530000, 1682453040000],\n [107540001, 1682495580000],\n [107550002, 1682515980000],\n [107560000, 1682545200000],\n [107570000, 1682586780000],\n [107580000, 1682605860000],\n [107590000, 1682641680000],\n [107600000, 1682676360000],\n [107610000, 1682693640000],\n [107620000, 1682727780000],\n [107630000, 1682755500000],\n [107640000, 1682773200000],\n [107650000, 1682790720000],\n [107660000, 1682826420000],\n [107670000, 1682850000000],\n [107680000, 1682863320000],\n [107690000, 1682884560000],\n [107700000, 1682922240000],\n [107710000, 1682942820000],\n [107720000, 1682957040000],\n [107730000, 1682996400000],\n [107740000, 1683022680000],\n [107750000, 1683039120000],\n [107760000, 1683071520000],\n [107770000, 1683101220000],\n [107780000, 1683120000000],\n [107790000, 1683143520000],\n [107800000, 1683179400000],\n [107810001, 1683201840000],\n [107820001, 1683218160000],\n [107830000, 1683255300000],\n [107840000, 1683279240000],\n [107850001, 1683295740000],\n [107860000, 1683320580000],\n [107870000, 1683352800000],\n [107880000, 1683373380000],\n [107890000, 1683388440000],\n [107900000, 1683424500000],\n [107910000, 1683446340000],\n [107920000, 1683462840000],\n [107930000, 1683478140000],\n [107940000, 1683523260000],\n [107950000, 1683549960000],\n [107960000, 1683569880000],\n [107970001, 1683615660000],\n [107980000, 1683638220000],\n [107990000, 1683654120000],\n [108000000, 1683699000000],\n [108010000, 1683723660000],\n [108020000, 1683747360000],\n [108030000, 1683792000000],\n [108040000, 1683813480000],\n [108050000, 1683848640000],\n [108060001, 1683886500000],\n [108070000, 1683905160000],\n [108080000, 1683945900000],\n [108090000, 1683973200000],\n [108100000, 1683990780000],\n [108110000, 1684027440000],\n [108120000, 1684053240000],\n [108130000, 1684070460000],\n [108140000, 1684093260000],\n [108150000, 1684137600000],\n [108160000, 1684159380000],\n [108170000, 1684195680000],\n [108180000, 1684233900000],\n [108190000, 1684252800000],\n [108200000, 1684299720000],\n [108210000, 1684327980000],\n [108220000, 1684357200000],\n [108230002, 1684399740000],\n [108240000, 1684421280000],\n [108250000, 1684463040000],\n [108260000, 1684494900000],\n [108270000, 1684513680000],\n [108280000, 1684555020000],\n [108290001, 1684580760000],\n [108300000, 1684598400000],\n [108310000, 1684637580000],\n [108320000, 1684661940000],\n [108330000, 1684678980000],\n [108340000, 1684712700000],\n [108350000, 1684749840000],\n [108360000, 1684768500000],\n [108370000, 1684811640000],\n [108380000, 1684843200000],\n [108390000, 1684864320000],\n [108400000, 1684911720000],\n [108410000, 1684935720000],\n [108420001, 1684969800000],\n [108430003, 1685009100000],\n [108440000, 1685028480000],\n [108450001, 1685073960000],\n [108460000, 1685102820000],\n [108470000, 1685123760000],\n [108480000, 1685164620000],\n [108490000, 1685188800000],\n [108500000, 1685208300000],\n [108510000, 1685248020000],\n [108520000, 1685271240000],\n [108530001, 1685286360000],\n [108540000, 1685326740000],\n [108550000, 1685358480000],\n [108560000, 1685376480000],\n [108570000, 1685421420000],\n [108580001, 1685449800000],\n [108590000, 1685474580000],\n [108600000, 1685519820000],\n [108610000, 1685540700000],\n [108620000, 1685570040000],\n [108630001, 1685610000000],\n [108640000, 1685630400000],\n [108650000, 1685668560000],\n [108660000, 1685701020000],\n [108670000, 1685719140000],\n [108680000, 1685759160000],\n [108690000, 1685785800000],\n [108700000, 1685803920000],\n [108710000, 1685838180000],\n [108720000, 1685865720000],\n [108730001, 1685883720000],\n [108740001, 1685905860000],\n [108750000, 1685950980000],\n [108760000, 1685972520000],\n [108770000, 1686003060000],\n [108780000, 1686043020000],\n [108790000, 1686063060000],\n [108800000, 1686103740000],\n [108810001, 1686136800000],\n [108820000, 1686156120000],\n [108830000, 1686203460000],\n [108840001, 1686229380000],\n [108850000, 1686259620000],\n [108860002, 1686300720000],\n [108870000, 1686320040000],\n [108880000, 1686353760000],\n [108890000, 1686385260000],\n [108900000, 1686404640000],\n [108910000, 1686434340000],\n [108920000, 1686465900000],\n [108930001, 1686485700000],\n [108940000, 1686503160000],\n [108950000, 1686548640000],\n [108960000, 1686574020000],\n [108970000, 1686598500000],\n [108980000, 1686643500000],\n [108990000, 1686665940000],\n [109000000, 1686704040000],\n [109010001, 1686739320000],\n [109020000, 1686758040000],\n [109030000, 1686805320000],\n [109040000, 1686833400000],\n [109050000, 1686859560000],\n [109060000, 1686903900000],\n [109070000, 1686924660000],\n [109080000, 1686956940000],\n [109090000, 1686988800000],\n [109100000, 1687008840000],\n [109110000, 1687035960000],\n [109120000, 1687068600000],\n [109130000, 1687087860000],\n [109140000, 1687102200000],\n [109150000, 1687143420000],\n [109160000, 1687173180000],\n [109170000, 1687190400000],\n [109180000, 1687234980000],\n [109190000, 1687263180000],\n [109200000, 1687284420000],\n [109210000, 1687330080000],\n [109220000, 1687353060000],\n [109230000, 1687382640000],\n [109240000, 1687423140000],\n [109250000, 1687442400000],\n [109260001, 1687474080000],\n [109270000, 1687511760000],\n [109280000, 1687530360000],\n [109290001, 1687562880000],\n [109300000, 1687593060000],\n [109310000, 1687612500000],\n [109320000, 1687634820000],\n [109330000, 1687671000000],\n [109340001, 1687692600000],\n [109350000, 1687707420000],\n [109360000, 1687749240000],\n [109370001, 1687779900000],\n [109380001, 1687799580000],\n [109390000, 1687846200000],\n [109400000, 1687871760000],\n [109410000, 1687903200000],\n [109420000, 1687943220000],\n [109430000, 1687963260000],\n [109440000, 1688003160000],\n [109450000, 1688036280000],\n [109460000, 1688054820000],\n [109470000, 1688097420000],\n [109480000, 1688125380000],\n [109490000, 1688141160000],\n [109500000, 1688180400000],\n [109510000, 1688205480000],\n [109520000, 1688223120000],\n [109530000, 1688253120000],\n [109540000, 1688273940000],\n [109550000, 1688290980000],\n [109560000, 1688304720000],\n [109570001, 1688323260000],\n [109580000, 1688364780000],\n [109590000, 1688387280000],\n [109600000, 1688405580000],\n [109610000, 1688449320000],\n [109620000, 1688473860000],\n [109630001, 1688494080000],\n [109640000, 1688536800000],\n [109650001, 1688561100000],\n [109660000, 1688584560000],\n [109670000, 1688628540000],\n [109680000, 1688651100000],\n [109690000, 1688680200000],\n [109700000, 1688718480000],\n [109710000, 1688736840000],\n [109720000, 1688764440000],\n [109730000, 1688798940000],\n [109740000, 1688820240000],\n [109750000, 1688840940000],\n [109760000, 1688878380000],\n [109770000, 1688900400000],\n [109780000, 1688915880000],\n [109790000, 1688956680000],\n [109800000, 1688987760000],\n [109810000, 1689006420000],\n [109820001, 1689051540000],\n [109830000, 1689079500000],\n [109840001, 1689106560000],\n [109850000, 1689150600000],\n [109860001, 1689171960000],\n [109870001, 1689209880000],\n [109880000, 1689244800000],\n [109890000, 1689264120000],\n [109900000, 1689309480000],\n [109910000, 1689337560000],\n [109920000, 1689358200000],\n [109930000, 1689398340000],\n [109940000, 1689422700000],\n [109950000, 1689441540000],\n [109960000, 1689480960000],\n [109970000, 1689505500000],\n [109980000, 1689521820000],\n [109990000, 1689560700000],\n [110000000, 1689586440000],\n [110010000, 1689604020000],\n [110020000, 1689639480000],\n [110030000, 1689676320000],\n [110040000, 1689695520000],\n [110050000, 1689741720000],\n [110060000, 1689770400000],\n [110070000, 1689797460000],\n [110080000, 1689840600000],\n [110090000, 1689862500000],\n [110100000, 1689898920000],\n [110110000, 1689934260000],\n [110120000, 1689952680000],\n [110130000, 1689993300000],\n [110140000, 1690020120000],\n [110150000, 1690038720000],\n [110160000, 1690076040000],\n [110170000, 1690102860000],\n [110180000, 1690120800000],\n [110190001, 1690153080000],\n [110200001, 1690190220000],\n [110210000, 1690209420000],\n [110220000, 1690246920000],\n [110230000, 1690281120000],\n [110240000, 1690300080000],\n [110250000, 1690343880000],\n [110260000, 1690372800000],\n [110270000, 1690393500000],\n [110280000, 1690438260000],\n [110290000, 1690462800000],\n [110300000, 1690491420000],\n [110310000, 1690531860000],\n [110320000, 1690552560000],\n [110330000, 1690583820000],\n [110340000, 1690615680000],\n [110350000, 1690636680000],\n [110360000, 1690662060000],\n [110370000, 1690696680000],\n [110380000, 1690718400000],\n [110390000, 1690735020000],\n [110400000, 1690778640000],\n [110410001, 1690805640000],\n [110420000, 1690823580000],\n [110430000, 1690867680000],\n [110440000, 1690893060000],\n [110450000, 1690913940000],\n [110460000, 1690957080000],\n [110470000, 1690980480000],\n [110480001, 1691003760000],\n [110490000, 1691047740000],\n [110500000, 1691070060000],\n [110510000, 1691102940000],\n [110520000, 1691139480000],\n [110530000, 1691158860000],\n [110540000, 1691194080000],\n [110550000, 1691224200000],\n [110560000, 1691244240000],\n [110570000, 1691276220000],\n [110580000, 1691305260000],\n [110590000, 1691324880000],\n [110600000, 1691342400000],\n [110610000, 1691385300000],\n [110620000, 1691410680000],\n [110630000, 1691429760000],\n [110640000, 1691474400000],\n [110650000, 1691498040000],\n [110660000, 1691519820000],\n [110670000, 1691563620000],\n [110680000, 1691586780000],\n [110690000, 1691612940000],\n [110700000, 1691653440000],\n [110710000, 1691674620000],\n [110720002, 1691702460000],\n [110730000, 1691737080000],\n [110740000, 1691758260000],\n [110750000, 1691782980000],\n [110760000, 1691821380000],\n [110770000, 1691845260000],\n [110780000, 1691873280000],\n [110790000, 1691909640000],\n [110800001, 1691931420000],\n [110810000, 1691954460000],\n [110820001, 1691995560000],\n [110830000, 1692017520000],\n [110840000, 1692041220000],\n [110850001, 1692078600000],\n [110860000, 1692100740000],\n [110870001, 1692117240000],\n [110880000, 1692158820000],\n [110890000, 1692185640000],\n [110900000, 1692203760000],\n [110910000, 1692247560000],\n [110920000, 1692274380000],\n [110930000, 1692294960000],\n [110940000, 1692339600000],\n [110950000, 1692363000000],\n [110960002, 1692385260000],\n [110970000, 1692423120000],\n [110980000, 1692446940000],\n [110990000, 1692465420000],\n [111000000, 1692505140000],\n [111010000, 1692529200000],\n [111020000, 1692545340000],\n [111030000, 1692586800000],\n [111040000, 1692616500000],\n [111050000, 1692633840000],\n [111060000, 1692677940000],\n [111070000, 1692706320000],\n [111080000, 1692728040000],\n [111090000, 1692774600000],\n [111100000, 1692797880000],\n [111110000, 1692829320000],\n [111120000, 1692868920000],\n [111130000, 1692889260000],\n [111140000, 1692931440000],\n [111150001, 1692962400000],\n [111160000, 1692981120000],\n [111170000, 1693022520000],\n [111180000, 1693048920000],\n [111190000, 1693066740000],\n [111200000, 1693105920000],\n [111210000, 1693130760000],\n [111220000, 1693146780000],\n [111230000, 1693179900000],\n [111240000, 1693216800000],\n [111250000, 1693236180000],\n [111260000, 1693280100000],\n [111270000, 1693310820000],\n [111280000, 1693332840000],\n [111290001, 1693380180000],\n [111300000, 1693403160000],\n [111310001, 1693428480000],\n [111320000, 1693468260000],\n [111330001, 1693487760000],\n [111340001, 1693510320000],\n [111350003, 1693555260000],\n [111360000, 1693576320000],\n [111370000, 1693607700000],\n [111380000, 1693640520000],\n [111390000, 1693661700000],\n [111400000, 1693689600000],\n [111410000, 1693722780000],\n [111420000, 1693743000000],\n [111430000, 1693762200000],\n [111440000, 1693810800000],\n [111450000, 1693834920000],\n [111460000, 1693869840000],\n [111470000, 1693908840000],\n [111480000, 1693928340000],\n [111490000, 1693974900000],\n [111500000, 1694004240000],\n [111510001, 1694033880000],\n [111520000, 1694077200000],\n [111530000, 1694098500000],\n [111540000, 1694140200000],\n [111550000, 1694171580000],\n [111560000, 1694190360000],\n [111570000, 1694231460000],\n [111580000, 1694257800000],\n [111590000, 1694274960000],\n [111600000, 1694314080000],\n [111610000, 1694338920000],\n [111620000, 1694356740000],\n [111630001, 1694395140000],\n [111640001, 1694430660000],\n [111650001, 1694450520000],\n [111660000, 1694498580000],\n [111670000, 1694524620000],\n [111680000, 1694557200000],\n [111690000, 1694599680000],\n [111700000, 1694619840000],\n [111710000, 1694667060000],\n [111720000, 1694696520000],\n [111730000, 1694729400000],\n [111740000, 1694770620000],\n [111750002, 1694790660000],\n [111760000, 1694830860000],\n [111770000, 1694860260000],\n [111780000, 1694879100000],\n [111790000, 1694919600000],\n [111800000, 1694946540000],\n [111810000, 1694963340000],\n [111820000, 1695001260000],\n [111830000, 1695029700000],\n [111840000, 1695048060000],\n [111850000, 1695086280000],\n [111860000, 1695122160000],\n [111870001, 1695141840000],\n [111880000, 1695189780000],\n [111890000, 1695215700000],\n [111900000, 1695247200000],\n [111910000, 1695287820000],\n [111920001, 1695308880000],\n [111930000, 1695352920000],\n [111940001, 1695384180000],\n [111950000, 1695404580000],\n [111960000, 1695445500000],\n [111970000, 1695469980000],\n [111980000, 1695487140000],\n [111990000, 1695526380000],\n [112000001, 1695552120000],\n [112010001, 1695568200000],\n [112020000, 1695611100000],\n [112030000, 1695643200000],\n [112040000, 1695667740000],\n [112050000, 1695716580000],\n [112060000, 1695739440000],\n [112070000, 1695781680000],\n [112080003, 1695816000000],\n [112090000, 1695842340000],\n [112100000, 1695891420000],\n [112110000, 1695913620000],\n [112120000, 1695959760000],\n [112130000, 1695989580000],\n [112140000, 1696011480000],\n [112150000, 1696053000000],\n [112160000, 1696076160000],\n [112170000, 1696093620000],\n [112180000, 1696132920000],\n [112190000, 1696157040000],\n [112200000, 1696172880000],\n [112210000, 1696214400000],\n [112220000, 1696246920000],\n [112230000, 1696269060000],\n [112240000, 1696318140000],\n [112250000, 1696341900000],\n [112260000, 1696381200000],\n [112270000, 1696417440000],\n [112280000, 1696436820000],\n [112290001, 1696485180000],\n [112300000, 1696511700000],\n [112310000, 1696544580000],\n [112320000, 1696585620000],\n [112330000, 1696605060000],\n [112340000, 1696645920000],\n [112350000, 1696674900000],\n [112360000, 1696694280000],\n [112370000, 1696735020000],\n [112380000, 1696762020000],\n [112390000, 1696779660000],\n [112400000, 1696819440000],\n [112410001, 1696845480000],\n [112420000, 1696863600000],\n [112430001, 1696902060000],\n [112440000, 1696936260000],\n [112450000, 1696956000000],\n [112460000, 1697004720000],\n [112470000, 1697031000000],\n [112480000, 1697066040000],\n [112490000, 1697105940000],\n [112500000, 1697126460000],\n [112510001, 1697174580000],\n [112520000, 1697201940000],\n [112530000, 1697231340000],\n [112540000, 1697268600000],\n [112550001, 1697290320000],\n [112560000, 1697320800000],\n [112570000, 1697353620000],\n [112580000, 1697373720000],\n [112590000, 1697394720000],\n [112600000, 1697443920000],\n [112610001, 1697466600000],\n [112620000, 1697508000000],\n [112630001, 1697543160000],\n [112640000, 1697568480000],\n [112650000, 1697616420000],\n [112660000, 1697639460000],\n [112670000, 1697680920000],\n [112680000, 1697714760000],\n [112690000, 1697737800000],\n [112700000, 1697785200000],\n [112710000, 1697808960000],\n [112720000, 1697841600000],\n [112730000, 1697876220000],\n [112740000, 1697896680000],\n [112750000, 1697930100000],\n [112760000, 1697962140000],\n [112770000, 1697981640000],\n [112780000, 1698013560000],\n [112790000, 1698055200000],\n [112800000, 1698074880000],\n [112810000, 1698120480000],\n [112820000, 1698151260000],\n [112830000, 1698182640000],\n [112840000, 1698225240000],\n [112850000, 1698246300000],\n [112860000, 1698291720000],\n [112870000, 1698323100000],\n [112880000, 1698353100000],\n [112890000, 1698397200000],\n [112900000, 1698418320000],\n [112910000, 1698456120000],\n [112920001, 1698487200000],\n [112930000, 1698505980000],\n [112940000, 1698545760000],\n [112950000, 1698572460000],\n [112960000, 1698590160000],\n [112970000, 1698627840000],\n [112980000, 1698662640000],\n [112990000, 1698678960000],\n [113000000, 1698713040000],\n [113010000, 1698742740000],\n [113020000, 1698756120000],\n [113030000, 1698767160000],\n [113040000, 1698803280000],\n [113050000, 1698834840000],\n [113060000, 1698853620000],\n [113070000, 1698897900000],\n [113080000, 1698928440000],\n [113090000, 1698954900000],\n [113100000, 1698994800000],\n [113110000, 1699017180000],\n [113120000, 1699047600000],\n [113130000, 1699083720000],\n [113140000, 1699104600000],\n [113150000, 1699132740000],\n [113160000, 1699167180000],\n [113170000, 1699187340000],\n [113180000, 1699207560000],\n [113190000, 1699256220000],\n [113200000, 1699279260000],\n [113210000, 1699317360000],\n [113220000, 1699354800000],\n [113230000, 1699374960000],\n [113240000, 1699425120000],\n [113250000, 1699451580000],\n [113260000, 1699491300000],\n [113270000, 1699528980000],\n [113280000, 1699553880000],\n [113290000, 1699604160000],\n [113300000, 1699626360000],\n [113310000, 1699660680000],\n [113320000, 1699692180000],\n [113330000, 1699711260000],\n [113340000, 1699743780000],\n [113350000, 1699775640000],\n [113360001, 1699795200000],\n [113370002, 1699822980000],\n [113380000, 1699867980000],\n [113390000, 1699889100000],\n [113400000, 1699937820000],\n [113410002, 1699968180000],\n [113420000, 1700005080000],\n [113430000, 1700045400000],\n [113440000, 1700067660000],\n [113450000, 1700119380000],\n [113460000, 1700143860000],\n [113470000, 1700185740000],\n [113480000, 1700219880000],\n [113490000, 1700240460000],\n [113500000, 1700283780000],\n [113510000, 1700308380000],\n [113520000, 1700327100000],\n [113530000, 1700368320000],\n [113540001, 1700392500000],\n [113550000, 1700408820000],\n [113560000, 1700455380000],\n [113570000, 1700484180000],\n [113580000, 1700511420000],\n [113590000, 1700557200000],\n [113600000, 1700578380000],\n [113610000, 1700619420000],\n [113620000, 1700652180000],\n [113630000, 1700672280000],\n [113640000, 1700716260000],\n [113650000, 1700742000000],\n [113660000, 1700766360000],\n [113670000, 1700814060000],\n [113680000, 1700836200000],\n [113690000, 1700875140000],\n [113700000, 1700905620000],\n [113710001, 1700924580000],\n [113720001, 1700963580000],\n [113730000, 1700990220000],\n [113740000, 1701008100000],\n [113750000, 1701043740000],\n [113760000, 1701081480000],\n [113770000, 1701101760000],\n [113780001, 1701151440000],\n [113790000, 1701178260000],\n [113800000, 1701213480000],\n [113810000, 1701252000000],\n [113820001, 1701271980000],\n [113830000, 1701317820000],\n [113840000, 1701347040000],\n [113850000, 1701369840000],\n [113860000, 1701416400000],\n [113870000, 1701438960000],\n [113880001, 1701473760000],\n [113890000, 1701505800000],\n [113900000, 1701526920000],\n [113910000, 1701562320000],\n [113920000, 1701592200000],\n [113930001, 1701610800000],\n [113940000, 1701641040000],\n [113950000, 1701683040000],\n [113960000, 1701703200000],\n [113970000, 1701748920000],\n [113980001, 1701780180000],\n [113990000, 1701810000000],\n [114000000, 1701853560000],\n [114010000, 1701874800000],\n [114020000, 1701918000000],\n [114030000, 1701949680000],\n [114040000, 1701973020000],\n [114050000, 1702022100000],\n [114060000, 1702044540000],\n [114070000, 1702081200000],\n [114080000, 1702113060000],\n [114090001, 1702132680000],\n [114100000, 1702169160000],\n [114110001, 1702197000000],\n [114120001, 1702215120000],\n [114130000, 1702242720000],\n [114140000, 1702285200000],\n [114150001, 1702306200000],\n [114160000, 1702347120000],\n [114170000, 1702379820000],\n [114180001, 1702398660000],\n [114190001, 1702446480000],\n [114200000, 1702472340000],\n [114210000, 1702501200000],\n [114220000, 1702544400000],\n [114230000, 1702565340000],\n [114240000, 1702607880000],\n [114250000, 1702639440000],\n [114260000, 1702657500000],\n [114270000, 1702698720000],\n [114280000, 1702724700000],\n [114290001, 1702742760000],\n [114300000, 1702783140000],\n [114310000, 1702809240000],\n [114320000, 1702825980000],\n [114330000, 1702869300000],\n [114340000, 1702901340000],\n [114350000, 1702926840000],\n [114360000, 1702974120000],\n [114370000, 1702995900000],\n [114380000, 1703035800000],\n [114390000, 1703070780000],\n [114400000, 1703091780000],\n [114410000, 1703140500000],\n [114420000, 1703166300000],\n [114430000, 1703202900000],\n [114440000, 1703240040000],\n [114450000, 1703259120000],\n [114460001, 1703301360000],\n [114470000, 1703329200000],\n [114480000, 1703346120000],\n [114490000, 1703381400000],\n [114500000, 1703404620000],\n [114510001, 1703419860000],\n [114520000, 1703431140000],\n [114530000, 1703461560000],\n [114540000, 1703491740000],\n [114550000, 1703508660000],\n [114560000, 1703523180000],\n [114570000, 1703565900000],\n [114580000, 1703593080000],\n [114590001, 1703614620000],\n [114600000, 1703659740000],\n [114610000, 1703683080000],\n [114620000, 1703712300000],\n [114630000, 1703751540000],\n [114640000, 1703772420000],\n [114650000, 1703806260000],\n [114660000, 1703838240000],\n [114670000, 1703857500000],\n [114680000, 1703885400000],\n [114690000, 1703920020000],\n [114700000, 1703940600000],\n [114710000, 1703958720000],\n [114720001, 1703993340000],\n [114730000, 1704013200000],\n [114740000, 1704027600000],\n [114750000, 1704035340000],\n [114760000, 1704046140000],\n [114770000, 1704074640000],\n [114780000, 1704095940000],\n [114790000, 1704116280000],\n [114800000, 1704144600000],\n [114810000, 1704179460000],\n [114820000, 1704201360000],\n [114830000, 1704226440000],\n [114840000, 1704262740000],\n [114850001, 1704283860000],\n [114860000, 1704301440000],\n [114870001, 1704345720000],\n [114880000, 1704370500000],\n [114890000, 1704390660000],\n [114900000, 1704435780000],\n [114910001, 1704458820000],\n [114920001, 1704480240000],\n [114930000, 1704520200000],\n [114940001, 1704542580000],\n [114950000, 1704559860000],\n [114960000, 1704600120000],\n [114970000, 1704624060000],\n [114980000, 1704640260000],\n [114990000, 1704677880000],\n [115000000, 1704705540000],\n [115010000, 1704723840000],\n [115020000, 1704761280000],\n [115030000, 1704797880000],\n [115040000, 1704817080000],\n [115050000, 1704865620000],\n [115060000, 1704892320000],\n [115070000, 1704925380000],\n [115080000, 1704966600000],\n [115090000, 1704987360000],\n [115100000, 1705034040000],\n [115110000, 1705062900000],\n [115120000, 1705088220000],\n [115130000, 1705127400000],\n [115140000, 1705150200000],\n [115150000, 1705174200000],\n [115160000, 1705211340000],\n [115170000, 1705232880000],\n [115180000, 1705249260000],\n [115190000, 1705295640000],\n [115200000, 1705323240000],\n [115210000, 1705351680000],\n [115220000, 1705395660000],\n [115230000, 1705417200000],\n [115240000, 1705458600000],\n [115250000, 1705491540000],\n [115260000, 1705512600000],\n [115270001, 1705560420000],\n [115280000, 1705584840000],\n [115290000, 1705619760000],\n [115300000, 1705658520000],\n [115310000, 1705677420000],\n [115320000, 1705717620000],\n [115330000, 1705745760000],\n [115340000, 1705763580000],\n [115350000, 1705801500000],\n [115360000, 1705827600000],\n [115370001, 1705844940000],\n [115380000, 1705874220000],\n [115390000, 1705914060000],\n [115400000, 1705934700000],\n [115410000, 1705974600000],\n [115420000, 1706008320000],\n [115430001, 1706028060000],\n [115440000, 1706076000000],\n [115450000, 1706101200000],\n [115460000, 1706131260000],\n [115470000, 1706173620000],\n [115480000, 1706194020000],\n [115490000, 1706235000000],\n [115500000, 1706267880000],\n [115510000, 1706287200000],\n [115520000, 1706328960000],\n [115530000, 1706354460000],\n [115540000, 1706372400000],\n [115550000, 1706411160000],\n [115560001, 1706435580000],\n [115570000, 1706452800000],\n [115580000, 1706490120000],\n [115590000, 1706525160000],\n [115600000, 1706544300000],\n [115610000, 1706590440000],\n [115620000, 1706618580000],\n [115630000, 1706644080000],\n [115640002, 1706688540000],\n [115650000, 1706709660000],\n [115660000, 1706742600000],\n [115670000, 1706781120000],\n [115680000, 1706800380000],\n [115690000, 1706843580000],\n [115700000, 1706873700000],\n [115710000, 1706892000000],\n [115720000, 1706932800000],\n [115730000, 1706958180000],\n [115740000, 1706974920000],\n [115750000, 1707013080000],\n [115760000, 1707037980000],\n [115770000, 1707055560000],\n [115780000, 1707087900000],\n [115790000, 1707126300000],\n [115800000, 1707145380000],\n [115810000, 1707187440000],\n [115820002, 1707219360000],\n [115830000, 1707241740000],\n [115840000, 1707289500000],\n [115850001, 1707313260000],\n [115860000, 1707345720000],\n [115870000, 1707385380000],\n [115880000, 1707405120000],\n [115890000, 1707448620000],\n [115900000, 1707478860000],\n [115910000, 1707497040000],\n [115920000, 1707537540000],\n [115930000, 1707562800000],\n [115940000, 1707580200000],\n [115950000, 1707618900000],\n [115960000, 1707645300000],\n [115970000, 1707663600000],\n [115980000, 1707700140000],\n [115990000, 1707728520000],\n [116000000, 1707747540000],\n [116010000, 1707784200000],\n [116020000, 1707821160000],\n [116030001, 1707837840000],\n [116040000, 1707870660000],\n [116050000, 1707899940000],\n [116060000, 1707915180000],\n [116070000, 1707928140000],\n [116080000, 1707968520000],\n [116090000, 1707998040000],\n [116100000, 1708018020000],\n [116110000, 1708065660000],\n [116120001, 1708089000000],\n [116130000, 1708117380000],\n [116140000, 1708153920000],\n [116150000, 1708175340000],\n [116160000, 1708200180000],\n [116170000, 1708235880000],\n [116180000, 1708256460000],\n [116190000, 1708272000000],\n [116200000, 1708315800000],\n [116210000, 1708344360000],\n [116220000, 1708364700000],\n [116230000, 1708411680000],\n [116240000, 1708434960000],\n [116250000, 1708464960000],\n [116260000, 1708505700000],\n [116270000, 1708525800000],\n [116280000, 1708560000000],\n [116290000, 1708594920000],\n [116300000, 1708612320000],\n [116310000, 1708647120000],\n [116320000, 1708677480000],\n [116330000, 1708696140000],\n [116340000, 1708725780000],\n [116350000, 1708759320000],\n [116360000, 1708780620000],\n [116370000, 1708805280000],\n [116380000, 1708841100000],\n [116390000, 1708861560000],\n [116400001, 1708877400000],\n [116410001, 1708921680000],\n [116420001, 1708950000000],\n [116430000, 1708973100000],\n [116440001, 1709021280000],\n [116450000, 1709043360000],\n [116460000, 1709081940000],\n [116470000, 1709116980000],\n [116480000, 1709135400000],\n]\n","// 生成 csv 文件\n// csv 文件结构参考 https://www.jianshu.com/p/54b3afc06126\n\ntype CSVData = any[][]\n\nconst example: CSVData = [\n ['titleA', 'titleB', 'titleC'],\n ['a1', 'b1', 'c1'],\n [[1, 2, 3], false, 456],\n [undefined, 'b,b,b', 'c c c'],\n]\n\n// 每一项数据可以是任何类型(any)。如果它不是 String,它会被自动转换为 String。\n// 自动转换的结果可能不符合你的预期。如果你要完全控制输出的内容,你应该自己把内容全部转换成字符串,再传递到这个类里。\n// 这个类会自动处理需要添加双引号的情况,所以你不用自己添加双引号。\n// 如果某个数据是 Array,它不应该包含:1. 嵌套的数组;2. Symbol 类型的数据。\n\nclass CreateCSV {\n constructor() {\n this.utf8BOM = this.UTF8BOM()\n }\n\n private readonly separate = ',' // 分隔符\n private readonly CRLF = '\\r\\n' // 换行符\n private utf8BOM: ArrayBuffer // 在文件头添加 UTF-8 BOM ,避免中文乱码。因为没有 BOM 的话 Excel 会以 ANSI 编码打开文件,导致中文乱码\n private reg = / |\\\"|,|\\n/ // 判断字符串是否需要添加双引号\n // 需要双引号包裹的情况:含有逗号、换行符、空格、双引号。\n // 全角符号不需要添加双引号。\n\n // 格式化每一行的数据\n private format(arr: any[]) {\n const rowData: string[] = []\n // 格式化这一行里每一列的数据\n for (let i = 0; i < arr.length; i++) {\n let colData: string = ''\n\n const origin = arr[i]\n const type = typeof origin\n\n // 把每一列的数据转换成字符串\n switch (type) {\n case 'string':\n colData = origin\n break\n case 'bigint':\n case 'number':\n case 'boolean':\n case 'function':\n colData = origin.toString()\n break\n case 'undefined':\n colData = ''\n break\n case 'symbol':\n colData = origin.description || ''\n break\n case 'object':\n if (origin === null) {\n colData = ''\n } else if (Array.isArray(origin)) {\n colData = (origin as any[]).join(this.separate)\n }\n break\n default:\n throw new Error('Unkown data type')\n }\n\n // 值原本就有的双引号,要替换成两个双引号\n colData = colData.replace(/\\\"/g, '\"\"')\n // 用双引号包裹这个值\n if (this.reg.test(colData)) {\n colData = this.addQuotation(colData)\n }\n\n rowData.push(colData)\n }\n return rowData\n }\n\n public create(data: CSVData) {\n // 储存结果。每行的结果合并为一个字符串\n const result: string[] = []\n\n // 在顶部添加 utf8BOM\n result.push(this.utf8BOM as unknown as string)\n\n // 添加每一行的数据和换行符\n for (const row of data) {\n result.push(this.format(row).join(this.separate))\n result.push(this.CRLF)\n }\n\n const csvBlob = new Blob(result, {\n type: 'text/csv',\n })\n return csvBlob\n }\n\n private UTF8BOM() {\n const buff = new ArrayBuffer(3)\n const data = new DataView(buff)\n data.setInt8(0, 0xef)\n data.setInt8(1, 0xbb)\n data.setInt8(2, 0xbf)\n return buff\n }\n\n // 在字符串的两端添加双引号\n public addQuotation(str: string) {\n return '\"' + str + '\"'\n }\n}\n\nconst createCSV = new CreateCSV()\n// createCSV.create(example)\nexport { createCSV }\n","// 格式化日期(和时间)\nclass DateFormat {\n // format 参数可以由以下格式组合:\n /*\n YYYY\n YY\n MM\n MMM\n MMMM\n DD\n hh\n mm\n ss\n */\n // 区分大小写;可以添加空格或其他符号;不要使用上面未包含的格式。\n // 参考资料:\n // https://www.w3.org/TR/NOTE-datetime\n // https://en.wikipedia.org/wiki/Date_format_by_country\n public static format(\n date: string | number | Date,\n format: string = 'YYYY-MM-DD'\n ) {\n // 生成年、月、日、时、分、秒\n const _date = new Date(date)\n const YYYY = _date.getFullYear().toString()\n const YY = YYYY.substring(YYYY.length - 2, YYYY.length)\n const MM = (_date.getMonth() + 1).toString().padStart(2, '0')\n const MMM = this.months[_date.getMonth()]\n const MMMM = this.Months[_date.getMonth()]\n const DD = _date.getDate().toString().padStart(2, '0')\n const hh = _date.getHours().toString().padStart(2, '0')\n const mm = _date.getMinutes().toString().padStart(2, '0')\n const ss = _date.getSeconds().toString().padStart(2, '0')\n // 对格式字符串进行替换\n let r = format\n r = r.replace('YYYY', YYYY)\n r = r.replace('YY', YY)\n r = r.replace('MMMM', MMMM)\n r = r.replace('MMM', MMM)\n r = r.replace('MM', MM)\n r = r.replace('DD', DD)\n r = r.replace('hh', hh)\n r = r.replace('mm', mm)\n r = r.replace('ss', ss)\n\n return r\n }\n\n private static readonly months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec',\n ]\n\n private static readonly Months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ]\n}\n\nexport { DateFormat }\n","// 封装操作 IndexedDB 的一些公共方法,仅满足本程序使用,并不完善\nclass IndexedDB {\n public db: IDBDatabase | undefined\n\n public async open(\n DBName: string,\n DBVer: number,\n onUpgrade?: (db: IDBDatabase) => void\n ) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(DBName, DBVer)\n\n request.onupgradeneeded = (ev) => {\n if (onUpgrade) {\n onUpgrade(request.result)\n }\n }\n\n request.onsuccess = (ev) => {\n this.db = request.result\n resolve(request.result)\n }\n\n request.onerror = (ev) => {\n console.error('open indexDB failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async add(storeNames: string, data: object) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .add(data)\n\n r.onsuccess = (ev) => {\n resolve(ev)\n }\n r.onerror = (ev) => {\n console.error(`add failed in ${storeNames}`, data)\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async put(storeNames: string, data: object) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .put(data)\n r.onsuccess = (ev) => {\n resolve(ev)\n }\n r.onerror = (ev) => {\n console.error('put failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n // 向一个存储库中批量添加数据\n public async batchAddData(storeName: string, dataList: any[], key: any) {\n return new Promise(async (resolve, reject) => {\n if (dataList.length === 0) {\n resolve()\n }\n\n // 获取已存在的 key\n let existedKeys: string[] = (await this.getAllKeys(storeName)) as string[]\n\n // 使用事务\n const tr = this.db?.transaction(storeName, 'readwrite')\n if (!tr) {\n throw new Error(`transaction ${storeName} is undefined`)\n }\n const store = tr.objectStore(storeName)\n\n tr.oncomplete = () => {\n resolve()\n }\n\n tr.onerror = (err) => {\n console.error(err)\n console.trace()\n reject(err)\n }\n\n for (const data of dataList) {\n await insert(data)\n }\n\n async function insert(data: any) {\n return new Promise((resolve, reject) => {\n // 如果 key 已存在,则使用 put\n const type: 'add' | 'put' = existedKeys.includes(data[key])\n ? 'put'\n : 'add'\n\n const request = store[type](data)\n\n request.onsuccess = () => {\n resolve()\n }\n\n request.onerror = (err) => {\n reject(err)\n }\n })\n }\n })\n }\n\n // 如果没有找到对应的记录,则返回 null\n public async get(storeNames: string, key: any, index?: string) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const store = this.db\n .transaction(storeNames, 'readonly')\n .objectStore(storeNames)\n\n let r: IDBRequest\n\n if (index !== undefined) {\n const i = store.index(index)\n r = i.get(key)\n } else {\n r = store.get(key)\n }\n\n r.onsuccess = (ev) => {\n const data = r.result\n resolve(data ? data : null)\n }\n\n r.onerror = (ev) => {\n console.error('get failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async getAll(storeNames: string) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .getAll()\n\n r.onsuccess = (ev) => {\n const data = r.result\n if (data) {\n resolve(data)\n }\n resolve(data ? data : null)\n }\n r.onerror = (ev) => {\n console.error('getAll failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async getAllKeys(storeNames: string) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readonly')\n .objectStore(storeNames)\n .getAllKeys()\n\n r.onsuccess = (ev) => {\n const data = r.result\n resolve(data ? data : null)\n }\n r.onerror = (ev) => {\n console.error('getAllKeys failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async delete(storeNames: string, key: number) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .delete(key)\n\n r.onsuccess = (ev) => {\n resolve(ev)\n }\n r.onerror = (ev) => {\n console.error('delete failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async clear(storeNames: string) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .clear()\n\n r.onsuccess = (ev) => {\n resolve()\n }\n r.onerror = (ev) => {\n console.error('clear failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async openCursor(\n storeNames: string,\n CB: (c: IDBCursorWithValue | null) => void\n ) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames)\n .objectStore(storeNames)\n .openCursor()\n\n r.onsuccess = (ev) => {\n CB(r.result)\n resolve() // 这个 resolve 会在 cb 执行一次之后就触发\n }\n r.onerror = (ev) => {\n console.error('openCursor failed')\n console.trace()\n reject(ev)\n }\n })\n }\n}\n\nexport { IndexedDB }\n","// 可以用字母和数字组成隐藏口令,注册到这个模块,当用户输入隐藏口令时执行回调函数\nclass SecretSignal {\n constructor() {\n this.bindEvents()\n }\n\n private list: {\n code: string\n cb: Function\n }[] = []\n\n // 允许的按键:字母键,数字键,小键盘数字键\n // \"KeyX\"\n // \"Digit9\"\n // \"Numpad1\"\n private codePrefix = ['Key', 'Digit', 'Numpad']\n\n private input = ''\n\n public register(code: string, cb: Function) {\n this.list.push({\n code,\n cb,\n })\n }\n\n private bindEvents() {\n window.addEventListener('keydown', (ev) => {\n // 不保存控制按键,不保存输入状态中的按键\n if (\n !ev.code ||\n ev.altKey ||\n ev.ctrlKey ||\n ev.metaKey ||\n ev.shiftKey ||\n ev.isComposing\n ) {\n return\n }\n\n // 保存字母和数字的按键\n for (const prefix of this.codePrefix) {\n if (\n ev.code.startsWith(prefix) &&\n ev.code.length === prefix.length + 1\n ) {\n // 如果字符串长度超过限制,则移除前面的一部分字符\n if (this.input.length > 99) {\n this.input = this.input.slice(80)\n }\n const key = ev.code[ev.code.length - 1].toLowerCase()\n this.input += key\n this.check()\n }\n }\n })\n }\n\n private check() {\n for (const item of this.list) {\n if (this.input.endsWith(item.code)) {\n item.cb()\n }\n }\n }\n}\n\nconst secretSignal = new SecretSignal()\nexport { secretSignal }\n","class Utils {\n // 不安全的字符,这里多数是控制字符,需要替换掉\n static unsafeStr = new RegExp(\n /[\\u0000\\u0001-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0605\\u061c\\u06dd\\u070f\\u08e2\\u180e\\u200b-\\u200f\\u202a-\\u202e\\u2060-\\u2064\\u2066-\\u206f\\ufdd0-\\ufdef\\ufeff\\ufff9-\\ufffb\\ufffe\\uffff]/g\n )\n\n // 一些需要替换成全角字符的符号,左边是正则表达式的字符\n static readonly fullWidthDict: string[][] = [\n ['\\\\\\\\', '\'],\n ['/', '/'],\n [':', ':'],\n ['\\\\?', '?'],\n ['\"', '"'],\n ['<', '<'],\n ['>', '>'],\n ['\\\\*', '*'],\n ['\\\\|', '|'],\n ['~', '~'],\n ]\n\n // reg 预先创建,而不是运行时创建,因为运行时重复创建太多次了\n\n // 用正则去掉不安全的字符\n static replaceUnsafeStr(str: string) {\n str = str.replace(this.unsafeStr, '')\n // 把一些特殊字符替换成全角字符\n for (let index = 0; index < this.fullWidthDict.length; index++) {\n const rule = this.fullWidthDict[index]\n const reg = new RegExp(rule[0], 'g')\n str = str.replace(reg, rule[1])\n }\n return str\n }\n\n /** Windows 保留文件名,不可单独作为文件名,不区分大小写 */\n static readonly windowsReservedNames = [\n 'CON',\n 'PRN',\n 'AUX',\n 'NUL',\n 'COM1',\n 'LPT1',\n 'LPT2',\n 'LPT3',\n 'COM2',\n 'COM3',\n 'COM4',\n ]\n\n /** 检查并处理 Windows 保留文件名。\n * 如果不传递可选参数,则将其替换为空字符串。\n * 如果传递了可选参数,则在其后添加传递的可选参数的值 */\n static handleWindowsReservedName(str: string, addStr?: string) {\n for (const name of this.windowsReservedNames) {\n if (str.toUpperCase() === name) {\n return addStr ? str + addStr : ''\n }\n if (str.toUpperCase().startsWith(name + '.')) {\n return str.replace(/\\./g, '.')\n }\n }\n\n return str\n }\n\n // 对象深拷贝\n static deepCopy(data: T): T {\n if (data === null || typeof data !== 'object') {\n return data\n }\n\n const result = (Array.isArray(data) ? [] : {}) as any\n\n for (const [key, value] of Object.entries(data)) {\n result[key] =\n data === null || typeof data !== 'object' ? value : this.deepCopy(value)\n }\n\n return result\n }\n\n // 字符串分割成数组\n static string2array(str: string): string[] {\n str = str.replace(/\\n/g, '') // textarea 的值可能会存在换行符\n const temp = str.trim().split(',')\n const result = []\n for (const str of temp) {\n if (str !== '') {\n result.push(str.trim())\n }\n }\n return result\n }\n\n // 依据对象某个属性的值(视为数字)来排序对象数组。默认降序排列\n static sortByProperty(key: string, order: 'desc' | 'asc' = 'desc') {\n return function (a: any, b: any) {\n // 排序的内容有时可能是字符串,需要转换成数字排序\n // 有些空字符串或者特殊字符可能转换后是 NaN,将其替换为 0\n const value1 =\n (typeof a[key] === 'number' ? a[key] : parseFloat(a[key])) || 0\n const value2 =\n (typeof b[key] === 'number' ? b[key] : parseFloat(b[key])) || 0\n\n if (value2 < value1) {\n return order === 'desc' ? -1 : 1\n } else if (value2 > value1) {\n return order === 'desc' ? 1 : -1\n } else {\n return 0\n }\n }\n }\n\n // 创建 input 元素选择 json 文件\n static async loadJSONFile(): Promise {\n return new Promise((resolve, reject) => {\n const i = document.createElement('input')\n i.setAttribute('type', 'file')\n i.setAttribute('accept', 'application/json')\n i.onchange = () => {\n if (i.files && i.files.length > 0) {\n // 读取文件内容\n const file = new FileReader()\n file.readAsText(i.files[0])\n file.onload = () => {\n const str = file.result as string\n let result: T\n try {\n result = JSON.parse(str)\n // if((result as any).constructor !== Object){\n // 允许是对象 {} 或者数组 []\n if (result === null || typeof result !== 'object') {\n const msg = 'Data is not an object!'\n return reject(new Error(msg))\n }\n return resolve(result)\n } catch (error) {\n const msg = 'JSON parse error!'\n return reject(new Error(msg))\n }\n }\n }\n }\n\n i.click()\n })\n }\n\n // 创建 input 元素选择文件\n static async selectFile(accept?: string) {\n return new Promise((resolve, reject) => {\n const i = document.createElement('input')\n i.setAttribute('type', 'file')\n if (accept) {\n i.setAttribute('accept', accept)\n }\n i.onchange = () => {\n if (i.files && i.files.length > 0) {\n return resolve(i.files)\n } else {\n return reject()\n }\n }\n\n i.click()\n })\n }\n\n // 通过创建 a 标签来下载文件\n static downloadFile(url: string, fileName: string) {\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n a.click()\n\n if (url.startsWith('blob')) {\n URL.revokeObjectURL(url)\n }\n }\n\n // 判断当前页面是否属于 pixiv.net\n static isPixiv() {\n return window.location.host.endsWith('.pixiv.net')\n }\n\n // 从 url 中获取指定的查询字段的值\n // 注意:返回值经过 encodeURIComponent 编码!\n static getURLSearchField(url: string, query: string) {\n const result = new URL(url).searchParams.get(query)\n if (result !== null) {\n return encodeURIComponent(result)\n } else {\n return ''\n }\n }\n\n /**获取 URL path 中,某个路径名称后面的字符串。适用于符合 RESTful API 风格的路径\n *\n * 注意:传入的是 path,而不是整个 URL\n */\n // 例如:\n // https://www.pixiv.net/users/27482064/following/%E9%83%A8%E5%88%86%E5%96%9C%E6%AC%A2\n // 查询 'users' 返回 '27482064'\n // 因为 location.pathname 传入的字符串是浏览器自动编码过的,所以返回的字符串也是编码过的\n static getURLPathField(path: string, query: string) {\n const array = path.split('/')\n const index = array.findIndex((str) => str === query)\n if (index === -1) {\n return ''\n }\n return array[index + 1] || ''\n }\n\n // 获取指定元素里,可见的结果\n static getVisibleEl(selector: string) {\n const list: NodeListOf = document.querySelectorAll(selector)\n return Array.from(list).filter((el) => {\n return el.style.display !== 'none'\n })\n }\n\n // 删除 DOM 元素,或者 DOM 元素列表\n static removeEl(el: NodeListOf | HTMLElement) {\n if (!el) {\n return\n }\n if (Reflect.has(el, 'length')) {\n // 如果有 length 属性则循环删除。\n ;(el as NodeListOf).forEach((el) => {\n if (el.parentNode) {\n el.parentNode.removeChild(el)\n }\n })\n } else {\n // 没有 length 属性的直接删除(querySelector 的返回值是 HTMLElement)\n const parent = (el as HTMLElement).parentNode\n if (parent) {\n parent.removeChild(el as HTMLElement)\n }\n }\n }\n\n // 切换 DOM 元素的可见性\n // 第二个参数设置显示时的 display,默认是 block,如果要设置为其他类型,则需要指定第二个参数\n static toggleEl(el: HTMLElement, showDisplay: string = 'block') {\n el.style.display = el.style.display === showDisplay ? 'none' : showDisplay\n }\n\n // 动态添加 css 样式\n static addStyle(css: string) {\n const e = document.createElement('style')\n e.innerHTML = css\n document.body.append(e)\n }\n\n // 加载一个图片,当 onload 事件发生之后返回 img 元素\n static async loadImg(url: string) {\n return new Promise((resolve, reject) => {\n const img = new Image()\n img.src = url\n img.onload = function () {\n resolve(img)\n }\n img.onerror = () => {\n reject(new Error(`Load image error! url: ${url}`))\n }\n })\n }\n\n // 加载图片并在获取到其宽高之后立即返回宽高数值。不需要等待图片加载完毕\n // 请求出错时,返回值的宽高都是 0\n static async getImageSize(url: string): Promise<{\n width: number\n height: number\n }> {\n return new Promise((resolve) => {\n let timer = 0\n const img = new Image()\n\n // 在 Chrome 中图片请求的超时时间是 30 秒\n // 如果请求超时,则直接返回\n img.onerror = () => {\n window.clearInterval(timer)\n return resolve({\n width: 0,\n height: 0,\n })\n }\n\n img.src = url\n timer = window.setInterval(() => {\n if (img.naturalWidth > 0) {\n window.clearInterval(timer)\n const wh = {\n width: img.naturalWidth,\n height: img.naturalHeight,\n }\n img.src = ''\n return resolve(wh)\n }\n }, 50)\n })\n }\n\n /**JSON 转换成 Blob 对象。如果数据量可能比较大,则不应该使用这个方法 */\n static json2Blob(data: any) {\n const str = JSON.stringify(data, null, 2)\n const blob = new Blob([str], { type: 'application/json' })\n return blob\n }\n\n /**把 JSON 转换成 Blob 对象。可以处理更大的数据量,并且导出的单个文件体积不会超过 500 MB */\n static async json2BlobSafe(data: any[]): Promise<\n {\n url: string\n total: number\n }[]\n > {\n return new Promise((resolve) => {\n // 限制单个文件的体积上限为 500 MB\n const fileByteLengthLimit = 524288000\n\n const result: {\n url: string\n total: number\n }[] = []\n\n // 在这个数组里储存数组字面量\n let JSONStringArray: string[] = []\n\n const length = data.length\n\n let index = 0\n let total = 0\n let bytelength = 0\n let startNewFile = true\n const textEncode = new TextEncoder()\n\n while (index < length) {\n // 添加数组的开始符号\n if (startNewFile) {\n startNewFile = false\n JSONStringArray.push('[')\n bytelength = bytelength + 1\n }\n\n // 循环添加每一项数据\n const string = JSON.stringify(data[index])\n JSONStringArray.push(string)\n JSONStringArray.push(',')\n bytelength = bytelength + textEncode.encode(string).length + 1\n\n index++\n total++\n\n // 分割文件\n if (index === length || bytelength >= fileByteLengthLimit) {\n // 删除最后一个分隔符,否则会导致格式错误\n JSONStringArray.pop()\n // 添加数组的结束符号\n JSONStringArray.push(']')\n\n // 生成文件数据\n const blob = new Blob(JSONStringArray, { type: 'application/json' })\n const url = URL.createObjectURL(blob)\n result.push({\n url,\n total,\n })\n\n // 重置变量\n startNewFile = true\n bytelength = 0\n total = 0\n JSONStringArray = []\n }\n }\n\n return resolve(result)\n })\n }\n\n /**防抖 */\n static debounce(func: Function, wait: number) {\n // 默认的定时器 id 不能使用有意义的数字,否则 clearTimeout 可能会错误的清除其他定时器\n let timer: number | undefined = undefined\n const context = this\n return function () {\n const args = arguments\n window.clearTimeout(timer)\n timer = window.setTimeout(func.bind(context, ...args), wait)\n }\n }\n\n /**节流 */\n static throttle(func: Function, delay: number) {\n let time = 0\n const context = this\n return function () {\n const args = arguments\n const now = new Date().getTime()\n if (now - time >= delay) {\n time = now\n return func.apply(context, args)\n }\n }\n }\n\n /**用 URL 里的后缀名替换 originName 的后缀名\n *\n * 例如传入参数 123.txt, https://.../123.jpg\n *\n * 返回 123.jpg\n */\n static replaceSuffix(originName: string, url: string) {\n const nameArray = originName.split('.')\n const urlArray = url.split('.')\n nameArray[nameArray.length - 1] = urlArray[urlArray.length - 1]\n return nameArray.join('.')\n }\n\n /**获取后缀名 */\n static getSuffix(name: string) {\n const nameArray = name.split('.')\n return nameArray[nameArray.length - 1]\n }\n\n /**替换换行标签,移除 html 标签 */\n static htmlToText(str: string) {\n // 这里有两种换行标签:\n //
        这是 Pixiv 的 API 返回的,比如作品简介里的换行\n //
        这是现代标准的换行标签,从元素的 innerHTML 属性获取的换行是这样的\n return str\n .replace(/
        /g, '\\n')\n .replace(/
        /g, '\\n')\n .replace(/<\\/?.+?>/g, '')\n }\n\n /**将 html 代码转换成纯文本(innerText) */\n static htmlToTextWrong(str: string) {\n const div = document.createElement('div')\n div.innerHTML = str\n // 如果使用这个方法,那么必须将创建的这个元素添加到页面上,然后才能获取其 innerText\n // 如果不 append 到页面,而是直接获取 innerText,那么不会有换行标记 \\n\n // 这可能是因为如果一个元素只存在于内存里,而没有添加到页面上进行渲染的话,浏览器会忽略换行标记\n document.body.append(div)\n\n return div.innerText\n }\n\n /**将可能包含有 HTML 转义字符的字符串进行反转义 */\n // 例如输入 \"1,2,3,4'5'6'\"\n // 输出 \"1,2,3,4'5'6'\"\n static htmlDecode(str: string) {\n const div = document.createElement('div')\n div.innerHTML = str\n // 注意,输出的是 innerHTML 而非 innerText\n // 原因 1:如果不将生成的元素添加到页面上,而是直接获取 innerText 的话,是没有换行标签的\n // 原因 2:innerHTML 可以保持换行等标签依然是 html 标签
        \n // 但通过 innerText 获取的换行是 \\n ,这会导致输入和输出的类型不一样,所以不使用 innerText\n return div.innerHTML\n }\n\n static sleep(time: number) {\n return new Promise((res) => window.setTimeout(res, time))\n }\n}\n\nexport { Utils }\n","// 把图片转换成 icon 文件\n// icon 文件结构 https://www.cnblogs.com/cswuyg/p/3603707.html\n\ntype SizeNumber = 16 | 32 | 48 | 96 | 128 | 256 | 512\n\ntype ImageURL = string\n\ninterface Opt {\n source: ImageURL | File\n size: SizeNumber[]\n shape: 'square' | 'circle' | 'fillet'\n bleed: boolean\n}\n\ninterface PngData {\n size: SizeNumber\n buffer: ArrayBuffer\n}\n\n// 输入选项\n// source 图片的 url,或者一个图片文件(如果使用了图片 url,请注意跨域策略的影响)\n// size 尺寸,可以同时使用多个尺寸。你也可以使用自定义尺寸。\n// shape 指定图标的形状。square 正方形,circle 圆形,fillet 带有圆角的正方形\n// bleed 留白,仅当形状是圆角正方形时生效,可以使图片周围有一些留白。\n\n// 输出\n// 转换成功后,返回 icon 文件的 Blob 对象\n// 生成的 icon 总是正方形(长和宽相等)。如果图片的长度和宽度不相等,则会以窄边作为基准,从窄边开始裁剪出一个正方形\n// 生成的 icon 可以包含多种尺寸的图标。图标都是 32 位 png 图像。\n\nclass ImageToIcon {\n public async convert(opt: Opt) {\n return new Promise(async (resolve, reject) => {\n // 加载图片\n const img = await this.loadImage(opt.source)\n // 生成各尺寸的 png 图像的数据\n const pngDataArray = await this.createPngBuffer(\n img,\n opt.size,\n opt.shape,\n opt.bleed\n )\n // 创建 ico 文件\n const blob = this.createIcon(pngDataArray)\n\n resolve(blob)\n })\n }\n\n private async convertImageURL(source: Opt['source']) {\n return new Promise(async (resolve, reject) => {\n if (typeof source === 'string') {\n // 请求图片,并为其生成 BlobURL,解决图片跨域导致 canvas 污染的问题\n const res = await fetch(source, {\n method: 'get',\n credentials: 'same-origin',\n })\n const blob = await res.blob()\n resolve(URL.createObjectURL(blob))\n } else if (source instanceof File) {\n resolve(URL.createObjectURL(source))\n } else {\n reject('Unrecognized opt.source')\n }\n })\n }\n\n private async loadImage(source: Opt['source']) {\n return new Promise(async (resolve, reject) => {\n let imgURL = await this.convertImageURL(source)\n\n const i = document.createElement('img')\n i.src = imgURL\n i.onload = function () {\n resolve(i)\n }\n })\n }\n\n private async createPngBuffer(\n img: HTMLImageElement,\n size: SizeNumber[] = [16, 48, 96, 256],\n shape: Opt['shape'] = 'square',\n bleed = true\n ) {\n return new Promise(async (resolve, reject) => {\n const buffer: PngData[] = []\n let length = size.length\n\n while (length > 0) {\n const sizeNumber = size[size.length - length]\n const canvas = this.createCanvas(sizeNumber, img)\n // 绘制图像\n this.drawImage(canvas, img, shape, bleed)\n // 把图像转换为 png 图像\n const pngBlob = await this.getPngBlob(canvas)\n // 获取 png 图像的 buffer\n const buf = await pngBlob.arrayBuffer()\n buffer.push({\n size: sizeNumber,\n buffer: buf,\n })\n\n length--\n\n if (length === 0) {\n resolve(buffer)\n }\n }\n })\n }\n\n private createCanvas(size: number, img: HTMLImageElement) {\n const c = document.createElement('canvas')\n c.width = size\n c.height = size\n return c\n }\n\n private drawImage(\n canvas: HTMLCanvasElement,\n img: HTMLImageElement,\n shape: Opt['shape'],\n bleed = true\n ) {\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n console.error('draw error: ctx is null')\n return\n }\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n // 计算图像被绘制的宽高。比较短的一边占满画布,比较长的一边则根据比例计算绘制的部分\n let dw = 0\n let dh = 0\n // 竖图\n if (img.naturalWidth < img.naturalHeight) {\n dw = canvas.width\n dh = (dw / img.naturalWidth) * img.naturalHeight\n } else {\n // 横图\n dh = canvas.height\n dw = (dh / img.naturalHeight) * img.naturalWidth\n }\n\n // 绘制方形\n if (shape === 'square') {\n ctx.drawImage(img, 0, 0, dw, dh)\n }\n\n // 绘制圆形\n if (shape === 'circle') {\n let circle = {\n x: canvas.width / 2,\n y: canvas.width / 2,\n r: canvas.width / 2,\n }\n ctx.save()\n ctx.beginPath()\n ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, false)\n ctx.clip()\n ctx.drawImage(img, 0, 0, dw, dh)\n ctx.restore()\n }\n\n // 绘制圆角矩形\n if (shape === 'fillet') {\n let x = 0\n let y = 0\n // 当图标尺寸大于 16 时,设置留白距离\n if (bleed && canvas.width > 16) {\n let num = 10 / 256 // 规定留白的比例,即尺寸为 256 时四周留白均为 10 px\n x = Math.ceil(num * canvas.width)\n y = Math.ceil(num * canvas.width)\n }\n // 去掉留白后,最后要保存的图片区域的宽高\n const w = canvas.width - x * 2\n const h = canvas.height - y * 2\n // 圆角的半径,设置为保留区域宽高的 1/8\n const r = Math.floor(w / 8)\n\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.arcTo(x + w, y, x + w, y + h, r)\n ctx.arcTo(x + w, y + h, x, y + h, r)\n ctx.arcTo(x, y + h, x, y, r)\n ctx.arcTo(x, y, x + w, y, r)\n ctx.closePath()\n ctx.clip()\n ctx.drawImage(img, 0, 0, dw, dh)\n }\n\n return ctx\n }\n\n private async getPngBlob(canvas: HTMLCanvasElement) {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (!blob) {\n reject('blob is null')\n } else {\n resolve(blob)\n }\n })\n })\n }\n\n private createIcon(pngData: PngData[]) {\n const fileData: ArrayBuffer[] = []\n\n const fileHeadSize = 6\n\n // icon 文件头\n const fileHead = new ArrayBuffer(fileHeadSize)\n const v1 = new DataView(fileHead)\n v1.setInt16(0, 0, true) // idReserved\n v1.setInt16(2, 1, true) // idType\n v1.setInt16(4, pngData.length, true) // idCount\n fileData.push(fileHead)\n\n // 添加 icon 文件入口\n const entrySize = 16\n const entryTotalSize = entrySize * pngData.length\n let fileOffset = fileHeadSize + entryTotalSize\n let fileLength = 0\n\n for (const d of pngData) {\n fileOffset += fileLength\n\n const entry = new ArrayBuffer(entrySize)\n const v2 = new DataView(entry)\n v2.setInt8(0, d.size) // Width, in pixels, of the image\n v2.setInt8(1, d.size) // Height, in pixels, of the image\n v2.setInt8(2, 0) // Number of colors in image (0 if >=8bpp)\n v2.setInt8(3, 0) // Reserved ( must be 0)\n v2.setInt16(4, 1, true) // Color Planes\n v2.setInt16(6, 32, true) // Bits per pixel\n v2.setInt32(8, d.buffer.byteLength, true) // How many bytes in this resource?\n v2.setInt32(12, fileOffset, true) // Where in the file is this image?\n\n fileData.push(entry)\n\n fileLength = d.buffer.byteLength\n }\n\n // 添加 png 数据\n for (const d of pngData) {\n fileData.push(d.buffer)\n }\n\n // 生成 blob 对象\n return new Blob(fileData, {\n type: 'image/vnd.microsoft.icon',\n })\n }\n}\n\nconst img2ico = new ImageToIcon()\nexport { img2ico }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * project: Powerful Pixiv Downloader\n * author: xuejianxianzun; 雪见仙尊\n * license: GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt\n * Github: https://github.com/xuejianxianzun/PixivBatchDownloader\n * Releases: https://github.com/xuejianxianzun/PixivBatchDownloader/releases\n * Wiki: https://xuejianxianzun.github.io/PBDWiki\n * Website: https://pixiv.download/\n * E-mail: xuejianxianzun@gmail.com\n */\n\nimport './Lang'\nimport './Theme'\nimport './store/States'\nimport './setting/Settings'\nimport './setting/InvisibleSettings'\nimport './ListenPageSwitch'\nimport './CenterPanel'\nimport './setting/Form'\nimport './setting/DoNotDownloadLastFewImages'\nimport './setting/UseDifferentNameRuleIfWorkHasTag'\nimport './ReplaceSquareThumb'\nimport './InitPage'\nimport './crawlMixedPage/QuickCrawl'\nimport './download/DownloadControl'\nimport './download/Resume'\nimport './Tip'\nimport './PreviewWork'\nimport './ShowLargerThumbnails'\nimport './DoubleWidthThumb'\nimport './ShowZoomBtnOnThumb'\nimport './ShowDownloadBtnOnThumb'\nimport './output/OutputPanel'\nimport './output/PreviewFileName'\nimport './output/ShowURLs'\nimport './download/ExportResult2CSV'\nimport './download/ExportResult'\nimport './download/ImportResult'\nimport './download/ExportLST'\nimport './download/MergeNovel'\nimport './download/SaveWorkMeta'\nimport './download/ShowStatusOnTitle'\nimport './download/ShowTotalResultOnTitle'\nimport './download/ShowRemainingDownloadOnTitle'\nimport './download/DownloadOnClickLike'\nimport './HighlightFollowingUsers'\n// import './CheckNewVersion'\nimport './ShowWhatIsNew'\nimport './CheckUnsupportBrowser'\nimport './ShowNotification'\nimport './HiddenBrowserDownloadBar'\nimport './RequestSponsorship'\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"content.js","mappings":"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AAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;CAC1B;;;;;;;;;;;;;;;ACznEM,MAAM,WAAW,GAAG;IACzB,CAAC,EAAE,EAAE,aAAa,CAAC;IACnB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,MAAM,EAAE,aAAa,CAAC;IACvB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B,CAAC,SAAS,EAAE,aAAa,CAAC;IAC1B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YAAY;QACZ,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;SACxB;QAED,aAAa;QACb,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB,IAAI,EAAE,0BAA0B;SACjC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACf;;;;;;;UClQlB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;;;;;;;;;GASG;AAEY;AACC;AACO;AACI;AACS;AACT;AACL;AACC;AACsB;AACM;AACtB;AACV;AACiB;AACD;AACT;AACZ;AACQ;AACS;AACJ;AACE;AACI;AACJ;AACI;AACP;AACU;AACJ;AACA;AACH;AACC;AACE;AACK;AACK;AACM;AACT;AACL;AAClC,6BAA6B;AACL;AACQ;AACL;AACQ;AACN","sources":["webpack://powerful-pixiv-downloader/./src/ts/API.ts","webpack://powerful-pixiv-downloader/./src/ts/ArtworkThumbnail.ts","webpack://powerful-pixiv-downloader/./src/ts/BG.ts","webpack://powerful-pixiv-downloader/./src/ts/BoldKeywords.ts","webpack://powerful-pixiv-downloader/./src/ts/Bookmark.ts","webpack://powerful-pixiv-downloader/./src/ts/CenterPanel.ts","webpack://powerful-pixiv-downloader/./src/ts/CheckUnsupportBrowser.ts","webpack://powerful-pixiv-downloader/./src/ts/Colors.ts","webpack://powerful-pixiv-downloader/./src/ts/Config.ts","webpack://powerful-pixiv-downloader/./src/ts/ConvertUgoira/ConvertUgoira.ts","webpack://powerful-pixiv-downloader/./src/ts/ConvertUgoira/ToAPNG.ts","webpack://powerful-pixiv-downloader/./src/ts/ConvertUgoira/ToGIF.ts","webpack://powerful-pixiv-downloader/./src/ts/ConvertUgoira/ToWebM.ts","webpack://powerful-pixiv-downloader/./src/ts/CopyToClipboard.ts","webpack://powerful-pixiv-downloader/./src/ts/DoubleWidthThumb.ts","webpack://powerful-pixiv-downloader/./src/ts/EVT.ts","webpack://powerful-pixiv-downloader/./src/ts/FileName.ts","webpack://powerful-pixiv-downloader/./src/ts/FindHorizontalImageWrap.ts","webpack://powerful-pixiv-downloader/./src/ts/HiddenBrowserDownloadBar.ts","webpack://powerful-pixiv-downloader/./src/ts/HighlightFollowingUsers.ts","webpack://powerful-pixiv-downloader/./src/ts/ImageViewer.ts","webpack://powerful-pixiv-downloader/./src/ts/InitPage.ts","webpack://powerful-pixiv-downloader/./src/ts/Input.ts","webpack://powerful-pixiv-downloader/./src/ts/Lang.ts","webpack://powerful-pixiv-downloader/./src/ts/LangText.ts","webpack://powerful-pixiv-downloader/./src/ts/ListenPageSwitch.ts","webpack://powerful-pixiv-downloader/./src/ts/Loading.ts","webpack://powerful-pixiv-downloader/./src/ts/Log.ts","webpack://powerful-pixiv-downloader/./src/ts/MsgBox.ts","webpack://powerful-pixiv-downloader/./src/ts/NovelThumbnail.ts","webpack://powerful-pixiv-downloader/./src/ts/OpenCenterPanel.ts","webpack://powerful-pixiv-downloader/./src/ts/PageType.ts","webpack://powerful-pixiv-downloader/./src/ts/PreviewUgoira.ts","webpack://powerful-pixiv-downloader/./src/ts/PreviewWork.ts","webpack://powerful-pixiv-downloader/./src/ts/PreviewWorkDetailInfo.ts","webpack://powerful-pixiv-downloader/./src/ts/RemoveWorksTagsInBookmarks.ts","webpack://powerful-pixiv-downloader/./src/ts/ReplaceSquareThumb.ts","webpack://powerful-pixiv-downloader/./src/ts/RequestSponsorship.ts","webpack://powerful-pixiv-downloader/./src/ts/SelectWork.ts","webpack://powerful-pixiv-downloader/./src/ts/SetTimeoutWorker.ts","webpack://powerful-pixiv-downloader/./src/ts/SetUserName.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowDownloadBtnOnThumb.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowDownloadBtnOnThumbOnDesktop.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowDownloadBtnOnThumbOnMobile.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowHelp.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowLargerThumbnails.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowNotification.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowOriginSizeImage.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowWhatIsNew.ts","webpack://powerful-pixiv-downloader/./src/ts/ShowZoomBtnOnThumb.ts","webpack://powerful-pixiv-downloader/./src/ts/Theme.ts","webpack://powerful-pixiv-downloader/./src/ts/Tip.ts","webpack://powerful-pixiv-downloader/./src/ts/Toast.ts","webpack://powerful-pixiv-downloader/./src/ts/Token.ts","webpack://powerful-pixiv-downloader/./src/ts/Tools.ts","webpack://powerful-pixiv-downloader/./src/ts/UnBookmarkWorks.ts","webpack://powerful-pixiv-downloader/./src/ts/WorkThumbnail.ts","webpack://powerful-pixiv-downloader/./src/ts/WorkToolBar.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/CrawlRecommendWorks.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitAreaRankingPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitArtworkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitArtworkSeriesPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitBookmarkDetailPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitDiscoverPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitNewArtworkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitPixivisionPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitRankingArtworkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlArtworkPage/InitSearchArtworkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/CrawlTagList.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitBookmarkLegacyPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitBookmarkNewPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitBookmarkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitFollowingPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitHomePage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitUnlistedPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/InitUserPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlMixedPage/QuickCrawl.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/GetNovelGlossarys.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitNewNovelPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitNovelPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitNovelSeriesPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitRankingNovelPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawlNovelPage/InitSearchNovelPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/InitPageBase.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/InitRequestPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/InitUnsupportedPage.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/StopCrawl.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/TimedCrawl.ts","webpack://powerful-pixiv-downloader/./src/ts/crawl/VipSearchOptimize.ts","webpack://powerful-pixiv-downloader/./src/ts/download/BookmarkAfterDL.ts","webpack://powerful-pixiv-downloader/./src/ts/download/CheckWarningMessage.ts","webpack://powerful-pixiv-downloader/./src/ts/download/Download.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadControl.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadNovelCover.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadNovelEmbeddedImage.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadOnClickBookmark.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadOnClickLike.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadRecord.ts","webpack://powerful-pixiv-downloader/./src/ts/download/DownloadStates.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ExportLST.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ExportResult.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ExportResult2CSV.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ImportResult.ts","webpack://powerful-pixiv-downloader/./src/ts/download/MakeNovelFile.ts","webpack://powerful-pixiv-downloader/./src/ts/download/MergeNovel.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ProgressBar.ts","webpack://powerful-pixiv-downloader/./src/ts/download/Resume.ts","webpack://powerful-pixiv-downloader/./src/ts/download/SaveWorkMeta.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowConvertCount.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowDownloadStates.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowRemainingDownloadOnTitle.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowSkipCount.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowStatusOnTitle.ts","webpack://powerful-pixiv-downloader/./src/ts/download/ShowTotalResultOnTitle.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/BlackandWhiteImage.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/BlockTagsForSpecificUser.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/Filter.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/Mute.ts","webpack://powerful-pixiv-downloader/./src/ts/filter/WorkPublishTime.ts","webpack://powerful-pixiv-downloader/./src/ts/output/OutputPanel.ts","webpack://powerful-pixiv-downloader/./src/ts/output/PreviewFileName.ts","webpack://powerful-pixiv-downloader/./src/ts/output/ShowURLs.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/BookmarkAllWorks.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/BookmarksAddTag.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/DeleteWorks.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/DestroyManager.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/DisplayThumbnailListOnMultiImageWorkPage.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/FastScreen.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/QuickBookmark.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/RemoveWorksOfFollowedUsersOnSearchPage.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/SaveAvatarIcon.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/SaveAvatarImage.ts","webpack://powerful-pixiv-downloader/./src/ts/pageFunciton/SaveUserCover.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/ConvertOldSettings.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/DoNotDownloadLastFewImages.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/Form.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/FormHTML.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/FormSettings.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/InvisibleSettings.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/NameRuleManager.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/Options.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/SaveNamingRule.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/Settings.ts","webpack://powerful-pixiv-downloader/./src/ts/setting/UseDifferentNameRuleIfWorkHasTag.ts","webpack://powerful-pixiv-downloader/./src/ts/store/CacheWorkData.ts","webpack://powerful-pixiv-downloader/./src/ts/store/IdListWithPageNo.ts","webpack://powerful-pixiv-downloader/./src/ts/store/SaveArtworkData.ts","webpack://powerful-pixiv-downloader/./src/ts/store/SaveNovelData.ts","webpack://powerful-pixiv-downloader/./src/ts/store/States.ts","webpack://powerful-pixiv-downloader/./src/ts/store/Store.ts","webpack://powerful-pixiv-downloader/./src/ts/store/WorkPublishTimeNovels.ts","webpack://powerful-pixiv-downloader/./src/ts/store/workPublishTimeIllusts.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/CreateCSV.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/DateFormat.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/IndexedDB.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/SecretSignal.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/Utils.ts","webpack://powerful-pixiv-downloader/./src/ts/utils/imageToIcon.ts","webpack://powerful-pixiv-downloader/webpack/bootstrap","webpack://powerful-pixiv-downloader/webpack/runtime/compat get default export","webpack://powerful-pixiv-downloader/webpack/runtime/define property getters","webpack://powerful-pixiv-downloader/webpack/runtime/hasOwnProperty shorthand","webpack://powerful-pixiv-downloader/webpack/runtime/make namespace object","webpack://powerful-pixiv-downloader/./src/ts/content.ts"],"sourcesContent":["import {\n UserImageWorksWithTag,\n BookmarkData,\n UserProfile,\n UserProfileAllData,\n ArtworkData,\n UgoiraMetaData,\n RecommendData,\n RankingData,\n RecommenderData,\n SearchData,\n NewIllustData,\n BookMarkNewData,\n UserNovelsWithTag,\n NovelData,\n NovelSeriesData,\n NovelSearchData,\n NewNovelData,\n FollowingResponse,\n SeriesData,\n muteData,\n NovelSeriesGlossary,\n NovelSeriesGlossaryItem,\n LatestMessageData,\n} from './crawl/CrawlResult'\n\nimport {\n userWorksType,\n RankingOption,\n SearchOption,\n NewIllustOption,\n tagPageFlag,\n} from './crawl/CrawlArgument'\n\nimport { IDData } from './store/StoreType'\n\n/** 点击 like 按钮的返回数据 */\ninterface LikeResponse {\n error: boolean\n message: '' | string\n body:\n | []\n | {\n is_liked: boolean\n }\n}\n\nclass API {\n // 发送 get 请求,返回 json 数据,抛出异常\n static sendGetRequest(url: string): Promise {\n return new Promise((resolve, reject) => {\n fetch(url, {\n method: 'get',\n credentials: 'same-origin',\n })\n .then((response) => {\n // response.ok 的状态码范围是 200-299\n if (response.ok) {\n return response.json()\n } else {\n // 请求成功但状态码异常\n reject({\n status: response.status,\n statusText: response.statusText,\n })\n switch (response.status) {\n case 400:\n return console.error(\n 'Status Code: 400(Bad Request)。服务器无法理解此请求'\n )\n case 401:\n return console.error(\n 'Status Code: 401(Unauthorized)。您可能需要登录 Pixiv 账号'\n )\n case 403:\n return console.error(\n 'Status Code: 403(Forbidden)。服务器拒绝了这个请求'\n )\n case 404:\n return console.error(\n 'Status Code: 404(Not Found)。服务器找不到请求的资源'\n )\n case 500:\n return console.error(\n 'Status Code: 500(Internal Server Error)。服务器内部错误'\n )\n case 503:\n return console.error(\n 'Status Code: 503(Service Unavailable)。服务器忙或者在维护'\n )\n default:\n return console.error(\n `请求的状态不正确,状态码:${response.status}`\n )\n }\n }\n })\n .then((data) => {\n resolve(data)\n })\n .catch((error) => {\n // 请求失败\n reject(error)\n })\n })\n }\n\n // 获取收藏数据\n // 这个 api 返回的作品列表顺序是按收藏顺序由近期到早期排列的\n static async getBookmarkData(\n userID: string,\n type: 'illusts' | 'novels' = 'illusts',\n tag: string,\n offset: number,\n hide: boolean = false\n ): Promise {\n const url = `https://www.pixiv.net/ajax/user/${userID}/${type}/bookmarks?tag=${tag}&offset=${offset}&limit=100&rest=${\n hide ? 'hide' : 'show'\n }&rdm=${Math.random()}`\n\n return this.sendGetRequest(url)\n }\n\n // 添加收藏\n static async addBookmark(\n id: string,\n type: 'illusts' | 'novels',\n tags: string[],\n hide: boolean,\n token: string\n ) {\n const restrict: 1 | 0 = hide ? 1 : 0\n\n let body = {}\n if (type === 'illusts') {\n body = {\n comment: '',\n illust_id: id,\n restrict: restrict,\n tags: tags,\n }\n } else {\n body = {\n comment: '',\n novel_id: id,\n restrict: restrict,\n tags: tags,\n }\n }\n\n return fetch(`https://www.pixiv.net/ajax/${type}/bookmarks/add`, {\n method: 'POST',\n credentials: 'same-origin', // 附带 cookie\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json; charset=utf-8',\n 'x-csrf-token': token,\n },\n body: JSON.stringify(body),\n })\n }\n\n static async deleteBookmark(\n bookmarkID: number | string,\n type: 'illusts' | 'novels',\n token: string\n ) {\n const bodyStr =\n type === 'illusts'\n ? `bookmark_id=${bookmarkID}`\n : `del=1&book_id=${bookmarkID}`\n\n return fetch(`https://www.pixiv.net/ajax/${type}/bookmarks/delete`, {\n method: 'POST',\n credentials: 'same-origin', // 附带 cookie\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'x-csrf-token': token,\n },\n body: bodyStr,\n })\n }\n\n // 获取关注的用户列表\n static getFollowingList(\n id: string,\n rest: 'show' | 'hide' = 'show',\n tag = '',\n offset = 0,\n limit = 100,\n lang = 'zh'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/user/${id}/following?offset=${offset}&limit=${limit}&rest=${rest}&tag=${tag}&lang=${lang}`\n return this.sendGetRequest(url)\n }\n\n // 获取好 P 友列表\n static getMyPixivList(\n id: string,\n offset = 0,\n limit = 100,\n lang = 'zh'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/user/${id}/mypixiv?offset=${offset}&limit=${limit}&lang=${lang}`\n return this.sendGetRequest(url)\n }\n\n // 获取粉丝列表\n static getFollowersList(\n id: string,\n offset = 0,\n limit = 100,\n lang = 'zh'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/user/${id}/followers?offset=${offset}&limit=${limit}&lang=${lang}`\n return this.sendGetRequest(url)\n }\n\n // 获取用户信息\n static getUserProfile(id: string): Promise {\n // full=1 在画师的作品列表页使用,获取详细信息\n // full=0 在作品页内使用,只获取少量信息\n const url = `https://www.pixiv.net/ajax/user/${id}?full=1`\n return this.sendGetRequest(url)\n }\n\n // 获取用户指定类型的作品列表\n // 返回作品的 id 列表,不包含详细信息\n static async getUserWorksByType(\n id: string,\n type: userWorksType[] = ['illusts', 'manga', 'novels']\n ): Promise {\n let typeSet = new Set(type)\n let result: IDData[] = []\n const url = `https://www.pixiv.net/ajax/user/${id}/profile/all`\n\n let data: UserProfileAllData = await this.sendGetRequest(url)\n for (const type of typeSet.values()) {\n const idList = Object.keys(data.body[type])\n for (const id of idList) {\n result.push({\n type,\n id,\n })\n }\n }\n\n return result\n }\n\n // 获取用户指定类型、并且指定 tag 的作品列表\n // 返回整个请求的结果,里面包含作品的详细信息\n // 必须带 tag 使用。不带 tag 虽然也能获得数据,但是获得的并不全,很奇怪。\n static getUserWorksByTypeWithTag(\n id: string,\n type: tagPageFlag,\n tag: string,\n offset: number = 0,\n limit: number = 100\n ): Promise {\n // https://www.pixiv.net/ajax/user/2369321/illusts/tag?tag=Fate/GrandOrder&offset=0&limit=100\n const url = `https://www.pixiv.net/ajax/user/${id}/${type}/tag?tag=${tag}&offset=${offset}&limit=${limit}`\n return this.sendGetRequest(url)\n }\n\n // 获取插画 漫画 动图 的详细信息\n static getArtworkData(id: string, unlisted = false): Promise {\n const url = `https://www.pixiv.net/ajax/illust/${\n unlisted ? 'unlisted/' : ''\n }${id}`\n return this.sendGetRequest(url)\n }\n\n // 获取动图的元数据\n static getUgoiraMeta(id: string): Promise {\n const url = `https://www.pixiv.net/ajax/illust/${id}/ugoira_meta`\n return this.sendGetRequest(url)\n }\n\n // 获取小说的详细信息\n static getNovelData(id: string, unlisted = false): Promise {\n const url = `https://www.pixiv.net/ajax/novel/${\n unlisted ? 'unlisted/' : ''\n }${id}`\n return this.sendGetRequest(url)\n }\n\n // 获取相关作品\n static getRelatedData(id: string): Promise {\n // 最后的 18 是预加载首屏的多少个作品的信息,和下载并没有关系\n const url = `https://www.pixiv.net/ajax/illust/${id}/recommend/init?limit=18`\n return this.sendGetRequest(url)\n }\n\n // 获取排行榜数据\n // 排行榜数据基本是一批 50 条作品信息\n static getRankingData(option: RankingOption): Promise {\n let url = `https://www.pixiv.net/ranking.php?mode=${option.mode}&p=${option.p}&format=json`\n\n // 把可选项添加到 url 里\n let temp = new URL(url)\n\n // 下面两项需要判断有值再添加。不可以让这些字段使用空值\n if (option.worksType) {\n temp.searchParams.set('content', option.worksType)\n }\n if (option.date) {\n temp.searchParams.set('date', option.date)\n }\n\n url = temp.toString()\n\n return this.sendGetRequest(url)\n }\n\n // 获取收藏后的相似作品数据\n // 需要传入作品 id 和要抓取的数量。但是实际获取到的数量会比指定的数量少一些\n static getRecommenderData(\n id: string,\n number: number\n ): Promise {\n const url = `/rpc/recommender.php?type=illust&sample_illusts=${id}&num_recommendations=${number}`\n return this.sendGetRequest(url)\n }\n\n // 获取搜索数据\n static getSearchData(\n word: string,\n type: string = 'artworks',\n p: number = 1,\n option: SearchOption = {}\n ): Promise {\n // 基础的 url\n let url = `https://www.pixiv.net/ajax/search/${type}/${encodeURIComponent(\n word\n )}?word=${encodeURIComponent(word)}&p=${p}`\n\n // 把可选项添加到 url 里\n let temp = new URL(url)\n for (const [key, value] of Object.entries(option)) {\n if (value) {\n temp.searchParams.set(key, value)\n }\n }\n url = temp.toString()\n\n return this.sendGetRequest(url)\n }\n\n static getNovelSearchData(\n word: string,\n p: number = 1,\n option: SearchOption = {}\n ): Promise {\n // 基础的 url\n let url = `https://www.pixiv.net/ajax/search/novels/${encodeURIComponent(\n word\n )}?word=${encodeURIComponent(word)}&p=${p}`\n\n // 把可选项添加到 url 里\n let temp = new URL(url)\n for (const [key, value] of Object.entries(option)) {\n if (value) {\n temp.searchParams.set(key, value)\n }\n }\n url = temp.toString()\n\n return this.sendGetRequest(url)\n }\n\n // 获取大家的新作品的数据\n static getNewIllustData(option: NewIllustOption): Promise {\n const url = `https://www.pixiv.net/ajax/illust/new?lastId=${option.lastId}&limit=${option.limit}&type=${option.type}&r18=${option.r18}`\n return this.sendGetRequest(url)\n }\n\n // 获取大家的新作小说的数据\n static getNewNovleData(option: NewIllustOption): Promise {\n const url = `https://www.pixiv.net/ajax/novel/new?lastId=${option.lastId}&limit=${option.limit}&r18=${option.r18}`\n return this.sendGetRequest(url)\n }\n\n // 获取关注的用户的新作品的数据\n static getBookmarkNewWorkData(\n type: 'illust' | 'novel',\n p: number,\n tag: string = '',\n r18: boolean,\n lang = 'zh'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/follow_latest/${type}?p=${p}&tag=${tag}&mode=${\n r18 ? 'r18' : 'all'\n }&lang=${lang}`\n return this.sendGetRequest(url)\n }\n\n // 获取小说的系列作品信息\n // 这个 api 目前一批最多只能返回 30 个作品的数据,所以可能需要多次获取\n static getNovelSeriesData(\n series_id: number | string,\n limit: number = 30,\n last_order: number,\n order_by = 'asc'\n ): Promise {\n const url = `https://www.pixiv.net/ajax/novel/series_content/${series_id}?limit=${limit}&last_order=${last_order}&order_by=${order_by}`\n return this.sendGetRequest(url)\n }\n\n // 获取系列信息\n // 这个接口的数据结构里同时有 illust (包含漫画)和 novel 系列数据\n // 恍惚记得有插画系列来着,但是没找到对应的网址,难道是记错了?\n static getSeriesData(\n series_id: number | string,\n pageNo: number\n ): Promise {\n const url = `https://www.pixiv.net/ajax/series/${series_id}?p=${pageNo}`\n return this.sendGetRequest(url)\n }\n\n // 点赞\n static async addLike(\n id: string,\n type: 'illusts' | 'novels',\n token: string\n ): Promise {\n let data = {}\n if (type === 'illusts') {\n data = {\n illust_id: id,\n }\n } else {\n data = {\n novel_id: id,\n }\n }\n const r = await fetch(`https://www.pixiv.net/ajax/${type}/like`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json; charset=utf-8',\n 'x-csrf-token': token,\n },\n credentials: 'same-origin',\n body: JSON.stringify(data),\n })\n const json = (await r.json()) as LikeResponse\n return json\n }\n\n static async getMuteSettings(): Promise {\n return this.sendGetRequest(\n `https://www.pixiv.net/ajax/mute/items?context=setting`\n )\n }\n\n /**获取系列小说的设定资料 */\n static async getNovelSeriesGlossary(\n seriesId: string | number\n ): Promise {\n return this.sendGetRequest(\n `https://www.pixiv.net/ajax/novel/series/${seriesId}/glossary`\n )\n }\n\n /**获取系列小说某条设定资料的详细信息 */\n static async getNovelSeriesGlossaryItem(\n seriesId: string | number,\n itemId: string | number\n ): Promise {\n return this.sendGetRequest(\n `https://www.pixiv.net/ajax/novel/series/${seriesId}/glossary/item/${itemId}`\n )\n }\n\n /**获取用户最近的几条消息 */\n static async getLatestMessage(number: number): Promise {\n return this.sendGetRequest(\n `https://www.pixiv.net/rpc/index.php?mode=latest_message_threads2&num=${number}&offset=0`\n )\n }\n\n /**关注一个用户 */\n // recaptcha_enterprise_score_token 对于有些用户是不需要的,不过传递空值是允许的\n static async addFollowingUser(\n userID: string,\n token: string,\n recaptcha_enterprise_score_token?: string\n ): Promise {\n return new Promise(async (resolve) => {\n const response = await fetch(`https://www.pixiv.net/bookmark_add.php`, {\n method: 'POST',\n credentials: 'same-origin', // 附带 cookie\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'x-csrf-token': token,\n },\n body: `mode=add&type=user&user_id=${userID}&tag=&restrict=0&format=json&recaptcha_enterprise_score_token=${recaptcha_enterprise_score_token}`,\n })\n // 如果操作成功,则返回值是 []\n // 如果用户不存在,返回值是该用户主页的网页源码\n // 如果 token 错误,返回值是一个包含错误提示的 JSON 对象\n // 所以这里需要转换为 text\n await response.text()\n return resolve(response.status)\n })\n }\n}\n\nexport { API }\n","import { WorkThumbnail } from './WorkThumbnail'\nimport { pageType } from './PageType'\nimport { Tools } from './Tools'\nimport { Config } from './Config'\n\n// 查找图像作品的缩略图,当鼠标进入、移出时等动作触发时执行回调函数\nclass ArtworkThumbnail extends WorkThumbnail {\n constructor() {\n super()\n\n if (Config.mobile) {\n // 移动端的作品选择器就这一个\n this.selectors = ['.works-item-illust']\n } else {\n this.selectors = [\n 'div[width=\"136\"]',\n 'div[width=\"131\"]',\n 'div[width=\"288\"]',\n 'div[width=\"184\"]',\n 'div[width=\"112\"]',\n 'div[width=\"104\"]',\n 'div[width=\"90\"]',\n 'div[width=\"118\"]',\n '._work',\n '._work.item',\n 'div[type=\"illust\"]',\n 'li>div>div:first-child',\n ]\n }\n\n this.findThumbnail(document.body)\n this.createObserver(document.body)\n }\n\n protected readonly selectors: string[] = []\n\n protected findThumbnail(parent: HTMLElement) {\n if (!parent.querySelectorAll) {\n return\n }\n // 遍历所有的选择器,为找到的元素绑定事件\n // 注意:有时候一个节点里会含有多种尺寸的缩略图,为了全部查找到它们,必须遍历所有的选择器。\n // 如果在查找到某个选择器之后,不再查找剩余的选择器,就可能会遗漏一部分缩略图。\n // 但是,这有可能会导致事件的重复绑定,所以下载器添加了 dataset.mouseover 标记以减少重复绑定\n for (const selector of this.selectors) {\n // div[type=\"illust\"] 只在约稿页面使用\n // 因为已知问题:在收藏页面里, div[type=\"illust\"] 嵌套了子元素 div[width=\"184\"]\n // 这会导致重复绑定(在不同元素上)\n if (\n selector === 'div[type=\"illust\"]' &&\n pageType.type !== pageType.list.Request\n ) {\n continue\n }\n\n // li>div>div:first-child 只在约稿页面使用\n // 因为已知问题:画师主页顶部的“精选”作品会被两个选择器查找到:li>div>div:first-child div[width=\"288\"]\n // 这会导致重复绑定(在同一个元素上)\n if (\n selector === 'li>div>div:first-child' &&\n pageType.type !== pageType.list.Request\n ) {\n continue\n }\n\n const elements = parent.querySelectorAll(selector)\n for (const el of elements) {\n const id = Tools.findWorkIdFromElement(el as HTMLElement, 'illusts')\n\n if (Config.mobile) {\n // 在移动端页面里,即使没有找到作品 id,也要执行回调函数\n // 因为此时可能内部的 A 标签还未生成,所以会获取不到 id\n // 而之后下载器只会监听新添加的缩略图容器,不会监听内部添加 A 标签的事件,\n // 所以以后也不会监听到它。那么只能先为它绑定事件,\n // 等到点击下载按钮时再尝试获取 id\n this.bindEvents(el as HTMLElement, id)\n } else {\n // 在桌面版页面里,只有查找到作品 id 时才会执行回调函数\n if (id) {\n this.bindEvents(el as HTMLElement, id)\n }\n }\n }\n }\n }\n}\n\nconst artworkThumbnail = new ArtworkThumbnail()\nexport { artworkThumbnail }\n","import { EVT } from './EVT'\nimport { Utils } from './utils/Utils'\nimport { IndexedDB } from './utils/IndexedDB'\nimport { settings } from './setting/Settings'\n\ninterface BGData {\n readonly key: 'bg'\n file: File\n}\n\ninterface BGItem {\n wrap: HTMLElement\n bg: HTMLElement\n opacity?: number\n}\n\nclass BG {\n constructor() {\n this.IDB = new IndexedDB()\n this.init()\n }\n\n private list: BGItem[] = []\n\n private readonly bgModeflagClassName = 'xzBG'\n private readonly bgLayerClassName = 'xzBGLayer'\n private bgUrl = ''\n\n private IDB: IndexedDB\n private readonly DBName = 'PBDBG'\n private readonly DBVer = 1\n private readonly storeName = 'bg'\n private readonly keyName = 'bg'\n\n private async init() {\n this.bindEvents()\n await this.initDB()\n this.restore()\n }\n\n private async initDB() {\n await this.IDB.open(this.DBName, this.DBVer, this.onUpdate)\n }\n\n // 在数据库升级事件里创建表\n private onUpdate = (db: IDBDatabase) => {\n if (!db.objectStoreNames.contains(this.storeName)) {\n db.createObjectStore(this.storeName, {\n keyPath: 'key',\n })\n }\n }\n\n private createBGLayer(wrap: HTMLElement) {\n const div = document.createElement('div')\n div.classList.add(this.bgLayerClassName)\n const el = wrap.insertAdjacentElement('afterbegin', div)\n return el as HTMLElement\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.selectBG, () => {\n this.selectBG()\n })\n\n window.addEventListener(EVT.list.clearBG, () => {\n this.clearBG()\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'bgDisplay') {\n this.setBGAll()\n }\n\n if (data.name === 'bgOpacity') {\n this.setBGAll()\n }\n\n if (data.name === 'bgPositionY') {\n this.setBGAll()\n }\n })\n }\n\n private async restore() {\n const data: BGData | null = (await this.IDB.get(\n this.storeName,\n this.keyName\n )) as any\n if (!data || !data.file) {\n return\n }\n this.bgUrl = URL.createObjectURL(data.file)\n this.preload()\n }\n\n private async selectBG() {\n const file = (await Utils.selectFile('.jpg,.jpeg,.png,.bmp,.webp'))[0]\n this.bgUrl = URL.createObjectURL(file)\n this.preload()\n for (const o of this.list) {\n this.setBG(o)\n }\n\n const data: BGData = {\n key: this.keyName,\n file: file,\n }\n\n const test = await this.IDB.get(this.storeName, this.keyName)\n this.IDB[test ? 'put' : 'add'](this.storeName, data)\n }\n\n private clearBG() {\n this.IDB.clear(this.storeName)\n this.bgUrl = ''\n for (const o of this.list) {\n o.bg.style.backgroundImage = 'none'\n this.setDisplay(o)\n }\n }\n\n // 预加载背景图片\n private preload() {\n // 由于浏览器的工作原理,背景图片在未被显示之前是不会加载的,在显示时才会进行加载。这会导致背景层显示之后出现短暂的空白(因为在加载图片)。为了避免空白,需要预加载图片\n const img = new Image()\n img.src = this.bgUrl\n img.style.display = 'none'\n document.body.append(img)\n }\n\n private async setBG(o: BGItem) {\n this.setPositionY(o)\n this.setOpacity(o)\n this.setBGURL(o)\n this.setDisplay(o)\n }\n\n private async setBGAll() {\n for (const o of this.list) {\n this.setPositionY(o)\n this.setOpacity(o)\n this.setBGURL(o)\n this.setDisplay(o)\n }\n }\n\n private setBGURL(o: BGItem) {\n o.bg.style.backgroundImage = `url(${this.bgUrl})`\n }\n\n private setDisplay(o: BGItem) {\n o.bg.style.display = settings.bgDisplay ? 'block' : 'none'\n if (!this.bgUrl) {\n o.wrap.classList.remove(this.bgModeflagClassName)\n } else {\n o.wrap.classList[settings.bgDisplay ? 'add' : 'remove'](\n this.bgModeflagClassName\n )\n }\n }\n\n private setOpacity(o: BGItem) {\n o.bg.style.opacity = (o.opacity || settings.bgOpacity / 100).toString()\n }\n\n private setPositionY(o: BGItem) {\n o.bg.style.backgroundPositionY = settings.bgPositionY\n }\n\n // 其他模块可以调用这个方法,为一个元素添加背景层\n // 如果传入一个真值的不透明度,会始终使用传入的不透明度,忽略用户用户设置的不透明度\n public useBG(wrap: HTMLElement, opacity?: number) {\n if (this.bgUrl) {\n this.readySet(wrap, opacity)\n } else {\n let timer = window.setInterval(() => {\n if (this.bgUrl) {\n window.clearInterval(timer)\n this.readySet(wrap)\n }\n }, 300)\n }\n }\n\n private readySet(wrap: HTMLElement, opacity?: number) {\n const o = {\n wrap,\n bg: this.createBGLayer(wrap),\n opacity,\n }\n this.list.push(o)\n\n this.setBG(o)\n }\n}\n\nconst bg = new BG()\nexport { bg }\n","import { EVT } from './EVT'\nimport { settings } from './setting/Settings'\n\nclass BoldKeywords {\n constructor(wrap: HTMLElement) {\n this.wrap = wrap\n this.bindEvent()\n this.setClassName()\n }\n\n private wrap: HTMLElement\n private readonly className = 'showBlobKeywords'\n\n private bindEvent() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'boldKeywords') {\n this.setClassName()\n }\n })\n }\n\n private setClassName() {\n this.wrap.classList[settings.boldKeywords ? 'add' : 'remove'](\n this.className\n )\n }\n}\n\nexport { BoldKeywords }\n","import { API } from './API'\nimport { Config } from './Config'\nimport { ArtworkCommonData, BookmarkResult } from './crawl/CrawlResult'\nimport { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { log } from './Log'\nimport { setTimeoutWorker } from './SetTimeoutWorker'\nimport { settings } from './setting/Settings'\nimport { toast } from './Toast'\nimport { token } from './Token'\nimport { Tools } from './Tools'\nimport { Utils } from './utils/Utils'\n\nexport interface WorkBookmarkData {\n workID: number\n type: 'illusts' | 'novels'\n bookmarkID: string\n private: boolean\n}\n\n// 对 API.addBookmark 进行封装\nclass Bookmark {\n constructor() {\n window.addEventListener(EVT.list.downloadComplete, () => {\n if (this.taskID > this.nextTaskID) {\n const msg = lang.transl('_收藏任务尚未完成请等待')\n log.warning(msg)\n toast.warning(msg, {\n position: 'center',\n })\n }\n })\n\n // 如果用户在离开页面时还有等待重试的收藏任务,就提示用户\n // 使用 window.onbeforeunload 事件\n // 但是这会导致 SelectWork 里的该事件出现问题,或者两个模块里都会出现问题,所以就不提示了\n }\n\n private async getWorkData(type: 'illusts' | 'novels', id: string) {\n return type === 'illusts'\n ? await API.getArtworkData(id)\n : await API.getNovelData(id)\n }\n\n /** 接收到需要排队的任务时增加计数 */\n private taskID = 0\n\n /**叫号的号码,当 add 方法的 slowly 参数为 true 时,需要等待叫号到它才能执行 */\n private nextTaskID = 1\n\n /**添加收藏\n *\n * 可选参数 tags:可以直接传入这个作品的 tag 列表\n *\n * 如果未传入 tags,但收藏设置要求 tags,则此方法会发送请求获取作品数据\n *\n * 可选参数 needAddTag:控制是否添加 tag。缺省时使用 settings.widthTagBoolean\n *\n * 可选参数 restrict:指示这个收藏是否为非公开收藏。false 为公开收藏,true 为非公开收藏。缺省时使用 settings.restrictBoolean\n *\n * 可选参数 slowly:未指定或 false 时,立即执行这个收藏请求。设置为 true 则会获得一个号码并等待叫号到它再执行。这是为了减少 429 错误发生的概率。当需要大批量收藏作品时应该设置为 true。\n */\n public async add(\n id: string,\n type: 'illusts' | 'novels',\n tags?: string[],\n needAddTag?: boolean,\n restrict?: boolean,\n slowly?: boolean\n ) {\n return new Promise(async (resolve, reject) => {\n const _needAddTag =\n needAddTag === undefined ? settings.widthTagBoolean : !!needAddTag\n if (_needAddTag) {\n // 需要添加 tags\n if (tags === undefined) {\n // 如果未传递 tags,则请求作品数据来获取 tags\n const data = await this.getWorkData(type, id)\n tags = Tools.extractTags(data)\n }\n } else {\n // 不需要添加 tags\n tags = []\n }\n\n const _restrict =\n restrict === undefined ? settings.restrictBoolean : !!restrict\n\n // 立即执行的情况\n if (!slowly) {\n const status = await this.sendRequest(id, type, tags, _restrict)\n return resolve(status)\n }\n\n // 需要排队的情况\n const NO = ++this.taskID\n await this.waitCallMe(NO)\n setTimeoutWorker.set(async () => {\n const status = await this.sendRequest(id, type, tags!, _restrict)\n this.nextTaskID++\n return resolve(status)\n }, Config.slowCrawlDealy)\n })\n }\n\n private async waitCallMe(NO: number) {\n return new Promise(async (resolve) => {\n if (this.nextTaskID === NO) {\n return resolve(NO)\n } else {\n setTimeoutWorker.set(() => {\n return resolve(this.waitCallMe(NO))\n }, 300)\n }\n })\n }\n\n /**获取指定用户的指定分类下的所有收藏列表,不限制页数或个数,全部抓取 */\n public async getAllBookmarkList(\n userID: string,\n type: 'illusts' | 'novels',\n tags: string,\n offsetStart: number = 0,\n hide: boolean\n ): Promise {\n return new Promise(async (resolve) => {\n const result: BookmarkResult[] = []\n let offset = offsetStart\n const onceOffset = 100\n\n while (true) {\n const data = await API.getBookmarkData(userID, type, '', offset, hide)\n\n for (const workData of data.body.works) {\n result.push({\n id: workData.id,\n type:\n (workData as ArtworkCommonData).illustType === undefined\n ? 'novels'\n : 'illusts',\n tags: workData.tags,\n restrict: workData.bookmarkData?.private || false,\n })\n }\n log.log(result.length.toString(), 1, false)\n\n offset += onceOffset\n if (data.body.works.length === 0) {\n break\n }\n\n await Utils.sleep(Config.slowCrawlDealy)\n }\n\n log.persistentRefresh()\n resolve(result)\n })\n }\n\n public async addBookmarksInBatchs(\n list: BookmarkResult[],\n oldList: BookmarkResult[] = []\n ) {\n // 反转要添加收藏的作品列表。这是因为它来自于导出的收藏列表,导出时的顺序是按照添加收藏时的倒序排列\n // 即后收藏的作品在数组前面,先收藏的作品在数组后面\n // 如果不反转,那么在添加收藏时,就会先收藏在“导出时是后收藏”的作品,这会导致添加收藏的顺序反了\n // 在网页上看新添加收藏的作品时,顺序也是反的\n list.reverse()\n\n let added = 0\n let skip = 0\n let tip = ''\n for (const data of list) {\n // 如果这个作品已经被收藏过,就不会重复收藏它(这里没有检查 tag 列表)\n const find = oldList.find(\n (old) => old.id === data.id && old.type === data.type\n )\n if (!find) {\n await this.add(\n data.id,\n data.type!,\n data.tags,\n undefined,\n undefined,\n true\n )\n } else {\n skip++\n console.log('已收藏')\n }\n added++\n tip = lang.transl('_收藏作品') + ` ${added}/${list.length}`\n if (skip > 0) {\n tip = tip + `, ${lang.transl('_跳过x个', skip.toString())}`\n }\n log.log(tip, 1, false)\n }\n\n log.persistentRefresh()\n const msg = '✓ ' + lang.transl('_收藏作品完毕')\n log.success(msg)\n toast.success(msg, {\n position: 'center',\n })\n }\n\n private async sendRequest(\n id: string,\n type: 'illusts' | 'novels',\n tags: string[],\n hide: boolean\n ) {\n return new Promise(async (resolve) => {\n API.addBookmark(id, type, tags, hide, token.token).then(async (res) => {\n switch (res.status) {\n // 当发生 400 错误时重试\n case 400:\n await token.reset()\n return resolve(this.sendRequest(id, type, tags, hide))\n case 404:\n log.error(`${id} 404 Not Found`)\n return resolve(res.status)\n case 429:\n case 500:\n toast.error(lang.transl('_添加收藏失败'), {\n position: 'center',\n })\n\n log.error(\n `${Tools.createWorkLink(id, type === 'illusts')} ${lang.transl(\n '_添加收藏失败'\n )}. ${lang.transl('_错误代码')}${res.status}. ${lang.transl(\n '_下载器会在几分钟后重试'\n )}`\n )\n\n window.setTimeout(() => {\n return resolve(this.sendRequest(id, type, tags, hide))\n }, Config.retryTime)\n break\n default:\n return resolve(res.status)\n }\n })\n })\n }\n}\n\nconst bookmark = new Bookmark()\nexport { bookmark }\n","import { lang } from './Lang'\nimport { EVT } from './EVT'\nimport { states } from './store/States'\nimport { theme } from './Theme'\nimport { Config } from './Config'\nimport { msgBox } from './MsgBox'\nimport { bg } from './BG'\nimport './OpenCenterPanel'\nimport { settings } from './setting/Settings'\nimport { BoldKeywords } from './BoldKeywords'\nimport { showHelp } from './ShowHelp'\n\n// 选项卡的名称和索引\nenum Tabbar {\n Crawl,\n Download,\n Other,\n}\n\n// 中间面板\nclass CenterPanel {\n constructor() {\n this.addCenterPanel()\n theme.register(this.centerPanel)\n lang.register(this.centerPanel)\n this.activeTab(Tabbar.Crawl)\n\n bg.useBG(this.centerPanel)\n\n new BoldKeywords(this.centerPanel)\n\n this.allLangFlag = lang.langTypes.map((type) => 'lang_' + type)\n this.setLangFlag()\n\n this.bindEvents()\n }\n\n private centerPanel!: HTMLDivElement\n private updateLink!: HTMLAnchorElement\n private updateActiveClass = 'updateActiveClass'\n\n private allTabTitle!: NodeListOf // 选项卡的标题区域\n private readonly TitleActiveClass = 'active'\n private titleAnimationEl!: HTMLElement\n private readonly titleAnimationElClassList = ['tab1', 'tab2', 'tab3']\n\n // 添加中间面板\n private addCenterPanel() {\n const centerPanelHTML = `\n
        \n\n
        \n
        \n ${Config.appName}\n
        \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
        \n
        \n
        \n\n
        \n
        \n
        \n
        \n
        \n
        \n\n
        \n\n \n\n
        \n \n \n Discord\n \n \n
        \n
        \n\n
        \n\n
        \n `\n document.body.insertAdjacentHTML('beforebegin', centerPanelHTML)\n\n this.centerPanel = document.querySelector('.centerWrap') as HTMLDivElement\n\n this.updateLink = this.centerPanel.querySelector(\n '.update'\n )! as HTMLAnchorElement\n\n this.allTabTitle = this.centerPanel.querySelectorAll('.tabsTitle .title')\n\n this.titleAnimationEl = this.centerPanel.querySelector(\n '.title_active'\n )! as HTMLElement\n\n // 设置移动端样式\n if (Config.mobile) {\n this.centerPanel.classList.add('mobile')\n }\n }\n\n private allLangFlag: string[] = []\n private setLangFlag() {\n this.allLangFlag.forEach((flag) => {\n this.centerPanel.classList.remove(flag)\n })\n this.centerPanel.classList.add('lang_' + lang.type)\n }\n\n private bindEvents() {\n // 监听点击扩展图标的消息,开关中间面板\n chrome.runtime.onMessage.addListener((msg) => {\n if (msg.msg === 'click_icon') {\n this.toggle()\n }\n })\n\n window.addEventListener(EVT.list.settingInitialized, () => {\n showHelp.show('tipHowToUse', lang.transl('_HowToUse'))\n })\n\n // 使用快捷键 Alt + x 切换中间面板显示隐藏\n window.addEventListener(\n 'keydown',\n (ev) => {\n if (ev.altKey && ev.code === 'KeyX') {\n this.toggle()\n }\n },\n false\n )\n\n // 关闭按钮\n document\n .querySelector('.centerWrap_close')!\n .addEventListener('click', () => {\n EVT.fire('closeCenterPanel')\n if (!Config.mobile) {\n showHelp.show(\n 'tipAltXToShowControlPanel',\n lang.transl('_快捷键ALTX显示隐藏控制面板')\n )\n }\n })\n\n // 开始抓取作品时,隐藏\n window.addEventListener(EVT.list.crawlStart, () => {\n EVT.fire('closeCenterPanel')\n })\n\n // 抓取完作品详细数据时,显示\n for (const ev of [EVT.list.crawlComplete, EVT.list.resume]) {\n window.addEventListener(ev, () => {\n if (!states.quickCrawl) {\n this.show()\n }\n })\n }\n\n window.addEventListener(EVT.list.openCenterPanel, () => {\n this.show()\n })\n\n window.addEventListener(EVT.list.closeCenterPanel, () => {\n this.close()\n })\n\n // 显示更新按钮\n window.addEventListener(EVT.list.hasNewVer, () => {\n this.updateLink.classList.add(this.updateActiveClass)\n this.updateLink.style.display = 'inline-block'\n })\n\n // 显示常见问题\n this.centerPanel\n .querySelector('#showDownTip')!\n .addEventListener('click', () => {\n let msg = lang.transl('_常见问题说明')\n if (Config.mobile) {\n msg =\n msg + '

        ' + lang.transl('_Kiwi浏览器可能不能建立文件夹的bug')\n }\n msgBox.show(msg, {\n title: lang.transl('_常见问题'),\n })\n })\n\n this.centerPanel\n .querySelector('#showPatronTip')!\n .addEventListener('click', () =>\n msgBox.show(lang.transl('_赞助方式提示'), {\n title: lang.transl('_赞助我'),\n })\n )\n\n this.centerPanel.addEventListener('click', (e) => {\n const ev = e || window.event\n ev.stopPropagation()\n })\n\n document.addEventListener('click', () => {\n if (getComputedStyle(this.centerPanel)['display'] !== 'none') {\n EVT.fire('closeCenterPanel')\n }\n })\n\n // 在选项卡的标题上触发事件时,激活对应的选项卡\n let eventList = ['click', 'mouseenter']\n if (Config.mobile) {\n eventList = ['touchend']\n }\n for (let index = 0; index < this.allTabTitle.length; index++) {\n const title = this.allTabTitle[index]\n eventList.forEach((eventName) => {\n title.addEventListener(eventName, () => {\n // 触发 mouseenter 时,如果用户设置的是通过点击来切换选项卡,则直接返回\n // 触发 click 时无需检测,始终可以切换\n if (eventName === 'mouseenter' && settings.switchTabBar === 'click') {\n return\n }\n this.activeTab(index)\n })\n })\n\n // 当标题获得焦点,并且用户按下了回车或空格键时,激活对应的选项卡\n title.addEventListener('keydown', (event) => {\n if (\n (event.code === 'Enter' || event.code === 'Space') &&\n event.target === title\n ) {\n event.stopPropagation()\n event.preventDefault()\n this.activeTab(index)\n }\n })\n }\n\n // 当可以开始下载时,切换到“下载”选项卡\n for (const ev of [EVT.list.crawlComplete, EVT.list.resume]) {\n window.addEventListener(ev, () => {\n if (states.mergeNovel) {\n return\n }\n this.activeTab(Tabbar.Download)\n })\n }\n\n window.addEventListener(EVT.list.crawlEmpty, () => {\n this.activeTab(Tabbar.Crawl)\n })\n\n window.addEventListener(EVT.list.langChange, () => {\n this.setLangFlag()\n })\n }\n\n // 设置激活的选项卡\n private activeTab(no = 0) {\n // 显示选项卡的内容\n const allTabCon = this.centerPanel.querySelectorAll(\n '.tabsContnet'\n ) as NodeListOf\n for (let index = 0; index < allTabCon.length; index++) {\n allTabCon[index].style.display = index === no ? 'block' : 'none'\n }\n\n // 高亮选项卡的标题\n for (const title of this.allTabTitle) {\n title.classList.remove(this.TitleActiveClass)\n }\n this.allTabTitle[no].classList.add(this.TitleActiveClass)\n\n // 设置动画效果\n const useClass = this.titleAnimationElClassList[no]\n if (this.titleAnimationEl.classList.contains(useClass)) {\n return\n }\n this.titleAnimationElClassList.forEach((str) => {\n this.titleAnimationEl.classList.remove(str)\n })\n this.titleAnimationEl.classList.add(useClass)\n }\n\n // 显示中间区域\n public show() {\n if (states.mergeNovel) {\n return\n }\n this.centerPanel.style.display = 'block'\n EVT.fire('centerPanelOpened')\n }\n\n // 隐藏中间区域\n public close() {\n this.centerPanel.style.display = 'none'\n EVT.fire('centerPanelClosed')\n }\n\n public toggle() {\n const nowDisplay = this.centerPanel.style.display\n nowDisplay === 'block' ? this.close() : this.show()\n if (nowDisplay === 'block') {\n EVT.fire('closeCenterPanel')\n } else {\n EVT.fire('openCenterPanel')\n }\n }\n}\n\nnew CenterPanel()\n","import { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { log } from './Log'\n\ninterface Rules {\n [key: string]: () => boolean\n}\n\n// 某些国产套壳浏览器不能正常使用本程序。如果检测到该浏览器,则显示提示\n// 相关文档: notes/一些国产套壳浏览器使用本程序的情况.md\nclass CheckUnsupportBrowser {\n constructor() {\n window.addEventListener(EVT.list.settingInitialized, () => {\n this.check()\n })\n }\n\n private rules: Rules = {\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 SE 2.X MetaSr 1.0\"\n Sougou: function () {\n return navigator.userAgent.includes(' SE ')\n },\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3872.400 QQBrowser/10.8.4455.400\"\n QQ: function () {\n return navigator.userAgent.includes('QQBrowser')\n },\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36 2345Explorer/10.21.0.21486\"\n '2345': function () {\n return navigator.userAgent.includes('2345Explorer')\n },\n All: function () {\n // 如果这个浏览器的 Chrome 内核的版本号较低,也会显示提示\n // 为什么设置为 88:\n // 1. 下载器使用的 Manifest V2 需要的内核版本最低为 79\n // 2. Cent 浏览器的内核版本是 86,但它即使使用 V2,仍然会在转换 GIF 时出现问题,所以需要提高版本号\n // 3. 未来升级到 Manifest V3 需要的内核版本最低为 88\n const minChromeVer = 88\n const test = navigator.userAgent.match(/Chrome\\/(\\d*)/)\n if (test && test[1]) {\n const ver = Number.parseInt(test[1])\n if (ver < minChromeVer) {\n return true\n }\n }\n return false\n },\n }\n\n private check() {\n for (const func of Object.values(this.rules)) {\n if (func()) {\n const msg = lang.transl('_不支持的浏览器')\n log.error(msg)\n return\n }\n }\n\n if (navigator.userAgent.includes('YaBrowser')) {\n log.warning(lang.transl('_yandex浏览器的警告'))\n }\n }\n}\n\nnew CheckUnsupportBrowser()\n","enum Colors {\n // 通用颜色\n white = '#fff',\n black = '#000',\n red = '#f00',\n theme = '#0ea8ef',\n\n // 带有语义的字体颜色\n textSuccess = '#00BD17',\n textWarning = '#d27e00',\n textError = '#f00',\n\n // 背景颜色\n // 稍暗,适合在颜色区域的面积较大时使用\n bgBlue = '#0ea8ef',\n bgGreen = '#14ad27',\n bgYellow = '#e49d00',\n bgRed = '#f33939',\n\n // 带有语义的背景颜色\n // 稍亮,适合在小区域使用\n bgBrightBlue = '#29b3f3',\n bgSuccess = '#00BD17',\n bgWarning = '#e49d00',\n bgError = '#f00',\n}\n\nexport { Colors }\n","// 定义一些常量\n// 用户不可以修改这里的配置\nclass Config {\n /**使用输出面板显示内容时,如果文件数量大于这个值,就不再显示内容,而是保存到 txt 文件 */\n static readonly outputMax = 5000\n /**同时下载的文件数量的最大值 */\n static readonly downloadThreadMax = 6\n /**下载某个文件出错时,最大重试次数 */\n static readonly retryMax = 10\n /**作品类型所对应的字符串名称 */\n static readonly worksTypeName = ['Illustration', 'Manga', 'Ugoira', 'Novel']\n /**程序名 */\n static readonly appName = 'Powerful Pixiv Downloader'\n /**下载器储存设置时使用的 key name */\n static readonly settingStoreName = 'xzSetting'\n /**按收藏数量过滤作品时,预设的最大收藏数量 */\n static readonly BookmarkCountLimit = 9999999\n /**Pixiv 作品总数量上限 */\n static readonly worksNumberLimit = 9999999999\n /**当抓取被 pixiv 限制,返回了空数据时,等待这个时间之后再继续抓取 */\n static readonly retryTime = 200000\n /**慢速抓取模式下,每个抓取请求之间的间隔时间(ms) */\n static readonly slowCrawlDealy = 1600\n /**浏览器是否处于移动端模式 */\n static readonly mobile = navigator.userAgent.includes('Mobile')\n}\n\nexport { Config }\n","import { EVT } from '../EVT'\nimport { settings } from '../setting/Settings'\nimport { UgoiraInfo } from '../crawl/CrawlResult'\nimport { toWebM } from './ToWebM'\nimport { toGIF } from './ToGIF'\nimport { toAPNG } from './ToAPNG'\nimport { msgBox } from '../MsgBox'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { log } from '../Log'\n\n// 控制动图转换\nclass ConvertUgoira {\n constructor() {\n this.setMaxCount()\n this.bindEvents()\n }\n\n private downloading = true // 是否在下载。如果下载停止了则不继续转换后续任务,避免浪费资源\n\n private _count: number = 0 // 统计有几个转换任务\n\n private maxCount = 1 // 允许同时运行多少个转换任务\n\n private readonly msgFlag = 'tipConvertUgoira'\n\n private bindEvents() {\n window.addEventListener(EVT.list.downloadStart, () => {\n this.downloading = true\n msgBox.resetOnce(this.msgFlag)\n })\n ;[EVT.list.downloadPause, EVT.list.downloadStop].forEach((event) => {\n window.addEventListener(event, () => {\n this.downloading = false\n })\n })\n\n // 设置发生变化时\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'convertUgoiraThread') {\n this.setMaxCount()\n }\n })\n\n window.addEventListener(EVT.list.convertSuccess, () => {\n this.complete()\n })\n\n // 如果转换动图时页面被隐藏了,则显示提示\n // document.addEventListener('visibilitychange', () => {\n // this.checkHidden()\n // })\n }\n\n private setMaxCount() {\n this.maxCount =\n settings.convertUgoiraThread > 0 ? settings.convertUgoiraThread : 1\n }\n\n private set count(num: number) {\n this._count = num\n EVT.fire('convertChange', this._count)\n // this.checkHidden()\n }\n\n private async start(\n file: Blob,\n info: UgoiraInfo,\n type: 'webm' | 'gif' | 'png'\n ): Promise {\n return new Promise(async (resolve, reject) => {\n const t = window.setInterval(async () => {\n if (this._count < this.maxCount) {\n window.clearInterval(t)\n if (!this.downloading) {\n return\n }\n this.count = this._count + 1\n\n // 提取每一张图片\n const zipFileBuffer = await file.arrayBuffer()\n const indexList = Tools.getJPGContentIndex(zipFileBuffer)\n const ImageBitmapList = await Tools.extractImage(\n zipFileBuffer,\n indexList,\n 'ImageBitmap'\n )\n\n if (type === 'gif') {\n resolve(toGIF.convert(ImageBitmapList, info))\n } else if (type === 'png') {\n resolve(toAPNG.convert(ImageBitmapList, info))\n } else {\n // 如果没有 type 则默认使用 webm\n resolve(toWebM.convert(ImageBitmapList, info))\n }\n }\n }, 200)\n })\n }\n\n private complete() {\n this.count = this._count - 1\n }\n\n // 转换成 WebM\n public async webm(file: Blob, info: UgoiraInfo, id: number): Promise {\n const delayTooLarge = info.frames.find((item) => item.delay > 32767)\n if (delayTooLarge) {\n const msg = lang.transl(\n '_动图不能转换为WEBM视频的提示',\n Tools.createWorkLink(id)\n )\n msgBox.warning(msg)\n log.warning(msg)\n return await this.start(file, info, 'gif')\n }\n\n return await this.start(file, info, 'webm')\n }\n\n // 转换成 GIF\n public async gif(file: Blob, info: UgoiraInfo, id: number): Promise {\n return await this.start(file, info, 'gif')\n }\n\n // 转换成 APNG\n public async apng(file: Blob, info: UgoiraInfo, id: number): Promise {\n return await this.start(file, info, 'png')\n }\n\n private checkHidden() {\n if (this._count > 0 && document.visibilityState === 'hidden') {\n msgBox.once(\n this.msgFlag,\n lang.transl('_转换动图时页面被隐藏的提示'),\n 'warning'\n )\n }\n }\n}\n\nconst convertUgoira = new ConvertUgoira()\nexport { convertUgoira }\n","import { EVT } from '../EVT'\nimport { UgoiraInfo } from '../crawl/CrawlResult'\n\ndeclare const UPNG: any\n\nclass ToAPNG {\n public async convert(\n ImageBitmapList: ImageBitmap[],\n info: UgoiraInfo\n ): Promise {\n return new Promise(async (resolve, reject) => {\n const width = ImageBitmapList[0].width\n const height = ImageBitmapList[0].height\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d', {\n willReadFrequently: true,\n })! as CanvasRenderingContext2D\n canvas.width = width\n canvas.height = height\n\n // 添加帧数据\n let arrayBuffList: ArrayBuffer[] = []\n ImageBitmapList.forEach((imageBitmap) => {\n ctx.drawImage(imageBitmap, 0, 0)\n // 从画布获取图像绘制后的 Uint8ClampedArray buffer\n const buff = ctx.getImageData(0, 0, width, height).data.buffer\n arrayBuffList.push(buff)\n })\n const delayList = info.frames.map((frame) => frame.delay)\n\n // 编码\n // https://github.com/photopea/UPNG.js/#encoder\n const pngFile = UPNG.encode(\n arrayBuffList,\n width,\n height,\n 0,\n delayList\n ) as ArrayBuffer\n\n arrayBuffList = null as any\n\n const blob = new Blob([pngFile], {\n type: 'image/vnd.mozilla.apng',\n })\n\n EVT.fire('convertSuccess')\n\n resolve(blob)\n })\n }\n}\n\nconst toAPNG = new ToAPNG()\nexport { toAPNG }\n","import { EVT } from '../EVT'\nimport { UgoiraInfo } from '../crawl/CrawlResult'\n\ndeclare const GIF: any\n\nclass ToGIF {\n constructor() {\n this.loadWorkerJS()\n }\n\n private gifWorkerUrl: string = ''\n\n // 添加转换 GIF 的 worker 文件\n private async loadWorkerJS() {\n let gifWorker = await fetch(chrome.runtime.getURL('lib/gif.worker.js'))\n const gifWorkerBolb = await gifWorker.blob()\n this.gifWorkerUrl = URL.createObjectURL(gifWorkerBolb)\n }\n\n // 转换成 GIF\n public async convert(\n ImageBitmapList: ImageBitmap[],\n info: UgoiraInfo\n ): Promise {\n return new Promise(async (resolve, reject) => {\n // 配置 gif.js\n let gif: any = new GIF({\n workers: 4,\n quality: 10,\n workerScript: this.gifWorkerUrl,\n })\n\n // 绑定渲染完成事件\n gif.on('finished', (file: Blob) => {\n EVT.fire('convertSuccess')\n resolve(file)\n })\n\n const width = ImageBitmapList[0].width\n const height = ImageBitmapList[0].height\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')!\n canvas.width = width\n canvas.height = height\n\n // 添加帧数据\n ImageBitmapList.forEach((imageBitmap, index) => {\n ctx.drawImage(imageBitmap, 0, 0)\n const ImageData = ctx.getImageData(0, 0, width, height)\n gif.addFrame(ImageData, {\n delay: info.frames![index].delay,\n })\n })\n\n // 渲染 gif\n gif.render()\n })\n }\n}\n\nconst toGIF = new ToGIF()\nexport { toGIF }\n","import { EVT } from '../EVT'\nimport { UgoiraInfo } from '../crawl/CrawlResult'\n\ndeclare const Whammy: any\n\nclass ToWebM {\n public async convert(\n ImageBitmapList: ImageBitmap[],\n info: UgoiraInfo\n ): Promise {\n return new Promise(async (resolve, reject) => {\n const width = ImageBitmapList[0].width\n const height = ImageBitmapList[0].height\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')!\n canvas.width = width\n canvas.height = height\n\n // 创建视频编码器\n const encoder = new Whammy.Video()\n\n // 添加帧数据\n ImageBitmapList.forEach((imageBitmap, index) => {\n ctx.drawImage(imageBitmap, 0, 0)\n // 把图像转换为 webp 格式的 DataURL,这样 webm 编码器内部可以直接使用,不需要进行一些重复的操作\n // https://github.com/antimatter15/whammy#basic-usage\n const url = canvas.toDataURL('image/webp', 0.9)\n encoder.add(url, info.frames![index].delay)\n })\n\n // 编码视频\n encoder.compile(false, (video: Blob) => {\n EVT.fire('convertSuccess')\n resolve(video)\n })\n })\n }\n}\n\nconst toWebM = new ToWebM()\nexport { toWebM }\n","import { lang } from './Lang'\nimport { toast } from './Toast'\n\ninterface ClipboardItem {\n readonly types: string[]\n readonly presentationStyle: 'unspecified' | 'inline' | 'attachment'\n getType(): Promise\n}\n\ninterface ClipboardItemData {\n [mimeType: string]: Blob | string | Promise\n}\n\ndeclare var ClipboardItem: {\n prototype: ClipboardItem\n new (itemData: ClipboardItemData): ClipboardItem\n}\n\ninterface Clipboard {\n read(): Promise\n write(data: ClipboardItem[]): Promise\n}\n\nclass CopyToClipboard {\n static setClipboard(text: string): Promise {\n return new Promise((resolve, reject) => {\n const type = 'text/plain'\n const blob = new Blob([text], { type })\n const data = [new ClipboardItem({ [type]: blob })]\n\n ;(window.navigator.clipboard as unknown as Clipboard).write(data).then(\n () => {\n toast.success(lang.transl('_已复制到剪贴板'))\n resolve()\n },\n () => {\n toast.error(lang.transl('_写入剪贴板失败'))\n reject()\n }\n )\n })\n }\n}\n\nexport { CopyToClipboard }\n","import { EVT } from './EVT'\nimport { settings, setSetting } from './setting/Settings'\nimport { Tools } from './Tools'\nimport { findHorizontalImageWrap } from './FindHorizontalImageWrap'\n\n// 如果一个作品的缩略图是横图,则把这个缩略图的容器的宽度设置为默认宽度的 2 倍\n// 注意:必须开启“替换方形缩略图以显示图片比例”,“横图占用二倍宽度”的功能才能生效\nclass DoubleWidthThumb {\n constructor() {\n this.bindEvents()\n }\n\n /* 双倍宽度的图片的 id(由下载器添加这个 id) */\n private readonly addId = 'doubleWidth'\n private readonly styleId = 'doubleWidthStyle'\n private readonly css = `#doubleWidth {\n width: 30% !important;\n }`\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'doubleWidthThumb') {\n // 如果开启了父级设置“显示更大的缩略图”,以及这个设置,则必须开启“替换方形缩略图以显示图片比例”\n if (\n settings.showLargerThumbnails &&\n settings.doubleWidthThumb &&\n !settings.replaceSquareThumb\n ) {\n setSetting('replaceSquareThumb', true)\n }\n\n this.setCss()\n }\n\n if (data.name === 'showLargerThumbnails') {\n this.setCss()\n }\n\n // 如果关闭了“替换方形缩略图以显示图片比例”,则需要关闭这个设置,因为这个设置无法生效\n if (data.name === 'replaceSquareThumb') {\n if (!settings.replaceSquareThumb && settings.doubleWidthThumb) {\n setSetting('doubleWidthThumb', false)\n }\n }\n })\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.setCss()\n })\n\n // 如果一个缩略图是横图,则在它的容器上添加特定 id\n findHorizontalImageWrap.onFind((wrap: HTMLElement) => {\n if (!wrap.id) {\n wrap.id = this.addId\n }\n })\n }\n\n private setCss() {\n if (Tools.notEnabledShowLargerThumb()) {\n return this.removeStyle()\n }\n\n if (\n settings.replaceSquareThumb &&\n settings.showLargerThumbnails &&\n settings.doubleWidthThumb\n ) {\n this.addStyle()\n } else {\n this.removeStyle()\n }\n }\n\n private addStyle() {\n if (document.querySelector('#' + this.styleId)) {\n return\n }\n\n const el = document.createElement('style')\n el.id = this.styleId\n el.innerHTML = this.css\n document.body.append(el)\n }\n\n private removeStyle() {\n const el = document.querySelector('#' + this.styleId)\n el && el.remove()\n }\n}\n\nnew DoubleWidthThumb()\n","import { DonwloadSkipData, DonwloadSuccessData } from './download/DownloadType'\nimport { IDData, Result } from './store/StoreType'\nimport { OutputData } from './output/OutputPanel'\nimport { SettingChangeData } from './setting/Settings'\nimport { Msg } from './MsgBox'\nimport { ArtworkData } from './crawl/CrawlResult'\n\ntype eventNames = keyof typeof EVT.list\n\n// 管理自定义事件\nclass EVENT {\n private bindOnceFlagList: string[] = []\n\n // 只绑定某个事件一次,用于防止事件重复绑定\n // 通过 flag 确认是否是同一个事件\n // 可以执行多次,不会自动解绑\n public bindOnce(flag: string, targetEvt: string, evtFun: Function) {\n const query = this.bindOnceFlagList.includes(flag)\n if (!query) {\n this.bindOnceFlagList.push(flag)\n window.addEventListener(targetEvt, function (ev) {\n evtFun(ev)\n })\n }\n }\n\n public readonly list = {\n /** 当抓取开始时触发 */\n crawlStart: 'crawlStart',\n stopCrawl: 'stopCrawl',\n /** 让下载器抓取特定的 tag,而不是自动获取当前页面的 tag(仅在 tag 搜索页面有效) */\n crawlTag: 'crawlTag',\n /** 当检查到错误的设置时触发 */\n wrongSetting: 'wrongSetting',\n /** 当获取作品的 id 列表完成时触发 */\n getIdListFinished: 'getIdListFinished',\n /** 获取了作品的 id 列表,需要下载这些 id 列表时使用 */\n crawlIdList: 'crawlIdList',\n /** 当抓取完成时触发。不管结果是否为空都会触发 */\n crawlComplete: 'crawlComplete',\n /** 当抓取结果为空时触发。触发时机晚于 crawlComplete */\n crawlEmpty: 'crawlEmpty',\n /** store 里每存储一个作品的元数据,就触发一次。如果一个元数据产生了多个结果(多图作品),只触发一次 */\n addResult: 'addResult',\n /** 当抓取完毕之后,抓取结果又发生变化时触发(比如进行多次筛选、改变设置项等,导致结果变化) */\n resultChange: 'resultChange',\n /** 当进行快速抓取时触发 */\n quickCrawl: 'quickCrawl',\n /** 抓取完毕后,可以准备开始下载时触发 */\n /** 它是一个派生事件,可以由多个其他事件触发 */\n readyDownload: 'readyDownload',\n /** 下载被取消(取消是在尚未开始下载前触发的,它不同于下载停止) */\n downloadCancel: 'downloadCancel',\n /** 开始下载时触发 */\n downloadStart: 'downloadStart',\n /** 下载状态变成暂停时触发 */\n downloadPause: 'downloadPause',\n /** 请求暂停下载 */\n requestPauseDownload: 'requestPauseDownload',\n /** 下载状态变成停止时触发 */\n downloadStop: 'downloadStop',\n /** 当文件在下载阶段下载失败时触发 */\n /** 当动图转换出错时触发 */\n downloadError: 'downloadError',\n /** 当一个文件在下载阶段被跳过时触发 */\n skipDownload: 'skipDownload',\n /** 当浏览器把一个文件保存到本地失败时触发 */\n saveFileError: 'saveFileError',\n /** 当下载的文件传递给浏览器进行保存,并且成功保存之后触发 */\n /** skipDownload 也会触发这个事件 */\n downloadSuccess: 'downloadSuccess',\n /** 下载队列里的所有文件都已经下载并保存完毕,并且没有出错的。如果有出错的,就不会触发这个事件 */\n downloadComplete: 'downloadComplete',\n /** 页面切换 */\n pageSwitch: 'pageSwitch',\n /** 页面切换,并且页面类型变化 */\n pageSwitchedTypeChange: 'pageSwitchedTypeChange',\n /** 页面切换,并且页面类型不变 */\n pageSwitchedTypeNotChange: 'pageSwitchedTypeNotChange',\n /** 程序启动时,设置初始化完毕后触发 */\n settingInitialized: 'settingInitialized',\n /** 请求重置所有设置 */\n resetSettings: 'resetSettings',\n /** 重置所有设置执行完毕 */\n resetSettingsEnd: 'resetSettingsEnd',\n /** 请求导出设置 */\n exportSettings: 'exportSettings',\n /** 请求导入设置 */\n importSettings: 'importSettings',\n /** 重新显示帮助 */\n resetHelpTip: 'resetHelpTip',\n /** 当动图转换数量发生变化时触发 */\n convertChange: 'convertChange',\n /** 当动图转换成功时触发 */\n convertSuccess: 'convertSuccess',\n /** 指示打开中间面板 */\n openCenterPanel: 'openCenterPanel',\n /** 指示关闭中间面板 */\n closeCenterPanel: 'closeCenterPanel',\n /** 中间面板已打开 */\n centerPanelOpened: 'centerPanelOpened',\n /** 中间面板已关闭 */\n centerPanelClosed: 'centerPanelClosed',\n /** 当清除多图作品时触发 */\n clearMultiple: 'clearMultiple',\n /** 当清除动图作品时触发 */\n clearUgoira: 'clearUgoira',\n /** 当手动删除作品时触发 */\n deleteWork: 'deleteWork',\n /** 当下载器在页面上创建的作品列表全部完成时触发 */\n worksUpdate: 'worksUpdate',\n /** 当需要清空下载记录时触发(只用于检测重复文件的下载记录) */\n clearDownloadRecord: 'clearDownloadRecord',\n /** 当需要导出下载记录时触发 */\n exportDownloadRecord: 'exportDownloadRecord',\n /** 当需要导入下载记录时触发 */\n importDownloadRecord: 'importDownloadRecord',\n /** 当需要清空断点续传的数据时触发 */\n clearSavedCrawl: 'clearSavedCrawl',\n /** 当从断点续传数据恢复了下载时触发 */\n resume: 'resume',\n /** 当需要导出 csv 文件时触发 */\n exportCSV: 'exportCSV',\n /** 当需要导出抓取结果时触发 */\n exportResult: 'exportResult',\n /** 当需要导入抓取结果时触发 */\n importResult: 'importResult',\n /** 当需要保存用户头像时触发 */\n saveAvatarImage: 'saveAvatarImage',\n /** 当需要保存用户头像为图标时触发 */\n saveAvatarIcon: 'saveAvatarIcon',\n /** 当需要保存用户背景图片时触发 */\n saveUserCover: 'saveUserCover',\n /** 当需要预览文件名时触发 */\n previewFileName: 'previewFileName',\n /** 当需要预览 url 时触发 */\n showURLs: 'showURLs',\n /** 当需要输出面板输出内容时触发 */\n output: 'output',\n /** 当设置表单里的设置项发生变化时触发 */\n settingChange: 'settingChange',\n /** 当下载器检测到有新版本时触发 */\n hasNewVer: 'hasNewVer',\n /** 进入批量收藏模式时触发 */\n bookmarkModeStart: 'bookmarkModeStart',\n /** 批量收藏完成时触发 */\n bookmarkModeEnd: 'bookmarkModeEnd',\n /** 需要单独显示信息时触发 */\n showMsg: 'showMsg',\n /** 需要显示冒泡提示时触发 */\n sendToast: 'sendToast',\n /** 需要清空日志区域时触发 */\n clearLog: 'clearLog',\n /** 选择背景图片 */\n selectBG: 'selectBG',\n /** 清除背景图片 */\n clearBG: 'clearBG',\n /** 点击了下载器在作品缩略图上添加的按钮时触发 */\n /** 其他按钮监听这个事件后隐藏自己,就可以避免其他按钮出现闪烁、残留的问题 */\n clickBtnOnThumb: 'clickBtnOnThumb',\n /** 显示原比例图片时触发 */\n showOriginSizeImage: 'showOriginSizeImage',\n /** 语言类型改变时触发 */\n langChange: 'langChange',\n /** 开始定时抓取时触发 */\n startTimedCrawl: 'startTimedCrawl',\n /** 请求取消定时抓取时触发*/\n cancelTimedCrawl: 'cancelTimedCrawl',\n /**当获取到页面的主题颜色时触发 */\n getPageTheme: 'getPageTheme',\n /**当下载模块向浏览器发起一个下载请求(保存文件到本地)时触发 */\n sendBrowserDownload: 'sendBrowserDownload',\n /**需要显示预览作品详细信息的面板时触发 */\n showPreviewWorkDetailPanel: 'showPreviewWorkDetailPanel',\n /**预览作品详细信息的面板关闭后触发 */\n PreviewWorkDetailPanelClosed: 'PreviewWorkDetailPanelClosed',\n /**通过鼠标滚轮事件来切换预览图 */\n wheelScrollSwitchPreviewImage: 'wheelScrollSwitchPreviewImage',\n /**当结束对一个作品的预览时触发(即预览图窗口消失时触发) */\n previewEnd: 'previewEnd',\n /**当关注的用户列表发生变化时触发 */\n followingUsersChange: 'followingUsersChange',\n }\n\n /** 触发自定义事件,大部分事件都不需要携带数据\n *\n * 如果携带了数据,可以通过 ev.detail.data 获取。如果未传递数据,则 ev.detail.data 是空对象\n */\n public fire(\n type:\n | 'crawlStart'\n | 'stopCrawl'\n | 'wrongSetting'\n | 'getIdListFinished'\n | 'crawlComplete'\n | 'crawlEmpty'\n | 'resultChange'\n | 'quickCrawl'\n | 'downloadCancel'\n | 'downloadStart'\n | 'downloadPause'\n | 'requestPauseDownload'\n | 'downloadStop'\n | 'saveFileError'\n | 'downloadComplete'\n | 'pageSwitch'\n | 'resetSettings'\n | 'resetSettingsEnd'\n | 'exportSettings'\n | 'importSettings'\n | 'resetHelpTip'\n | 'convertSuccess'\n | 'openCenterPanel'\n | 'closeCenterPanel'\n | 'centerPanelOpened'\n | 'centerPanelClosed'\n | 'clearMultiple'\n | 'clearUgoira'\n | 'worksUpdate'\n | 'clearDownloadRecord'\n | 'exportDownloadRecord'\n | 'importDownloadRecord'\n | 'clearSavedCrawl'\n | 'resume'\n | 'exportCSV'\n | 'exportResult'\n | 'importResult'\n | 'saveAvatarImage'\n | 'saveAvatarIcon'\n | 'saveUserCover'\n | 'previewFileName'\n | 'showURLs'\n | 'hasNewVer'\n | 'bookmarkModeStart'\n | 'bookmarkModeEnd'\n | 'sendToast'\n | 'clearLog'\n | 'selectBG'\n | 'clearBG'\n | 'clickBtnOnThumb'\n | 'showOriginSizeImage'\n | 'langChange'\n | 'settingInitialized'\n | 'readyDownload'\n | 'startTimedCrawl'\n | 'cancelTimedCrawl'\n | 'sendBrowserDownload'\n | 'previewEnd'\n | 'followingUsersChange'\n ): void\n\n // 对于需要携带数据的事件进行重载\n\n public fire(\n type: 'downloadError' | 'crawlTag' | 'getPageTheme',\n data: string\n ): void\n\n public fire(\n type:\n | 'pageSwitchedTypeChange'\n | 'pageSwitchedTypeNotChange'\n | 'convertChange',\n data: number\n ): void\n\n public fire(type: 'downloadSuccess', data: DonwloadSuccessData): void\n\n public fire(type: 'crawlIdList', data: IDData[]): void\n\n public fire(type: 'addResult', data: Result): void\n\n public fire(type: 'output', data: OutputData): void\n\n public fire(type: 'settingChange', data: SettingChangeData): void\n\n public fire(type: 'deleteWork', data: HTMLElement): void\n\n public fire(type: 'skipDownload', data: DonwloadSkipData): void\n\n public fire(type: 'showMsg', data: Msg): void\n\n public fire(type: 'showPreviewWorkDetailPanel', data: ArtworkData): void\n\n public fire(type: 'wheelScrollSwitchPreviewImage', data: Event): void\n\n public fire(\n type: 'PreviewWorkDetailPanelClosed',\n data: {\n x: number\n y: number\n }\n ): void\n\n public fire(type: eventNames, data?: unknown) {\n const event = new CustomEvent(type, {\n detail: { data: data === undefined ? {} : data },\n })\n window.dispatchEvent(event)\n }\n}\n\nconst EVT = new EVENT()\n\nexport { EVT }\n","import { settings } from './setting/Settings'\nimport { nameRuleManager } from './setting/NameRuleManager'\nimport './SetUserName'\nimport { store } from './store/Store'\nimport { Result } from './store/StoreType'\nimport { Config } from './Config'\nimport { DateFormat } from './utils/DateFormat'\nimport { Utils } from './utils/Utils'\nimport { Tools } from './Tools'\n\n// 生成文件名\nclass FileName {\n // 下载器所有的动图格式后缀名\n private readonly ugoiraExt = ['zip', 'webm', 'gif', 'png']\n\n private readonly addStr = '[downloader_add]'\n\n // 生成 {rank} 标记的值\n private createRank(rank: number | null): string {\n // 处理空值\n if (rank === null) {\n return ''\n }\n // string 是旧版本中使用的,以前抓取结果里的 rank 直接就是 '#1' 这样的字符串,后来改成了数字类型\n if (typeof rank === 'string') {\n return rank\n }\n // 其他的情况则应该是期望的值(数字类型)\n return '#' + rank\n }\n\n // 生成 {p_num} 标记的值\n private createPNum(data: Result) {\n // 只有插画和漫画有编号\n if (data.type === 0 || data.type === 1) {\n const index = data.index ?? Tools.getResultIndex(data)\n // 处理第一张图不带序号的情况\n if (index === 0 && settings.noSerialNo) {\n if (data.pageCount === 1 && settings.noSerialNoForSingleImg) {\n return ''\n }\n if (data.pageCount > 1 && settings.noSerialNoForMultiImg) {\n return ''\n }\n }\n\n const p = index.toString()\n // 处理在前面填充 0 的情况\n return settings.zeroPadding\n ? p.padStart(settings.zeroPaddingLength, '0')\n : p\n } else {\n // 其他类型没有编号,返回空字符串\n return ''\n }\n }\n\n // 生成 {id} 标记的值\n private createId(data: Result, p_num: string) {\n // 如果不需要添加序号,或者没有序号,则只返回数字 id\n if (p_num === '') {\n return data.idNum.toString()\n }\n // 添加序号\n return `${data.idNum}_p${p_num}`\n }\n\n // 返回收藏数的简化显示\n private getBKM1000(bmk: number): string {\n if (bmk < 1000) {\n return '0+'\n } else {\n // 1000 以上,以 1000 为单位\n const str = bmk.toString()\n return str.slice(0, str.length - 3) + '000+'\n }\n }\n\n // 在文件名前面添加一层文件夹\n // appendFolder 方法会对非法字符进行处理(包括处理路径分隔符 / 这主要是因为 tags 可能含有斜线 /,需要替换)\n private appendFolder(fullPath: string, folderName: string): string {\n const allPart = fullPath.split('/')\n allPart.splice(allPart.length - 1, 0, Utils.replaceUnsafeStr(folderName))\n return allPart.join('/')\n }\n\n // 不能出现在文件名开头的一些特定字符\n private readonly checkStartCharList = ['/', ' ']\n\n // 检查文件名开头是否含有特定字符\n private checkStartChar(str: string) {\n for (const check of this.checkStartCharList) {\n if (str.startsWith(check)) {\n return true\n }\n }\n return false\n }\n\n // 移除文件名开头的特定字符\n private removeStartChar(str: string) {\n while (this.checkStartChar(str)) {\n for (const check of this.checkStartCharList) {\n if (str.startsWith(check)) {\n str = str.replace(check, '')\n }\n }\n }\n return str\n }\n\n private readonly atList = ['@', '@']\n private RemoveAtFromUsername(name: string) {\n if (!settings.removeAtFromUsername) {\n return name\n }\n\n for (const at of this.atList) {\n let index = name.indexOf(at)\n if (index > 0) {\n name = name.substring(0, index)\n }\n }\n return name\n }\n\n // 传入命名规则和所有标记,生成文件名\n private generateFileName(rule: string, cfg: Object) {\n let result = rule\n // 把命名规则里的标记替换成实际值\n for (const [key, val] of Object.entries(cfg)) {\n if (rule.includes(key)) {\n // 空值替换成空字符串\n let temp = val.value ?? ''\n\n // 如果这个值不是字符串类型则转换为字符串\n temp = typeof temp !== 'string' ? temp.toString() : temp\n\n // 替换不可以作为文件名的特殊字符\n if (!val.safe) {\n temp = Utils.replaceUnsafeStr(temp)\n }\n\n // 添加标记前缀\n if (settings.tagNameToFileName) {\n temp = val.prefix + temp\n }\n\n // 将标记替换成结果,如果有重复的标记,全部替换\n result = result.replace(new RegExp(key, 'g'), temp)\n }\n }\n\n // 处理文件名里的一些边界情况\n\n // 如果文件名开头不可用的特殊字符\n result = this.removeStartChar(result)\n // 测试用例\n // const testStr = ' / / {page_tag} / {page_title} /{id}-{user}'\n // console.log(this.removeStartChar(testStr))\n\n // 如果文件名的尾部是 / 则去掉\n if (result.endsWith('/')) {\n result = result.substring(0, result.length - 1)\n }\n\n // 处理连续的 /\n result = result.replace(/\\/{2,100}/g, '/')\n\n return result\n }\n\n /**传入一个抓取结果,生成其文件名 */\n public createFileName(data: Result) {\n // 命名规则\n let userSetName = nameRuleManager.rule\n\n // 检查是否要使用特定的其他命名规则\n // 这是一个定制功能,所以这里设置的规则只会修改原有的文件名,而不会涉及到文件夹部分\n // 如果一个作品符合多条规则,则把多条规则合并。例如:\n // 包含[原神],命名规则{id}_genshin\n // 包含[Loli],命名规则{id}_loli\n // 包含[AI生成],命名规则{id}_AI\n // 比如说有一张ai生成的原神萝莉图例子,以上三个tag都有,那么把文件命名为{id}_genshin_loli_AI\n let diffNames: string[] = []\n if (settings.UseDifferentNameRuleIfWorkHasTagSwitch) {\n const workTags = data.tags.map((tag) => tag.toLowerCase())\n for (const item of settings.UseDifferentNameRuleIfWorkHasTagList) {\n for (const setTag of item.tags) {\n if (workTags.includes(setTag.toLowerCase())) {\n diffNames.push(item.rule)\n // 一条规则里的 tag 可能会有多个存在于同一个作品的标签列表里\n // 如果匹配到就跳过这条规则,以避免重复添加规则对应的命名规则\n break\n }\n }\n }\n }\n\n if (diffNames.length > 0) {\n let fileName = diffNames.join('').replace(/{id}/g, '')\n fileName = '{id}' + fileName\n\n const names = userSetName.split('/')\n names.splice(names.length - 1, 1, fileName)\n userSetName = names.join('/')\n }\n\n // 判断是否要为每个作品创建单独的文件夹\n let createFolderForEachWork =\n settings.workDir &&\n store.downloadCount[data.idNum] > settings.workDirFileNumber\n\n let r18FolderName = settings.r18Folder ? settings.r18FolderName : ''\n\n const allNameRule =\n userSetName +\n (createFolderForEachWork ? settings.workDirNameRule : '') +\n r18FolderName\n\n // 1 生成所有命名标记的值\n // 对于一些较为耗时的计算,先判断用户设置的命名规则里是否使用了这个标记,如果未使用则不计算\n const p_num = this.createPNum(data)\n const cfg = {\n '{p_title}': {\n value: store.title,\n prefix: '',\n safe: false,\n },\n '{page_title}': {\n value: store.title,\n prefix: '',\n safe: false,\n },\n '{p_tag}': {\n value: store.tag,\n prefix: '',\n safe: false,\n },\n '{page_tag}': {\n value: store.tag,\n prefix: '',\n safe: false,\n },\n '{id}': {\n value: this.createId(data, p_num),\n prefix: '',\n safe: true,\n },\n '{id_num}': {\n value: data.idNum || parseInt(data.id),\n prefix: '',\n safe: true,\n },\n '{p_num}': {\n value: !allNameRule.includes('{p_num}') ? null : p_num,\n prefix: '',\n safe: true,\n },\n '{rank}': {\n value: !allNameRule.includes('{rank}')\n ? null\n : this.createRank(data.rank),\n prefix: '',\n safe: true,\n },\n '{title}': {\n value: data.title,\n prefix: 'title_',\n safe: false,\n },\n '{user}': {\n value: this.RemoveAtFromUsername(\n settings.setUserNameList[data.userId] || data.user\n ),\n prefix: 'user_',\n safe: false,\n },\n '{userid}': {\n value: data.userId,\n prefix: 'uid_',\n safe: true,\n },\n '{user_id}': {\n value: data.userId,\n prefix: 'uid_',\n safe: true,\n },\n '{px}': {\n value: !allNameRule.includes('{px}')\n ? null\n : data.fullWidth\n ? data.fullWidth + 'x' + data.fullHeight\n : '',\n prefix: '',\n safe: true,\n },\n '{tags}': {\n value: !allNameRule.includes('{tags}')\n ? null\n : data.tags.join(settings.tagsSeparator),\n prefix: 'tags_',\n safe: false,\n },\n '{tags_translate}': {\n value: !allNameRule.includes('{tags_translate}')\n ? null\n : data.tagsWithTransl.join(settings.tagsSeparator),\n prefix: 'tags_',\n safe: false,\n },\n '{tags_transl_only}': {\n value: !allNameRule.includes('{tags_transl_only}')\n ? null\n : data.tagsTranslOnly.join(settings.tagsSeparator),\n prefix: 'tags_',\n safe: false,\n },\n '{bmk}': {\n value: data.bmk,\n prefix: 'bmk_',\n safe: true,\n },\n '{bmk_id}': {\n value: data.bmkId || '',\n prefix: 'bmk-id_',\n safe: true,\n },\n '{bmk_1000}': {\n value: this.getBKM1000(data.bmk),\n prefix: 'bmk_',\n safe: true,\n },\n '{like}': {\n value: data.likeCount,\n prefix: 'like_',\n safe: true,\n },\n '{view}': {\n value: data.viewCount,\n prefix: 'view_',\n safe: true,\n },\n '{date}': {\n value: !allNameRule.includes('{date}')\n ? null\n : DateFormat.format(data.date, settings.dateFormat),\n prefix: '',\n safe: false,\n },\n '{upload_date}': {\n value: !allNameRule.includes('{upload_date}')\n ? null\n : DateFormat.format(data.uploadDate, settings.dateFormat),\n prefix: '',\n safe: false,\n },\n '{task_date}': {\n value: !allNameRule.includes('{task_date}')\n ? null\n : DateFormat.format(store.crawlCompleteTime, settings.dateFormat),\n prefix: '',\n safe: false,\n },\n '{type}': {\n value: Config.worksTypeName[data.type],\n prefix: '',\n safe: true,\n },\n '{AI}': {\n value: data.aiType === 2 ? 'AI' : '',\n prefix: '',\n safe: true,\n },\n '{series_title}': {\n value: data.seriesTitle || '',\n prefix: '',\n safe: false,\n },\n '{series_order}': {\n value: data.seriesOrder === null ? '' : '#' + data.seriesOrder,\n prefix: '',\n safe: true,\n },\n '{series_id}': {\n value: data.seriesId,\n prefix: '',\n safe: true,\n },\n '{sl}': {\n value: data.sl ?? 0,\n prefix: '',\n safe: true,\n },\n }\n\n // 2 生成文件名\n let result = this.generateFileName(userSetName, cfg)\n\n // 3 根据某些设置向结果中添加新的文件夹\n // 注意:添加文件夹的顺序会影响文件夹的层级,所以不可随意更改顺序\n\n // 根据作品类型自动创建对应的文件夹\n if (settings.createFolderByType) {\n // 根据作品类型和对应开关确定是否需要要为其建立文件夹\n const allSwitch = [\n settings.createFolderByTypeIllust,\n settings.createFolderByTypeManga,\n settings.createFolderByTypeUgoira,\n settings.createFolderByTypeNovel,\n ]\n if (allSwitch[data.type]) {\n const folder = Config.worksTypeName[data.type]\n result = this.appendFolder(result, folder)\n }\n }\n\n // 根据 sl 创建文件夹\n if (settings.createFolderBySl && data.sl !== null) {\n const folder = 'sl' + data.sl.toString()\n result = this.appendFolder(result, folder)\n }\n\n // 根据第一个匹配的 tag 建立文件夹\n if (settings.createFolderByTag && settings.createFolderTagList.length > 0) {\n const workTags = data.tagsWithTransl.map((val) => val.toLowerCase())\n\n // 循环用户输入的 tag 列表,查找作品 tag 是否含有匹配项\n // 这样用户输入的第一个匹配的 tag 就会作为文件夹名字\n // 不要循环作品 tag 列表,因为那样找到的第一个匹配项未必是用户输入的第一个\n // 例如 用户输入顺序:巨乳 欧派\n // 作品 tag 里的顺序:欧派 巨乳\n for (const tag of settings.createFolderTagList) {\n // 查找匹配的时候转换成小写\n const nowTag = tag.toLowerCase()\n if (workTags.includes(nowTag)) {\n // 设置为文件夹名字的时候使用原 tag(不转换成小写)\n result = this.appendFolder(result, tag)\n break\n }\n }\n }\n\n // 把 R18(G) 作品存入指定目录里\n if (settings.r18Folder && (data.xRestrict === 1 || data.xRestrict === 2)) {\n result = this.appendFolder(\n result,\n this.generateFileName(r18FolderName, cfg)\n )\n }\n\n // 为每个作品创建单独的文件夹\n if (createFolderForEachWork) {\n const workDirName = this.generateFileName(settings.workDirNameRule, cfg)\n // 生成文件名。由于用户可能会添加斜线来建立多层路径,所以需要循环添加每个路径\n const allPath = workDirName.split('/')\n for (const path of allPath) {\n if (path.length > 0) {\n result = this.appendFolder(result, path)\n }\n }\n }\n\n // 4 文件夹部分和文件名已经全部生成完毕,处理一些边界情况\n\n // 处理连续的 / 有时候两个斜线中间的字段是空值,最后就变成两个斜线挨在一起了\n result = result.replace(/\\/{2,100}/g, '/')\n\n // 对每一层路径和文件名进行处理\n const paths = result.split('/')\n\n for (let i = 0; i < paths.length; i++) {\n // 去掉每层路径首尾的空格\n // 把每层路径头尾的 . 替换成全角的.因为 Chrome 不允许头尾使用 .\n paths[i] = paths[i].trim().replace(/^\\./g, '.').replace(/\\.$/g, '.')\n\n // 处理路径是 Windows 保留文件名的情况(不需要处理后缀名)\n paths[i] = Utils.handleWindowsReservedName(paths[i], this.addStr)\n }\n\n result = paths.join('/')\n\n // 5 生成后缀名\n // 如果是动图,那么此时根据用户设置的动图保存格式,更新其后缀名\n if (\n this.ugoiraExt.includes(data.ext) &&\n data.ugoiraInfo &&\n settings.imageSize !== 'thumb'\n ) {\n // 当下载图片的方形缩略图时,不修改其后缀名,因为此时下载的是作品的静态缩略图,不是动图\n data.ext = settings.ugoiraSaveAs\n }\n // 如果是小说,那么此时根据用户设置的动图保存格式,更新其后缀名\n if (data.type === 3) {\n data.ext = settings.novelSaveAs\n }\n const extResult = '.' + data.ext\n\n // 6 处理不创建文件夹的情况\n if (settings.notFolderWhenOneFile && store.result.length === 1) {\n // 舍弃文件夹部分,只保留文件名\n result = result.split('/').pop()!\n }\n\n // 7 文件名长度限制\n // 不计算文件夹的长度,只计算 文件名+后缀名 部分\n // 理论上文件夹部分也可能会超长,但是实际使用中几乎不会有人这么设置,所以不处理\n if (settings.fileNameLengthLimitSwitch) {\n let limit = settings.fileNameLengthLimit\n const allPart = result.split('/')\n const lastIndex = allPart.length - 1\n\n if (allPart[lastIndex].length + extResult.length > limit) {\n allPart[lastIndex] = allPart[lastIndex].substring(\n 0,\n limit - extResult.length\n )\n }\n\n result = allPart.join('/')\n }\n\n // 8 添加后缀名\n result += extResult\n\n // 9 返回结果\n return result\n }\n}\n\nconst fileName = new FileName()\nexport { fileName }\n","import { pageType } from './PageType'\n\n// 查找横图作品的缩略图和容器\nclass FindHorizontalImageWrap {\n constructor() {\n this.obBody()\n }\n\n // 寻找作品缩略图的容器时使用的选择器\n // 并不是所有容器都需要处理,只需要处理应用了“显示更大的缩略图”的容器\n // 有些缩略图并不会被放大,也就不用处理它们的容器\n private wrapSelectors = ['.searchList', 'li[size=\"1\"]']\n\n // 首先会动态生成 li(或者是包含很多 li 的容器元素)\n // 但是此时 li 里面没有 img 标签,而是用一个 figure 标签占位\n // 然后先为一些 li 生成里面的 img 标签(在用户主页会先给首屏显示的 li 生成 img 标签,但是在其他页面也有可能直接为所有 li 生成 img)\n // 有时候当页面滚动到下面的 li 的时候,才会生成里面的 img 标签\n // observer 可以捕获到添加的 img 标签,并且有 src 属性\n // 如果开启了下载器的替换方形缩略图功能,则捕获到的 src 是替换后的\n // 如果 img 的 src 是在缓存里的(并且没有禁用缓存),则捕获到它时就已经 complete 了\n private obBody() {\n const ob = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.addedNodes.length > 0) {\n for (const el of mutation.addedNodes) {\n // 从添加的元素里寻找缩略图容器\n const e = el as HTMLElement\n const wrapList: HTMLElement[] = []\n // 如果添加的是单个的 li,,则判断它是不是缩略图容器\n if (e.nodeName === 'LI') {\n if (\n e.getAttribute('size') === '1' ||\n e.querySelector('div[width=\"184\"]') ||\n e.classList.contains('searchList')\n ) {\n wrapList.push(e)\n }\n } else if (e.nodeName === 'IMG' && (e as HTMLImageElement).src) {\n if (pageType.type === pageType.list.ArtworkSearch) {\n // 在搜索页面里,添加的元素是 img 而不是其容器 li\n const li =\n e.parentElement?.parentElement?.parentElement?.parentElement\n ?.parentElement?.parentElement\n if (li && li.nodeName === 'LI') {\n this.readyCheckImage(e as HTMLImageElement, li)\n }\n }\n } else if (e.nodeType === 1) {\n // 添加的不是 li,则试图从元素中寻找缩略图容器\n for (const selector of this.wrapSelectors) {\n const elList = e.querySelectorAll(selector)\n for (const el of elList) {\n wrapList.push(el as HTMLLIElement)\n }\n // 如果这个选择器查找到了元素,就不再查找下一个选择器,以免重复查找\n if (elList.length > 0) {\n break\n }\n }\n // 如果前面没有找到缩略图容器,则尝试其他办法\n // 注意,这里使用的选择器不是容器本身的选择器,而是容器的子元素,所以需要单独处理\n // if (wrapList.length === 0) {\n // const elList = e.querySelectorAll('div[width=\"184\"]')\n // for (const el of elList) {\n // if(el.parentNode?.nodeName === 'LI'){\n // wrapList.push(el.parentNode as HTMLLIElement)\n // }\n // }\n // }\n }\n\n // 监视缩略图容器\n for (const wrap of wrapList) {\n this.obWorkWrap(wrap)\n }\n }\n }\n }\n })\n\n ob.observe(document.body, {\n childList: true,\n subtree: true,\n })\n }\n\n // 监视作品缩略图容器内部的 img 元素\n private obWorkWrap(wrap: HTMLElement) {\n // 已经有 img 元素的情况\n if (pageType.type === pageType.list.ArtworkSearch) {\n // .searchList 是下载器在搜索页面生成的元素,里面一开始就有 img 元素,所以不需要监视\n if (wrap.classList.contains('searchList') || wrap.nodeName === 'LI') {\n const img = wrap.querySelector('img')! as HTMLImageElement\n this.readyCheckImage(img, wrap)\n return\n }\n }\n\n // 如果是动态生成 img 的情况,则需要对 wrap 使用监视器\n const ob = new MutationObserver((records) => {\n for (const record of records) {\n // 生成作品缩略图内部的 img 时,addedNodes 数组里只有 img 标签这一个元素\n if (\n record.addedNodes.length === 1 &&\n record.addedNodes[0].nodeName === 'IMG'\n ) {\n const img = record.addedNodes[0] as HTMLImageElement\n this.readyCheckImage(img, wrap, ob)\n }\n }\n })\n ob.observe(wrap, {\n childList: true,\n subtree: true,\n })\n }\n\n // 当图片加载完成时检查它的宽高,并取消监视\n private readyCheckImage(\n img: HTMLImageElement,\n wrap: HTMLElement,\n ob?: MutationObserver\n ) {\n if (img?.complete) {\n this.checkImage(img, wrap)\n ob && ob.disconnect()\n } else {\n img &&\n (img.onload = () => {\n this.checkImage(img, wrap)\n ob && ob.disconnect()\n })\n }\n }\n\n // 当 img 加载完成后,计算 img 是横图还是竖图\n private checkImage(img: HTMLImageElement, wrap: HTMLElement) {\n if (!img.src.includes('1200.jpg')) {\n return\n }\n if (img.naturalWidth / img.naturalHeight > 1) {\n this.find(wrap)\n }\n }\n\n private onFindCB: Function[] = []\n // 注册回调函数\n public onFind(cb: Function) {\n this.onFindCB.push(cb)\n }\n\n // 当找到横图的容器时会执行回调函数\n private find(wrap: HTMLElement) {\n for (const cb of this.onFindCB) {\n cb(wrap)\n }\n }\n}\n\nconst findHorizontalImageWrap = new FindHorizontalImageWrap()\nexport { findHorizontalImageWrap }\n","import { EVT } from './EVT'\n\nclass HiddenBrowserDownloadBar {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'hiddenBrowserDownloadBar') {\n chrome.runtime.sendMessage({\n msg: 'setShelfEnabled',\n value: !data.value,\n })\n // 如果这个设置为 true,则应该向后台传递 false\n }\n })\n }\n}\n\nnew HiddenBrowserDownloadBar()\n","import { API } from './API'\nimport { EVT } from './EVT'\nimport { pageType } from './PageType'\nimport { Tools } from './Tools'\nimport { store } from './store/Store'\nimport { Utils } from './utils/Utils'\nimport { List } from './ManageFollowing'\nimport { settings } from './setting/Settings'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { Config } from './Config'\n\nclass HighlightFollowingUsers {\n constructor() {\n if (!Utils.isPixiv()) {\n return\n }\n\n this.delayCheckUpdate()\n\n window.setTimeout(() => {\n this.startMutationObserver()\n }, 0)\n\n chrome.runtime.onMessage.addListener(async (msg, sender, sendResponse) => {\n if (msg.msg === 'dispathFollowingData') {\n this.receiveData(msg.data)\n EVT.fire('followingUsersChange')\n }\n\n if (msg.msg === 'updateFollowingData') {\n const following = await this.getList()\n\n console.log(lang.transl('_已更新关注用户列表'))\n toast.success(lang.transl('_已更新关注用户列表'), {\n position: 'topCenter',\n })\n\n chrome.runtime.sendMessage({\n msg: 'setFollowingData',\n data: {\n user: store.loggedUserID,\n following: following,\n total: this.total,\n },\n })\n }\n\n if (msg.msg === 'getLoggedUserID') {\n sendResponse({ loggedUserID: store.loggedUserID })\n }\n })\n\n if (store.loggedUserID) {\n chrome.runtime.sendMessage({\n msg: 'requestFollowingData',\n })\n }\n\n // 每当下载器获取了页面的主题颜色时\n window.addEventListener(EVT.list.getPageTheme, (ev: CustomEventInit) => {\n if (ev.detail.data) {\n if (this.pageTheme !== ev.detail.data) {\n // 当用户改变页面主题时,一些页面元素会重新生成,但是目前的代码不能监听到这个变化\n // 所以需要来更新高亮状态\n window.setTimeout(() => {\n this.makeHighlight()\n }, 0)\n }\n this.pageTheme = ev.detail.data\n // 给 html 标签添加自定义 data 属性,这是因为原本的 html 标签在没有任何 data 属性的时候,\n // 可能是普通模式,也可能是夜间模式,所以下载器必须自行添加一个属性,\n // 才能让高亮样式在不同模式中有不同的效果\n document.documentElement.setAttribute(\n 'data-xzpagetheme',\n this.pageTheme\n )\n }\n })\n\n // 在作品页内,作品大图下方和右侧的作者名字变化时,监视器无法监测到变化,尤其是右侧的名字\n // 所以用定时器执行\n window.addEventListener(EVT.list.pageSwitch, () => {\n if (\n !Config.mobile &&\n (pageType.type === pageType.list.Artwork ||\n pageType.type === pageType.list.Novel)\n ) {\n let time = 0\n let interval = 500\n let timer = window.setInterval(() => {\n time = time + interval\n if (time > 5000) {\n window.clearInterval(timer)\n }\n const leftA = document.querySelectorAll('#root main a[href*=user]')\n const rightA = document.querySelectorAll(\n '#root main+aside a[href*=user]'\n )\n const allA = Array.from(leftA).concat(Array.from(rightA))\n this.makeHighlight(allA as HTMLAnchorElement[])\n }, interval)\n }\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'highlightFollowingUsers') {\n if (!data.value) {\n this.clearHighlight()\n } else {\n this.makeHighlight()\n }\n }\n })\n }\n\n private pageTheme = ''\n\n /**当前登录用户的关注用户列表 */\n private following: string[] = []\n\n /**当前登录用户的关注用户总数 */\n private total = 0\n\n private checkUpdateTimer?: number\n\n private readonly highlightClassName = 'pbdHighlightFollowing'\n\n private async receiveData(list: List) {\n const thisUserData = list.find((data) => data.user === store.loggedUserID)\n if (thisUserData) {\n this.following = thisUserData.following\n store.followingUserIDList = this.following\n this.total = thisUserData.total\n\n this.makeHighlight()\n } else {\n // 恢复的数据里没有当前用户的数据,需要获取\n this.checkNeedUpdate()\n }\n }\n\n /**全量获取当前用户的所有关注列表 */\n private async getList(): Promise {\n toast.show(lang.transl('_正在加载关注用户列表'), {\n position: 'topCenter',\n })\n\n // 需要获取公开关注和私密关注\n const publicList = await this.getFollowingList('show')\n const privateList = await this.getFollowingList('hide')\n\n const followingIDList = publicList.concat(privateList)\n return followingIDList\n }\n\n /**获取公开或私密关注的用户 ID 列表 */\n private async getFollowingList(rest: 'show' | 'hide'): Promise {\n const ids: string[] = []\n let offset = 0\n let total = await this.getFollowingTotal(rest)\n\n if (total === 0) {\n return ids\n }\n\n // 每次请求 100 个关注用户的数据\n const limit = 100\n\n while (ids.length < total) {\n const res = await API.getFollowingList(\n store.loggedUserID,\n rest,\n '',\n offset,\n limit\n )\n offset = offset + limit\n\n for (const users of res.body.users) {\n ids.push(users.userId)\n }\n\n if (res.body.users.length === 0) {\n // 实际获取到的关注用户数量可能比 total 少,这是正常的\n // 例如 toal 是 3522,实际上获取到的可能是 3483 个,再往后都是空数组了\n break\n }\n }\n\n return ids\n }\n\n /**只请求第一页的数据,以获取 total */\n private async getFollowingTotal(rest: 'show' | 'hide') {\n const res = await API.getFollowingList(store.loggedUserID, rest, '', 0, 24)\n\n return res.body.total\n }\n\n private getUpdateTime() {\n // 每次检查更新的最低时间间隔是 5 分钟\n // 如果用户打开了多个标签页,它们都会加载关注列表的第一页来检查数量\n // 所以间隔不宜太短\n const base = 300000\n\n // 产生一个 10 分钟内的随机数\n const random = Math.random() * 600000\n\n // 通常不需要担心间隔时间太大导致数据更新不及时\n // 因为多个标签页里只要有一个更新了数据,所有的标签页都会得到新数据\n return base + random\n }\n\n private async delayCheckUpdate() {\n window.clearTimeout(this.checkUpdateTimer)\n this.checkUpdateTimer = window.setTimeout(async () => {\n this.checkNeedUpdate()\n return this.delayCheckUpdate()\n }, this.getUpdateTime())\n }\n\n /**检查关注用户的数量,如果数量发生变化则执行全量更新 */\n private async checkNeedUpdate() {\n // 在搜索页面里移除已关注用户的作品 功能依赖关注用户列表,所以如果用户启用了该功能,也需要更新关注列表\n if (\n !settings.highlightFollowingUsers &&\n !settings.removeWorksOfFollowedUsersOnSearchPage\n ) {\n return\n }\n\n // 因为本程序不区分公开和非公开关注,所以只储存总数\n let newTotal = 0\n for (const rest of ['show', 'hide']) {\n const total = await this.getFollowingTotal(rest as 'show' | 'hide')\n newTotal = newTotal + total\n }\n\n if (newTotal !== this.total) {\n // console.log(`关注用户总数量变化 ${this.total} -> ${newTotal}`)\n this.total = newTotal\n chrome.runtime.sendMessage({\n msg: 'needUpdateFollowingData',\n user: store.loggedUserID,\n })\n }\n }\n\n // 检查包含用户 id 的链接,并且需要以 id 结束\n // 这是因为 id 之后还有字符的链接是不需要的,例如:\n // https://www.pixiv.net/en/users/17207914/artworks\n // 下载器只匹配用户主页的链接,不匹配用户子页面的链接\n private readonly checkUserLinkReg = /\\/users\\/(\\d+)$/\n\n private makeHighlight(aList?: HTMLAnchorElement[]) {\n if (!settings.highlightFollowingUsers) {\n return\n }\n\n // 这里不需要检查 this.followingList.length === 0 的情况\n // 因为可能之前的数量是 1,之后用户取消关注,变成了 0,那么下面的代码依然需要执行\n // 以把之前高亮过的元素取消高亮\n\n const allA = aList || document.querySelectorAll('a')\n for (const a of allA) {\n let match = false\n if (a.href) {\n // 小说排行榜里的用户链接普遍带有 /novels 后缀,所以不要求以用户 id 结尾\n const test = a.href.match(\n pageType.type === pageType.list.NovelRanking\n ? /\\/users\\/(\\d+)/\n : this.checkUserLinkReg\n )\n if (test && test.length > 1) {\n match = this.following.includes(test[1])\n\n // 要高亮的元素\n let target: Element = a\n\n // 如果用户链接的 a 标签包含子元素,则将 className 添加到它的某个子元素上\n // 这是为了尽量精确的只高亮用户链接,避免高亮区域里包含其他不必要的元素\n // 但是有些页面里不适合这样做,例如在排行榜页面里,a 标签的第一个元素是用户头像\n // 此时如果只高亮第一个元素,那么效果就很不明显,所以就需要高亮整个 a 标签\n\n // 在多数情况下,高亮第一个子元素\n if (a.firstChild && a.firstChild.nodeType === 1) {\n target = a.firstChild as HTMLElement\n }\n\n // 在某些页面里高亮最后一个子元素\n if (\n pageType.type === pageType.list.ArtworkRanking ||\n pageType.type === pageType.list.AreaRanking\n ) {\n if (a.lastChild && a.lastChild.nodeType === 1) {\n target = a.lastChild as HTMLElement\n }\n }\n\n target.classList[match ? 'add' : 'remove'](this.highlightClassName)\n }\n }\n }\n\n this.handleUserHomePage()\n }\n\n private startMutationObserver() {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.addedNodes.length > 0) {\n for (const addedNodes of mutation.addedNodes) {\n if (addedNodes.nodeName === 'A') {\n // 直接是 A 标签的情况\n this.makeHighlight(Array.from([addedNodes as HTMLAnchorElement]))\n } else {\n // addedNodes 也会包含纯文本,所以需要判断 nodeType\n // https://developer.mozilla.org/zh-CN/docs/Web/API/Node/nodeType\n if (addedNodes.nodeType === 1) {\n // 如果是元素,则查找里面的 A 标签\n const allA = (addedNodes as HTMLElement).querySelectorAll('a')\n this.makeHighlight(Array.from(allA))\n } else {\n // 如果不是元素,而且它也不是 A 标签,则尝试查找它的父元素是不是 A 标签\n // 这是因为在作品页内,作品大图下方和右侧的作者名字变化时,上面的代码无法监测到\n // 但是这段代码只能检测到下方的,右侧的还是监测不到。而且可能拖累性能,所以我注释掉了\n // const parent = mutation.target.parentElement\n // if (parent && parent.nodeName === 'A') {\n // this.makeHighlight([parent as HTMLAnchorElement])\n // }\n }\n }\n }\n }\n }\n })\n\n // 注意:本模块最好不要监听 attributes 变化,因为本模块自己就会修改元素的 attributes\n // 监听 attributes 并进行处理可能导致一些代码重复执行,或者死循环\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n })\n }\n\n private handleUserHomePage() {\n if (pageType.type === pageType.list.UserHome) {\n // 在用户主页里,高亮用户名(因为用户名没有超链接,需要单独处理)\n const userID = Tools.getUserId()\n const flag = this.following.includes(userID)\n const h1 = document.querySelector('h1') as HTMLHeadingElement\n if (h1) {\n h1.classList[flag ? 'add' : 'remove'](this.highlightClassName)\n }\n\n // 取消用户主页里“主页”按钮的高亮,它具有用户主页链接,但它不是用户名\n const selector = Config.mobile ? '.v-nav-tabs a' : 'nav a'\n const homeBtn = document.querySelector(selector)\n if (homeBtn) {\n homeBtn.classList.remove(this.highlightClassName)\n }\n }\n }\n\n private clearHighlight() {\n const allElement = document.querySelectorAll('.' + this.highlightClassName)\n for (const el of allElement) {\n el.classList.remove(this.highlightClassName)\n }\n }\n}\n\nnew HighlightFollowingUsers()\n","/// \nimport { API } from './API'\nimport { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { loading } from './Loading'\nimport { states } from './store/States'\nimport { toast } from './Toast'\nimport { Tools } from './Tools'\nimport { ArtworkData } from './crawl/CrawlResult'\nimport { bookmark } from './Bookmark'\nimport { cacheWorkData } from './store/CacheWorkData'\nimport { Colors } from './Colors'\nimport { downloadOnClickBookmark } from './download/DownloadOnClickBookmark'\nimport { pageType } from './PageType'\n\n// 所有参数\ninterface Config {\n // 作品 id\n // 默认从 url 中获取作品 id\n workId: string\n // 图片最少有多少张时才会启用查看器\n // 默认为 2\n imageNumber: number\n // 查看大图时,显示哪种尺寸的图片\n // 默认为 original\n imageSize: 'original' | 'regular' | 'small'\n // 初始化之后,是否直接启动查看器\n // 默认为 false\n autoStart: boolean\n // 获取作品数据期间,是否显示 loading 动画\n // 默认为 false\n showLoading: boolean\n}\n\n// 可选参数\ninterface ConfigOptional {\n workId?: string\n imageNumber?: number\n imageSize?: 'original' | 'regular' | 'small'\n autoStart?: boolean\n showLoading?: boolean\n}\n\n// 对 Viewer 进行修改以供下载器使用\n// 原版是接收页面上已存在的缩略图列表,但在下载器里它需要从作品 id 获取数据,生成缩略图列表。并且需要进行一些改造\nclass ImageViewer {\n // new() 不会创建图片查看器,需要再手动执行 init()\n // 这是因为有的模块需要获取异步操作之后生成的元素,但是构造函数无法返回异步操作,所以使用 init() 进行包装\n constructor(cfg: ConfigOptional) {\n this.cfg = Object.assign(this.cfg, cfg)\n }\n\n private myViewer!: Viewer // 查看器\n private viewerWarpper?: HTMLDivElement // 图片列表的容器\n private viewerUl: HTMLUListElement = document.createElement('ul') // 图片列表的 ul 元素\n\n private show = false // 当前查看器实例是否处于显示状态\n private isOriginalSize = false // 是否原尺寸显示图片\n\n // 图片查看器初始化时,会获取作品数据,保存到这个成员\n private workData: ArtworkData | undefined\n private pageCount = 1\n private firstImageURL = '' // 第一张图片的 url\n\n // 默认配置\n private cfg: Config = {\n workId: Tools.getIllustId(),\n imageNumber: 2,\n imageSize: 'original',\n autoStart: false,\n showLoading: false,\n }\n\n private readonly addBtnClass = 'viewer-add-btn'\n\n public async init() {\n // 删除旧的图片查看器元素\n const oldViewerContainer = document.querySelector('.viewer-container')\n oldViewerContainer && oldViewerContainer.remove()\n\n const wrap = await this.createImageList()\n if (wrap) {\n this.bindHotKey()\n this.configureViewer()\n }\n return wrap\n }\n\n // 事件会重复绑定,设计如此,这是因为每次绑定时的 this 是不同的,必须重新绑定。而且不会冲突\n private bindHotKey() {\n // 按 F 进入/退出 1:1 查看模式\n document.addEventListener('keydown', (event) => {\n if (event.code === 'KeyF') {\n if (this.show) {\n this.isOriginalSize = !this.isOriginalSize\n this.setOriginalSize()\n }\n }\n })\n\n // 按 Alt + B 收藏当前作品\n // 因为 Pixiv 会在按下 B 键时收藏当前作品,所以下载器不能使用 B 键。尝试阻止 Pixiv 的事件但是没有成功\n document.addEventListener('keydown', (event) => {\n if (event.altKey && event.code === 'KeyB') {\n if (this.show) {\n this.addBookmark()\n }\n }\n })\n\n // 按 D 下载当前作品\n document.addEventListener('keydown', (event) => {\n if (event.code === 'KeyD') {\n if (this.show) {\n this.download()\n }\n }\n })\n\n // 监听左右方向键,防止在看图时,左右方向键导致 Pixiv 切换作品\n window.addEventListener(\n 'keydown',\n (event) => {\n if (event.code === 'ArrowLeft' || event.code === 'ArrowRight') {\n if (this.show) {\n // 阻止事件冒泡\n event.stopPropagation()\n // 控制切换到上一张或者下一张\n // true 表示启用循环切换\n event.code === 'ArrowLeft'\n ? this.myViewer.prev(true)\n : this.myViewer.next(true)\n }\n }\n },\n true\n )\n }\n\n // 图片查看器需要一个图片列表元素,创建缩略图列表\n private async createImageList(): Promise {\n return new Promise(async (resolve) => {\n // 获取作品数据\n if (cacheWorkData.has(this.cfg.workId)) {\n this.workData = cacheWorkData.get(this.cfg.workId)\n } else {\n this.cfg.showLoading && (loading.show = true)\n\n const unlisted = pageType.type === pageType.list.Unlisted\n const data = await API.getArtworkData(this.cfg.workId, unlisted)\n this.workData = data\n cacheWorkData.set(data)\n\n this.cfg.showLoading && (loading.show = false)\n }\n\n const body = this.workData!.body\n // 处理插画、漫画、动图作品,不处理其他类型的作品\n if (\n body.illustType === 0 ||\n body.illustType === 1 ||\n body.illustType === 2\n ) {\n // 如果图片数量达到指定值,则会创建创建缩略图,启用图片查看器\n if (body.pageCount >= this.cfg.imageNumber) {\n this.pageCount = body.pageCount\n this.firstImageURL =\n body.urls[this.cfg.imageSize] || body.urls.original\n\n // 缩略图列表的结构: div > ul > li > img\n this.viewerWarpper = document.createElement('div')\n this.viewerUl = document.createElement('ul')\n this.viewerUl.classList.add('beautify_scrollbar')\n this.viewerWarpper.appendChild(this.viewerUl)\n this.viewerWarpper.style.display = 'none'\n\n // 生成 UL 里面的缩略图列表\n let html: string[] = []\n for (let index = 0; index < body.pageCount; index++) {\n const str = `
      • `\n html.push(str)\n }\n this.viewerUl.innerHTML = html.join('')\n }\n }\n\n return resolve(this.viewerWarpper)\n })\n }\n\n // 配置图片查看器\n private configureViewer() {\n // 图片查看器显示之后\n this.viewerUl.addEventListener('shown', () => {\n this.show = true\n this.addDownloadBtn()\n this.addBookmarkBtn()\n\n // 如果图片数量只有 1 个,则不显示缩略图一栏\n const navbar = document.querySelector('.viewer-navbar') as HTMLDivElement\n if (navbar) {\n // 控制不透明度,这样它依然会占据空间,不会导致工具栏下移\n navbar.style.opacity = this.pageCount > 1 ? '1' : '0'\n }\n\n // 点击 1:1 按钮时\n const oneToOne = document.querySelector('.viewer-one-to-one')\n if (oneToOne) {\n oneToOne.setAttribute('title', lang.transl('_原始尺寸') + ' (F)')\n oneToOne.addEventListener(\n 'click',\n (ev) => {\n // 阻止冒泡,否则放大过程中会多一次闪烁(推测可能是这个按钮原有的事件导致的,停止冒泡之后就好了)\n ev.stopPropagation()\n this.isOriginalSize = !this.isOriginalSize\n this.setOriginalSize()\n },\n true\n )\n }\n })\n\n // 退出图片查看器时(可能尚未完全退出)\n this.viewerUl.addEventListener('hide', () => {\n this.show = false\n })\n\n // 查看每一张图片时,如果处于 1:1 模式,就把图片缩放到 100%\n // viewed 事件是图片加载完成时触发的\n this.viewerUl.addEventListener('viewed', () => {\n if (this.isOriginalSize) {\n this.setOriginalSize()\n }\n })\n\n // 因为选项里的 size 是枚举类型,所以在这里也要定义一个枚举\n enum ToolbarButtonSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n }\n\n // 配置新的看图组件\n const handleToTop = this.moveToTop.bind(this)\n const pageCount = this.pageCount\n const firstImageURL = this.firstImageURL\n\n this.myViewer = new Viewer(this.viewerUl, {\n toolbar: {\n zoomIn: 0,\n zoomOut: 0,\n oneToOne: 1,\n reset: 0,\n prev: 1,\n play: {\n show: 0,\n size: ToolbarButtonSize.Large,\n },\n next: 1,\n rotateLeft: 0,\n rotateRight: 0,\n flipHorizontal: 0,\n flipVertical: 0,\n },\n\n url(image: HTMLImageElement) {\n return image.dataset.src!\n },\n\n viewed(ev) {\n handleToTop()\n // 当图片显示完成(加载完成)后,预加载下一张图片\n let index = ev.detail.index\n\n if (index < pageCount - 1) {\n index++\n }\n\n const nextImg = firstImageURL.replace('p0', 'p' + index)\n const img = new Image()\n img.src = nextImg\n },\n\n // 取消一些动画,比如切换图片时,图片从小变大出现的动画\n transition: false,\n keyboard: true,\n // 不显示 title(图片名和宽高信息)\n title: false,\n // 不显示缩放比例\n tooltip: false,\n })\n\n // 预加载第一张图片\n const img = new Image()\n img.src = firstImageURL\n\n if (this.cfg.autoStart) {\n this.myViewer.show()\n }\n }\n\n // 设置原始尺寸显示\n private setOriginalSize() {\n if (this.isOriginalSize) {\n // 1:1 显示图片\n this.myViewer.zoomTo(1)\n this.moveToTop()\n } else {\n // 缩小图片以适应可视区域\n const w = this.myViewer.image.naturalWidth\n const h = this.myViewer.image.naturalHeight\n const vw = this.myViewer.viewerData.width * 0.9\n const vh = this.myViewer.viewerData.height * 0.9\n const wScale = vw / w\n const hScale = vh / h\n let scale = Math.min(wScale, hScale)\n if (scale >= 1) {\n return\n }\n this.myViewer.zoomTo(scale)\n\n const nowTop = Number.parseInt(this.myViewer.image.style.marginTop)\n this.myViewer.move(0, vh * 0.05 - nowTop)\n }\n }\n\n // 如果图片的高度超出可视区域高度,则从图片的顶部开始显示\n private moveToTop() {\n const img = this.myViewer.image as HTMLImageElement\n const windowHeight = window.innerHeight\n if (img.height <= windowHeight) {\n return\n }\n // 如果图片高度大于视口高度,让它从顶部显示\n // 目的是把图片的 marginTop 设为 0,但不能直接修改 marginTop,否则鼠标拖动图片时会抖动\n const nowTop = Number.parseInt(this.myViewer.image.style.marginTop)\n this.myViewer.move(0, 0 - nowTop)\n }\n\n /**在图片查看器的工具栏里添加按钮\n *\n * 元素必须具有 id 属性,用于区分\n */\n private addBtn(btn: HTMLElement) {\n // 最后的查看器元素就是最新添加的查看器\n const allContainer = document.querySelectorAll('.viewer-container')\n const last = allContainer[allContainer.length - 1]\n\n const test = last.querySelector('#' + btn.id)\n if (test) {\n return\n }\n\n const one2one = last.querySelector('.viewer-one-to-one')\n if (one2one) {\n return one2one.insertAdjacentElement('afterend', btn) as HTMLElement\n } else {\n console.error('Add btn failed')\n }\n }\n\n // 在图片查看器里添加下载按钮\n private addDownloadBtn() {\n const li = document.createElement('li')\n li.setAttribute('role', 'button')\n li.setAttribute('title', lang.transl('_下载') + ' (D)')\n li.classList.add(this.addBtnClass)\n li.textContent = '↓'\n li.id = 'imageViewerDownloadBtn'\n\n this.addBtn(li)\n\n li.addEventListener('click', () => {\n this.download()\n })\n }\n\n // 在图片查看器里添加收藏按钮\n private addBookmarkBtn() {\n const btn = document.createElement('li')\n btn.setAttribute('role', 'button')\n btn.setAttribute('title', lang.transl('_收藏') + ' (Alt + B)')\n btn.classList.add(this.addBtnClass)\n btn.style.fontSize = '14px'\n btn.textContent = '✩'\n btn.id = 'imageViewerBookmarkBtn'\n this.addBtn(btn)\n\n btn.addEventListener('click', async () => {\n // 添加收藏\n this.addBookmark()\n\n // 下载这个作品\n downloadOnClickBookmark.send(this.workData!.body.illustId)\n })\n }\n\n private async addBookmark() {\n // 显示提示\n toast.show(lang.transl('_收藏'), {\n bgColor: Colors.bgBlue,\n })\n\n const res = await bookmark.add(\n this.cfg.workId,\n 'illusts',\n Tools.extractTags(this.workData!)\n )\n if (res === 200) {\n toast.success(lang.transl('_已收藏'))\n }\n }\n\n // 下载当前查看的作品\n private download() {\n states.quickCrawl = true\n\n // 发送要下载的作品 id\n EVT.fire('crawlIdList', [\n {\n id: this.cfg.workId,\n type: 'illusts',\n },\n ])\n\n // 显示提示\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n}\n\nexport { ImageViewer }\n","// 根据页面类型来初始化抓取流程和一些特定的功能\nimport { EVT } from './EVT'\nimport { pageType } from './PageType'\n\nimport { InitHomePage } from './crawlMixedPage/InitHomePage'\nimport { InitArtworkPage } from './crawlArtworkPage/InitArtworkPage'\nimport { InitUserPage } from './crawlMixedPage/InitUserPage'\nimport { InitBookmarkLegacyPage } from './crawlMixedPage/InitBookmarkLegacyPage'\nimport { InitBookmarkPage } from './crawlMixedPage/InitBookmarkPage'\nimport { InitSearchArtworkPage } from './crawlArtworkPage/InitSearchArtworkPage'\nimport { InitAreaRankingPage } from './crawlArtworkPage/InitAreaRankingPage'\nimport { InitRankingArtworkPage } from './crawlArtworkPage/InitRankingArtworkPage'\nimport { InitPixivisionPage } from './crawlArtworkPage/InitPixivisionPage'\nimport { InitBookmarkDetailPage } from './crawlArtworkPage/InitBookmarkDetailPage'\nimport { InitBookmarkNewPage } from './crawlMixedPage/InitBookmarkNewPage'\nimport { InitDiscoverPage } from './crawlArtworkPage/InitDiscoverPage'\nimport { InitNewArtworkPage } from './crawlArtworkPage/InitNewArtworkPage'\nimport { InitNovelPage } from './crawlNovelPage/InitNovelPage'\nimport { InitNovelSeriesPage } from './crawlNovelPage/InitNovelSeriesPage'\nimport { InitSearchNovelPage } from './crawlNovelPage/InitSearchNovelPage'\nimport { InitRankingNovelPage } from './crawlNovelPage/InitRankingNovelPage'\nimport { InitNewNovelPage } from './crawlNovelPage/InitNewNovelPage'\nimport { InitArtworkSeriesPage } from './crawlArtworkPage/InitArtworkSeriesPage'\nimport { InitFollowingPage } from './crawlMixedPage/InitFollowingPage'\nimport { InitUnsupportedPage } from './crawl/InitUnsupportedPage'\nimport { InitUnlistedPage } from './crawlMixedPage/InitUnlistedPage'\nimport { InitRequestPage } from './crawl/InitRequestPage'\n\nclass InitPage {\n constructor() {\n this.initPage()\n\n // 页面类型变化时,初始化抓取流程\n window.addEventListener(EVT.list.pageSwitchedTypeChange, () => {\n setTimeout(() => {\n this.initPage()\n }, 0)\n })\n }\n\n private initPage() {\n switch (pageType.type) {\n case pageType.list.Home:\n return new InitHomePage()\n case pageType.list.Artwork:\n return new InitArtworkPage()\n case pageType.list.UserHome:\n return new InitUserPage()\n case pageType.list.BookmarkLegacy:\n return new InitBookmarkLegacyPage()\n case pageType.list.Bookmark:\n return new InitBookmarkPage()\n case pageType.list.ArtworkSearch:\n return new InitSearchArtworkPage()\n case pageType.list.AreaRanking:\n return new InitAreaRankingPage()\n case pageType.list.ArtworkRanking:\n return new InitRankingArtworkPage()\n case pageType.list.Pixivision:\n return new InitPixivisionPage()\n case pageType.list.BookmarkDetail:\n return new InitBookmarkDetailPage()\n case pageType.list.NewArtworkBookmark:\n return new InitBookmarkNewPage()\n case pageType.list.Discover:\n return new InitDiscoverPage()\n case pageType.list.NewArtwork:\n return new InitNewArtworkPage()\n case pageType.list.Novel:\n return new InitNovelPage()\n case pageType.list.NovelSeries:\n return new InitNovelSeriesPage()\n case pageType.list.NovelSearch:\n return new InitSearchNovelPage()\n case pageType.list.NovelRanking:\n return new InitRankingNovelPage()\n case pageType.list.NewNovelBookmark:\n return new InitBookmarkNewPage()\n case pageType.list.NewNovel:\n return new InitNewNovelPage()\n case pageType.list.ArtworkSeries:\n return new InitArtworkSeriesPage()\n case pageType.list.Following:\n return new InitFollowingPage()\n case pageType.list.Unlisted:\n return new InitUnlistedPage()\n case pageType.list.Request:\n return new InitRequestPage()\n default:\n return new InitUnsupportedPage()\n }\n }\n}\n\nnew InitPage()\n","import { Config } from './Config'\nimport { lang } from './Lang'\nimport { theme } from './Theme'\n\ninterface Option {\n /**可选,输入框的最大宽度。注意:如果页面(或父元素)的宽度不够,输入框的宽度会自动缩小。 */\n width?: number\n /**输入框的 HTML 标签是 input 还是 textarea。默认为 input */\n type?: 'input' | 'textarea'\n /**仅当输入框为 textarea 时,可以通过 rows 设置高度(行数) */\n rows?: number\n /**可选,在输入框上方可以显示一段说明文字 */\n instruction?: string\n /**可选,输入框里显示的占位符 */\n placeholder?: string\n /**可选,传递输入框的默认值。 */\n value?: string\n /**可选,提交按钮里显示的文字。点击按钮时会提交 */\n submitButtonText?: string\n}\n\nclass Input {\n /**所有选项皆是可选的 */\n constructor(option?: Option) {\n this.init(option)\n }\n\n private defultOption: Option = {\n width: 600,\n type: 'input',\n rows: 3,\n instruction: '',\n placeholder: '',\n value: '',\n submitButtonText: lang.transl('_提交'),\n }\n\n public value = ''\n\n private id = ''\n\n private submitted = false\n private cancelled = false\n\n private init(option?: Option) {\n const _option = Object.assign(this.defultOption, option || {})\n this.value = _option.value!\n this.id = `input` + new Date().getTime()\n this.create(_option)\n }\n\n private create(option: Option) {\n const example = `
        \n

        instruction

        \n
        \n \n \n \n \n
        \n
        `\n\n const wrap = document.createElement('div')\n wrap.classList.add('XZInputWrap')\n Config.mobile && wrap.classList.add('mobile')\n wrap.id = this.id\n // 这里设置的宽度是粗略值,后面会再修改\n wrap.style.width = option.width! + 200 + 'px'\n theme.register(wrap)\n\n if (option.instruction) {\n const p = document.createElement('p')\n p.classList.add('XZInputInstruction')\n p.innerHTML = option.instruction\n wrap.append(p)\n }\n\n const container = document.createElement('div')\n container.classList.add('XZInputContainer')\n\n const input = document.createElement(option.type!)\n input.classList.add('XZInput')\n input.setAttribute('placeholder', option.placeholder!)\n input.style.flexBasis = option.width! + 'px'\n if (option.type === 'input') {\n input.setAttribute('type', 'text')\n input.setAttribute('value', option.value!)\n } else {\n input.textContent = option.value!\n input.setAttribute('rows', option.rows!.toString())\n }\n container.append(input)\n\n const submitButton = document.createElement('button')\n submitButton.classList.add('XZInputButton')\n submitButton.textContent = option.submitButtonText!\n container.append(submitButton)\n\n const cancelButton = document.createElement('button')\n cancelButton.classList.add('XZInputButton', 'cancel')\n cancelButton.textContent = lang.transl('_取消')\n container.append(cancelButton)\n\n wrap.append(container)\n\n // 由于 wrap 宽度要考虑按钮宽度,但按钮宽度不固定,所以要先添加到页面上,获取按钮实际宽度,再调整 wrap 宽度\n wrap.style.opacity = '0'\n document.body.append(wrap)\n\n // 根据按钮宽度,重设 wrap 宽度\n const submitRect = submitButton.getClientRects()\n const cancelRect = cancelButton.getClientRects()\n // 14 是按钮的 margin-left 值\n wrap.style.width =\n option.width! + 14 + submitRect[0].width + 14 + cancelRect[0].width + 'px'\n wrap.style.opacity = '1'\n\n input.focus()\n if (option.value) {\n input.setSelectionRange(option.value.length, option.value.length)\n }\n\n input.addEventListener('change', () => {\n this.value = input.value\n })\n\n // 按 Esc 直接移除本组件,并且不会执行 onSubmit 回调\n input.addEventListener('keydown', (ev: any) => {\n if (ev.code === 'Escape') {\n this.remove()\n }\n })\n\n submitButton.addEventListener('click', () => {\n this.submitted = true\n this.remove()\n })\n\n cancelButton.addEventListener('click', () => {\n this.cancelled = true\n this.remove()\n })\n }\n\n private remove() {\n const wrap = document.querySelector(`#${this.id}`)\n wrap && wrap.remove()\n }\n\n /**当用户点击提交按钮后,返回 value。注意:可能会返回空字符串\n * 如果用户点击取消按钮,则抛出 reject\n */\n public submit(): Promise {\n return new Promise((resolve, reject) => {\n window.setTimeout(() => {\n if (this.cancelled) {\n return reject('')\n }\n if (this.submitted) {\n return resolve(this.value)\n }\n return resolve(this.submit())\n }, 100)\n })\n }\n}\n\nexport { Input }\n","import { langText } from './LangText'\nimport { EVT } from './EVT'\n\ntype LangTypes = 'zh-cn' | 'zh-tw' | 'en' | 'ja' | 'ko' | 'ru'\n\n// 语言类\nclass Lang {\n constructor() {\n this.htmlLangType = this.getHtmlLangType()\n this.type = this.htmlLangType\n this.bindEvents()\n }\n\n // 用户在下载器设置里选择的语言\n public type!: LangTypes\n\n // 用户在 Pixiv 使用的语言。不会动态变化\n public htmlLangType!: LangTypes\n\n public readonly langTypes = ['zh-cn', 'zh-tw', 'en', 'ja', 'ko', 'ru']\n\n private readonly flagIndex: Map = new Map([\n ['zh-cn', 0],\n ['zh-tw', 1],\n ['en', 2],\n ['ja', 3],\n ['ko', 4],\n ['ru', 5],\n ])\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name !== 'userSetLang') {\n return\n }\n const old = this.type\n this.type = data.value === 'auto' ? this.htmlLangType : data.value\n if (this.type !== old) {\n EVT.fire('langChange')\n this.elList.forEach((el) => {\n this.handleMark(el)\n })\n }\n })\n }\n\n // 获取页面使用的语言,返回语言标记\n private getHtmlLangType(): LangTypes {\n const flag = document.documentElement.lang\n switch (flag) {\n case 'zh':\n case 'zh-CN':\n case 'zh-Hans':\n return 'zh-cn' // 简体中文\n\n case 'ja':\n return 'ja' // 日本語\n\n case 'zh-Hant':\n case 'zh-tw':\n case 'zh-TW':\n return 'zh-tw' // 繁體中文\n\n case 'ko':\n return 'ko' // 한국어\n\n default:\n return 'en' // English\n }\n }\n\n // translate\n public transl(name: keyof typeof langText, ...arg: string[]) {\n // if(!langText[name]){\n // console.log(`not found lang ${name}`)\n // }\n let content = langText[name][this.flagIndex.get(this.type)!]\n arg.forEach((val) => (content = content.replace('{}', val)))\n return content\n }\n\n // 保存注册的元素\n // 在注册的元素里设置特殊的标记,让本模块可以动态更新其文本\n private elList: HTMLElement[] = []\n\n public register(el: HTMLElement) {\n this.elList.push(el)\n this.handleMark(el)\n }\n\n // 查找元素上的标记,设置其文本和属性\n private handleMark(wrap: HTMLElement) {\n // 设置 innerHTML\n const textEl = wrap.querySelectorAll(\n '*[data-xztext]'\n ) as NodeListOf\n for (const el of textEl) {\n // 因为有些文本中含有 html 标签,所以这里需要使用 innerHTML 而不是 textContent\n el.innerHTML = this.transl(el.dataset.xztext! as any)\n }\n // 元素自身存在 xztext 标记的情况\n const text = wrap.dataset.xztext\n if (text) {\n wrap.innerHTML = this.transl(text as any)\n }\n\n // 设置带参数的 innerHTML\n const textArgsEl = wrap.querySelectorAll(\n '*[data-xztextargs]'\n ) as NodeListOf\n textArgsEl.forEach((el) => this.handleTextArgs(el))\n // 元素自身存在 xztextargs 标记的情况\n const textargs = wrap.dataset.xztextargs\n if (textargs) {\n this.handleTextArgs(wrap)\n }\n\n // 设置 tip\n const tipEl = wrap.querySelectorAll(\n '*[data-xztip]'\n ) as NodeListOf\n for (const el of tipEl) {\n el.dataset.tip = this.transl(el.dataset.xztip! as any)\n }\n\n // 设置 placeholder\n const placeholderEl = wrap.querySelectorAll(\n '*[data-xzplaceholder]'\n ) as NodeListOf\n for (const el of placeholderEl) {\n el.setAttribute(\n 'placeholder',\n this.transl(el.dataset.xzplaceholder! as any)\n )\n }\n\n // 设置 title\n const titleEl = wrap.querySelectorAll(\n '*[data-xztitle]'\n ) as NodeListOf\n for (const el of titleEl) {\n el.setAttribute('title', this.transl(el.dataset.xztitle! as any))\n }\n // 元素自身存在 title 标记的情况\n const title = wrap.dataset.xztitle\n if (title) {\n wrap.setAttribute('title', this.transl(title as any))\n }\n }\n\n private handleTextArgs(el: HTMLElement) {\n let args = el.dataset.xztextargs!.split(',')\n const first = args.shift()\n el.innerHTML = this.transl(first as any, ...args)\n }\n\n // 需要更新已注册元素的文本时调用此方法\n public updateText(el: HTMLElement, ...args: string[]) {\n // 清空文本的情况\n if (args === undefined || args[0] === '') {\n delete el.dataset.xztext\n delete el.dataset.xztextargs\n el.innerHTML = ''\n return\n }\n // 设置文本\n if (args.length === 1) {\n // 无参数文本\n el.dataset.xztext = args[0]\n el.innerHTML = this.transl(args[0] as any)\n delete el.dataset.xztextargs\n } else {\n // 有参数文本\n el.dataset.xztextargs = args.join(',')\n const first = args.shift()\n el.innerHTML = this.transl(first as any, ...args)\n delete el.dataset.xztext\n }\n }\n}\n\nconst lang = new Lang()\n\nexport { lang }\n","import { Config } from './Config'\n\n// 储存下载器使用的多语言文本\n// 在属性名前面加上下划线,和文本内容做出区别\n// {} 是占位符\n//
        是换行\n\nconst langText = {\n _只下载已收藏: [\n '只下载已收藏',\n '只下載已收藏',\n 'Download only bookmarked works',\n 'ブックマークのみをダウンロードする',\n '북마크된 작품만 다운로드',\n 'Загружайте только работы, сохраненные в закладках',\n ],\n _下载作品类型: [\n '下载作品类型',\n '下載作品類型',\n 'Download work type',\n 'ダウンロード作品の種類',\n '다운로드할 작품 유형',\n 'Типы контента для загрузки',\n ],\n _作品类型: [\n '作品类型',\n '作品類型',\n 'Type of work',\n '作品の種類',\n '작품 유형',\n 'Тип работы',\n ],\n _不能含有tag: [\n '不能含有标签',\n '不能含有標籤',\n 'Exclude tag',\n 'タグを除外する',\n '제외 태그',\n 'Исключить ярлык',\n ],\n _排除tag的提示文字: [\n '您可在下载前设置要排除的标签,这样在下载时将不会下载含有这些标签的作品。不区分大小写;如需排除多个标签,请使用英文逗号分隔。请注意,要排除的标签的优先级大于要包含的标签的优先级。',\n '可在下載前設定要排除的標籤,下載時將排除含有這些標籤的作品,不區分大小寫;如需排除多個標籤,請使用半形逗號(,)分隔。請注意,要排除的標籤優先於要包含的標籤。',\n 'Before downloading, you can set the tag you want to exclude. Not case sensitive; If you need to set multiple tags, you can use comma (,) separated. The excluded tag takes precedence over the included tag',\n 'ダウンロード前に、除外するタグを設定できます。大文字と小文字を区別しない;複数のタグを設定する必要がある場合は、「,」で区切ってください。除外されたタグは、必要なタグよりも優先されます',\n '다운로드하기 전에 제외해야 하는 태그를 설정할 수 있습니다. 대소문자를 구분하지 않습니다. 여러 태그를 설정해야 하는 경우 쉼표(,)로 구분합니다. 제외된 태그가 포함된 태그보다 우선합니다.',\n 'Перед загрузкой можно задать тег, который необходимо исключить. Не чувствителен к регистру; Если вам нужно задать несколько тегов, вы можете использовать разделение запятыми (,). Исключенный тег имеет приоритет над включенным тегом',\n ],\n _设置了排除tag之后的提示: [\n '排除标签:',\n '排除標籤:',\n 'Excludes tag: ',\n '以下のタグを除外:',\n '제외 태그: ',\n 'Исключающий тег: ',\n ],\n _必须含有tag: [\n '必须含有标签',\n '必須含有標籤',\n 'Include tag',\n '必要なタグ',\n '포함 태그',\n 'Включать ярлык',\n ],\n _必须tag的提示文字: [\n '您可在下载前设置作品里必须包含的标签,不区分大小写;如需包含多个标签,请使用英文逗号分隔。',\n '可在下載前設定作品裡必須包含的標籤,不區分大小寫;如需包含多個標籤,請使用半形逗號(,)分隔。',\n 'Before downloading, you can set the tag that must be included. Not case sensitive; If you need to set multiple tags, you can use comma (,) separated.',\n 'ダウンロードする前に、必要なタグを設定することができます。大文字と小文字を区別しない;複数のタグを設定する必要がある場合は、「,」で区切ってください。',\n '다운로드하기 전에 포함해야 하는 태그를 설정할 수 있습니다. 대소문자를 구분하지 않습니다. 여러 태그를 설정해야 하는 경우 쉼표(,)로 구분합니다.',\n 'Перед загрузкой можно задать тег, который должен быть включен. Не чувствителен к регистру; Если вам нужно задать несколько тегов, вы можете использовать разделение запятыми (,).',\n ],\n _设置了必须tag之后的提示: [\n '包含标签:',\n '包含標籤:',\n 'Include tag: ',\n '以下の タグ を含める:',\n '포함 태그: ',\n 'Включающий тег: ',\n ],\n _图片的宽高比例: [\n '图片的宽高比例',\n '圖片的寬高比例',\n 'Aspect ratio',\n '画像の縦横比',\n '종횡비',\n 'Сотношение сторон',\n ],\n _设置宽高比例Title: [\n '设置宽高比例,也可以手动输入宽高比',\n '設定寬高比,也可以手動輸入寬高比。',\n 'Set the aspect ratio, or manually type the aspect ratio',\n '縦横比を設定する、手動で縦横比を入力することもできる',\n '종횡비를 설정하거나, 값을 수동으로 입력할 수 있습니다.',\n 'Установите соотношение сторон или введите соотношение сторон вручную',\n ],\n _不限制: [\n '不限制',\n '不限制',\n 'not limited',\n '無制限',\n '제한 없음',\n 'Без лимитов',\n ],\n _横图: ['横图', '橫圖', 'Horizontal', '横長', '가로', 'Горизонтальный'],\n _竖图: ['竖图', '豎圖', 'Vertical', '縦長', '세로', 'Вертикальный'],\n _正方形: ['正方形', '正方形', 'Square', '正方形', '정사각형', 'Квадрат(1:1)'],\n _宽高比: ['宽高比', '寬高比', 'Ratio', '縦横比', '종횡비 ', 'Соотношение'],\n _设置了宽高比之后的提示: [\n '宽高比:{}',\n '寬高比:{}',\n 'Aspect ratio: {}',\n '縦横比:{}',\n '종횡비: {}',\n 'Соотношение сторон: {}',\n ],\n _宽高比必须是数字: [\n '宽高比必须是数字',\n '寬高比必須是數字',\n 'The aspect ratio must be a number',\n '縦横比は数値でなければなりません',\n '종횡비는 숫자여야 합니다',\n 'Соотношение сторон должно быть числом',\n ],\n _图片的宽高: [\n '图片的宽高',\n '圖片的寬高',\n 'width and height',\n '画像の幅と高さ',\n '너비 그리고 높이',\n 'Ширина и высота',\n ],\n _筛选宽高的提示文字: [\n '请输入最小宽度和最小高度,不会下载不符合要求的图片。',\n '請輸入最小寬度和最小高度,只會下載符合要求的圖片。',\n 'Please type the minimum width and minimum height. Will not download images that do not meet the requirements',\n '最小幅と最小高さを入力してください。要件を満たしていない画像はダウンロードされません。',\n '최소 너비와 최소 높이를 입력해주세요, 요구 사항을 충족하지 않는 이미지는 다운로드하지 않습니다.',\n 'Введите минимальную ширину и минимальную высоту. Не соответствующие требованиям изображения, загружаться не будут',\n ],\n _本次输入的数值无效: [\n '本次输入的数值无效',\n '本次輸入的數值無效',\n 'Invalid input',\n '無効な入力',\n '잘못된 입력',\n 'Недопустимый ввод',\n ],\n _宽度: ['宽度', '寬度', 'Width', '幅', '너비', 'Ширина'],\n _或者: [' 或者 ', ' 或是 ', ' or ', ' または ', '또는', 'или'],\n _并且: [' 并且 ', ' 並且 ', ' and ', ' そして ', '그리고', 'и'],\n _高度: ['高度', '高度', 'height', '高さ', '높이', 'высота'],\n _抓取多少作品: [\n '抓取多少作品',\n '擷取多少作品',\n 'How many works to crawl',\n 'クロールする作品の数',\n '긁어올 작품 ',\n 'Какое колличество работ сканировать',\n ],\n _抓取多少页面: [\n '抓取多少页面',\n '擷取多少頁面',\n 'How many pages to crawl',\n 'クロールするページ数',\n '긁어올 페이지 ',\n 'Какое колличество страниц сканироватьь',\n ],\n _收藏数量: [\n '收藏数量',\n '收藏數量',\n 'Number of bookmarks',\n 'ブックマークの数',\n '북마크 수',\n 'Колличество закладок',\n ],\n _设置收藏数量的提示: [\n '如果作品的收藏数小于设置的数字,作品不会被下载。',\n '只會下載設定收藏數範圍內的作品。',\n 'If the number of bookmarks of the work is less than the set number, the work will not be downloaded.',\n '作品のブックマークされた数が設定された数字よりも少ない場合、作品はダウンロードされません。',\n '작품의 북마크 수가 설정된 값보다 적을 경우 작품은 다운로드되지 않습니다.',\n 'Если количество закладок произведения меньше заданного, произведение не будет загружено',\n ],\n _筛选收藏数的提示文字: [\n '请输入一个数字,如果作品的收藏数小于这个数字,作品不会被下载。',\n '請輸入數字,只會下載設定收藏數範圍內的作品。',\n 'Please type a number. If the number of bookmarks of the work is less than this number, the work will not be downloaded.',\n '数字を入力してください。 作品のブックマークされた数がこの数字より少ない場合、作品はダウンロードされません。',\n '숫자를 입력해주세요. 작품의 북마크 수가 이 수보다 적을 경우 작품은 다운로드되지 않습니다.',\n 'Пожалуйста, введите число. Если количество закладок произведения меньше этого числа, произведение не будет загружено.',\n ],\n _收藏数大于: [\n '收藏数 >= ',\n '收藏數 >= ',\n 'Number of bookmarks >= ',\n 'ブックマークの数 >= ',\n '북마크 수 >= ',\n 'Количество закладок >= ',\n ],\n _收藏数小于: [\n '收藏数 <= ',\n '收藏數 <= ',\n 'Number of bookmarks <= ',\n 'ブックマークの数 <= ',\n '북마크 수 <=',\n 'Количество закладок <= ',\n ],\n _本次任务已全部完成: [\n '本次任务已全部完成。',\n '本次工作已全部完成。',\n 'This task has been completed.',\n 'この作業は完了しました。',\n '이 작업은 완료되었습니다.',\n 'Эта задача была выполнена.',\n ],\n _本次任务条件: [\n '本次任务条件: ',\n '本次工作條件:',\n 'This task condition: ',\n 'この作業の条件:',\n '이 작업 조건: ',\n 'Это условие задачи: ',\n ],\n _参数不合法本次操作已取消: [\n '参数不合法,本次操作已取消。',\n '參數不合法,本次動作已取消。',\n 'Parameter is not legal, this operation has been canceled.',\n 'パラメータは有効ではありません。この操作はキャンセルされました。',\n '매개변수가 잘못되었습니다, 이 작업은 취소됩니다.',\n 'Параметр не является разрешенным, операция отменена.',\n ],\n _本次操作已取消: [\n '本次操作已取消',\n '本次動作已取消',\n 'This operation has been canceled',\n 'この操作はキャンセルされました',\n '이 작업이 취소되었습니다.',\n 'Эта операция была отменена',\n ],\n _向下获取所有作品: [\n '向下获取所有作品',\n '向下取得所有作品',\n 'download all the work from this page.',\n 'このページからすべての作品をダウンロードする。',\n '모든 작품 다운로드',\n 'загрузить все работы с этой страницы',\n ],\n _从本页开始下载提示: [\n '从当前页面开始下载。
        如果要限制下载的页数,请输入从 1 开始的数字。
        1 为仅下载本页,-1 为下载所有页面。',\n '從當前頁面開始下載。
        如果要限制下載的頁數,請輸入從 1 開始的數字。
        1 為僅下載本頁,-1 為下載所有頁面。',\n 'Download from the current page.
        If you want to set the number of pages to download, type a number starting at 1.
        1 is to download only this page, -1 to download all pages.',\n '現在のページからダウンロードしてください。
        ダウンロードするページを設定する場合は、1から始まる数字を入力してください。
        1 は現在のページのみをダウンロードする,すべてのページをダウンロードするには -1。',\n '현재 페이지에서 다운로드합니다.
        다운로드할 페이지 수를 설정하려면 1로 시작하는 숫자를 입력해주세요.
        1은 이 페이지만 다운로드합니다, -1은 모든 페이지를 다운로드합니다.',\n 'Загрузка с текущей страницы.
        Если вы хотите задать количество страниц для загрузки, введите число, начиная с 1.
        1 - это загрузка только этой страницы, -1 для загрузки всех страниц.',\n ],\n _下载所有页面: [\n '下载所有页面',\n '下載所有頁面',\n 'download all pages',\n 'すべてのページをダウンロードする',\n '모든 페이지 다운로드',\n 'загрузить все страницы',\n ],\n _下载x个相关作品: [\n '下载 {} 个相关作品',\n '下載 {} 個相關作品',\n 'download {} related works.',\n '関連作品 {} 枚をダウンロードする。',\n '관련 작품 {}개를 다운로드',\n 'скачать {} связанные работы',\n ],\n _下载所有相关作品: [\n '下载所有相关作品',\n '下載所有相關作品',\n 'download all related works.',\n '関連作品をすべてダウンロードする。',\n '모든 관련 작품 다운로드',\n 'скачать все соответствующие работы.',\n ],\n _下载推荐作品: [\n '下载推荐作品',\n '下載推薦作品',\n 'download recommended works',\n 'おすすめ作品をダウンロードする',\n '추천 작품 다운로드',\n 'скачать рекомендуемые работы',\n ],\n _下载排行榜前x个作品: [\n '下载排行榜前 {} 个作品',\n '下載排行榜前 {} 個作品',\n 'download the top {} works in the ranking list',\n 'ランク前 {} 位の作品をダウンロードする。',\n '랭킹 목록 상위 {}개의 작품 다운로드',\n 'загрузить лучшие {} работы в рейтинговом списке',\n ],\n _输入超过了最大值: [\n '您输入的数字超过了最大值',\n '輸入的數字超出最大值',\n 'The number you set exceeds the maximum',\n '入力した番号が最大値を超えています',\n '설정하신 수가 최대값을 초과합니다',\n 'Заданное вами число превышает максимальное',\n ],\n _从本页开始下载x页: [\n '从本页开始下载 {} 页',\n '從本頁開始下載 {} 頁',\n 'download {} pages from this page',\n 'このページから {} ページをダウンロードする',\n '이 페이지부터 {} 페이지 다운로드',\n 'Начать загрузку с страниц этой {} страницы',\n ],\n _从本页开始下载x个: [\n '从本页开始下载 {} 个作品',\n '從本頁開始下載 {} 個作品',\n 'Download {} works from this page.',\n 'このページから {} 枚の作品をダウンロード。',\n '이 페이지부터 {}개의 작품 다운로드',\n 'Загрузить {} работы с этой страницы.',\n ],\n _任务开始: [\n '任务开始',\n '工作開始',\n 'Task starts',\n '作業が開始されます',\n '작업 시작',\n 'Задание начинается',\n ],\n _排除作品类型: [\n '排除作品类型:',\n '排除作品類型:',\n 'Excludes these types of works: ',\n 'これらのタイプの作品を除外:',\n '제외된 작품 유형: ',\n 'Исключает эти виды работ: ',\n ],\n _多图作品: [\n '多图作品',\n '多圖作品',\n 'Multi-image works',\n '複数画像作品',\n '여러 이미지 작품',\n 'Работа с несколькими изображениями',\n ],\n _多图下载设置: [\n '多图下载设置',\n '多圖下載設定',\n 'Download multi-image works',\n '複数画像設定',\n '여러 이미지 작품 다운로드',\n 'Загрузить работы с несколькими изображениями',\n ],\n _不下载: ['不下载', '不下載', 'No', '必要なし', '아니요', 'Нет'],\n _全部下载: ['全部下载', '全部下載', 'Yes', '全部ダウンロード', '네', 'Да'],\n _插画: [\n '插画',\n '插畫',\n 'Illustrations',\n 'イラスト',\n '일러스트',\n 'Иллюстрации',\n ],\n _漫画: ['漫画', '漫畫', 'Manga', '漫画', '만화', 'Манга'],\n _动图: [\n '动图',\n '動圖',\n 'Ugoira',\n 'うごイラ',\n '움직이는 일러스트',\n 'Ugoira(гиф)',\n ],\n _动图保存格式: [\n '动图保存格式',\n '動圖儲存格式',\n 'Save the ugoira work as',\n 'うごイラの保存タイプ',\n '움직이는 일러스트 작품 저장 형식',\n 'Сохранить Ugoira как',\n ],\n _动图保存格式title: [\n '下载动图时,可以把它转换成视频文件',\n '下載動圖時,可轉換為影片檔。',\n 'When you download a ugoira work, you can convert it to a video file.',\n 'うごイラをダウンロードするとき、動画に変換することができます。',\n '움직이는 일러스트 작품을 다운로드 하면, 동영상 파일로 변환할 수 있습니다.',\n 'Когда вы скачиваете произведение ugoira, вы можете конвертировать его в видеофайл.',\n ],\n _webmVideo: [\n 'WebM 视频',\n '影片(WebM)',\n 'WebM video',\n 'WebM ビデオ',\n 'WebM 동영상',\n 'WebM видео',\n ],\n _gif: [\n 'GIF 图片',\n '圖片(GIF)',\n 'GIF image',\n 'GIF 画像',\n 'GIF 이미지',\n 'GIF изображение',\n ],\n _apng: [\n 'APNG 图片',\n '圖片(APNG)',\n 'APNG image',\n 'APNG 画像',\n 'APNG 이미지',\n 'APNG изображение',\n ],\n _zipFile: [\n 'Zip 文件',\n '壓縮檔(Zip)',\n 'Zip file',\n 'ZIP ファイル',\n 'Zip 파일',\n 'Zip файл',\n ],\n _当前作品个数: [\n '当前有 {} 个作品',\n '目前有 {} 個作品',\n 'There are now {} works',\n '今は {} 枚の作品があります',\n '현재 {}개의 작품이 있습니다',\n 'В настоящее время существует {} работ',\n ],\n _当前有x个用户: [\n '当前有 {} 个用户',\n '目前有 {} 個使用者',\n 'There are currently {} users',\n '現在 {} 人のユーザーがいます',\n '현재 {}명의 유저가 있습니다',\n 'В настоящее время существует {} пользователей',\n ],\n _已抓取x个用户: [\n '已抓取 {} 个用户',\n '已擷取 {} 個使用者',\n 'crawled {} users',\n 'クロールされた {} ユーザー',\n '{}명의 유저를 긁어왔습니다',\n 'Сканированные {} пользователи',\n ],\n _排行榜进度: [\n '已抓取本页面第{}部分',\n '已擷取本頁面第 {} 部分',\n 'Part {} of this page has been crawled',\n 'このページの第 {} 部がクロールされました',\n '이 페이지의 {} 부분을 긁어왔습니다',\n 'Часть {} этой страницы была просмотрена',\n ],\n _新作品进度: [\n '已抓取本页面 {} 个作品',\n '已擷取本頁面 {} 個作品',\n 'This page has been crawled {} works',\n 'このページの {} つの作品をクロールしました',\n '이 페이지의 {}개의 작품을 긁어왔습니다',\n 'На этой странице было просканированно {} работ',\n ],\n _抓取多少个作品: [\n '抓取本页面 {} 个作品',\n '擷取本頁面 {} 個作品',\n 'Crawl this page {} works',\n 'このページの {} つの作品をクロールします',\n '이 페이지의 {}개의 작품 긁어오기',\n 'Сканировать на этой странице {} работ',\n ],\n _相关作品抓取完毕: [\n '相关作品抓取完毕。包含有{}个作品,开始获取作品信息。',\n '相關作品擷取完畢。包含有 {} 個作品,開始取得作品資訊。',\n 'The related works have been crawled. Contains {} works and starts getting information about the work.',\n '関連作品はクロールされました。 {} 作品を含み、その作品に関する情報の取得を開始します。',\n '관련 작품 긁어오기 완료, {}개의 작품이 포함되어 있으며, 작품 정보 가져오기를 시작합니다',\n 'Связанные работы были просканированы. Содержит {} работ и начинает получать информацию о работе(ах).',\n ],\n _排行榜任务完成: [\n '本页面抓取完毕。
        当前有{}个作品,开始获取作品信息。',\n '本頁面擷取完畢。
        目前有 {} 個作品,開始取得作品資訊。',\n 'This page is crawled and now has {} works.
        Start getting the works for more information.',\n 'このページのクロール終了。
        {}枚の作品があります。 作品情報の取得を開始します。',\n '이 페이지 긁어오기 완료되었습니다
        현재 {}개의 작품이 있으며, 작품 정보 가져오기를 시작합니다',\n 'Эта страница просмотрена и имеет {} работ.
        Начинаю получать работы для получения дополнительной информации.',\n ],\n _开始获取作品信息: [\n '开始获取作品信息',\n '開始取得作品資訊',\n 'Start getting work data',\n '作品情報の取得を開始します',\n '작품 정보 가져오기 시작',\n 'Начинаю получать данные о работе',\n ],\n _列表页抓取进度: [\n '已抓取列表页 {} 个页面',\n '已擷取清單頁 {} 個頁面',\n 'Has acquired {} list pages',\n '{} のリストページを取得しました',\n '{}개의 목록 페이지를 획득하였습니다',\n 'Получено {} страниц списка',\n ],\n _列表页抓取进度2: [\n '正在抓取列表页 {}/{}',\n '正在抓取列表頁 {}/{}',\n 'crawling list page {}/{}',\n 'リストページの取得 {}/{}',\n '목록 페이지 긁어오는 중 {}/{}',\n 'Вытаскивание списка страниц {}/{}',\n ],\n _列表页抓取完成: [\n '列表页面抓取完成',\n '清單頁面擷取完成',\n 'The list page is crawled',\n 'リストページがクロールされ',\n '목록 페이지 긁어오기 완료',\n 'Список страниц просканирован',\n ],\n _抓取结果为零: [\n '抓取完毕,但没有找到符合筛选条件的作品。
        请检查“抓取”相关的设置。',\n '擷取完畢,但沒有找到符合篩選條件的作品。
        請檢查“抓取”相關的設定。',\n 'Crawl complete but did not find works that match the filter criteria.
        Please check the settings related to Crawl.',\n 'クロールは終了しましたが、フィルタ条件に一致する作品が見つかりませんでした。
        クロールに関する設定を確認してください。',\n '긁어오기가 완료되었지만 필터 조건과 일치하는 작품을 찾지 못했습니다.
        크롤링 관련 설정을 확인하세요.',\n 'Вытаскивание завершено, но не найдены работы, соответствующие критериям фильтра.
        Пожалуйста, проверьте настройки, связанные со сканированием.',\n ],\n _当前任务尚未完成: [\n '当前任务尚未完成',\n '目前工作尚未完成',\n 'The current task has not yet been completed',\n '現在の作業はまだ完了していません',\n '현재 작업이 아직 완료되지 않았습니다',\n 'Текущее задание еще не выполнено',\n ],\n _当前任务尚未完成2: [\n '当前任务尚未完成,请等待完成后再下载。',\n '目前工作尚未完成,請等待完成後再下載。',\n 'The current task has not yet been completed',\n '現在の作業はまだ完了していません、完了するまでお待ちください',\n '현재 작업이 아직 완료되지 않았습니다, 완료될 때까지 기다려주세요.',\n 'Текущее задание еще не выполнено',\n ],\n _列表抓取完成开始获取作品页: [\n '当前列表中有{}张作品,开始获取作品信息',\n '目前清單中有 {} 張作品,開始取得作品資訊',\n 'Now has {} works. Start getting the works for more information.',\n '{} 枚の作品があります。 作品情報の取得を開始します。',\n '현재 {}개의 작품이 있습니다, 작품 정보 가져오기를 시작합니다',\n 'Сейчас в работе {} работ. Начните получать работы для получения дополнительной информации.',\n ],\n _开始获取作品页面: [\n '开始获取作品页面',\n '開始取得作品頁面',\n 'Start getting the works page',\n '作品ページの取得を開始する',\n '작품 페이지 가져오기 시작',\n 'Начинаю получать страницу с работами',\n ],\n _无权访问: [\n '无权访问 {},跳过该作品。',\n '沒有權限存取 {},跳過該作品。',\n 'No access {}, skip.',\n '{} のアクセス権限がありません、作品を無視する。',\n '{}에 접근 권한이 없습니다, 이 작업을 건너뜁니다.',\n 'Нет доступа {}, пропуск.',\n ],\n _作品页状态码0: [\n '请求的 URL 不可访问 (0)',\n '要求的 URL 無法存取 (0)',\n 'The requested URL is not accessible (0)',\n '要求された URL にアクセスできません (0)',\n '요청한 URL에 접근할 수 없습니다 (0)',\n 'Запрашиваемый URL недоступен (0)',\n ],\n _作品页状态码400: [\n '该作品已被删除 (400)',\n '該作品已被刪除 (400)',\n 'The work has been deleted (400)',\n '作品は削除されました (400)',\n '이 작품은 삭제되었습니다 (400)',\n 'Работа была удалена (400)',\n ],\n _作品页状态码401: [\n '请您登录 Pixiv 账号然后重试。(401)',\n '請您登入 Pixiv 帳號後重試。(401)',\n 'Please log in to your Pixiv account and try again. (401)',\n 'Pixiv アカウントにログインして、もう一度お試しください。(401)',\n 'Pixiv 계정에 로그인 후 다시 시도해주세요. (401)',\n 'Пожалуйста, войдите в свою учетную запись Pixiv и попробуйте еще раз. (401)',\n ],\n _作品页状态码403: [\n '无权访问请求的 URL (403)',\n '沒有權限存取要求的 URL (403)',\n 'Have no access to the requested URL (403)',\n 'リクエストされた URL にアクセスできない (403)',\n '요청한 URL에 접근 권한이 없습니다 (403)',\n 'Нет доступа к запрашиваемому URL (403)',\n ],\n _作品页状态码404: [\n '404 not found',\n '404 not found',\n '404 not found',\n '404 not found',\n '404 not found',\n '404 not found',\n ],\n _作品页状态码429: [\n '错误代码:429(请求数量过多)。下载器会重新抓取它。',\n '錯誤程式碼:429(請求數量過多)。下載器会重新抓取它。',\n 'Error code: 429 (Too many requests). The downloader will re-crawl it.',\n 'エラー コード: 429 (要求が多すぎます)。ダウンローダーはそれを再クロールします。',\n '오류 코드: 429(요청이 너무 많음). 다운로더가 다시 크롤링합니다.',\n 'Код ошибки: 429 (Слишком много запросов). Загрузчик будет повторять вытаскивание.',\n ],\n _错误代码: [\n '错误代码:',\n '錯誤程式碼:',\n 'Error code: ',\n 'エラー コード: ',\n '오류 코드: ',\n 'Код ошибки: ',\n ],\n _作品页状态码500: [\n 'Pixiv 拒绝返回数据 (500)。下载器会重新抓取它。',\n 'Pixiv 拒絕返回資料 (500)。下載器会重新抓取它。',\n 'Pixiv refuses to return data (500). The downloader will re-crawl it.',\n 'ピクシブはデータの返却を拒否します (500)。ダウンローダーはそれを再クロールします。',\n 'pixiv는 데이터 반환을 거부합니다 (500). 다운로더가 다시 크롤링합니다.',\n 'Pixiv отказывается возвращать данные (500). Загрузчик будет повторять вытаскивание.',\n ],\n _正在抓取: [\n '正在抓取,请等待……',\n '擷取中,請稍後……',\n 'Getting, please wait...',\n 'クロール中、しばらくお待ちください...',\n '얻어오는 중, 잠시만 기다려주세요...',\n 'Получение, пожалуйста, подождите...',\n ],\n _获取全部书签作品: [\n '获取全部书签作品,时间可能比较长,请耐心等待。',\n '取得全部書籤作品,時間可能比較長,請耐心等待。',\n 'Get all bookmarked works, the time may be longer, please wait.',\n 'ブックマークしたすべての作品を取得すると、時間がかかることがあります。お待ちください。',\n '북마크된 작품을 모두 가져오는 것은 시간이 오래 걸릴 수 있으니 기다려주세요.',\n 'Получить все работы из закладок, это может занять время, пожалуйста, подождите',\n ],\n _抓取图片网址遇到中断: [\n '当前任务已中断!',\n '目前工作已中斷!',\n 'The current task has been interrupted.',\n '現在の作業が中断されました。',\n '현재 작업이 중단되었습니다!',\n 'Текущая задача была прервана.',\n ],\n _关闭: ['关闭', '關閉', 'close', 'クローズ', '닫기', 'закрыть'],\n _输出信息: [\n '输出信息',\n '輸出資訊',\n 'Output information',\n '出力情報',\n '출력 정보',\n 'Выходная информация',\n ],\n _复制: ['复制', '複製', 'Copy', 'コピー', '복사', 'Копировать'],\n _已复制到剪贴板: [\n '已复制到剪贴板,可直接粘贴',\n '已複製至剪貼簿,可直接貼上',\n 'Has been copied to the clipboard',\n 'クリップボードにコピーされました',\n '클립보드에 복사되었습니다.',\n 'Скопировано в буфер обмена',\n ],\n _下载设置: [\n '下载设置',\n '下載設定',\n 'Download settings',\n 'ダウンロード設定',\n '다운로드 설정',\n 'Настройки загрузки',\n ],\n _收起展开设置项: [\n '收起/展开设置项',\n '摺疊/展開設定項目',\n 'Collapse/expand settings',\n '設定の折りたたみ/展開',\n '설정 축소/확장',\n 'Свернуть/развернуть настройки',\n ],\n _github: [\n 'Github 页面,欢迎 star',\n 'Github 頁面,歡迎 star',\n 'Github page, if you like, please star it',\n 'Github のページ、star をクリックしてください',\n 'Github, 유용하셨다면 Star를 주세요.',\n 'Страница на Github, если вам нравится, пожалуйста, поставьте звезду',\n ],\n _wiki: ['使用手册', 'Wiki', 'Wiki', 'マニュアル', '위키', 'Вики'],\n _快捷键ALTX显示隐藏控制面板: [\n '你可以使用快捷键 Alt + X 显示或隐藏控制面板。',\n '你可以使用快捷鍵 Alt + X 顯示或隱藏控制面板。',\n 'You can use the shortcut keys Alt + X to show or hide the control panel.',\n 'ショートカット キー Alt + X を使用して、コントロール パネルを表示または非表示にできます。',\n '단축키 Alt + X를 사용하여 제어판을 표시하거나 숨길 수 있습니다.',\n 'Вы можете использовать сочетания клавиш Alt + X, чтобы отобразить или скрыть панель управления.',\n ],\n _隐藏控制面板: [\n '隐藏控制面板(Alt + X)',\n '隱藏控制面板(Alt + X)',\n 'hide control panel (Alt + X)',\n 'コントロールパネルを隠す(Alt + X)',\n '제어판 숨기기 (Alt + X)',\n 'скрыть панель управления (Alt + X)',\n ],\n _显示控制面板: [\n '显示控制面板 (Alt + X)',\n '顯示控制面板 (Alt + X)',\n 'Show control panel (Alt + X)',\n 'コントロールパネルを表示 (Alt + X)',\n '제어판 표시 (Alt + X)',\n 'показать панель управления (Alt + X)',\n ],\n _共抓取到n个文件: [\n '共抓取到 {} 个文件',\n '共擷取到 {} 個檔案',\n 'Crawl a total of {} files',\n '合計 {} つのファイルがあります',\n '총 {}개의 파일을 긁어왔습니다',\n 'Всего просканированно {} файлов',\n ],\n _共抓取到n个作品: [\n '共抓取到 {} 个作品',\n '共擷取到 {} 個作品',\n 'Crawl a total of {} works',\n '合計 {} つの作品があります',\n '총 {}개의 작품을 긁어왔습니다',\n 'Всего просканированно {} работ',\n ],\n _命名规则: [\n '命名规则',\n '命名規則',\n 'Naming rule',\n '命名規則',\n '명명 규칙',\n 'Правила названий',\n ],\n _命名规则2: [\n '命名规则',\n '命名規則',\n 'Naming rule',\n '命名規則',\n '명명 규칙',\n 'Правила названий',\n ],\n _设置文件夹名的提示: [\n `可以使用 '/' 建立文件夹。示例:`,\n `可以使用斜線(/)建立資料夾。範例:`,\n `You can create a directory with '/'. Example:`,\n `フォルダーは '/' で作成できます。例:`,\n `'/'을 사용하여 디렉토리를 생성할 수 있습니다.
        예:`,\n `Вы можете создать каталог с помощью '/'. Пример:`,\n ],\n _添加命名标记前缀: [\n '添加命名标记前缀',\n '加入命名標記前綴',\n 'Add named tag prefix',\n '前にタグの名前を追加',\n '명명된 태그 추가 접두사',\n 'Добавить именованный тег префикс',\n ],\n _添加字段名称提示: [\n `例如,在用户名前面添加“user_”标记`,\n '例如,在使用者名稱前面加入「user_」標記。',\n `For example, add the 'user_' tag in front of the username`,\n 'たとえば、ユーザー名の前に 「user_」タグを追加します。',\n `예: 유저명 앞에 'user_' 태그 추가`,\n `Например, добавьте тег 'user_' перед именем пользователя`,\n ],\n _命名标记id: [\n '默认文件名,如 44920385_p0',\n '預設檔案名稱,例如:44920385_p0。',\n 'Default file name, for example 44920385_p0',\n 'デフォルトのファイル名,例 44920385_p0',\n '기본 파일명. 예: 44920385_p0',\n 'Имя файла по умолчанию, например 44920385_p0',\n ],\n _命名标记title: [\n '作品标题',\n '作品標題',\n 'Works title',\n '作品のタイトル',\n '작품 제목',\n 'Название работ',\n ],\n _命名标记tags: [\n '作品的标签列表',\n '作品的標籤清單',\n 'The tags of the work',\n '作品のタグ',\n '작품 태그',\n 'Теги работ',\n ],\n _命名标记user: [\n '用户名字',\n '使用者名稱',\n 'User name',\n 'ユーザー名',\n '유저명',\n 'Никнейм юзера',\n ],\n _用户id: [\n '用户 ID(数字)',\n '使用者 ID(數字)',\n 'User ID (Number)',\n 'ユーザー ID (Number)',\n '유저 ID (숫자)',\n 'ID Юзера (Число)',\n ],\n _命名标记px: [\n '宽度和高度。例如:600x900',\n '寬度和高度。例如:600x900',\n 'Width and height, e.g. 600x900',\n '幅と高さ。例:600x900',\n '너비와 높이. 예: 600x900',\n 'Ширина и высота, напр. 600x900',\n ],\n _命名标记bmk: [\n 'Bookmark count,作品的收藏数。把它放在最前面可以让文件按收藏数排序。',\n 'Bookmark count,作品的收藏數。將它放在最前面可以讓檔案依收藏數排序。',\n 'Bookmark count, bookmarks number of works.',\n 'Bookmark count,作品のボックマークの数、前に追加することでボックマーク数で并べることができます。',\n '북마크 수. 맨 앞에 두면 북마크 수별로 문서를 정렬할 수 있습니다.',\n 'Количество закладок, количество произведений в закладках',\n ],\n _命名标记bmk_id: [\n 'Bookmark ID。你收藏的每一个作品都会有一个 Bookmark ID。收藏的时间越晚,Bookmark ID 就越大。当你下载你的收藏时,可以使用 {bmk_id} 作为排序依据。',\n 'Bookmark ID。你收藏的每一個作品都會有一個 Bookmark ID。收藏的時間越晚,Bookmark ID 就越大。當你下載你的收藏時,可以使用 {bmk_id} 作為排序依據。',\n 'Bookmark ID. Every work in your bookmarks will have a Bookmark ID. The later the bookmark is added, the larger the Bookmark ID. When you download your bookmarks, you can use {bmk_id} as a sorting basis.',\n 'ブックマークID。 ブックマーク内のすべての作品にはブックマークIDがあります。 ブックマークを後で追加すると、ブックマークIDが大きくなります。 ブックマークをダウンロードするときは、{bmk_id}を並べ替えの基準として使用できます。',\n '북마크 ID. 당신이 북마크하고 있는 작품마다 북마크 ID가 있습니다. 북마크 시간이 늦어질수록 북마크 ID는 커집니다. 북마크를 다운로드할때 {bmk_id}를 기준으로 정렬할 수 있습니다.',\n 'Bookmark ID. Каждая работа в ваших закладках будет иметь идентификатор закладки. Чем позже добавлена закладка, тем больше ID закладки. Когда вы загружаете закладки, вы можете использовать {bmk_id} в качестве основы для сортировки.',\n ],\n _命名标记bmk_1000: [\n '作品收藏数的简化显示。例如:0+1000+2000+3000+ ……',\n '作品收藏數的簡化顯示。例如:0+1000+2000+3000+ ……',\n 'Simplified number of bookmark, e.g. 0+1000+2000+3000+ ……',\n '作品のボックマークの数の簡略表示。例:0+1000+2000+3000+ ……',\n '단순화된 북마크 수. 예: 0+, 1000+, 2000+, 3000+ ……',\n 'Упрощенное количество закладок, напр. 0+1000+2000+3000+ ......',\n ],\n _命名标记like: [\n 'Like count,作品的点赞数。',\n 'Like count,作品的點讚數。',\n 'Like count.',\n 'Like count。',\n '좋아요 수',\n 'Колличество лайков',\n ],\n _命名标记view: [\n 'View count,作品的浏览量。',\n 'View count,作品的瀏覽量。',\n 'View count.',\n 'View count。',\n '조회수',\n 'Колличество просмотров',\n ],\n _命名标记id_num: [\n '数字 ID,如 44920385',\n '數字 ID,例如:44920385。',\n 'Number ID, for example 44920385',\n '44920385 などの番号 ID',\n '숫자 ID. 예: 44920385',\n 'Идентификатор номера, например 44920385',\n ],\n _命名标记p_num: [\n '图片在作品内的序号,如 012 …… 每个作品都会重新计数。',\n '圖片在作品內的序號,例如:012……每個作品都將重新計數。',\n 'The serial number of the image in the work, such as 0, 1, 2 ... Each work will be recounted.',\n '012 など、作品の画像のシリアル番号。各ピースは再集計されます。',\n '작품 안에 있는 번호. 예: 0, 1, 2 …… 작품마다 다시 세어봅니다.',\n 'Порядковый номер изображения в работе, например, 0, 1, 2 .... Каждое произведение будет пересказано',\n ],\n _命名标记tags_trans: [\n '作品的标签列表,附带翻译后的标签(如果有)',\n '作品的標籤清單,包含翻譯後的標籤(如果有的話)。',\n 'The tags of the work, with the translated tag (if any)',\n '作品のタグリスト、翻訳付きタグ(あれば)',\n '작품 태그, 번역된 태그 (있다면)',\n 'Теги произведения, с тегом перевода (если есть)',\n ],\n _命名标记tags_transl_only: [\n '翻译后的标签列表',\n '譯後的標籤清單。',\n 'Translated tags',\n '翻訳后のタグリスト',\n '번역된 태그',\n 'Теги перевода',\n ],\n _命名标记date: [\n '作品的创建时间。如 2019-08-29。',\n '作品的建立時間。例如:2019-08-29。',\n 'The time the creation of the work. Such as 2019-08-29',\n '作品の作成時間。例 2019-08-29',\n '작품 생성 날짜. 예: 2019-08-29',\n 'Время создания произведения. Например, 2019-08-29',\n ],\n _命名标记upload_date: [\n '作品内容最后一次被修改的时间。如 2019-08-30。',\n '作品內容最後一次被修改的時間。如 2019-08-30。',\n 'The time when the content of the work was last modified. Such as 2019-08-30.',\n '作品の内容が最後に変更された時刻。例 2019-08-30',\n '저작물의 내용이 마지막으로 수정된 시간입니다. 예: 2019-08-30',\n 'Время, когда содержание работы было изменено в последний раз. Например, 2019-08-30.',\n ],\n _命名标记rank: [\n '作品在排行榜中的排名。如 #1#2 …… 只能在排行榜页面中使用。',\n '作品在排行榜中的排名。例如:#1#2……只能在排行榜頁面中使用。',\n 'The ranking of the work in the ranking pages. Such as #1, #2 ... Can only be used in ranking pages.',\n '作品のランキング。例え #1#2 …… ランキングページのみで使用できます。',\n '작품의 랭킹. 예: #1, #2 …… 랭킹 페이지에서만 사용할 수 있습니다.',\n 'Рейтинг работы на страницах рейтинга. Например, #1, #2 ... Может использоваться только на страницах ранжирования.',\n ],\n _命名标记type: [\n '作品类型,分为:Illustration, Manga, Ugoira, Novel',\n '作品類型,分為:Illustration, Manga, Ugoira, Novel',\n 'The type of work, divided into:Illustration, Manga, Ugoira, Novel',\n '作品分類は:Illustration, Manga, Ugoira, Novel',\n '작품 유형: Illustration, Manga, Ugoira, Novel',\n 'Тип работы, разделенный на:Illustration, Manga, Ugoira, Novel',\n ],\n _命名标记AI: [\n '如果作品是由 AI 生成的,则输出 AI',\n '如果作品是由 AI 生成的,則輸出 AI',\n 'If the work is generated by AI, output AI',\n '作品がAIで生成された場合、AIを出力',\n '작업이 AI로 생성된 경우 AI 출력',\n 'Если работа создана с помощью ИИ, выведите AI',\n ],\n _命名标记提醒: [\n '为了防止文件名重复,命名规则里一定要包含 {id} 或者 {id_num}{p_num}。
        您可以使用多个标记;建议在不同标记之间添加分割用的字符。示例:{id}-{user_id}',\n '為了防止檔名重複,命名規則裡一定要包含 {id} 或者 {id_num}{p_num}。
        您可以使用多個標記;建議在不同標記之間加入分隔用的字元。範例:{id}-{user_id}',\n 'To prevent duplicate file names, {id} or {id_num}{p_num} must be included in the naming rules.
        You can use multiple tags, and you can add a separate character between different tags. Example: {id}-{user_id}',\n 'ファイル名の重複を防ぐために、命名規則には {id} または {id_num}{p_num} を含める必要があります。
        複数のタグを使用することができます;異なるタグ間の分割のために文字を追加することをお勧めします。例:{id}-{user_id}',\n '파일명이 중복되지 않도록, 명명 규칙에는 {id} 또는 {id_num}{p_num}이 포함되어야 합니다.
        여러 태그를 사용할 수 있습니다. 서로 다른 태그 사이에 구분자를 넣는 것을 권장합니다. 예: {id}-{user}',\n 'Чтобы предотвратить дублирование имен файлов, {id} или {id_num}{p_num} должны быть включены в правила именования.
        Вы можете использовать несколько тегов, и вы можете добавить отдельный символ между различными тегами. Пример: {id}-{user_id}',\n ],\n _有些标记并不总是可用的提醒: [\n '有些标记并不总是可用,有时它们可能什么都不输出。',\n '有些標記並不總是可用,有時它們可能什麼都不輸出。',\n 'Some tags are not always available, and sometimes they may output nothing.',\n '一部のタグは常に使用できるとは限らず、何も出力しない場合もあります。',\n '일부 태그는 항상 사용할 수 있는 것은 아니며 때로는 아무 것도 출력하지 않을 수도 있습니다.',\n 'Некоторые теги не всегда доступны, а иногда могут ничего не выводить.',\n ],\n _命名规则一定要包含id: [\n '为了防止文件名重复,命名规则里一定要包含 {id} 或者 {id_num}{p_num}',\n '為了防止檔名重複,命名規則裡一定要包含 {id} 或者 {id_num}{p_num}。',\n 'To prevent duplicate file names, {id} or {id_num}{p_num} must be included in the naming rules.',\n 'ファイル名の重複を防ぐために、命名規則には {id} または {id_num}{p_num} を含める必要があります。',\n '파일명이 중복되지 않도록, 명명 규칙에는 {id} 또는 {id_num}{p_num}이 포함되어야 합니다.',\n 'Чтобы предотвратить дублирование имен файлов, {id} или {id_num}{p_num} должны быть включены в правила именования.',\n ],\n _文件夹标记PTag: [\n '如果页面里的作品属于同一个标签,则输出这个标签。',\n '如果頁面裡的作品屬於同一個標籤,則輸出這個標籤。',\n 'If the works on the page belong to the same tag, then output this tag.',\n 'ページ上の作品が同じタグに属している場合は、このタグを出力します。',\n '페이지의 작품이 같은 태그에 속하는 경우 이 태그를 출력합니다.',\n 'Если работы на странице относятся к одному и тому же тегу, то выводить этот тег.',\n ],\n _命名标记seriesTitle: [\n '系列标题,只在系列页面中可用(小说系列、漫画系列)。',\n '系列標題,只在系列頁面中可用(小說系列、漫畫系列)。',\n 'Series title, only available in series pages (Novel series, Manga series).',\n 'シリーズタイトル,シリーズページのみ(小説連載、漫画連載)。',\n '시리즈 제목, 시리즈 페이지에서만 사용 가능(소설 시리즈, 만화 시리즈).',\n 'Название серии, доступно только на страницах серий (серия романов, серия манги).',\n ],\n _命名标记seriesOrder: [\n '作品在系列中的序号,如 #1 #2。只在系列页面中可用(小说系列、漫画系列)。',\n '作品在系列中的編號,如 #1 #2。只在系列頁面中可用(小說系列、漫畫系列)。',\n 'The number of the work in the series, such as #1 #2. only available in series pages (Novel series, Manga series).',\n 'シリーズの中の作品の番号,例え #1 #2。シリーズページのみ(小説連載、漫画連載)。',\n '시리즈 내 작품 번호. 예: #1 #2. 시리즈 페이지에서만 사용 가능(소설 시리즈, 만화 시리즈).',\n 'Номер работы в серии, например, #1 #2. доступны только на страницах серий (серия романов, серия манги).',\n ],\n _命名标记seriesId: [\n '系列 ID,只在系列页面中可用(小说系列、漫画系列)。',\n '系列 ID,只在系列頁面中可用(小說系列、漫畫系列)。',\n 'Series ID, only available in series pages (Novel series, Manga series).',\n 'シリーズ ID,シリーズページのみ(小説連載、漫画連載)。',\n '시리즈 ID, 시리즈 페이지에서만 사용 가능(소설 시리즈, 만화 시리즈).',\n 'Идентификатор серии, доступен только на страницах серий (серия романов, серия манги).',\n ],\n _文件夹标记PTitle: [\n '页面标题',\n '頁面標題',\n 'Page title',\n 'ページタイトル',\n '페이지 제목',\n 'Заголовок страницы',\n ],\n _预览文件名: [\n '预览文件名',\n '預覽檔案名稱',\n 'Preview file name',\n 'ファイル名',\n '파일명 미리보기',\n 'Имя файла предварительного просмотра',\n ],\n _下载线程: [\n '下载线程',\n '下載執行緒',\n 'Download thread',\n '同時ダウンロード数',\n '다운로드 쓰레드',\n 'Кол-во потоков на загрузку',\n ],\n _下载线程的说明: [\n `你可以输入 1-${Config.downloadThreadMax} 之间的数字,设置同时下载的数量`,\n `你可以輸入 1-${Config.downloadThreadMax} 之間的數字,設定同時下載的數量。`,\n `You can type a number between 1-${Config.downloadThreadMax} to set the number of concurrent downloads`,\n `同時ダウンロード数を設定、1-${Config.downloadThreadMax} の数値を入力してください`,\n `1-${Config.downloadThreadMax} 사이의 숫자를 입력하여 동시 다운로드 수를 설정할 수 있습니다.`,\n `Вы можете ввести число между 1-${Config.downloadThreadMax} , чтобы установить количество одновременных загрузок`,\n ],\n _开始下载: [\n '开始下载',\n '開始下載',\n 'Start download',\n '開始',\n '다운로드 시작',\n 'Начать загрузку',\n ],\n _暂停下载: [\n '暂停下载',\n '暫停下載',\n 'Pause download',\n '一時停止',\n '다운로드 일시중지',\n 'Приостановить загрузку',\n ],\n _停止下载: [\n '停止下载',\n '停止下載',\n 'Stop download',\n '停止',\n '다운로드 정지',\n 'Остановить загрузку',\n ],\n _复制url: [\n '复制 URL',\n '複製下載網址',\n 'Copy URLs',\n 'URL をコピー',\n 'URL 복사',\n 'Копировать URL',\n ],\n _当前状态: [\n '当前状态 ',\n '目前狀態:',\n 'State ',\n '現在の状態 ',\n '현재 상태',\n 'Текущее состояние',\n ],\n _未开始下载: [\n '未开始下载',\n '未開始下載',\n 'Not yet started downloading',\n 'まだダウンロードを開始していません',\n '아직 다운로드를 시작하지 않았습니다.',\n 'Загрузка еще не началась',\n ],\n _下载进度: [\n '下载进度',\n '下載進度',\n 'Total progress',\n '概要',\n '다운로드 진행률',\n 'Полный прогресс',\n ],\n _任务进度: [\n '任务进度',\n '任務進度',\n 'Task progress',\n 'タスクの進行状況',\n '작업 진행',\n 'прогресс',\n ],\n _常见问题: ['常见问题', '常見問題', 'Help', 'よくある質問', '도움말', 'help'],\n _uuid: [\n '如果下载后的文件名异常,请禁用其他有下载功能的浏览器扩展。
        例如:Chrono 下载管理器、free Download Manager、Image Downloader、DownThemAll! 等。',\n '如果下載後的檔案名稱異常,請停用其他有下載功能的瀏覽器擴充功能。
        例如:Chrono 下载管理器、free Download Manager、Image Downloader、DownThemAll! 等。',\n 'If the file name after downloading is abnormal, disable other browser extensions that have download capabilities.
        For example: Chrono Download Manager, free Download Manager, Image Downloader, DownThemAll! and more.',\n 'ダウンロード後のファイル名が異常な場合は、ダウンロード機能を持つ他のブラウザ拡張機能を無効にしてください。
        例:Chrono Download Manager, free Download Manager, Image Downloader, DownThemAll! など。',\n '다운로드 후 파일명이 이상할 경우 다운로드 기능이 있는 다른 브라우저 확장 프로그램을 비활성화해주세요.예: Chrono Download Manager, free Download Manager、Image Downloader、DownThemAll! 등.',\n 'Если имя файла после загрузки ненормальное, отключите другие расширения браузера, которые имеют возможность загрузки.
        Например: Chrono Download Manager, бесплатный менеджер загрузок, загрузчик изображений, DownThemAll! и многое другое.',\n ],\n _常见问题说明: [\n '下载的文件保存在浏览器的下载目录里。

        建议在浏览器的下载设置中关闭“下载前询问每个文件的保存位置”。

        如果下载后的文件名异常,请禁用其他有下载功能的浏览器扩展。

        如果你的浏览器在启动时停止响应,你可以清除浏览器的下载记录。

        如果你使用 V2ray、Clash 等代理软件,可以确认一下 Pixiv 的图片域名(i.pximg.net)是否走了代理,如果没走代理就在代理规则里添加这个域名。

        如果你需要一个梯子(机场),可以试试这个机场:农家有风小院,价格实惠,网络稳定。先购买订阅,然后在仪表盘复制订阅链接使用。

        下载器 QQ 群:499873152

        在 Wiki 查看常见问题:
        https://xuejianxianzun.github.io/PBDWiki/#/zh-cn/常见问题

        中文教程视频:
        https://www.youtube.com/playlist?list=PLO2Mj4AiZzWEpN6x_lAG8mzeNyJzd478d',\n '下載的檔案儲存在瀏覽器的下載目錄裡。

        請不要在瀏覽器的下載選項裡選取「下載每個檔案前先詢問儲存位置」。

        如果下載後的檔名異常,請停用其他有下載功能的瀏覽器擴充功能。

        如果你的瀏覽器在啟動時停止響應,你可以清除瀏覽器的下載記錄。',\n 'The downloaded file is saved in the browsers download directory.

        It is recommended to turn off \"Ask where to save each file before downloading\" in the browser`s download settings.

        If the file name after downloading is abnormal, disable other browser extensions that have download capabilities.

        If your browser stops responding at startup, you can clear your browser`s download history.',\n 'ダウンロードしたファイルは、ブラウザのダウンロードディレクトリに保存されます。

        ブラウザのダウンロード設定で 「 ダウンロード前に各ファイルの保存場所を確認する 」 をオフにすることをお勧めします。

        ダウンロード後のファイル名が異常な場合は、ダウンロード機能を持つ他のブラウザ拡張機能を無効にしてください。

        起動時にブラウザーが応答しなくなった場合は、ブラウザーのダウンロード履歴を消去できます。',\n '다운로드한 파일은 브라우저의 다운로드 디렉토리에 저장됩니다.

        브라우저의 다운로드 설정에서 \"다운로드 전에 각 파일의 저장 위치 확인\"을 끄는 것이 좋습니다.

        다운로드 후 파일명이 이상할 경우 다운로드 기능이 있는 다른 브라우저 확장 프로그램을 비활성화해주세요.

        시작 시 브라우저가 응답하지 않으면 브라우저의 다운로드 기록을 지울 수 있습니다.',\n 'Загруженный файл сохраняется в каталоге загрузки браузеров.

        Рекомендуется отключить \"Спрашивать, куда сохранять каждый файл перед загрузкой\" в настройках загрузки браузера.

        Если имя файла после загрузки является ненормальным, отключите другие расширения браузера, которые имеют возможности загрузки.

        Если ваш браузер перестает отвечать на запросы при запуске, вы можете очистить историю загрузок вашего браузера.',\n ],\n _正在下载中: [\n '正在下载中',\n '正在下載',\n 'Downloading',\n 'ダウンロード中',\n '다운로드 중',\n 'Загрузка',\n ],\n _下载完毕: [\n '✓ 下载完毕',\n '✓ 下載完畢',\n '✓ Download complete',\n '✓ ダウンロードが完了しました',\n '✓ 다운로드 완료',\n '✓ Загрузка завершена',\n ],\n _下载完毕2: [\n '下载完毕',\n '下載完畢',\n 'Download complete',\n 'ダウンロードが完了しました',\n '다운로드 완료',\n 'Загрузка завершена',\n ],\n _已暂停: [\n '下载已暂停',\n '下載已暫停',\n 'Download is paused',\n 'ダウンロードは一時停止中です',\n '다운로드 일시중지',\n 'Загрузка приостановлена',\n ],\n _已停止: [\n '下载已停止',\n '下載已停止',\n 'Download stopped',\n 'ダウンロードが停止しました',\n '다운로드 정지',\n 'Загрузка остановлена',\n ],\n _已下载: [\n '已下载',\n '已下載',\n 'downloaded',\n 'downloaded',\n '다운로드됨',\n 'загруженно',\n ],\n _抓取完毕: [\n '抓取完毕!',\n '擷取完畢!',\n 'Crawl complete!',\n 'クロールが終了しました!',\n '긁어오기 완료!',\n 'Вытаскивание завершено!',\n ],\n _抓取完毕2: [\n '抓取完毕',\n '擷取完畢',\n 'Crawl complete',\n 'クロールが終了しました',\n '긁어오기 완료',\n 'Вытаскивание завершено',\n ],\n _快速下载本页: [\n '快速下载本页作品 (Alt + Q)',\n '快速下載本頁作品 (Alt + Q)',\n 'Download this work quickly (Alt + Q)',\n 'この作品をすばやくダウンロードする (Alt + Q)',\n '작품 빠른 다운로드 (Alt + Q)',\n 'Быстро загрузить эту работу (Alt + Q)',\n ],\n _快捷键ALTQ快速下载本页作品: [\n '你可以使用快捷键 Alt + Q 快速下载本页作品。',\n '你可以使用快捷鍵 Alt + Q 快速下載本頁作品。',\n 'You can use the shortcut keys Alt + Q to quickly download works on this page.',\n 'ショートカット キー Alt + Q を使用して、このページの作品をすばやくダウンロードできます。',\n '단축키 Alt + Q를 사용하여 이 페이지에서 작품을 빠르게 다운로드할 수 있습니다.',\n 'Вы можете использовать сочетания клавиш Alt + Q для быстрой загрузки работ на этой странице.',\n ],\n _抓取此作品: [\n '抓取此作品',\n '抓取此作品',\n 'Crawl this work',\n 'この作品をクロールする',\n '이 작품을 크롤링',\n 'Просканировать эту работу',\n ],\n _从本页开始抓取new: [\n '从本页开始抓取新作品',\n '從本頁開始擷取新作品',\n 'Crawl the new works from this page',\n 'このページから新しい作品を入手する',\n '이 페이지부터 새 작품 긁어오기',\n 'Просканировать новые работы с этой страницы',\n ],\n _从本页开始抓取old: [\n '从本页开始抓取旧作品',\n '從本頁開始擷取舊作品',\n 'Crawl the old works from this page',\n 'このページから古い作品を入手する',\n '이 페이지부터 오래된 작품 긁어오기',\n 'Просканировать старые работы с этой страницы',\n ],\n _抓取推荐作品: [\n '抓取推荐作品',\n '擷取推薦作品',\n 'Crawl the recommend works',\n '推奨作品をダウンロードする',\n '추천 작품 긁어오기',\n 'Просканировать рекомендуемые работы',\n ],\n _抓取推荐作品Title: [\n '抓取页面底部的的推荐作品',\n '擷取頁面底部的推薦作品。',\n 'Crawl the recommended works at the bottom of the page',\n 'ページの下部で推奨作品をクロールします',\n '페이지 하단 추천 작품 긁어오기',\n 'Просканировать рекомендованные работы внизу страницы',\n ],\n _抓取相关作品: [\n '抓取相关作品',\n '擷取相關作品',\n 'Crawl the related works',\n '関連作品をダウンロードする',\n '관련 작품 긁어오기',\n 'Просканировать похожие работы',\n ],\n _调整完毕: [\n '调整完毕,当前有{}个作品。',\n '調整完畢,目前有 {} 個作品。',\n 'The adjustment is complete and now has {} works.',\n '調整が完了し、今、{} の作品があります。',\n '조정이 완료되어, 현재 {}개의 작품이 있습니다.',\n 'Настройка завершена и теперь имеет {} работ',\n ],\n _抓取当前作品: [\n '抓取当前作品',\n '擷取目前作品',\n 'Crawl the current work',\n '現在の作品をクロールする',\n '현재 작품 긁어오기',\n 'Просканировать текущую работу',\n ],\n _抓取当前作品Title: [\n '抓取当前列表里的所有作品',\n '擷取目前清單裡的所有作品',\n 'Crawl all the works in the current list',\n '現在のリスト内のすべての作品をクロールする',\n '현재 목록에 있는 모든 작품 긁어오기',\n 'Просканировать все работы в текущем списке',\n ],\n _清除多图作品: [\n '清除多图作品',\n '清除多圖作品',\n 'Remove multi-image works',\n '複数画像をクリア',\n '여러 이미지 작품 지우기',\n 'Удалить работы с несколькими изображениями',\n ],\n _清除动图作品: [\n '清除动图作品',\n '清除動圖作品',\n 'Remove ugoira work',\n 'うごイラ作品を削除する',\n '움직이는 일러스트 작품 지우기',\n 'Убрать Ugoira(gif) работы',\n ],\n _手动删除作品: [\n '手动删除作品',\n '手動刪除作品',\n 'Manually delete the work',\n '作品を手動で削除する',\n '수동으로 작품 지우기',\n 'Вручную удалить работу',\n ],\n _手动删除作品Title: [\n '可以在下载前手动删除不需要的作品',\n '可以在下載前手動刪除不需要的作品,點擊作品刪除。',\n 'You can manually delete unwanted work before downloading',\n 'ダウンロードする前に不要な作品を手動で削除することができます',\n '다운로드를 원하지 않는 작품을 수동으로 지울 수 있습니다.',\n 'Вы можете вручную удалить нежелательные работы перед загрузкой',\n ],\n _退出手动删除: [\n '退出手动删除',\n '結束手動刪除',\n 'Exit manually delete',\n '削除モードを終了する',\n '수동 지우기 종료',\n 'Выйти из ручного удаления',\n ],\n _抓取本页作品: [\n '抓取本页作品',\n '擷取本頁作品',\n 'Crawl this page works',\n 'このページをクロールする',\n '이 페이지의 작품 긁어오기',\n 'Просканировать работы с этой страницы',\n ],\n _抓取本页作品Title: [\n '抓取本页列表中的所有作品',\n '擷取本頁清單中的所有作品',\n 'Crawl this page works',\n 'このページの全ての作品をクロールする',\n '이 페이지의 모든 작품 긁어오기',\n 'Просканировать работы с этой страницы',\n ],\n _抓取本排行榜作品: [\n '抓取本排行榜作品',\n '擷取本排行榜作品',\n 'Crawl the works in this list',\n 'このリストの作品をクロールする',\n '이 목록의 작품 긁어오기',\n 'Просканировать работы из этого списка',\n ],\n _抓取本排行榜作品Title: [\n '抓取本排行榜的所有作品,包括现在尚未加载出来的。',\n '擷取本排行榜的所有作品,包括現在尚未載入出來的。',\n 'Crawl all of the works in this list, including those that are not yet loaded.',\n 'まだ読み込まれていないものを含めて、このリストの作品をダウンロードする',\n '아직 불러오지 않은 작품을 포함하여, 이 목록의 모든 작품을 긁어옵니다.',\n 'Просмотреть все работы в этом списке, включая те, которые еще не загружены.',\n ],\n _抓取首次登场的作品: [\n '抓取首次登场作品',\n '擷取首次登場作品',\n 'Crawl the debut works',\n '初登場作品をダウンロードする',\n '데뷔작 긁어오기',\n 'Просканировать по дебютные работы',\n ],\n _抓取首次登场的作品Title: [\n '只下载首次登场的作品',\n '只下載首次登場的作品',\n 'Download only debut works',\n '初登場作品のみダウンロードします',\n '데뷔작만 다운로드',\n 'Скачать только дебютные работы',\n ],\n _抓取该页面的图片: [\n '抓取该页面的图片',\n '擷取該頁面的圖片',\n 'Crawl the image of the page',\n 'ページの画像をクロールする',\n '페이지의 이미지 긁어오기',\n 'Просканировать по изображение страницы',\n ],\n _抓取相似图片: [\n '抓取相似图片',\n '擷取相似圖片',\n 'Crawl similar works',\n '類似の作品をクロールする',\n '비슷한 작품 긁어오기',\n 'Просканировать похожие работы',\n ],\n _想要获取多少个作品: [\n '您想要获取多少个作品?',\n '想要取得多少個作品?',\n 'How many works do you want to download?',\n 'いくつの作品をダウンロードしたいですか?',\n '몇 개의 작품을 다운로드하시겠습니까?',\n 'Сколько работ вы хотите загрузить?',\n ],\n _数字提示1: [\n '-1, 或者大于 0',\n '-1,或是大於 0',\n '-1, or greater than 0',\n '-1、または 0 より大きい',\n '-1, 또는 0보다 크게',\n '-1, или больше 0',\n ],\n _下载大家的新作品: [\n '下载大家的新作品',\n '下載大家的新作品',\n 'Download everyone`s new work',\n 'みんなの新作をダウンロードする',\n '모두의 새 작품 다운로드',\n 'Вседа загружать новые работы',\n ],\n _屏蔽设定: [\n '屏蔽設定',\n '封鎖設定',\n 'Mute settings',\n 'ミュート設定',\n '차단 설정',\n 'Настройки защиты',\n ],\n _举报: ['举报', '回報', 'Report', '報告', '신고', 'Отчет'],\n _输入id进行抓取: [\n '输入 ID 进行抓取',\n '輸入 ID 進行擷取',\n 'Type ID to crawl',\n 'IDを入力してダウンロードする',\n '유형 ID 긁어오기',\n 'Введите ID для вытаскивания',\n ],\n _输入id进行抓取的提示文字: [\n '请输入作品 id。如果有多个 id,则以换行分割(即每行一个id)。',\n '請輸入作品 id。如果有多個 id,則以換行分隔(即每行一個 id)。',\n 'Please type the illustration id. If there is more than one id, one id per line.',\n 'イラストレーターIDを入力してください。 複数の id がある場合は、1 行に 1 つの id を付けます。',\n '일러스트 작품 ID를 입력해주세요. 여러 개의 ID가 있으면 줄을 바꾸어주세요 (한 줄에 한 개의 ID).',\n 'Пожалуйста, введите идентификатор иллюстрации. Если идентификаторов несколько, то по одному идентификатору на строку.',\n ],\n _输入的ID视为图像ID: [\n '因为这个标签页展示的是图像,所以输入的 ID 会被视为图像作品的 ID。',\n '因為這個標籤頁展示的是圖片,所以輸入的 ID 會被視為圖片作品的 ID。',\n 'Since this tab displays images, the ID entered will be considered the ID of the image work.',\n 'このタブは画像を表示するため、入力したIDが画像作品のIDとなります。',\n '이 탭에는 이미지가 표시되므로 입력한 ID가 해당 이미지 작품의 ID로 간주됩니다.',\n 'Поскольку на этой вкладке отображаются изображения, введенный идентификатор будет считаться идентификатором работы с изображением.',\n ],\n _输入的ID视为小说ID: [\n '因为这个标签页展示的是小说,所以输入的 ID 会被视为小说作品的 ID。',\n '因為這個標籤頁展示的是小說,所以輸入的 ID 會被視為小說作品的 ID。',\n 'Since this tab displays novels, the ID entered will be treated as the ID of the novel work.',\n 'このタブは小説を表示するため、入力したIDは小説作品のIDとして扱われます。',\n '이 탭에는 소설이 표시되므로 입력한 ID는 소설 작품의 ID로 처리됩니다.',\n 'Поскольку на этой вкладке отображаются романы, введенный идентификатор будет рассматриваться как идентификатор романа.',\n ],\n _开始抓取: [\n '开始抓取',\n '開始擷取',\n 'Start crawl',\n 'クロールを開始する',\n '긁어오기 시작',\n 'Начать вытаскивание',\n ],\n _给未分类作品添加添加tag: [\n '给未分类的作品添加标签',\n '幫未分類的作品加入標籤',\n 'Add tag to uncategorized work',\n '未分類の作品にタグを追加',\n '분류되지 않은 작품에 태그 추가',\n 'Добавить метку к неклассифицированной работе',\n ],\n _id不合法: [\n 'id不合法',\n 'id 不合法',\n 'id is illegal',\n 'id が不正な',\n '올바르지 않은 ID',\n 'Это ID неверно',\n ],\n _快速收藏: [\n '快速收藏 (Ctrl + B)',\n '快速收藏 (Ctrl + B)',\n 'Quick bookmarks (Ctrl + B)',\n 'クイックブックマーク (Ctrl + B)',\n '빠른 북마크 (Ctrl + B)',\n 'Быстрые закладки (Ctrl + B)',\n ],\n _启用: ['启用', '啟用', 'Enable', '有効にする', '활성화', 'Включить'],\n _自动开始下载: [\n '自动开始下载',\n '自動開始下載',\n 'Download starts automatically',\n 'ダウンロードは自動的に開始されます',\n '자동으로 다운로드 시작',\n 'Загрузка начинается автоматически',\n ],\n _自动开始下载的提示: [\n '当“开始下载”状态可用时,自动开始下载,不需要点击下载按钮。',\n '當可下載時自動開始下載,不需要點選下載按鈕。',\n 'When the "Start Download " status is available, the download starts automatically and no need to click the download button.',\n '「ダウンロードを開始する」ステータスが利用可能になると、ダウンロードは自動的に開始され、ダウンロードボタンをクリックする必要はありません。',\n '\"다운로드 시작\" 상태가 활성화되면, 다운로드가 자동으로 시작되고 다운로드 시작 버튼을 클릭할 필요가 없게 됩니다.',\n 'При активации этого тумблера загрузка начнется автоматически, без необходимости нажимать кнопку загрузки',\n ],\n _转换任务提示: [\n '正在转换 {} 个文件',\n '正在轉換 {} 個檔案',\n 'Converting {} files',\n '{} ファイルの変換',\n '{}개의 파일을 변환하는 중',\n 'Преобразование {} файлов',\n ],\n _最近更新: [\n '最近更新',\n '最近更新',\n 'What`s new',\n '最近更新する',\n '새로운 기능',\n 'Что нового',\n ],\n _确定: ['确定', '確定', 'Ok', '確定', '확인', 'Ок'],\n _file404: [\n '404 错误:文件 {} 不存在。',\n '404 錯誤:檔案 {} 不存在。',\n '404 error: File {} does not exist.',\n '404 エラー:ファイル {} は存在しません。',\n '404 오류: 파일 {}이 존재하지 않습니다.',\n '404 ошибка: Файл {} не существует.',\n ],\n _文件下载失败: [\n '文件 {} 下载失败',\n '檔案 {} 下載失敗',\n 'File {} download failed',\n 'ファイル {} のダウンロードを失敗しました',\n '파일 {} 다운로드 실패',\n 'Загрузка файла {} не удалась',\n ],\n _是否重置设置: [\n '是否重置设置?',\n '確定要重設設定嗎?',\n 'Do you want to reset the settings?',\n '設定をリセットしますか?',\n '설정을 초기화하시겠습니까?',\n 'Вы хотите сбросить настройки?',\n ],\n _newver: [\n '有新版本可用',\n '有新版本可更新',\n 'A new version is available',\n '新しいバージョンがあります',\n '새 버전이 있습니다',\n 'Доступна новая версия',\n ],\n _id范围: [\n 'ID 范围',\n 'ID 範圍',\n 'ID range',\n 'ID 範囲',\n 'ID 범위',\n 'ID диапазон',\n ],\n _设置id范围提示: [\n '您可以输入一个作品 id,抓取比它新或者比它旧的作品',\n '可以輸入一個作品 id,擷取比它新或者比它舊的作品。',\n 'You can type a work id and crawl works that are newer or older than it',\n '1 つの作品 id を入力することで、それより新しいあるいは古い作品をクロールことができます',\n '작품 ID를 입력하여, 그보다 새로운 혹은 오래된 작품을 긁어올 수 있습니다.',\n 'Вы можете ввести идентификатор работы и просмотреть работы, которые новее или старше его',\n ],\n _大于: ['大于', '大於', 'Bigger than', 'より大きい', '보다 큼', 'Больше чем'],\n _小于: ['小于', '小於', 'Less than', 'より小さい', '보다 작음', 'Меньше чем'],\n _投稿时间: [\n '投稿时间',\n '投稿時間',\n 'Posting date',\n '投稿日時',\n '게시 날짜',\n 'Дата публикации',\n ],\n _设置投稿时间提示: [\n '您可以下载指定时间内发布的作品',\n '可以下載指定時間內發布的作品。',\n 'You can download works posted in a specified period of time',\n '指定された時間内に配信された作品をダウンロードすることができます',\n '지정된 기간 내에 게시된 작품을 다운로드할 수 있습니다.',\n 'Вы можете загружать работы, размещенные за определенный период времени',\n ],\n _时间范围: [\n '时间范围',\n '時間範圍',\n 'Time range',\n '時間範囲',\n '시간 범위',\n 'Диапазон времени',\n ],\n _必须大于0: [\n '必须大于 0',\n '必須大於 0',\n 'must be greater than 0',\n '0 より大きくなければなりません',\n '0보다 커야합니다',\n 'должно быть больше 0',\n ],\n _开始筛选: [\n '开始筛选',\n '開始篩選',\n 'Start screening',\n 'スクリーニング開始',\n '선별 시작',\n 'Начать скрининг',\n ],\n _开始筛选Title: [\n '按照设置来筛选当前标签里的作品。',\n '按照設定來篩選目前標籤裡的作品。',\n 'Screen the works in the current tag.',\n '現在のタグにある作品を設定によってスクリーニングする',\n '설정에 따라 현재 태그 내 작품을 선별합니다.',\n 'Отобразить работы в с текущим тегом',\n ],\n _在结果中筛选: [\n '在结果中筛选',\n '在結果中篩選',\n 'Screen in results',\n '結果の中からスクリーニング',\n '결과 중에서 선별',\n 'Экран результатов',\n ],\n _在结果中筛选说明: [\n '您可以改变设置,并在结果中再次筛选。',\n '可以變更設定,並在結果中再次篩選。',\n 'You can change the settings and screen again in the results.',\n '設定を変えて、結果の中で再びスクリーニングすることができます。',\n '설정을 변경하고, 결과를 다시 선별할 수 있습니다',\n 'Вы можете изменить настройки и снова просмотреть результаты',\n ],\n _抓取筛选结果: [\n '抓取筛选结果',\n '擷取篩選結果',\n 'Crawl the screening results',\n 'スクリーニングの結果をクロールする',\n '선별 결과 긁어오기',\n 'Просканировать результаты скрининга',\n ],\n _尚未开始筛选: [\n '尚未开始筛选',\n '尚未開始篩選',\n 'Screening has not started',\n 'まだスクリーニングを開始していない',\n '선별이 시작되지 않았습니다',\n 'Скрининг не начался',\n ],\n _没有数据可供使用: [\n '没有数据可供使用',\n '沒有資料可供使用',\n 'No data is available.',\n '使用可能なデータはない',\n '사용 가능한 데이터가 없습니다',\n 'Нет данных',\n ],\n _预览搜索结果: [\n '预览搜索页面的筛选结果',\n '預覽搜尋頁面的篩選結果',\n 'Preview filter results on search page',\n '検索ページのフィルタ結果をプレビューします',\n '미리보기 검색 페이지 필터 결과',\n 'Предварительный просмотр результатов фильтрации на странице поиска',\n ],\n _预览搜索结果说明: [\n '下载器可以把符合条件的作品显示在当前页面上,并且按照收藏数量从高到低排序。
        如果抓取结果太多导致页面崩溃,请关闭这个功能。
        启用预览功能时,下载器不会自动开始下载。',\n '下載器可以把符合條件的作品顯示在當前頁面上,並且按照收藏數量從高到低排序。
        如果擷取結果太多導致頁面當掉,請關閉這個功能。
        啟用預覽功能時,下載器不會自動開始下載。',\n 'The downloader can display eligible works on the current page and sort them from high to low according to the number of bookmarks.
        If too many crawling results cause the page to crash, turn off this feature.
        When the preview feature is enabled, the downloader does not start downloading automatically.',\n 'ダウンローダーは、対象となる作品を現在のページに表示し、コレクション数に応じて上位から下位に並べ替えることができます。
        クロール結果が多すぎてページが崩れる場合は、この機能をオフにしてください。
        プレビュー機能を有効にすると、ダウンロードは自動的に開始されません。',\n '다운로더는 현재 페이지에 적합한 작품을 표시하고 컬렉션 수에 따라 높은 순으로 정렬할 수 있습니다.
        긁어오기 결과가 너무 많아서 페이지가 충돌하면 이 기능을 꺼주세요.
        미리보기를 사용하면 다운로드가 자동으로 시작되지 않습니다.',\n 'Загрузчик может отображать подходящие произведения на текущей странице и сортировать их по возрастанию в зависимости от количества коллекций.
        Пожалуйста, отключите эту функцию, если слишком большое количество результатов просмотра приводит к сбою страницы.
        Загрузчик не начинает автоматическую загрузку, если включена функция предварительного просмотра.',\n ],\n _目录名使用: [\n '目录名使用:',\n '資料夾名稱使用:',\n 'Name: ',\n 'ディレクトリ名の使用:',\n '이름: ',\n 'Имя: ',\n ],\n _目录名: ['目录名', '資料夾名稱', 'Name', 'ディレクトリ名', '이름', 'Имя'],\n _启用快速收藏: [\n '启用快速收藏',\n '開啟快速收藏',\n 'Enable quick bookmark',\n 'クイックボックマークを有効にする',\n '빠른 북마크 활성화',\n 'Включить быструю закладку',\n ],\n _启用快速收藏说明: [\n '当你点击下载器添加的收藏按钮(☆),把作品添加到书签时,自动添加这个作品的标签。',\n '當點選下載器新增的收藏按鈕(☆),將作品加入書籤時,自動新增這個作品的標籤。',\n 'When you click the favorite button (☆) added by the downloader to bookmark a work, the tag of the work is automatically added.',\n 'ダウンローダーに追加されたボックマークボタン「☆」をクリックして、作品をブックマークに追加すると、自動的に作品のタグが追加されます。',\n '다운로더에 추가된 북마크 버튼(☆)을 클릭하여 북마크에 작품을 추가하면 자동으로 이 작품의 태그가 추가됩니다.',\n 'Когда вы нажимаете на кнопку Закладка (☆), добавленную загрузчиком, чтобы добавить произведение в закладки, автоматически добавляется тег для этого произведения',\n ],\n _新增设置项: [\n '新增设置项',\n '新增設定項目',\n 'Added setting items',\n '新たな機能を追加されました',\n '새로운 설정 항목 추가',\n 'Добавить новый элемент настройки',\n ],\n _新增功能: [\n '新增功能',\n '新增功能',\n 'New feature',\n '新機能',\n '새로운 기능',\n 'Новая фича',\n ],\n _抓取: ['抓取', '擷取', 'Crawl', 'クロール', '긁어오기', 'Сканирование'],\n _下载: ['下载', '下載', 'Download', 'ダウンロード', '다운로드', 'Скачивание'],\n _其他: ['其他', '其他', 'Other', 'その他', '그 외', 'Другие настройки'],\n _更多: ['更多', '更多', 'More', 'もっと', '더보기', 'Больше'],\n _第一张图不带序号: [\n '第一张图不带序号',\n '第一張圖片不包含序號',\n 'The first image without a serial number',\n '最初のイメージの番号を削除',\n '일련번호가 없는 첫 번째 이미지',\n 'Первое изображение без серийного номера',\n ],\n _第一张图不带序号说明: [\n '去掉每个作品第一张图的序号。例如 80036479_p0 变成 80036479',\n '去掉每個作品第一張圖的序號。例如:80036479_p0 變成 80036479。',\n 'Remove the serial number of the first image of each work. For example 80036479_p0 becomes 80036479.',\n '作品ごとの最初のイメージの番号を削除します。例えば 80036479_p0 は 80036479 になります。',\n '작품마다 첫 번째 이미지의 일련번호를 지웁니다.
        예: 80036479_p0은 80036479가 됩니다.',\n 'Удалите серийный номер с первой фотографии каждой работы. Например, 80036479_p0 становится 80036479',\n ],\n _最小值: ['最小值', '最小值', 'Minimum', '最小値', '최소', 'Минимум'],\n _最大值: ['最大值', '最大值', 'Maximum', '最大値', '최대', 'Максимум'],\n _单图作品: [\n '单图作品',\n '單圖作品',\n 'Single image works',\n 'シングルイメージ作品',\n '단일 이미지 작품',\n 'Работа с одним изображением',\n ],\n _彩色图片: [\n '彩色图片',\n '彩色圖片',\n 'Color images',\n 'カラーイメージ',\n '컬러 이미지',\n 'Цветная картинки',\n ],\n _黑白图片: [\n '黑白图片',\n '黑白圖片',\n 'Black and white images',\n '白黒イメージ',\n '흑백 이미지',\n 'Черно-белые изображения',\n ],\n _不保存图片因为颜色: [\n '{} 没有被保存,因为它的颜色不符合设定。',\n '{} 並未儲存,因為它的色彩不符合設定。',\n '{} was not saved because its colors do not match the settings.',\n '{} は色が設定に合わないため、保存されていません。',\n '{} 색상이 설정과 일치하지 않아, 저장되지 않았습니다.',\n '{} не был(и) сохранен(ы), потому что его цвета не соответствуют настройкам.',\n ],\n _同时转换多少个动图: [\n '同时转换多少个动图',\n '同時轉換多少個動圖',\n 'How many animations are converted at the same time',\n '同時変換のうごイラの上限',\n '동시에 변환할 움직이는 일러스트 수',\n 'Сколько анимаций преобразуется одновременно',\n ],\n _同时转换多少个动图警告: [\n '同时转换多个动图会增加资源占用。',\n '同時轉換多個動圖會增加資源占用。',\n 'Converting multiple animations at the same time will increase resource consumption. ',\n '複数の動画を同時に変換すると、リソースの占有が増加します。',\n '여러 움직이는 일러스트를 동시에 변환하면 리소스가 더 많이 사용됩니다.',\n 'Одновременное преобразование нескольких анимаций увеличит потребление ресурсов. ',\n ],\n _提示: ['提示', '提示', 'Tip', 'ヒント', '팁', 'Совет'],\n _提示2: ['提示', '提示', 'Tip', '?', '팁', 'Совет'],\n _fanboxDownloader: [\n 'Fanbox 下载器',\n 'Fanbox 下載器',\n 'Fanbox Downloader',\n 'Fanbox ダウンロード',\n 'Fanbox 다운로더',\n 'Fanbox загрузчик',\n ],\n _不保存图片因为体积: [\n '{} 没有被保存,因为它的体积不符合设定。',\n '{} 並未儲存,因為它的大小不符合設定。',\n '{} was not saved because its size do not match the settings.',\n '{} はファイルサイズが設定に合わないため、保存されていません。',\n '{} 크기가 설정에 맞지 않아, 저장되지 않았습니다.',\n '{} не был(и) сохранен(ы), потому что его размер не соответствует настройкам.',\n ],\n _文件体积限制: [\n '文件体积限制',\n '檔案體積限制',\n 'File size limit',\n 'ファイルサイズ制限',\n '파일 크기 제한',\n 'Ограничение размера файла',\n ],\n _不符合要求的文件不会被保存: [\n '不符合要求的文件不会被保存。',\n '不會儲存不符合要求的檔案。',\n 'Files that do not meet the requirements will not be saved.',\n '設定 に合わないファイルは保存されません。',\n '요구 사항을 충족하지 않는 파일은 저장되지 않습니다.',\n 'Файлы, не соответствующие требованиям, не будут сохранены',\n ],\n _小说: ['小说', '小說', 'Novel', '小説', '소설', 'Новеллы'],\n _抓取系列小说: [\n '抓取系列小说',\n '擷取系列小說',\n 'Crawl series of novels',\n '小説のシリーズをクロールする',\n '시리즈 소설 긁어오기',\n 'Просканировать серию новелл',\n ],\n _合并系列小说: [\n '合并系列小说',\n '合併系列小說',\n 'Merge series of novels',\n 'シリーズ小説の統合',\n '시리즈 소설 합치기',\n 'Объединить серию новелл',\n ],\n _小说保存格式: [\n '小说保存格式',\n '小說儲存格式',\n 'Save the novel as',\n '小説の保存形式',\n '소설저장 형식',\n 'Сохранить новеллу как',\n ],\n _在小说里保存元数据: [\n '在小说里保存元数据',\n '在小說裡儲存元資料',\n 'Save metadata in the novel',\n '小説の中にメタデータを保存する',\n '소설 내 메타데이터 저장',\n 'Сохранить метаданные новеллы',\n ],\n _在小说里保存元数据提示: [\n '把作者、网址等信息保存到小说里',\n '將作者、網址等資訊儲存到小說裡',\n 'Save the author, URL and other information in the file',\n '作者やURLなどの情報をファイルの中に保存します。',\n '작가, URL, 그 외 정보를 소설 내에 저장합니다.',\n 'Сохранить автора, URL и другую информацию в файле',\n ],\n _收藏本页面的所有作品: [\n '收藏本页面的所有作品',\n '收藏本頁面的所有作品',\n 'Bookmark all works on this page',\n 'この頁の全ての作品をブックマークに追加します',\n '이 페이지의 북마크된 모든 작품 다운로드',\n 'Перенести в закладки все работы на этой странице',\n ],\n _输出内容太多已经为你保存到文件: [\n '因为输出内容太多,已经为您保存到文件。',\n '因為輸出內容太多,已經為你儲存到檔案。',\n 'Because the output is too much, it has been saved to a file.',\n '出力内容が多いため、txt ファイルに保存しました。',\n '출력 내용이 너무 많아, 파일로 저장했습니다.',\n 'Так как выход слишком большой, он был сохранен в файл',\n ],\n _不下载重复文件: [\n '不下载重复文件',\n '不下載重複檔案',\n 'Don`t download duplicate files',\n '重複ファイルをダウンロードしない',\n '중복파일 다운로드하지 않기',\n 'Не загружать дубликаты файлов',\n ],\n _不下载重复文件的提示: [\n '下载器会保存自己的下载记录,以避免下载重复的文件。
        你可以清除浏览器的下载记录,这不会影响下载器的下载记录。
        当你清除 Cookie 及其他网站数据时,下载器的记录也会被清除。',\n '下載器會儲存自己的下載紀錄,以避免下載重複的檔案。
        你可以清除瀏覽器的下載記錄,這不會影響下載器的下載記錄。
        當你清除 Cookie 及其他網站資料時,下載器的記錄也會被清除。',\n `The downloader will save its download record to avoid downloading duplicate files.
        You can clear the browser's download history, which will not affect the downloader's download record.
        When you clear cookies and other site data, the downloader's records will also be cleared.`,\n 'ダウンローダーは独自のダウンロード履歴を保存して、重複ファイルのダウンロードを回避する。
        ブラウザのダウンロード履歴をクリアできますが、ダウンローダのダウンロード記録には影響しません。
        cookie と他のサイトデータを削除すると、ダウンローダーの記録も削除されます。',\n '다운로더가 중복되는 파일을 다운로드하지 않도록 자신의 다운로드 기록을 저장합니다.
        브라우저의 다운로드 기록을 지울 수 있으며 이는 다운로더의 다운로드 기록에 영향을 미치지 않습니다.
        쿠키와 다른 사이트 데이터를 지울 때 다운로드 기록도 삭제됩니다.',\n 'Загрузчик хранит собственную историю загрузок, чтобы избежать загрузки дубликатов файлов.
        Вы можете очистить историю загрузок вашего браузера, и это не повлияет на историю загрузок загрузчика.
        Когда вы очищаете cookies и другие данные веб-сайта, история загрузчика также будет очищена.
        ',\n ],\n _策略: [\n '策略:',\n '策略:',\n 'Strategy:',\n 'フィルター:',\n '전략:',\n 'Стратегия',\n ],\n _严格: ['严格', '嚴格', 'Strict', '厳格', '엄격하게', 'Строгий'],\n _宽松: ['宽松', '寬鬆', 'Loose', '緩い', '느슨하게', 'Свободный'],\n _严格模式说明: [\n '判断条件:作品的 id、上传日期、文件名',\n '判斷條件:作品的 id、上傳日期、檔名',\n 'Judgment conditions: id, upload date, file name of the work',\n '審査条件:作品のID、アップロード日、ファイル名',\n '판정 조건: 작품 ID, 업로드 날짜, 파일명',\n 'Условия оценки: идентификатор, дата загрузки, имя файла работы',\n ],\n _宽松模式说明: [\n '判断条件:作品的 id、上传日期',\n '判斷條件:作品的 id、上傳日期',\n 'Judgment conditions: id, upload date of the work',\n '審査条件:作品のID、アップロード日',\n '판정 조건: 작품 ID, 업로드 날짜',\n 'Условия оценки: идентификатор, дата загрузки работы',\n ],\n _清除下载记录: [\n '清除下载记录',\n '清除下載記錄',\n 'Clear download record',\n 'ダウンロード記録をクリア',\n '다운로드 기록 지우기',\n 'Очистить запись загрузки',\n ],\n 确定要清除下载记录吗: [\n '确定要清除下载记录吗?',\n '確定要清除下載記錄嗎?',\n 'Are you sure you want to clear download record?',\n 'ダウンロード記録を消去してもよろしいですか?',\n '다운로드 기록을 지우시겠습니까?',\n 'Вы уверены, что хотите очистить запись загрузки?',\n ],\n _下载记录已清除: [\n '下载记录已清除',\n '已清除下載紀錄',\n 'Download record has been cleared',\n 'ダウンロード履歴がクリアされました',\n '다운로드 기록이 비워졌습니다',\n 'Запись загрузок была очищена',\n ],\n _跳过下载因为重复文件: [\n '检测到文件 {} 已经下载过,跳过此次下载',\n '偵測到檔案 {} 已經下載過,跳過此次下載。',\n 'Skip downloading duplicate files {}',\n '重複ファイル {} をスキップ',\n '파일 {}이(가) 이미 다운로드되어 있어, 다운로드를 건너뜁니다',\n 'Пропустить загрузку дубликатов файлов {}',\n ],\n _保存用户头像为图标: [\n '保存用户头像为图标',\n '將使用者頭貼另存為圖示檔案',\n 'Save user avatar as icon',\n 'プロフィール画像をアイコンとして保存',\n '아이콘으로 유저 프로필 이미지 저장',\n 'Сохранить аватар пользователя как иконку',\n ],\n _保存用户头像为图标说明: [\n '把用户头像保存为 ico 文件,可以手动设置成文件夹的图标。',\n '將使用者頭貼儲存為 ico 檔案,可以手動設定成資料夾圖示。',\n 'Save user avatar as icon',\n 'ユーザーのプロフィール画像を ico ファイルとして保存して、フォルダーアイコンとして設定できます。',\n '유저 프로필 이미지를 ico 파일로 저장하면, 디렉토리 아이콘으로 수동 설정할 수 있습니다.',\n 'Сохранить аватар пользователя как иконку',\n ],\n _正在保存抓取结果: [\n '正在保存抓取结果',\n '正在儲存擷取結果',\n 'Saving crawl results',\n 'クロール結果を保存しています',\n '긁어오기 결과 저장 중',\n 'Сохранение результатов вытаскивания',\n ],\n _已保存抓取结果: [\n '已保存抓取结果',\n '已儲存擷取結果',\n 'Crawl results saved',\n 'クロール結果を保存しました',\n '긁어오기 결과가 저장되었습니다',\n 'Сохранение результатов вытаскивания',\n ],\n _正在恢复抓取结果: [\n '正在恢复抓取结果',\n '正在還原擷取結果',\n 'Restoring crawl results',\n 'クロール結果を再開しています',\n '긁어오기 결과 복구 중',\n 'Восстановление результатов вытаскивания',\n ],\n _已恢复抓取结果: [\n '已恢复抓取结果',\n '已還原擷取結果',\n 'Crawl results resumed',\n 'クロール結果を再開しました',\n '긁어오기 결과가 복구되었습니다',\n 'Результаты вытаскивания восстановлены',\n ],\n _清空已保存的抓取结果: [\n '清空已保存的抓取结果',\n '清除已儲存的擷取結果',\n 'Clear saved crawl results',\n 'セーブしたクロール結果をクリアします',\n '저장된 긁어오기 결과 비우기',\n 'Очистить сохраненные результаты вытаскивания',\n ],\n _数据清除完毕: [\n '数据清除完毕',\n '資料清除完畢',\n 'Data cleared',\n 'クリアされたデータ',\n '데이터가 비워졌습니다',\n 'Данные очищены',\n ],\n _已跳过n个文件: [\n '已跳过 {} 个文件',\n '已跳過 {} 個檔案',\n '{} files skipped',\n '{} つのファイルをスキップしました',\n '{}개의 파일을 건너뛰었습니다',\n '{} файл(ов) пропущены',\n ],\n _不保存图片因为宽高: [\n '{} 没有被保存,因为它的宽高不符合设定。',\n '{} 並未儲存,因為它的寬高不符合設定。',\n '{} was not saved because its width and height do not match the settings.',\n '{} は幅と高さが設定に合わないため、保存されていません。',\n '{} 너비와 높이가 설정에 맞지 않아, 저장되지 않았습니다.',\n '{} не был(и) сохранен, потому что его ширина и высота не соответствуют настройкам.',\n ],\n _保存: ['保存', '儲存', 'Save', '保存', '저장', 'Сохранить'],\n _加载: ['加载', '載入', 'Load', 'ロード', '불러오기', 'Загрузить'],\n _保存命名规则提示: [\n '保存命名规则,最多 20 个',\n '儲存命名規則,最多 20 個',\n 'Save naming rule, up to 20',\n '命名規則を保存します。最大 20 個まで',\n '명명 규칙 저장, 최대 20개',\n 'Сохранить правило именования, до 20',\n ],\n _已保存命名规则: [\n '已保存命名规则',\n '已儲存命名規則',\n 'Naming rule saved',\n '命名規則を保存しました',\n '명명 규칙이 저장되었습니다.',\n 'Правило наименования сохранено',\n ],\n _命名: ['命名', '命名', 'Name', '命名', '이름', 'Имя'],\n _无损: ['无损', '無損', 'Lossless', 'ロスレス', '무손실', 'Без потерь'],\n _文件名长度限制: [\n '文件名长度限制',\n '檔案名稱長度限制',\n 'File name length limit',\n 'ファイル名の長さ制限',\n '파일명 길이 제한',\n 'Лимит длины имени файла',\n ],\n _标签分隔符号: [\n '标签分隔符号',\n '標簽分隔符號',\n 'Tag separation symbol',\n 'タグ セパレーションシンボル',\n '태그 분리 기호',\n 'Тег символ разделения',\n ],\n _标签分隔符号提示: [\n '只会影响这些命名标记的结果:{tags}, {tags_translate}, {tags_transl_only}
        推荐符号 , # ^ & _',\n '只會影響這些命名標記的結果:{tags}, {tags_translate}, {tags_transl_only}
        推薦符號 , # ^ & _',\n 'Only affects results for these named tags: {tags}, {tags_translate}, { tags_transl_only}.
        Recommended symbols , # ^ & _',\n '次の名前付きタグの結果にのみ影響します: {tags}{tags_translate}{ tags_transl_only }
        推奨記号 , # ^ & _。',\n '이러한 명명된 태그의 결과에만 영향을 미칩니다: {tags}, {tags_translate}, { tags_transl_only }.
        권장 기호 , # ^ & _',\n 'Влияет только на результаты для следующих именованных тегов: {tags}, {tags_translate}, { tags_transl_only .
        Рекомендуемые символы , # ^ & _',\n ],\n _导出csv: [\n '导出 CSV 文件',\n '匯出 CSV 檔',\n 'Export CSV file',\n 'CSV ファイルをエクスポート',\n 'CSV 파일 내보내기',\n 'Экспорт в файл CSV',\n ],\n _导出抓取结果: [\n '导出抓取结果',\n '匯出擷取結果',\n 'Export results',\n 'クロール結果をエクスポート',\n '결과 내보내기',\n 'Экспорт результатов',\n ],\n _导入抓取结果: [\n '导入抓取结果',\n '匯入擷取結果',\n 'Import results',\n 'クロール結果をインポート',\n '결과 불러오기',\n 'Импорт результатов',\n ],\n _导入成功: [\n '导入成功',\n '匯入成功',\n 'Import successfully',\n 'インポート成功',\n '가져오기 성공',\n 'Импорт успешен',\n ],\n _导出成功: [\n '导出成功',\n '匯出成功',\n 'Export successfully',\n 'エクスポート成功',\n '내보내기 성공',\n 'Импорт успешен',\n ],\n _图片尺寸: [\n '图片尺寸',\n '圖片尺寸',\n 'Image size',\n '画像サイズ',\n '이미지 크기',\n 'Размер изображения',\n ],\n _图片尺寸2: [\n '图片尺寸',\n '圖片尺寸',\n 'Image size',\n '画像サイズ',\n '이미지 크기',\n 'Размер изображения',\n ],\n _原图: ['原图', '原圖', 'Original', 'Original', '원본', 'Оригинал'],\n _普通: ['普通', '普通', 'Regular', 'Regular', '레귤러', 'Обычный'],\n _小图: ['小图', '小圖', 'Small', 'Small', '스몰', 'Маленький'],\n _方形缩略图: [\n '方形缩略图',\n '方形縮圖',\n 'Square thumbnail',\n 'Square thumbnail',\n '정사각형 썸네일',\n 'Квадратная миниатюра',\n ],\n _导出: ['导出', '匯出', 'Export', 'エクスポート', '내보내기', 'Экспорт'],\n _导入: ['导入', '匯入', 'Import', 'インポート', '불러오기', 'Импорт'],\n _清除: ['清除', '清除', 'Clear', 'クリア', '비우기', 'Очистить'],\n _导入下载记录: [\n '导入下载记录',\n '匯入下載紀錄',\n 'Import download record',\n 'ダウンロード記録をインポート',\n '다운로드 기록 불러오기',\n 'Импорт записи загрузки',\n ],\n _导出下载记录: [\n '导出下载记录',\n '匯出下載紀錄',\n 'Export download record',\n 'ダウンロード記録のエクスポート',\n '다운로드 기록 내보내기',\n 'Экспорт записи загрузки',\n ],\n _数据较多需要花费一些时间: [\n '数据较多,需要花费一些时间',\n '資料較多,需要花費一些時間',\n 'A lot of data, it will take some time',\n 'データ量が多いので少し時間がかかります',\n '데이터가 많아 시간이 좀 걸립니다',\n 'Много данных, это займет некоторое время',\n ],\n _完成: ['完成', '完成', 'Completed', '完了', '완료됨', 'Готово'],\n _日期格式: [\n '日期和时间格式',\n '日期和時間格式',\n 'Date and time format',\n '日付と時刻の書式',\n '날짜 및 시간 형식',\n 'Формат даты и времени',\n ],\n _日期格式提示: [\n '你可以使用以下标记来设置日期和时间格式。这会影响命名规则里的 {date} 和 {upload_date} 和 {task_date}。
        对于时间如 2021-04-30T06:40:08',\n '你可以使用以下標記來設定日期和時間格式。這會影響命名規則裡的 {date} 和 {upload_date} 和 {task_date}。
        對於資料如:2021-04-30T06:40:08。',\n 'You can use the following notation to set the date and time format. This will affect {date} and {upload_date} and {task_date} in the naming rules.
        For time such as 2021-04-30T06:40:08',\n '以下のタグを使用して日時と時刻の書式を設定することができます。 これは命名規則の {date} と {upload_date} と {task_date} に影響します。
        例:2021-04-30T06:40:08',\n '다음 표기법을 사용하여 날짜 및 시간 형식을 설정할 수 있습니다.
        이것은 명명 규칙에 있는 {date}와 {upload_date}와 {task_date}에 영향을 미칩니다.
        예: 2021-04-30T06:40:08',\n 'Для установки формата даты и времени можно использовать следующую нотацию. Это повлияет на {date} и {upload_date} и {task_date} в правилах именования.
        Для времени, например, 2021-04-30T06:40:08',\n ],\n _命名标记taskDate: [\n '本次任务抓取完成时的时间。例如:2020-10-21。',\n '本次工作擷取完成時的時間。例如:2020-10-21。',\n 'The time when the task was crawl completed. For example: 2020-10-21',\n 'この作業のクロールが完了した時刻です。 例:2020-10-21',\n '긁어오기 작업을 완료한 날짜입니다. 예: 2020-10-21',\n 'Время, когда задание было выполнено. Например: 2020-10-21',\n ],\n _自动检测: [\n '自动检测',\n '自動偵測',\n 'Auto',\n '自動検出',\n '자동',\n 'Авто детект',\n ],\n _公开: ['公开', '公開', 'Public', '公開', '공개', 'Публичный'],\n _不公开: ['不公开', '非公開', 'Private', '非公開', '비공개', 'Приватный'],\n _已收藏: [\n '已收藏',\n '已收藏',\n 'Bookmarked',\n 'ブックマークした',\n '북마크됨',\n 'В закладках',\n ],\n _已收藏带参数: [\n '已收藏 {}',\n '已收藏 {}',\n 'Bookmarked {}',\n 'ブックマークした {}',\n '북마크된 {}',\n 'В закладках {}',\n ],\n _未收藏: [\n '未收藏',\n '未收藏',\n 'Not bookmarked',\n 'ブックマークされていない',\n '북마크되지 않음',\n 'Не в закладках',\n ],\n _收藏作品: [\n '收藏作品',\n '收藏作品',\n 'Bookmark works',\n '作品をブックマークする',\n '북마크 작품',\n 'Закладки работают',\n ],\n _下载之后收藏作品: [\n '下载之后收藏作品',\n '下載之後收藏作品',\n 'Bookmark works after downloading',\n 'ダウンロードした作品をブックマークする',\n '다운로드 후 작품 북마크',\n 'Закладка работает после загрузки',\n ],\n _下载之后收藏作品的提示: [\n '下载文件之后,自动收藏这个作品。',\n '下載檔案之後,自動收藏這個作品。',\n 'After you download a file, the downloader will automatically bookmark the work.',\n 'ダウンロード後、作品は自動的にブックマークされます。',\n '파일을 다운로드하면, 자동으로 작품을 북마크합니다.',\n 'После загрузки файла загрузчик автоматически делает закладку',\n ],\n _收藏设置: [\n '下载器的收藏功能 (✩)',\n '下載器的收藏功能 (✩)',\n `Downloader's bookmark function (✩)`,\n 'ダウンローダーのブックマーク機能 (✩)',\n '다운로더의 북마크 기능 (☆)',\n `Функция сбора загрузчика (✩)`,\n ],\n _下载器的收藏按钮默认会添加作品的标签: [\n '点击 按钮时,下载器会收藏这个作品并且附带它的标签。',\n '點選 按鈕時,下載器會收藏這個作品並且附帶它的標籤。',\n 'When the button is clicked, the downloader bookmarks this work and attaches its tag.',\n ' ボタンをクリックすると、ダウンローダはこの作品をブックマークし、タグを付けます。',\n ' 버튼을 클릭하면 다운로더는 이 작품을 북마크하고 태그를 붙입니다.',\n 'При нажатии кнопки загрузчик добавляет эту работу в закладки и прикрепляет свой тег.',\n ],\n _添加tag: [\n '添加标签',\n '加入標籤',\n 'Add tag',\n 'タグを追加',\n '태그 추가',\n 'Добавить тег',\n ],\n _不添加tag: [\n '不添加标签',\n '不加入標籤',\n \"Don't add tag\",\n 'タグなし',\n '태그 추가하지 않기',\n 'Не добавлять тег',\n ],\n _用户阻止名单: [\n '用户阻止名单',\n '使用者阻止名單',\n 'User block list',\n 'ユーザーブロックリスト',\n '유저 차단 목록',\n 'Блок списка пользователей ',\n ],\n _用户阻止名单的说明: [\n '不下载这些用户的作品。需要输入用户 id。如果有多个用户 id,使用英文逗号,分割。',\n '不下載這些使用者的作品。需要輸入使用者 id。若有多個使用者 id,使用半形逗號(,)分隔。',\n 'The works of these users will not be downloaded. Need to type the user ID. If there are multiple user ID, use comma (,) separated.',\n 'これらのユーザーの作品はダウンロードしません。ユーザー ID が必要です。複数のユーザ ID は \",\" で区切ってください。',\n '이 유저들의 작품은 다운로드되지 않습니다. 유저 ID를 입력해야 합니다.
        여러 유저 ID가 있는 경우 쉼표(,)로 구분합니다.',\n 'Работы этих пользователей не будут загружаться. Необходимо ввести идентификатор пользователя. Если имеется несколько идентификаторов пользователя, используйте разделение запятыми (,).',\n ],\n _全部: ['全部', '全部', 'All', '全部', '전부', 'Все'],\n _任一: ['任一', '任一', 'One', '何れか', '하나만', 'Один'],\n _颜色主题: [\n '颜色主题',\n '色彩主題',\n 'Color theme',\n 'カラーテーマ',\n '테마
        ',\n 'Цветовая тема',\n ],\n _管理设置: [\n '管理设置',\n '管理設定',\n 'Manage settings',\n '設定の管理',\n '설정 관리',\n 'Изменение настроек',\n ],\n _导出设置: [\n '导出设置',\n '匯出設定',\n 'Export settings',\n 'エクスポート設定',\n '내보내기',\n 'Настройки экспорта',\n ],\n _导入设置: [\n '导入设置',\n '匯入設定',\n 'Import settings',\n 'インポート設定',\n '불러오기',\n 'Настройки импорта',\n ],\n _重置设置: [\n '重置设置',\n '重設設定',\n 'Reset settings',\n 'リセット設定',\n '설정 초기화',\n 'Сброс настроек',\n ],\n _日均收藏数量: [\n '日均收藏数量',\n '日均收藏數量',\n 'Average number of daily bookmarks',\n '1 日の平均ブックマーク数',\n '일일 평균 북마크 수',\n 'Среднее количество ежедневных закладок',\n ],\n _日均收藏数量的提示: [\n '你可以设置作品的平均每日收藏数量。满足条件的作品会被下载。',\n '您可以設定作品的平均每日收藏數量。滿足條件的作品會被下載。',\n 'You can set the average daily bookmarks number of works. Works that meet the conditions will be downloaded.',\n '作品の 1 日の平均ブックマーク数を設定することができます。条件を満した作品はダウンロードされます。',\n '작품의 일일 평균 북마크 수를 설정할 수 있습니다. 조건을 만족한 작품은 다운로드됩니다.',\n 'Вы можете установить среднесуточное количество закладок в работах. Работы, удовлетворяющие условиям, будут загружены.',\n ],\n _导出关注列表CSV: [\n '导出关注的用户列表(CSV)',\n '匯出關注的使用者列表(CSV)',\n 'Export Followed Users List (CSV)',\n 'フォローされているユーザーのリストをエクスポートする(CSV)',\n '팔로우한 사용자 목록 내보내기 (CSV)',\n 'Экспорт списка отслеживаемых пользователей (CSV)',\n ],\n _导出关注列表: [\n '导出关注的用户列表(JSON)',\n '匯出關注的使用者列表(JSON)',\n 'Export Followed Users List (JSON)',\n 'フォローされているユーザーのリストをエクスポートする(JSON)',\n '팔로우한 사용자 목록 내보내기 (JSON)',\n 'Экспорт списка отслеживаемых пользователей (JSON)',\n ],\n _批量关注用户: [\n '批量关注用户(JSON)',\n '批次關注使用者(JSON)',\n 'Follow users in batches (JSON)',\n 'ユーザーをバッチでフォローする(JSON)',\n '일괄적으로 사용자 팔로우 (JSON)',\n 'Подписывайтесь на пользователей пакетами (JSON)',\n ],\n _导入导出关注用户列表的说明: [\n '在你或其他用户的 Following 页面里,你可以导出关注的用户列表,也可以导入列表来批量关注用户。
        当你有多个帐户时,可以使用这个方法同步你关注的用户列表。你也可以复制其他用户的关注用户列表。',\n '在你或其他使用者的 Following 頁面裡,你可以匯出關注的使用者列表,也可以匯入列表來批次關注使用者。
        當你有多個帳戶時,可以使用這個方法同步你關注的使用者列表。你也可以複製其他使用者的關注使用者列表。',\n \"On the Following page of you or other users, you can export the list of followed users, or import the list to follow users in batches.
        When you have multiple accounts, you can use this method to synchronize the list of users you follow. You can also copy another user's followed user list.\",\n '自分または他のユーザーの [フォロー中] ページで、フォローしているユーザーのリストをエクスポートしたり、ユーザーをフォローするリストをバッチでインポートしたりできます。
        複数のアカウントをお持ちの場合、この方法を使用して、フォローしているユーザーのリストを同期できます。 別のユーザーのフォローしているユーザー リストをコピーすることもできます。',\n '본인 또는 다른 사용자의 팔로잉 페이지에서 팔로우한 사용자 목록을 내보내거나 목록을 가져와 사용자를 일괄적으로 팔로우할 수 있습니다.
        계정이 여러 개인 경우 이 방법을 사용하여 팔로우하는 사용자 목록을 동기화할 수 있습니다. 다른 사용자의 팔로우된 사용자 목록을 복사할 수도 있습니다.',\n 'На странице «Отслеживание» вас или других пользователей вы можете экспортировать список отслеживаемых пользователей или импортировать список для подписки на пользователей в пакетном режиме.
        Если у вас несколько учетных записей, вы можете использовать этот метод для синхронизации списка пользователей, на которых вы подписаны. Вы также можете скопировать список отслеживаемых пользователей другого пользователя.',\n ],\n _手动选择作品: [\n '手动选择作品',\n '手動選擇作品',\n 'Manually select',\n '手動で作品を選ぶ',\n '수동 선택',\n 'Ручной выбор',\n ],\n _快捷键ALTS手动选择作品: [\n '你可以使用快捷键 Alt + S 开始或暂停手动选择作品。
        选择完毕之后,打开下载器面板,点击“抓取选择的作品”。',\n '你可以使用快捷鍵 Alt + S 開始或暫停手動選擇作品。
        選擇完畢之後,開啟下載器面板,點選“抓取選擇的作品”。',\n 'You can use the shortcut keys Alt + S to start or pause manual selection of works.
        After selecting, open the downloader panel and click \"Crawl selected works\".',\n 'ショートカット キー Alt + S を使用して、作品の手動選択を開始または一時停止できます。
        選択後、ダウンローダパネルを開いて「選ばれた作品をクロール」をクリック。',\n '바로 가기 키 Alt + S를 사용하여 작품 수동 선택을 시작하거나 일시 중지할 수 있습니다.
        선택한 후 다운로더 패널을 열고 \"선택된 작품 긁어오기\"를 클릭합니다.',\n 'Вы можете использовать сочетания клавиш Alt + S, чтобы начать или приостановить ручной выбор произведений.
        После выбора откройте панель загрузчика и нажмите «Стащить выбранные работы».',\n ],\n _抓取选择的作品: [\n '抓取选择的作品',\n '擷取選擇的作品',\n 'Crawl selected works',\n '選ばれた作品をクロール',\n '선택된 작품 긁어오기',\n 'Стащить выбранные работы',\n ],\n _抓取选择的作品2: [\n '抓取选择的作品 {}',\n '擷取選擇的作品 {}',\n 'Crawl selected works {}',\n '選ばれた作品をクロール {}',\n '선택된 작품 긁어오기 {}',\n 'Стащить выбранные работы',\n ],\n _清空选择的作品: [\n '清空选择的作品',\n '清空選擇的作品',\n 'Clear selected works',\n '選んだ作品をクリアします',\n '선택된 작품 비우기',\n 'Очистить выбранные работы',\n ],\n _暂停选择: [\n '暂停选择',\n '暫停選擇',\n 'Pause select',\n '選択を一時停止',\n '선택 일시중지',\n 'Остановить выбора',\n ],\n _继续选择: [\n '继续选择',\n '繼續選擇',\n 'Continue select',\n '選択を続ける',\n '선택 이어하기',\n 'Продолжить выбор',\n ],\n _离开页面前提示选择的作品未抓取: [\n '选择的作品尚未抓取。现在离开此页面会导致你选择的作品被清空。',\n '選擇的作品尚未擷取。現在離開此頁面會導致您選擇的作品被清空。',\n 'The selected work has not been crawled. Leaving this page now will cause your selected work to be cleared.',\n '選ばれた作品はまだクロールしていません。今このページを離れると、選ばれた作品がクリアされます。',\n '선택된 작품을 아직 긁어오지 않았습니다. 지금 현재 페이지를 떠나면 선택된 작품이 비워집니다.',\n 'Выбранная работа не была стащена. Если вы покинете эту страницу, выбранная вами работа будет очищена.',\n ],\n _排除了所有作品类型: [\n '排除了所有作品类型',\n '排除了所有作品類型',\n 'Excluded all work types',\n 'すべての作品種類を除外しました',\n '모든 작품 유형 제외',\n 'Исключены все типы работ',\n ],\n _为作品建立单独的文件夹: [\n '为每个作品建立单独的文件夹',\n '為每個作品建立單獨的資料夾',\n 'Create a separate folder for each work',\n '作品ごとに別フォルダを作成',\n '작품마다 별도의 디렉토리 생성',\n 'Создайте отдельную папку для каждой работы',\n ],\n _为作品建立单独的文件夹说明: [\n '这里应该使用 {id_num} 代替 {id}',\n '這裡應該使用 {id_num} 代替 {id}',\n 'Here {id_num} should be used instead of {id}',\n 'ここでは、{id} の代わりに {id_num} を使用する必要があります',\n '여기서는 {id}대신 {id_num}을 사용해야 합니다',\n 'Здесь {id_num} следует использовать вместо {id}',\n ],\n _文件数量大于: [\n '文件数量 >',\n '檔案數量 >',\n 'Number of files >',\n 'ファイル数 >',\n '파일 수 >',\n 'Количество файлов >',\n ],\n _保存用户头像: [\n '保存用户头像',\n '儲存使用者頭貼',\n 'Save user avatar',\n 'ユーザーアイコンの保存',\n '유저 프로필 이미지 저장',\n 'Сохранить аватар пользователя',\n ],\n _保存用户封面: [\n '保存用户封面',\n '儲存使用者封面',\n 'Save user cover',\n 'ユーザーカバーの保存',\n '유저 커버 저장',\n 'Сохранить обложку пользователя',\n ],\n _待处理: [\n '待处理',\n '待處理',\n 'Pending',\n '処理待ち',\n '처리 대기',\n 'В ожидании',\n ],\n _超出最大页码: [\n '超出最大页码:',\n '超出最大頁碼:',\n 'Maximum page number exceeded:',\n '最大ページ数を超えました:',\n '최대 페이지 번호 초과:',\n 'Превышен максимальный номер страницы:',\n ],\n _针对特定用户屏蔽tag: [\n '针对特定用户屏蔽标签',\n '針對特定使用者排除標籤',\n 'Block tags for specific users',\n '特定のユーザーに対してタグをブロック',\n '특정 유저에 대한 차단 태그',\n 'Блокировать теги для определенных пользователей',\n ],\n _展开收起: [\n '展开/收起',\n '展開/摺疊',\n 'Expand/Collapse',\n '展開/折りたたみ',\n '확장/축소',\n 'Развернуть/Свернуть',\n ],\n _展开: ['展开', '展開', 'Expand', '展開', '확장', 'Развернуть'],\n _收起: ['收起', '摺疊', 'Collapse', '折りたたみ', '축소', 'Свернуть'],\n _把r18作品存入指定的文件夹里: [\n '把 R-18(G) 作品存入指定的文件夹里',\n '把 R-18(G) 作品存入指定的資料夾裡',\n 'Save the R-18(G) works in the designated folder',\n 'R-18(G) の作品を指定のフォルダに入れる',\n 'R-18(G) 작품을 지정된 디렉토리에 저장',\n 'Сохраните R-18(G) работы в указанной папке',\n ],\n _必填项不能为空: [\n '必填项不能为空',\n '必填項不能為空',\n 'Required fields cannot be empty',\n '必須フィールドが入力されていません',\n '필수 입력 항목은 비워둘 수 없습니다',\n 'Обязательные поля не могут быть пустыми',\n ],\n _用户ID必须是数字: [\n '用户 ID 必须是数字',\n '使用者 ID 必須是數字',\n 'User ID must be a number',\n 'ユーザー ID は数字です',\n '유저 ID는 숫자만 허용합니다',\n 'Идентификатор пользователя должен быть числом',\n ],\n _必须是数字: [\n '必须是数字',\n '必須是數字',\n 'Number',\n '数字でなければなりません',\n '숫자만 허용',\n 'Число',\n ],\n _tag用逗号分割: [\n '多个标签使用英文逗号,分割',\n '多個標籤使用半形逗號(,)分隔',\n 'Multiple tags use comma (,) split',\n '複数のタグはカンマ「,」で区切ってください',\n '여러 태그는 쉼표(,)로 구분합니다.',\n 'Для нескольких тегов используется разделение запятой (,)',\n ],\n _添加: ['添加', '新增', 'Add', '追加', '추가', 'Добавить'],\n _取消: ['取消', '取消', 'Cancel', 'キャンセル', '취소', 'Отмена'],\n _更新: ['更新', '更新', 'Update', '更新', '업데이트', 'Обновить'],\n _删除: ['删除', '刪除', 'Delete', '削除', '제거', 'Удалить'],\n _添加成功: [\n '添加成功',\n '新增成功',\n 'Added successfully',\n '追加されました',\n '성공적으로 추가되었습니다.',\n 'Добавлено успешно',\n ],\n _更新成功: [\n '更新成功',\n '更新成功',\n 'update completed',\n '更新成功',\n '업데이트에 성공하였습니다.',\n 'обновление завершено',\n ],\n _在作品缩略图上显示放大按钮: [\n '在作品缩略图上显示放大按钮',\n '在作品縮圖上顯示放大按鈕',\n 'Show zoom button on thumbnail',\n '作品のサムネイルに拡大ボタンを表示',\n '썸네일에 확대 버튼 표시',\n 'Показать кнопку увеличить на миниатюре',\n ],\n _在作品缩略图上显示下载按钮: [\n '在作品缩略图上显示下载按钮',\n '在作品縮圖上顯示下載按鈕',\n 'Show download button on thumbnail',\n '作品のサムネイルにダウンロードボタンを表示',\n '썸네일에 다운로드 버튼 표시',\n 'Показать кнопку загрузить на миниатюре',\n ],\n _已发送下载请求: [\n '已发送下载请求',\n '已傳送下載請求',\n 'Download request sent',\n 'ダウンロードリクエストを送信しました',\n '다운로드 요청 전송',\n 'Запрос на скачивание отправлен',\n ],\n _HowToUse: [\n '点击页面右侧的蓝色按钮可以打开下载器面板。

        下载的文件保存在浏览器的下载目录里。

        建议您在浏览器的下载设置中关闭“下载前询问每个文件的保存位置”。

        下载器默认开启了一些增强功能,这可能导致 Pixiv 页面样式改变。你可以在下载器的“更多”标签页中开启或关闭这些功能。',\n '點選頁面右側的藍色按鈕可以開啟下載器面板。

        下載的檔案儲存在瀏覽器的下載目錄裡。

        請不要在瀏覽器的下載選項裡選取「下載每個檔案前先詢問儲存位置」。

        下載器預設開啟了一些增強功能,這可能導致 Pixiv 頁面樣式改變。你可以在下載器的“更多”標籤頁中開啟或關閉這些功能。',\n 'Click the blue button on the right side of the page to open the downloader panel.

        The downloaded file is saved in the browser`s download directory.

        It is recommended to turn off \"Ask where to save each file before downloading\" in the browser`s download settings.

        The downloader has some enhancements turned on by default, which may cause changes in the style of Pixiv pages. You can turn these features on or off in the \"More\" tab of the downloader.',\n 'ページ右側の青いボタンをクリックすると、ダウンローダーパネルが開きます。

        ダウンロードしたファイルは、ブラウザのダウンロードディレクトリに保存されます。

        ブラウザのダウンロード設定で 「 ダウンロード前に各ファイルの保存場所を確認する 」 をオフにすることをお勧めします。

        ダウンローダーにはデフォルトでいくつかの機能拡張が有効になっており、これにより Pixiv ページのスタイルが変更される可能性があります。 これらの機能は、ダウンローダーの「その他」タブでオンまたはオフにできます。',\n '페이지 오른쪽에 있는 파란색 버튼을 클릭하면 다운로드 패널이 열립니다.

        다운로드한 파일은 브라우저의 다운로드 디렉토리에 저장됩니다.

        브라우저의 다운로드 설정에서 \"다운로드 전에 각 파일의 저장 위치 확인\"을 끄는 것이 좋습니다.

        다운로더에는 기본적으로 몇 가지 향상된 기능이 켜져 있으며 이로 인해 Pixiv 페이지 스타일이 변경될 수 있습니다. 다운로더의 \"더 보기\" 탭에서 이러한 기능을 켜거나 끌 수 있습니다.',\n 'Нажмите синюю кнопку в правой части страницы, чтобы открыть панель загрузчика.

        Загруженный файл сохраняется в каталоге загрузки браузера.

        Рекомендуется отключить \"Спрашивать, куда сохранять каждый файл перед загрузкой\" в настройках загрузки браузера.

        В загрузчике по умолчанию включены некоторые улучшения, которые могут привести к изменению стиля страниц Pixiv. Вы можете включить или отключить эти функции на вкладке «Дополнительно» загрузчика.',\n ],\n _我知道了: ['我知道了', '我知道了', 'OK', '分かりました', '확인', 'Ок'],\n _背景图片: [\n '背景图片',\n '背景圖片',\n 'Background image',\n '背景画像',\n '배경 이미지',\n 'Фоновое изображение',\n ],\n _选择文件: [\n '选择文件',\n '選擇檔案',\n 'Select a file',\n 'ファイルを選択',\n '파일 선택',\n 'Выберите файл',\n ],\n _不透明度: [\n '不透明度',\n '不透明度',\n 'Opacity',\n '不透明度',\n '투명도',\n 'Непрозрачность',\n ],\n _对齐方式: [\n '对齐方式',\n '對齊方式',\n 'Alignment',\n '揃え方式',\n '정렬',\n 'Выравнивание',\n ],\n _顶部: ['顶部', '頂部', 'top', '上揃え', '상단', 'топ'],\n _居中: ['居中', '居中', 'center', '中央揃え', '중앙', 'центр'],\n _根据作品类型自动建立文件夹: [\n '根据作品类型自动建立文件夹',\n '根據作品類型自動建立資料夾',\n 'Create folders based on the type of work',\n '作品種類に応じてフォルダを自動作成',\n '작품 유형에 따라 자동으로 디렉토리 생성',\n 'Создание папок на основе вида работы',\n ],\n _使用第一个匹配的tag建立文件夹: [\n '使用第一个匹配的标签建立文件夹',\n '使用第一個符合的標籤建立資料夾',\n 'Create a folder with the first matched tag',\n '最初の一致するタグにフォルダを作成',\n '첫 번째 일치하는 태그로 디렉토리 생성',\n 'Создать папку с первым совпавшим тегом',\n ],\n _使用匹配的tag建立文件夹的说明: [\n '如果作品的标签列表里含有用户设置的标签,就会使用这个标签建立文件夹(仅限第一个)',\n '如果作品的標籤列表裡含有使用者設定的標籤,就會使用這個標籤建立資料夾(僅限第一個)',\n 'If the tag list of the work contains a tag set by the user, this tag will be used to create a folder (only the first one)',\n '作品のタグリストにユーザーが設定したタグが含まれている場合、そのタグを使用してフォルダが作成されます。(最初の1つだけ)',\n '작품의 태그에 유저가 설정한 태그가 포함되어 있다면, 태그를 사용하여 디렉토리를 생성합니다. (첫 번째 태그만 해당)',\n 'Если в списке тегов работы есть тег, заданный пользователем, этот тег будет использован для создания папки (только первой)',\n ],\n _全年龄: [\n '全年龄',\n '全年齡',\n 'All ages',\n '全年齢',\n '전체 연령',\n 'Все возраста',\n ],\n _没有符合条件的结果: [\n '没有符合条件的结果',\n '沒有符合條件的結果',\n 'There are no eligible results',\n '対象となる結果はありません',\n '조건에 부합하는 결과가 없습니다',\n 'Нет результатов, отвечающих требованиям',\n ],\n _收藏: ['收藏', '收藏', 'Bookmark', 'ブックマーク', '북마크', 'Закладка'],\n _已加入收藏: [\n '已加入收藏',\n '已加入收藏',\n 'Bookmarked',\n 'ブックマークした',\n '북마크됨',\n 'В закладках',\n ],\n _全屏查看: [\n '全屏',\n '全螢幕',\n 'Full screen view',\n '全画面表示',\n '전체 화면 보기',\n 'Просмотр на весь экран',\n ],\n _抓取id区间: [\n '抓取 ID 区间',\n '擷取 ID 區間',\n 'Crawl ID range',\n 'ID 範囲をクロール',\n 'ID 범위 긁어오기',\n 'Стащить диапазон идентификаторов',\n ],\n _抓取id区间说明: [\n '你可以设置一个作品 ID 范围,抓取此范围内的所有作品(包含开始和结束的 id)。
        注意:如果一次任务中产生的抓取结果数量太多,可能会导致页面崩溃。
        如果你需要抓取很多 ID,请考虑拆分成多个任务。我建议每批抓取的 ID 数量不要超过 100,000 个。',\n '你可以設定一個作品 ID 範圍,擷取此範圍內的所有作品(包含開始和結束的 id)。
        注意:如果一次任務中產生的擷取結果數量太多,可能會導致頁面崩潰。
        如果你需要抓取很多 ID,請考慮拆分成多個任務。我建議每批抓取的 ID 數量不要超過 100,000 個。',\n 'You can set a range of work ID and grab all works in this range (including the begin and end ID).
        Note: If the number of crawling results in a task is too much, it may cause the page to crash.
        If you need to crawl a lot of IDs, consider splitting it into multiple tasks. I recommend crawling no more than 100,000 IDs per batch.',\n '作品 ID の範囲を設定し、その範囲内のすべての作品をクロールすることができます。「開始 ID と終了 id を含む」
        注意:1 つのタスクであまりにも多くのクロール結果を生成すると、ページがクラッシュする可能性があります。
        多数の ID をクロールする必要がある場合は、複数のタスクに分割することを検討してください。 バッチごとにクロールする ID は 100,000 未満にすることをお勧めします。',\n '작품 ID 범위를 설정할 수 있습니다. 이 범위 내의 모든 작품 (시작과 끝 ID 포함).
        참고: 작업의 긁어오기 결과가 너무 많으면 페이지가 충돌할 수 있습니다.
        많은 ID를 크롤링해야 하는 경우 이를 여러 작업으로 분할하는 것이 좋습니다. 배치당 100,000개 이하의 ID를 크롤링하는 것이 좋습니다.',\n 'Вы можете задать диапазон идентификаторов работ и захватить все работы в этом диапазоне (включая идентификаторы начала и конца).
        Примечание: Если в задании слишком большое количество результатов стаскивания, это может привести к сбою страницы.
        Если вам нужно сканировать большое количество идентификаторов, рассмотрите возможность разделения этого процесса на несколько задач. Я рекомендую сканировать не более 100 000 идентификаторов за пакет.',\n ],\n _抓取id区间起点: [\n '请输入开始的 ID: ',\n '請輸入開始的 ID: ',\n 'Please type in the beginning ID: ',\n '開始 ID を入力してください: ',\n '시작 ID를 입력해주세요: ',\n 'Пожалуйста, введите начальный идентификатор: ',\n ],\n _抓取id区间终点: [\n '请输入结束的 ID: ',\n '請輸入結束的 ID: ',\n 'Please type in the ending ID: ',\n '終了 ID を入力してください: ',\n '끝 ID를 입력해주세요: ',\n 'Пожалуйста, введите конечный идентификатор: ',\n ],\n _选项卡切换方式: [\n '选项卡切换方式',\n '頁籤切換方式',\n 'How to switch tabs',\n 'タブ切り替え方式',\n ' 전환 방식',\n 'Как переключать вкладки',\n ],\n _鼠标经过: [\n '鼠标经过',\n '滑鼠經過',\n 'Mouse over',\n 'マウスオーバー',\n '마우스 올리기',\n 'Наведите мышь',\n ],\n _鼠标点击: [\n '鼠标点击',\n '滑鼠點選',\n 'Mouse click',\n 'マウスクリック',\n '마우스 클릭',\n 'Кликнуть мышкой',\n ],\n _在序号前面填充0: [\n '在序号前面填充 0',\n '在序號前面填充 0',\n 'Add 0 in front of the serial number',\n 'シリアル番号の前に 0 を記入',\n '일련번호 앞 0 채우기',\n 'Добавьте 0 перед серийным номером',\n ],\n _在序号前面填充0的说明: [\n '这可以解决一些软件不能正确的按照文件名来排序文件的问题。',\n '這可以解決一些軟體不能正確的按照檔名來排序檔案的問題。',\n 'This can solve the problem that some software cannot correctly sort files by file name.',\n 'これにより、一部のソフトウェアがファイルをファイル名で正しくソートできないという問題を解決できます。',\n '이것은 일부 소프트웨어가 파일 이름별로 파일을 올바르게 정렬할 수 없는 문제를 해결할 수 있습니다.',\n 'Это может решить проблему того, что некоторые программы не могут правильно сортировать файлы по имени файла.',\n ],\n _序号总长度: [\n '序号总长度',\n '序號總長度',\n 'Total length of serial number',\n 'シリアル番号の全長',\n '일련번호 전체 길이',\n 'Общая длина серийного номера',\n ],\n _完全一致: [\n '完全一致',\n '完全一致',\n 'Perfect match',\n '完全一致',\n '완전 일치',\n 'Идеальное совпадение',\n ],\n _部分一致: [\n '部分一致',\n '部分一致',\n 'Partial match',\n '部分一致',\n '부분 일치',\n 'Частичное совпадение',\n ],\n _位置: ['位置', '位置', 'Position', '位置', '위치', 'Позиция'],\n _左: ['左', '左', 'Left', '左', '왼쪽', 'Слева'],\n _右: ['右', '右', 'Right', '右', '오른쪽', 'Справа'],\n _多图作品只下载前几张图片: [\n '多图作品只下载前几张图片',\n '多圖作品只下載前幾張圖片',\n 'Multi-image works only download the first few images',\n 'マルチ作品は最初の何枚の画像のみをダウンロードする',\n '여러 이미지 작품은 처음 몇 개의 이미지만 다운로드합니까',\n 'При работе с несколькими изображениями загружаются только первые несколько изображений',\n ],\n _多图作品的图片数量上限: [\n '多图作品的图片数量上限',\n '多圖作品的圖片數量上限',\n 'Maximum number of images for multi-image works',\n 'マルチ作品の最大画像数',\n '여러 이미지 작품의 최대 수',\n 'Максимальное количество изображений для работ с несколькими изображениями',\n ],\n _超出此限制的多图作品不会被下载: [\n '超出此限制的多图作品不会被下载',\n '不會下載超出此限制的多圖作品',\n 'Multi-image works exceeding this limit will not be downloaded',\n 'この制限を超えたマルチ作品はダウンロードされません',\n '이 제한을 초과하는 여러 이미지 작품은 다운로드되지 않습니다.',\n 'Работы с несколькими изображениями, превышающие этот лимит, не будут загружены',\n ],\n _在搜索页面添加快捷搜索区域: [\n '在搜索页面添加快捷搜索区域',\n '在搜尋頁面新增快速搜尋區域',\n 'Add a quick search area on the search page',\n '検索ページにクイック検索領域を追加します',\n '검색 페이지에 빠른 검색 영역 추가',\n 'Добавить область быстрого поиска на странице поиска',\n ],\n _保存作品的元数据: [\n '保存作品的元数据',\n '儲存作品的元資料',\n 'Save the metadata of the work',\n '作品のメタデータを保存する',\n '작품 메타데이터 저장',\n 'Сохранить метаданные работы',\n ],\n _保存作品的元数据说明: [\n '为每个作品建立一个 txt 文件保存它的元数据',\n '為每個作品建立一個 txt 檔案儲存它的元資料',\n 'Create a txt file for each work to save its metadata',\n '作品ごとに txt ファイルを作成して、メタデータを保存します',\n '각 작품에 대한 메타데이터를 저장하는 txt 파일 생성',\n 'Создайте txt-файл для каждой работы, чтобы сохранить ее метаданные',\n ],\n _在不同的页面类型中使用不同的命名规则: [\n '在不同的页面类型中使用不同的命名规则',\n '在不同的頁面類型中使用不同的命名規則',\n 'Use different naming rules in different page types',\n 'ページの種類によって異なる命名規則を使用',\n '페이지 유형에 따라 다른 명명 규칙 사용',\n 'Использовать различные правила именования в разных типах страниц',\n ],\n _显示高级设置: [\n '显示高级设置',\n '顯示進階設定',\n 'Show advanced settings',\n '詳細設定を表示する',\n '고급 설정 보기',\n 'Показать расширенные настройки',\n ],\n _显示高级设置说明: [\n '被隐藏的设置仍然会发挥作用',\n '被隱藏的設定仍然會發揮作用',\n 'Hidden settings will still work',\n '隠していた設定がそのまま機能する',\n '숨겨진 설정은 계속 작동합니다.',\n 'Скрытые настройки будут работать',\n ],\n _状态码为0的错误提示: [\n '下载时发生错误,状态码为 0,请求未成功。可能的原因:

        1. 系统磁盘的剩余空间可能不足(通常是 C 盘)(建议剩余空间大于 4GB)。请尝试清理系统磁盘空间,然后重新启动浏览器,继续未完成的下载。

        2. 网络错误。可能是网络代理导致的问题。如果你使用 Nginx 或者 Apache 反代理访问 pixiv,请换成梯子。

        3. 可以尝试重启浏览器,或者禁用此扩展然后重新启用,并刷新这个标签页。',\n '下載時發生錯誤,狀態碼為 0,請求未成功。可能的原因:

        1. 系統磁碟的剩餘空間可能不足(通常是 C 盤)(建議剩餘空間大於 4GB)。請嘗試清理系統磁碟空間,然後重新啟動瀏覽器,繼續未完成的下載。

        2. 網路錯誤。可能是網路代理導致的問題。

        3. 可以嘗試重啟瀏覽器,或者禁用此擴充套件然後重新啟用,並重新整理這個標籤頁。',\n 'An error occurred while downloading, the status code is 0, and the request was unsuccessful. Possible reasons:

        1. The remaining space of the system disk may be insufficient (usually C drive)(it is recommended that the remaining space be greater than 4GB). Please try to clear the system disk space, and then restart the browser to continue the unfinished download.

        2. Network error. It may be a problem caused by a network proxy.

        3. You can try to restart the browser, or disable and re-enable the extension, and refresh the tab.',\n 'ダウンロード中にエラーが発生し、ステータスコードは0で、リクエストは失敗しました。 考えられる理由:

        1。 システムディスクの残りのスペースが不足している可能性があります(通常はCドライブ)(残りのスペースは4GBを超えることをお勧めします)。 システムのディスク領域をクリアしてから、ブラウザを再起動して、未完了のダウンロードを続行してください。

        2。 ネットワークエラー。 ネットワークプロキシが原因の問題である可能性があります。

        3. ブラウザを再起動するか、拡張機能を無効にしてから再度有効にして、タブを更新してみてください。',\n '다운로드 중 오류가 발생했으며, 상태 코드가 0이고 요청에 실패했습니다. 가능한 원인:

        1. 시스템 디스크의 남은 공간이 부족할 수 있습니다(보통 C드라이브)(남은 공간은 4GB보다 큰 것이 좋습니다). 시스템 디스크 공간을 비운 다음 브라우저를 다시 시작하여 완료되지 않은 다운로드를 계속해주세요.

        2. 네트워크 오류. 네트워크 프록시로 인한 문제일 수 있습니다.

        3. 브라우저를 다시 시작하거나 확장 프로그램을 비활성화했다가 다시 활성화하고 탭을 새로 고칠 수 있습니다.',\n 'Во время загрузки произошла ошибка, код состояния равен 0, и запрос был выполнен неудачно. Возможные причины:

        1. Оставшегося места на системном диске может быть недостаточно (обычно это диск C) (рекомендуется, чтобы оставшееся место было больше 4 ГБ). Пожалуйста, попробуйте освободить место на системном диске, а затем перезапустите браузер, чтобы продолжить незаконченную загрузку.

        2. Ошибка сети. Это может быть проблема, вызванная сетевым прокси-сервером.

        3. Вы можете попробовать перезапустить браузер или отключить и снова включить расширение и обновить вкладку.',\n ],\n _下载完成后显示通知: [\n '下载完成后显示通知',\n '下載完成後顯示通知',\n 'Show notification after download is complete',\n 'ダウンロードが完了した後に通知を表示する',\n '다운로드가 완료되면 알림 표시',\n 'Показать уведомление после завершения загрузки',\n ],\n _高亮显示关键字: [\n '高亮显示关键字',\n '標明顯示關鍵字',\n 'Highlight keywords',\n 'キーワードを強調表示',\n '강조 키워드 표시',\n 'Выделить ключевые слова',\n ],\n _抓取标签列表: [\n '抓取标签列表',\n '擷取標籤列表',\n 'Crawl a list of tags',\n 'タグのリストをクロール',\n '태그 긁어오기',\n 'Сканировать список тегов',\n ],\n _抓取标签列表的输入框提示: [\n '请输入你要抓取的标签列表。多个标签之间使用换行分割',\n '請輸入你要擷取的標籤列表。多個標籤之間使用換行分隔',\n 'Please type the list of tags you want to crawl. Use line breaks between multiple tags',\n 'クロールしたいタグのリストを入力してください。 複数のタグを改行で分割',\n '긁어올 태그를 입력해주세요. 여러 태그는 줄 바꿈 사용',\n 'Пожалуйста, введите список тегов, которые вы хотите просмотреть. Используйте разрывы строк между несколькими тегами',\n ],\n _抓取标签列表的文件夹提示: [\n '在抓取标签列表时,你可以使用 {page_tag} 或者 {page_title} 标记获取当前抓取的标签,并用来建立文件夹。例如:{page_tag}/{id}',\n '在擷取標籤列表時,你可以使用 {page_tag} 或者 {page_title} 標記獲取目前擷取的標籤,並用來建立資料夾。例如:{page_tag}/{id}',\n 'When crawling the tag list, you can use {page_tag} or {page_title} tags to get the tags currently crawled and use them to create folders. For example: {page_tag}/{id}',\n 'タグリストをクロールする時に、 {page_tag} や {page_title}を使用すると、現在クロールされているタグを取得し、それらを使ってフォルダを作成することができます。例:{page_tag}/{id}',\n '태그를 긁어올 때 {page_tag} 또는 {page_title} 태그를 사용하여, 긁어온 태그로 디렉토리를 생성할 수 있습니다. 예: {page_tag}/{id}',\n 'При сканировании списка тегов вы можете использовать теги {page_tag} или {page_title}, чтобы получить теги, которые в данный момент просматриваются, и использовать их для создания папок. Например: {page_tag}/{id}',\n ],\n _停止抓取标签列表: [\n '停止抓取标签列表',\n '停止擷取標籤列表',\n 'Stop crawling the list of tags',\n 'タグリストのクロールを停止',\n '태그 긁어오기 정지',\n 'Прекратить сканирование списка тегов',\n ],\n _等待下载的标签: [\n '等待下载的标签',\n '等待下載的標籤',\n 'Tags waiting to be downloaded',\n 'ダウンロード待ちのタグ',\n '다운로드 대기 중인 태그',\n 'Теги, ожидающие загрузки',\n ],\n _你确定要停止抓取吗: [\n '你确定要停止抓取吗?',\n '確定要停止擷取嗎?',\n 'Are you sure you want to stop crawling?',\n '本当にクロールをやめたいのか',\n '긁어오기를 중지하시겠습니까?',\n 'Ты уверен, что хочешь перестать сканировать?',\n ],\n _只能在搜索页面使用: [\n '只能在搜索页面使用',\n '只能在搜尋頁面使用',\n 'Can only be used on the search page',\n '検索ページでのみ使用できます',\n '검색 페이지에서만 사용 가능',\n 'Можно использовать только на странице поиска',\n ],\n _自动导出抓取结果: [\n '自动导出抓取结果',\n '自動匯出擷取結果',\n 'Automatically export crawl results',\n 'クロール結果の自動エクスポート',\n '자동으로 긁어오기 결과 내보내기',\n 'Автоматически экспортировать результаты сканирования',\n ],\n _抓取结果: [\n '抓取结果',\n '擷取結果',\n 'Crawl results',\n 'クロール結果',\n '긁어오기 결과',\n 'Сканировать результаты',\n ],\n _文件格式: [\n '文件格式',\n '檔案格式',\n 'File format',\n 'ファイル形式',\n '파일 형식',\n 'Формат файла',\n ],\n _格式: ['格式', '格式', 'Format', '形式', '형식', 'Формат'],\n _预览作品: [\n '预览作品',\n '預覽作品',\n 'Preview works',\n '作品のプレビュー',\n '작품 미리보기',\n 'Превью работает',\n ],\n _点击鼠标左键可以关闭预览图: [\n '点击鼠标左键可以关闭预览图',\n '點選滑鼠左鍵可以關閉預覽圖',\n 'Click the left mouse button to close the preview',\n 'マウスの左クリックでプレビュー画像を閉じる',\n '마우스 왼쪽 버튼을 클릭하면 미리보기를 닫습니다',\n 'Нажмите левую кнопку мыши, чтобы закрыть предварительный просмотр',\n ],\n _尺寸: ['尺寸', '尺寸', 'Size', 'サイズ', '크기', 'Размер'],\n _允许鼠标停留在预览图上: [\n '允许鼠标停留在预览图上',\n '允許滑鼠停留在預覽圖上',\n 'Allow the mouse to stay on the preview image',\n 'プレビュー画像の上にマウスを置くことができます',\n '마우스가 미리보기 이미지 위에서 유지되도록 허용',\n 'Разрешить мыши оставаться на изображении предварительного просмотра',\n ],\n _点击预览图时下载作品: [\n '点击预览图时下载作品',\n '點選預覽圖時下載作品',\n 'Download the work when you click on the preview',\n 'プレビュー画像をクリックするとその作品がダウンロードされます',\n '미리보기 이미지를 클릭하면 작품 다운로드',\n 'Загружать работу при нажатии на предварительный просмотр',\n ],\n _转换动图时页面被隐藏的提示: [\n '这个标签页正在转换动图。如果这个标签页被隐藏了,转换速度可能会变慢。',\n '這個標籤頁正在轉換動圖。如果這個標籤頁被隱藏了,轉換速度可能會變慢。',\n 'This tab page is converting ugoira. If this tab page is hidden, the conversion speed may slow down.',\n 'このタブページはうごイラを変換しています。 このタブを非表示にすると、変換速度が低下する場合があります。',\n '이 탭은 움직이는 일러스트를 변환하는 중입니다.이 탭이 숨겨지면 변환 속도가 느려질 수 있습니다.',\n 'Эта страница вкладки преобразует ugoira. Если эта страница вкладки скрыта, скорость конвертации может замедлиться.',\n ],\n _原始尺寸: [\n '原始尺寸',\n '原始尺寸',\n 'Original size',\n 'オリジナルサイズ',\n '원본 크기',\n 'Оригинальный размер',\n ],\n _增强: ['增强', '增強', 'Enhance', '強化機能', '향상', 'Улучшение'],\n _长按右键显示大图: [\n '在缩略图上长按鼠标右键时显示大图',\n '在縮圖上長按滑鼠右鍵時顯示大圖',\n 'Long press the right mouse button on the thumbnail to display the large image',\n 'サムネイルでマウスの右ボタンを長押しすると、大きな画像が表示されます。',\n '썸네일을 마우스 오른쪽 버튼으로 클릭했을 때 큰 이미지 표시',\n 'Длительное нажатие правой кнопки мыши на миниатюре для отображения большого изображения',\n ],\n _鼠标滚轮切换图片: [\n '预览多图作品时,可以使用鼠标滚轮切换图片。',\n '預覽多圖作品時,可以使用滑鼠滾輪切換圖片。',\n 'When previewing multi-image works, you can use the mouse wheel to switch images.',\n '複数画像をプレビューする際に、マウスホイールを使って画像を切り替えることができます。',\n '여러 이미지 작품을 미리 볼 때, 마우스 휠을 사용하여 이미지를 전환할 수 있습니다.',\n 'При предварительном просмотре работ с несколькими изображениями можно использовать колесико мыши для переключения изображений',\n ],\n _whatisnew: [\n `修复因为 Pixiv 的变化而导致的抓取失败的问题。`,\n `修復因為 Pixiv 的變化而導致的抓取失敗的問題。`,\n `Fixed crawl failures due to Pixiv changes.`,\n `Pixiv の変更によるクロールの失敗を修正しました。`,\n `Pixiv 변경으로 인한 크롤링 실패를 수정했습니다.`,\n 'Исправлены сбои в сканировании из-за изменений в Pixiv',\n ],\n _等待时间: [\n '等待时间',\n '等待時間',\n 'Waiting time',\n '待ち時間',\n '대기 시간',\n 'Время ожидания',\n ],\n _格式错误: [\n '格式错误',\n '格式錯誤',\n 'Format error',\n 'フォーマットエラー',\n '형식 오류',\n 'Ошибка форматантирования',\n ],\n _下载数量错误: [\n '下载的页数(作品)数量设置错误',\n '下載的頁數(作品)數量設定錯誤',\n 'The number of downloaded pages (works) is set incorrectly',\n '下载页数(作品)设置不正确',\n '다운로드할 페이지 수(작품) 설정 오류',\n 'Количество загруженных страниц (работ) установлено неверно',\n ],\n _默认下载多页: [\n '开始抓取, 如有多页,默认会下载全部。',\n '開始擷取,如有多頁,預設會下載全部。',\n 'Start crawl, if there are multiple pages, the default will be downloaded.',\n 'クロールを開始する、複数のページがある場合、デフォルトですべてをダウンロードされます。',\n '긁어오기를 시작합니다. 여러 페이지가 있으면 기본적으로 모두 다운로드됩니다.',\n 'Начать сканирование, если есть несколько страниц, все будут загружены по умолчанию.',\n ],\n _赞助我: [\n '赞助我',\n '贊助我',\n 'Sponsor me',\n '支援する',\n '후원하기',\n 'Поддержать меня',\n ],\n _赞助方式提示: [\n `非常感谢您的支持!
        \n 您可以在 Patreon 上赞助我:
        \n https://www.patreon.com/xuejianxianzun
        \n 中国大陆用户可以在“爱发电”上赞助我:
        \n https://afdian.net/@xuejianxianzun
        \n 也可以扫描二维码:
        \n 在 Github 上查看二维码 或者加入 QQ 群 499873152,在群文件里查看二维码。\n `,\n `非常感謝您的支持!
        \n 您可以在 Patreon 上贊助我:
        \n https://www.patreon.com/xuejianxianzun
        \n 中國大陸使用者可以在“愛發電”上贊助我:
        \n https://afdian.net/@xuejianxianzun
        \n 也可以掃描行動條碼(QR Code):
        \n 在 Github 上檢視行動條碼。\n `,\n `Thank you very much for your support!
        \n You can sponsor me on Patreon:
        \n https://www.patreon.com/xuejianxianzun\n `,\n `ご支援してくださった皆様、本当にありがとうございました。
        \n ご支援してくださった方は、以下の Patreon で:
        \n https://www.patreon.com/xuejianxianzun \n `,\n `지원해주셔서 정말 감사합니다!
        \n Patreon에서 저를 후원해주세요
        \n https://www.patreon.com/xuejianxianzun\n `,\n `Большое вам спасибо за вашу поддержку!
        \n Вы можете спонсировать меня на Patreon:
        \n https://www.patreon.com/xuejianxianzun\n `,\n ],\n _替换方形缩略图以显示图片比例: [\n '替换方形缩略图以显示图片比例',\n '替換方形縮圖以顯示圖片比例',\n 'Replace square thumbnails to show image ratio',\n '正方形のサムネイルを置き換えて、画像のスケールを表示。',\n '이미지 종횡비를 표시하기 위해 정사각형 썸네일 교체',\n 'Замените квадратные миниатюры, чтобы показать соотношение сторон изображения',\n ],\n _只有一个抓取结果时不建立文件夹: [\n '只有一个抓取结果时不建立文件夹',\n '只有一個擷取結果時不建立資料夾',\n 'Do not create a folder when there is only one crawl result',\n 'クロール結果が1つのみの場合、フォルダを作成しない',\n '긁어오기 결과가 하나일 때 디렉토리 생성하지 않기',\n 'Когда есть только один результат сканирования, никакая папка не создается',\n ],\n _搜索页面页数限制: [\n '由于 pixiv 的限制,下载器最多只能抓取到第 {} 页。',\n '由於 pixiv 的限制,下載器最多只能擷取到第 {} 頁。',\n 'Due to the limitation of pixiv, the downloader can only crawl up to the {}th page.',\n 'pixiv の制限により、ダウンローダーは {} ページ目までしかクロールできません。',\n 'pixiv 제한으로 인해 최대 {} 페이지까지만 다운로드 받을 수 있습니다.',\n 'Из-за ограничений pixiv загрузчик может сканировать только до {}-й страницы',\n ],\n _获取图片的宽高时出现错误: [\n '获取图片的宽高时出现错误:',\n '獲取圖片的寬高時出現錯誤:',\n 'An error occurred while getting the width and height of the image:',\n '画像の幅と高さの取得中にエラーが発生しました:',\n '이미지의 너비를 가져오는 도중 오류가 발생했습니다:',\n 'Произошла ошибка при получении ширины и высоты изображения:',\n ],\n _上限: ['上限', '上限', 'Upper limit', '上限', '상한', 'Верхний предел'],\n _预览搜索结果的数量达到上限的提示: [\n '预览搜索结果的数量已经达到上限,剩余的结果不会显示。',\n '預覽搜尋結果的數量已經達到上限,剩餘的結果不會顯示。',\n 'The number of preview search results has reached the upper limit, and the remaining results will not be displayed.',\n 'プレビュー検索結果の数が上限に達し、残りの結果は表示されません。',\n '미리보기 검색 결과 수가 상한에 도달하여, 남은 결과는 표시되지 않습니다.',\n 'Количество результатов предварительного поиска достигло верхнего предела, и оставшиеся результаты не будут отображаться.',\n ],\n _新增命名标记: [\n '新增命名标记',\n '新增命名標記',\n 'Add named tag',\n '名前付きタグを追加',\n '명명된 태그 추가',\n 'Добавить именованный тег',\n ],\n _自定义用户名: [\n '自定义用户名',\n '自訂使用者名稱',\n 'Customize username',\n 'カスタムユーザー名',\n '사용자 정의 유저명',\n 'Настроить имя пользователя',\n ],\n _自定义用户名的说明: [\n `有些用户可能会改名,如果你想使用他原来的名字,你可以在这里手动设置他的名字。
        \n 你也可以为用户设置别名。
        \n 当你在命名规则中使用 {user} 标记时,下载器会优先使用你设置的名字。`,\n `有些使用者可能會改名,如果你想使用他原來的名字,你可以在這裡手動設定他的名字。
        \n 你也可以為使用者設定別名。
        \n 當你在命名規則中使用 {user} 標記時,下載器會優先使用你設定的名字。`,\n `Some users may change their name. If you want to use his original name, you can manually set his name here.
        \n You can also set aliases for users.
        \n When you use the {user} tag in the naming rule, the downloader will give priority to the name you set.`,\n `ユーザーによっては名前を変更する場合があります。元の名前を使いたい場合は、ここで名前を手動で設定することができます。
        \n また、ユーザーの別名を設定することも可能です。
        \n 命名規則で {user} タグを使用すると、ダウンローダーは設定された名前を優先的に使用します。`,\n `일부 유저는 이름을 바꿀 수 있습니다. 만약 당신이 그의 원래 이름을 사용하고 싶다면, 당신은 여기에서 그의 이름을 수동으로 설정할 수 있습니다.
        \n 사용자의 별칭을 설정할 수도 있습니다.
        \n 명명 규칙에 {user} 태그를 사용할 때 다운로드더가 사용자 정의 유저명을 우선시합니다.`,\n `Некоторые пользователи могут изменить свое имя. Если вы хотите использовать его оригинальное имя, вы можете вручную задать его имя здесь.
        \n Вы также можете задать псевдонимы для пользователей.
        \n Когда вы используете тег {user} в правиле именования, загрузчик будет отдавать приоритет имени, которое вы задали.`,\n ],\n _移除用户名中的at和后续字符: [\n '移除用户名中的 @ 和后续字符',\n '移除使用者名稱中的 @ 和後續字元',\n 'Remove @ and subsequent characters in username',\n 'ユーザー名から @ 以降の文字を削除する',\n '유저명에서 @와 후속 문자 제거',\n 'Удалить @ и последующие символы в имени пользователя',\n ],\n _移除用户名中的at和后续字符的说明: [\n '例如:Anmi@画集発売中 → Anmi',\n '例如:Anmi@画集発売中 → Anmi',\n 'For example:Anmi@画集発売中 → Anmi',\n '例:Anmi@画集発売中 → Anmi',\n '예: Anmi@画集発売中 → Anmi',\n 'Например: Anmi@画集発売中 → Anmi',\n ],\n _抓取被限制时返回空结果的提示: [\n 'Pixiv 返回了空数据。下载器已暂停抓取,并且会在等待几分钟后继续抓取。(429)
        这说明您的账号被 Pixiv 限制访问了,等待几分钟即可恢复正常。
        您可以启用“减慢抓取速度”功能来减少 429 问题出现的概率。',\n 'Pixiv 返回了空資料。下載器已暫停抓取,並且會在等待幾分鐘後繼續抓取。(429)
        這說明您的賬號被 Pixiv 限制訪問了,等待幾分鐘即可恢復正常。
        您可以啟用“減慢抓取速度”功能來減少 429 問題出現的機率。',\n 'Pixiv returned empty data. The downloader has paused crawling and will resume crawling after a few minutes. (429)
        This means that your account has been restricted by Pixiv, please wait for a few minutes for it to return to normal.
        You can reduce the chances of 429 issues by enabling the \"Slow down crawl\" feature.',\n 'Pixivが空のデータを返しました。 ダウンローダーはクロールを一時停止し、数分後にクロールを再開します。(429)
        これは、あなたのアカウントが Pixiv によって制限されていることを意味します。通常の状態に戻るまで数分お待ちください。
        \"クロールを遅くする\" 機能を有効にすると、429 の問題が発生する可能性を減らすことができます。',\n 'Pixiv가 빈 데이터를 반환했습니다. 다운로더가 긁어오기를 일시 중지하고 몇 분 동안 기다린 후 긁어오기를 계속합니다. (429)
        이것은 귀하의 계정이 Pixiv에 의해 제한되었음을 의미합니다. 정상으로 돌아갈 때까지 몇 분 정도 기다리십시오.
        \"천천히 크롤링\" 기능을 활성화하면 429 문제 발생 가능성을 줄일 수 있습니다.',\n 'Pixiv вернул пустые данные. Загрузчик приостановил загрузку и возобновит ее через несколько минут. (429)
        Это означает, что ваша учетная запись была ограничена Pixiv, подождите несколько минут, пока она вернется в нормальное состояние.
        Вы можете снизить вероятность возникновения ошибок 429, включив функцию «Замедлить сканирование».',\n ],\n _搜索模式: [\n '搜索模式',\n '搜尋模式',\n 'Search mode',\n '検索モード',\n '검색 모드',\n 'Режим поиска',\n ],\n _标签部分一致: [\n '标签(部分一致)',\n '標籤(部分一致)',\n 'Tags (partial match)',\n 'タグ(部分一致)',\n '태그 (부분 일치)',\n 'Теги (частичное совпадение)',\n ],\n _标签完全一致: [\n '标签(完全一致)',\n '標籤(完全一致)',\n 'Tags (perfect match)',\n 'タグ(完全一致)',\n '태그 (완전 일치)',\n 'Теги (идеальное совпадение)',\n ],\n _标题说明文字: [\n '标题、说明文字',\n '標題、說明文字',\n 'Title, Caption',\n 'タイトル・キャプション',\n '제목, 설명',\n 'Название, Подпись',\n ],\n _正文: ['正文', '本文', 'Text', '本文', '본문', 'Текст'],\n _标签标题说明文字: [\n '标签、标题、说明文字',\n '標籤、標題、說明文字',\n 'Tags, Titles, Captions',\n 'タグ・タイトル・キャプション',\n '태그, 제목, 설명',\n 'Теги, Заголовки, Подписи',\n ],\n _save_file_failed_tip: [\n `{} 保存失败,code:{}。下载器将会重试下载这个文件。`,\n `{} 儲存失敗,code:{}。下載器將會重試下載這個檔案。`,\n `{} save failed, code: {}. The downloader will retry to download the file.`,\n `{} 保存に失敗しました。code:{}。ダウンローダーはファイルのダウンロードを再試行します。`,\n `{} 저장에 실패했습니다. 코드: {}. 다운로드더가 파일 다운로드를 다시 시도합니다.`,\n `{} сохранение не удалось, код: {}. Загрузчик повторит попытку загрузить файл.`,\n ],\n _user_canceled_tip: [\n `{} 未保存,code:{}。`,\n `{} 未儲存,code:{}。`,\n `{} not saved, code: {}.`,\n `{} 保存されていません。code:{}。`,\n `{} 저장되지 않음, 코드: {}.`,\n `{} не сохранено, код: {}.`,\n ],\n _FILE_FAILED_tip: [\n '可能是文件名太长,或是其他原因导致文件保存失败。你可以尝试启用高级设置里的“文件名长度限制”。',\n '可能是檔名太長,或是其他原因導致檔案儲存失敗。你可以嘗試啟用高階設定裡的“檔案名稱長度限制”。',\n 'Maybe the file name is too long, or other reasons cause the file to fail to save. You can try enabling \"File name length limit\" in advanced settings.',\n 'ファイル名が長すぎるか、他の理由でファイルの保存に失敗した可能性があります。 詳細設定で「ファイル名の長さ制限」を有効にしてみてください。',\n '파일명이 너무 길거나 다른 이유로 저장에 실패한 것 같습니다. 고급 설정에서 \"파일명 길이 제한\"을 사용하도록 설정할 수 있습니다.',\n 'Возможно, имя файла слишком длинное, или по другим причинам файл не удается сохранить. Вы можете попробовать включить \"Ограничение длины имени файла\". в расширенных настройках.',\n ],\n _显示摘要信息: [\n '显示摘要信息',\n '顯示摘要資訊',\n 'Show summary',\n '要約情報を表示する',\n '요약 정보 표시',\n 'Показать сводку',\n ],\n _显示更大的缩略图: [\n '显示更大的缩略图',\n '顯示更大的縮圖',\n 'show larger thumbnails',\n '大きなサムネイルを表示する',\n '더 큰 썸네일 표시',\n 'Показывать большие миниатюры',\n ],\n _横图占用二倍宽度: [\n '横图占用二倍宽度',\n '橫圖佔用二倍寬度',\n 'Horizontal image takes up double the width',\n '水平方向の画像は幅の2倍を占めます',\n '가로 그림은 두 배의 너비를 차지',\n 'Горизонтальное изображение занимает вдвое большую ширину',\n ],\n _该功能默认开启: [\n '这个功能默认启用。',\n '這個功能預設啟用。',\n 'This feature is enabled by default.',\n 'この機能はデフォルトで有効になっています。',\n '이 기능은 기본적으로 활성화됩니다.',\n 'Эта функция включена по умолчанию.',\n ],\n _默认未启用: [\n '默认未启用。',\n '預設未啟用。',\n 'It is disabled by default.',\n 'デフォルトでは有効になっていません。',\n '기본값이 비활성화되어 있습니다.',\n 'По умолчанию не работает.',\n ],\n _你可以在更多选项卡的xx分类里找到它: [\n '你可以在“更多”选项卡 → “{}”分类里找到它。(需要先启用“显示高级设置”)',\n '你可以在“更多”選項卡 → “{}”分類裡找到它。(需要先啟用“顯示進階設定”)',\n 'You can find it in the \"More\" tab → \"{}\" category. (\"Show advanced settings\" needs to be enabled first)',\n '[もっと]タブ→[{}]カテゴリにあります。(最初に「詳細設定を表示」を有効にする必要があります)',\n '\"더보기\" 탭 → \"{}\" 카테고리에서 찾을 수 있습니다. (\"고급 설정 보기\"를 먼저 활성화해야 합니다.)',\n 'Вы можете найти его в разделе \"Еще\". вкладка → \"{}\" категория. (\"Показать расширенные настройки\" необходимо сначала включить)',\n ],\n _你可以在xx选项卡里找到它: [\n '你可以在“{}”选项卡里找到它。(需要先启用“显示高级设置”)',\n '你可以在“{}”選項卡裡找到它。(需要先啟用“顯示進階設定”)',\n 'You can find it in the \"{}\" tab. (\"Show advanced settings\" needs to be enabled first)',\n '「{}」タブにあります。(最初に「詳細設定を表示」を有効にする必要があります)',\n '\"{}\" 탭에서 찾을 수 있습니다. (\"고급 설정 보기\"를 먼저 활성화해야 합니다.)',\n 'Вы можете найти его на вкладке \"{}\". (\"Показать расширенные настройки\" необходимо сначала включить)',\n ],\n _使用鼠标滚轮切换作品里的图片: [\n '使用鼠标滚轮切换多图作品里的图片',\n '使用滑鼠滾輪切換多圖作品裡的圖片',\n 'Use the mouse wheel to switch images in multi-image works',\n 'マウスホイールを使用して、マルチイメージ作品のイメージを切り替えます',\n '마우스 휠을 사용하여 여러 이미지 작품에서 이미지 전환',\n 'Используйте колесико мыши для переключения изображений в работах с несколькими изображениями',\n ],\n _这可能会阻止页面滚动: [\n '这可能会阻止页面滚动',\n '這可能會阻止頁面滾動',\n 'This might stop the page from scrolling',\n 'ページのスクロールを妨げる可能性があります',\n '이 기능은 페이지를 스크롤하지 못하게 할 수 있습니다.',\n 'Это может остановить прокрутку страницы',\n ],\n _动图转换失败的提示: [\n '动图转换失败,id:{}',\n '動圖轉換失敗,id:{}',\n 'Ugoira(animation) conversion failed, id: {}',\n 'うごイラの変換に失敗しました、id:{}',\n '움직이는 일러스트 변환에 실패했습니다, ID: {}',\n 'Не удалось преобразовать Ugoira(анимацию), идентификатор: {}',\n ],\n _动图不能转换为WEBM视频的提示: [\n '作品 ID {} 不能转换为 WEBM 视频,因为它的某一帧延迟大于 32767 毫秒。下载器会把它转换为 GIF 图像。',\n '作品 ID {} 不能轉換為 WEBM 影片,因為它的某一幀延遲大於 32767 毫秒。下載器會把它轉換為 GIF 影象。',\n 'Work ID {} cannot be converted to WEBM video because it has a frame duration greater than 32767 ms. The downloader will convert it into a GIF image.',\n 'ワークid {} は、32767ミリ秒以上のフレーム長を持つため、webm動画に変換できません。ダウンローダはそれをgif画像に変換します。',\n '작업 ID {}의 프레임 지속 시간이 32767 ms보다 크기 때문에 WEBM 비디오로 변환할 수 없습니다.다운로더가 GIF 이미지로 변환해 줍니다.',\n 'Рабочий ID {} не может быть преобразован в WEBM видео, потому что он имеет длительность кадров более 32767 мс. Загрузчик преобразует его в изображение GIF.',\n ],\n _作品id无法下载带状态码: [\n '{} 无法下载,状态码:{}',\n '{} 無法下載,狀態碼:{}',\n '{} failed to download, status code: {}',\n '{} ダウンロードに失敗しました、ステータスコード:{}',\n '{} 다운로드할 수 없습니다, 상태 코드: {}',\n '{} не удалось загрузить, код состояния: {}',\n ],\n _作品总数为0: [\n '作品总数为 0,Pixiv 可能拒绝了此次抓取。请稍后重试。',\n '作品總數為 0,Pixiv 可能拒絕了此次抓取。請稍後重試。',\n 'The total number of works is 0, Pixiv may have refused this crawl. Please try again later.',\n '作品の総数は 0 です。 Pixivがこのクロールを拒否した可能性があります。 後でもう一度やり直してください。',\n '총 작품 수가 0개입니다, Pixiv가 이번 긁어오기를 거부한 것으로 보입니다. 잠시 후에 다시 시도해주세요.',\n 'Общее количество работ равно 0, возможно, Pixiv блокирует сканирование. Пожалуйста, повторите попытку позже.',\n ],\n _优化预览作品功能: [\n '优化“预览作品”功能',\n '最佳化“預覽作品”功能',\n 'Optimize the \"Preview Works\" function',\n '「作品のプレビュー」機能を最適化する',\n '\"작품 미리보기\" 기능 최적화',\n 'Оптимизация \"Предварительного просмотра работ\" функция',\n ],\n _设定资料: [\n '设定资料',\n '設定資料',\n 'Reference materials',\n '設定資料',\n '설정 자료',\n 'Справочные материалы',\n ],\n _年龄限制: [\n '年龄限制',\n '年齡限制',\n 'Age limit',\n '年齢制限',\n '연령 제한',\n 'Возраст ограничение',\n ],\n _收藏状态: [\n '收藏状态',\n '收藏狀態',\n 'Bookmark status',\n 'ブックマークステータス',\n '북마크 상태',\n 'Статус закладки ',\n ],\n _图片色彩: [\n '图片色彩',\n '圖片色彩',\n 'Image color',\n '画像の',\n '이미지 색채',\n 'Цвет изображения',\n ],\n _图片数量: [\n '图片数量',\n '圖片數量',\n 'Number of images',\n '画像の',\n '이미지 ',\n 'Количество изображений',\n ],\n _不抓取多图作品的最后一张图片: [\n '不抓取多图作品的最后一张图片',\n '不抓取多圖作品的最後一張圖片',\n 'Do not crawl the last image of multi-image works',\n 'マルチ画像作品の最後の画像をつかまないでください',\n '여러 이미지의 마지막 이미지 긁어오지 않기',\n 'Не сканировать по последние изображения в много картинных работах',\n ],\n _下载小说的封面图片: [\n '下载小说的封面图片',\n '下載小說的封面圖片',\n 'Download the cover image of the novel',\n '小説の表紙画像をダウンロード',\n '소설 커버 이미지 다운로드',\n 'Скачать изображение обложки новеллы',\n ],\n _预览动图: [\n '预览动图',\n '預覽動圖',\n 'Preview Ugoira',\n 'うごイラのプレビュー',\n '움직이는 일러스트 미리보기',\n 'Превью Ugoira(анимации)',\n ],\n _过度访问警告警告: [\n '下载器检测到你可能收到了 pixiv 的警告消息,这通常是因为过度下载导致的。
        当你再次被警告时,你会被 Pixiv 封号。
        我建议你减少下载数量,或者使用新的账号进行下载。',\n '下載器檢測到你可能收到了 pixiv 的警告訊息,這通常是因為過度下載導致的。
        當你再次被警告時,你會被 Pixiv 封號。
        我建議你減少下載數量,或者使用新的賬號進行下載。',\n 'The downloader has detected that you may have received a warning message from pixiv, usually due to excessive downloads.
        When you are warned again, you will be banned from Pixiv.
        I suggest you reduce your downloads, or use a new account to download.',\n 'ダウンロードが多すぎるため、pixivから警告メッセージが届いた可能性があることをダウンローダーが検出しました。
        再度警告を受けた場合、Pixivから追放されます。
        ダウンロード数を減らすか、新しいアカウントを使用してダウンロードすることをお勧めします。',\n '다운로더는 일반적으로 과도한 다운로드로 인해 pixiv에서 경고 메시지를 수신했을 수 있음을 감지했습니다.
        다시 경고를 받으면 Pixiv에서 차단됩니다.
        다운로드를 줄이거나 새 계정을 사용하여 다운로드하는 것이 좋습니다.',\n 'Программа загрузки обнаружила, что вы могли получить предупреждающее сообщение от pixiv, обычно из-за чрезмерной загрузки.
        Когда вы снова получите предупреждение, вы будете заблокированы в Pixiv.
        Я предлагаю вам сократить количество загрузок или использовать новую учетную запись для загрузки.',\n ],\n _下载小说里的内嵌图片: [\n '下载小说里的内嵌图片',\n '下載小說裡的內嵌圖片',\n 'Download embedded images in novels',\n '小説に埋め込まれた画像をダウンロードする',\n '소설에서 인라인 이미지 다운로드',\n 'Загрузка вложенных изображений в новеллах',\n ],\n _其他优化: [\n '其他优化',\n '其他最佳化',\n 'Other optimizations',\n 'その他の最適化',\n '기타 최적화',\n 'Другие оптимизации',\n ],\n _隐藏浏览器底部的下载栏: [\n '隐藏浏览器底部的下载栏',\n '隱藏瀏覽器底部的下載欄',\n `Hide the download bar at the bottom of the browser`,\n 'ブラウザの下部にあるダウンロードバーを非表示にします',\n '브라우저 하단의 다운로드 바 숨기기',\n `Скрыть панель загрузки в нижней части браузера`,\n ],\n _没有可用的抓取结果: [\n '没有可用的抓取结果',\n '沒有可用的抓取結果',\n 'No crawl results available',\n 'クロール結果がありません',\n '사용 가능한 크롤링 결과가 없습니다.',\n 'Результаты сканирования недоступны',\n ],\n _查看作品大图时的快捷键: [\n '查看作品大图时,按快捷键 D 可以下载这个作品。
        按快捷键 C 仅下载当前显示的这张图片。',\n '檢視作品大圖時,按快捷鍵 D 可以下載這個作品。
        按快捷鍵 C 僅下載當前顯示的這張圖片。',\n 'When viewing the large image of the work, press the shortcut key D to download the work.
        Press the shortcut key C to download only the currently displayed image.',\n '作品の大きな画像をご覧になる場合、ショートカット キー D を押すと、作品をダウンロードできます。
        ショートカット キー C を押して、現在表示されている画像のみをダウンロードします。',\n '작품의 큰 그림을 볼 때 단축키 D를 누르면 작품을 다운로드할 수 있습니다.
        현재 표시된 이미지만 다운로드하려면 단축키 C를 누르세요.',\n 'При просмотре большого изображения работы нажмите горячую клавишу D, чтобы загрузить работу.
        Нажмите горячую клавишу C, чтобы загрузить только отображаемое в данный момент изображение.',\n ],\n _定时抓取: [\n '定时抓取',\n '定時抓取',\n 'Timed crawl',\n '時限クロール',\n '시간 제한 크롤링',\n 'Сканирование по таймеру',\n ],\n _定时抓取说明: [\n '每隔一定时间,自动开始抓取和下载。',\n '每隔一定時間,自動開始抓取和下載。',\n 'Automatically start crawling and downloading at regular intervals.',\n '定期的にクロールとダウンロードを自動的に開始します。',\n '정기적으로 자동으로 크롤링 및 다운로드를 시작합니다.',\n 'Автоматически запускать сканирование и загрузку через регулярные промежутки времени',\n ],\n _定时抓取已启动的提示: [\n '定时抓取已启动,间隔时间:{} 分钟。
        如果你想修改间隔时间,可以在“更多”选项卡里修改设置:定时抓取的间隔时间。',\n '定時抓取已啟動,間隔時間:{} 分鐘。
        如果你想修改間隔時間,可以在“更多”選項卡里修改設定:定時抓取的間隔時間。',\n 'Timed crawl started, interval: {} minutes.
        If you want to modify the interval time, you can modify the settings in the \"More\" tab: The interval time of timed crawl.',\n '時限クロールが開始されました。間隔: {} 分。
        間隔時間を変更したい場合は、[詳細] タブの設定 (時間指定クロールの間隔時間) を変更できます。',\n '시간 제한 크롤링이 시작되었습니다. 간격: {}분.
        간격 시간을 수정하려면 \"자세히\" 탭에서 예약된 크롤링 간격 설정을 수정할 수 있습니다.',\n 'Таймер сканирования запущен, интервал: {} минут.
        Если вы хотите изменить интервал времени, вы можете изменить настройки на вкладке «Дополнительно»: Интервальное время сканирования с таймером.',\n ],\n _定时抓取的推荐用法: [\n '推荐用法:增量抓取新作品。例如在关注的用户的新作品页面里,设置抓取页数为 2,然后启动定时抓取。这样下载器可以自动下载新作品。
        建议启用“不下载重复文件”功能,以避免下载重复的文件。',\n '推薦用法:增量抓取新作品。例如在關注的使用者的新作品頁面裡,設定抓取頁數為 2,然後啟動定時抓取。這樣下載器可以自動下載新作品。
        建議啟用“不下載重複檔案”功能,以避免下載重複的檔案。',\n 'Recommended usage: Fetch new work incrementally. For example, in the new work page of the user you follow, set the number of crawled pages to 2, and then start timing crawling. This way the downloader can automatically download new works.
        It is recommended to enable the \"Do not download duplicate files\" feature to avoid downloading duplicate files.',\n '推奨される使用法: 新しい作業を段階的にフェッチします。 たとえば、フォローしているユーザーの新しい作品ページで、クロールされたページの数を 2 に設定し、クロールのタイミングを開始します。 このようにして、ダウンローダーは新しい作品を自動的にダウンロードできます。
        重複ファイルのダウンロードを避けるために、「重複ファイルをダウンロードしない」機能を有効にすることをお勧めします。',\n '권장 사용법: 새 작업을 점진적으로 가져옵니다. 예를 들어 팔로우하는 사용자의 새 작업 페이지에서 크롤링 페이지 수를 2로 설정한 다음 타이밍 크롤링을 시작합니다. 이렇게 하면 다운로더가 자동으로 새 작품을 다운로드할 수 있습니다.
        중복 파일 다운로드를 방지하기 위해 \"중복 파일 다운로드 금지\" 기능을 활성화하는 것이 좋습니다.',\n 'Рекомендуемое использование: получать новую работу постепенно. Например, на новой рабочей странице пользователя, за которым вы следите, установите количество просканированных страниц равным 2, а затем запустите сканирование по времени. Таким образом, загрузчик может автоматически загружать новые работы.
        Рекомендуется включить функцию \"Не загружать дубликаты файлов\", чтобы избежать загрузки дубликатов файлов.',\n ],\n _定时抓取已启动的提示2: [\n '在定时抓取时,将这个标签页静置即可。不要改变这个标签页的 URL,否则抓取结果可能不符合预期。

        如果这个扩展程序自动更新了,那么这个页面将不能正常下载文件(需要刷新页面来恢复正常)。 如果你想长期执行定时抓取任务,建议安装下载器的离线版本,以免因为自动更新而导致问题。
        你可以在这里下载离线安装包:Releases page',\n '在定時抓取時,將這個標籤頁靜置即可。不要改變這個標籤頁的 URL,否則抓取結果可能不符合預期。

        如果這個擴充套件程式自動更新了,那麼這個頁面將不能正常下載檔案(需要重新整理頁面來恢復正常)。 如果你想長期執行定時抓取任務,建議安裝下載器的離線版本,以免因為自動更新而導致問題。
        你可以在這裡下載離線安裝包:Releases page',\n 'During timed crawling, just leave this tab alone. Do not change the URL of this tab, or the crawl results may not be as expected.

        If the extension is automatically updated, the page will not be able to download files normally (refresh the page to restore normal). If you want to perform scheduled crawling tasks for a long time, it is recommended to install the offline version of the downloader to avoid problems caused by automatic updates.
        You can download the offline installation package here: Releases page',\n '時限クロール中は、このタブをそのままにしておきます。 このタブの URL は変更しないでください。変更すると、クロール結果が期待どおりにならない可能性があります。

        拡張機能が自動的に更新されると、ページはファイルを正常にダウンロードできなくなります (ページを更新して正常に戻します)。 スケジュールされたクロール タスクを長時間実行する場合は、自動更新による問題を回避するために、ダウンローダのオフライン バージョンをインストールすることをお勧めします。
        オフライン インストール パッケージは、次の場所からダウンロードできます。Releases page',\n '시간 제한 크롤링 중에는 이 탭을 그대로 두십시오. 이 탭의 URL을 변경하지 마십시오. 그렇지 않으면 크롤링 결과가 예상과 다를 수 있습니다.

        확장자가 자동으로 업데이트되면 페이지에서 파일을 정상적으로 다운로드할 수 없습니다(페이지를 새로고침하여 정상으로 복원). 예약된 크롤링 작업을 장기간 수행하려면 자동 업데이트로 인한 문제를 방지하기 위해 다운로더의 오프라인 버전을 설치하는 것이 좋습니다.
        여기에서 오프라인 설치 패키지를 다운로드할 수 있습니다. Releases page',\n 'Во время сканирования по времени просто оставьте эту вкладку в покое. Не меняйте URL-адрес этой вкладки, иначе результаты сканирования могут отличаться от ожидаемых.

        Если расширение автоматически обновляется, страница не сможет загружать файлы в обычном режиме (обновите страницу, чтобы восстановить нормальный режим). Если вы хотите выполнять запланированные задачи обхода в течение длительного времени, рекомендуется установить автономную версию загрузчика, чтобы избежать проблем, вызванных автоматическими обновлениями.
        Вы можете скачать автономный установочный пакет здесь: Страница релизов',\n ],\n _定时抓取的间隔时间: [\n '定时抓取的间隔时间',\n '定時抓取的間隔時間',\n 'The interval time of timed crawl',\n '時間指定クロールの間隔時間',\n '정기 크롤링 간격 시간',\n 'Интервальное время сканирования с таймером',\n ],\n _定时抓取的间隔时间2: [\n '定时抓取的间隔时间',\n '定時抓取的間隔時間',\n 'The interval time of timed crawl',\n '時間指定クロールの間隔時間',\n '정기 크롤링 간격 시간',\n 'Интервальное время сканирования с таймером',\n ],\n _分钟: ['分钟', '分鐘', 'Minute', '分', '분', 'Минут'],\n _定时抓取的时间超过最大值: [\n '定时抓取的间隔时间超过最大值:',\n '定時抓取的間隔時間超過最大值:',\n 'The interval of timed crawl exceeds the maximum value: ',\n '時間指定クロールの間隔が最大値を超えています: ',\n '시간 지정 크롤링 간격이 최대값을 초과합니다: ',\n 'Интервал сканирования по таймеру превышает максимальное значение: ',\n ],\n _定时抓取的时间最小值: [\n '定时抓取的间隔时间最小值为 1 分钟。',\n '定時抓取的間隔時間最小值為 1 分鐘。',\n 'The minimum interval for timed crawls is 1 minute.',\n '時間指定クロールの最小間隔は 1 分です。',\n '시간 지정 크롤링의 최소 간격은 1분입니다.',\n 'Минимальный интервал для сканирования по таймеру составляет 1 минуту.',\n ],\n _取消定时抓取: [\n '取消定时抓取',\n '取消定時抓取',\n 'Cancel timed crawl',\n '時間指定クロールをキャンセル',\n '시간 지정 크롤링 취소',\n 'Отменить сканирование по таймеру',\n ],\n _已取消定时抓取: [\n '已取消定时抓取',\n '已取消定時抓取',\n 'Timed crawl canceled',\n '時間指定クロールがキャンセルされました',\n '예약된 크롤링이 취소되었습니다.',\n 'Сканирование по таймеру отменено',\n ],\n _因为URL变化取消定时抓取任务: [\n '因为 URL 变化,定时抓取任务已被取消。',\n '因為 URL 變化,定時抓取任務已被取消。',\n 'The timed crawl task has been canceled due to URL changes.',\n 'URL が変更されたため、時間指定クロール タスクがキャンセルされました。',\n 'URL 변경으로 인해 시간이 지정된 크롤링 작업이 취소되었습니다.',\n 'Задание на сканирование по времени было отменено из-за изменений URL.',\n ],\n _开始定时抓取: [\n '开始定时抓取',\n '開始定時抓取',\n 'Start timed crawling',\n '時間指定クロールを開始する',\n '시간 지정 크롤링 시작',\n 'Начать сканирование по таймеру',\n ],\n _等待下一次定时抓取: [\n '等待下一次定时抓取',\n '等待下一次定時抓取',\n 'Wait for the next timed crawl',\n '次回の時限クロールを待つ',\n '다음 시간 크롤링을 기다립니다.',\n 'Подождите следующего сканирования с таймером',\n ],\n _当前时间: [\n '当前时间:',\n '當前時間:',\n 'Current time: ',\n '現在の時刻:',\n '현재 시간: ',\n 'Текущее время: ',\n ],\n _仅在部分页面中可用: [\n '仅在部分页面中可用。',\n '僅在部分頁面中可用。',\n 'Only available on some pages.',\n '一部のページのみ利用可能です。',\n '일부 페이지에서만 사용할 수 있습니다.',\n 'Доступно только на некоторых страницах',\n ],\n _发生错误原因: [\n '发生错误,原因:',\n '發生錯誤,原因:',\n 'An error occurred due to:',\n '次の理由でエラーが発生しました:',\n '다음으로 인해 오류가 발생했습니다.',\n 'Произошла ошибка по причине:',\n ],\n _扩展程序已更新: [\n '扩展程序已更新。',\n '擴充套件程式已更新。',\n 'The extension has been updated.',\n '拡張機能が更新されました。',\n '확장이 업데이트되었습니다.',\n 'Расширение было обновлено.',\n ],\n _未知错误: [\n '未知错误。',\n '未知錯誤。',\n 'unknown mistake.',\n '未知の間違い。',\n '알 수 없는 실수.',\n 'неизвестная ошибка',\n ],\n _请刷新页面: [\n '请刷新页面。',\n '請重新整理頁面。',\n 'Please refresh the page.',\n 'ページを更新してください。',\n '페이지를 새로고침하세요.',\n 'Пожалуйста, обновите страницу.',\n ],\n _减慢抓取速度: [\n '减慢抓取速度',\n '減慢抓取速度',\n 'Slow down crawl',\n 'クロールを遅くする',\n '천천히 크롤링',\n 'Замедлить сканирование',\n ],\n _减慢抓取速度的说明: [\n '减慢抓取速度可以避免在抓取时被 Pixiv 临时限制。但是会增加抓取时间。',\n '減慢抓取速度可以避免在抓取時被 Pixiv 臨時限制。但是會增加抓取時間。',\n 'Slow down the crawl to avoid being temporarily restricted by Pixiv while crawling. But this will increase the crawl time.',\n 'クロール中にPixivによって一時的に制限されないように、クロールを遅くします。 ただし、これによりクロール時間が長くなります。',\n '크롤링하는 동안 Pixiv에 의해 일시적으로 제한되지 않도록 크롤링 속도를 늦춥니다. 그러나 이것은 크롤링 시간을 증가시킵니다.',\n 'Замедлить сканирование, чтобы избежать временного ограничения Pixiv во время сканирования. Это увеличит время сканирования.',\n ],\n _作品数量: [\n '作品数量',\n '作品數量',\n 'Number of works',\n '作品数',\n '작품 수',\n 'Количество работ',\n ],\n _当作品数量大于: [\n '当作品数量超过指定数量时启用:',\n '當作品數量超過指定數量时啟用:',\n 'Enabled when the number of works exceeds the specified number:',\n '作品数が規定数を超えた場合に有効:',\n '작품 수가 지정된 수를 초과하면 활성화됩니다.',\n 'Включается, когда количество работ превышает указанное количество:',\n ],\n _慢速抓取: [\n '慢速抓取,以避免触发 429 限制',\n '慢速抓取,以避免觸發 429 限制',\n 'Crawl slowly to avoid triggering 429 throttling',\n '429 スロットリングのトリガーを避けるためにゆっくりとクロールします',\n '429 스로틀링 트리거를 방지하기 위해 천천히 크롤링',\n 'Медленно сканируйте, чтобы не спровоцировать 429 троттлинг.',\n ],\n _慢速执行以避免引起429错误: [\n '慢速执行,以避免引起 429 错误',\n '慢速執行,以避免引起 429 錯誤',\n 'Execute slowly to avoid causing 429 errors',\n '429 エラーの発生を避けるためにゆっくり実行してください',\n '429 오류가 발생하지 않도록 천천히 실행하십시오.',\n 'Выполняйте медленно, чтобы избежать ошибок 429',\n ],\n _点击收藏按钮时下载作品: [\n '点击收藏按钮时下载作品',\n '點選收藏按鈕時下載作品',\n 'Download a work when you click the bookmark button',\n 'ブックマークボタンをクリックすると作品をダウンロード',\n '북마크 버튼 클릭 시 작품 다운로드',\n 'Загрузка произведения при нажатии кнопки закладка',\n ],\n _点击点赞按钮时下载作品: [\n '点击点赞按钮时下载作品',\n '點選點贊按鈕時下載作品',\n 'Download a work when you click the like button',\n 'いいね ボタンをクリックすると作品がダウンロードされます',\n '좋아요 버튼 클릭 시 작품 다운로드',\n 'Загрузка произведения при нажатии на кнопку лайк',\n ],\n _优化性能和用户体验: [\n '优化性能和用户体验。',\n '最佳化效能和使用者體驗。',\n 'Optimize performance and user experience.',\n 'パフォーマンスとユーザー エクスペリエンスを最適化します。',\n '성능과 사용자 경험을 최적화합니다.',\n 'Оптимизация производительности и пользовательского опыта',\n ],\n _修复bug: [\n '修复 bug',\n '修復 bug',\n 'fix bugs',\n 'バグを修正',\n '버그 수정',\n 'Баг фикс',\n ],\n _修复已知问题: [\n '修复已知问题',\n '修復已知問題',\n 'fix known issues',\n '既知の問題を修正する',\n '알려진 문제 수정',\n 'исправить известные проблемы',\n ],\n _不支持的浏览器: [\n '你的浏览器不能正常使用这个扩展程序,主要原因可能是浏览器内核版本太低,或者存在兼容性问题。
        建议您更换成最新版本的 Chrome 或 Edge 浏览器。',\n '你的瀏覽器不能正常使用這個擴充套件程式,主要原因可能是瀏覽器核心版本太低,或者存在相容性問題。
        建議您更換成最新版本的 Chrome 或 Edge 瀏覽器。',\n 'Your browser cannot use this extension properly. The main reason may be that the browser kernel version is too low, or there is a compatibility problem.
        We recommend that you switch to the latest version of Chrome or Edge.',\n 'お使いのブラウザでは、この拡張機能を正しく使用できません。 主な理由としては、ブラウザのカーネル バージョンが低すぎるか、互換性の問題がある可能性があります。
        最新バージョンの Chrome または Edge に切り替えることをお勧めします。',\n '브라우저에서 이 확장 프로그램을 제대로 사용할 수 없습니다. 주된 이유는 브라우저 커널 버전이 너무 낮거나 호환성 문제가 있기 때문일 수 있습니다.
        최신 버전의 Chrome 또는 Edge로 전환하는 것이 좋습니다.',\n 'Ваш браузер не может правильно использовать это расширение. Основной причиной может быть слишком низкая версия ядра браузера или проблема совместимости.
        Мы рекомендуем вам перейти на последнюю версию Chrome или Edge.',\n ],\n _日期时间格式错误: [\n '日期时间格式错误',\n '日期時間格式錯誤',\n 'wrong datetime format',\n '間違った日時形式',\n '잘못된 날짜/시간 형식',\n 'неправильный формат даты',\n ],\n _添加了对此页面类型的支持: [\n '添加了对此页面类型的支持:',\n '添加了对此页面类型的支持:',\n 'Added support for this page type:',\n '次のページ タイプのサポートが追加されました:',\n '이 페이지 유형에 대한 지원이 추가되었습니다:',\n 'Добавлена поддержка этого типа страницы:',\n ],\n _仅可由链接浏览: [\n '仅可由链接浏览',\n '僅可由連結瀏覽',\n 'URL restricted',\n 'URL限定公開',\n 'URL 한정 공개',\n 'URL ограничен',\n ],\n _添加了俄语翻译: [\n '添加了俄语翻译',\n '添加了俄語翻譯',\n 'Added Russian translation',\n 'ロシア語の翻訳を追加',\n '러시아어 번역 추가',\n 'Добавлен русский перевод',\n ],\n _移除本页面中所有作品的标签: [\n '移除本页面中所有作品的标签',\n '移除本頁面中所有作品的標籤',\n 'Remove tags from all works on this page',\n 'このページのすべての作品からタグを削除します',\n '이 페이지의 모든 작품에서 태그 제거',\n 'Удалить теги со всех работ на этой странице',\n ],\n _它们会变成未分类状态: [\n '它们会变成未分类状态',\n '它們會變成未分類狀態',\n 'They become uncategorized',\n 'それらは未分類になります',\n '분류되지 않습니다',\n 'Они становятся некатегоризированными',\n ],\n _取消收藏本页面的所有作品: [\n '取消收藏本页面中的所有作品',\n '取消收藏本頁面中的所有作品',\n 'Unbookmark all works on this page',\n 'このページのすべての作品のブックマークを解除',\n '이 페이지의 모든 작품에 대한 북마크 해제',\n 'Удалить из избранного все работы на этой странице',\n ],\n _取消收藏所有已被删除的作品: [\n '取消收藏所有已被删除的作品',\n '取消收藏所有已被刪除的作品',\n 'Unbookmark all deleted works',\n '削除した作品をすべてブックマーク解除する',\n '삭제된 모든 작품 북마크 해제',\n 'Снять закладку со всех удаленных работ',\n ],\n _取消收藏所有已被删除的作品的使用说明: [\n '在你的收藏页面里,切换到下载器的“更多”标签页可以看到该功能按钮。',\n '在你的收藏頁面裡,切換到下載器的“更多”標籤頁可以看到該功能按鈕。',\n 'In your bookmark page, switch to the \"More\" tab of the downloader to see this function button.',\n 'ブックマーク ページで、ダウンローダーの「その他」タブに切り替えると、この機能ボタンが表示されます。',\n '북마크 페이지에서 다운로더의 \"더보기\" 탭으로 전환하면 이 기능 버튼을 볼 수 있습니다.',\n 'На странице закладок перейдите на вкладку «Дополнительно» загрузчика, чтобы увидеть эту функциональную кнопку.',\n ],\n _取消收藏作品: [\n '取消收藏作品',\n '取消收藏作品',\n 'Unbookmark works',\n '作品のブックマークを解除',\n '작품 북마크 해제',\n 'Снять закладку с работ',\n ],\n _收藏页面里的按钮: [\n '当你在自己的收藏页面时,可以在“更多”选项卡里看到这个按钮。',\n '當你在自己的收藏頁面時,可以在“更多”選項卡里看到這個按鈕。',\n `You can see this button in the \"More\" tab when you're on your bookmarks page.`,\n 'このボタンは、ブックマーク ページの [もっと] タブに表示されます。',\n '북마크 페이지에 있을 때 \"더보기\" 탭에서 이 버튼을 볼 수 있습니다.',\n 'Вы можете увидеть эту кнопку на вкладке «Больше», когда находитесь на странице закладок.',\n ],\n _收藏任务尚未完成请等待: [\n '收藏作品的任务尚未全部完成,请等待',\n '收藏作品的任務尚未全部完成,請等待',\n 'The task of bookmarking works has not been completed yet, please wait.',\n '作品のブックマーク作業がまだ完了していませんので、しばらくお待ちください',\n '작품을 북마크하는 작업이 아직 완료되지 않았습니다. 잠시만 기다려 주세요',\n 'Задание работ по закладке еще не выполнено, пожалуйста, подождите',\n ],\n _收藏作品完毕: [\n '收藏作品完毕',\n '收藏作品完畢',\n 'Bookmark works finished',\n 'ブックマーク作業終了',\n '북마크 작업 완료',\n 'Работа над закладками завершена',\n ],\n _添加收藏失败: [\n '添加收藏失败',\n '新增收藏失敗',\n 'Failed to add bookmark',\n 'ブックマークを追加できませんでした',\n '북마크 추가 실패',\n 'Не удалось добавить закладку',\n ],\n _下载器会在几分钟后重试: [\n '下载器会在几分钟后重试。',\n '下載器會在幾分鐘後重試。',\n 'The downloader will try again in a few minutes.',\n 'ダウンローダーは数分後に再試行します。',\n '다운로더는 몇 분 후에 다시 시도합니다.',\n 'Загрузчик повторит попытку через несколько минут.',\n ],\n _重试收藏: [\n '重试收藏',\n '重試收藏',\n 'Retry bookmark',\n 'ブックマークを再試行',\n '북마크 다시 시도',\n 'Повторить закладку',\n ],\n _剩余xx个: [\n '剩余 {} 个。',\n '剩餘 {} 個。',\n '{} remaining.',\n '{} 残り。',\n '{} 남음.',\n '{} осталось.',\n ],\n _重试收藏成功: [\n '重试收藏成功。',\n '重試收藏成功。',\n 'Retry bookmark successfully.',\n 'ブックマークを再試行します。',\n '북마크를 다시 시도하십시오.',\n 'Повторите попытку закладки.',\n ],\n _出现错误请稍后重试: [\n '出现错误,请稍后重试。',\n '出現錯誤,請稍後重試。',\n 'An error occurred, please try again later.',\n 'エラーが発生しました。しばらくしてからもう一度お試しください。',\n '오류가 발생했습니다. 잠시 후 다시 시도 해주세요.',\n 'Произошла ошибка. Пожалуйста, повторите попытку позже.',\n ],\n _请稍后重试: [\n '请稍后重试。',\n '請稍後重試。',\n 'Please try again later.',\n '後でもう一度やり直してください。',\n '잠시 후에 다시 시도해주세요.',\n 'Пожалуйста, повторите попытку позже.',\n ],\n _确定要离开吗: [\n '确定要离开吗?',\n '確定要離開嗎?',\n 'Are you sure you want to leave?',\n '退会してもよろしいですか?',\n '떠나시겠습니까?',\n 'Вы уверены, что хотите оставить?',\n ],\n _yandex浏览器的警告: [\n `如果你在 Yandex 浏览器(Android)上使用 Powerful Pixiv Downloader,请换成 Kiwi 浏览器。
        \n 因为下载器在最近将会升级到 Manifest version 3,但是 Yandex 浏览器不支持 Manifest version 3, 所以它不能使用新版本的下载器。`,\n `如果你在 Yandex 瀏覽器(Android)上使用 Powerful Pixiv Downloader,請換成 Kiwi 瀏覽器。
        \n 因為下載器在最近將會升級到 Manifest version 3,但是 Yandex 瀏覽器不支援 Manifest version 3, 所以它不能使用新版本的下載器。`,\n `If you are using Powerful Pixiv Downloader on Yandex browser(Android), please switch to Kiwi browser.
        \n Because the downloader will be upgraded to Manifest version 3 in the near future, but Yandex browser does not support Manifest version 3, so it cannot use the new version of the downloader.`,\n `Yandex(Android) ブラウザで強力な Pixiv Downloader を使用している場合は、Kiwi ブラウザに切り替えてください。
        \n ダウンローダは近いうちにマニフェスト バージョン 3 にアップグレードされますが、Yandex ブラウザはマニフェスト バージョン 3 をサポートしていないため、新しいバージョンのダウンローダを使用することはできません。`,\n `Yandex(Android) 브라우저에서 강력한 Pixiv Downloader를 사용하는 경우 Kiwi 브라우저로 전환하십시오.
        \n 다운로더는 가까운 시일 내에 Manifest 버전 3으로 업그레이드되지만 Yandex 브라우저는 Manifest 버전 3을 지원하지 않으므로 새 버전의 다운로더를 사용할 수 없습니다.`,\n `Если вы используете Powerful Pixiv Downloader в браузере Yandex(Android), перейдите на браузер Kiwi.
        \n Потому что в ближайшее время загрузчик будет обновлен до Манифеста версии 3, но Yandex браузер не поддерживает Манифест версии 3, поэтому он не может использовать новую версию загрузчика.`,\n ],\n _导出日志: [\n '导出日志',\n '匯出日誌',\n 'Export log',\n 'ログのエクスポート',\n '내보내기 로그',\n 'Экспорт журнала',\n ],\n _导出日志成功: [\n '✓ 导出日志',\n '✓ 匯出日誌',\n '✓ Export log',\n '✓ ログのエクスポート',\n '✓ 내보내기 로그',\n '✓ Экспорт журнала',\n ],\n _导出时机: [\n '导出时机',\n '匯出時機',\n 'Export timing',\n 'エクスポートのタイミング',\n '내보내기 타이밍',\n 'Время экспорта',\n ],\n _日志类型: [\n '日志类型',\n '日誌型別',\n 'Log type',\n 'ログの種類',\n '로그 유형',\n 'Тип журнала',\n ],\n _正常: ['正常', '正常', 'Normal', '普通', '정상', 'Обычный'],\n _错误: ['错误', '錯誤', 'Error', 'エラー', '오류', 'Ошибка'],\n _排除关键字: [\n '排除关键字',\n '排除關鍵字',\n 'Exclude keywords',\n 'キーワードを除外',\n '키워드 제외',\n 'Исключить ключевые слова',\n ],\n _Chrome108版本转换WebM失败的问题: [\n '从 Chrome 108 版本开始,浏览器的一些变化导致下载器转换 WebM 视频失败。
        现已修复转换功能。',\n '從 Chrome 108 版本開始,瀏覽器的一些變化導致下載器轉換 WebM 影片失敗。
        現已修復轉換功能。',\n 'Starting with Chrome version 108, some changes in the browser caused the downloader to fail to convert WebM videos.
        The conversion function is now fixed.',\n 'Chrome バージョン 108 以降、ブラウザーの一部の変更により、ダウンローダーが WebM ビデオの変換に失敗しました。
        変換機能を修正しました。',\n 'Chrome 버전 108부터 브라우저의 일부 변경으로 인해 다운로더가 WebM 비디오를 변환하지 못했습니다.
        변환 기능이 수정되었습니다.',\n 'Начиная с Chrome версии 108, некоторые изменения в браузере приводили к тому, что загрузчик не мог конвертировать видео WebM.
        Функция преобразования теперь исправлена.',\n ],\n _特定用户的多图作品不下载最后几张图片: [\n '特定用户的多图作品不下载最后几张图片',\n '特定使用者的多圖作品不下載最後幾張圖片',\n `Don't download the last few images for specific user's multi-image works`,\n '特定のユーザーのマルチイメージ作品の最後のいくつかのイメージをダウンロードしないでください',\n '특정 사용자의 다중 이미지 작품에 대한 마지막 몇 개의 이미지를 다운로드하지 마십시오.',\n 'Не загружайте несколько последних изображений для работы с несколькими изображениями конкретного пользователя.',\n ],\n _不下载最后几张图片: [\n '不下载最后几张图片',\n '不下載最後幾張圖片',\n 'Do not download the last few images',\n '最後の数枚の画像をダウンロードしない',\n '마지막 몇 개의 이미지를 다운로드하지 마십시오',\n 'Не загружайте последние несколько изображений',\n ],\n _提示0表示不生效: [\n '0 表示不生效',\n '0 表示不生效',\n '0 means no effect',\n '0 は影響なしを意味します',\n '0은 영향이 없음을 의미합니다.',\n '0 означает отсутствие эффекта',\n ],\n _如果作品含有某些标签则对这个作品使用另一种命名规则: [\n '如果作品含有某些特定标签,则对这个作品使用另一种命名规则',\n '如果作品含有某些特定標籤,則對這個作品使用另一種命名規則',\n 'Use a different naming rule for the work if it has certain tags',\n '特定のタグがある場合は、作品に別の命名規則を使用する',\n '특정 태그가 있는 경우 작업에 다른 명명 규칙을 사용하십시오.',\n 'Используйте другое правило именования для работы, если она имеет определенные теги',\n ],\n _升级到manifest_v3的提示: [\n '下载器已升级到 Manifest V3。
        如果你在下载时遇到问题,请打开扩展管理页面,重新加载本扩展。',\n '下載器已升級到 Manifest V3。
        如果你在下載時遇到問題,請開啟擴充套件管理頁面,重新載入本擴充套件。',\n 'Downloader has been upgraded to Manifest V3.
        If you encounter problems when downloading, please open the extension management page and reload this extension.',\n 'Downloader が Manifest V3 にアップグレードされました。
        ダウンロード中に問題が発生した場合は、拡張機能の管理ページを開いて、この拡張機能をリロードしてください。',\n '다운로더가 Manifest V3로 업그레이드되었습니다.
        다운로드 시 문제가 발생하면 확장 프로그램 관리 페이지를 열고 이 확장 프로그램을 새로고침하세요.',\n 'Загрузчик обновлен до версии Manifest V3.
        Если у вас возникли проблемы при загрузке, откройте страницу управления расширением и перезагрузите это расширение.',\n ],\n _AI作品: [\n 'AI 作品',\n 'AI 作品',\n 'AI works',\n 'AIが働く',\n 'AI 작동',\n 'ИИ работает',\n ],\n _AI生成: [\n 'AI 生成',\n 'AI 生成',\n 'AI-generated',\n 'AI 生成',\n 'AI 생성',\n 'сгенерированный ИИ',\n ],\n _非AI生成: [\n '非 AI 生成',\n '非 AI 生成',\n 'Not AI-generated',\n 'AI生成ではない',\n 'AI 생성 아님',\n 'Не сгенерировано ИИ',\n ],\n _未知: [\n '未知',\n '未知',\n 'Unknown',\n '知らない',\n '알려지지 않은',\n 'Неизвестный',\n ],\n _AI未知作品的说明: [\n '早期作品没有标记,无法判断',\n '早期作品沒有標記,無法判斷',\n 'Early works are not marked and cannot be judged',\n '初期の作品は採点せず、審査不可',\n '초기 작품은 표시되지 않으며 평가할 수 없습니다.',\n 'Ранние работы не отмечены и не могут быть оценены',\n ],\n _用户可以选择是否下载AI生成的作品: [\n '用户可以选择是否下载由 AI 生成的作品。',\n '使用者可以選擇是否下載由 AI 生成的作品。',\n 'Users can choose whether to download AI-generated works.',\n 'ユーザーは、AI によって生成された作品をダウンロードするかどうかを選択できます。',\n '사용자는 AI가 생성한 작품을 다운로드할지 여부를 선택할 수 있습니다.',\n 'Пользователи могут выбирать, загружать ли работы, созданные ИИ.',\n ],\n _文件下载顺序: [\n '文件下载顺序',\n '檔案下載順序',\n 'File download order',\n 'ファイルのダウンロード順序',\n '파일 다운로드 순서',\n 'Порядок загрузки файлов',\n ],\n _降序: [\n '降序',\n '降序',\n 'Descending',\n '降順',\n '내림차순',\n 'в порядке убывания',\n ],\n _升序: [\n '升序',\n '升序',\n 'Ascending',\n '昇順',\n '오름차순',\n 'возрастающий порядок',\n ],\n _排序依据: [\n '排序依据',\n '排序依據',\n 'Sort by',\n 'ソート基準',\n '정렬 기준',\n 'Сортировать по',\n ],\n _作品ID: [\n '作品 ID',\n '作品 ID',\n 'Work ID',\n '作品ID',\n 'ID 아이디',\n 'РРабочий идентификатор',\n ],\n _收藏时间: [\n '收藏时间',\n '收藏時間',\n 'Bookmark time',\n 'ブックマーク時間',\n '북마크 시간',\n 'время сбора',\n ],\n _收藏数量2: [\n '收藏数量',\n '收藏數量',\n 'Number of bookmarks',\n 'ブックマークの数',\n '북마크 수',\n 'Колличество закладок',\n ],\n _重新显示帮助: [\n '重新显示帮助',\n '重新顯示幫助',\n 'Redisplay help',\n 'ヘルプを再表示',\n '도움말 다시 표시',\n 'Повторно отобразить справку',\n ],\n _自定义标签分隔符号的提示: [\n '现在你可以自定义文件名中使用的标签分隔符号,以替换默认的 ,。',\n '現在你可以自定義檔名中使用的標籤分隔符號,以替換預設的 ,。',\n 'You can now customize the tag separator used in filenames to replace the default ,',\n 'ファイル名で使用されるタグ区切りをカスタマイズして、デフォルトの , を置き換えることができるようになりました',\n '이제 파일 이름에 사용되는 태그 구분 기호를 사용자 지정하여 기본 ,',\n 'Теперь вы можете настроить разделитель тегов, используемый в именах файлов, чтобы заменить используемый по умолчанию ,',\n ],\n _高亮关注的用户: [\n '高亮关注的用户',\n '高亮關注的使用者',\n 'Highlight following users',\n 'フォローしているユーザーを強調表示する',\n '다음 사용자 강조표시',\n 'Выделить следующих пользователей',\n ],\n _高亮关注的用户的说明: [\n '你关注(Following)的用户的名字会具有黄色背景,或者显示为黄色。
        这便于你确认自己是否关注了某个用户。',\n '你關注(Following)的使用者的名字會具有黃色背景,或者顯示為黃色。
        這便於你確認自己是否關注了某個使用者。',\n 'The names of users you are following will have a yellow background, or be displayed in yellow.
        This is convenient for you to confirm whether you follow a certain user.',\n 'フォローしているユーザーの名前は背景が黄色、または黄色で表示されます。
        特定のユーザーをフォローしているかどうかを確認するのに便利です。',\n '팔로우하는 사용자의 이름은 노란색 배경으로 표시되거나 노란색으로 표시됩니다.
        특정 사용자를 팔로우하고 있는지 확인할 때 편리합니다.',\n 'Имена пользователей, на которых вы подписаны, будут иметь желтый фон или отображаться желтым цветом.
        Это удобно для вас, чтобы подтвердить, подписаны ли вы на определенного пользователя',\n ],\n _正在加载关注用户列表: [\n '正在加载关注用户列表',\n '正在載入關注使用者列表',\n 'Loading list of followed users',\n 'フォローしているユーザーのリストを読み込み中',\n '팔로우한 사용자 목록 로드 중',\n 'Загрузка списка отслеживаемых пользователей',\n ],\n _已更新关注用户列表: [\n '已更新关注用户列表',\n '已更新關注使用者列表',\n 'The list of following users has been updated',\n 'フォローしているユーザーのリストが更新されました',\n '다음 사용자 목록이 업데이트되었습니다',\n 'Список следующих пользователей обновлен',\n ],\n _Kiwi浏览器可能不能建立文件夹的bug: [\n '如果你使用的是 Kiwi 浏览器,它可能不会建立文件夹。这是 Kiwi 浏览器的 bug。',\n '如果你使用的是 Kiwi 瀏覽器,它可能不會建立資料夾。這是 Kiwi 瀏覽器的 bug。',\n 'If you are using the Kiwi browser, it may not create the folder. This is a bug in the Kiwi browser',\n 'Kiwi ブラウザを使用している場合、フォルダが作成されない場合があります。 これは Kiwi ブラウザのバグです。',\n '키위 브라우저를 사용하는 경우 폴더가 생성되지 않을 수 있습니다. 이것은 Kiwi 브라우저의 버그입니다.',\n 'Если вы используете браузер Kiwi, он может не создать папку. Это баг браузера Киви.',\n ],\n _优化移动设备上的用户体验: [\n '优化移动设备上的用户体验。',\n '最佳化移動裝置上的使用者體驗。',\n 'Optimize user experience on mobile devices.',\n 'モバイルデバイスでのユーザーエクスペリエンスを最適化します。',\n '모바일 장치에서 사용자 경험을 최적화합니다.',\n 'Оптимизируйте взаимодействие с пользователем на мобильных устройствах.',\n ],\n _导出CSV文件的提示: [\n 'CSV 文件的可读性更好,但它不能用于恢复(导入)抓取结果。',\n 'CSV 檔案的可讀性更好,但它不能用於恢復(匯入)抓取結果。',\n 'A CSV file is more readable, but it cannot be used to restore (import) crawl results.',\n 'CSV ファイルは読みやすいですが、クロール結果の復元 (インポート) には使用できません。',\n 'CSV 파일은 더 읽기 쉽지만 크롤링 결과를 복원(가져오기)하는 데 사용할 수 없습니다.',\n 'CSV-файл более удобен для чтения, но его нельзя использовать для восстановления (импорта) результатов сканирования.',\n ],\n _批量收藏作品时减慢速度: [\n '批量收藏作品时减慢速度,以减少 429 错误发生的概率',\n '批量收藏作品时减慢速度,以减少 429 错误发生的概率',\n 'Slow down when batch bookmarking works to reduce chance of 429 errors',\n 'バッチブックマークが機能すると、429 エラーの可能性を減らすために速度が低下します。',\n '429 오류 가능성을 줄이기 위해 일괄 북마크가 작동할 때 속도를 늦춥니다.',\n 'Замедлите работу, когда пакетная закладка работает, чтобы уменьшить вероятность ошибки 429',\n ],\n _停止抓取: [\n '停止抓取',\n '停止擷取',\n 'Stop crawling',\n 'クロールをやめる',\n '크롤링 중지',\n 'Остановить сканирование',\n ],\n _已停止抓取: [\n '已停止抓取',\n '已停止擷取',\n 'Crawl stopped',\n 'クロールを停止しました',\n '크롤링 중지됨',\n 'Сканирование остановлено',\n ],\n _导入ID列表: [\n '导入 ID 列表',\n '匯入 ID 列表',\n 'Import ID list',\n 'インポートIDリスト',\n 'ID 목록 가져오기',\n 'Список идентификаторов импорта',\n ],\n _导出ID列表: [\n '获取作品 ID 列表后导出 ID 列表,并停止任务',\n '獲取作品 ID 列表後匯出 ID 列表,並停止任務',\n 'After obtaining the work ID list, export the ID list and stop the task',\n 'ワークIDリストを取得後、IDリストをエクスポートしてタスクを停止する',\n '작업 ID 목록을 가져온 후 ID 목록을 내보내고 작업을 중지합니다',\n 'После получения списка идентификаторов работ экспортируйте список идентификаторов и остановите задачу',\n ],\n _导入的用户ID数量: [\n '导入的用户 ID 数量:',\n '匯入的使用者 ID 數量:',\n 'Number of user IDs imported: ',\n 'インポートされたユーザー ID の数: ',\n '가져온 사용자 ID 수: ',\n 'Количество импортированных идентификаторов пользователей:',\n ],\n _任务已中止: [\n '任务已中止',\n '任務已中止',\n 'task aborted',\n 'タスクが中止されました',\n '작업이 중단됨',\n 'задача прервана',\n ],\n _新增的关注用户达到每日限制: [\n '新增的关注用户数量达到 {}, 下载器已中止任务,以免你的账号被 Pixiv 限制。
        建议明天再执行此任务。',\n '新增的關注使用者數量達到 {}, 下載器已中止任務,以免你的賬號被 Pixiv 限制。
        建議明天再執行此任務。',\n 'The number of newly added followers has reached {}, the downloader has stopped the task to prevent your account from being restricted by Pixiv.
        It is recommended to perform this task again tomorrow.',\n '新しく追加されたフォロワーの数が {} に達しました。あなたのアカウントが Pixiv によって制限されるのを防ぐために、ダウンローダーはタスクを停止しました。
        このタスクは明日もう一度実行することをお勧めします。',\n '새로 추가된 팔로워 수가 {}에 도달했습니다. 다운로더가 작업을 중지하여 Pixiv에서 귀하의 계정을 제한하지 않도록 했습니다.
        내일 이 작업을 다시 수행하는 것이 좋습니다.',\n 'Количество новых подписчиков достигло {}, загрузчик остановил задачу, чтобы предотвратить ограничение вашей учетной записи Pixiv.
        Рекомендуется повторить это задание завтра.',\n ],\n _没有找到关注按钮的提示: [\n '跳过关注用户 {} 因为没有找到关注按钮。你可以手动关注此用户。再次执行此任务有可能解决此问题。',\n '跳過關注使用者 {} 因為沒有找到關注按鈕。你可以手動關注此使用者。再次執行此任務有可能解決此問題。',\n 'Skip following user {} because no follow button was found. You can follow this user manually. Performing this task again may resolve the issue.',\n 'フォロー ボタンが見つからなかったため、ユーザー {} のフォローをスキップします。このユーザーを手動でフォローできます。 このタスクを再度実行すると、問題が解決される可能性があります。',\n '팔로우 버튼을 찾을 수 없으므로 사용자 {} 팔로우를 건너뜁니다. 이 사용자를 수동으로 팔로우할 수 있습니다. 이 작업을 다시 수행하면 문제가 해결될 수 있습니다.',\n 'Пропустить подписку на пользователя {}, поскольку кнопка подписки не найдена. Вы можете подписаться на этого пользователя вручную. Повторное выполнение этой задачи может решить проблему.',\n ],\n _你的账号已经被Pixiv限制: [\n '你的账号已经被 Pixiv 限制',\n '你的賬號已經被 Pixiv 限制',\n 'Your account has been restricted by Pixiv',\n 'あなたのアカウントはPixivによって制限されています',\n '귀하의 계정은 Pixiv에 의해 제한되었습니다.',\n 'Ваша учетная запись была ограничена Pixiv',\n ],\n _模拟用户点击: [\n '下载器发送的 API 返回 400 错误(需要 recaptcha enterprise score token),切换到模拟用户点击的方式,这会使用较多的硬件资源。',\n '下載器傳送的 API 返回 400 錯誤(需要 recaptcha enterprise score token),切換到模擬使用者點選的方式,這會使用較多的硬體資源。',\n 'The API sent by the downloader returns a 400 error (recaptcha enterprise score token is required), and switches to the method of simulating user clicks, which will use more hardware resources.',\n 'ダウンローダーによって送信された API は 400 エラー (recaptcha enterprise score token が必要です) を返し、より多くのハードウェア リソースを使用するユーザーのクリックをシミュレートする方法に切り替わります。',\n '다운로더가 보낸 API는 400 오류(recaptcha enterprise score token 필요)를 반환하고 더 많은 하드웨어 리소스를 사용하는 사용자 클릭 시뮬레이션 방법으로 전환합니다.',\n 'API, отправленный загрузчиком, возвращает ошибку 400 (требуется recaptcha enterprise score token) и переключается на метод имитации пользовательских кликов, который будет использовать больше аппаратных ресурсов.',\n ],\n _提示可以重新执行批量关注任务: [\n '如果该标签页失去响应,或者关注的用户有遗漏,请关闭标签页,再重新打开,重新执行此任务。',\n '如果該標籤頁失去響應,或者關注的使用者有遺漏,請關閉標籤頁,再重新開啟,重新執行此任務。',\n 'If the tab becomes unresponsive, or if you miss a follower, close the tab, reopen it, and redo the task.',\n 'タブが応答しなくなった場合、またはフォロワーを見逃した場合は、タブを閉じて再度開き、タスクをやり直してください。',\n '탭이 응답하지 않거나 팔로어를 놓친 경우 탭을 닫았다가 다시 열고 작업을 다시 실행하십시오.',\n 'Если вкладка перестает отвечать на запросы или вы пропустили подписчика, закройте вкладку, снова откройте ее и повторите задачу.',\n ],\n _新增x个: [\n '新增 {} 个',\n '新增 {} 個',\n 'Added {}',\n '追加した {}',\n '추가됨 {}',\n 'Добавлен {}',\n ],\n _优化批量关注用户的功能: [\n '优化批量关注用户的功能',\n '最佳化批次關注使用者的功能',\n 'Optimize the function of following users in batches',\n 'ユーザーの一括フォロー機能を最適化',\n '사용자 일괄 팔로우 기능 최적화',\n 'Оптимизируйте функцию подписки на пользователей в пакетном режиме.',\n ],\n _修复了显示更大的缩略图失效的问题: [\n '修复了“显示更大的缩略图”失效的问题',\n '修復了“顯示更大的縮圖”失效的問題',\n 'Fixed an issue where \"Show Larger Thumbnails\" didn\\'t work',\n '「大きなサムネイルを表示」が機能しない問題を修正しました',\n '\"큰 축소판 보기\"가 작동하지 않는 문제를 수정했습니다.',\n 'Исправлена ​​ошибка, из-за которой не работал параметр «Показать увеличенные эскизы».',\n ],\n _可能发生了错误请刷新页面重试: [\n '可能发生了错误。
        如果下载进度卡住,请刷新页面重试,或者重启浏览器。',\n '可能發生了錯誤。
        如果下載進度卡住,請重新整理頁面重試,或者重啟瀏覽器。',\n 'An error may have occurred.
        If the download progress is stuck, please refresh the page and try again, or restart the browser.',\n 'エラーが発生した可能性があります。
        ダウンロードの進行が進まない場合は、ページを更新して再試行するか、ブラウザを再起動してください。',\n '오류가 발생했을 수 있습니다.
        다운로드 진행이 중단되면 페이지를 새로 고친 후 다시 시도하거나 브라우저를 다시 시작하세요.',\n 'Возможно, произошла ошибка.
        Если процесс загрузки завис, обновите страницу и повторите попытку или перезапустите браузер.',\n ],\n _在多图作品页面里显示缩略图列表: [\n '在多图作品页面里显示缩略图列表',\n '在多圖作品頁面裡顯示縮圖列表',\n 'In the multi-image work page, display the thumbnail list',\n '複数画像作品ページでサムネイル一覧を表示',\n '멀티 이미지 작품 페이지에서 썸네일 목록을 표시',\n 'На рабочей странице с несколькими изображениями отобразите список эскизов',\n ],\n _提交: ['提交', '提交', 'Submit', '提出する', '제출하다', 'Подавать'],\n _已导出被删除的作品的ID列表: [\n '已导出被删除的作品的 ID 列表',\n '已匯出被刪除的作品的 ID 列表',\n 'List of IDs of deleted works exported',\n 'エクスポートされた削除作品のID一覧',\n '내보낸 삭제된 작품의 ID 목록',\n 'Список идентификаторов удаленных работ экспортирован',\n ],\n _在收藏页面里提示有辅助功能可用: [\n '在你的收藏页面里,下载器的“更多”标签页里有一些功能可以帮助管理你的收藏。',\n '在你的收藏頁面裡,下載器的“更多”標籤頁裡有一些功能可以幫助管理你的收藏。',\n `On your bookmarks page, the Downloader's \"More\" tab has some features to help you manage your bookmarks.`,\n 'ブックマーク ページのダウンローダーの [その他] タブには、ブックマークの管理に役立つ機能がいくつかあります。',\n '북마크 페이지에서 다운로더의 \"더보기\" 탭에는 북마크를 관리하는 데 도움이 되는 몇 가지 기능이 있습니다.',\n 'На странице закладок на вкладке «Дополнительно» Downloader есть некоторые функции, которые помогут вам управлять своими закладками.',\n ],\n _预览作品的详细信息: [\n '预览作品的详细信息',\n '預覽作品時的詳細資料',\n 'Preview the details of the work',\n 'プレビュー作品の詳細です',\n '작품의 상세한 정보를 미리보다',\n 'Подробности предварительного показа',\n ],\n _预览作品的详细信息的说明: [\n '鼠标放在作品缩略图上即可查看作品数据',\n '滑鼠放在作品縮圖上即可檢視作品資料',\n 'Mouse over the thumbnail of the work to view the work data',\n '作品のサムネイルにマウスをかざすだけで作品データを見ることができます',\n '마우스를 작품 썸네일 위에 놓으면 작품 데이터를 볼 수 있다',\n 'Данные о работе можно увидеть с помощью мыши на сокращённом графике',\n ],\n _显示区域宽度: [\n '显示区域宽度',\n '顯示區域寬度',\n 'Display area width',\n '表示領域幅です',\n '영역 너비 보이기',\n 'Покажи ширину зоны',\n ],\n _写入剪贴板失败: [\n '写入剪贴板失败',\n '寫入剪貼簿失敗',\n 'Writing to clipboard failed',\n 'クリップボードへの書き込みに失敗しました',\n '클립보드에 쓰지 못했습니다.',\n 'Запись в буфер обмена не удалась',\n ],\n _在搜索页面里移除已关注用户的作品: [\n '在搜索页面里移除已关注用户的作品',\n '在搜尋頁面裡移除已關注使用者的作品',\n 'Remove the works of followed users from the search page',\n 'フォローしているユーザーの作品を検索ページから削除します',\n '검색 페이지에서 팔로우한 사용자의 작품을 제거합니다.',\n 'Удалить работы подписавшихся пользователей со страницы поиска',\n ],\n _在搜索页面里移除已关注用户的作品的说明: [\n '这样只会显示未关注用户的作品,便于你发现新的喜欢的用户。
        只在搜索页面里生效。',\n '這樣只會顯示未關注使用者的作品,便於你發現新的喜歡的使用者。
        只在搜尋頁面裡生效。',\n 'This will only display the works of unfollowed users, making it easier for you to discover new users you like.
        Only takes effect on the search page.',\n 'フォローを解除しているユーザーの作品のみが表示されるので、新たに好みのユーザーを見つけやすくなります。
        検索ページでのみ有効です。',\n '팔로우하지 않은 사용자의 작품만 표시되므로 마음에 드는 새로운 사용자를 더 쉽게 찾을 수 있습니다.
        검색 페이지에만 적용됩니다.',\n 'При этом будут отображаться только работы пользователей, на которых вы не подписаны, что облегчит вам поиск новых пользователей, которые вам нравятся.
        Действует только на странице поиска.',\n ],\n _使用方向键和空格键切换图片: [\n '使用方向键和空格键切换图片',\n '使用方向鍵和空格鍵切換圖片',\n 'Use the arrow keys and space bar to switch images',\n '矢印キーとスペースバーを使用して画像を切り替えます',\n '이미지를 전환하려면 화살표 키와 스페이스바를 사용하세요.',\n 'Используйте клавиши со стрелками и пробел для переключения изображений.',\n ],\n _使用方向键和空格键切换图片的提示: [\n '← ↑ 上一张图片
        → ↓ 下一张图片
        空格键 下一张图片',\n '← ↑ 上一張圖片
        → ↓ 下一張圖片
        空格鍵 下一張圖片',\n '← ↑ Previous image
        → ↓ Next image
        Spacebar Next image',\n '← ↑ 前の画像
        → ↓ 次の画像
        スペースバー 次の画像',\n '← ↑ 이전 이미지
        → ↓ 다음 이미지
        스페이스바 다음 이미지',\n '← ↑ Предыдущее изображение
        → ↓ Следующее изображение
        Пробел Следующее изображение',\n ],\n _快捷键列表: [\n '快捷键列表',\n '快捷鍵列表',\n 'Shortcut list',\n 'ショートカットリスト',\n '바로가기 목록',\n 'Список ярлыков',\n ],\n _预览作品的快捷键说明: [\n `Alt + P 关闭/启用预览作品功能
        \n 当你查看预览图时,可以使用如下快捷键:
        \n B(ookmark) 收藏预览的作品
        \n C(urrent) 下载当前预览的图片
        \n D(ownload) 下载当前预览的作品
        \n Esc 关闭预览图
        \n ← ↑ 上一张图片
        \n → ↓ 下一张图片
        \n 空格键 下一张图片`,\n `Alt + P 關閉/啟用預覽作品功能
        \n 當你檢視預覽圖時,可以使用如下快捷鍵:
        \n B(ookmark) 收藏預覽的作品
        \n C(urrent) 下載當前預覽的圖片
        \n D(ownload) 下載當前預覽的作品
        \n Esc 關閉預覽圖
        \n ← ↑ 上一張圖片
        \n → ↓ 下一張圖片
        \n 空格鍵 下一張圖片`,\n `Alt + P Turn off/enable the preview function
        \n When you view the preview, you can use the following shortcut keys:
        \n B(ookmark) Bookmark previewed work
        \n C(urrent) Download the currently previewed image
        \n D(download) Download the currently previewed work
        \n Esc Close preview
        \n ← ↑ Previous image
        \n → ↓ Next image
        \n Space bar Next image`,\n `Alt + P プレビュー機能をオフ/有効にします
        \n プレビューを表示するときは、次のショートカット キーを使用できます。
        \n B(ookmark) プレビューした作品をブックマークします
        \n C(urrent) 現在プレビューされている画像をダウンロードします
        \n D(ownload) 現在プレビュー中の作品をダウンロードします
        \n Esc プレビューを閉じる
        \n ← ↑ 前の画像
        \n → ↓ 次の画像
        \n スペースバー 次の画像`,\n `Alt + P 미리보기 기능 끄기/활성화
        \n 미리보기를 볼 때 다음 단축키를 사용할 수 있습니다.
        \n B(ookmark) 북마크 미리보기 작업
        \n C(urrent) 현재 미리보기 이미지 다운로드
        \n D(ownload) 현재 미리보기된 작품 다운로드
        \n Esc 미리보기 닫기
        \n ← ↑ 이전 이미지
        \n → ↓ 다음 이미지
        \n 스페이스바 다음 이미지`,\n `Alt + P Выключить/включить функцию предварительного просмотра
        \n При предварительном просмотре вы можете использовать следующие сочетания клавиш:
        \n B(ookmark) Добавить в закладки предварительно просмотренную работу
        \n C(urrent) Загрузите просматриваемое в данный момент изображение
        \n D(ownload) Загрузите просматриваемую в данный момент работу
        \n Esc Закрыть предварительный просмотр
        \n ← ↑ Предыдущее изображение
        \n → ↓ Следующее изображение
        \n Пробел Следующее изображение`,\n ],\n _导出收藏列表: [\n '导出收藏列表(JSON)',\n '匯出收藏列表(JSON)',\n 'Export bookmark list(JSON)',\n 'ブックマークリストをエクスポートする(JSON)',\n '북마크 목록 내보내기(JSON)',\n 'Экспортировать список закладок(JSON)',\n ],\n _导入收藏列表: [\n '导入收藏列表(批量添加收藏)',\n '匯入收藏列表(批次新增收藏)',\n 'Import bookmark list (add bookmarks in batches)',\n 'ブックマークリストをインポート(ブックマークを一括追加)',\n '북마크 목록 가져오기(북마크 일괄 추가)',\n 'Импортировать список закладок (добавлять закладки пакетно)',\n ],\n _同步收藏列表的说明: [\n '你可以导出自己或其他用户的收藏列表,然后批量添加收藏。
        这可以用来拷贝其他用户的收藏列表。
        另外,如果你有多个 Pixiv 账号,想要同步它们的收藏列表,可以先导出一个账号的收藏列表,然后使用其他账号导入收藏列表。

        当你处于自己或其他人的书签页面里时,可以在下载器的“更多”分类里找到此功能。',\n '你可以匯出自己或其他使用者的收藏列表,然後批次新增收藏。
        這可以用來複製其他使用者的收藏列表。
        另外,如果你有多個 Pixiv 賬號,想要同步它們的收藏列表,可以先匯出一個賬號的收藏列表,然後使用其他賬號匯入收藏列表。

        當你處於自己或其他人的書籤頁面裡時,可以在下載器的“更多”分類裡找到此功能。',\n `You can export your own or other users' bookmark lists and then add bookmarks in batches.
        This can be used to copy another user's bookmark list.
        In addition, if you have multiple Pixiv accounts and want to synchronize their bookmark lists, you can first export the bookmark list of one account, and then use other accounts to import the bookmark list.

        This feature can be found in the \"More\" category of the downloader when you are on your own or someone else's bookmark page.`,\n '自分や他のユーザーのブックマークリストをエクスポートして、一括でブックマークを追加できます。
        他のユーザーのブックマークリストをコピーすることもできます。
        また、複数のPixivアカウントを持っていて、ブックマークを同期したい場合にも使用できます。リストの場合、最初に 1 つのアカウントのブックマーク リストをエクスポートし、次に他のアカウントを使用してブックマーク リストをインポートできます。

        この機能は、自分または他の人のブックマーク ページにいるときに、ダウンローダーの「その他」カテゴリにあります。',\n '자신 또는 다른 사용자의 북마크 목록을 내보낸 후 일괄적으로 북마크를 추가할 수 있습니다.
        이는 다른 사용자의 북마크 목록을 복사하는 데 사용할 수 있습니다.
        또한 Pixiv 계정이 여러 개 있고 북마크를 동기화하려는 경우 목록의 경우 먼저 한 계정의 북마크 목록을 내보낸 다음 다른 계정을 사용하여 북마크 목록을 가져올 수 있습니다.

        이 기능은 자신이나 다른 사람의 북마크 페이지에 있을 때 다운로더의 \"더 보기\" 카테고리에서 찾을 수 있습니다.',\n 'Вы можете экспортировать свои списки закладок или списки закладок других пользователей, а затем добавлять закладки в пакетном режиме.
        Это можно использовать для копирования списка закладок другого пользователя.
        Кроме того, если у вас есть несколько учетных записей Pixiv и вы хотите синхронизировать их закладки списки, вы можете сначала экспортировать список закладок одной учетной записи, а затем использовать другие учетные записи для импорта списка закладок.

        Эту функцию можно найти в категории «Дополнительно» загрузчика, когда вы находитесь на своей или чужой странице закладок.',\n ],\n _加载收藏列表: [\n '正在加载你的收藏列表,以避免重复添加收藏',\n '正在載入你的收藏列表,以避免重複新增收藏',\n 'Loading your bookmark list to avoid duplicate bookmarks',\n 'ブックマークの重複を避けるためにブックマーク リストをロードする',\n '중복 북마크를 방지하기 위해 북마크 목록 로드 중',\n 'Загрузка списка закладок, чтобы избежать дублирования закладок',\n ],\n _一共有x个: [\n '一共有 {} 个',\n '一共有 {} 個',\n 'There are {} in total',\n '合計 {} 個あります',\n '총 {}개가 있습니다.',\n 'Всего {}',\n ],\n _跳过x个: [\n '跳过了 {} 个已存在的收藏',\n '跳過了 {} 個已存在的收藏',\n '{} existing bookmarks skipped',\n '{} 個の既存のブックマークがスキップされました',\n '{}개의 기존 북마크를 건너뛰었습니다.',\n '{} существующих закладок пропущено',\n ],\n}\n\nexport { langText }\n","import { EVT } from './EVT'\n\n// 监听页面的无刷新切换\nclass ListenPageSwitch {\n constructor() {\n this.supportListenHistory()\n this.listenPageSwitch()\n }\n\n // 为监听 url 变化的事件提供支持\n private supportListenHistory() {\n const s = document.createElement('script')\n const url = chrome.runtime.getURL('lib/listen_history_change.js')\n s.src = url\n document.head.appendChild(s)\n }\n\n // 无刷新切换页面时派发事件\n private listenPageSwitch() {\n // 点击浏览器的前进或后退按钮会触发 popstate 事件\n // 点击链接进入一个 url 不同的页面是 pushState 操作\n // 现在还没有遇到 replaceState 操作\n ;['pushState', 'popstate', 'replaceState'].forEach((item) => {\n window.addEventListener(item, () => {\n EVT.fire('pageSwitch')\n })\n })\n }\n}\n\nnew ListenPageSwitch()\n","import { theme } from './Theme'\n\n// loading 图标\nclass Loading {\n private id = 'xzLoadingWrap'\n\n private readonly html = `\n
        \n
        \n \n \n \n
        \n
        `\n\n private _show = false\n\n public set show(val: boolean) {\n this._show = val\n this._show ? this.showEl() : this.hiddenEl()\n }\n\n public get show() {\n return this._show\n }\n\n private create() {\n document.body.insertAdjacentHTML('beforeend', this.html)\n const el = document.body.querySelector('#' + this.id) as HTMLDivElement\n theme.register(el)\n return el\n }\n\n private getEl() {\n let el = document.body.querySelector('#' + this.id)\n if (el) {\n return el as HTMLDivElement\n } else {\n return this.create()\n }\n }\n\n private showEl() {\n this.getEl().style.display = 'flex'\n }\n\n private hiddenEl() {\n this.getEl().style.display = 'none'\n }\n}\n\nconst loading = new Loading()\nexport { loading }\n","import { EVT } from './EVT'\nimport { theme } from './Theme'\nimport { Colors } from './Colors'\nimport { bg } from './BG'\nimport { lang } from './Lang'\nimport { store } from './store/Store'\nimport { toast } from './Toast'\nimport { Tools } from './Tools'\nimport { Utils } from './utils/Utils'\nimport { settings } from './setting/Settings'\nimport { DateFormat } from './utils/DateFormat'\nimport { Config } from './Config'\n\n// 日志\nclass Log {\n constructor() {\n this.scrollToBottom()\n\n window.addEventListener(EVT.list.clearLog, () => {\n this.clear()\n })\n\n const clearRecordEvents = [EVT.list.clearLog, EVT.list.downloadStop]\n clearRecordEvents.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.record = []\n })\n })\n\n window.addEventListener(EVT.list.crawlComplete, () => {\n if (settings.exportLog && settings.exportLogTiming === 'crawlComplete') {\n this.export()\n }\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n if (\n settings.exportLog &&\n settings.exportLogTiming === 'downloadComplete'\n ) {\n this.export()\n }\n })\n }\n\n private id = 'logWrap' // 日志区域元素的 id\n private wrap = document.createElement('div') // 日志容器的区域\n private logArea = document.createElement('div') // 日志主体区域\n private refresh = document.createElement('span') // 刷新时使用的元素\n private readonly levelColor = [\n 'inherit',\n Colors.textSuccess,\n Colors.textWarning,\n Colors.textError,\n ]\n\n private max = 300\n private count = 0\n\n private record: { html: string; level: number }[] = []\n\n private toBottom = false // 指示是否需要把日志滚动到底部。当有日志被添加或刷新,则为 true。滚动到底部之后复位到 false,避免一直滚动到底部。\n\n // 添加日志\n /*\n str 日志文本\n level 日志等级\n br 换行标签的个数\n keepShow 追加日志的模式,默认为 true,把这一条日志添加后不再修改。false 则是刷新显示这条消息。\n\n level 日志等级:\n 0 normal\n 1 success\n 2 warning\n 3 error\n */\n private add(str: string, level: number, br: number, keepShow: boolean) {\n this.checkElement()\n let span = document.createElement('span')\n if (!keepShow) {\n span = this.refresh\n } else {\n this.count++\n }\n\n span.innerHTML = str\n\n span.style.color = this.levelColor[level]\n\n while (br > 0) {\n span.appendChild(document.createElement('br'))\n br--\n }\n\n this.logArea.appendChild(span)\n this.toBottom = true // 需要把日志滚动到底部\n\n // 把持久日志保存到记录里\n if (keepShow) {\n this.record.push({ html: span.outerHTML, level })\n }\n }\n\n public log(str: string, br: number = 1, keepShow: boolean = true) {\n this.add(str, 0, br, keepShow)\n }\n\n public success(str: string, br: number = 1, keepShow: boolean = true) {\n this.add(str, 1, br, keepShow)\n }\n\n public warning(str: string, br: number = 1, keepShow: boolean = true) {\n this.add(str, 2, br, keepShow)\n }\n\n public error(str: string, br: number = 1, keepShow: boolean = true) {\n this.add(str, 3, br, keepShow)\n }\n\n /**将刷新的日志元素持久化 */\n // 刷新区域通常用于显示进度,例如 0/10, 1/10, 2/10... 10/10\n // 它们使用同一个 span 元素,并且同时只能存在一个刷新区域\n // 当显示 10/10 的时候,进度就不会再变化了,此时应该将其“持久化”。生成一个新的 span 元素作为新的刷新区域\n // 这样如果后续又需要显示刷新的元素,不会影响之前已完成“持久化”的日志\n public persistentRefresh() {\n this.refresh = document.createElement('span')\n }\n\n private checkElement() {\n // 如果日志区域没有被添加到页面上,则添加\n let test = document.getElementById(this.id)\n if (test === null) {\n this.wrap = document.createElement('div')\n this.wrap.id = this.id\n this.logArea = document.createElement('div')\n this.logArea.classList.add('beautify_scrollbar', 'logContent')\n if (Config.mobile) {\n this.wrap.classList.add('mobile')\n }\n this.wrap.append(this.logArea)\n document.body.insertAdjacentElement('beforebegin', this.wrap)\n theme.register(this.wrap)\n // 虽然可以应用背景图片,但是由于日志区域比较狭长,背景图片的视觉效果不佳,看起来比较粗糙,所以还是不应用背景图片了\n // bg.useBG(this.wrap, 0.9)\n }\n\n // 如果页面上的日志条数超过指定数量,则清空\n // 因为日志数量太多的话会占用很大的内存。同时显示 8000 条日志可能占用接近 1 GB 的内存\n if (this.count > this.max) {\n this.clear()\n }\n }\n\n /**移除日志区域 */\n public remove() {\n this.count = 0\n this.wrap.remove()\n }\n\n /**清空显示的日志内容 */\n public clear() {\n this.count = 0\n this.logArea.innerHTML = ''\n }\n\n // 因为日志区域限制了最大高度,可能会出现滚动条,这里使日志总是滚动到底部\n private scrollToBottom() {\n window.setInterval(() => {\n if (this.toBottom) {\n this.logArea.scrollTop = this.logArea.scrollHeight\n this.toBottom = false\n }\n }, 800)\n }\n\n private export() {\n const data: string[] = []\n\n for (const record of this.record) {\n let html = ''\n if (record.level !== 3 && settings.exportLogNormal) {\n html = record.html\n }\n if (record.level === 3 && settings.exportLogError) {\n html = record.html\n }\n\n // 检查排除的关键字\n if (html && settings.exportLogExclude.length > 0) {\n let checkStr = html\n // 如果含有作品链接,则只检查链接后面的部分。这是为了避免因作品 id 中包含要排除的关键字而导致错误的排除\n if (html.includes('')\n checkStr = array[array.length - 1]\n }\n const index = settings.exportLogExclude.findIndex((val) => {\n return checkStr.includes(val)\n })\n if (index === -1) {\n data.push(html)\n }\n }\n }\n\n if (data.length === 0) {\n return\n }\n\n const fileName = `log-${Utils.replaceUnsafeStr(\n Tools.getPageTitle()\n )}-${Utils.replaceUnsafeStr(\n DateFormat.format(store.crawlCompleteTime, settings.dateFormat)\n )}.html`\n\n const content = `\n\n\n
        \n${data.join('\\n')}\n
        \n\n`\n\n const blob = new Blob([content], {\n type: 'text/html',\n })\n\n const url = URL.createObjectURL(blob)\n\n Utils.downloadFile(url, fileName)\n\n const msg = lang.transl('_导出日志成功')\n log.success(msg)\n toast.success(msg, {\n position: 'topCenter',\n })\n }\n}\n\nconst log = new Log()\nexport { log }\n","import { EVT } from './EVT'\nimport { Colors } from './Colors'\nimport { theme } from './Theme'\nimport { lang } from './Lang'\nimport { bg } from './BG'\nimport { Config } from './Config'\n\ninterface MsgOptional {\n btn?: string\n title?: string\n color?: string\n}\n\nexport interface Msg {\n title?: string\n msg: string\n btn?: string\n color?: string\n}\n\n// 简单的消息框\nclass MsgBox {\n constructor() {\n this.bindEvents()\n }\n\n private readonly typeColor: {\n [key: string]: Colors\n } = {\n success: Colors.textSuccess,\n warning: Colors.textWarning,\n error: Colors.textError,\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.showMsg, (ev: CustomEventInit) => {\n const msg = ev.detail.data as Msg\n this.create(msg)\n })\n }\n\n private onceFlags: string[] = []\n\n /** 在当前标签页中只会显示一次的消息\n */\n public once(\n flag: string,\n msg: string,\n type: 'show' | 'warning' | 'success' | 'error' = 'show',\n arg?: MsgOptional\n ) {\n if (this.onceFlags.includes(flag)) {\n return\n }\n this.onceFlags.push(flag)\n\n switch (type) {\n case 'show':\n this.show(msg, arg)\n break\n case 'warning':\n this.warning(msg, arg)\n break\n case 'success':\n this.success(msg, arg)\n break\n case 'error':\n this.error(msg, arg)\n break\n default:\n this.show(msg, arg)\n break\n }\n }\n\n /**\n * 清除某个 once 标记,使其对应的消息可以再次显示\n */\n public resetOnce(flag: string) {\n const index = this.onceFlags.findIndex((str) => str === flag)\n if (index > -1) {\n this.onceFlags.splice(index)\n }\n }\n\n public show(msg: string, arg?: MsgOptional) {\n this.create(Object.assign({}, arg, { msg: msg }))\n }\n\n public success(msg: string, arg?: MsgOptional) {\n this.create(\n Object.assign({ color: this.typeColor.success }, arg, { msg: msg })\n )\n }\n\n public warning(msg: string, arg?: MsgOptional) {\n this.create(\n Object.assign({ color: this.typeColor.warning }, arg, { msg: msg })\n )\n }\n\n public error(msg: string, arg?: MsgOptional) {\n this.create(\n Object.assign({ color: this.typeColor.error }, arg, { msg: msg })\n )\n }\n\n private create(data: Msg) {\n const wrap = document.createElement('div')\n wrap.classList.add('xz_msg_box')\n if (Config.mobile) {\n wrap.classList.add('mobile')\n }\n\n let colorStyle = ''\n if (data.color) {\n colorStyle = `style=\"color:${data.color}\"`\n }\n\n wrap.innerHTML = `\n

        ${data.title || ''}

        \n

        ${data.msg}

        \n \n `\n\n theme.register(wrap)\n lang.register(wrap)\n\n const btn = wrap.querySelector('.btn') as HTMLButtonElement\n\n if (btn) {\n wrap.addEventListener('click', (ev) => {\n ev.stopPropagation()\n })\n\n btn.addEventListener('click', () => {\n this.remove(wrap)\n })\n\n window.addEventListener(EVT.list.closeCenterPanel, () => {\n this.remove(wrap)\n })\n }\n\n document.body.append(wrap)\n btn.focus()\n\n bg.useBG(wrap)\n }\n\n private remove(el: HTMLDivElement) {\n el && el.parentNode && el.parentNode.removeChild(el)\n }\n}\n\nconst msgBox = new MsgBox()\nexport { msgBox }\n","import { WorkThumbnail } from './WorkThumbnail'\nimport { pageType } from './PageType'\nimport { Tools } from './Tools'\nimport { Config } from './Config'\n\n// 查找小说作品的缩略图,当鼠标进入、移出时等动作触发时执行回调函数\nclass NovelThumbnail extends WorkThumbnail {\n constructor() {\n super()\n\n if (Config.mobile) {\n // 移动端的作品选择器就这一个\n this.selectors = ['.works-item-novel']\n } else {\n this.selectors = [\n 'li[size=\"1\"]>div',\n 'section li>div',\n 'nav>div>div',\n 'div.gtm-novel-work-recommend-link',\n 'section ul>div',\n 'section ul>li',\n 'div._ranking-item',\n 'div[size=\"496\"]',\n 'li',\n ]\n }\n\n this.findThumbnail(document.body)\n this.createObserver(document.body)\n }\n\n protected readonly selectors: string[] = []\n\n protected findThumbnail(parent: HTMLElement) {\n if (!parent.querySelectorAll) {\n return\n }\n // 遍历所有的选择器,为找到的元素绑定事件\n // 注意:有时候一个节点里会含有多种尺寸的缩略图,为了全部查找到它们,必须遍历所有的选择器。\n // 如果在查找到某个选择器之后,不再查找剩余的选择器,就可能会遗漏一部分缩略图。\n // 但是,这有可能会导致事件的重复绑定,所以下载器添加了 dataset.mouseover 标记以减少重复绑定\n for (const selector of this.selectors) {\n // 处理桌面端特殊情况中使用的选择器\n if (!Config.mobile) {\n // 在用户主页只使用指定的选择器,避免其他选择器导致顶部“精选”的小说作品被重复绑定事件\n if (\n pageType.type === pageType.list.UserHome &&\n selector !== 'section ul>li' &&\n selector !== 'li[size=\"1\"]>div'\n ) {\n continue\n }\n\n // 在小说排行榜里只使用 div._ranking-item\n if (\n pageType.type === pageType.list.NovelRanking &&\n selector !== 'div._ranking-item'\n ) {\n continue\n }\n\n // 在小说系列页面里只使用 section ul>li\n if (\n pageType.type === pageType.list.NovelSeries &&\n selector !== 'section ul>li'\n ) {\n continue\n }\n\n // div.gtm-novel-work-recommend-link 只能在小说页面里使用\n if (\n selector === 'div.gtm-novel-work-recommend-link' &&\n pageType.type !== pageType.list.Novel\n ) {\n continue\n }\n }\n\n let elements: HTMLElement[] | NodeListOf =\n parent.querySelectorAll(selector)\n // 处理特殊的动态添加的元素\n // 有些动态添加的元素不能被选择器选中\n\n // 小说系列页面里动态添加的就是 li 元素,并且这个 li 元素必须整个使用,不能再细分\n if (\n pageType.type === pageType.list.NovelSeries &&\n parent.nodeName === 'LI'\n ) {\n elements = [parent]\n }\n\n for (const el of elements) {\n const id = Tools.findWorkIdFromElement(el as HTMLElement, 'novels')\n // 在移动端页面里,此时获取的可能是 '0'\n // 依然绑定\n if (Config.mobile) {\n this.bindEvents(el as HTMLElement, id)\n } else {\n // 在桌面版页面里,只有查找到作品 id 时才会执行回调函数\n if (id) {\n this.bindEvents(el as HTMLElement, id)\n }\n }\n }\n }\n }\n}\n\nconst novelThumbnail = new NovelThumbnail()\nexport { novelThumbnail }\n","import { EVT } from './EVT'\nimport { lang } from './Lang'\n\n// 页面右侧的按钮,点击可以打开中间面板\nclass OpenCenterPanel {\n constructor() {\n this.addBtn()\n this.show()\n this.bindEvents()\n }\n\n private btn: HTMLButtonElement = document.createElement('button')\n\n private addBtn() {\n this.btn = document.createElement('button')\n this.btn.classList.add('rightButton')\n this.btn.id = 'openCenterPanelBtn'\n this.btn.setAttribute('data-xztitle', '_显示控制面板')\n this.btn.innerHTML = `\n \n`\n document.body.append(this.btn)\n lang.register(this.btn)\n }\n\n private bindEvents() {\n // 这里阻止事件冒泡是为了配合 CenterPanel 的“点击页面其他部分隐藏 CenterPanel”的效果\n this.btn.addEventListener('click', (e) => {\n const ev = e || window.event\n ev.stopPropagation()\n EVT.fire('openCenterPanel')\n })\n\n window.addEventListener(EVT.list.centerPanelClosed, () => {\n this.show()\n })\n\n window.addEventListener(EVT.list.centerPanelOpened, () => {\n this.hide()\n })\n }\n\n private show() {\n this.btn.style.display = 'flex'\n }\n\n private hide() {\n this.btn.style.display = 'none'\n }\n}\n\nnew OpenCenterPanel()\n","import { EVT } from './EVT'\nimport { setTimeoutWorker } from './SetTimeoutWorker'\nimport { secretSignal } from './utils/SecretSignal'\n\n// 所有页面类型及对应的数字编号\n// 可以通过 pageType.list 使用\nenum PageName {\n Unsupported = -1,\n Home,\n Artwork,\n UserHome,\n BookmarkLegacy,\n Bookmark,\n ArtworkSearch,\n AreaRanking,\n ArtworkRanking,\n Pixivision,\n BookmarkDetail,\n NewArtworkBookmark,\n Discover,\n NewArtwork,\n Novel,\n NovelSeries,\n NovelSearch,\n NovelRanking,\n NewNovelBookmark,\n NewNovel,\n ArtworkSeries,\n Following,\n Request,\n Unlisted,\n}\n\n// 获取页面类型\nclass PageType {\n constructor() {\n this.type = this.getType()\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.checkTypeChange()\n })\n\n secretSignal.register('ppdtask3', () => {\n this.openAllTestPage()\n })\n }\n\n // 当前页面类型\n public type = PageName.Unsupported\n\n // 所有页面类型\n public readonly list = PageName\n\n private getType(): PageName {\n const url = window.location.href\n const pathname = window.location.pathname\n\n if (\n window.location.hostname === 'www.pixiv.net' &&\n ['/', '/manga', '/novel', '/en/'].includes(pathname)\n ) {\n return PageName.Home\n } else if (\n (pathname.startsWith('/artworks') ||\n pathname.startsWith('/en/artworks')) &&\n /\\/artworks\\/\\d{1,10}/.test(url)\n ) {\n return PageName.Artwork\n } else if (/\\/users\\/\\d+/.test(url) && !url.includes('/bookmarks')) {\n if (\n pathname.includes('/following') ||\n pathname.includes('/mypixiv') ||\n pathname.includes('/followers')\n ) {\n return PageName.Following\n } else {\n return PageName.UserHome\n }\n } else if (pathname.endsWith('bookmark.php')) {\n return PageName.BookmarkLegacy\n } else if (pathname.includes('/bookmarks/')) {\n return PageName.Bookmark\n } else if (url.includes('/tags/')) {\n return pathname.endsWith('/novels')\n ? PageName.NovelSearch\n : PageName.ArtworkSearch\n } else if (pathname === '/ranking_area.php' && location.search !== '') {\n return PageName.AreaRanking\n } else if (pathname === '/ranking.php') {\n return PageName.ArtworkRanking\n } else if (\n url.includes('https://www.pixivision.net') &&\n url.includes('/a/')\n ) {\n return PageName.Pixivision\n } else if (\n (url.includes('/bookmark_add.php?id=') ||\n url.includes('/bookmark_detail.php?illust_id=')) &&\n !pathname.includes('/novel')\n ) {\n return PageName.BookmarkDetail\n } else if (\n url.includes('/bookmark_new_illust.php') ||\n url.includes('/bookmark_new_illust_r18.php')\n ) {\n return PageName.NewArtworkBookmark\n } else if (\n pathname === '/discovery' ||\n pathname.startsWith('/novel/discovery')\n ) {\n return PageName.Discover\n } else if (\n url.includes('/new_illust.php') ||\n url.includes('/new_illust_r18.php')\n ) {\n return PageName.NewArtwork\n } else if (pathname === '/novel/show.php') {\n return PageName.Novel\n } else if (pathname.startsWith('/novel/series/')) {\n return PageName.NovelSeries\n } else if (pathname === '/novel/ranking.php') {\n return PageName.NovelRanking\n } else if (pathname.startsWith('/novel/bookmark_new')) {\n return PageName.NewNovelBookmark\n } else if (pathname.startsWith('/novel/new')) {\n return PageName.NewNovel\n } else if (pathname.startsWith('/user/') && pathname.includes('/series/')) {\n return PageName.ArtworkSeries\n } else if (pathname.startsWith('/request')) {\n return PageName.Request\n } else if (pathname.includes('/unlisted')) {\n return PageName.Unlisted\n } else {\n // 没有匹配到可用的页面类型\n return PageName.Unsupported\n }\n }\n\n // 页面切换时,检查页面类型是否变化\n private checkTypeChange() {\n const old = this.type\n this.type = this.getType()\n if (this.type !== old) {\n EVT.fire('pageSwitchedTypeChange', this.type)\n } else {\n EVT.fire('pageSwitchedTypeNotChange', this.type)\n }\n }\n\n private async openAllTestPage() {\n // 列出要打开的测试页面。不包含已经不存在的页面类型和 Pixivision\n const testPageList: { type: number; url: string }[] = [\n {\n type: PageName.Unsupported,\n url: 'https://www.pixiv.net/stacc?mode=unify',\n },\n {\n type: PageName.Home,\n url: 'https://www.pixiv.net',\n },\n {\n type: PageName.Artwork,\n url: 'https://www.pixiv.net/artworks/108271116',\n },\n {\n type: PageName.UserHome,\n url: 'https://www.pixiv.net/users/89469319',\n },\n {\n type: PageName.Bookmark,\n url: 'https://www.pixiv.net/users/96661459/bookmarks/artworks',\n },\n {\n type: PageName.ArtworkSearch,\n url: 'https://www.pixiv.net/tags/%E5%8E%9F%E7%A5%9E/artworks?s_mode=s_tag',\n },\n {\n type: PageName.AreaRanking,\n url: 'https://www.pixiv.net/ranking_area.php?type=state&no=0',\n },\n {\n type: PageName.ArtworkRanking,\n url: 'https://www.pixiv.net/ranking.php',\n },\n {\n type: PageName.NewArtworkBookmark,\n url: 'https://www.pixiv.net/bookmark_new_illust.php',\n },\n {\n type: PageName.Discover,\n url: 'https://www.pixiv.net/discovery',\n },\n {\n type: PageName.NewArtwork,\n url: 'https://www.pixiv.net/new_illust.php',\n },\n {\n type: PageName.ArtworkSeries,\n url: 'https://www.pixiv.net/user/3698796/series/61267',\n },\n {\n type: PageName.Following,\n url: 'https://www.pixiv.net/users/96661459/following',\n },\n {\n type: PageName.Request,\n url: 'https://www.pixiv.net/request',\n },\n {\n type: PageName.Unlisted,\n url: 'https://www.pixiv.net/artworks/unlisted/eE3fTYaROT9IsZmep386',\n },\n {\n type: PageName.Novel,\n url: 'https://www.pixiv.net/novel/show.php?id=12771688',\n },\n {\n type: PageName.NovelSeries,\n url: 'https://www.pixiv.net/novel/series/1090654',\n },\n {\n type: PageName.NovelSearch,\n url: 'https://www.pixiv.net/tags/%E7%99%BE%E5%90%88/novels',\n },\n {\n type: PageName.NovelRanking,\n url: 'https://www.pixiv.net/novel/ranking.php?mode=daily',\n },\n {\n type: PageName.NewNovelBookmark,\n url: 'https://www.pixiv.net/novel/bookmark_new.php',\n },\n {\n type: PageName.NewNovel,\n url: 'https://www.pixiv.net/novel/new.php',\n },\n ]\n\n const wait = (): Promise => {\n return new Promise((resolve) => {\n setTimeoutWorker.set(() => {\n resolve()\n }, 500)\n })\n }\n\n for (const item of testPageList) {\n window.open(item.url)\n await wait()\n }\n }\n}\n\nconst pageType = new PageType()\n\nexport { pageType }\n","import { UgoiraMetaBody } from './crawl/CrawlResult'\nimport { API } from './API'\nimport { log } from './Log'\nimport { settings } from './setting/Settings'\nimport { Tools } from './Tools'\n\n// 预览动图\nclass PreviewUgoira {\n constructor(\n id: string | number,\n canvasWrap: HTMLElement,\n prevSize: 'original' | 'regular',\n wrapWidth?: number,\n wrapHeight?: number\n ) {\n if (!settings.previewUgoira) {\n return\n }\n this.id = id\n this.canvasWrap = canvasWrap\n this.prevSize = prevSize\n wrapWidth && (this.wrapWidth = wrapWidth)\n wrapHeight && (this.wrapHeight = wrapHeight)\n\n this.start()\n }\n\n /**作品 id */\n private id!: string | number\n /**这个动图的 meta 数据 */\n private meta!: UgoiraMetaBody\n private prevSize: 'original' | 'regular' = 'regular'\n /**要使用的动图压缩包的 URL */\n private zipURL!: string\n /**完整的 zip 文件的字节数 */\n private zipLength = 0\n /** 用固定的字节数分割出多个文件片段 */\n private readonly rangeSize = 500000\n /**保存每个文件片段的请求头的值\n * 字符串格式如 'bytes=0-499999'\n */\n private rangeList: string[] = []\n /**把分段加载的 zip 文件合并,保存到这个容器 */\n private zipContent: ArrayBuffer = new ArrayBuffer(0)\n /**所有文件片段是否都加载完毕 */\n private loadend = false\n /**每个 jpg 文件内容的开始位置 */\n private jpgContentIndexList: number[] = []\n /**每个 jpg 文件的数据。按照图片在压缩包里的顺序,储存对应的数据 */\n private jpgFileList: {\n img: HTMLImageElement\n delay: number\n }[] = []\n\n // jpg 文件名的长度固定为 10 个字节 000000.jpg\n private readonly jpgNameLength = 10\n\n private canvasWrap!: HTMLElement\n private wrapWidth = 0\n private wrapHeight = 0\n private canvas = document.createElement('canvas')\n private canvasCon = this.canvas.getContext('2d')\n private canvasIsAppend = false\n private width = 0\n private height = 0\n\n private destroyed = false\n\n private async start() {\n // 获取这个动图的 meta 数据\n this.meta = await this.getMeta(this.id)\n\n // 目前只支持提取 jpg 图片\n if (this.meta.mime_type !== 'image/jpeg') {\n const msg =\n 'Preview ugoira error: mime type unsupport: ' + this.meta.mime_type\n log.warning(msg)\n console.warn(msg)\n return\n }\n\n // 设置要使用的 URL\n if (this.prevSize === 'regular') {\n this.zipURL = this.meta.src\n } else {\n this.zipURL = this.meta.originalSrc\n }\n\n // 获取动图体积\n this.zipLength = await this.getFileLength()\n\n // 生成区间\n this.rangeList = this.setRangeList(this.zipLength, this.rangeSize)\n\n for (const range of this.rangeList) {\n // 加载文件片段\n const buff = await this.loadRangeFileAsBuff(range)\n\n if (this.destroyed) {\n return\n }\n\n // 把这个文件片段追加到文件容器里\n this.zipContent = this.appendBuff(this.zipContent, buff)\n\n // 判断整个压缩包是否全部加载完毕\n this.loadend = this.zipContent.byteLength === this.zipLength\n\n // 提取出每个 jpg 图片的数据\n // 由于我之前使用的 zip 库无法解析不完整的 zip 文件,所以我需要自己提取 jpg 图片的数据\n this.jpgContentIndexList = Tools.getJPGContentIndex(\n this.zipContent,\n this.jpgContentIndexList\n )\n this.extractJPGData(this.zipContent, this.jpgContentIndexList)\n\n // 设置画布的宽高\n if (this.jpgFileList.length > 0 && this.width === 0) {\n // 画布的宽高不能超过外部 wrap 的宽高\n // 本来我是打算从 wrap 宽度和动图宽度中取比较小的值\n // const size = await this.getImageSize(this.jpgFileList[0].blobURL)\n // this.width = Math.min(size.width, wrapWidth)\n // this.height = Math.min(size.height, wrapHeight)\n\n // 但是当预览作品的尺寸为“普通”时,动图的尺寸可能比 wrap 的尺寸小\n // 因为 wrap 显示的普通尺寸是 1200px,但是动图的普通尺寸是 600px\n // 所以我直接让画布使用 wrap 的尺寸了。如果动图比 wrap 小,就会放大到 wrap 的尺寸\n this.width =\n this.wrapWidth || Number.parseInt(this.canvasWrap.style.width)\n this.height =\n this.wrapHeight || Number.parseInt(this.canvasWrap.style.height)\n }\n\n // 检查是否应该开始播放动画\n // 如果动画的图片总量达到了 30 帧,则等到至少加载了 10 帧之后再开始播放\n // 这样可以减少在刚开始播放时,因可用帧数太少而导致画面看起来抖动(快速循环)的诡异情况\n if (this.meta.frames.length >= 30) {\n this.jpgFileList.length >= 10 && this.startPlay()\n } else if (this.meta.frames.length >= 20) {\n this.jpgFileList.length >= 5 && this.startPlay()\n } else if (this.meta.frames.length >= 10) {\n this.jpgFileList.length >= 4 && this.startPlay()\n } else {\n this.jpgFileList.length >= 1 && this.startPlay()\n }\n }\n\n // 保存整个压缩包(debug 用)\n // const newFile = new Blob([this.zipContent])\n // const url = URL.createObjectURL(newFile)\n // Utils.downloadFile(url, `${this.id}.zip`)\n }\n\n /**获取该作品的 meta 数据 */\n private getMeta(id: string | number): Promise {\n return new Promise(async (resolve, reject) => {\n const meta = await API.getUgoiraMeta(id as string)\n if (meta.error) {\n throw reject(meta.message)\n }\n\n resolve(meta.body)\n })\n }\n\n /** 发送 HEAD 请求,获取 zip 压缩包的体积 */\n private getFileLength(): Promise {\n return new Promise(async (resolve, reject) => {\n const response = await fetch(this.zipURL, {\n method: 'head',\n credentials: 'same-origin',\n })\n\n const length = response.headers.get('content-length')\n if (!length) {\n throw reject('getFileLength error: get length failed')\n }\n\n resolve(Number.parseInt(length))\n })\n }\n\n /** 根据 zip 文件的体积分割出数个区间,生成对应的标记文本 */\n private setRangeList(total: number, rangeSize: number) {\n const result: string[] = []\n\n // total 是 length,但 start 和 end 是下标\n let start = 0\n let end = 0\n const max = total - 1\n while (end < max) {\n if (start > 0) {\n start++\n }\n\n end = start + rangeSize - 1\n if (end > max) {\n end = max\n }\n const str = `bytes=${start}-${end}`\n\n result.push(str)\n\n start = end\n }\n\n return result\n }\n\n private loadRangeFileAsBuff(range: string): Promise {\n return new Promise(async (resolve, reject) => {\n const res = await fetch(this.zipURL, {\n method: 'get',\n headers: {\n range: range,\n },\n })\n const buff = await res.arrayBuffer()\n resolve(buff)\n })\n }\n\n /**把 ArrayBuffer 追加到已存在的 ArrayBuffer 容器里 */\n private appendBuff(target: ArrayBuffer, newBuff: ArrayBuffer) {\n const totalLength = target.byteLength + newBuff.byteLength\n const uint8 = new Uint8Array(totalLength)\n uint8.set(new Uint8Array(target))\n uint8.set(new Uint8Array(newBuff), target.byteLength)\n return uint8.buffer\n }\n\n /** 从 zip 文件里提取出所有 jpg 图片的数据 */\n private extractJPGData(file: ArrayBuffer, indexList: number[]) {\n indexList.forEach((number, index, array) => {\n // 如果这是最后一个标记,并且压缩包没有整个加载完成,则不提取最后一个文件的数据\n // 因为此时最后一个文件的数据很可能是破损的\n if (index === array.length - 1 && !this.loadend) {\n return\n }\n\n // 如果这张图片没有被保存,才会提取它\n // 如果已经有这个图片的数据,就不再提取它,以提高性能\n if (this.jpgFileList[index] === undefined) {\n // 确定要提取的文件的起始位置\n // 从当前文件名之后开始\n const start = number\n // 截止下一个文件名之前\n // 删除不需要的数据:\n // 30 字节的是 zip 文件的数据,虽然没有实际影响,但还是去掉\n // 10 字节的是下一个 jpg 的文件名\n let end = array[index + 1] - 30 - this.jpgNameLength\n if (index === array.length - 1) {\n // 如果是最后一个 jpg 文件,则截止到 zip 文件的结尾\n // 这导致它会包含 zip 的目录数据,但是不会影响图片的显示\n end = file.byteLength\n }\n // slice 方法的 end 不会包含在结果里\n const buffer = file.slice(start, end)\n const blob = new Blob([buffer], {\n type: 'image/jpeg',\n })\n const url = URL.createObjectURL(blob)\n\n // 下载这张图片(debug 用)\n // Utils.downloadFile(url, `${index}.jpg`)\n\n const img = new Image(this.width, this.height)\n img.src = url\n this.jpgFileList[index] = {\n img: img,\n delay: this.meta.frames[index].delay,\n }\n }\n })\n }\n\n private startPlay() {\n if (this.jpgFileList.length > 0 && !this.canvasIsAppend) {\n this.addCanvas()\n this.canvasIsAppend = true\n this.animationID = window.requestAnimationFrame(this.play)\n }\n }\n\n private addCanvas() {\n const oldCanvas = this.canvasWrap.querySelector('canvas')\n if (oldCanvas) {\n oldCanvas.remove()\n }\n this.canvas.style.display = 'none'\n this.canvasWrap.append(this.canvas)\n this.canvas.width = this.width\n this.canvas.height = this.height\n }\n\n private playIndex = 0\n private playDelay = 0\n private lastPlayTime = 0\n private animationID = 0\n private play = (timestamp: number) => {\n if (this.lastPlayTime === 0) {\n this.lastPlayTime = timestamp\n }\n\n // 计算自上次执行之后,是否到了该执行下一次动画的时间\n if (timestamp - this.lastPlayTime >= this.playDelay) {\n // 如果要播放的图片尚未加载完成,则等到下一次动画帧再执行\n const img = this.jpgFileList[this.playIndex].img\n if (!img.complete) {\n return (this.animationID = window.requestAnimationFrame(this.play))\n }\n\n this.canvasCon!.drawImage(img, 0, 0, this.width, this.height)\n\n // 绘制出第一张图片之后,才能显示 canvas 并隐藏之前的 img\n // 如果过早的隐藏 img 并显示 canvas,会导致闪烁(因为 img 先隐藏,此时 canvas 还没有绘制图像)\n if (this.playIndex === 0) {\n this.canvas.style.display = 'inline-block'\n const img = this.canvasWrap.querySelector('img')\n if (img) {\n img.style.display = 'none'\n }\n }\n\n this.playDelay = this.jpgFileList[this.playIndex].delay\n this.playIndex++\n if (this.playIndex > this.jpgFileList.length - 1) {\n this.playIndex = 0\n }\n\n // 记录最后一次执行动画的时间\n this.lastPlayTime = timestamp\n }\n\n this.animationID = window.requestAnimationFrame(this.play)\n }\n\n public setSize(width: number, height: number) {\n // 当用户移动鼠标时,ShowOriginSizeImage 会频繁触发 setSize\n // 如果频繁的重设尺寸,会导致动画闪烁。所以判断只在有必要时才重设尺寸\n if (width === this.width && height === this.height) {\n return\n }\n\n this.width = width\n this.height = height\n this.canvas.width = this.width\n this.canvas.height = this.height\n }\n\n public destroy() {\n this.destroyed = true\n window.cancelAnimationFrame(this.animationID)\n this.canvas.remove()\n this.zipContent = new ArrayBuffer(0)\n this.jpgFileList = []\n this.jpgContentIndexList = []\n }\n}\n\nexport { PreviewUgoira }\n","import { API } from './API'\nimport { ArtworkData } from './crawl/CrawlResult'\nimport { EVT } from './EVT'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { settings, setSetting } from './setting/Settings'\nimport { showOriginSizeImage } from './ShowOriginSizeImage'\nimport { cacheWorkData } from './store/CacheWorkData'\nimport { states } from './store/States'\nimport { Utils } from './utils/Utils'\nimport { PreviewUgoira } from './PreviewUgoira'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { Colors } from './Colors'\nimport { DateFormat } from './utils/DateFormat'\nimport { showHelp } from './ShowHelp'\nimport { store } from './store/Store'\nimport { Config } from './Config'\nimport { previewWorkDetailInfo } from './PreviewWorkDetailInfo'\nimport { Tools } from './Tools'\nimport { bookmark } from './Bookmark'\nimport { pageType } from './PageType'\n\n// 鼠标停留在作品的缩略图上时,预览作品\nclass PreviewWork {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n this.createElements()\n this.bindEvents()\n }\n\n // 预览作品的容器的元素\n private wrapId = 'previewWorkWrap'\n private wrap!: HTMLElement\n private img = document.createElement('img')\n private border = 4 // border 占据的空间\n\n private tipId = 'previewWorkTip'\n private tip!: HTMLElement\n private readonly tipHeight = 22\n\n // 保存当前鼠标经过的缩略图的数据\n private workId = ''\n private workEL?: HTMLElement\n private workData?: ArtworkData\n\n // 显示作品中的第几张图片\n private index = 0\n\n // 延迟显示预览区域的定时器\n // 鼠标进入缩略图时,本模块会立即请求作品数据,但在请求完成后不会立即加载图片,这是为了避免浪费网络资源\n private delayShowTimer: number | undefined = undefined\n\n // 延迟隐藏预览区域的定时器\n private delayHiddenTimer: number | undefined = undefined\n\n // 当用户点击预览图使预览图隐藏时,不再显示这个作品的预览图(切换作品可以解除限制)\n private dontShowAgain = false\n\n // 是否允许预览区域遮挡作品缩略图\n private allowOverThumb = true\n\n // 当前预览图是否遮挡了作品缩略图\n private overThumb = false\n\n private previewUgoira?: PreviewUgoira\n\n private _show = false\n\n private get show() {\n return this._show\n }\n\n private set show(val: boolean) {\n if (val) {\n this.workData = cacheWorkData.get(this.workId)\n // 如果保存的作品数据不是最后一个鼠标经过的作品,可能是请求尚未完成,此时延长等待时间\n if (!this.workData || this.workData.body.id !== this.workId) {\n this.readyShow()\n } else {\n // 显示作品的详细信息\n if (settings.PreviewWorkDetailInfo) {\n EVT.fire('showPreviewWorkDetailPanel', this.workData)\n }\n\n this.sendUrls()\n if (settings.PreviewWork) {\n this._show = true\n showOriginSizeImage.hide()\n this.showWrap()\n window.clearTimeout(this.delayHiddenTimer)\n if (!Config.mobile) {\n showHelp.show(\n 'tipPreviewWork',\n lang.transl('_预览作品的快捷键说明')\n )\n }\n }\n }\n } else {\n // 隐藏时重置一些变量\n window.clearTimeout(this.delayShowTimer)\n window.clearTimeout(this.delayHiddenTimer)\n this.overThumb = false\n this._show = false\n this.dontShowAgain = false\n this.wrap.style.display = 'none'\n // 隐藏 wrap 时,把 img 的 src 设置为空\n // 这样图片会停止加载,避免浪费网络资源\n this.img.src = ''\n\n // 销毁预览动图的模块\n if (this.previewUgoira) {\n this.previewUgoira.destroy()\n this.previewUgoira = null as unknown as PreviewUgoira\n }\n\n EVT.fire('previewEnd')\n }\n }\n\n private createElements() {\n this.wrap = document.createElement('div')\n this.wrap.id = this.wrapId\n\n this.tip = document.createElement('div')\n this.tip.id = this.tipId\n this.wrap.appendChild(this.tip)\n\n document.body.appendChild(this.wrap)\n }\n\n private bindEvents() {\n artworkThumbnail.onEnter((el: HTMLElement, id: string) => {\n if (this.dontShowAgain) {\n return\n }\n // 当鼠标进入到不同作品时\n // 隐藏之前的预览图\n // 重置 index\n if (this.workId !== id) {\n this.show = false\n this.index = 0\n }\n this.workId = id\n this.workEL = el\n if (!cacheWorkData.has(id)) {\n // 如果在缓存中没有找到这个作品的数据,则发起请求\n this.fetchWorkData()\n } else {\n this.workData = cacheWorkData.get(id)!\n }\n\n this.readyShow()\n\n el.addEventListener('mousewheel', this.onWheelScroll)\n })\n\n artworkThumbnail.onLeave((el: HTMLElement) => {\n // 当鼠标离开作品缩略图时,有可能是因为显示了作品详细信息的面板。此时让预览图保持显示\n if (previewWorkDetailInfo.show) {\n return\n }\n\n if (this.overThumb) {\n // 如果预览图遮挡了作品缩略图,就需要延迟隐藏预览图。\n // 因为预览图显示之后,鼠标可能处于预览图上,这会触发此事件。\n // 如果不延迟隐藏,预览图就会马上消失,无法查看\n this.delayHiddenTimer = window.setTimeout(() => {\n this.show = false\n el.removeEventListener('mousewheel', this.onWheelScroll)\n }, 100)\n } else {\n this.show = false\n el.removeEventListener('mousewheel', this.onWheelScroll)\n }\n })\n\n window.addEventListener(\n 'keydown',\n (ev) => {\n // 当用户按下 Ctrl 时,不启用下载器的热键,以避免快捷键冲突或重复生效\n // 例如,预览作品时按 C 可以下载,但是当用户按下 Ctrl + C 时其实是想复制,此时不应该下载\n if (ev.ctrlKey) {\n return\n }\n\n // 当用户按下 Alt 时,只响应 P 键\n if (ev.altKey) {\n // 可以使用 Alt + P 快捷键来启用/禁用此功能\n if (ev.code === 'KeyP') {\n setSetting('PreviewWork', !settings.PreviewWork)\n // 显示提示信息\n if (settings.PreviewWork) {\n const msg = 'Preview works - On'\n toast.success(msg)\n } else {\n const msg = 'Preview works - Off'\n toast.warning(msg)\n }\n } else {\n return\n }\n }\n\n // 使用 Esc 键关闭当前预览\n if (ev.code === 'Escape' && this.show) {\n this.show = false\n // 并且不再显示这个作品的预览图,否则如果鼠标依然位于这个作品上,就会马上再次显示缩略图了\n // 当鼠标移出这个作品的缩略图之后会取消此限制\n this.dontShowAgain = true\n }\n\n // 翻页时关闭当前预览\n // 这是为了处理边界情况。常见的触发方式是预览一个横图作品,且鼠标处于预览图之上\n // 此时翻页的话,虽然作品区域已经变化,但由于鼠标一直停留在预览图上,预览图就不会消失\n // 此时需要强制关闭预览\n if (ev.code === 'PageUp' || ev.code === 'PageDown') {\n if (this.show) {\n this.show = false\n }\n }\n\n // 预览作品时,可以使用快捷键 D 下载这个作品\n if (ev.code === 'KeyD' && this.show) {\n EVT.fire('crawlIdList', [\n {\n type: 'illusts',\n id: this.workData!.body.id,\n },\n ])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n position: 'center',\n })\n }\n\n // 预览作品时,可以使用快捷键 C 仅下载当前显示的图片\n if (ev.code === 'KeyC' && this.show) {\n // 在作品页面内按 C 时,Pixiv 会把焦点定位到评论输入框里,这里阻止此行为\n ev.stopPropagation()\n\n if (this.workData!.body.pageCount > 1) {\n store.setDownloadOnlyPart(Number.parseInt(this.workData!.body.id), [\n this.index,\n ])\n }\n\n EVT.fire('crawlIdList', [\n {\n type: 'illusts',\n id: this.workData!.body.id,\n },\n ])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n position: 'center',\n })\n }\n\n // 预览作品时,可以使用快捷键 B 收藏这个作品\n if (ev.code === 'KeyB' && this.show) {\n // 阻止 Pixiv 对按下 B 键的行为\n ev.stopPropagation()\n this.addBookmark()\n }\n\n // 预览作品时,可以使用方向键切换图片,也可以使用空格键切换到下一张图片\n if (\n ev.code === 'ArrowLeft' ||\n ev.code === 'ArrowRight' ||\n ev.code === 'ArrowUp' ||\n ev.code === 'ArrowDown' ||\n ev.code === 'Space'\n ) {\n if (this.show && settings.swicthImageByKeyboard) {\n // 阻止事件冒泡和默认事件\n // 阻止事件冒泡用来阻止 Pixiv 使用左右键来切换作品的功能\n // 阻止默认事件用来阻止上下键和空格键滚动页面的功能\n ev.stopPropagation()\n ev.preventDefault()\n const prev = ev.code === 'ArrowLeft' || ev.code === 'ArrowUp'\n this.swicthImage(prev ? 'prev' : 'next')\n }\n }\n },\n true\n )\n\n const hiddenEvtList = [\n EVT.list.pageSwitch,\n EVT.list.centerPanelOpened,\n EVT.list.showOriginSizeImage,\n ]\n hiddenEvtList.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.show = false\n })\n })\n\n // 当作品的详情面板隐藏时,鼠标位置可能在作品缩略图之外。所以此时需要检测鼠标位置,决定是否需要隐藏预览图\n window.addEventListener(\n EVT.list.PreviewWorkDetailPanelClosed,\n (ev: CustomEventInit) => {\n const data = ev.detail?.data as {\n x: number\n y: number\n }\n\n if (this.mouseInElementArea(this.workEL, data.x, data.y) === false) {\n this.show = false\n }\n }\n )\n\n this.wrap.addEventListener('mouseenter', () => {\n window.clearTimeout(this.delayHiddenTimer)\n })\n\n this.wrap.addEventListener('mousemove', (ev) => {\n // 鼠标在预览图上移动出缩略图区域时,隐藏预览图\n if (\n this.mouseInElementArea(this.workEL, ev.clientX, ev.clientY) === false\n ) {\n this.show = false\n }\n })\n\n this.wrap.addEventListener('click', (ev) => {\n this.show = false\n // 点击预览图使预览图消失时,如果鼠标仍处于缩略图区域内,则不再显示这个作品的预览图\n // 当鼠标移出这个作品的缩略图之后会取消此限制\n if (this.mouseInElementArea(this.workEL, ev.clientX, ev.clientY)) {\n this.dontShowAgain = true\n }\n })\n\n this.wrap.addEventListener('mousewheel', (ev) => {\n this.overThumb && this.onWheelScroll(ev)\n })\n\n window.addEventListener(\n EVT.list.wheelScrollSwitchPreviewImage,\n (ev: CustomEventInit) => {\n const mouseEvent = ev.detail.data\n mouseEvent && this.onWheelScroll(mouseEvent)\n }\n )\n }\n\n // 判断鼠标是否处于某个元素的范围内\n private mouseInElementArea(el: Element | undefined, x: number, y: number) {\n if (!el) {\n return false\n }\n const rect = el.getBoundingClientRect()\n return x > rect.left && x < rect.right && y > rect.top && y < rect.bottom\n }\n\n private preload() {\n // 如果下载器正在下载文件,则不预加载\n if (this.show && !states.downloading) {\n const count = this.workData!.body.pageCount\n if (count > this.index + 1) {\n let url = this.workData!.body.urls[settings.prevWorkSize]\n url = url.replace('p0', `p${this.index + 1}`)\n let img = new Image()\n // 在预加载过程中,如果查看的图片变化了,或者不显示预览区域了,则立即中断预加载\n const nowIndex = this.index\n const timer = window.setInterval(() => {\n if (this.index !== nowIndex || !this.show) {\n window.clearInterval(timer)\n img && (img.src = '')\n img = null as any\n }\n }, 50)\n img.onload = () => {\n window.clearInterval(timer)\n img && (img = null as any)\n }\n img.src = url\n }\n }\n }\n\n private wheelEvent?: WheelEvent\n\n // 当鼠标滚轮滚动时,切换显示的图片\n // 此事件必须使用节流,因为有时候鼠标滚轮短暂的滚动一下就会触发 2 次 mousewheel 事件\n private swicthImageByMouse = Utils.throttle(() => {\n const up = this.wheelEvent!.deltaY < 0\n this.swicthImage(up ? 'prev' : 'next')\n }, 100)\n\n private swicthImage(operate: 'prev' | 'next') {\n const count = this.workData!.body.pageCount\n if (operate === 'prev') {\n if (this.index > 0) {\n this.index--\n } else {\n this.index = count - 1\n }\n } else {\n if (this.index < count - 1) {\n this.index++\n } else {\n this.index = 0\n }\n }\n\n this.showWrap()\n }\n\n private onWheelScroll = (ev: Event) => {\n if (\n this.show &&\n settings.wheelScrollSwitchImageOnPreviewWork &&\n this.workData!.body.pageCount > 1\n ) {\n ev.preventDefault()\n this.wheelEvent = ev as WheelEvent\n this.swicthImageByMouse()\n }\n }\n\n private async fetchWorkData() {\n const data = await API.getArtworkData(this.workId)\n cacheWorkData.set(data)\n }\n\n private async addBookmark() {\n if (this.workData?.body.illustId === undefined) {\n return\n }\n\n toast.show(lang.transl('_收藏'), {\n bgColor: Colors.bgBlue,\n })\n\n const res = await bookmark.add(\n this.workData.body.illustId,\n 'illusts',\n Tools.extractTags(this.workData!)\n )\n\n if (res === 200) {\n toast.success(lang.transl('_已收藏'))\n }\n\n // 将作品缩略图上的收藏按钮变成红色\n const allSVG = this.workEL!.querySelectorAll('svg')\n if (allSVG.length > 0) {\n // 如果有多个 svg,一般最后一个是收藏按钮,但有些特殊情况是第一个\n let useSVG = allSVG[allSVG.length - 1]\n if (pageType.type === pageType.list.Request) {\n useSVG = allSVG[0]\n }\n\n useSVG.style.color = 'rgb(255, 64, 96)'\n const allPath = useSVG.querySelectorAll('path')\n for (const path of allPath) {\n path.style.fill = 'currentcolor'\n }\n }\n\n // 排行榜页面的收藏按钮\n const btn = this.workEL!.querySelector('._one-click-bookmark')\n if (btn) {\n btn.classList.add('on')\n }\n }\n\n private readyShow() {\n this.delayShowTimer = window.setTimeout(() => {\n this.show = true\n }, settings.previewWorkWait)\n }\n\n // 通过 img 元素加载图片,获取图片的原始尺寸\n private async getImageSize(url: string): Promise<{\n width: number\n height: number\n available: boolean\n }> {\n return new Promise((resolve) => {\n // 鼠标滚轮滚动时,此方法可能会在短时间内触发多次。通过 index 判断当前请求是否应该继续\n let testImg = new Image()\n testImg.src = url\n const bindIndex = this.index\n const timer = window.setInterval(() => {\n if (this.index !== bindIndex) {\n // 如果要显示的图片发生了变化,则立即停止加载当前图片,避免浪费网络流量\n window.clearInterval(timer)\n testImg.src = ''\n testImg = null as any\n // 本来这里应该 reject 的,但是那样就需要在 await 的地方处理这个错误\n // 我不想处理错误,所以用 available 标记来偷懒\n return resolve({\n width: 0,\n height: 0,\n available: false,\n })\n } else {\n // 如果获取到了图片的宽高,也立即停止加载当前图片,并返回结果\n if (testImg.naturalWidth > 0) {\n const width = testImg.naturalWidth\n const height = testImg.naturalHeight\n window.clearInterval(timer)\n testImg.src = ''\n testImg = null as any\n return resolve({\n width,\n height,\n available: true,\n })\n }\n }\n }, 50)\n })\n }\n\n // 显示预览 wrap\n private async showWrap() {\n if (!this.workEL || !this.workData) {\n return\n }\n\n const url = this.replaceUrl(this.workData!.body.urls[settings.prevWorkSize])\n const size = await this.getImageSize(url)\n\n // getImageSize 可能需要花费比较长的时间。有时候在 getImageSize 之前是要显示 wrap 的,但是之后鼠标移出,需要隐藏 wrap,再之后 getImageSize 才执行完毕。\n // 所以此时需要再次判断是否要显示 wrap。如果不再次判断的话,可能有时候需要隐藏预览图,但是预览图却显示出来了\n if (!size.available || !this.show) {\n return\n }\n\n const w = size.width\n const h = size.height\n const cfg = {\n width: w,\n height: h,\n left: 0,\n top: 0,\n }\n\n // 每次显示图片时,都销毁旧的 img 元素,然后重新生成一个 img 元素,而不是修改之前的 img 元素的 src\n // 因为修改 src 的方式存在严重的问题:虽然 src 已经变化了,但是 img 元素显示的还是上一张图片(不管上一张图片是否加载完成)。等到新的图片完全加载完成后,img 才会变化。\n // 这会导致一些问题:\n // 1. 在新图片的加载过程中,用户无法看到加载进度。只能等到图片加载完成后瞬间完全显示出来。\n // 2. 在新图片的加载过程中,图片的宽高是新图片的宽高,但是显示的内容还是旧的图片。如果这两张图片的尺寸不一致,此时显示的(旧)图片看上去是变形的\n // 只有生成新的 img 元素,才能解决上面的问题\n this.img.src = ''\n this.img.remove()\n this.img = document.createElement('img')\n // 当图片加载完成时,预加载下一张图片\n this.img.onload = () => this.preload()\n this.img.src = url\n this.wrap.appendChild(this.img)\n\n // 1. 计算图片显示的尺寸\n const rect = this.workEL.getBoundingClientRect()\n\n // 不显示摘要信息时,也不显示边框,所以此时把 border 设置为 0\n this.border = settings.showPreviewWorkTip ? 4 : 0\n\n // 计算各个可用区域的尺寸,提前减去了 border、tip 等元素占据的空间\n const innerWidth = window.innerWidth - 17\n const leftSpace = rect.left - this.border\n const rightSpace = innerWidth - rect.right - this.border\n const xSpace = Math.max(leftSpace, rightSpace)\n\n const tipHeight = settings.showPreviewWorkTip ? this.tipHeight : 0\n const scrollBarHeight =\n window.innerHeight - document.documentElement.clientHeight\n const ySpace =\n window.innerHeight - scrollBarHeight - this.border - tipHeight\n\n // 宽高从图片宽高、可用区域的宽高中取最小值,使图片不会超出可视区域外\n // 竖图\n if (w < h) {\n cfg.height = Math.min(ySpace, h)\n cfg.width = (cfg.height / h) * w\n // 此时宽度可能会超过水平方向上的可用区域,则需要再次调整宽高\n if (cfg.width > xSpace) {\n cfg.height = (xSpace / cfg.width) * cfg.height\n cfg.width = xSpace\n }\n } else if (w > h) {\n // 横图\n if (this.allowOverThumb) {\n // 如果允许预览图覆盖在作品缩略图上,则预览图的最大宽度可以等于视口宽度\n if (w > innerWidth) {\n cfg.width = innerWidth\n }\n } else {\n // 否则,预览图的宽度不可以超过图片两侧的空白区域的宽度\n cfg.width = Math.min(xSpace, w)\n }\n\n cfg.height = (cfg.width / w) * h\n // 此时高度可能会超过垂直方向上的可用区域,则需要再次调整宽高\n if (cfg.height > ySpace) {\n cfg.width = (ySpace / cfg.height) * cfg.width\n cfg.height = ySpace\n }\n } else {\n // 正方形图片\n cfg.height = Math.min(ySpace, xSpace, h)\n cfg.width = cfg.height\n }\n\n // 上面计算的高度是图片的高度,现在计算 wrap 的宽高,需要加上内部其他元素的高度\n cfg.height = cfg.height + tipHeight\n\n // 2. 计算位置\n // 在页面可视区域内,比较缩略图左侧和右侧空间,把 wrap 显示在空间比较大的那一侧\n if (leftSpace >= rightSpace) {\n // 左侧空间大\n // 先让预览图的右侧贴着图片左侧边缘显示\n cfg.left = rect.left - cfg.width - this.border + window.scrollX\n // 如果预览图超出可视范围,则向右移动\n if (cfg.left < 0) {\n this.overThumb = true\n cfg.left = 0\n }\n } else {\n // 右侧空间大\n // 先让预览图的左侧贴着图片右侧边缘显示\n cfg.left = rect.right + window.scrollX\n // 如果预览图超出可视范围,则向左移动\n if (cfg.width > rightSpace) {\n this.overThumb = true\n cfg.left = cfg.left - (cfg.left + cfg.width - innerWidth) - this.border\n }\n }\n\n // 然后设置 top\n // 让 wrap 和缩略图在垂直方向上居中对齐\n cfg.top = rect.top\n const wrapHalfHeight = (cfg.height + this.border) / 2\n const workHalfHeight = rect.height / 2\n cfg.top = cfg.top - wrapHalfHeight + workHalfHeight\n\n // 检查 wrap 顶端是否超出了窗口可视区域\n if (cfg.top < 0) {\n cfg.top = 0\n }\n\n // 检查 wrap 底部是否超出了窗口可视区域\n const bottomOver = cfg.top + cfg.height + this.border - window.innerHeight\n if (bottomOver > 0) {\n // 如果底部超出了窗口可视区域,则计算顶部是否还有可用空间\n if (cfg.top > 0) {\n // 如果顶部还有空间可用,就尽量向上移动,但不会导致顶端超出可视区域\n cfg.top = cfg.top - Math.min(bottomOver, cfg.top) - scrollBarHeight\n }\n }\n\n // 3. 设置顶部提示区域的内容\n if (settings.showPreviewWorkTip) {\n const text: string[] = []\n const body = this.workData.body\n\n if (body.aiType === 2) {\n text.push('AI')\n }\n\n if (body.pageCount > 1) {\n text.push(`${this.index + 1}/${body.pageCount}`)\n }\n\n text.push(body.bookmarkCount.toString())\n\n // 加载原图时,可以获取到每张图片的真实尺寸\n if (settings.prevWorkSize === 'original') {\n text.push(`${w}x${h}`)\n } else {\n // 如果加载的是普通尺寸,则永远显示第一张图的原始尺寸\n // 因为此时获取不到后续图片的原始尺寸\n text.push(`${this.workData.body.width}x${this.workData.body.height}`)\n }\n text.push(DateFormat.format(body.createDate, 'YYYY/MM/DD'))\n text.push(body.title)\n text.push(body.description)\n\n this.tip.innerHTML = text\n .map((str) => {\n return `${str}`\n })\n .join('')\n this.tip.style.display = 'block'\n } else {\n this.tip.style.display = 'none'\n }\n\n // 4. 显示 wrap\n this.img.style.height = cfg.height - tipHeight + 'px'\n const styleArray: string[] = []\n for (const [key, value] of Object.entries(cfg)) {\n styleArray.push(`${key}:${value}px;`)\n }\n styleArray.push('display:block;')\n\n // 如果不显示摘要信息,覆写一些样式\n if (!settings.showPreviewWorkTip) {\n styleArray.push('border:none;')\n styleArray.push('box-shadow:none;')\n }\n\n this.wrap.setAttribute('style', styleArray.join(''))\n\n // 每次显示图片后,传递图片的 url\n this.sendUrls()\n\n // 预览动图\n if (settings.previewUgoira && this.workData.body.illustType === 2) {\n this.previewUgoira = new PreviewUgoira(\n this.workData.body.id,\n this.wrap,\n settings.prevWorkSize,\n cfg.width,\n cfg.height - tipHeight\n )\n // 需要显式传递 wrap 的宽高,特别是高度。因为需要减去顶部提示区域的高度\n }\n }\n\n private replaceUrl(url: string) {\n return url.replace('p0', `p${this.index}`)\n }\n\n private sendUrls() {\n const data = this.workData\n if (!data) {\n return\n }\n // 传递图片的 url,但是不传递尺寸。\n // 因为预览图片默认加载“普通”尺寸的图片,但是 showOriginSizeImage 默认显示“原图”尺寸。\n // 而且对于第一张之后的图片,加载“普通”尺寸的图片时,无法获取“原图”的尺寸。\n showOriginSizeImage.setData(\n {\n original: this.replaceUrl(data.body.urls.original),\n regular: this.replaceUrl(data.body.urls.regular),\n },\n data,\n this.index\n )\n }\n}\n\nnew PreviewWork()\n","import { EVT } from './EVT'\nimport { theme } from './Theme'\nimport { settings } from './setting/Settings'\nimport { ArtworkData } from './crawl/CrawlResult'\nimport { Tools } from './Tools'\nimport { CopyToClipboard } from './CopyToClipboard'\nimport { Utils } from './utils/Utils'\n\n// 预览作品的详细信息\n// 这个模块由 PreviewWork 提供作品数据,这样可以避免一些重复代码\nclass PreviewWorkDetailInfo {\n constructor() {\n this.bindEvents()\n }\n\n // 因为预览作品模块里没有保存鼠标位置,所以本模块需要自己保存鼠标位置\n private mouseX = 0\n private mouseY = 0\n\n public show = false\n\n // 保存当前预览的作品 ID,避免在一个预览图上多次显示这个详情面板\n // 当预览图的窗口消失时,会重置这个 ID\n private showWorkID = ''\n\n private bindEvents() {\n window.addEventListener(\n EVT.list.showPreviewWorkDetailPanel,\n (ev: CustomEventInit) => {\n if (settings.PreviewWorkDetailInfo) {\n const data = ev.detail.data as ArtworkData\n this.create(data)\n }\n }\n )\n\n window.addEventListener('mousemove', (ev) => {\n this.mouseX = ev.clientX\n this.mouseY = ev.clientY\n })\n\n window.addEventListener(EVT.list.previewEnd, () => {\n this.showWorkID = ''\n })\n }\n\n private create(workData: ArtworkData) {\n // 有可能会重复创建,所以需要处理一下\n if (this.show) {\n return\n }\n\n if (workData.body.id === this.showWorkID) {\n return\n } else {\n this.showWorkID = workData.body.id\n }\n\n // 这里先把 show 状态设置为 true。实际显示出来还需要经过后面的处理\n this.show = true\n\n const wrap = document.createElement('div')\n\n // 设置文字内容\n // 生成 tag 内容\n const tagsHTML: string[] = []\n for (const item of workData.body.tags.tags) {\n const array: string[] = []\n const link = `https://www.pixiv.net/tags/${item.tag}/artworks`\n array.push(\n `
        #${item.tag}
        `\n )\n if (item.translation?.en) {\n array.push(\n `${item.translation?.en}`\n )\n }\n tagsHTML.push(`${array.join('')}`)\n }\n\n // 生成收藏数、点赞数、浏览量一栏\n const bmkHTML: string[] = []\n const schema = [\n {\n title: 'bookmark',\n icon: ``,\n number: workData.body.bookmarkCount,\n },\n {\n title: 'like',\n icon: ``,\n number: workData.body.likeCount,\n },\n {\n title: 'view',\n icon: ``,\n number: workData.body.viewCount,\n },\n ]\n\n for (const cfg of schema) {\n bmkHTML.push(`\n \n ${cfg.icon}\n ${Tools.numberToString(cfg.number)}\n \n `)\n }\n\n // 生成 R-18(G) 和 AI 标记\n let r18HTML = ''\n if (workData.body.xRestrict === 1) {\n r18HTML = 'R-18'\n } else if (workData.body.xRestrict === 2) {\n r18HTML = 'R-18G'\n }\n\n let aiHTML = ''\n if (workData.body.aiType === 2) {\n aiHTML = 'AI'\n }\n\n wrap.innerHTML = `\n
        \n

        ${r18HTML} ${aiHTML}

        \n

        ${workData.body.title}

        \n

        ${workData.body.description}

        \n

        ${tagsHTML.join('')}

        \n

        ${workData.body.width} x ${workData.body.height}

        \n

        ${bmkHTML.join('')}

        \n

        ${new Date(\n workData.body.uploadDate\n ).toLocaleString()}

        \n

        \n
        \n `\n\n // 按钮功能\n const copyTXT = wrap.querySelector('#copyTXT') as HTMLButtonElement\n copyTXT.addEventListener('click', () => {\n this.copyTXT(workData)\n })\n const copyJSON = wrap.querySelector('#copyJSON') as HTMLButtonElement\n copyJSON.addEventListener('click', () => {\n this.copyJSON(workData)\n })\n\n // 取消超链接的跳转确认,也就是把跳转链接替换为真正的链接\n const allLink = wrap.querySelectorAll('a')\n for (const a of allLink) {\n if (a.href.includes('jump.php')) {\n a.href = a.innerText\n }\n }\n\n // 设置样式\n wrap.classList.add('xz_PreviewWorkDetailPanel')\n wrap.style.width = settings.PreviewDetailInfoWidth + 'px'\n\n wrap.addEventListener('click', () => {\n this.remove(wrap)\n })\n\n wrap.addEventListener('mouseleave', () => {\n this.remove(wrap)\n })\n\n wrap.addEventListener('mousewheel', (ev) => {\n if (this.show) {\n ev.preventDefault()\n EVT.fire('wheelScrollSwitchPreviewImage', ev)\n }\n })\n\n theme.register(wrap)\n\n document.body.append(wrap)\n\n // 获取宽高,以鼠标为中心显示\n const rect = wrap.getBoundingClientRect()\n\n // 设置 left\n let left = this.mouseX - rect.width / 2\n // 最小的 left 为 10,避免其紧贴左侧,看不到左边界。其他四边也同理\n if (left < 10) {\n left = 10\n }\n\n // 如果面板右侧超出屏幕,则把面板向左移动\n let right = left + rect.width\n if (right > window.innerWidth) {\n left = left + (window.innerWidth - right) - 10\n }\n\n wrap.style.left = left + 'px'\n\n // 设置 top\n let top = this.mouseY - rect.height / 2\n if (top < 10) {\n top = 10\n }\n\n // 如果面板底部超出屏幕,则把面板向上移动\n let bottom = top + rect.height\n if (bottom > window.innerHeight) {\n top = top + (window.innerHeight - bottom) - 10\n }\n\n wrap.style.top = top + 'px'\n\n wrap.style.opacity = '1'\n }\n\n private remove(el: HTMLDivElement) {\n el && el.parentNode && el.parentNode.removeChild(el)\n this.show = false\n\n EVT.fire('PreviewWorkDetailPanelClosed', {\n x: this.mouseX,\n y: this.mouseY,\n })\n }\n\n private copyTXT(workData: ArtworkData) {\n // 组织输出的内容\n const tags = Tools.extractTags(workData).map((tag) => `#${tag}`)\n\n const array: string[] = []\n const body = workData.body\n array.push(`ID\\n${body.id}`)\n array.push(`URL\\nhttps://www.pixiv.net/artworks/${body.id}`)\n array.push(`Original\\n${body.urls?.original}`)\n array.push(`xRestrict\\n${Tools.getXRestrictText(body.xRestrict)}`)\n array.push(`AI\\n${Tools.getAITypeText(body.aiType)}`)\n array.push(`User\\n${body.userName}`)\n array.push(`UserID\\n${body.userId}`)\n array.push(`Title\\n${body.title}`)\n if (body.description) {\n array.push(`Description\\n${Utils.htmlToText(body.description)}`)\n }\n array.push(`Tags\\n${tags.join('\\n')}`)\n array.push(`Size\\n${body.width} x ${body.height}`)\n array.push(`Bookmark\\n${body.bookmarkCount}`)\n array.push(`Date\\n${new Date(body.uploadDate).toLocaleString()}`)\n\n const text = array.join('\\n\\n')\n CopyToClipboard.setClipboard(text)\n }\n\n private copyJSON(workData: ArtworkData) {\n const text = JSON.stringify(workData, null, 2)\n CopyToClipboard.setClipboard(text)\n }\n}\n\nconst previewWorkDetailInfo = new PreviewWorkDetailInfo()\nexport { previewWorkDetailInfo }\n","import { lang } from './Lang'\nimport { log } from './Log'\nimport { toast } from './Toast'\nimport { states } from './store/States'\nimport { bookmark, WorkBookmarkData } from './Bookmark'\n\nclass RemoveWorksTagsInBookmarks {\n public async start(list: WorkBookmarkData[]) {\n if (list.length === 0) {\n toast.error(lang.transl('_没有数据可供使用'))\n log.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n states.busy = true\n\n const total = list.length.toString()\n log.log(lang.transl('_当前作品个数', total))\n\n let number = 0\n for (const item of list) {\n try {\n await bookmark.add(\n item.workID.toString(),\n item.type,\n [],\n false,\n item.private,\n true\n )\n } catch (error) {\n // 处理自己收藏的作品时可能遇到错误。最常见的错误就是作品被删除了,获取作品数据时会产生 404 错误\n // 但是也可能出现其他错误,比如因为请求太多而出现 429 错误。因为 429 错误需要等待几分钟后才能重试,这里偷懒不再重试\n }\n number++\n log.log(`${number} / ${total}`, 1, false)\n }\n\n const msg =\n lang.transl('_移除本页面中所有作品的标签') + ' ' + lang.transl('_完成')\n log.success(msg)\n toast.success(msg, {\n position: 'topCenter',\n })\n states.busy = false\n }\n}\n\nconst removeWorksTagsInBookmarks = new RemoveWorksTagsInBookmarks()\nexport { removeWorksTagsInBookmarks }\n","import { EVT } from './EVT'\nimport { pageType } from './PageType'\nimport { settings } from './setting/Settings'\nimport { Tools } from './Tools'\n\nclass ReplaceSquareThumb {\n constructor() {\n this.bindEvents()\n\n this.observer()\n }\n\n private isDisable() {\n return window.location.pathname.startsWith('/group')\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'replaceSquareThumb') {\n if (data.value) {\n this.replaceAllImage()\n }\n }\n })\n }\n\n private replaceAllImage() {\n if (\n settings.replaceSquareThumb ||\n pageType.type == pageType.list.ArtworkRanking\n ) {\n const allImage = document.querySelectorAll('img')\n allImage.forEach((img) => this.replace(img))\n }\n }\n\n private replace(img: HTMLImageElement) {\n if (!img.src || img.dataset.index || this.isDisable()) {\n return\n }\n const src = img.src\n if (!src.endsWith('square1200.jpg') && !src.endsWith('custom1200.jpg')) {\n if (\n pageType.type === pageType.list.ArtworkRanking &&\n settings.showLargerThumbnails\n ) {\n // 排行榜里的缩略图本来就是保持了比例的,不需要替换其缩略图。\n // 但是排行榜里的缩略图原本尺寸较小,当用户启用了“显示更大的缩略图”之后,缩略图被放大后显得模糊,此时需要替换成更大尺寸的缩略图。\n // 排行榜页面的图片 URL 比较特别,末尾是 master1200,如下:\n // 'https://i.pximg.net/c/240x480/img-master/img/2022/08/01/17/59/39/100156836_p0_master1200.jpg'\n if (!src.includes('240x480')) {\n return\n }\n } else {\n return\n }\n }\n img.src = Tools.convertThumbURLTo540px(src)\n img.style.objectFit = 'contain'\n }\n\n private observer() {\n const observer = new MutationObserver((records) => {\n if (!settings.replaceSquareThumb) {\n if (pageType.type !== pageType.list.ArtworkRanking) {\n // 在排行榜页面里,即使用户未启用“替换方形缩略图以显示图片比例”功能,也依然执行替换缩略图的动作\n return\n }\n }\n records.forEach((record) => {\n if (record.type === 'childList') {\n record.addedNodes.forEach((node) => {\n if (node.nodeName === 'IMG') {\n this.replace(node as HTMLImageElement)\n }\n })\n }\n\n if (record.type === 'attributes') {\n if (\n record.attributeName === 'src' &&\n record.target.nodeName === 'IMG'\n ) {\n this.replace(record.target as HTMLImageElement)\n }\n }\n })\n })\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributeFilter: ['src'],\n })\n }\n}\n\nnew ReplaceSquareThumb()\n","import { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { msgBox } from './MsgBox'\nimport { setSetting, settings } from './setting/Settings'\n\nclass RequestSponsorship {\n constructor() {\n window.addEventListener(EVT.list.settingInitialized, () => {\n // 赋予初始值\n if (settings.requestSponsorshipTime === 0) {\n setSetting(\n 'requestSponsorshipTime',\n new Date().getTime() + this.interval\n )\n }\n\n window.setTimeout(() => {\n this.check()\n }, 10000)\n })\n }\n\n // 30 * 24 * 60 * 60 * 1000\n private readonly interval = 2592000000\n\n private check() {\n const now = new Date().getTime()\n if (now >= settings.requestSponsorshipTime) {\n msgBox.once('request sponsorship', lang.transl('_赞助方式提示'), 'show', {\n title: lang.transl('_赞助我'),\n })\n\n setSetting('requestSponsorshipTime', now + this.interval)\n }\n }\n}\n\nnew RequestSponsorship()\n","import { Tools } from './Tools'\nimport { Colors } from './Colors'\nimport { lang } from './Lang'\nimport { EVT } from './EVT'\nimport { states } from './store/States'\nimport { IDData, WorkTypeString } from './store/StoreType'\nimport { toast } from './Toast'\nimport { msgBox } from './MsgBox'\nimport { Utils } from './utils/Utils'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { novelThumbnail } from './NovelThumbnail'\nimport { pageType } from './PageType'\nimport { showHelp } from './ShowHelp'\nimport { Config } from './Config'\n\n// 手动选择作品,图片作品和小说都可以选择\nclass SelectWork {\n constructor() {\n const unlisted = pageType.type === pageType.list.Unlisted\n if (!this.created && Utils.isPixiv() && !unlisted) {\n this.created = true\n this.selector = this.createSelectorEl()\n this.addBtn()\n this.bindEvents()\n }\n }\n\n private created = false\n\n private selector?: HTMLElement // 用于选择作品的指示器\n private selectorId = 'selectWorkEl'\n private left = 0\n private top = 0\n private half = 10 // 指示器的一半宽度(用于设置位置)\n\n private _start = false\n private _pause = false\n private _tempHide = false // 打开下载面板时临时隐藏。这个变量只会影响选择器的 display\n\n get start() {\n return this._start\n }\n\n set start(bool: boolean) {\n this._start = bool\n states.selectWork = bool\n this.updateSelectorEl()\n this.updateControlBtn()\n }\n\n get pause() {\n return this._pause\n }\n\n set pause(bool: boolean) {\n this._pause = bool\n if (bool) {\n states.selectWork = false\n }\n this.updateSelectorEl()\n this.updateControlBtn()\n }\n\n get tempHide() {\n return this._tempHide\n }\n\n set tempHide(bool: boolean) {\n this._tempHide = bool\n this.updateSelectorEl()\n }\n\n private controlBtn: HTMLButtonElement = document.createElement('button') // 启动、暂停、继续选择的按钮\n private crawlBtn: HTMLButtonElement = document.createElement('button') // 抓取选择的作品的按钮,并且会退出选择模式\n private clearBtn: HTMLButtonElement = document.createElement('button') // 清空选择的作品的按钮\n\n private selectedWorkFlagClass = 'selectedWorkFlag' // 给已选择的作品添加标记时使用的 class\n private positionValue = ['relative', 'absolute', 'fixed'] // 标记元素需要父元素拥有这些定位属性\n\n // 不同页面里的作品列表容器的选择器可能不同,这里储存所有页面里会使用到的的选择器\n // root 是大部分页面通用的; js-mount-point-discovery 是发现页面使用的\n private worksWrapperSelectorList: string[] = [\n '#root',\n '#js-mount-point-discovery',\n ]\n // 储存当前页面使用的选择器\n private usedWorksWrapperSelector = this.worksWrapperSelectorList[0]\n // 储存当前页面的作品列表容器\n private worksWrapper: HTMLElement = document.body\n private ob: MutationObserver | undefined = undefined\n\n private idList: IDData[] = []\n\n private sendCrawl = false // 它用来判断抓取的是不是选择的作品。抓取选择的作品时激活此标记;当触发下一次的抓取完成事件时,表示已经抓取了选择的作品。\n private crawled = false // 是否已经抓取了选择的作品\n\n private readonly svg = `\n \n`\n\n private bindEscEvent!: (ev: KeyboardEvent) => void | undefined\n\n private bindEvents() {\n artworkThumbnail.onClick((el: HTMLElement, id: string, ev: Event) => {\n this.clickThumbnail(el, id, ev, 'illusts')\n })\n\n novelThumbnail.onClick((el: HTMLElement, id: string, ev: Event) => {\n this.clickThumbnail(el, id, ev, 'novels')\n })\n\n document.body.addEventListener(\n Config.mobile ? 'touchend' : 'click',\n (ev: Event) => {\n this.clickElement(ev.target as HTMLElement, ev)\n },\n true\n )\n\n window.addEventListener(EVT.list.openCenterPanel, () => {\n this.tempHide = true\n })\n\n window.addEventListener(EVT.list.closeCenterPanel, () => {\n this.tempHide = false\n })\n\n window.addEventListener(EVT.list.crawlComplete, () => {\n if (this.sendCrawl) {\n this.sendCrawl = false\n this.crawled = true\n }\n })\n\n // 可以使用 Alt + S 快捷键来模拟点击控制按钮\n window.addEventListener('keydown', (ev) => {\n if (ev.altKey && ev.code === 'KeyS') {\n this.controlBtn.click()\n }\n })\n\n // 鼠标移动时保存鼠标的坐标\n window.addEventListener(\n 'mousemove',\n (ev) => {\n this.moveEvent(ev)\n },\n true\n )\n\n // 离开页面前提示用户\n // 如果把此处的 window.onbeforeunload 换成 window.addEventListener('beforeunload') 会出现问题\n // 浏览器不会弹出询问对话框,而是直接关闭页面\n window.onbeforeunload = () => {\n // 如果存在选择的作品,并且选择的作品(全部或部分)没有被抓取,则进行提示\n if (this.idList.length > 0 && !this.crawled) {\n msgBox.error(lang.transl('_离开页面前提示选择的作品未抓取'), {\n btn: lang.transl('_我知道了'),\n })\n return false\n }\n }\n\n // 每次页面切换之后,查找新的作品列表容器并保存\n window.addEventListener(EVT.list.pageSwitch, () => {\n let worksWrapper: HTMLElement | null = null\n for (const selector of this.worksWrapperSelectorList) {\n worksWrapper = document.querySelector(selector)\n if (worksWrapper) {\n this.usedWorksWrapperSelector = selector\n break\n }\n }\n this.worksWrapper = worksWrapper || document.body\n })\n\n // 每次页面切换之后,查找新显示的作品里是否有之前被选择的作品,如果有则为其添加标记\n // 因为 pixiv 的页面切换会导致作品列表变化,之前添加的标记也就没有了,需要重新添加\n window.addEventListener(EVT.list.pageSwitch, () => {\n // 每次触发时都要断开之前绑定的观察器,否则会导致事件重复绑定\n // 因为 pageSwitch 事件可能会触发多次,如果不断开之前的观察器,那么每切换一次页面就会多绑定和执行一个回调\n this.ob && this.ob.disconnect()\n\n this.ob = new MutationObserver(\n Utils.debounce(() => {\n this.reAddAllFlag()\n }, 300)\n )\n\n this.ob.observe(this.worksWrapper, {\n childList: true,\n subtree: true,\n })\n })\n }\n\n private clearIdList() {\n // 清空标记需要使用 id 数据,所以需要执行之后才能清空 id\n this.removeAllSelectedFlag()\n this.idList = []\n this.updateCrawlBtn()\n }\n\n private createSelectorEl() {\n const el = document.createElement('div')\n el.id = this.selectorId\n document.body.appendChild(el)\n return el\n }\n\n private updateSelectorEl() {\n if (!this.selector) {\n return\n }\n\n const show = this.canSelect() && !this.tempHide\n\n this.selector.style.display = show ? 'block' : 'none'\n // 设置元素的 style 时,如果新的值和旧的值相同(例如:每次都设置 display 为 none),Chrome 会自动优化,此时不会导致节点发生变化。\n\n // 如果选择器处于隐藏状态,就不会更新其坐标。这样可以优化性能\n if (show) {\n this.selector.style.left = this.left - this.half + 'px'\n this.selector.style.top = this.top - this.half + 'px'\n }\n }\n\n private addBtn() {\n this.controlBtn = Tools.addBtn(\n 'selectWorkBtns',\n Colors.bgGreen,\n '_手动选择作品'\n )\n this.controlBtn.setAttribute('title', 'Alt + S')\n this.updateControlBtn()\n\n this.clearBtn = Tools.addBtn(\n 'selectWorkBtns',\n Colors.bgRed,\n '_清空选择的作品'\n )\n this.clearBtn.style.display = 'none'\n this.clearBtn.addEventListener('click', () => {\n this.clearIdList()\n this.clearBtn.style.display = 'none'\n this.crawlBtn.style.display = 'none'\n })\n\n this.crawlBtn = Tools.addBtn(\n 'selectWorkBtns',\n Colors.bgBlue,\n '_抓取选择的作品'\n )\n this.crawlBtn.style.display = 'none'\n this.crawlBtn.addEventListener('click', (ev) => {\n this.sendDownload()\n })\n }\n\n // 切换控制按钮的文字和点击事件\n private updateControlBtn() {\n if (!this.start) {\n lang.updateText(this.controlBtn, '_手动选择作品')\n this.controlBtn.onclick = (ev) => {\n this.startSelect(ev)\n this.clearBtn.style.display = 'block'\n if (!Config.mobile) {\n showHelp.show(\n 'tipAltSToSelectWork',\n lang.transl('_快捷键ALTS手动选择作品')\n )\n }\n }\n } else {\n if (!this.pause) {\n lang.updateText(this.controlBtn, '_暂停选择')\n this.controlBtn.onclick = (ev) => {\n this.pauseSelect()\n }\n } else {\n lang.updateText(this.controlBtn, '_继续选择')\n this.controlBtn.onclick = (ev) => {\n this.startSelect(ev)\n }\n }\n }\n }\n\n // 在选择作品的数量改变时,在抓取按钮上显示作品数量\n private updateCrawlBtn() {\n this.crawlBtn.style.display = this.start ? 'block' : 'none'\n if (this.idList.length > 0) {\n lang.updateText(\n this.crawlBtn,\n '_抓取选择的作品2',\n this.idList.length.toString()\n )\n this.clearBtn.style.display = 'block'\n } else {\n lang.updateText(this.crawlBtn, '_抓取选择的作品')\n }\n }\n\n private addId(el: HTMLElement, id: string, type: WorkTypeString) {\n const index = this.idList.findIndex((item) => {\n return item.id === id && item.type === type\n })\n // 添加这个 id\n if (index === -1) {\n this.idList.push({\n id,\n type,\n })\n this.crawled = false\n this.addSelectedFlag(el, id)\n } else {\n // id 已存在,则删除\n this.idList.splice(index, 1)\n this.removeSelectedFlag(id)\n }\n this.updateCrawlBtn()\n }\n\n private clickThumbnail(\n el: HTMLElement,\n id: string,\n ev: Event,\n type: WorkTypeString\n ) {\n if (!this.canSelect()) {\n return\n }\n\n // 如果点击的元素是作品缩略图里的收藏按钮,则不选择这个作品,这样可以让收藏按钮发挥作用\n // 注意这些 nodeName 是小写的\n const target = ev.target as HTMLElement\n if (target && (target.nodeName === 'svg' || target.nodeName === 'path')) {\n return\n }\n\n // 真实点击的元素\n // console.log(ev.target)\n // 绑定了这个事件的元素\n // console.log(ev.currentTarget)\n\n if (!id || id === '0') {\n id = Tools.findWorkIdFromElement(\n el,\n type === 'novels' ? 'novels' : 'illusts'\n )\n }\n\n // 阻止默认事件,否则会进入作品页面,导致无法在当前页面继续选择\n ev.preventDefault()\n ev.stopPropagation()\n this.addId(el, id, type)\n }\n\n private clickElement(el: HTMLElement, ev: Event) {\n if (!this.canSelect()) {\n return\n }\n\n if (!el || el.nodeName !== 'A') {\n return\n }\n\n const href = (el as HTMLAnchorElement).href\n const artworkId = Tools.getIllustId(href)\n if (artworkId) {\n ev.preventDefault()\n // 如果查找到了作品 id,必须阻止冒泡,否则会执行 clickThumbnail\n ev.stopPropagation()\n this.addId(el.parentElement!, artworkId, 'illusts')\n return\n }\n\n const novelId = Tools.getNovelId(href)\n if (novelId) {\n ev.preventDefault()\n ev.stopPropagation()\n this.addId(el.parentElement!, novelId, 'novels')\n return\n }\n }\n\n // 监听鼠标移动\n // 鼠标移动时,由于事件触发频率很高,所以这里的代码也会执行很多次,但是这没有导致明显的性能问题,所以没有使用节流等加以限制\n private moveEvent(ev: MouseEvent) {\n this.left = ev.x\n this.top = ev.y\n this.updateSelectorEl()\n }\n\n // 按 Esc 键时暂停选择\n private escEvent(ev: KeyboardEvent) {\n if (ev.code === 'Escape') {\n this.pauseSelect()\n }\n }\n\n // 开始或继续选择\n private startSelect(ev: MouseEvent) {\n this.start = true\n\n if (this.pause) {\n // 如果之前暂停了,则继续选择。不清空之前的结果\n this.pause = false\n } else {\n // 如果是全新开始的选择,则清空之前的结果\n this.clearIdList()\n }\n\n this.bindEscEvent = this.escEvent.bind(this)\n document.addEventListener('keyup', this.bindEscEvent)\n\n EVT.fire('closeCenterPanel')\n }\n\n private pauseSelect() {\n this.pause = true\n this.bindEscEvent &&\n document.removeEventListener('keyup', this.bindEscEvent)\n }\n\n private canSelect() {\n return this.start && !this.pause\n }\n\n // 抓取选择的作品,这会自动暂停手动选择作品\n private sendDownload() {\n this.pauseSelect()\n\n if (this.idList.length > 0) {\n // 传递 id 列表时,将其转换成一个新的数组。否则传递的是引用,外部的一些操作可能会影响内部的 id 列表\n EVT.fire('crawlIdList', Array.from(this.idList))\n\n this.sendCrawl = true\n this.crawled = false\n states.quickCrawl = true\n\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n } else {\n toast.error(lang.transl('_没有数据可供使用'))\n }\n }\n\n // 给这个作品添加标记\n private addSelectedFlag(wrap: HTMLElement, id: string) {\n const i = document.createElement('i')\n i.classList.add(this.selectedWorkFlagClass)\n i.dataset.id = id\n i.innerHTML = this.svg\n\n wrap.insertAdjacentElement('afterbegin', i)\n\n // 如果容器没有某些定位,可能会导致下载器添加的标记的位置异常。修复此问题\n const position = window.getComputedStyle(wrap)['position']\n if (!this.positionValue.includes(position)) {\n wrap.style.position = 'relative'\n }\n }\n\n // 重新添加被选择的作品上的标记\n private reAddAllFlag() {\n if (this.idList.length === 0) {\n return\n }\n\n for (const { id, type } of this.idList) {\n if (this.getSelectedFlag(id)) {\n // 如果这个作品的标记依旧存在,就不需要重新添加\n /**\n * 示例:从作品列表 https://www.pixiv.net/users/18095070/illustrations\n * 进入 tag 列表页 https://www.pixiv.net/users/18095070/illustrations/%E5%A5%B3%E3%81%AE%E5%AD%90\n * pixiv 会复用可用的作品,所以这些作品上的标记也依然存在,不需要重新添加\n */\n return\n }\n\n let el: HTMLAnchorElement | null\n if (type === 'novels') {\n el = document.querySelector(\n `${this.usedWorksWrapperSelector} a[href=\"/novel/show.php?id=${id}\"]`\n )\n } else {\n el = document.querySelector(\n `${this.usedWorksWrapperSelector} a[href=\"/artworks/${id}\"]`\n )\n }\n\n if (el) {\n // 如果在当前页面查找到了选择的作品,就给它添加标记\n this.addSelectedFlag(el, id)\n }\n }\n }\n\n private getSelectedFlag(id: string) {\n return document.querySelector(\n `.${this.selectedWorkFlagClass}[data-id='${id}']`\n )\n }\n\n // 清空指定作品的标记\n private removeSelectedFlag(id: string) {\n const el = this.getSelectedFlag(id)\n el && el.remove()\n }\n\n // 清空所有标记\n private removeAllSelectedFlag() {\n for (const item of this.idList) {\n this.removeSelectedFlag(item.id)\n }\n }\n}\n\nnew SelectWork()\n","interface ListData {\n id: number\n time: number\n callback: Function | null\n}\n\nclass SetTimeoutWorker {\n constructor() {\n this.createWorker()\n }\n\n // 因为 worker 的代码很短,所以直接储存在这里,避免从网络加载导致的延迟问题\n private readonly workerCode = `onmessage = (ev) => {\n setTimeout(() => {\n postMessage({\n id: ev.data.id\n })\n }, ev.data.time)\n }`\n\n private worker!: Worker\n\n private createWorker() {\n const blob = new Blob([this.workerCode])\n this.worker = new Worker(URL.createObjectURL(blob))\n\n this.worker.addEventListener('message', (ev) => {\n const id = ev.data.id as number\n if (this.list[id].callback !== null) {\n this.list[id].callback!()\n this.clear(id)\n }\n })\n }\n\n private list: ListData[] = []\n\n private timerId = 0\n\n public set(callback: Function, time: number) {\n const data = {\n id: this.timerId,\n time,\n callback,\n }\n this.list.push(data)\n this.timerId++\n\n this.worker.postMessage({\n id: data.id,\n time,\n })\n\n return data.id\n }\n\n public clear(id: number) {\n this.list[id].callback = null\n }\n}\n\nconst setTimeoutWorker = new SetTimeoutWorker()\nexport { setTimeoutWorker }\n","import { Tools } from './Tools'\nimport { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { settings, setSetting } from './setting/Settings'\nimport { theme } from './Theme'\nimport { toast } from './Toast'\nimport { msgBox } from './MsgBox'\n\n// 为某些用户设置固定的用户名,或者别名\nclass SetUserName {\n constructor() {\n this.createWrap()\n theme.register(this.wrap)\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private readonly slotName = 'setUserNameSlot'\n private wrap!: HTMLDivElement // 最外层元素\n\n private expandBtn!: HTMLButtonElement // 展开/折叠 按钮\n private totalSpan!: HTMLSpanElement // 显示规则数量\n private showAddBtn!: HTMLButtonElement // 添加 按钮,点击显示添加区域\n\n private addWrap!: HTMLDivElement // 用于添加新项目的区域\n private addInputUid!: HTMLInputElement // 用于添加新项目的 uid 的输入框\n private addInputName!: HTMLInputElement // 用于添加新项目的 name 的输入框\n private addBtn!: HTMLButtonElement // 添加 按钮\n private cancelBtn!: HTMLButtonElement // 取消 按钮\n\n private listWrap!: HTMLDivElement // 列表区域容器\n\n private _addWrapShow = false\n\n set addWrapShow(val: boolean) {\n this._addWrapShow = val\n\n if (val) {\n this.addWrap.style.display = 'block'\n this.addInputUid.focus()\n } else {\n this.addWrap.style.display = 'none'\n this.addInputUid.value = ''\n this.addInputName.value = ''\n }\n }\n\n get addWrapShow() {\n return this._addWrapShow\n }\n\n private wrapHTML = `\n \n\n \n 0\n \n \n \n\n
        \n
        \n
        \n \n \n
        \n\n
        \n \n \n
        \n\n
        \n \n\n \n \n
        \n
        \n
        \n\n
        \n
        \n
        \n `\n\n // 创建列表外部的容器,静态 html\n private createWrap() {\n this.wrap = Tools.useSlot(this.slotName, this.wrapHTML)! as HTMLDivElement\n this.expandBtn = this.wrap.querySelector('.expand')! as HTMLButtonElement\n this.showAddBtn = this.wrap.querySelector('.showAdd')! as HTMLButtonElement\n this.totalSpan = this.wrap.querySelector('.total')! as HTMLSpanElement\n this.addWrap = this.wrap.querySelector('.addWrap')! as HTMLDivElement\n this.addInputUid = this.wrap.querySelector(\n '.addUidInput'\n )! as HTMLInputElement\n this.addInputName = this.wrap.querySelector(\n '.addNameInput'\n )! as HTMLInputElement\n this.addBtn = this.wrap.querySelector('.add')! as HTMLButtonElement\n this.cancelBtn = this.wrap.querySelector('.cancel')! as HTMLButtonElement\n this.listWrap = this.wrap.querySelector('.listWrap')! as HTMLDivElement\n\n // 展开/折叠按钮\n this.expandBtn.addEventListener('click', () => {\n setSetting('setUserNameShow', !settings.setUserNameShow)\n })\n\n // 切换显示添加规则的区域\n this.showAddBtn.addEventListener('click', () => {\n this.addWrapShow = !this.addWrapShow\n })\n\n // 添加规则的按钮\n this.addBtn.addEventListener('click', () => {\n this.addRule(this.addInputUid.value, this.addInputName.value)\n })\n\n // 取消添加的按钮\n this.cancelBtn.addEventListener('click', () => {\n this.addWrapShow = false\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'setUserNameShow') {\n this.showListWrap()\n }\n if (data.name === 'setUserNameList') {\n this.createAllList()\n }\n })\n }\n\n private showListWrap() {\n const show = settings.setUserNameShow\n this.listWrap.style.display = show ? 'flex' : 'none'\n lang.updateText(this.expandBtn, show ? '_收起' : '_展开')\n }\n\n // 根据规则动态创建 html\n private createAllList() {\n this.totalSpan.textContent = Object.keys(\n settings.setUserNameList\n ).length.toString()\n this.listWrap.innerHTML = ''\n const df = document.createDocumentFragment()\n for (const [uid, name] of Object.entries(settings.setUserNameList)) {\n df.append(this.createOneList(uid, name))\n }\n this.listWrap.append(df)\n }\n\n // 创建规则对应的元素,并绑定事件\n private createOneList(uid: string, name: string) {\n const html = `\n
        \n \n
        \n\n
        \n \n
        \n\n
        \n \n\n \n
        `\n\n const element = document.createElement('div')\n element.classList.add('settingItem')\n element.dataset.key = uid\n element.innerHTML = html\n\n const updateRule = element.querySelector(`button[data-updateRule='${uid}']`)\n const deleteRule = element.querySelector(`button[data-deleteRule='${uid}']`)\n const uidInput = element.querySelector(\n `input[data-uidInput='${uid}']`\n )! as HTMLInputElement\n const nameInput = element.querySelector(\n `input[data-nameInput='${uid}']`\n )! as HTMLInputElement\n\n // 当输入框发生变化时,进行更新\n ;[uidInput, nameInput].forEach((el) => {\n el?.addEventListener('change', () => {\n if (el.value) {\n this.updateRule(uid, uidInput.value, nameInput.value, false)\n }\n })\n })\n\n // 更新规则\n updateRule?.addEventListener('click', () => {\n this.updateRule(uid, uidInput.value, nameInput.value)\n })\n\n // 删除规则\n deleteRule?.addEventListener('click', () => {\n this.deleteRule(uid)\n })\n\n return element\n }\n\n // 检查用户输入的值\n private checkValue(uidInput: string, nameInput: string) {\n if (!uidInput || !nameInput) {\n msgBox.error(lang.transl('_必填项不能为空'))\n return false\n }\n\n const uid = Number.parseInt(uidInput)\n if (!uid || isNaN(uid)) {\n msgBox.error(lang.transl('_用户ID必须是数字'))\n return false\n }\n\n return {\n uidInput,\n nameInput,\n }\n }\n\n // 添加规则\n private addRule(uid: string, name: string) {\n const check = this.checkValue(uid, name)\n if (!check) {\n return\n }\n\n settings.setUserNameList[uid] = name\n setSetting('setUserNameList', settings.setUserNameList)\n\n this.addWrapShow = false\n\n toast.success(lang.transl('_添加成功'))\n }\n\n // 更新规则\n // tip 表示是否用显示操作成功的提示。当用户点击了更新按钮时应该显示提示;输入内容变化导致的自动更新可以不显示提示\n private updateRule(oldUid: string, uid: string, name: string, tip = true) {\n const check = this.checkValue(uid, name)\n if (!check) {\n return\n }\n\n delete settings.setUserNameList[oldUid]\n settings.setUserNameList[uid] = name\n setSetting('setUserNameList', settings.setUserNameList)\n\n this.addWrapShow = false\n\n if (tip) {\n toast.success(lang.transl('_更新成功'))\n }\n }\n\n // 删除规则\n private deleteRule(uid: string) {\n delete settings.setUserNameList[uid]\n setSetting('setUserNameList', settings.setUserNameList)\n\n this.removeListElement(uid)\n }\n\n private removeListElement(uid: string) {\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${uid}']`\n )\n listElement?.remove()\n }\n}\n\nnew SetUserName()\n","import { Config } from './Config'\nimport { ShowDownloadBtnOnThumbOnDesktop } from './ShowDownloadBtnOnThumbOnDesktop'\nimport { ShowDownloadBtnOnThumbOnMobile } from './ShowDownloadBtnOnThumbOnMobile'\n\n// 在图片作品的缩略图上显示下载按钮,点击按钮可以直接下载这个作品\nclass ShowDownloadBtnOnThumb {\n constructor() {\n Config.mobile\n ? new ShowDownloadBtnOnThumbOnMobile()\n : new ShowDownloadBtnOnThumbOnDesktop()\n }\n}\n\nnew ShowDownloadBtnOnThumb()\n","import { EVT } from './EVT'\nimport { settings } from './setting/Settings'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { states } from './store/States'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { IDData } from './store/StoreType'\nimport { Colors } from './Colors'\nimport { Config } from './Config'\n\n// 在图片作品的缩略图上显示下载按钮,点击按钮会直接下载这个作品\nclass ShowDownloadBtnOnThumbOnDesktop {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n // 在桌面端,只有一个下载按钮,当鼠标经过作品缩略图时才会显示下载按钮\n this.addBtn()\n this.bindEvents()\n }\n\n private btn!: HTMLButtonElement\n private readonly btnId = 'downloadBtnOnThumb'\n private readonly btnSize = 32\n\n private currentWorkId = '' // 保存触发事件的缩略图的作品 id\n\n private hiddenBtnTimer = 0 // 使用定时器让按钮延迟消失。这是为了解决一些情况下按钮闪烁的问题\n private hiddenBtnDelay = 100\n private doNotShowBtn = false // 当点击了按钮后,进入此状态,此状态中不会显示按钮\n // 此状态是为了解决这个问题:点击了按钮之后,按钮会被隐藏,隐藏之后,鼠标下方就是图片缩略图区域,这会触发缩略图的鼠标事件,导致按钮马上就又显示了出来。所以点击按钮之后设置这个状态,在其为 true 的期间不会显示按钮。过一段时间再把它复位。复位所需的时间很短,因为只要能覆盖这段时间就可以了:从隐藏按钮开始算起,到缩略图触发鼠标事件结束。\n\n private addBtn() {\n const btn = document.createElement('button')\n btn.id = this.btnId\n btn.classList.add(this.btnId)\n btn.innerHTML = `\n \n \n`\n this.btn = document.body.appendChild(btn)\n }\n\n private bindEvents() {\n // 页面切换时隐藏按钮\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.hiddenBtn()\n })\n\n window.addEventListener(EVT.list.clickBtnOnThumb, () => {\n this.hiddenBtnNow()\n })\n\n // 鼠标移入按钮时取消隐藏按钮\n this.btn.addEventListener('mouseenter', (ev) => {\n window.clearTimeout(this.hiddenBtnTimer)\n })\n\n // 鼠标移出按钮时隐藏按钮\n this.btn.addEventListener('mouseleave', () => {\n this.hiddenBtn()\n })\n\n // 点击按钮时发送下载任务\n this.btn.addEventListener('click', (ev) => {\n this.hiddenBtnNow()\n EVT.fire('clickBtnOnThumb')\n\n if (this.currentWorkId) {\n const IDData: IDData = {\n type: 'illusts',\n id: this.currentWorkId,\n }\n EVT.fire('crawlIdList', [IDData])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n })\n\n artworkThumbnail.onEnter((el: HTMLElement, id: string) => {\n this.currentWorkId = id\n this.showBtn(el)\n })\n\n artworkThumbnail.onLeave(() => {\n this.hiddenBtn()\n })\n }\n\n // 显示按钮\n private showBtn(target: HTMLElement) {\n if (this.doNotShowBtn || !settings.showDownloadBtnOnThumb) {\n return\n }\n\n window.clearTimeout(this.hiddenBtnTimer)\n const rect = target.getBoundingClientRect()\n this.btn.style.left =\n window.scrollX +\n rect.left +\n (settings.magnifierPosition === 'left' ? 0 : rect.width - this.btnSize) +\n 'px'\n\n let top = window.scrollY + rect.top\n // 如果显示了放大按钮,就需要加大 top,让下载按钮显示在放大按钮下面\n if (settings.magnifier) {\n top = top + this.btnSize + 8\n }\n this.btn.style.top = top + 'px'\n\n this.btn.style.display = 'flex'\n }\n\n // 延迟隐藏按钮\n private hiddenBtn() {\n window.clearTimeout(this.hiddenBtnTimer)\n this.hiddenBtnTimer = window.setTimeout(() => {\n this.btn.style.display = 'none'\n }, this.hiddenBtnDelay)\n }\n\n // 立刻隐藏按钮\n private hiddenBtnNow() {\n this.doNotShowBtn = true\n window.setTimeout(() => {\n this.doNotShowBtn = false\n }, 100)\n\n window.clearTimeout(this.hiddenBtnTimer)\n this.btn.style.display = 'none'\n }\n}\n\nexport { ShowDownloadBtnOnThumbOnDesktop }\n","import { EVT } from './EVT'\nimport { settings } from './setting/Settings'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { states } from './store/States'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { IDData } from './store/StoreType'\nimport { Colors } from './Colors'\nimport { Tools } from './Tools'\n\n// 在图片作品的缩略图上显示下载按钮,点击按钮会直接下载这个作品\nclass ShowDownloadBtnOnThumbOnMobile {\n constructor() {\n // 在移动端,由于没有 mouseover 事件,\n // 所以只能每个作品缩略图分别添加一个下载按钮\n this.bindEvents()\n }\n\n private readonly className = 'downloadBtnOnThumb'\n private readonly size = 32\n private styleElement?: HTMLStyleElement\n\n private bindEvents() {\n artworkThumbnail.onFound((el: HTMLElement, id: string | '') => {\n if (!settings.showDownloadBtnOnThumb) {\n return\n }\n\n const btn = this.addBtn(el)\n btn.addEventListener('click', (ev) => {\n if (!id) {\n id = Tools.findWorkIdFromElement(el, 'illusts')\n }\n if (!id) {\n return\n }\n const IDData: IDData = {\n type: 'illusts',\n id: id,\n }\n EVT.fire('crawlIdList', [IDData])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n })\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data\n if (data.name === 'showDownloadBtnOnThumb') {\n this.toggleShowBtns(data.value)\n this.setPageCountStyle(data.value)\n }\n })\n }\n\n private addBtn(target: HTMLElement) {\n const btn = document.createElement('button')\n btn.classList.add(this.className)\n btn.innerHTML = `\n \n \n`\n\n btn.style.left = 'auto'\n btn.style.right = '0px'\n btn.style.top = '0px'\n btn.style.display = 'flex'\n\n target.appendChild(btn)\n return btn\n }\n\n private setPageCountStyle(value: boolean) {\n // 显示按钮时,让缩略图的页数文字下移到按钮下面,否则页数会被按钮遮挡\n if (value && !this.styleElement) {\n this.styleElement = document.createElement('style')\n this.styleElement.innerText = `.status-page-count-container {margin-top: ${this.size}px;}`\n document.body.append(this.styleElement)\n }\n\n if (!value && this.styleElement) {\n this.styleElement.remove()\n this.styleElement = undefined\n }\n }\n\n private toggleShowBtns(value: boolean) {\n const btns = document.body.querySelectorAll(`.${this.className}`)\n for (const btn of btns) {\n ;(btn as HTMLButtonElement).style.display = value ? 'flex' : 'none'\n }\n }\n}\n\nexport { ShowDownloadBtnOnThumbOnMobile }\n","import { lang } from './Lang'\nimport { Config } from './Config'\nimport { msgBox } from './MsgBox'\nimport { settings, setSetting, SettingKeys } from './setting/Settings'\n\n// 用消息框显示一次性的提示\nclass ShowHelp {\n public show(settingKey: SettingKeys, msg: string) {\n if (settings[settingKey] === true) {\n setSetting(settingKey, false)\n msgBox.show(msg, {\n title: Config.appName + ' Help',\n btn: lang.transl('_我知道了'),\n })\n }\n }\n}\n\nconst showHelp = new ShowHelp()\nexport { showHelp }\n","import { Config } from './Config'\nimport { EVT } from './EVT'\nimport { pageType } from './PageType'\nimport { settings } from './setting/Settings'\nimport { Tools } from './Tools'\n\nclass ShowLargerThumbnails {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n this.loadCssText()\n this.bindEvents()\n this.findFriendsWrapEl()\n }\n\n // css 内容来自 style/showLargerThumbnails.css\n private css = ''\n private readonly styleId = 'ShowLargerThumbnails'\n\n private findFriendsWrap = false\n\n private async loadCssText() {\n const css = await fetch(\n chrome.runtime.getURL('style/showLargerThumbnails.css')\n )\n this.css = await css.text()\n this.setCss()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'showLargerThumbnails') {\n this.setCss()\n }\n })\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.setCss()\n this.findFriendsWrap = false\n })\n\n window.setInterval(() => {\n this.findFriendsWrapEl()\n }, 1000)\n }\n\n private setCss() {\n if (!this.css) {\n return\n }\n\n if (Tools.notEnabledShowLargerThumb()) {\n return this.removeStyle()\n }\n settings.showLargerThumbnails ? this.addStyle() : this.removeStyle()\n }\n\n private addStyle() {\n if (document.querySelector('#' + this.styleId)) {\n return\n }\n\n const el = document.createElement('style')\n el.id = this.styleId\n el.innerHTML = this.css\n document.body.append(el)\n }\n\n private removeStyle() {\n const el = document.querySelector('#' + this.styleId)\n el && el.remove()\n }\n\n // 在首页查找“关注用户・好P友的作品”列表容器,为其添加自定义的 className\n private findFriendsWrapEl() {\n if (this.findFriendsWrap || pageType.type !== pageType.list.Home) {\n return\n }\n\n const sectionList = document.querySelectorAll('section')\n if (sectionList && sectionList[1]) {\n if (sectionList[1].querySelector('ul div')) {\n sectionList[1].classList.add('homeFriendsNewWorks')\n this.findFriendsWrap = true\n }\n }\n }\n}\n\nnew ShowLargerThumbnails()\n","import { EVT } from './EVT'\nimport { lang } from './Lang'\nimport { settings } from './setting/Settings'\nimport { states } from './store/States'\nimport { store } from './store/Store'\nimport { Tools } from './Tools'\n\nclass ShowNotification {\n constructor() {\n this.iconURL = chrome.runtime.getURL('icon/logo128.png')\n this.bindEvents()\n }\n\n private iconURL = ''\n\n private bindEvents() {\n // 当用户开启“下载完成后显示通知”的提示时,请求权限\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'showNotificationAfterDownloadComplete' && data.value) {\n this.requstPremission()\n }\n })\n\n // 当下载任务完毕时,显示通知\n window.addEventListener(EVT.list.downloadComplete, () => {\n window.setTimeout(() => {\n // 如果抓取标签列表没有完成,则不显示通知\n // 在一次抓取多个标签时,当最后一个标签下载完之后会解除 crawlTagList 状态,这时可以显示一条通知\n // 如果有等待下载的任务,则不显示通知\n if (\n settings.showNotificationAfterDownloadComplete &&\n !states.crawlTagList &&\n store.waitingIdList.length === 0\n ) {\n this.show(lang.transl('_下载完毕2'), Tools.getPageTitle())\n }\n }, 0)\n })\n }\n\n public async show(title: string, text: string) {\n await this.requstPremission()\n new Notification(title, {\n body: text,\n // 不设置 tag。如果设置了相同的 tag,那么新的通知会覆盖旧的通知,导致如果有多个页面下载完毕,用户只能看到最后一个页面的通知\n // tag: 'PowerfulPixivDownloader',\n icon: this.iconURL,\n })\n }\n\n private requstPremission() {\n if (Notification.permission !== 'granted') {\n return Notification.requestPermission()\n }\n }\n}\n\nnew ShowNotification()\n","import { EVT } from './EVT'\nimport { settings } from './setting/Settings'\nimport { Utils } from './utils/Utils'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { PreviewUgoira } from './PreviewUgoira'\nimport { ArtworkData } from './crawl/CrawlResult'\nimport { states } from './store/States'\nimport { toast } from './Toast'\nimport { lang } from './Lang'\nimport { Colors } from './Colors'\nimport { showHelp } from './ShowHelp'\nimport { store } from './store/Store'\nimport { Config } from './Config'\n\ninterface Style {\n imgW: number\n imgH: number\n width: number\n height: number\n mt: number\n ml: number\n}\n\ninterface Urls {\n original: string\n regular: string\n}\n\nclass ShowOriginSizeImage {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n this.createElements()\n this.bindEvents()\n }\n\n private urls = {\n original: '',\n regular: '',\n }\n\n private workData?: ArtworkData\n\n // 显示作品中的第几张图片\n private index = 0\n\n // 原比例查看图片的容器的元素\n private wrapId = 'originSizeWrap'\n private wrap!: HTMLElement\n private img!: HTMLImageElement\n private readonly defaultSize = 1200\n private readonly border = 4 // wrap 的 border 占据的空间\n // 不可以把 left、top 设置为负值,否则超出屏幕的区域无法查看\n // 所以通过修改 margin 来达到定位的效果\n private style: Style = {\n imgW: this.defaultSize,\n imgH: this.defaultSize,\n width: this.defaultSize,\n height: this.defaultSize,\n mt: 0,\n ml: 0,\n }\n private readonly defaultStyle = Utils.deepCopy(this.style)\n private readonly zoomList = [\n 0.1, 0.2, 0.3, 0.4, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5,\n ]\n private zoomIndex = 6\n // 默认的缩放比例为 1\n private zoom = this.zoomList[this.zoomIndex]\n private testImg = new Image()\n private getImageSizeTimer = 0\n\n // 定义当鼠标移动 1 像素时,wrap 移动多少像素\n private onePxMove = 10\n private moveX = 0\n private moveY = 0\n\n private previewUgoira?: PreviewUgoira\n\n private _show = false\n\n private get show() {\n return this._show\n }\n\n private set show(val: boolean) {\n this._show = val\n if (val) {\n EVT.fire('showOriginSizeImage')\n this.wrap.style.display = 'block'\n if (!Config.mobile) {\n showHelp.show(\n 'tipHotkeysViewLargeImage',\n lang.transl('_查看作品大图时的快捷键')\n )\n }\n\n // 预览动图\n if (settings.previewUgoira && this.workData?.body.illustType === 2) {\n this.previewUgoira = new PreviewUgoira(\n this.workData.body.id,\n this.wrap,\n settings.showOriginImageSize\n )\n }\n } else {\n this.img.src = ''\n this.wrap.style.display = 'none'\n\n // 销毁预览动图的模块\n if (this.previewUgoira) {\n this.previewUgoira.destroy()\n this.previewUgoira = null as unknown as PreviewUgoira\n }\n }\n }\n\n private showTimer = 0\n private rightClickBeforeShow = false\n\n private createElements() {\n this.wrap = document.createElement('div')\n this.wrap.id = this.wrapId\n this.img = document.createElement('img')\n this.wrap.appendChild(this.img)\n document.documentElement.appendChild(this.wrap)\n }\n\n private bindEvents() {\n artworkThumbnail.onEnter((el: HTMLElement) => {\n if (settings.showOriginImage) {\n // 这里测试在 CentBrowser(内核版本 86)中存在问题,因为 CentBrowser 里鼠标右键松开时才会触发 mousedown 事件,导致根本没法做鼠标长按的效果\n el.addEventListener('mousedown', this.readyShow)\n el.addEventListener('mouseup', this.cancelReadyShow)\n }\n })\n\n artworkThumbnail.onLeave((el: HTMLElement) => {\n el.removeEventListener('mousedown', this.readyShow)\n el.removeEventListener('mouseup', this.cancelReadyShow)\n })\n\n this.wrap.addEventListener('click', () => {\n this.show = false\n })\n\n document.body.addEventListener('click', () => {\n this.show = false\n })\n\n this.wrap.addEventListener('mousewheel', (ev) => {\n ev.preventDefault()\n // 向上滚 deltaY 是负数(-125),向下滚是正数(125)\n const zoomAdd = (ev as WheelEvent).deltaY < 0\n this.zoomWrap(ev as MouseEvent, zoomAdd)\n })\n\n this.wrap.addEventListener('mousemove', (ev) => {\n if (this.moveX === 0) {\n // client x y 是可视区域,不包含滚动区域\n this.moveX = ev.clientX\n this.moveY = ev.clientY\n }\n\n // 本来我对此事件进行了节流处理,但是节流的话容易显得画面不流畅。\n // 而且我试了试,不节流也不会产生太高的 CPU 负荷。所以现在不再做节流处理\n this.moveWrap(ev)\n this.moveX = ev.clientX\n this.moveY = ev.clientY\n })\n\n window.addEventListener('contextmenu', (ev) => {\n // 如果是在原图区域显示之前按下了右键,并且随后显示了原图区域,那么就屏蔽这一次右键菜单\n if (this.rightClickBeforeShow) {\n ev.preventDefault()\n this.rightClickBeforeShow = false\n this.moveX = ev.clientX\n this.moveY = ev.clientY\n }\n })\n\n window.addEventListener(\n 'keydown',\n (ev) => {\n // 预览大图时,可以使用快捷键 D 下载这个作品\n if (ev.code === 'KeyD' && this.show) {\n EVT.fire('crawlIdList', [\n {\n type: 'illusts',\n id: this.workData!.body.id,\n },\n ])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n position: 'center',\n })\n }\n\n // 预览作品时,可以使用快捷键 C 仅下载当前显示的图片\n if (ev.code === 'KeyC' && this.show) {\n ev.stopPropagation()\n\n if (this.workData!.body.pageCount > 1) {\n store.setDownloadOnlyPart(Number.parseInt(this.workData!.body.id), [\n this.index,\n ])\n }\n\n EVT.fire('crawlIdList', [\n {\n type: 'illusts',\n id: this.workData!.body.id,\n },\n ])\n\n // 下载时不显示下载面板\n states.quickCrawl = true\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n position: 'center',\n })\n }\n\n // 按 Esc 键时取消预览\n if (ev.code === 'Escape' && this.show) {\n this.show = false\n ev.stopPropagation()\n }\n },\n true\n )\n }\n\n private readyShow = (ev: MouseEvent) => {\n window.clearTimeout(this.showTimer)\n // 当预览区域显示之后,在作品缩略图上长按鼠标右键,显示原尺寸图片\n // 0 左键 1 滚轮 2 右键\n if (ev.button === 2) {\n this.showTimer = window.setTimeout(() => {\n this.rightClickBeforeShow = true\n this.initWrap(ev)\n }, 500)\n }\n }\n\n private cancelReadyShow = (ev: MouseEvent) => {\n window.clearTimeout(this.showTimer)\n }\n\n private async getImage(url: string): Promise {\n window.clearInterval(this.getImageSizeTimer)\n this.testImg.src = ''\n\n return new Promise((resolve) => {\n this.testImg = new Image()\n this.testImg.src = url\n this.getImageSizeTimer = window.setInterval(() => {\n if (this.testImg.naturalWidth > 0) {\n window.clearInterval(this.getImageSizeTimer)\n return resolve(this.testImg)\n }\n }, 50)\n })\n }\n\n // 初次显示一个图片时,初始化 wrap 的样式\n private async initWrap(ev: MouseEvent) {\n const url = this.urls[settings.showOriginImageSize]\n if (!url) {\n return\n }\n\n this.zoomIndex = 6\n this.zoom = this.zoomList[this.zoomIndex]\n this.style = this.defaultStyle\n\n // 获取图片的原始宽高\n this.img = await this.getImage(url)\n this.style.imgW = this.img.naturalWidth\n this.style.imgH = this.img.naturalHeight\n this.style.width = this.style.imgW\n this.style.height = this.style.imgH\n\n // 替换 img 元素\n this.wrap.querySelector('img')!.remove()\n this.wrap.appendChild(this.img)\n\n // 设置定位\n const innerWidth = window.innerWidth - 17\n // 在水平方向上,总是居中显示\n this.style.ml = (innerWidth - this.style.width - this.border) / 2\n // 在垂直方向上\n if (this.style.height > window.innerHeight) {\n // 如果图片高度超过了可视区域,则从顶部显示\n this.style.mt = 0\n } else {\n // 否则垂直居中显示\n this.style.mt = (window.innerHeight - this.style.height - this.border) / 2\n }\n\n // 计算鼠标移动 1 像素时,图片应该移动多少像素\n // 计算横向的 onePxMove\n let onePxMoveX = this.style.imgW / innerWidth\n if (this.style.imgW > innerWidth) {\n // 如果图片宽度超出窗口可视宽度,计算鼠标左侧和右侧的图像宽度分别是多少\n const hiddenHalf = (this.style.imgW - innerWidth) / 2\n const leftWidth = ev.clientX + hiddenHalf\n const rightWidth = this.style.imgW - leftWidth\n // 计算鼠标向左或向右移动 1 像素时,图片应该移动多少像素。取比较大的一个值\n onePxMoveX = Math.max(\n leftWidth / ev.clientX,\n rightWidth / (innerWidth - ev.clientX)\n )\n }\n // 计算纵向的 onePxMove\n let onePxMoveY = this.style.imgH / window.innerHeight\n if (this.style.imgH > window.innerHeight) {\n // 如果图片高度超出窗口可视高度,下载器会把图片从顶部显示。此时需要特殊处理 onePxMove\n // 让鼠标从当前位置向下到窗口底部时,可以完整查看整个图片\n onePxMoveY =\n (this.style.imgH - ev.clientY) / (window.innerHeight - ev.clientY)\n }\n // 比较水平方向和垂直方向的计算结果,取比较大的一个值\n // onePxMove 乘以修正系数,进行放大\n // 这样可以让用户在移动鼠标时,不需要移动到边界上就可以查看到图片的边界\n this.onePxMove = Math.max(onePxMoveX, onePxMoveY) * 1.1\n\n // 设置样式,显示图片\n this.setWrapStyle()\n this.show = true\n }\n\n // 以鼠标所在位置为中心点缩放\n // 例如,鼠标放在角色的眼睛上面进行缩放,在缩放之后,依然把眼睛定位到鼠标所在位置\n // 当用户滚动鼠标滚轮时,传递鼠标相对于原图区域的坐标(不包含 border)\n private zoomWrap(ev: MouseEvent, zoomAdd: boolean) {\n // 设置 zoom 等级\n const oldZoom = this.zoom\n const oldZoomIndex = this.zoomIndex\n let cancel = false\n\n this.zoomIndex += zoomAdd ? 1 : -1\n this.zoom = this.zoomList[this.zoomIndex]\n if (this.zoom === undefined) {\n cancel = true\n }\n\n // 检查缩放后的图片的尺寸是否超出了限制\n const testWidth = this.style.imgW * this.zoom\n const testHeight = this.style.imgH * this.zoom\n if (Math.max(testWidth, testHeight) > 30000) {\n cancel = true\n }\n\n if (cancel) {\n this.zoom = oldZoom\n this.zoomIndex = oldZoomIndex\n return\n }\n\n // 启动缩放\n this.style.width = this.style.imgW * this.zoom\n this.style.height = this.style.imgH * this.zoom\n\n // 计算这次缩放相对于上次缩放增加的倍率(容器的尺寸会增加多少倍)\n const zoom = (this.zoom - oldZoom!) / oldZoom!\n // 缩放之前,鼠标与容器顶点形成了一个矩形(0, 0, offsetX, offsetY)\n // 计算这个矩形在缩放之后,相比于缩放之前增加了多少像素\n const offsetXAdd = ev.offsetX * zoom\n const offsetYAdd = ev.offsetY * zoom\n\n // 对缩放之前的 margin 值加以修改,使缩放之前的鼠标位置的图像现在仍然位于鼠标位置\n this.style.ml = this.style.ml - offsetXAdd\n this.style.mt = this.style.mt - offsetYAdd\n this.setWrapStyle()\n }\n\n private moveWrap(ev: MouseEvent) {\n // 计算鼠标距离上次执行时,移动的距离\n const mouseMoveX = ev.clientX - this.moveX\n const mouseMoveY = ev.clientY - this.moveY\n\n // 在水平方向上应该移动多少像素\n let moveX = mouseMoveX * this.onePxMove * this.zoom\n // 在垂直方向上应该移动多少像素\n let moveY = mouseMoveY * this.onePxMove * this.zoom\n\n // 设置容差值,允许图像的边界与可视区域之间存在空隙\n // 例如,本来图片的左侧与可视区域的左侧重合时,就不应该允许图片继续向右移动了。\n // 现在设置了容差值,使图片可以继续向右移动 tolerance 像素。\n // 这样可以让用户知道已经移动到了图片的边缘,避免用户产生疑惑。\n const tolerance = 10\n let ml: number | undefined\n let mt: number | undefined\n\n // 鼠标向左移动,wrap 向右移动,ml 增加\n if (mouseMoveX < 0) {\n // 如果 wrap 左侧还有被隐藏的部分,才允许向右移动\n if (this.style.ml < tolerance) {\n ml = this.style.ml - moveX\n }\n }\n // 鼠标向右移动,wrap 向左移动,ml 减少\n if (mouseMoveX > 0) {\n // 如果 wrap 右侧还有被隐藏的部分,才允许向左移动\n if (this.style.ml + this.style.width > window.innerWidth - tolerance) {\n ml = this.style.ml - moveX\n }\n }\n\n // 鼠标向上移动,warp 向下移动,mt 增加\n if (mouseMoveY < 0) {\n // 如果 wrap 顶部还有被隐藏的部分,才允许向下移动\n if (this.style.mt < tolerance) {\n mt = this.style.mt - moveY\n }\n }\n // 鼠标向下移动,warp 向上移动,mt 减少\n if (mouseMoveY > 0) {\n // 如果 wrap 底部还有被隐藏的部分,才允许向上移动\n if (this.style.mt + this.style.height > window.innerHeight - tolerance) {\n mt = this.style.mt - moveY\n }\n }\n\n // 设置 margin 时,需要检查容器是否处于可视区域之外。如果超出了可视区域则不赋值\n if (ml !== undefined) {\n if (\n (ml > 0 && ml < window.innerWidth) ||\n (ml < 0 && ml + this.style.width > tolerance)\n ) {\n // 如果 ml 小于 0,其右边的坐标不可以小于 0\n this.style.ml = ml\n }\n }\n if (mt !== undefined) {\n if (\n (mt > 0 && mt < window.innerHeight) ||\n (mt < 0 && mt + this.style.height > tolerance)\n ) {\n // 如果 mt 小于 0,其底边的坐标不可以小于 0\n this.style.mt = mt\n }\n }\n\n this.setWrapStyle()\n }\n\n private setWrapStyle() {\n this.wrap.style.width = this.style.width + 'px'\n this.wrap.style.height = this.style.height + 'px'\n this.wrap.style.marginTop = this.style.mt + 'px'\n this.wrap.style.marginLeft = this.style.ml + 'px'\n\n this.previewUgoira &&\n this.previewUgoira.setSize(this.style.width, this.style.height)\n }\n\n public setData(urls: Urls, data: ArtworkData, index: number) {\n this.urls = urls\n this.workData = data\n this.index = index\n }\n\n public hide() {\n this.show = false\n }\n}\n\nconst showOriginSizeImage = new ShowOriginSizeImage()\nexport { showOriginSizeImage }\n","import { lang } from './Lang'\nimport { Config } from './Config'\nimport { msgBox } from './MsgBox'\nimport { Utils } from './utils/Utils'\nimport { EVT } from './EVT'\nimport { setSetting, settings } from './setting/Settings'\n\n// 显示最近更新内容\nclass ShowWhatIsNew {\n constructor() {\n this.bindEvents()\n }\n\n private flag = '16.8.0'\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingInitialized, () => {\n // 消息文本要写在 settingInitialized 事件回调里,否则它们可能会被翻译成错误的语言\n let msg = `\n ${lang.transl('_新增功能')}:\n
        \n ${lang.transl('_同步收藏列表的说明')}\n \n
        \n
        \n ${lang.transl('_其他优化')}\n `\n // ${lang.transl(\n // '_你可以在更多选项卡的xx分类里找到它',\n // lang.transl('_增强')\n // )}\n\n // ${lang.transl('_其他优化')}\n\n // 在更新说明的下方显示赞助提示\n msg += `\n
        \n
        \n ${lang.transl('_赞助方式提示')}`\n\n this.show(msg)\n })\n }\n\n private show(msg: string) {\n if (Utils.isPixiv() && settings.whatIsNewFlag !== this.flag) {\n msgBox.show(msg, {\n title: Config.appName + ` ${lang.transl('_最近更新')}`,\n btn: lang.transl('_我知道了'),\n })\n setSetting('whatIsNewFlag', this.flag)\n }\n }\n}\n\nnew ShowWhatIsNew()\n","import { EVT } from './EVT'\nimport { ImageViewer } from './ImageViewer'\nimport { settings } from './setting/Settings'\nimport { artworkThumbnail } from './ArtworkThumbnail'\nimport { Config } from './Config'\n\n// 在作品缩略图上显示放大按钮,点击按钮会调用图片查看器来查看大图\nclass ShowZoomBtnOnThumb {\n constructor() {\n if (Config.mobile) {\n return\n }\n\n this.addBtn()\n this.bindEvents()\n }\n\n private btn!: HTMLButtonElement\n private btnId = 'zoomBtnOnThumb'\n private btnSize: number[] = [32, 32]\n private hiddenBtnTimer = 0 // 使用定时器让按钮延迟消失。这是为了解决一些情况下按钮闪烁的问题\n private hiddenBtnDelay = 100\n\n private currentWorkId = '' // 显示放大按钮时,保存触发事件的作品 id\n\n private doNotShowBtn = false // 当点击了放大按钮后,进入此状态,此状态中不会显示放大按钮\n // 此状态是为了解决这个问题:点击了放大按钮之后,按钮会被隐藏,隐藏之后,鼠标下方就是图片缩略图区域,这会触发缩略图的鼠标事件,导致放大按钮马上就又显示了出来。所以点击放大按钮之后设置这个状态,在其为 true 的期间不会显示放大按钮。过一段时间再把它复位。复位所需的时间很短,因为只要能覆盖这段时间就可以了:从隐藏放大按钮开始算起,到缩略图触发鼠标事件结束。\n\n private addBtn() {\n const btn = document.createElement('button')\n btn.id = this.btnId\n btn.innerHTML = `\n \n \n`\n this.btn = document.body.appendChild(btn)\n }\n\n private bindEvents() {\n // 页面切换时隐藏按钮\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.hiddenBtn()\n })\n\n window.addEventListener(EVT.list.clickBtnOnThumb, () => {\n this.hiddenBtnNow()\n })\n\n // 页面切换时隐藏按钮\n window.addEventListener(EVT.list.crawlStart, () => {\n this.hiddenBtn()\n })\n\n // 鼠标移入按钮时取消隐藏按钮\n this.btn.addEventListener('mouseenter', (ev) => {\n window.clearTimeout(this.hiddenBtnTimer)\n })\n\n // 鼠标移出按钮时隐藏按钮\n this.btn.addEventListener('mouseleave', () => {\n this.hiddenBtn()\n })\n\n // 点击按钮时初始化图片查看器\n this.btn.addEventListener('click', (ev) => {\n this.hiddenBtnNow()\n EVT.fire('clickBtnOnThumb')\n\n if (this.currentWorkId) {\n const viewer = new ImageViewer({\n workId: this.currentWorkId,\n imageNumber: 1,\n imageSize: settings.magnifierSize,\n autoStart: true,\n showLoading: true,\n })\n viewer.init()\n }\n })\n\n artworkThumbnail.onEnter((el: HTMLElement, id: string) => {\n this.currentWorkId = id\n this.showBtn(el)\n })\n\n artworkThumbnail.onLeave(() => {\n this.hiddenBtn()\n })\n }\n\n // 显示放大按钮\n private showBtn(target: HTMLElement) {\n if (this.doNotShowBtn) {\n return\n }\n if (!settings.magnifier) {\n return\n }\n\n window.clearTimeout(this.hiddenBtnTimer)\n const rect = target.getBoundingClientRect()\n this.btn.style.left =\n window.scrollX +\n rect.left +\n (settings.magnifierPosition === 'left'\n ? 0\n : rect.width - this.btnSize[0]) +\n 'px'\n this.btn.style.top = window.scrollY + rect.top + 'px'\n this.btn.style.display = 'flex'\n }\n\n // 延迟隐藏放大按钮\n private hiddenBtn() {\n window.clearTimeout(this.hiddenBtnTimer)\n this.hiddenBtnTimer = window.setTimeout(() => {\n this.btn.style.display = 'none'\n }, this.hiddenBtnDelay)\n }\n\n // 立刻隐藏放大按钮\n private hiddenBtnNow() {\n this.doNotShowBtn = true\n window.setTimeout(() => {\n this.doNotShowBtn = false\n }, 100)\n\n window.clearTimeout(this.hiddenBtnTimer)\n this.btn.style.display = 'none'\n }\n}\n\nnew ShowZoomBtnOnThumb()\n","import { Config } from './Config'\nimport { EVT } from './EVT'\nimport { Utils } from './utils/Utils'\n\ntype ThemeName = 'white' | 'dark'\n\n// 下载器的主题默认跟随页面主题。如果用户设置了下载器主题,则不再跟随页面主题\nclass Theme {\n constructor() {\n if (Utils.isPixiv()) {\n this.bindEvents()\n }\n }\n\n private readonly allTheme = ['white', 'dark']\n\n private readonly defaultTheme: ThemeName = 'white' // 默认主题\n\n private theme: ThemeName = 'white' // 保存当前使用的主题\n\n private settingTheme = '' // 保存用户设置的下载器主题\n\n // 主题标记以及对应的 className\n // 把需要响应主题变化的元素注册到这个组件里,元素会被添加当前主题的 className\n // 默认主题 white 是没有 className 的,其他主题通过对应的 className,在默认主题的基础上更改样式。\n private readonly classNameMap = new Map([\n ['white', ''],\n ['dark', 'theme-dark'],\n ])\n\n private readonly selector = '#gtm-var-theme-kind' // 通过这个选择器查找含有主题标记的元素\n\n private timer = 0\n\n // 页面上储存的主题标记,与本组件里的主题的对应关系\n private readonly htmlFlagMap: Map = new Map([\n ['', 'white'],\n ['default', 'white'],\n ['dark', 'dark'],\n ])\n\n private elList: Element[] = [] // 保存已注册的元素\n\n private bindEvents() {\n // 主题设置变化时修改主题\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'theme') {\n this.settingTheme = data.value\n this.setTheme(data.value)\n }\n })\n\n // 使用定时器查找标记元素\n this.timer = window.setInterval(() => {\n this.findFlag()\n }, 300)\n }\n\n // 查找含有 pixiv 主题标记的元素,并监听其变化\n private findFlag() {\n if (Config.mobile) {\n const el = document.body\n if (el) {\n window.clearInterval(this.timer)\n this.setTheme(this.getThemeFromHtml())\n // 监听 body 的 class 变化\n const ob = new MutationObserver(() => {\n const flag = this.getThemeFromHtml()\n this.setTheme(flag)\n })\n ob.observe(el, {\n attributes: true,\n attributeFilter: ['class'],\n })\n }\n } else {\n const el = document.querySelector(this.selector) as HTMLElement\n if (el) {\n window.clearInterval(this.timer)\n this.setTheme(this.getThemeFromHtml())\n // 监听标记元素的 textContent 变化\n const ob = new MutationObserver((mutationsList) => {\n for (const item of mutationsList) {\n if (item.type === 'characterData') {\n const flag = this.getThemeFromHtml()\n this.setTheme(flag)\n break\n }\n }\n })\n ob.observe(el, {\n characterData: true,\n subtree: true,\n })\n }\n }\n }\n\n private getThemeFromHtml(): ThemeName {\n if (Config.mobile) {\n // 移动端需要使用不同的方法来获取主题\n const dark = document.body.classList.contains('dark')\n const pageTheme = dark ? 'dark' : 'white'\n EVT.fire('getPageTheme', pageTheme!)\n return pageTheme\n } else {\n // 桌面端\n // 从含有 pixiv 主题标记的元素里获取主题\n const el = document.querySelector(this.selector) as HTMLElement\n if (el) {\n const pageTheme = this.htmlFlagMap.get(el.textContent!)\n EVT.fire('getPageTheme', pageTheme!)\n return pageTheme || this.defaultTheme\n }\n\n // 根据 html 元素的背景颜色判断\n // 此方法不适用于移动端,因为移动端的 html 背景色总是 'rgba(0, 0, 0, 0)'\n // \"rgb(245, 245, 245)\"\n // \"rgb(0, 0, 0)\"\n const htmlBG = getComputedStyle(document.documentElement)[\n 'backgroundColor'\n ]\n if (htmlBG) {\n if (htmlBG.includes('rgb(2')) {\n return 'white'\n } else if (htmlBG.includes('rgb(0')) {\n return 'dark'\n }\n }\n\n return this.defaultTheme\n }\n }\n\n private setTheme(flag: string) {\n // 如果用户设置了下载器主题,则始终使用下载器主题(忽略页面主题)\n if (this.allTheme.includes(this.settingTheme)) {\n flag = this.settingTheme\n }\n\n let result: ThemeName = 'white' // 储存根据标记所选择的主题\n\n // 根据标记,设置要使用的主题\n switch (flag) {\n case 'white':\n result = 'white'\n break\n case 'dark':\n result = 'dark'\n break\n default:\n // 如果传递的值是本模块不能识别的,包括 'auto',就都自动获取\n result = this.getThemeFromHtml() || this.defaultTheme\n break\n }\n\n // 如果计算出的主题和当前主题不同,则执行变化\n if (result !== this.theme) {\n this.theme = result\n\n for (const el of this.elList) {\n this.setClass(el)\n }\n }\n }\n\n // 把元素注册到本组件里\n public register(el: Element) {\n if (!Utils.isPixiv()) {\n return\n }\n\n this.elList.push(el)\n this.setClass(el)\n }\n\n // 给元素设置主题对应的 className\n private setClass(el: Element) {\n // 先清除所有主题颜色的 className\n for (const className of this.classNameMap.values()) {\n if (el.classList.contains(className)) {\n el.classList.remove(className)\n }\n }\n // 添加当前主题对应的 className\n const name = this.classNameMap.get(this.theme)\n name && el.classList.add(name)\n }\n}\n\nconst theme = new Theme()\nexport { theme }\n","interface MouseArg {\n type: number\n x: number\n y: number\n}\n\n// 给下载器的界面元素添加提示文本,当鼠标移动到元素上时会显示提示\n// 如果要给某个元素添加提示,先给它添加 has_tip 的 className,然后用 data-tip 设置提示内容\nclass Tip {\n constructor() {\n this.addTipEl()\n this.bindEvents()\n }\n private tipEl!: HTMLDivElement\n\n private addTipEl() {\n this.tipEl = document.createElement('div')\n this.tipEl.id = 'tip'\n document.body.append(this.tipEl)\n }\n\n private bindEvents() {\n const tips = document.querySelectorAll(\n '.has_tip'\n ) as NodeListOf\n for (const el of tips) {\n for (const ev of ['mouseenter', 'mouseleave']) {\n el.addEventListener(ev, (event) => {\n const e = (event || window.event) as MouseEvent\n const text = el.dataset.tip\n this.showTip(text, {\n type: ev === 'mouseenter' ? 1 : 0,\n x: e.clientX,\n y: e.clientY,\n })\n })\n }\n }\n }\n\n // 显示中间面板上的提示。参数 mouse 指示鼠标是移入还是移出,并包含鼠标坐标\n private showTip(text: string | undefined, mouse: MouseArg) {\n if (!text) {\n throw new Error('No tip text.')\n }\n\n if (mouse.type === 1) {\n this.tipEl.innerHTML = text\n this.tipEl.style.left = mouse.x + 30 + 'px'\n this.tipEl.style.top = mouse.y - 30 + 'px'\n this.tipEl.style.display = 'block'\n } else if (mouse.type === 0) {\n this.tipEl.style.display = 'none'\n }\n }\n}\n\nnew Tip()\n","import { Colors } from './Colors'\nimport { Config } from './Config'\n\n// 可选参数\nexport interface ToastArgOptional {\n /**设置字体颜色,默认为白色 */\n color?: string\n /**设置背景颜色。默认为浅蓝色,或者是语义所对应的颜色 */\n bgColor?: string\n /**设置提示出现后的停留时间(毫秒),默认 1500 ms */\n stay?: number\n /**出现时的动画效果\n *\n * up 默认值,向上移动一段距离并逐渐显示\n *\n * fade 逐渐显示\n *\n * none 立即显示\n */\n enter?: 'up' | 'fade' | 'none'\n /**消失时的动画效果\n *\n * fade 默认值,逐渐消失\n *\n * up 向上移动一段距离并逐渐消失\n *\n * none 立即消失\n */\n leave?: 'up' | 'fade' | 'none'\n /**提示出现的位置\n *\n * topCenter 出现在屏幕上方,水平居中\n *\n * center 出现在屏幕正中央(实际上会稍微偏上一点点)\n *\n * mouse 默认值,提示出现在鼠标光标附近\n */\n position?: 'topCenter' | 'center' | 'mouse'\n}\n\n// 完整的参数\ninterface ToastArg {\n msg: string\n color: string\n bgColor: string\n dealy: number\n enter: 'up' | 'fade' | 'none'\n leave: 'up' | 'fade' | 'none'\n position: 'topCenter' | 'center' | 'mouse'\n}\n\n// 轻提示,只显示文字和背景颜色\n// 适用于无需用户进行确认的提示\nclass Toast {\n constructor() {\n this.bindEvents()\n }\n\n private readonly defaultCfg: ToastArg = {\n msg: '',\n color: Colors.white,\n bgColor: Colors.bgBrightBlue,\n dealy: 1500,\n enter: 'up',\n leave: 'fade',\n position: 'mouse',\n }\n\n private readonly successCfg: ToastArg = {\n msg: '',\n color: Colors.white,\n bgColor: Colors.bgSuccess,\n dealy: 1500,\n enter: 'up',\n leave: 'fade',\n position: 'mouse',\n }\n\n private readonly warningCfg: ToastArg = {\n msg: '',\n color: Colors.white,\n bgColor: Colors.bgWarning,\n dealy: 1500,\n enter: 'up',\n leave: 'fade',\n position: 'mouse',\n }\n\n private readonly errorCfg: ToastArg = {\n msg: '',\n color: Colors.white,\n bgColor: Colors.bgError,\n dealy: 1500,\n enter: 'up',\n leave: 'fade',\n position: 'mouse',\n }\n\n private readonly tipClassName = 'xzToast'\n\n private mousePosition = { x: 0, y: 0 }\n private readonly minTop = 20\n\n private readonly once = 1 // 每一帧移动多少像素\n private readonly total = 20 // 移动多少像素后消失\n\n private bindEvents() {\n // 必须是监听 mousemove 而不是 click\n window.addEventListener('mousemove', (ev) => {\n this.mousePosition.x = ev.x\n this.mousePosition.y = ev.y\n })\n }\n\n public show(msg: string, arg?: ToastArgOptional) {\n this.create(Object.assign({}, this.defaultCfg, arg, { msg: msg }))\n }\n\n public success(msg: string, arg?: ToastArgOptional) {\n this.create(Object.assign({}, this.successCfg, arg, { msg: msg }))\n }\n\n public warning(msg: string, arg?: ToastArgOptional) {\n this.create(Object.assign({}, this.warningCfg, arg, { msg: msg }))\n }\n\n public error(msg: string, arg?: ToastArgOptional) {\n this.create(Object.assign({}, this.errorCfg, arg, { msg: msg }))\n }\n\n private create(arg: ToastArg) {\n const span = document.createElement('span')\n span.textContent = arg.msg\n\n span.style.color = arg.color\n\n // 设置背景颜色,优先使用 color\n span.style.backgroundColor = arg.bgColor\n span.style.opacity = '0' // 先使提示完全透明\n\n span.classList.add(this.tipClassName)\n if (Config.mobile) {\n span.classList.add('mobile')\n }\n\n // 把提示添加到页面上\n document.body.appendChild(span)\n\n // 设置 left,使其居中\n\n // 默认的中间点是窗口的中间\n let centerPoint = window.innerWidth / 2\n\n if (arg.position === 'mouse') {\n // 把中间点设置为鼠标所处的位置\n centerPoint = this.mousePosition.x\n }\n\n // 设置 left\n const rect = span.getBoundingClientRect()\n let left = centerPoint - rect.width / 2\n const minLeft = 0 // 防止提示左侧超出窗口\n const maxLeft = window.innerWidth - rect.width // 防止提示右侧超出窗口\n if (left < minLeft) {\n left = minLeft\n }\n if (left > maxLeft) {\n left = maxLeft\n }\n span.style.left = left + 'px'\n\n // 设置 top\n let lastTop = 0\n\n if (arg.position === 'topCenter') {\n lastTop = this.minTop\n }\n if (arg.position === 'center') {\n lastTop = window.innerHeight / 2 - this.minTop\n }\n if (arg.position === 'mouse') {\n // 跟随鼠标位置\n // top 值减去一点高度,使文字出现在鼠标上方\n let y = this.mousePosition.y - 40\n if (y < this.minTop) {\n y = this.minTop\n }\n lastTop = y\n }\n\n // 出现动画\n if (arg.enter === 'none') {\n span.style.top = lastTop + 'px'\n span.style.opacity = '1'\n } else {\n this.enter(span, arg.enter, lastTop)\n }\n\n // 消失动画\n window.setTimeout(() => {\n if (arg.leave === 'none') {\n span.remove()\n } else {\n this.leave(span, arg.leave, lastTop)\n }\n }, arg.dealy)\n }\n\n // 提示出现的动画\n private enter(el: HTMLElement, way: 'up' | 'fade', lastTop: number) {\n const startTop = lastTop + this.total // 初始 top 值\n const once = 2\n const total = this.total\n\n let numberOfTimes = 0 // 执行次数\n\n const frame = function (timestamp: number) {\n numberOfTimes++\n\n // 计算总共上移了多少像素\n const move = once * numberOfTimes\n\n // 计算不透明度\n const opacity = move / total\n\n if (move <= total && opacity <= 1) {\n if (way === 'up') {\n el.style.top = startTop - move + 'px'\n }\n\n el.style.opacity = opacity.toString()\n\n // 请求下一帧\n window.requestAnimationFrame(frame)\n }\n }\n\n window.requestAnimationFrame(frame)\n }\n\n // 提示消失的动画\n private leave(el: HTMLElement, way: 'up' | 'fade', lastTop: number) {\n const startTop = lastTop // 初始 top 值\n const once = this.once\n const total = this.total\n\n let numberOfTimes = 0 // 执行次数\n\n const frame = function (timestamp: number) {\n numberOfTimes++\n\n // 计算总共上移了多少像素\n const move = once * numberOfTimes\n\n // 计算不透明度\n const opacity = 1 - move / total\n\n if (move < total && opacity > 0) {\n if (way === 'up') {\n el.style.top = startTop - move + 'px'\n }\n\n el.style.opacity = opacity.toString()\n\n // 请求下一帧\n window.requestAnimationFrame(frame)\n } else {\n // 动画执行完毕,删除元素\n el.remove()\n }\n }\n\n window.requestAnimationFrame(frame)\n }\n}\n\nconst toast = new Toast()\nexport { toast }\n","import { Config } from './Config'\nimport { EVT } from './EVT'\nimport { Utils } from './utils/Utils'\n\n// 获取和保存 token\nclass Token {\n constructor() {\n if (Utils.isPixiv()) {\n this.token = this.getToken()\n this.updateToken()\n this.bindEvents()\n }\n }\n\n private readonly tokenStore = 'xzToken'\n private readonly timeStore = 'xzTokenTime'\n private readonly updateURL = 'https://www.pixiv.net/artworks/62751951'\n\n public token!: string\n\n private bindEvents() {\n // 重置设置时重新获取一次 token\n window.addEventListener(EVT.list.resetSettingsEnd, () => {\n this.reset()\n })\n }\n\n private getToken() {\n const token = localStorage.getItem(this.tokenStore)\n return token ? token : ''\n }\n\n private interval = 300000 // 两次更新之间的最小时间间隔。目前设置为 5 分钟\n private async updateToken() {\n const nowTime = new Date().getTime()\n const lastTimeStr = localStorage.getItem(this.timeStore)\n\n if (\n this.token &&\n lastTimeStr &&\n nowTime - Number.parseInt(lastTimeStr) < this.interval\n ) {\n return\n }\n\n // 从网页源码里获取用户 token 并储存\n return fetch(this.updateURL)\n .then((response) => {\n return response.text()\n })\n .then((data) => {\n const regExp = Config.mobile ? /postKey\":\"(\\w+)\"/ : /token\":\"(\\w+)\"/\n const result = data.match(regExp)\n if (result) {\n this.token = result[1]\n }\n\n if (this.token) {\n localStorage.setItem(this.tokenStore, this.token)\n localStorage.setItem(this.timeStore, new Date().getTime().toString())\n } else {\n console.error('UpdateToken failed: no token found!')\n }\n })\n }\n\n // 不论用户是否登录,都有 token,所以不能根据 token 来判断用户是否登录\n // 在桌面端,如果存在下面的字符串,则说明用户未登录:\n // \"userData\":null\n\n public async reset() {\n this.token = ''\n localStorage.removeItem(this.tokenStore)\n localStorage.removeItem(this.timeStore)\n return this.updateToken()\n }\n}\n\nconst token = new Token()\nexport { token }\n","import { Config } from './Config'\nimport { ArtworkData, NovelData } from './crawl/CrawlResult'\nimport { lang } from './Lang'\nimport { pageType } from './PageType'\nimport { WorkTypeString, Result } from './store/StoreType'\nimport { Utils } from './utils/Utils'\n\ntype artworkDataTagsItem = {\n tag: string\n locked: boolean\n deletable: boolean\n userId: string\n romaji: string\n translation?:\n | {\n en: string\n }\n | undefined\n userName: string\n}\n\ntype novelDataTagsItem = {\n tag: string\n locked: boolean\n deletable: boolean\n userId: string\n userName: string\n}\n\nclass Tools {\n // 把结果中的动图排列到最前面\n static sortUgoiraFirst(a: Result, b: Result) {\n if (a.type === 2 && b.type !== 2) {\n return -1\n } else if (a.type === 2 && b.type === 2) {\n return 0\n } else {\n return 1\n }\n }\n\n // 根据 tag 判断是否是 R-18(G) 作品\n static isR18OrR18G(tags: string | string[]) {\n const str: string = Array.isArray(tags) ? tags.toString() : tags\n\n return (\n str.includes('R-18') ||\n str.includes('R-18G') ||\n str.includes('R18') ||\n str.includes('R18G')\n )\n }\n\n // 在不同的页面类型里,尝试从 url 中获取 tag\n static getTagFromURL(url: string = location.href) {\n const nowURL = new URL(url)\n\n // 2 用户作品列表页\n if (/\\/users\\/\\d+/.test(url) && !url.includes('/bookmarks')) {\n // 匹配 pathname 里用户 id 之后的字符\n const test = nowURL.pathname.match(/\\/users\\/\\d+(\\/.+)/)\n if (test && test.length === 2) {\n const str = test[1]\n // 如果用户 id 之后的字符多于一个路径,则把最后一个路径作为 tag,示例\n // https://www.pixiv.net/users/2188232/illustrations/ghostblade\n const array = str.split('/')\n // [\"\", \"illustrations\", \"ghostblade\"]\n if (array.length > 2) {\n return decodeURIComponent(array[array.length - 1])\n }\n }\n }\n\n // 4 旧版收藏页面\n if (nowURL.pathname === '/bookmark.php') {\n if (parseInt(Utils.getURLSearchField(nowURL.href, 'untagged')) === 1) {\n // 旧版 “未分类” tag 是个特殊标记\n // https://www.pixiv.net/bookmark.php?untagged=1\n return '未分類'\n }\n }\n\n // 4 新版收藏页面\n if (nowURL.pathname.includes('/bookmarks/')) {\n // 新版收藏页 url,tag 在路径末端,如\n // https://www.pixiv.net/users/9460149/bookmarks/artworks/R-18\n // https://www.pixiv.net/users/9460149/bookmarks/novels/R-18\n const test = /\\/bookmarks\\/\\w*\\/(.[^\\/|^\\?|^&]*)/.exec(nowURL.pathname)\n if (test !== null && test.length > 1 && !!test[1]) {\n return decodeURIComponent(test[1])\n }\n }\n\n // 5 搜索页面\n if (nowURL.pathname.includes('/tags/')) {\n return decodeURIComponent(nowURL.pathname.split('tags/')[1].split('/')[0])\n }\n\n // 默认情况,从查询字符串里获取,如下网址\n // https://www.pixiv.net/bookmark.php?tag=R-18\n return decodeURIComponent(Utils.getURLSearchField(nowURL.href, 'tag'))\n }\n\n /**从 url 里获取 artworks id。如果查找不到 id 会返回空字符串 */\n static getIllustId(url?: string) {\n if (pageType.type === pageType.list.Unlisted) {\n return Utils.getURLPathField(window.location.pathname, 'unlisted')\n }\n\n const str = url || window.location.href\n\n let test: RegExpExecArray | null = null\n\n if (str.includes('/artworks/')) {\n // 新版 url\n test = /artworks\\/(\\d*\\d)/.exec(str)\n } else if (str.includes('illust_id')) {\n // 传统 url\n test = /illust_id=(\\d*\\d)/.exec(str)\n }\n\n if (test && test.length > 1) {\n return test[1]\n } else {\n return ''\n }\n }\n\n /**从 url 里获取 novel id。如果查找不到 id 会返回空字符串 */\n // https://www.pixiv.net/novel/show.php?id=12771688\n static getNovelId(url?: string) {\n if (pageType.type === pageType.list.Unlisted) {\n return Utils.getURLPathField(window.location.pathname, 'unlisted')\n }\n\n const str = url || window.location.href\n let result = ''\n\n const test = str.match(/novel\\/show.php\\?id=(\\d*)?/)\n if (test && test.length > 1) {\n result = test[1]\n }\n\n return result\n }\n\n /**从 DOM 元素中获取作品的 id\n *\n * 如果查找不到 id 会返回空字符串\n */\n static findWorkIdFromElement(\n el: HTMLElement,\n type: 'illusts' | 'novels' = 'illusts'\n ): string {\n let a: HTMLAnchorElement\n if (el.nodeName === 'A') {\n a = el as HTMLAnchorElement\n } else {\n if (type === 'illusts') {\n a = el.querySelector('a[href*=\"/artworks/\"]') as HTMLAnchorElement\n } else {\n a = el.querySelector('a[href*=\"/novel/show\"]') as HTMLAnchorElement\n }\n }\n if (!a) {\n return ''\n }\n if (type === 'illusts') {\n return this.getIllustId(a.href)\n } else {\n return this.getNovelId(a.href)\n }\n }\n\n // 获取当前页面的用户 id\n // 这是一个不够可靠的 api\n // 测试:在作品页内 https://www.pixiv.net/artworks/79399027 获取 userId ,正确结果应该是 13895186\n static getUserId() {\n const newRegExp = /\\/users\\/(\\d+)/ // 获取 /users/ 后面连续的数字部分,也就是用户的 id\n\n // 列表页里从 url 中获取\n const test4 = newRegExp.exec(location.pathname)\n if (!!test4 && test4.length > 1 && !!test4[1]) {\n return test4[1]\n }\n\n // 获取包含用户 id 的元素,注意这些选择器可能会变,需要进行检查\n const testA: HTMLAnchorElement | null =\n document.querySelector('aside a') || document.querySelector('nav a')\n // 第一个元素是作品页内,作品下方的作者头像区域的 a 标签\n // 第一个元素是作品页内,页面右侧作者信息区域的 a 标签\n // 第二个元素是用户主页或列表页里,“主页”按钮的 a 标签\n if (testA && testA.href) {\n const test5 = newRegExp.exec(testA.href)\n if (!!test5 && test5.length > 1 && !!test5[1]) {\n return test5[1]\n }\n }\n\n // 从旧版页面的 head 元素的 script 脚本内容里匹配这一部分\n // pixiv.context.user.id = \"\"\n const test1 = /user.id = \"(\\d*)\"/.exec(document.head.innerHTML)\n if (test1 && test1.length > 0) {\n return test1[1]\n }\n\n // 从旧版页面的 head 元素的 script 脚本内容里匹配这一部分\n // pixiv.context.userId = \"\"\n const test2 = /userId = \"(\\d*)\"/.exec(document.head.innerHTML)\n if (test2 && test2.length > 0) {\n return test2[1]\n }\n\n // 最后从 body 里匹配\n // Warning :这有可能会匹配到错误的(其他)用户 id!\n const test3 = newRegExp.exec(document.body.innerHTML)\n if (test3) {\n return test3[1]\n }\n\n // 如果都没有获取到\n throw new Error('getUserId failed!')\n }\n\n static getLoggedUserID() {\n if (Config.mobile) {\n const match = document.head.innerHTML.match(/'user_id', (\\d*)/)\n if (match && match.length > 1) {\n return match[1]\n }\n }\n\n // 在新版页面里,从 head 里的 script 里匹配用户 id\n const match = document.head.innerHTML.match(/'user_id', \"(\\d*)\"/)\n if (match && match.length > 1) {\n return match[1]\n }\n\n const element = document.querySelector('#qualtrics_user-id')\n if (element) {\n const text = element.textContent\n if (text && /^\\d+\\d$/.test(text)) {\n return text\n }\n }\n\n {\n // 在旧版页面里,从 head 里的 script 里匹配用户 id\n const match2 = document.head.innerHTML.match(/pixiv.user.id = \"(\\d*)\"/)\n if (match2 && match2.length > 1) {\n return match2[1]\n }\n }\n\n {\n // 在约稿页面里,从 body 里的 script 里匹配用户 id\n const el = document.querySelector('script#gtm-datalayer')\n if (el && el.textContent) {\n const match3 = el.textContent.match(/user_id:'(\\d+)'/)\n if (match3 && match3.length > 1) {\n return match3[1]\n }\n }\n }\n\n return ''\n }\n\n // 将元素插入到 Pixiv 页面顶部\n /*\n newindex-inner 是在未登录时的用户作品列表页面使用的\n layout-body 是在未登录时的搜索页使用的\n */\n static insertToHead(el: T): T {\n if (document.body) {\n document.body.insertAdjacentElement('afterbegin', el)\n } else {\n ;(\n document.querySelector('.newindex-inner')! ||\n document.querySelector('.layout-body')!\n ).insertAdjacentElement('beforebegin', el)\n }\n return el\n }\n\n // 寻找 slot,本程序使用的 slot 都要有 data-name 属性\n static findSlot(name: string) {\n const slot = document.querySelector(`slot[data-name=${name}]`)\n if (!slot) {\n throw new Error(`No such slot: ${name}`)\n }\n return slot\n }\n\n // 使用指定的插槽\n static useSlot(name: string, element: string | HTMLElement) {\n const slot = this.findSlot(name)\n\n if (typeof element === 'string') {\n // 插入字符串形式的元素\n // 这里不直接使用 insertAdjacentElement 是为了可以返回生成的元素\n const wrap = document.createElement('div')\n wrap.innerHTML = element\n const el = wrap.children[0]\n slot.appendChild(el)\n return el\n } else {\n // 插入 html 元素\n slot.appendChild(element)\n return element\n }\n }\n\n // 清空指定的插槽\n static clearSlot(name: string) {\n this.findSlot(name).innerHTML = ''\n }\n\n // 创建下载面板上的通用按钮\n // 注意 textFlag 和 titleFlag 必须是 LangText 里存在的属性,这是为了能根据语言设置动态切换文本\n // 如果 text 和 title 是直接设置的字符串,那么不应该使用这个方法设置,而是由调用者自行设置\n static addBtn(\n slot: string,\n bg: string = '',\n textFlag: string = '',\n titleFlag: string = ''\n ) {\n const e = document.createElement('button')\n e.type = 'button'\n e.style.backgroundColor = bg\n textFlag && e.setAttribute('data-xztext', textFlag)\n titleFlag && e.setAttribute('data-xztitle', titleFlag)\n\n this.useSlot(slot, e)\n lang.register(e)\n return e\n }\n\n /**获取页面标题 */\n static getPageTitle() {\n // 删除下载器在标题上添加的状态,以及剩余文件数量的数字\n let result = document.title\n .replace(/\\[(↑|→|▶|↓|║|■|✓|☑| )\\]/, '')\n .replace(/^ (\\d+) /, '')\n\n // 如果开头有空格则去掉空格\n if (result.startsWith(' ')) {\n result = result.replace(/ */, '')\n }\n\n return result\n }\n\n // 自定义的类型保护\n /**判断 Tags 类型 */\n static isArtworkTags(\n data: artworkDataTagsItem | novelDataTagsItem\n ): data is artworkDataTagsItem {\n return (data).translation !== undefined\n }\n\n /**判断作品数据是图像作品还是小说作品 */\n static isArtworkData(data: ArtworkData | NovelData): data is ArtworkData {\n return (data).body.illustType !== undefined\n }\n\n static readonly chineseRegexp = /[一-龥]/\n /**从作品数据里提取出 tag 列表\n *\n * 可选参数 type:\n *\n * 'origin' 默认值,获取原版 tag\n *\n * 'transl' 获取翻译后的 tag。只有图片作品有翻译,小说作品的 tag 没有翻译。如果某个 tag 没有翻译,则会保存它的原版 tag\n *\n * 'both' 同时获取原版 tag 和翻译后的 tag。此时可能会有重复的值,所以返回值做了去重处理。\n */\n static extractTags(\n data: ArtworkData | NovelData,\n type: 'origin' | 'transl' | 'both' = 'origin'\n ) {\n const tags: string[] = []\n const tagsTransl: string[] = []\n\n const tagArr: artworkDataTagsItem[] | novelDataTagsItem[] =\n data.body.tags.tags\n\n for (const tagData of tagArr) {\n // 添加原版 tag\n tags.push(tagData.tag)\n\n // 添加翻译的 tag\n // 缺省使用原标签\n let useOriginTag = true\n if (this.isArtworkTags(tagData)) {\n // 不管是什么语种的翻译结果,都保存在 en 属性里\n if (tagData.translation && tagData.translation.en) {\n useOriginTag = false\n // 如果用户在 Pixiv 的页面语言是中文,则应用优化策略\n // 如果翻译后的标签是纯英文,则判断原标签是否含有至少一部分中文,如果是则使用原标签\n // 这是为了解决一些中文标签被翻译成英文的问题,如 原神 被翻译为 Genshin Impact\n // 能代(アズールレーン) Noshiro (Azur Lane) 也会使用原标签\n // 但是如果原标签里没有中文则依然会使用翻译后的标签,如 フラミンゴ flamingo\n if (lang.htmlLangType === 'zh-cn' || lang.htmlLangType === 'zh-tw') {\n const allEnglish = [].every.call(\n tagData.translation.en,\n function (s: string) {\n return s.charCodeAt(0) < 128\n }\n )\n if (allEnglish) {\n useOriginTag = this.chineseRegexp.test(tagData.tag)\n }\n }\n }\n }\n\n tagsTransl.push(\n useOriginTag ? tagData.tag : (tagData as any).translation.en\n )\n }\n\n if (type === 'origin') {\n return tags\n } else if (type === 'transl') {\n return Array.from(new Set(tagsTransl))\n } else {\n return Array.from(new Set(tags.concat(tagsTransl)))\n }\n }\n\n /**转换 thumb url\n *\n * 因为现在 pixiv 的多图作品的数据里,thumb url 只是第一张图的,后面的图片没有 thumb url 数据\n *\n * 此方法使用另一套缩略图 url,这样所有的图片都能够获得可用的缩略图 url\n */\n // 现在的多图作品,有些是所有图片都有 250px 的缩略图,此时作品数据里的 thubm url 含有 img-master,例如:\n // https://i.pximg.net/c/250x250_80_a2/img-master/img/2021/11/28/18/30/25/94433369_p0_square1200.jpg\n // 有些作品的 thumb url 里是 custom-thumb,例如:\n // https://i.pximg.net/c/250x250_80_a2/custom-thumb/img/2021/03/03/06/29/53/88179809_p0_custom1200.jpg\n // 这种只有第一张图有缩略图,后面的图片没有缩略图。对于这种情况,将其替换成所有图片都有缩略图的 url。(即第一种 url)\n static convertArtworkThumbURL(thumbURL: string, no: number | string) {\n return thumbURL\n .replace('250x250_80_a2/custom-thumb', '250x250_80_a2/img-master')\n .replace('custom1200', 'square1200')\n .replace('p0', 'p' + no)\n }\n\n static readonly convertThumbURLReg = /img\\/(.*)_.*1200/\n\n static convertThumbURLTo540px(url: string) {\n // 'https://i.pximg.net/c/250x250_80_a2/custom-thumb/img/2021/10/26/00/00/08/93686259_p0_custom1200.jpg'\n // 'https://i.pximg.net/c/250x250_80_a2/img-master/img/2019/06/23/17/29/27/75369283_square1200.jpg'\n // 排行榜页面的图片 URL 如:\n // 'https://i.pximg.net/c/240x480/img-master/img/2022/08/01/17/59/39/100156836_p0_master1200.jpg'\n const test = url.match(this.convertThumbURLReg)\n if (!test || !test[1]) {\n return url\n }\n // '2021/10/26/00/00/08/93686259_p0'\n // '2019/06/23/17/29/27/75369283'\n const array = test[1].split('/')\n const id_index = array.pop()\n const datetime = array.join('/')\n return `https://i.pximg.net/c/540x540_70/img-master/img/${datetime}/${id_index}_master1200.jpg`\n }\n\n // 旧版本的 Result 数据中没有 index 属性,使用此方法进行兼容性处理\n static getResultIndex(data: Result) {\n if (data.type === 0 || data.type === 1) {\n // 插画和漫画,从 id 里取出序号\n return parseInt(/\\d*$/.exec(data.id)![0])\n } else {\n // 其他作品类型只有 1 个文件所以值为 0\n return 0\n }\n }\n\n static isPremium() {\n // 在 body 的一个 script 标签里包含有当前用户是否是会员的信息\n // premium: 'yes'\n // premium: 'no'\n const test = document.body.innerHTML.match(/premium: '(\\w+)'/)\n if (test && test.length > 1) {\n return test[1] === 'yes'\n }\n\n return false\n }\n\n // 在小说页面,以及某些特定页面里,不启用\"显示更大的缩略图\"和“横图占用二倍宽度”功能\n static notEnabledShowLargerThumb() {\n if (\n window.location.pathname.includes('/novel') ||\n window.location.pathname.includes('/ranking_area') ||\n window.location.hostname.includes('pixivision.net')\n ) {\n return true\n }\n return false\n }\n\n // 传入作品 id,生成作品页面的超链接\n /**\n *\n * @param id 作品 id\n * @param artwork true 图像作品; false 小说作品。默认为图像作品\n * @returns 超链接(A 标签)\n */\n static createWorkLink(id: number | string, artwork = true) {\n const idNum = typeof id === 'number' ? id : Number.parseInt(id)\n const href = `https://www.pixiv.net/${artwork ? 'i' : 'n'}/${idNum}`\n return `${id}`\n }\n\n // 传入用户 id,生成用户页面的超链接\n /**\n *\n * @param userID 用户 id\n * @returns 超链接(A 标签)\n */\n static createUserLink(userID: number | string) {\n const idNum = typeof userID === 'number' ? userID : Number.parseInt(userID)\n const href = `https://www.pixiv.net/users/${idNum}`\n return `${idNum}`\n }\n\n /**替换 EPUB 文本里的特殊字符和换行符 */\n // 换行符必须放在最后处理,以免其 < 符号被替换\n // 把所有换行符统一成
        \n // 这是因为 epub 是 xhtml 格式,要求必须有闭合标记,所以
        是非法的,会导致小说无法被解析和阅读\n static replaceEPUBText(str: string) {\n return str\n .replace(/&/g, '&')\n .replace(//g, '
        ')\n .replace(/
        /g, '
        ')\n .replace(/\\n/g, '
        ')\n }\n\n /** 在 zip 压缩包里查找类似于 000000.jpg 的标记,返回它后面的位置的下标\n *\n * @param zipFile Zip 文件的内容\n * @param existingIndexList 可选传入一个已存在的索引列表。如果传入,那么这个方法在搜索 zip 文件里的图片时,不会查找已有索引的部分(也就是不会重复查找文件的前半部分),只会查找没有索引的部分\n * @returns number[] 返回一个索引列表的数组\n *\n */\n static getJPGContentIndex(\n zipFile: ArrayBuffer,\n existingIndexList?: number[]\n ) {\n let indexList: number[] = []\n if (existingIndexList && existingIndexList.length > 0) {\n indexList = existingIndexList\n }\n\n // 每次查找时,开始的位置\n let offset = 0\n // 循环的次数\n let loopTimes = 0\n while (true) {\n // 如果当前偏移量的后面有已经查找到的索引,就不必重复查找了\n // 跳过这次循环,下次直接从已有的索引后面开始查找\n if (indexList[loopTimes] !== undefined && offset < indexList[loopTimes]) {\n offset = indexList[loopTimes]\n ++loopTimes\n continue\n }\n\n let data: Uint8Array\n if (offset === 0) {\n // 一开始从数据开头查找\n data = new Uint8Array(zipFile)\n } else {\n // 每次查找之后,从上次查找结束的位置开始查找\n // 这样可以避免重复查找前面的数据\n data = new Uint8Array(zipFile, offset)\n }\n\n // 查找以 jpg 文件名的标记,如 000000.jpg\n // 其实文件内容里也可能会出现符合条件的数据,只是概率很小\n // 有些文件名后面有 PK 标记,如 000000.jpgPK,需要排除,因为这是 zip 的文件目录,不是图片\n const index = data.findIndex((val, index2, array) => {\n // 0 0 0 . j p g P\n if (\n val === 48 &&\n array[index2 + 1] === 48 &&\n array[index2 + 2] === 48 &&\n array[index2 + 6] === 46 &&\n array[index2 + 7] === 106 &&\n array[index2 + 8] === 112 &&\n array[index2 + 9] === 103 &&\n array[index2 + 10] !== 80\n ) {\n // const enc = new TextDecoder('utf-8')\n // const buff = data.slice(index2, index2 + 10)\n // console.log(enc.decode(buff))\n return true\n }\n return false\n })\n\n if (index !== -1) {\n const fileContentStart = offset + index + 10\n indexList[loopTimes] = fileContentStart\n offset = fileContentStart\n ++loopTimes\n } else {\n return indexList\n }\n }\n }\n\n /**从 zip 压缩包里提取出图像数据 */\n static async extractImage(\n zipFile: ArrayBuffer,\n indexList: number[],\n target: 'ImageBitmap'\n ): Promise\n\n static async extractImage(\n zipFile: ArrayBuffer,\n indexList: number[],\n target: 'img'\n ): Promise\n\n static async extractImage(\n zipFile: ArrayBuffer,\n indexList: number[],\n target: 'img' | 'ImageBitmap'\n ) {\n return new Promise(async (resolve, reject) => {\n const result: HTMLImageElement[] | ImageBitmap[] = []\n let i = 0\n for (const index of indexList) {\n // 起始位置\n const start = index\n // 截止下一个文件名之前\n // 删除不需要的数据:\n // 30 字节的是 zip 文件添加的数据,虽然没有实际影响,但还是去掉\n // 10 字节的是下一个 jpg 的文件名\n let end = indexList[i + 1] - 30 - 10\n if (i === indexList.length - 1) {\n // 如果是最后一个 jpg 文件,则截止到 zip 文件的结尾\n // 这导致它会包含 zip 的目录数据,但是不会影响图片的显示\n end = zipFile.byteLength\n }\n\n const blob = new Blob([zipFile.slice(start, end)], {\n type: 'image/jpeg',\n })\n if (target === 'ImageBitmap') {\n const map = await createImageBitmap(blob)\n ;(result as ImageBitmap[]).push(map)\n } else if (target === 'img') {\n const url = URL.createObjectURL(blob)\n const img = await Utils.loadImg(url)\n ;(result as HTMLImageElement[]).push(img)\n }\n ++i\n }\n resolve(result)\n })\n }\n\n /**根据 illustType,返回作品类型的描述字符串 */\n // 主要用于储存进 idList\n static getWorkTypeString(\n illustType: 0 | 1 | 2 | 3 | '0' | '1' | '2' | '3'\n ): WorkTypeString {\n switch (parseInt(illustType.toString())) {\n case 0:\n return 'illusts'\n case 1:\n return 'manga'\n case 2:\n return 'ugoira'\n case 3:\n return 'novels'\n default:\n return 'unknown'\n }\n }\n\n /**根据作品类型字符串,返回对应的数字 */\n static getWorkType(\n workTypeString: WorkTypeString\n ): 0 | 1 | 2 | 3 | undefined {\n switch (workTypeString) {\n case 'illusts':\n return 0\n case 'manga':\n return 1\n case 'ugoira':\n return 2\n case 'novels':\n return 3\n default:\n return undefined\n }\n }\n\n /**根据作品类型字符串,返回对应的数字。但是这里把插画、漫画、动图均返回 -1。\n * 这是因为某些时候无法确定一个图像作品到底属于哪一类型,所以用 -1 笼统的概括\n */\n static getWorkTypeVague(workTypeString: WorkTypeString): -1 | 3 | undefined {\n switch (workTypeString) {\n case 'illusts':\n case 'manga':\n case 'ugoira':\n return -1\n case 'novels':\n return 3\n default:\n return undefined\n }\n }\n\n static readonly AIMark: Map = new Map([\n ['zh-cn', 'AI生成'],\n ['zh-tw', 'AI生成'],\n ['en', 'AI-generated'],\n ['ja', 'AI生成'],\n ['ko', 'AI 생성'],\n ['ru', 'сгенерированный ИИ'],\n ])\n\n /**如果一个作品是 AI 生成的,则返回特定的字符串标记\n *\n * 这个标记就是作品页面里和标签列表显示在一起的字符串\n */\n static getAIGeneratedMark(aiType?: 0 | 1 | 2) {\n if (aiType === 2) {\n return this.AIMark.get(lang.htmlLangType)\n }\n return ''\n }\n\n static checkUserLogin() {\n // 如果有“登录”的超链接,则是未登录状态\n // 在桌面版和移动版网页里都有效\n const loginLink = document.querySelector('a[href^=\"/login\"]')\n if (loginLink) {\n return false\n }\n\n return true\n }\n\n static rangeRandom(start: number, end: number) {\n const difference = end - start\n const num = Math.ceil(Math.random() * difference)\n return start + num\n }\n\n /**格式化数字,每千位添加一个逗号,返回结果字符串 */\n static numberToString(int: number): string {\n let stringArray = Array.from(int.toString())\n\n let group: string[] = []\n\n let index = stringArray.length\n while (index > 0) {\n let array: string[] = []\n for (let times = 0; times < 3; times++) {\n index >= 0 && array.push(stringArray[--index])\n }\n group.push(array.reverse().join(''))\n }\n\n const result = group.reverse().join(',')\n return result\n }\n\n static readonly xRestrictMap = new Map([\n [0, 'AllAges'],\n [1, 'R-18'],\n [2, 'R-18G'],\n ])\n\n static getXRestrictText(number: number) {\n return this.xRestrictMap.get(number)\n }\n\n static readonly AIType = ['Unknown', 'No', 'Yes']\n\n static getAITypeText(number: number) {\n return this.AIType[number]\n }\n}\n\nexport { Tools }\n","import { API } from './API'\nimport { lang } from './Lang'\nimport { log } from './Log'\nimport { toast } from './Toast'\nimport { token } from './Token'\nimport { states } from './store/States'\nimport { WorkBookmarkData } from './Bookmark'\nimport { setTimeoutWorker } from './SetTimeoutWorker'\nimport { Config } from './Config'\n\nclass UnBookmarkWorks {\n public async start(list: WorkBookmarkData[]) {\n log.warning(lang.transl('_取消收藏作品'))\n if (list.length === 0) {\n toast.error(lang.transl('_没有数据可供使用'))\n log.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n states.busy = true\n\n const total = list.length\n log.log(lang.transl('_当前作品个数', total.toString()))\n\n // 尚不清楚 deleteBookmark 使用的 API 是否会被计入 429 限制里\n // 当操作的作品数量大于一页(48 个作品)时,使用慢速抓取\n const slowMode = total > 48\n\n let progress = 0\n\n for (const item of list) {\n try {\n await this.waitSlowMode(slowMode)\n await API.deleteBookmark(item.bookmarkID, item.type, token.token)\n } catch (error) {\n // 处理自己收藏的作品时可能遇到错误。最常见的错误就是作品被删除了,获取作品数据时会产生 404 错误\n // 对于出错的作品直接跳过,不需要对其执行任何操作\n // 不过这种作品无法被删除,执行完毕后还是会留在收藏里\n }\n progress++\n log.log(`${progress} / ${total}`, 1, false)\n }\n\n const msg = lang.transl('_取消收藏作品') + ' ' + lang.transl('_完成')\n log.success(msg)\n toast.success(msg, {\n position: 'topCenter',\n })\n states.busy = false\n }\n\n private waitSlowMode(slowMode: boolean): Promise {\n return new Promise((resolve) => {\n if (!slowMode) {\n return resolve()\n } else {\n setTimeoutWorker.set(() => {\n return resolve()\n }, Config.slowCrawlDealy)\n }\n })\n }\n}\n\nconst unBookmarkWorks = new UnBookmarkWorks()\nexport { unBookmarkWorks }\n","import { Config } from './Config'\n\n// 查找作品的缩略图,当鼠标进入、移出时等动作触发时执行回调函数\nabstract class WorkThumbnail {\n /**作品缩略图的选择器 */\n // 选择器的元素必须含有作品的超链接(超链接可以在这个元素上,也可以在这个元素的子元素上)\n protected selectors: string[] = []\n\n protected foundCallback: Function[] = []\n protected enterCallback: Function[] = []\n protected leaveCallback: Function[] = []\n protected clickCallback: Function[] = []\n protected bookmarkBtnCallback: Function[] = []\n\n /**查找作品缩略图 */\n protected abstract findThumbnail(parent: HTMLElement): void\n\n /**查找缩略图右下角的收藏按钮 */\n protected findBookmarkBtn(el: HTMLElement): HTMLElement | null {\n if (Config.mobile) {\n // 移动端的收藏按钮不是 button,其容器是 div.bookmark\n return el.querySelector('.bookmark')\n } else {\n // 桌面端的缩略图容器里只有 1 个 button,就是收藏按钮。目前还没有发现有多个 button 的情况\n if (el.querySelector('button svg[width=\"32\"]')) {\n return el.querySelector('button') as HTMLButtonElement\n }\n\n // 旧版缩略图里,缩略图元素是 div._one-click-bookmark (例如:各种排行榜页面)\n return el.querySelector('div._one-click-bookmark')\n }\n }\n\n /**为作品缩略图绑定事件 */\n // 注意:在移动端页面,此时获取的 id 可能是空字符串。可以在执行回调时尝试再次获取 id\n protected bindEvents(el: HTMLElement, id: string | '') {\n // 如果这个缩略图元素、或者它的直接父元素、或者它的直接子元素已经有标记,就跳过它\n // mouseover 这个标记名称不可以修改,因为它在 Pixiv Previewer 里硬编码了\n // https://github.com/xuejianxianzun/PixivBatchDownloader/issues/212\n if ((el as HTMLElement).dataset.mouseover) {\n return\n }\n\n if (el.parentElement && el.parentElement.dataset.mouseover) {\n return\n }\n\n if (\n el.firstElementChild &&\n (el.firstElementChild as HTMLElement).dataset.mouseover\n ) {\n return\n }\n\n // 当对一个缩略图元素绑定事件时,在它上面添加标记\n // 添加标记的目的是为了减少事件重复绑定的情况发生\n ;(el as HTMLElement).dataset.mouseover = '1'\n\n this.foundCallback.forEach((cb) => cb(el, id))\n\n el.addEventListener('mouseenter', (ev) => {\n this.enterCallback.forEach((cb) => cb(el, id, ev))\n })\n\n el.addEventListener('mouseleave', (ev) => {\n this.leaveCallback.forEach((cb) => cb(el, ev))\n })\n\n el.addEventListener(\n Config.mobile ? 'touchend' : 'click',\n (ev) => {\n this.clickCallback.forEach((cb) => cb(el, id, ev))\n },\n false\n )\n\n // 查找作品缩略图右下角的收藏按钮\n const bmkBtn = this.findBookmarkBtn(el as HTMLElement)\n if (!!bmkBtn) {\n bmkBtn.addEventListener(Config.mobile ? 'touchend' : 'click', (ev) => {\n this.bookmarkBtnCallback.forEach((cb) => cb(el, id, bmkBtn, ev))\n })\n }\n }\n\n /**使用监视器,让未来添加的作品缩略图也绑定上事件 */\n protected createObserver(target: HTMLElement) {\n const observer = new MutationObserver((records) => {\n for (const record of records) {\n if (record.addedNodes.length > 0) {\n // 遍历被添加的元素\n for (const newEl of record.addedNodes) {\n this.findThumbnail(newEl as HTMLElement)\n }\n }\n }\n })\n observer.observe(target, {\n childList: true,\n subtree: true,\n })\n }\n\n /**添加下载器寻找到一个作品缩略图时的回调。\n * 注意:这个回调只会执行一次,因为它不是根据用户操作的事件触发的。\n *\n * 回调函数会接收到 2 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @id 作品 id(在移动端页面里,此时传递的 id 可能是空字符串 '')\n */\n public onFound(cb: Function) {\n this.foundCallback.push(cb)\n }\n\n /**添加鼠标进入作品缩略图时的回调。\n *\n * 回调函数会接收到 3 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @id 作品 id\n *\n * @ev Event 对象\n */\n public onEnter(cb: Function) {\n this.enterCallback.push(cb)\n }\n\n /**添加鼠标离开作品缩略图时的回调。\n *\n * 回调函数会接收到 2 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @ev Event 对象\n *\n * 没有 id 参数,因为鼠标离开时的 id 就是鼠标进入时的 id\n */\n public onLeave(cb: Function) {\n this.leaveCallback.push(cb)\n }\n\n /**添加鼠标点击作品缩略图时的回调。\n *\n * 回调函数会接收到 3 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @id 作品 id\n *\n * @ev Event 对象\n */\n public onClick(cb: Function) {\n this.clickCallback.push(cb)\n }\n\n /**添加鼠标点击缩略图里的收藏按钮时的回调。\n *\n * 回调函数会接收到 4 个参数:\n *\n * @el 作品缩略图的元素\n *\n * @id 作品 id\n *\n * @btn 收藏按钮\n *\n * @ev Event 对象\n */\n public onClickBookmarkBtn(cb: Function) {\n this.bookmarkBtnCallback.push(cb)\n }\n}\n\nexport { WorkThumbnail }\n","import { Config } from './Config'\nimport { EVT } from './EVT'\nimport { pageType } from './PageType'\n\n// 在作品页面里,获取作品内容下方包含点赞、收藏、分享等按钮的工具栏元素\n// 注意:处于自己的作品页面里的时候,是没有收藏和点赞按钮的\nclass WorkToolBar {\n constructor() {\n this.init()\n this.bindEvents()\n }\n\n private toolbar: HTMLDivElement | undefined // 工具栏容器\n private readonly flag = 'xzToolbar' // 在工具栏上添加的标记\n private pixivBMKDiv: HTMLDivElement | undefined // pixiv 的心形收藏按钮\n private likeBtn: HTMLButtonElement | HTMLDivElement | undefined // 点赞按钮\n\n private timer: number = 0 // 获取元素用的定时器\n\n private async init() {\n this.toolbar = undefined\n this.pixivBMKDiv = undefined\n this.likeBtn = undefined\n window.clearInterval(this.timer)\n\n if (\n pageType.type !== pageType.list.Artwork &&\n pageType.type !== pageType.list.Novel\n ) {\n return\n }\n\n this.timer = window.setInterval(() => {\n Config.mobile ? this.getElementsOnMobile() : this.getElementsOnDesktop()\n }, 300)\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.init()\n })\n }\n\n private async getElementsOnDesktop() {\n // 获取工具栏\n const toolbarParent = document.querySelectorAll('main > section')\n for (const el of toolbarParent) {\n const test = el.querySelector('div>section')\n if (test) {\n const toolbar = test as HTMLDivElement\n if (!toolbar.classList.contains(this.flag)) {\n this.toolbar = toolbar\n toolbar.classList.add(this.flag)\n break\n }\n }\n }\n\n if (!this.toolbar) {\n return\n }\n\n // 获取心形收藏按钮的 div\n const total = this.toolbar.childElementCount\n // 心形收藏按钮是倒数第二个(从左往右数第二个)\n this.pixivBMKDiv =\n (this.toolbar.childNodes[total - 2] as HTMLDivElement) || undefined\n\n // 获取点赞按钮\n const btnList = this.toolbar.querySelectorAll('button')\n this.likeBtn = btnList[btnList.length - 1] || undefined\n\n // 全部获取完毕\n if (this.pixivBMKDiv && this.likeBtn) {\n window.clearInterval(this.timer)\n this.executionCB()\n }\n }\n\n private async getElementsOnMobile() {\n // 获取工具栏\n const toolbar = document.querySelector(\n '.work-interactions'\n ) as HTMLDivElement\n if (!toolbar) {\n return\n }\n this.toolbar = toolbar\n\n // 在移动端不要给工具栏添加自定义 class 名,因为切换页面时元素没重新生成,class 还在\n\n const divs = toolbar.querySelectorAll('div')\n if (divs.length !== 4) {\n return\n }\n // 只在正常模式下(有 4 个按钮)时工作\n // 如果在自己的作品页面里,就只有 1 个分享按钮\n\n // 获取心形收藏按钮的 div\n this.pixivBMKDiv = divs[1]\n\n // 获取点赞按钮\n this.likeBtn = divs[0]\n\n // 全部获取完毕\n if (this.pixivBMKDiv && this.likeBtn) {\n window.clearInterval(this.timer)\n this.executionCB()\n }\n }\n\n private callbackList: Function[] = []\n\n /**注册回调函数\n *\n * 当 WorkToolBar 模块获取到了所有需要的元素时,会执行回调函数,并把以下元素作为参数传入:\n *\n * toolbar, pixivBMKDiv, likeBtn */\n public register(cb: Function) {\n this.callbackList.push(cb)\n }\n\n private executionCB() {\n this.callbackList.forEach((cb) =>\n cb(this.toolbar, this.pixivBMKDiv, this.likeBtn)\n )\n }\n}\n\nconst workToolBar = new WorkToolBar()\nexport { workToolBar }\n","import { Config } from '../Config'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { pageType } from '../PageType'\nimport { states } from '../store/States'\nimport { IDData } from '../store/StoreType'\n\n// 在作品页面里,点击收藏按钮后会出现推荐作品。这个模块用于抓取推荐作品\nclass CrawlRecommendWorks {\n constructor() {\n this.timer = window.setInterval(() => {\n this.foundTarget()\n }, 300)\n\n this.bindEvents()\n }\n\n private get checkSelector() {\n return Config.mobile ? '.recommend-slidein-booster' : 'figcaption h2'\n }\n\n private readonly linkSelector = '.gtm-illust-recommend-thumbnail-link'\n\n private get datasetFlag() {\n return Config.mobile ? 'gtmRecommendIllustId' : 'gtmValue'\n }\n\n private found = false\n private timer: number | undefined\n private IDList: IDData[] = []\n\n private foundTarget() {\n if (this.found || pageType.type !== pageType.list.Artwork) {\n return\n }\n\n const titleBar = document.querySelector(this.checkSelector)\n if (titleBar) {\n this.found = true\n window.clearTimeout(this.timer)\n\n // 等待一段时间再获取作品超链接,因为立刻获取的话可能还未生成\n // 其实在 PC 端页面是可以立即获取到的,但是在移动端页面需要等待较长时间,500ms 不够用\n window.setTimeout(\n () => {\n this.readyCrawl()\n },\n Config.mobile ? 1000 : 100\n )\n }\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.pageSwitch, () => {\n // 页面切换后,页面元素可能还没来得及变化,所以需要等待一段时间后再开始查找\n // 如果立即查找,那么经常会查找到已经存在的推荐列表,于是就会立即停止查找\n window.setTimeout(() => {\n this.found = false\n this.IDList = []\n\n window.clearTimeout(this.timer)\n this.timer = window.setInterval(() => {\n this.foundTarget()\n }, 300)\n }, 600)\n })\n }\n\n private readyCrawl() {\n const allLinks = document.querySelectorAll(\n this.linkSelector\n ) as NodeListOf\n for (const a of allLinks) {\n const id = a.dataset[this.datasetFlag]\n if (id) {\n this.IDList.push({\n id,\n type: 'illusts',\n })\n }\n }\n\n this.addDownloadBtn()\n }\n\n private addDownloadBtn() {\n if (this.IDList.length === 0) {\n return\n }\n\n const target = document.querySelector(\n this.checkSelector\n ) as HTMLHeadingElement\n if (!target) {\n return\n }\n\n const btn = document.createElement('button')\n btn.textContent = lang.transl('_下载推荐作品')\n btn.classList.add('blueTextBtn')\n btn.addEventListener('click', () => {\n states.quickCrawl = true\n // 传递 ID 列表时需要复制一份,因为如果直接传递变量,那么这个数组会在抓取之后被清空\n EVT.fire('crawlIdList', [...this.IDList])\n })\n\n if (Config.mobile) {\n // 在移动端页面,需要把按钮添加到第一个子元素后面,因为第一个子元素才是“推荐作品”的标题\n target.firstElementChild!.insertAdjacentElement('afterend', btn)\n } else {\n // 修改标题的父元素样式,以便让标题和下载按钮可以并排显示\n target.parentElement!.style.display = 'flex'\n target.parentElement!.style.alignItems = 'center'\n target.insertAdjacentElement('afterend', btn)\n }\n }\n}\n\nnew CrawlRecommendWorks()\n","// 初始化地区排行榜页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { store } from '../store/Store'\n\nclass InitAreaRankingPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected initAny() {}\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取本页作品',\n '_抓取本页作品Title'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n protected setFormOption() {\n options.hideOption([1])\n }\n\n protected async getIdList() {\n const allPicArea = document.querySelectorAll('.ranking-item>.work_wrapper')\n\n for (const el of allPicArea) {\n const img = el.querySelector('._thumbnail')! as HTMLImageElement\n // img.dataset.type 全都是 \"illust\",因此不能用来区分作品类型\n\n // 提取出 tag 列表\n const id = img.dataset.id!\n const tags = img.dataset.tags!.split(' ')\n // 有的作品没有收藏按钮,点进去之后发现这个作品已经被删除了,只是排行榜里没有及时更新。这样的作品没有收藏按钮。\n const bookmarkBtn = el.querySelector('._one-click-bookmark')\n const bookmarked = bookmarkBtn\n ? bookmarkBtn.classList.contains('on')\n : false\n\n const filterOpt: FilterOption = {\n id: id,\n tags: tags,\n bookmarkData: bookmarked,\n }\n\n if (await filter.check(filterOpt)) {\n const id = Tools.getIllustId(el.querySelector('a')!.href)\n store.idList.push({\n type: 'illusts',\n id,\n })\n }\n }\n\n this.getIdListFinished()\n }\n}\nexport { InitAreaRankingPage }\n","//初始化 artwork 作品页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\nimport { userWorksType } from '../crawl/CrawlArgument'\nimport { Tools } from '../Tools'\nimport { API } from '../API'\nimport { log } from '../Log'\nimport { Utils } from '../utils/Utils'\nimport './CrawlRecommendWorks'\n\nclass InitArtworkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private crawlDirection: number = 0 // 抓取方向,指示抓取新作品还是旧作品\n /*\n -1 抓取新作品\n 0 不设置抓取方向\n 1 抓取旧作品\n */\n\n private crawlRelated: boolean = false // 是否下载相关作品\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_从本页开始抓取new'\n ).addEventListener('click', () => {\n this.crawlDirection = -1\n this.readyCrawl()\n })\n\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_从本页开始抓取old'\n ).addEventListener('click', () => {\n this.crawlDirection = 1\n this.readyCrawl()\n })\n\n const downRelatedBtn = Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取相关作品'\n )\n downRelatedBtn.addEventListener(\n 'click',\n () => {\n this.crawlRelated = true\n this.readyCrawl()\n },\n false\n )\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n\n protected getWantPage() {\n // 检查下载页数的设置\n if (!this.crawlRelated) {\n const crawlAllTip =\n this.crawlDirection === -1\n ? lang.transl('_从本页开始抓取new')\n : lang.transl('_从本页开始抓取old')\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x个'),\n crawlAllTip\n )\n } else {\n // 相关作品的提示\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_下载x个相关作品'),\n lang.transl('_下载所有相关作品')\n )\n }\n }\n\n protected nextStep() {\n // 下载相关作品\n if (this.crawlRelated) {\n this.getRelatedList()\n } else {\n // 向前向后下载\n this.getIdList()\n }\n }\n\n protected async getIdList() {\n let type: userWorksType[] = ['illusts', 'manga']\n let idList = await API.getUserWorksByType(Tools.getUserId(), type)\n\n // 储存符合条件的 id\n let nowId = parseInt(Tools.getIllustId(window.location.href))\n idList.forEach((id) => {\n let idNum = parseInt(id.id)\n // 新作品\n if (idNum >= nowId && this.crawlDirection === -1) {\n store.idList.push(id)\n } else if (idNum <= nowId && this.crawlDirection === 1) {\n // 旧作品\n store.idList.push(id)\n }\n })\n\n // 当设置了下载个数时,进行裁剪\n if (this.crawlNumber !== -1) {\n // 新作品 升序排列\n if (this.crawlDirection === -1) {\n store.idList.sort(Utils.sortByProperty('id')).reverse()\n } else {\n // 旧作品 降序排列\n store.idList.sort(Utils.sortByProperty('id'))\n }\n\n store.idList = store.idList.splice(0, this.crawlNumber)\n }\n\n this.getIdListFinished()\n }\n\n // 下载相关作品时使用\n private async getRelatedList() {\n let data = await API.getRelatedData(Tools.getIllustId())\n // 相关作品的列表由两部分构成,所以要组合起来\n let ids: string[] = []\n for (const illust of data.body.illusts) {\n if (illust.isAdContainer) {\n continue\n }\n ids.push(illust.id)\n }\n ids = ids.concat(data.body.nextIds)\n\n // 当设置了下载个数时,进行裁剪\n if (this.crawlNumber !== -1) {\n ids = ids.slice(0, this.crawlNumber)\n }\n\n for (const id of ids) {\n store.idList.push({\n type: 'illusts',\n id,\n })\n }\n\n log.log(lang.transl('_相关作品抓取完毕', store.idList.length.toString()))\n this.getIdListFinished()\n }\n\n protected resetGetIdListStatus() {\n this.crawlDirection = 0 // 解除下载方向的标记\n this.crawlRelated = false // 解除下载相关作品的标记\n }\n}\nexport { InitArtworkPage }\n","// 初始化插画/漫画的系列作品页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { API } from '../API'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\n\nclass InitArtworkSeriesPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private seriesId = ''\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n this.maxCount = 100\n\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, true)\n }\n\n protected nextStep() {\n // 设置起始页码\n const p = Utils.getURLSearchField(location.href, 'p')\n this.startpageNo = parseInt(p) || 1\n\n // 获取系列 id\n this.seriesId = Utils.getURLPathField(window.location.pathname, 'series')\n\n this.getIdList()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let p = this.startpageNo + this.listPageFinished\n\n const data = await API.getSeriesData(this.seriesId, p)\n this.listPageFinished++\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n // 保存本页面的作品的 id 列表\n const idList: string[] = []\n for (const info of data.body.page.series) {\n idList.push(info.workId)\n }\n // data.body.page.series 里的才是本页面的作品,illust 里则不同,有时它的作品数量比页面上的更多\n\n // 从 illust 里查找 id 对应的数据,进行过滤\n for (const work of data.body.thumbnails.illust) {\n if (!idList.includes(work.id)) {\n continue\n }\n if (work.isAdContainer) {\n continue\n }\n\n // 过滤器进行检查\n const filterOpt: FilterOption = {\n aiType: work.aiType,\n id: work.id,\n tags: work.tags,\n bookmarkData: !!work.bookmarkData,\n width: work.pageCount === 1 ? work.width : 0,\n height: work.pageCount === 1 ? work.height : 0,\n workType: work.illustType,\n userId: work.userId,\n createDate: work.createDate,\n xRestrict: work.xRestrict,\n }\n\n // 因为这个 api 的 illust 数据可能是插画也可能是漫画,所以 type 是 unknown\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: 'illusts',\n id: work.id,\n })\n }\n }\n\n // 如果 data.body.page.series 为空,就是到了最后一页\n const endFlag = data.body.page.series.length === 0\n\n // 抓取完毕\n if (\n endFlag ||\n p >= this.maxCount ||\n this.listPageFinished === this.crawlNumber\n ) {\n log.log(lang.transl('_列表页抓取完成'))\n this.getIdListFinished()\n } else {\n // 继续抓取\n log.log(\n lang.transl('_列表页抓取进度', this.listPageFinished.toString()),\n 1,\n false\n )\n\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n }\n}\nexport { InitArtworkSeriesPage }\n","// 初始化 bookmark_detail 页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { API } from '../API'\nimport { store } from '../store/Store'\n\nclass InitBookmarkDetailPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取相似图片',\n '_抓取相似图片'\n ).addEventListener(\n 'click',\n () => {\n this.readyCrawl()\n },\n false\n )\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, false)\n }\n\n // 获取相似的作品列表\n protected async getIdList() {\n let data = await API.getRecommenderData(\n Tools.getIllustId(),\n this.crawlNumber\n )\n\n for (const id of data.recommendations) {\n store.idList.push({\n type: 'illusts',\n id: id.toString(),\n })\n }\n\n this.getIdListFinished()\n }\n}\nexport { InitBookmarkDetailPage }\n","// 初始化发现页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\n\nclass InitDiscoverPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取当前作品',\n '_抓取当前作品Title'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n protected setFormOption() {\n options.hideOption([1])\n }\n\n protected getWantPage() {}\n\n protected getIdList() {\n // 在发现页面,直接获取页面上显示的作品,不需要获取列表页\n if (location.pathname.includes('/novel')) {\n // 小说页面\n const allWork = document.querySelectorAll(\n '.gtm-novel-work-recommend-link'\n )\n allWork.forEach((div) => {\n const a = div.querySelector('a')\n if (a) {\n const id = Tools.getNovelId(a.href)\n store.idList.push({\n type: 'novels',\n id,\n })\n }\n })\n } else {\n // 插画漫画页面\n const allLink = document.querySelectorAll(\n 'div[width=\"184\"]>a'\n ) as NodeListOf\n // 获取已有作品的 id\n allLink.forEach((a) => {\n const id = Tools.getIllustId(a.href)\n store.idList.push({\n type: 'illusts',\n id,\n })\n })\n }\n this.getIdListFinished()\n }\n}\nexport { InitDiscoverPage }\n","// 初始化 本站的最新作品 artwork 页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { NewIllustOption } from '../crawl/CrawlArgument'\nimport { NewIllustData } from '../crawl/CrawlResult'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nclass InitNewArtworkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private option: NewIllustOption = this.resetOption()\n\n private readonly limitMax = 20 // 每次请求的数量最大是 20\n\n private fetchCount = 0 // 已请求的作品数量\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_下载大家的新作品'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, false)\n }\n\n protected nextStep() {\n this.setSlowCrawl()\n this.initFetchURL()\n this.getIdList()\n }\n\n private resetOption(): NewIllustOption {\n return {\n lastId: '0',\n limit: '20', // 每次请求的数量,可以比 20 小\n type: '',\n r18: '',\n }\n }\n\n // 组织要请求的 url\n private initFetchURL() {\n this.option = this.resetOption()\n\n if (this.crawlNumber < this.limitMax) {\n this.option.limit = this.crawlNumber.toString()\n } else {\n this.option.limit = this.limitMax.toString()\n }\n\n // 当前页面的作品类型,默认是 illust\n this.option.type =\n Utils.getURLSearchField(location.href, 'type') || 'illust'\n // 是否是 R18 模式\n this.option.r18 = (location.href.includes('_r18.php') || false).toString()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let data: NewIllustData\n try {\n data = await API.getNewIllustData(this.option)\n } catch (error) {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let useData = data.body.illusts\n\n for (const nowData of useData) {\n // 抓取够了指定的数量\n if (this.fetchCount + 1 > this.crawlNumber) {\n break\n } else {\n this.fetchCount++\n }\n\n // 排除广告信息\n if (nowData.isAdContainer) {\n continue\n }\n\n const filterOpt: FilterOption = {\n aiType: nowData.aiType,\n id: nowData.id,\n width: nowData.pageCount === 1 ? nowData.width : 0,\n height: nowData.pageCount === 1 ? nowData.height : 0,\n pageCount: nowData.pageCount,\n bookmarkData: nowData.bookmarkData,\n workType: nowData.illustType,\n tags: nowData.tags,\n userId: nowData.userId,\n createDate: nowData.createDate,\n xRestrict: nowData.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: Tools.getWorkTypeString(nowData.illustType),\n id: nowData.id,\n })\n }\n }\n\n log.log(lang.transl('_新作品进度', this.fetchCount.toString()), 1, false)\n\n // 抓取完毕\n if (\n this.fetchCount >= this.crawlNumber ||\n this.fetchCount >= this.maxCount\n ) {\n log.log(lang.transl('_开始获取作品页面'))\n this.getIdListFinished()\n return\n }\n\n // 继续抓取\n this.option.lastId = data.body.lastId\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.fetchCount = 0\n }\n}\nexport { InitNewArtworkPage }\n","// 初始化 pixivision 页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\nimport { Utils } from '../utils/Utils'\n\nclass InitPixivisionPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected addCrawlBtns() {\n const typeA = document.querySelector(\n 'a[data-gtm-action=ClickCategory]'\n )! as HTMLAnchorElement\n const type = typeA.dataset.gtmLabel\n\n if (type === 'illustration' || type === 'manga' || type === 'cosplay') {\n // 在插画、漫画、cosplay类型的页面上创建下载功能\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取该页面的图片'\n ).addEventListener(\n 'click',\n () => {\n this.readyCrawl()\n },\n false\n )\n }\n }\n\n protected setFormOption() {\n options.hideOption([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 19, 21, 22, 23, 24, 26,\n 27, 28, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 46, 47, 48,\n 49, 50, 51, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,\n 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,\n ])\n }\n\n protected nextStep() {\n this.getPixivision()\n }\n\n // 保存要下载的图片的信息\n private addResult(id: string, url: string, ext: string) {\n store.addResult({\n id: id,\n idNum: Number.parseInt(id),\n original: url,\n ext: ext,\n })\n }\n\n private async getPixivision() {\n const a = document.querySelector(\n 'a[data-gtm-action=ClickCategory]'\n )! as HTMLAnchorElement\n const type = a.dataset.gtmLabel\n\n if (type === 'illustration') {\n // 插画页面,需要对图片进行测试获取原图 url\n const imageList = document.querySelectorAll(\n '.am__work__main img'\n ) as NodeListOf\n const urls = Array.from(imageList).map((el) => {\n return el.src\n .replace('c/768x1200_80/img-master', 'img-original')\n .replace('_master1200', '')\n })\n\n for (const url of urls) {\n let arr = url.split('/')\n const id = arr[arr.length - 1].split('.')[0].split('_')[0] // 作品id,尝试提取出数字部分\n await this.testExtName(url, id)\n }\n this.crawlFinished()\n } else {\n // 漫画和 cosplay ,直接保存页面上的图片\n let selector = ''\n if (type === 'manga') {\n selector = '.am__work__illust'\n } else if (type === 'cosplay') {\n selector = '.fab__image-block__image img'\n }\n\n // 把图片url添加进数组\n const imageList = document.querySelectorAll(\n selector\n ) as NodeListOf\n Array.from(imageList).forEach((el) => {\n const url = el.src\n if (url !== 'https://i.pximg.net/imgaz/upload/20170407/256097898.jpg') {\n // 跳过Cure的logo图片\n // 漫画页面的图片 url 如:\n // https://i.pximg.net/c/768x1200_80/img-master/img/2017/06/19/01/08/28/63457814_p0_master1200.jpg\n // cosplay 页面的 ur 如:\n // https://i.pximg.net/imgaz/upload/20170808/670930758.jpg\n const arr = url.split('/')\n const id = arr[arr.length - 1].split('.')[0].split('_')[0] // 作品id,尝试提取出数字部分\n const extTest = arr[arr.length - 1].match(/\\.(.*$)/) // 扩展名,不带点 .\n let ext = 'jpg'\n if (extTest && extTest.length > 1) {\n ext = extTest[1]\n }\n this.addResult(id, url, ext)\n }\n })\n this.crawlFinished()\n }\n }\n\n // 通过加载图片来判断图片的后缀名。pixivision 页面直接获取的图片后缀都是 jpg 的\n private async testExtName(url: string, id: string) {\n let ext = 'jpg' // 默认为 jpg\n await Utils.loadImg(url).catch(() => {\n // 如果图片加载失败则把后缀改为 png\n url = url.replace('.jpg', '.png')\n ext = 'png'\n })\n\n this.addResult(id, url, ext)\n\n this.logResultNumber()\n }\n}\nexport { InitPixivisionPage }\n","// 初始化 artwork 排行榜页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { API } from '../API'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { options } from '../setting/Options'\nimport { RankingOption } from '../crawl/CrawlArgument'\nimport { RankingData } from '../crawl/CrawlResult'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { states } from '../store/States'\nimport { Utils } from '../utils/Utils'\n\nclass InitRankingArtworkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private pageCount: number = 10 // 排行榜的页数\n\n private option: RankingOption = this.resetOption()\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取本排行榜作品',\n '_抓取本排行榜作品Title'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n // 判断当前页面是否有“首次登场”标记\n const debutModes = ['daily', 'daily_r18', 'rookie', '']\n const mode = Utils.getURLSearchField(location.href, 'mode')\n\n if (debutModes.includes(mode)) {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取首次登场的作品',\n '_抓取首次登场的作品Title'\n ).addEventListener('click', () => {\n states.debut = true\n this.readyCrawl()\n })\n }\n }\n\n protected initAny() {\n // 抓取完成后,复位 debut 标记\n // 因为 debut 只在抓取阶段被过滤器使用,所以抓取完成后就可以复位\n window.addEventListener(EVT.list.crawlComplete, () => {\n states.debut = false\n })\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n this.maxCount = 500\n\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n private resetOption(): RankingOption {\n return { mode: 'daily', p: 1, worksType: '', date: '' }\n }\n\n private setPartNum() {\n // 设置页数。排行榜页面一页有50张作品,当页面到达底部时会加载下一页\n if (location.pathname.includes('r18g')) {\n // r18g 只有1个榜单,固定1页\n this.pageCount = 1\n } else if (location.pathname.includes('_r18')) {\n // r18 模式,这里的6是最大值,有的排行榜并没有6页\n this.pageCount = 6\n } else {\n // 普通模式,这里的10也是最大值。如果实际没有10页,则在检测到404页面的时候停止抓取下一页\n this.pageCount = 10\n }\n }\n\n protected getWantPage() {\n this.listPageFinished = 0\n // 检查下载页数的设置\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_下载排行榜前x个作品'),\n lang.transl('_向下获取所有作品')\n )\n // 如果设置的作品个数是 -1,则设置为下载所有作品\n if (this.crawlNumber === -1) {\n this.crawlNumber = 500\n }\n }\n\n protected nextStep() {\n // 设置 option 信息\n // mode 一定要有值,其他字段不需要一定有值\n this.option = this.resetOption()\n this.option.mode = Utils.getURLSearchField(location.href, 'mode') || 'daily'\n this.option.worksType = Utils.getURLSearchField(location.href, 'content')\n this.option.date = Utils.getURLSearchField(location.href, 'date')\n\n this.startpageNo = 1\n\n this.setPartNum()\n this.getIdList()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n this.option.p = this.startpageNo + this.listPageFinished\n\n // 发起请求,获取作品列表\n let data: RankingData\n try {\n data = await API.getRankingData(this.option)\n } catch (error) {\n if (error.status === 404) {\n // 如果发生了404错误,则中断抓取,直接下载已有部分。因为可能确实没有下一部分了\n console.log('404错误,直接下载已有部分')\n this.getIdListFinished()\n }\n\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n this.listPageFinished++\n\n const contents = data.contents // 取出作品信息列表\n for (const data of contents) {\n // 检查是否已经抓取到了指定数量的作品\n if (data.rank > this.crawlNumber) {\n return this.getIdListFinished()\n }\n\n const pageCount = parseInt(data.illust_page_count)\n // 目前这个数据里并没有包含收藏数量,所以在这里没办法检查收藏数量要求\n const filterOpt: FilterOption = {\n id: data.illust_id,\n workType: parseInt(data.illust_type) as any,\n tags: data.tags,\n pageCount: pageCount,\n bookmarkData: data.is_bookmarked,\n width: pageCount === 1 ? data.width : 0,\n height: pageCount === 1 ? data.height : 0,\n yes_rank: data.yes_rank,\n userId: data.user_id.toString(),\n }\n\n if (await filter.check(filterOpt)) {\n store.setRankList(data.illust_id.toString(), data.rank)\n\n store.idList.push({\n type: Tools.getWorkTypeString(data.illust_type),\n id: data.illust_id.toString(),\n })\n }\n }\n\n log.log(\n lang.transl('_排行榜进度', this.listPageFinished.toString()),\n 1,\n false\n )\n\n // 抓取完毕\n if (this.listPageFinished === this.pageCount) {\n this.getIdListFinished()\n } else {\n // 继续抓取\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n }\n}\nexport { InitRankingArtworkPage }\n","// 初始化 artwork 搜索页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { DeleteWorks } from '../pageFunciton/DeleteWorks'\nimport { EVT } from '../EVT'\nimport { SearchOption } from '../crawl/CrawlArgument'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Result } from '../store/StoreType'\nimport { settings } from '../setting/Settings'\nimport { FastScreen } from '../pageFunciton/FastScreen'\nimport { Tools } from '../Tools'\nimport { BookmarkAllWorks } from '../pageFunciton/BookmarkAllWorks'\nimport { states } from '../store/States'\nimport { Utils } from '../utils/Utils'\nimport { idListWithPageNo } from '../store/IdListWithPageNo'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { bookmark } from '../Bookmark'\nimport { crawlTagList } from '../crawlMixedPage/CrawlTagList'\nimport { pageType } from '../PageType'\nimport { Config } from '../Config'\nimport { downloadOnClickBookmark } from '../download/DownloadOnClickBookmark'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport '../pageFunciton/RemoveWorksOfFollowedUsersOnSearchPage'\n\ntype AddBMKData = {\n id: number\n tags: string[]\n el: Element\n}\n\ntype FilterCB = (value: Result) => unknown\n\nclass InitSearchArtworkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private readonly worksWrapSelector = '#root section ul'\n private readonly listClass = 'searchList'\n private readonly multipleClass = 'multiplePart'\n private readonly ugoiraClass = 'ugoiraPart'\n private readonly addBMKBtnClass = 'bmkBtn'\n private readonly bookmarkedClass = 'bookmarked'\n private readonly countSelector = 'section h3+div span'\n private countEl?: HTMLElement\n\n private worksType = ''\n private option: SearchOption = {}\n private readonly worksNoPerPage = 60 // 每个页面有多少个作品\n private needCrawlPageCount = 0 // 需要抓取多少个列表页面\n private sendCrawlTaskCount = 0 // 发送抓取请求之前会自增,用于计算要抓取的页码。不是请求完成后自增\n private readonly allOption = [\n 'order',\n 'type',\n 'wlt',\n 'wgt',\n 'hlt',\n 'hgt',\n 'ratio',\n 'tool',\n 's_mode',\n 'mode',\n 'scd',\n 'ecd',\n 'blt',\n 'bgt',\n 'work_lang',\n 'ai_type',\n ]\n\n private resultMeta: Result[] = [] // 每次“开始筛选”完成后,储存当时所有结果,以备“在结果中筛选”使用\n\n private worksWrap: HTMLUListElement | null = null\n\n private deleteId = 0 // 手动删除时,要删除的作品的 id\n\n private causeResultChange = ['firstFewImagesSwitch', 'firstFewImages'] // 这些选项变更时,可能会导致结果改变。但是过滤器 filter 不会检查,所以需要单独检测它的变更,手动处理\n\n private crawlStartBySelf = false // 这次抓取是否是由当前页面的“开始抓取”按钮发起的\n\n private previewCount = 0 // 共显示了多少个作品的预览图\n private showPreviewLimitTip = false // 当预览数量达到上限时显示一次提示\n\n // 储存预览搜索结果的元素\n private workPreviewBuffer = document.createDocumentFragment()\n\n protected setFormOption() {\n const isPremium = Tools.isPremium()\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: `1 - ${isPremium ? 5000 : 1000}`,\n })\n }\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.resultMeta = []\n this.crawlStartBySelf = true\n\n window.addEventListener(EVT.list.addResult, this.createPreview)\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n\n crawlTagList.init()\n\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_在结果中筛选',\n '_在结果中筛选说明'\n ).addEventListener('click', () => {\n this.screenInResult()\n })\n }\n\n protected addAnyElement() {\n const deleteWorks = new DeleteWorks(`.${this.listClass}`)\n\n deleteWorks.addClearMultipleBtn(`.${this.multipleClass}`, () => {\n EVT.fire('clearMultiple')\n })\n\n deleteWorks.addClearUgoiraBtn(`.${this.ugoiraClass}`, () => {\n EVT.fire('clearUgoira')\n })\n\n deleteWorks.addManuallyDeleteBtn((el: HTMLElement) => {\n EVT.fire('deleteWork', el)\n })\n\n // 添加收藏本页所有作品的功能\n const bookmarkAllBtn = Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_收藏本页面的所有作品'\n )\n const bookmarkAll = new BookmarkAllWorks(bookmarkAllBtn)\n\n bookmarkAllBtn.addEventListener('click', () => {\n const listWrap = this.getWorksWrap()\n if (listWrap) {\n const list = listWrap.querySelectorAll('li')\n // 被二次筛选过滤掉的作品会被隐藏,所以批量添加收藏时,过滤掉隐藏的作品\n const showList = Array.from(list).filter((el) => {\n return el.style.display !== 'none'\n })\n bookmarkAll.sendWorkList(showList)\n }\n })\n }\n\n protected initAny() {\n this.removeBlockOnHotBar()\n\n new FastScreen()\n\n window.addEventListener(\n EVT.list.pageSwitchedTypeNotChange,\n this.removeBlockOnHotBar\n )\n\n window.addEventListener(EVT.list.addResult, this.showCount)\n\n window.addEventListener('addBMK', this.addBookmark)\n\n window.addEventListener(EVT.list.crawlComplete, this.onCrawlFinish)\n\n window.addEventListener(EVT.list.clearMultiple, this.clearMultiple)\n\n window.addEventListener(EVT.list.clearUgoira, this.clearUgoira)\n\n window.addEventListener(EVT.list.deleteWork, this.deleteWork)\n\n window.addEventListener(EVT.list.settingChange, this.onSettingChange)\n\n window.addEventListener(EVT.list.crawlTag, this.crawlTag)\n\n // 定期将缓冲中的预览作品元素添加到页面上\n window.setInterval(() => {\n this.showPreview()\n }, 1000)\n }\n\n private showPreview() {\n if (this.workPreviewBuffer.firstChild && this.worksWrap) {\n this.worksWrap.appendChild(this.workPreviewBuffer)\n }\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n\n window.removeEventListener(EVT.list.addResult, this.showCount)\n window.removeEventListener(EVT.list.crawlComplete, this.onCrawlFinish)\n window.removeEventListener(EVT.list.settingChange, this.onSettingChange)\n window.removeEventListener(EVT.list.crawlTag, this.crawlTag)\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n protected async nextStep() {\n this.setSlowCrawl()\n this.initFetchURL()\n\n // 计算应该抓取多少页\n const data = await this.getSearchData(1)\n // 计算总页数\n let pageCount = Math.ceil(data.total / this.worksNoPerPage)\n if (pageCount > 1000) {\n // 如果作品页数大于 1000 页,则判断当前用户是否是 pixiv 会员\n const isPremium = Tools.isPremium()\n if (!isPremium) {\n // 如果用户不是会员,则最多只能抓取到 1000 页\n pageCount = 1000\n log.warning(lang.transl('_搜索页面页数限制', pageCount.toString()))\n } else {\n // 如果用户是会员,最多可以抓取到 5000 页\n if (pageCount > 5000) {\n pageCount = 5000\n log.warning(lang.transl('_搜索页面页数限制', pageCount.toString()))\n }\n }\n }\n\n // 如果当前页面的页码大于有效页码,则不进行抓取\n if (this.startpageNo > pageCount) {\n EVT.fire('crawlComplete')\n EVT.fire('crawlEmpty')\n\n if (data.total === 0) {\n return msgBox.error(lang.transl('_作品总数为0'))\n }\n return msgBox.error(`${lang.transl('_超出最大页码')} ${pageCount}`)\n }\n\n if (this.crawlNumber === -1 || this.crawlNumber > pageCount) {\n this.crawlNumber = pageCount\n }\n\n // 计算从当前页面开始抓取的话,有多少页\n let needFetchPage = pageCount - this.startpageNo + 1\n // 比较用户设置的页数,取较小的那个数值\n this.needCrawlPageCount = Math.min(needFetchPage, this.crawlNumber)\n\n if (this.needCrawlPageCount === 0) {\n return this.noResult()\n }\n\n this.getIdList()\n\n this.clearPreview()\n\n this.countEl = document.querySelector(this.countSelector) as HTMLElement\n }\n\n // 组织要请求的 url 中的参数\n private initFetchURL() {\n // 从 URL 中获取分类。可能有语言标识。\n /*\n https://www.pixiv.net/tags/Fate%2FGrandOrder/illustrations\n https://www.pixiv.net/en/tags/Fate%2FGrandOrder/illustrations\n */\n const URLType = location.pathname.split('tags/')[1].split('/')[1] ?? ''\n // 在“顶部”页面的时候是没有分类的,会是 undefined,此时使用空字符串\n\n switch (URLType) {\n case '':\n this.worksType = 'artworks'\n break\n case 'illustrations':\n case 'illust_and_ugoira':\n case 'ugoira':\n case 'illust':\n this.worksType = 'illustrations'\n break\n case 'manga':\n this.worksType = 'manga'\n break\n\n default:\n this.worksType = 'artworks'\n break\n }\n\n let p = Utils.getURLSearchField(location.href, 'p')\n this.startpageNo = parseInt(p) || 1\n\n // 从页面 url 中获取可以使用的选项\n this.option = {}\n this.allOption.forEach((param) => {\n let value = Utils.getURLSearchField(location.href, param)\n if (value !== '') {\n this.option[param] = value\n }\n })\n\n // 如果 url 里没有显式指定标签匹配模式,则使用 完全一致 模式\n // 因为在这种情况下,pixiv 默认使用的就是 完全一致\n if (!this.option.s_mode) {\n this.option.s_mode = 's_tag_full'\n }\n\n // 在日志里显示标签匹配模式\n log.log(\n `${lang.transl('_搜索模式')}: ${this.tipSearchMode(this.option.s_mode)}`\n )\n }\n\n // 注意:同样的 mode,在搜索图片时和搜索小说时可能有不同的含义。所以这个方法不是通用的。\n private tipSearchMode(mode: string) {\n switch (mode) {\n case 's_tag':\n return lang.transl('_标签部分一致')\n case 's_tag_full':\n return lang.transl('_标签完全一致')\n case 's_tc':\n return lang.transl('_标题说明文字')\n default:\n return mode\n }\n }\n\n // 获取搜索页的数据。因为有多处使用,所以进行了封装\n private async getSearchData(p: number) {\n let data = await API.getSearchData(\n store.tag,\n this.worksType,\n p,\n this.option\n )\n return data.body.illust || data.body.illustManga || data.body.manga\n }\n\n private delayReTry(p: number) {\n window.setTimeout(() => {\n this.getIdList(p)\n }, Config.retryTime)\n // 限制时间大约是 3 分钟,这里为了保险起见,设置了更大的延迟时间。\n }\n\n private tipEmptyResult = Utils.debounce(() => {\n log.error(lang.transl('_抓取被限制时返回空结果的提示'))\n }, 1000)\n\n // 仅当出错重试时,才会传递参数 p。此时直接使用传入的 p,而不是继续让 p 增加\n protected async getIdList(p?: number): Promise {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n if (p === undefined) {\n p = this.startpageNo + this.sendCrawlTaskCount\n this.sendCrawlTaskCount++\n }\n\n // 发起请求,获取列表页\n let data\n try {\n data = await this.getSearchData(p)\n\n if (data.total === 0) {\n console.log(`page ${p}: total 0`)\n this.tipEmptyResult()\n return this.delayReTry(p)\n }\n } catch {\n return this.getIdList(p)\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n data = data.data\n\n for (const nowData of data) {\n // 排除广告信息\n if (nowData.isAdContainer) {\n continue\n }\n\n const filterOpt: FilterOption = {\n aiType: nowData.aiType,\n createDate: nowData.createDate,\n id: nowData.id,\n width: nowData.pageCount === 1 ? nowData.width : 0,\n height: nowData.pageCount === 1 ? nowData.height : 0,\n pageCount: nowData.pageCount,\n bookmarkData: nowData.bookmarkData,\n workType: nowData.illustType,\n tags: nowData.tags,\n userId: nowData.userId,\n xRestrict: nowData.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n idListWithPageNo.add(\n pageType.type,\n {\n type: Tools.getWorkTypeString(nowData.illustType),\n id: nowData.id,\n },\n p\n )\n }\n }\n\n this.listPageFinished++\n\n log.log(\n lang.transl(\n '_列表页抓取进度2',\n this.listPageFinished.toString(),\n this.needCrawlPageCount.toString()\n ),\n 1,\n false\n )\n\n if (this.sendCrawlTaskCount + 1 <= this.needCrawlPageCount) {\n // 继续发送抓取任务(+1 是因为 sendCrawlTaskCount 从 0 开始)\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n } else {\n // 抓取任务已经全部发送\n if (this.listPageFinished === this.needCrawlPageCount) {\n // 抓取任务全部完成\n log.log(lang.transl('_列表页抓取完成'))\n\n idListWithPageNo.store(pageType.type)\n\n this.getIdListFinished()\n }\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n this.sendCrawlTaskCount = 0\n }\n\n // 搜索页把下载任务按收藏数从高到低下载\n protected sortResult() {\n store.resultMeta.sort(Utils.sortByProperty('bmk'))\n store.result.sort(Utils.sortByProperty('bmk'))\n }\n\n private onSettingChange = (event: CustomEventInit) => {\n if (states.crawlTagList) {\n return\n }\n const data = event.detail.data\n if (this.causeResultChange.includes(data.name)) {\n if (store.result.length > 0) {\n this.reAddResult()\n EVT.fire('resultChange')\n }\n }\n }\n\n // 抓取完成后,保存结果的元数据,并重新添加抓取结果\n private onCrawlFinish = () => {\n // 有些操作也会触发抓取完毕的事件,但不应该调整搜索页面的结果。\n if (states.crawlTagList || states.quickCrawl) {\n return\n }\n if (!this.crawlStartBySelf) {\n return\n }\n\n this.resultMeta = [...store.resultMeta]\n\n // 在搜索页面抓取完毕之后,作品数据会按照收藏数量排序。所以这里需要清空之前的预览,重新生成预览\n this.clearPreview()\n this.reAddResult()\n this.showPreview()\n\n // 解绑创建作品元素的事件\n window.removeEventListener(EVT.list.addResult, this.createPreview)\n\n this.crawlStartBySelf = false\n\n setTimeout(() => {\n EVT.fire('worksUpdate')\n }, 0)\n }\n\n // 返回包含作品列表的 ul 元素\n private getWorksWrap() {\n const test = document.querySelectorAll(this.worksWrapSelector)\n if (test.length > 0) {\n if (test.length > 2) {\n // 大于 2 的情况是在搜索页的首页,或者小说页面\n return test[2] as HTMLUListElement\n }\n\n // 在插画、漫画、artworks 页面只有两个 ul 或者一个\n return test[test.length - 1] as HTMLUListElement\n }\n return null\n }\n\n // 显示抓取到的作品数量\n private showCount = () => {\n if (states.crawlTagList || !settings.previewResult) {\n return\n }\n\n if (settings.previewResult && this.countEl) {\n const count = this.resultMeta.length || store.resultMeta.length\n this.countEl.textContent = count.toString()\n }\n }\n\n // 生成抓取结果对应的作品元素\n private createPreview = (event: CustomEventInit) => {\n if (states.crawlTagList) {\n return\n }\n if (!settings.previewResult || !this.worksWrap) {\n return\n }\n\n // 检查显示的预览数量是否达到上限\n if (this.previewCount >= settings.previewResultLimit) {\n if (!this.showPreviewLimitTip) {\n const msg = lang.transl('_预览搜索结果的数量达到上限的提示')\n log.warning(msg)\n msgBox.warning(msg)\n this.showPreviewLimitTip = true\n }\n return\n }\n this.previewCount++\n\n const data = event.detail.data as Result\n\n let r18Text = ''\n if (data.xRestrict === 1) {\n r18Text = 'R-18'\n }\n if (data.xRestrict === 2) {\n r18Text = 'R-18G'\n }\n\n let r18HTML = r18Text\n ? `\n
        \n
        \n
        ${r18Text}
        \n
        \n
        `\n : ''\n\n let multipleHTML = ''\n if (data.pageCount > 1) {\n multipleHTML = `\n
        \n
        \n \n \n \n \n \n \n \n ${data.pageCount}\n
        \n
        `\n }\n\n let ugoiraHTML = ''\n if (data.ugoiraInfo) {\n ugoiraHTML = `\n \n \n \n `\n }\n\n // 添加收藏的作品,让收藏图标变红\n const bookmarkedFlag = data.bookmarked ? this.bookmarkedClass : ''\n\n const html = `\n
        \n
        \n
        \n \n \n
        \n\n \n ${r18HTML}\n\n \n ${multipleHTML}\n \n
        \n \n
        \n \"${\n\n \n ${ugoiraHTML}\n
        \n
        \n \n
        ${data.bmk}
        \n \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n \n ${\n data.title\n }\n \n
        \n \n \n
        \n
        \n `\n // 相比 pixiv 原本的作品预览区域,这里去掉了作者头像的部分,因为抓取到的数据里没有作者头像。\n\n // 生成预览元素\n const li = document.createElement('li')\n li.classList.add(this.listClass)\n li.dataset.id = data.idNum.toString()\n li.innerHTML = html\n\n // 绑定收藏按钮的事件\n const addBMKBtn = li!.querySelector(\n `.${this.addBMKBtnClass}`\n ) as HTMLButtonElement\n const bookmarkedClass = this.bookmarkedClass\n addBMKBtn.addEventListener('click', function () {\n // 添加收藏\n const e = new CustomEvent('addBMK', {\n detail: { data: { id: data.idNum, tags: data.tags, el: addBMKBtn } },\n })\n window.dispatchEvent(e)\n\n // 下载这个作品\n downloadOnClickBookmark.send(data.idNum.toString())\n })\n\n // 添加到缓冲中\n this.workPreviewBuffer.append(li)\n }\n\n // 清空预览作品的列表,在开始抓取时和作品抓取完毕时使用\n private clearPreview() {\n if (!settings.previewResult || !this.crawlStartBySelf) {\n return\n }\n this.worksWrap = this.getWorksWrap()\n if (this.worksWrap) {\n this.worksWrap.innerHTML = ''\n }\n // 同时重置一些变量\n this.previewCount = 0\n this.showPreviewLimitTip = false\n this.workPreviewBuffer = document.createDocumentFragment()\n }\n\n // 传递作品 id 列表,从页面上的作品列表里移除这些作品\n private removeWorks(idList: string[]) {\n // #root section ul .searchList\n const listSelector = `${this.worksWrapSelector} .${this.listClass}`\n const lists = document.querySelectorAll(\n listSelector\n ) as NodeListOf\n for (const li of lists) {\n if (li.dataset.id && idList.includes(li.dataset.id)) {\n li.style.display = 'none'\n // li.remove()\n // 推测隐藏元素可以更快的重绘好页面,因为删除元素修改了 dom 结构,花的时间可能会多一些\n }\n }\n }\n\n // 筛选抓取结果。传入函数,过滤符合条件的结果\n // 在抓取完成之后,所有会从结果合集中删除某些结果的操作都要经过这里\n private async filterResult(callback: FilterCB) {\n if (this.resultMeta.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n const beforeLength = this.resultMeta.length // 储存过滤前的结果数量\n const resultMetaTemp: Result[] = []\n const resultMetaRemoved: Result[] = []\n\n for (const meta of this.resultMeta) {\n if (await callback(meta)) {\n resultMetaTemp.push(meta)\n } else {\n resultMetaRemoved.push(meta)\n }\n }\n\n this.resultMeta = resultMetaTemp\n\n // 如果过滤后,作品元数据发生了改变则重排作品\n if (this.resultMeta.length !== beforeLength) {\n let ids: string[] = []\n for (const result of resultMetaRemoved) {\n ids.push(result.idNum.toString())\n }\n this.removeWorks(ids)\n this.reAddResult()\n }\n\n EVT.fire('resultChange')\n }\n\n // 重新添加抓取结果,执行时机:\n // 1 作品抓取完毕之后,添加抓取到的数据\n // 2 使用“在结果中筛选”或删除作品,使得作品数据变化了,改变作品列表视图\n // 3 修改了“多图下载设置”,导致作品数据变化\n private reAddResult() {\n store.reset()\n\n // store.addResult 会触发 addResult 事件,让本模块生成对应作品的预览,并显示作品数量\n for (let data of this.resultMeta) {\n store.addResult(data)\n }\n\n // showCount 依赖 addResult 事件,但如果清空了所有结果,则不会触发 addResult 事件,所以需要手动调用它\n if (this.resultMeta.length === 0) {\n this.showCount()\n }\n }\n\n // 在当前结果中再次筛选,会修改第一次筛选的结果\n private screenInResult() {\n if (states.busy) {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n this.getMultipleSetting()\n\n this.filterResult((data) => {\n const filterOpt: FilterOption = {\n aiType: data.aiType,\n id: data.id,\n workType: data.type,\n pageCount: data.pageCount,\n tags: data.tags,\n bookmarkCount: data.bmk,\n bookmarkData: data.bookmarked,\n width: data.pageCount === 1 ? data.fullWidth : 0,\n height: data.pageCount === 1 ? data.fullHeight : 0,\n createDate: data.date,\n userId: data.userId,\n xRestrict: data.xRestrict,\n }\n\n return filter.check(filterOpt)\n })\n }\n\n // 清除多图作品\n private clearMultiple = () => {\n this.filterResult((data) => {\n return data.pageCount <= 1\n })\n }\n\n // 清除动图作品\n private clearUgoira = () => {\n this.filterResult((data) => {\n return !data.ugoiraInfo\n })\n }\n\n // 手动删除作品\n private deleteWork = (event: CustomEventInit) => {\n const el = event.detail.data as HTMLElement\n this.deleteId = parseInt(el.dataset.id!)\n\n this.filterResult((data) => {\n return data.idNum !== this.deleteId\n })\n }\n\n private addBookmark = async (event: CustomEventInit) => {\n const data = event.detail.data as AddBMKData\n\n for (const r of store.result) {\n if (r.idNum === data.id) {\n const res = await bookmark.add(data.id.toString(), 'illusts', data.tags)\n if (res === 200) {\n // 同步数据\n r.bookmarked = true\n this.resultMeta.forEach((result) => {\n if (result.idNum === data.id) {\n result.bookmarked = true\n }\n })\n data.el.classList.add(this.bookmarkedClass)\n }\n\n break\n }\n }\n }\n\n // 去除覆盖在热门作品上面的会员购买链接\n private removeBlockOnHotBar() {\n // 需要重复执行,因为这个链接会生成不止一次\n window.setInterval(() => {\n if (pageType.type !== pageType.list.ArtworkSearch) {\n return\n }\n const hotWorksLink = document.querySelector('section a[href^=\"/premium\"]')\n if (hotWorksLink) {\n hotWorksLink.remove()\n }\n }, 300)\n }\n\n private crawlTag = () => {\n if (states.crawlTagList) {\n this.readyCrawl()\n }\n }\n}\n\nexport { InitSearchArtworkPage }\n","// 在搜索页面抓取 tag 列表,抓取完一个 tag 就立即开始下载。下载完毕后再抓取下一个 tag\n// 这是个单例类,为了控制其执行时机,需要手动执行 init 方法来进行一部分初始化\nimport { Tools } from '../Tools'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { msgBox } from '../MsgBox'\nimport { states } from '../store/States'\nimport { toast } from '../Toast'\nimport { EVT } from '../EVT'\nimport { pageType } from '../PageType'\n\nclass CrawlTagList {\n constructor() {}\n\n public init() {\n this.addCrawlBtns()\n this.addElement()\n this.bindEvents()\n this.restoreData()\n }\n\n private bindEventFlag = false\n\n private EnablPage = [pageType.list.ArtworkSearch, pageType.list.NovelSearch]\n\n private _tagList: string[] = []\n\n private get tagList() {\n return this._tagList\n }\n private set tagList(val: string[]) {\n this._tagList = val\n this.storeData()\n this.showTagList()\n this.toggleWrap(true)\n }\n\n private storeName = 'crawlTagList'\n\n private wrap!: HTMLDivElement\n private readonly wrapId = 'crawlTagListInputWrap'\n private input!: HTMLTextAreaElement\n private startCrawlBtn!: HTMLButtonElement\n private clearCrawlBtn!: HTMLButtonElement\n private showTagListWrap!: HTMLUListElement\n\n private addCrawlBtns() {\n Tools.addBtn('crawlBtns', Colors.bgBlue, '_抓取标签列表').addEventListener(\n 'click',\n () => {\n EVT.fire('closeCenterPanel')\n this.toggleWrap(true)\n // 跳转到页面顶部,否则用户可能看不到输入区域\n window.scrollTo(0, 0)\n }\n )\n }\n\n private addElement() {\n const htmlText = `\n

        \n
        \n \n \n
        \n
        \n

        \n
          \n
            \n
        \n `\n\n // 创建输入标签列表的区域。如果页面上已存在该区域,则移除它,重新创建\n const test = document.getElementById(this.wrapId)\n if (test !== null) {\n test.remove()\n }\n\n const wrap = document.createElement('div')\n wrap.id = this.wrapId\n wrap.innerHTML = htmlText\n this.wrap = Tools.insertToHead(wrap)\n lang.register(this.wrap)\n\n this.input = this.wrap.querySelector(\n '#crawlTagListTextArea'\n )! as HTMLTextAreaElement\n this.startCrawlBtn = this.wrap.querySelector(\n '#crawlTagListBtn'\n )! as HTMLButtonElement\n this.clearCrawlBtn = this.wrap.querySelector(\n '#clearTagListBtn'\n )! as HTMLButtonElement\n this.showTagListWrap = this.wrap.querySelector(\n '#showTagList'\n )! as HTMLUListElement\n\n this.startCrawlBtn.addEventListener('click', () => {\n this.checkInput()\n })\n\n this.clearCrawlBtn.addEventListener('click', () => {\n this.clear()\n })\n }\n\n private bindEvents() {\n // 防止事件重复绑定\n if (this.bindEventFlag) {\n return\n }\n this.bindEventFlag = true\n\n window.addEventListener(EVT.list.downloadComplete, this.onDownloadComplete)\n window.addEventListener(EVT.list.crawlEmpty, this.onDownloadComplete)\n // 当页面类型变化时,如果进入到了不支持的页面类型,则隐藏输入区域\n window.addEventListener(EVT.list.pageSwitch, () => {\n if (\n !this.EnablPage.includes(pageType.type) &&\n this._tagList.length === 0\n ) {\n this.toggleWrap(false)\n }\n })\n }\n\n private onDownloadComplete = () => {\n window.setTimeout(() => {\n if (states.crawlTagList) {\n this._tagList.shift()\n this.tagList = this._tagList\n\n if (this._tagList.length === 0) {\n states.crawlTagList = false\n // 输出提示\n this.showTagListWrap.innerHTML = `${lang.transl('_下载完毕')}`\n return\n }\n\n // 继续抓取下一个标签\n this.readyCrawl()\n }\n }, 0)\n }\n\n private checkInput() {\n if (states.busy) {\n return toast.error(lang.transl('_当前任务尚未完成'))\n }\n\n const value = this.input.value.trim()\n if (value === '') {\n return msgBox.error(lang.transl('_没有数据可供使用'))\n }\n\n const array = value.split('\\n').filter((val) => val !== '' && val !== ' ')\n if (array.length === 0) {\n return msgBox.error(lang.transl('_没有数据可供使用'))\n }\n\n this.tagList = array\n this.readyCrawl()\n }\n\n private readyCrawl() {\n if (states.busy) {\n return toast.error(lang.transl('_当前任务尚未完成'))\n }\n\n if (!this.EnablPage.includes(pageType.type)) {\n return msgBox.error(\n lang.transl('_抓取标签列表') +\n '
        ' +\n lang.transl('_只能在搜索页面使用')\n )\n }\n\n states.crawlTagList = true\n const tag = this._tagList[0]\n // 修改 title,便于使用 P_title 建立文件夹\n document.title = tag\n // 修改 url,使用当前抓取的标签替换原本 url 里的标签,便于使用 p_tag 建立文件夹\n const urlTag = Tools.getTagFromURL()\n const newURL = location.href.replace(\n encodeURIComponent(urlTag),\n encodeURIComponent(tag)\n )\n history.pushState({ p_tag: tag }, tag, newURL)\n // 触发抓取事件\n EVT.fire('crawlTag', tag)\n }\n\n // 控制 wrap 的显示,如果不传入参数,则自行切换显示/隐藏状态\n private toggleWrap(flag?: boolean) {\n if (flag !== undefined) {\n this.wrap.style.display = flag ? 'block' : 'none'\n } else {\n const now = this.wrap.style.display\n this.wrap.style.display = now === 'block' ? 'none' : 'block'\n }\n }\n\n private showTagList() {\n const text = this.tagList.map((val) => `
      • ${val}
      • `)\n this.showTagListWrap.innerHTML = text.join('')\n }\n\n private clear() {\n if (this.tagList.length === 0) {\n return\n }\n const confirm = window.confirm(lang.transl('_你确定要停止抓取吗'))\n if (confirm) {\n this.tagList = []\n // states.busy 有可能是因为下载器正在抓取作品,通过刷新页面可以取消抓取。\n if (states.busy) {\n location.reload()\n }\n }\n }\n\n // 每当 tagList 状态变化时,保存 tagList 到本地存储\n private storeData() {\n if (this.tagList.length === 0) {\n return localStorage.removeItem(this.storeName)\n }\n localStorage.setItem(this.storeName, JSON.stringify(this.tagList))\n }\n\n // 启动时从本地存储里读取 tagList 数据\n private restoreData() {\n const str = localStorage.getItem(this.storeName)\n if (!str) {\n return\n }\n const data = JSON.parse(str)\n if (str.length === 0) {\n return\n }\n this.tagList = data\n\n // 在输入框里显示需要抓取的标签列表\n this.input.value = this.tagList.map((val) => val).join('\\n')\n\n // 不会自动开始抓取未完成的标签。这是基于以下考虑:\n // 1. 如果之前有未完成的下载,那么下载器会自动恢复下载。如果此时自动开始抓取,会造成冲突\n // 2. 如果自动开始抓取,那么用户每打开一个新的搜索页面,下载器都会自动开始抓取,影响用户正常使用\n }\n}\n\nconst crawlTagList = new CrawlTagList()\nexport { crawlTagList }\n","// 初始化旧版收藏页面\n// 该页面类型已不复存在,这个类仅做占位之用。\n// 在 PageType 里不能删除 BookmarkLegacy 枚举成员,因为有些代码里硬编码了它的枚举值 3\n// 例如:settings.wantPageArr[pageType.type]\n// settings.nameRuleForEachPageType[pageType.type]\nimport { InitPageBase } from '../crawl/InitPageBase'\n\nclass InitBookmarkLegacyPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n}\nexport { InitBookmarkLegacyPage }\n","// 初始化 关注的用户的新作品页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Utils } from '../utils/Utils'\nimport {\n BookMarkNewIllustData,\n BookMarkNewNovelData,\n} from '../crawl/CrawlResult'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nclass InitBookmarkNewPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected type: 'illust' | 'novel' = 'illust'\n protected tag = ''\n protected r18 = false\n protected newVer = false\n // 这次抓取任务最多可以抓取到多少个作品\n protected crawlWorksMaxNumber = 0\n // 裁剪 API 返回的作品数据时的偏移量\n protected firstOffset = 0\n // 总计抓取了多少个作品(被裁剪掉的不算)\n protected crawledWorksNumber = 0\n // 每当 API 返回数据时,保存第一个作品的 id,用来判断后面的数据是否出现重复\n // 如果数据重复就停止抓取,因为后面的每一页的数据都是完全相同的\n protected firstWorkId = ''\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n this.maxCount = 100\n\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, true)\n }\n\n protected nextStep() {\n this.setSlowCrawl()\n\n this.type = window.location.pathname.includes('/novel') ? 'novel' : 'illust'\n this.tag = Utils.getURLSearchField(window.location.href, 'tag')\n this.r18 = location.pathname.includes('r18')\n this.newVer = !document.querySelector('h1')\n // 根据页数计算最多抓取多少个作品。新版一页 60 个作品,旧版一页 20 个作品\n this.crawlWorksMaxNumber = this.crawlNumber * (this.newVer ? 60 : 20)\n\n // 设置 API 里发起请求的页数\n const p = Utils.getURLSearchField(location.href, 'p')\n const pageNo = parseInt(p) || 1\n if (this.newVer) {\n // 新版页面里,由于 API 返回的就是这一页的作品,所以直接获取地址栏的页码就可以\n this.startpageNo = pageNo\n } else {\n // 旧版页面里,由于 API 一页会返回相当于旧版 3 页的数据,所以不能直接使用地址栏的页码\n // 例如用户在旧版页面的第 5 页开始抓取,实质上是从第 81 个作品开始抓取。所以 API 里要从第 2 页开始抓取(第 61 - 120 个作品),并且设置偏移量为 20\n // API 里开始抓取的页数,向上取整\n this.startpageNo = Math.ceil((pageNo * 20) / 60)\n // 计算 API 返回的 60 个数据里,可以保留多少个\n const howManyLeft = this.startpageNo * 60 - (pageNo - 1) * 20\n // 计算偏移量\n this.firstOffset = 60 - howManyLeft\n }\n\n this.getIdList()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let p = this.startpageNo + this.listPageFinished\n\n let data\n try {\n data = await API.getBookmarkNewWorkData(this.type, p, this.tag, this.r18)\n } catch (error) {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let worksData = data.body.thumbnails[this.type]\n\n // 检查数据,如果数据为空,或者和上一页的数据重复,说明已经不需要继续抓取了\n if (worksData.length === 0 || this.firstWorkId === worksData[0].id) {\n log.log(lang.transl('_列表页抓取完成'))\n return this.getIdListFinished()\n } else {\n // 如果数据没有重复,则保存第一个作品的 id\n this.firstWorkId = worksData[0].id\n }\n\n // 旧版页面可能需要对 API 返回的数据进行裁剪\n if (!this.newVer) {\n // 使用偏移量移除不需要的数据(仅一次)\n if (this.firstOffset > 0) {\n worksData = worksData.slice(this.firstOffset)\n this.firstOffset = 0\n }\n // 计算还有多少个作品需要抓取,然后裁剪数组,避免抓取结果超出预定的数量\n const needCrawl = this.crawlWorksMaxNumber - this.crawledWorksNumber\n if (needCrawl < worksData.length) {\n worksData = worksData.slice(0, needCrawl)\n }\n }\n\n this.crawledWorksNumber += worksData.length\n\n // 过滤作品\n // 过滤插画·漫画\n if (this.type === 'illust') {\n for (const data of worksData) {\n if (data.isAdContainer) {\n continue\n }\n\n const filterOpt: FilterOption = {\n aiType: data.aiType,\n id: data.id,\n width: data.pageCount === 1 ? data.width : 0,\n height: data.pageCount === 1 ? data.height : 0,\n pageCount: data.pageCount,\n bookmarkData: data.bookmarkData,\n workType: data.illustType,\n tags: data.tags,\n userId: data.userId,\n xRestrict: data.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: Tools.getWorkTypeString(data.illustType),\n id: data.id,\n })\n }\n }\n } else {\n // 过滤小说\n for (const data of worksData) {\n const filterOpt: FilterOption = {\n aiType: data.aiType,\n id: data.id,\n workType: 3,\n tags: data.tags,\n bookmarkCount: data.bookmarkCount,\n bookmarkData: data.bookmarkData,\n userId: data.userId,\n }\n\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: 'novels',\n id: data.id,\n })\n }\n }\n }\n\n this.listPageFinished++\n\n log.log(\n lang.transl('_列表页抓取进度', this.listPageFinished.toString()),\n 1,\n false\n )\n\n // 判断任务状态\n // 如果抓取到了指定数量的作品,或者抓取到了最后一页,或者抓取完了指定的页面数量\n if (\n this.crawledWorksNumber >= this.crawlWorksMaxNumber ||\n p >= this.maxCount ||\n this.listPageFinished === this.crawlNumber\n ) {\n log.log(lang.transl('_列表页抓取完成'))\n this.getIdListFinished()\n } else {\n // 继续抓取\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n this.firstOffset = 0\n this.crawledWorksNumber = 0\n this.firstWorkId = ''\n }\n}\nexport { InitBookmarkNewPage }\n","// 初始化新版收藏页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { API } from '../API'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { IDData } from '../store/StoreType'\nimport { options } from '../setting/Options'\nimport {\n ArtworkCommonData,\n BookmarkData,\n BookmarkResult,\n} from '../crawl/CrawlResult'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { token } from '../Token'\nimport { BookmarksAddTag } from '../pageFunciton/BookmarksAddTag'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { Utils } from '../utils/Utils'\nimport { Config } from '../Config'\nimport { states } from '../store/States'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport { toast } from '../Toast'\nimport { unBookmarkWorks } from '../UnBookmarkWorks'\nimport { removeWorksTagsInBookmarks } from '../RemoveWorksTagsInBookmarks'\nimport { EVT } from '../EVT'\nimport { WorkBookmarkData, bookmark } from '../Bookmark'\nimport { showHelp } from '../ShowHelp'\nimport { msgBox } from '../MsgBox'\n\nclass InitBookmarkPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private idList: IDData[] = [] // 储存从列表页获取到的 id\n\n private bookmarkDataList: WorkBookmarkData[] = []\n\n private exportList: BookmarkResult[] = []\n\n private type: 'illusts' | 'novels' = 'illusts' // 页面是图片还是小说\n\n private isHide = false // 当前页面是否显示的是非公开收藏\n\n private requsetNumber: number = 0 // 根据页数,计算要抓取的作品个数\n\n private filteredNumber = 0 // 记录检查了多少作品(不论结果是否通过都计入)\n\n private readonly onceRequest: number = 100 // 每次请求多少个数量\n\n private offset: number = 0 // 每次请求的偏移量\n\n // 点击不同的功能按钮时,设定抓取模式\n private crawlMode: 'normal' | 'removeTags' | 'unBookmark' | 'unBookmark404' =\n 'normal'\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n protected addAnyElement() {\n // 如果不存在 token,则不添加与收藏相关的按钮\n if (!token.token) {\n return\n }\n\n // 显示提示\n window.setTimeout(() => {\n showHelp.show(\n 'tipBookmarkManage',\n lang.transl('_在收藏页面里提示有辅助功能可用')\n )\n }, 1000)\n\n // 有些功能按钮只能在用户自己的页面里使用\n // 判断这个收藏页面是不是用户自己的页面\n const URLUserID = Utils.getURLPathField(window.location.pathname, 'users')\n const ownPage = URLUserID && URLUserID === store.loggedUserID\n if (ownPage) {\n const btn = Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_给未分类作品添加添加tag'\n )\n new BookmarksAddTag(btn)\n\n Tools.addBtn(\n 'otherBtns',\n Colors.bgYellow,\n '_移除本页面中所有作品的标签'\n ).addEventListener('click', () => {\n this.removeWorksTagsOnThisPage()\n })\n\n Tools.addBtn(\n 'otherBtns',\n Colors.bgRed,\n '_取消收藏本页面的所有作品'\n ).addEventListener('click', () => {\n this.unBookmarkAllWorksOnThisPage()\n })\n\n Tools.addBtn(\n 'otherBtns',\n Colors.bgRed,\n '_取消收藏所有已被删除的作品'\n ).addEventListener('click', () => {\n this.unBookmarkAll404Works()\n })\n }\n\n // 下面的功能按钮在所有人的收藏页面里都可以使用\n\n const showTip = () => {\n showHelp.show(\n 'tipExportAndImportBookmark',\n lang.transl('_同步收藏列表的说明')\n )\n }\n\n const btnExport = Tools.addBtn('otherBtns', Colors.bgGreen, '_导出收藏列表')\n btnExport.addEventListener('click', () => {\n showTip()\n this.exportBookmarkList()\n })\n\n const btnImport = Tools.addBtn('otherBtns', Colors.bgGreen, '_导入收藏列表')\n btnImport.addEventListener('click', () => {\n this.importBookmarkIDList()\n })\n\n for (const btn of [btnExport, btnImport]) {\n btn.addEventListener('mouseover', showTip)\n }\n }\n\n // 移除本页面中所有作品的标签\n private removeWorksTagsOnThisPage() {\n if (states.busy || this.crawlMode !== 'normal') {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n // 走一遍简化的抓取流程\n this.crawlMode = 'removeTags'\n log.warning(lang.transl('_移除本页面中所有作品的标签'))\n log.warning(lang.transl('_它们会变成未分类状态'))\n toast.warning(lang.transl('_移除本页面中所有作品的标签'), {\n position: 'topCenter',\n })\n EVT.fire('closeCenterPanel')\n // 设置抓取页数为 1\n this.crawlNumber = 1\n this.readyGetIdList()\n this.getIdList()\n }\n\n // 取消收藏本页面的所有作品\n private unBookmarkAllWorksOnThisPage() {\n if (states.busy || this.crawlMode !== 'normal') {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n // 走一遍简化的抓取流程\n this.crawlMode = 'unBookmark'\n log.warning(lang.transl('_取消收藏本页面的所有作品'))\n toast.warning(lang.transl('_取消收藏本页面的所有作品'), {\n position: 'topCenter',\n })\n EVT.fire('closeCenterPanel')\n // 设置抓取页数为 1\n this.crawlNumber = 1\n this.readyGetIdList()\n this.getIdList()\n }\n\n private unBookmarkAll404Works() {\n if (states.busy || this.crawlMode !== 'normal') {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n // 走一遍简化的抓取流程\n this.crawlMode = 'unBookmark404'\n log.warning(lang.transl('_取消收藏所有已被删除的作品'))\n toast.warning(lang.transl('_取消收藏所有已被删除的作品'), {\n position: 'topCenter',\n })\n EVT.fire('closeCenterPanel')\n // 设置抓取页数为 -1\n this.crawlNumber = -1\n this.setSlowCrawl()\n this.readyGetIdList()\n // 抓取全部收藏\n this.offset = 0\n this.getIdList()\n }\n\n private bindExportEvent = false\n private exportBookmarkList() {\n if (states.busy || this.crawlMode !== 'normal') {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n states.exportIDList = true\n this.exportList = []\n EVT.fire('closeCenterPanel')\n\n // 走一遍完整的抓取流程\n // 此时的 crawlMode 是 normal\n // 这会应用用户设置的抓取页数和过滤条件\n this.readyCrawl()\n log.log(lang.transl('_导出收藏列表'), 2)\n\n // 绑定事件,在抓取完成后执行导出动作\n if (this.bindExportEvent === false) {\n window.addEventListener(EVT.list.getIdListFinished, async () => {\n if (states.exportIDList) {\n window.setTimeout(() => {\n states.exportIDList = false\n }, 500)\n\n if (this.exportList.length === 0) {\n return\n }\n\n const resultList = await Utils.json2BlobSafe(this.exportList)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `Bookmark list-total ${\n result.total\n }-from ${Tools.getPageTitle()}-${Utils.replaceUnsafeStr(\n new Date().toLocaleString()\n )}.json`\n )\n }\n\n const msg = '✓ ' + lang.transl('_导出收藏列表')\n log.success(msg)\n toast.success(msg)\n }\n })\n\n this.bindExportEvent = true\n }\n }\n\n private async importBookmarkIDList() {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as BookmarkResult[]\n if (!loadedJSON) {\n return\n }\n\n // 要求是数组并且要有内容\n if (!Array.isArray(loadedJSON) || !loadedJSON.length || !loadedJSON[0]) {\n return toast.error(lang.transl('_格式错误'))\n }\n\n // 检查是否含有必须的字段(只检查了一部分)\n const keys = Object.keys(loadedJSON[0])\n const need = ['id', 'type', 'tags']\n for (const field of need) {\n if (!keys.includes(field)) {\n return toast.error(lang.transl('_格式错误'))\n }\n }\n\n const tip = lang.transl('_导入收藏列表')\n toast.success(tip)\n log.success(tip)\n EVT.fire('closeCenterPanel')\n\n log.log(lang.transl('_作品数量') + ` ${loadedJSON.length}`, 2)\n\n // 如果要收藏的作品数量较多,则先加载现有的收藏列表,以避免重复添加收藏,浪费时间\n // 如果要收藏的作品数量较少,则会直接进行收藏,而不先加载现有的收藏列表。\n // 这是因为当已收藏的作品数量较多的话,加载列表所花费的时间可能就已经超过了添加收藏的时间\n // 其实在导出收藏列表时,是可以知道这个作品有没有被【当时登录的用户】收藏的。\n // 但是在导入收藏的时候,用户可能换了另一个账号,此时无法直接知道这个作品是否被这个账号所收藏。\n // 所以要想避免重复添加收藏,还是必须在导入时先获取当前登录账号的收藏列表\n let oldList: BookmarkResult[] = []\n if (loadedJSON.length > 200) {\n log.log(lang.transl('_加载收藏列表'))\n // 注意,这里使用的必须是当前登录用户的 ID\n // 由于用户可能会在其他用户的页面上执行这个功能,所以不能使用 Tools.getUserId()\n const userID = store.loggedUserID\n let loadIllust = loadedJSON.some((item) => item.type === 'illusts')\n let loadNovel = loadedJSON.some((item) => item.type === 'novels')\n if (loadIllust) {\n log.log(lang.transl('_插画') + ', ' + lang.transl('_公开'))\n const illustsPublic = await bookmark.getAllBookmarkList(\n userID,\n 'illusts',\n '',\n 0,\n false\n )\n\n log.log(lang.transl('_插画') + ', ' + lang.transl('_不公开'))\n const illustsPrivate = await bookmark.getAllBookmarkList(\n userID,\n 'illusts',\n '',\n 0,\n true\n )\n\n oldList = oldList.concat(illustsPublic, illustsPrivate)\n }\n if (loadNovel) {\n log.log(lang.transl('_小说') + ', ' + lang.transl('_公开'))\n const novelsPublic = await bookmark.getAllBookmarkList(\n userID,\n 'novels',\n '',\n 0,\n false\n )\n\n log.log(lang.transl('_小说') + ', ' + lang.transl('_不公开'))\n const novelsPrivate = await bookmark.getAllBookmarkList(\n userID,\n 'novels',\n '',\n 0,\n true\n )\n\n oldList = oldList.concat(novelsPublic, novelsPrivate)\n }\n\n log.log(lang.transl('_一共有x个', oldList.length.toString()), 2)\n }\n\n // 开始批量添加收藏\n bookmark.addBookmarksInBatchs(loadedJSON, oldList)\n }\n\n protected nextStep() {\n this.crawlMode = 'normal'\n this.setSlowCrawl()\n this.readyGetIdList()\n this.getIdList()\n }\n\n protected readyGetIdList() {\n if (window.location.pathname.includes('/novel')) {\n this.type = 'novels'\n }\n\n store.tag = Tools.getTagFromURL()\n\n // 每页个作品数,插画 48 个,小说 24 个\n const onceNumber = window.location.pathname.includes('/novels') ? 24 : 48\n\n // 如果前面有页数,就去掉前面页数的作品数量。即:从本页开始下载\n const nowPage = Utils.getURLSearchField(location.href, 'p') // 判断当前处于第几页,页码从 1 开始。也可能没有页码\n if (nowPage) {\n this.offset = (parseInt(nowPage) - 1) * onceNumber\n }\n if (this.offset < 0) {\n this.offset = 0\n }\n\n // 根据页数设置,计算要下载的个数\n if (this.crawlNumber === -1) {\n this.requsetNumber = Config.worksNumberLimit\n } else {\n this.requsetNumber = onceNumber * this.crawlNumber\n }\n\n // 判断是公开收藏还是非公开收藏\n // 在新旧版 url 里,rest 都是在查询字符串里的\n this.isHide = Utils.getURLSearchField(location.href, 'rest') === 'hide'\n\n log.log(lang.transl('_正在抓取'))\n\n if (this.crawlNumber === -1) {\n log.log(lang.transl('_获取全部书签作品'))\n }\n }\n\n // 获取用户的收藏作品列表\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let data: BookmarkData\n try {\n data = await API.getBookmarkData(\n Tools.getUserId(),\n this.type,\n store.tag,\n this.offset,\n this.isHide\n )\n } catch (error) {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n if (\n data.body.works.length === 0 ||\n this.bookmarkDataList.length >= this.requsetNumber ||\n this.idList.length >= this.requsetNumber ||\n this.filteredNumber >= this.requsetNumber\n ) {\n // 书签页获取完毕\n return this.afterGetIdList()\n } else {\n // 没有抓取完毕时,添加数据\n for (const workData of data.body.works) {\n if (this.filteredNumber >= this.requsetNumber) {\n return this.afterGetIdList()\n }\n\n if (workData.bookmarkData) {\n if (\n this.crawlMode === 'unBookmark' ||\n this.crawlMode === 'removeTags' ||\n (this.crawlMode === 'unBookmark404' &&\n Number.parseInt(workData.userId) == 0)\n ) {\n this.bookmarkDataList.push({\n workID: Number.parseInt(workData.id),\n type:\n (workData as ArtworkCommonData).illustType === undefined\n ? 'novels'\n : 'illusts',\n bookmarkID: workData.bookmarkData.id,\n private: workData.bookmarkData.private,\n })\n }\n }\n\n if (this.crawlMode === 'normal') {\n const filterOpt: FilterOption = {\n aiType: workData.aiType,\n id: workData.id,\n tags: workData.tags,\n bookmarkData: workData.bookmarkData,\n createDate: workData.createDate,\n userId: workData.userId,\n xRestrict: workData.xRestrict,\n }\n\n this.filteredNumber++\n\n if (await filter.check(filterOpt)) {\n this.idList.push({\n type:\n (workData as ArtworkCommonData).illustType === undefined\n ? 'novels'\n : Tools.getWorkTypeString(\n (workData as ArtworkCommonData).illustType\n ),\n id: workData.id,\n })\n\n if (states.exportIDList) {\n this.exportList.push({\n id: workData.id,\n type:\n (workData as ArtworkCommonData).illustType === undefined\n ? 'novels'\n : 'illusts',\n tags: workData.tags,\n restrict: workData.bookmarkData?.private || false,\n })\n }\n }\n }\n }\n\n this.offset += this.onceRequest\n\n const length =\n this.crawlMode === 'normal'\n ? this.idList.length\n : this.bookmarkDataList.length\n log.log(lang.transl('_当前作品个数', length.toString()), 1, false)\n\n // 继续抓取\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n }\n\n // 获取作品 id 列表完毕之后\n private afterGetIdList() {\n // 裁剪作品\n if (this.crawlMode === 'normal') {\n // 因为书签页面一次获取 100 个作品,大于一页的数量。所以可能会抓取多了,需要删除多余的作品\n if (this.idList.length > this.requsetNumber) {\n // 删除后面部分(较早收藏的),留下近期收藏的\n this.idList.splice(this.requsetNumber, this.idList.length)\n // 书签页面的 api 没有考虑页面上的排序顺序,获取到的 id 列表始终是按收藏顺序由近期到早期排列的\n }\n\n if (this.exportList.length > this.requsetNumber) {\n this.exportList.splice(this.requsetNumber, this.exportList.length)\n }\n } else {\n if (this.bookmarkDataList.length > this.requsetNumber) {\n this.bookmarkDataList.splice(\n this.requsetNumber,\n this.bookmarkDataList.length\n )\n }\n }\n\n if (this.crawlMode === 'normal') {\n // 正常抓取\n store.idList = store.idList.concat(this.idList)\n this.getIdListFinished()\n } else if (\n this.crawlMode === 'unBookmark' ||\n this.crawlMode === 'unBookmark404'\n ) {\n // 取消收藏\n\n // 导出已被删除的收藏的 ID 列表\n if (\n this.crawlMode === 'unBookmark404' &&\n this.bookmarkDataList.length > 0\n ) {\n const IDList = []\n for (const item of this.bookmarkDataList) {\n IDList.push(item.workID)\n }\n const blob = Utils.json2Blob(IDList)\n const url = URL.createObjectURL(blob)\n Utils.downloadFile(url, '404 bookmark ID list.txt')\n log.log(lang.transl('_已导出被删除的作品的ID列表'))\n }\n\n const bookmarkDataList = Array.from(this.bookmarkDataList)\n this.resetGetIdListStatus()\n unBookmarkWorks.start(bookmarkDataList)\n } else if (this.crawlMode === 'removeTags') {\n // 移除本页面作品的标签\n const bookmarkDataList = Array.from(this.bookmarkDataList)\n this.resetGetIdListStatus()\n removeWorksTagsInBookmarks.start(bookmarkDataList)\n }\n }\n\n protected resetGetIdListStatus() {\n this.type = 'illusts'\n this.crawlMode = 'normal'\n this.idList = []\n this.bookmarkDataList = []\n this.offset = 0\n this.requsetNumber = 0\n this.filteredNumber = 0\n }\n}\n\nexport { InitBookmarkPage }\n","// 初始化关注页面、好 P 友页面、粉丝页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { createCSV } from '../utils/CreateCSV'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport { toast } from '../Toast'\nimport { showHelp } from '../ShowHelp'\nimport { msgBox } from '../MsgBox'\nimport { token } from '../Token'\nimport { EVT } from '../EVT'\n\ninterface UserInfo {\n userId: string\n userName: string\n homePage: string\n userComment: string\n profileImageUrl: string\n}\n\ntype PageType = 0 | 1 | 2\n\nclass InitFollowingPage extends InitPageBase {\n constructor() {\n super()\n this.getPageType()\n this.init()\n }\n\n private baseOffset = 0 // 开始抓取时,记录初始的偏移量\n private readonly onceNumber = 24 // 每页 24 个画师\n\n private pageType: PageType = 0 // 页面子类型\n // 0 我的关注\n // 1 我的好 P 友\n // 2 我的粉丝\n\n private getUserListNo = 0 // 获取用户列表时,记录请求的次数\n private readonly limit = 100 // 每次请求多少个用户\n\n private totalNeed = Number.MAX_SAFE_INTEGER\n private crawlUserID = ''\n private rest: 'show' | 'hide' = 'show'\n private tag = ''\n\n private userList: string[] = []\n\n private index = 0 // getIdList 时,对 userList 的索引\n\n private task: 'crawl' | 'exportCSV' | 'exportJSON' | 'batchFollow' = 'crawl'\n\n private CSVData: UserInfo[] = [] // 储存用户列表,包含 id 和用户名\n\n private importFollowedUserIDs: string[] = []\n\n private readonly homePrefix = 'https://www.pixiv.net/users/' // 用户主页的通用链接前缀\n\n private getPageType() {\n const pathname = window.location.pathname\n if (pathname.includes('/following')) {\n this.pageType = 0\n } else if (pathname.includes('/mypixiv')) {\n this.pageType = 1\n } else if (pathname.includes('/followers')) {\n this.pageType = 2\n }\n }\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_导出关注列表CSV'\n ).addEventListener('click', () => {\n this.task = 'exportCSV'\n this.readyCrawl()\n })\n\n const exportButton = Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_导出关注列表'\n )\n exportButton.addEventListener('click', () => {\n this.task = 'exportJSON'\n this.readyCrawl()\n })\n exportButton.addEventListener('mouseenter', () => {\n showHelp.show(\n 'tipExportFollowingUserList',\n lang.transl('_导入导出关注用户列表的说明')\n )\n })\n\n const batchFollowButton = Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_批量关注用户'\n )\n batchFollowButton.addEventListener('click', async () => {\n if (states.busy) {\n return toast.error(lang.transl('_当前任务尚未完成'))\n }\n\n if (store.loggedUserID === '') {\n return msgBox.error(lang.transl('_作品页状态码401'))\n }\n\n EVT.fire('clearLog')\n\n log.log(lang.transl('_批量关注用户'))\n this.importFollowedUserIDs = await this.importUserList()\n log.log(\n lang.transl('_导入的用户ID数量') + this.importFollowedUserIDs.length\n )\n if (this.importFollowedUserIDs.length === 0) {\n return log.success(lang.transl('_本次任务已全部完成'))\n }\n\n this.stopAddFollow = false\n this.sendReqNumber = 0\n\n // 导入关注列表后,需要获取关注的所有用户列表,以便在添加关注时跳过已关注的,节约时间\n this.task = 'batchFollow'\n\n states.slowCrawlMode = true\n states.stopCrawl = false\n\n EVT.fire('crawlStart')\n\n // 批量添加关注时,获取所有关注的用户\n this.crawlNumber = -1\n // 把页面类型设置为 0,始终获取关注的用户列表\n this.pageType = 0\n\n log.log(lang.transl('_正在加载关注用户列表'))\n this.readyGet()\n\n // 始终抓取自己的关注列表,而非别人的,因为添加关注时,需要和自己的关注列表进行对比\n this.crawlUserID = store.loggedUserID\n\n this.getUserList()\n })\n batchFollowButton.addEventListener('mouseenter', () => {\n showHelp.show(\n 'tipExportFollowingUserList',\n lang.transl('_导入导出关注用户列表的说明')\n )\n })\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n protected nextStep() {\n this.setSlowCrawl()\n this.readyGet()\n log.log(lang.transl('_正在抓取'))\n this.getPageType()\n this.getUserList()\n }\n\n protected readyGet() {\n this.rest = location.href.includes('rest=hide') ? 'hide' : 'show'\n this.tag = Utils.getURLPathField(window.location.pathname, 'following')\n\n // 获取抓取开始时的页码\n const nowPage = Utils.getURLSearchField(location.href, 'p')\n // 计算开始抓取时的偏移量\n if (nowPage !== '') {\n this.baseOffset = (parseInt(nowPage) - 1) * this.onceNumber\n } else {\n this.baseOffset = 0\n }\n\n // 要抓取多少个用户\n this.totalNeed = Number.MAX_SAFE_INTEGER\n if (this.crawlNumber !== -1) {\n this.totalNeed = this.onceNumber * this.crawlNumber\n }\n\n // 获取当前页面的用户 id\n const test = /users\\/(\\d*)\\//.exec(location.href)\n if (test && test.length > 1) {\n this.crawlUserID = test[1]\n } else {\n const msg = `Get the user's own id failed`\n log.error(msg, 2)\n throw new Error(msg)\n }\n }\n\n // 获取用户列表\n private async getUserList() {\n if (states.stopCrawl) {\n return this.getUserListComplete()\n }\n\n const offset = this.baseOffset + this.getUserListNo * this.limit\n\n let res\n try {\n switch (this.pageType) {\n case 0:\n res = await API.getFollowingList(\n this.crawlUserID,\n this.rest,\n this.tag,\n offset\n )\n break\n case 1:\n res = await API.getMyPixivList(this.crawlUserID, offset)\n break\n case 2:\n res = await API.getFollowersList(this.crawlUserID, offset)\n break\n }\n } catch {\n this.getUserList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getUserListComplete()\n }\n\n const users = res.body.users\n\n if (users.length === 0) {\n // 用户列表抓取完毕\n return this.getUserListComplete()\n }\n\n for (const userData of users) {\n this.userList.push(userData.userId)\n\n if (this.task === 'exportCSV') {\n this.CSVData.push({\n userId: userData.userId,\n userName: userData.userName,\n homePage: this.homePrefix + userData.userId,\n userComment: userData.userComment,\n profileImageUrl: userData.profileImageUrl,\n })\n }\n\n if (this.userList.length >= this.totalNeed) {\n // 抓取到了指定数量的用户\n return this.getUserListComplete()\n }\n }\n\n log.log(\n lang.transl('_当前有x个用户', this.userList.length.toString()),\n 1,\n false\n )\n\n this.getUserListNo++\n this.getUserList()\n }\n\n private async getUserListComplete() {\n log.log(lang.transl('_当前有x个用户', this.userList.length.toString()))\n\n // 在批量关注用户时,抓取结果为 0 并不影响继续执行\n if (this.userList.length === 0 && this.task !== 'batchFollow') {\n return this.getIdListFinished()\n }\n\n if (this.task === 'exportCSV') {\n this.exportCSV()\n const msg = '✓ ' + lang.transl('_导出关注列表CSV')\n log.success(msg)\n toast.success(msg)\n\n this.stopCrawl()\n return\n }\n\n if (this.task === 'exportJSON') {\n this.exportJSON()\n const msg = '✓ ' + lang.transl('_导出关注列表')\n log.success(msg)\n toast.success(msg)\n\n this.stopCrawl()\n return\n }\n\n if (this.task === 'batchFollow') {\n await this.batchFollow()\n this.stopCrawl()\n return\n }\n\n this.getIdList()\n }\n\n private stopCrawl() {\n states.slowCrawlMode = false\n states.busy = false\n\n this.resetGetIdListStatus()\n\n EVT.fire('stopCrawl')\n }\n\n private exportCSV() {\n // 添加用户信息\n const data: string[][] = this.CSVData.map((item) => {\n return Object.values(item)\n })\n\n // 添加用户信息的标题字段\n data.unshift(Object.keys(this.CSVData[0]))\n\n const csv = createCSV.create(data)\n const csvURL = URL.createObjectURL(csv)\n\n const csvName = Tools.getPageTitle()\n\n Utils.downloadFile(csvURL, Utils.replaceUnsafeStr(csvName) + '.csv')\n }\n\n private exportJSON() {\n const blob = Utils.json2Blob(this.userList)\n const url = URL.createObjectURL(blob)\n Utils.downloadFile(\n url,\n `following list-toal ${\n this.userList.length\n }-from user ${Utils.getURLPathField(\n window.location.pathname,\n 'users'\n )}-${Utils.replaceUnsafeStr(new Date().toLocaleString())}.json`\n )\n URL.revokeObjectURL(url)\n }\n\n private async importUserList(): Promise {\n return new Promise(async (resolve) => {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as string[]\n if (!loadedJSON) {\n return resolve([])\n }\n\n // 要求是数组并且为 string[]\n if (\n !Array.isArray(loadedJSON) ||\n loadedJSON.length === 0 ||\n typeof loadedJSON[0] !== 'string'\n ) {\n toast.error(lang.transl('_格式错误'))\n return resolve([])\n }\n\n return resolve(loadedJSON)\n })\n }\n\n private stopAddFollow = false\n private sendReqNumber = 0\n private readonly dailyLimit = 1000 // 每天限制关注的数量,以免被封号\n private tokenHasUpdated = false\n private need_recaptcha_enterprise_score_token = false\n\n private logProgress(current: number, total: number, newAdded: number) {\n log.log(\n `${current} / ${total}, ${lang.transl('_新增x个', newAdded.toString())}`,\n 1,\n false\n )\n }\n\n private async batchFollow(): Promise {\n return new Promise(async (resolve, reject) => {\n const taskName = lang\n .transl('_批量关注用户')\n .replace('(JSON)', '')\n .replace('(JSON)', '')\n log.success(taskName)\n log.warning(lang.transl('_慢速执行以避免引起429错误'))\n log.warning(lang.transl('_提示可以重新执行批量关注任务'))\n\n let followed = 0\n let number = 0\n const total = this.importFollowedUserIDs.length\n\n for (const userID of this.importFollowedUserIDs) {\n this.logProgress(number, total, this.sendReqNumber)\n\n if (this.stopAddFollow) {\n const msg = lang.transl('_任务已中止')\n log.error(msg)\n msgBox.error(msg)\n return resolve()\n }\n\n if (this.sendReqNumber >= this.dailyLimit) {\n this.stopAddFollow = true\n const msg = lang.transl(\n '_新增的关注用户达到每日限制',\n this.dailyLimit.toString()\n )\n log.error(msg)\n msgBox.error(msg)\n return resolve()\n }\n\n number++\n if (this.userList.includes(userID) === false) {\n this.sendReqNumber++\n await this.addFollow(userID)\n } else {\n followed++\n }\n }\n\n this.logProgress(number, total, this.sendReqNumber)\n log.success('✓ ' + taskName)\n msgBox.success('✓ ' + taskName)\n return resolve()\n })\n }\n\n private clearIframe(iframe: HTMLIFrameElement) {\n iframe.src = 'about:blank'\n iframe.remove()\n iframe = null as any\n console.log('清理iframe')\n\n // 下载器每生成一个 iframe,Pixiv 的脚本也会创建一个 iframe,一并清除\n const allIframe = document.querySelectorAll(\n 'body>iframe'\n ) as NodeListOf\n for (const frame of allIframe) {\n if (frame?.src.includes('criteo.com')) {\n frame.remove()\n }\n }\n }\n\n private async addFollow(userID: string): Promise {\n return new Promise(async (resolve) => {\n // 需要携带 need_recaptcha_enterprise_score_token 时,用 iframe 加载网页然后点击关注按钮\n if (this.need_recaptcha_enterprise_score_token) {\n const iframe = await this.clickFollowButton(userID)\n this.clearIframe(iframe)\n\n return resolve(200)\n }\n\n // 不需要携带 need_recaptcha_enterprise_score_token 时可以直接添加关注\n const status = await API.addFollowingUser(userID, token.token)\n if (status !== 200) {\n const errorMsg = `Error: ${Tools.createUserLink(\n userID\n )} Status: ${status}`\n if (status === 404) {\n // 404 可能的原因:\n // 1. token 无效\n // 2. 该用户不存在\n if (this.tokenHasUpdated === true) {\n log.error(errorMsg)\n } else {\n // 404 时尝试重新获取 token,然后重试请求(仅执行一次)\n this.tokenHasUpdated = true\n await token.reset()\n await API.addFollowingUser(userID, token.token)\n }\n } else if (status === 400) {\n // 400 是需要传递 recaptcha_enterprise_score_token 的时候,它的值为空或错误\n // 此时发出一次错误提醒,并重试添加关注\n this.need_recaptcha_enterprise_score_token = true\n log.warning(lang.transl('_模拟用户点击'))\n const iframe = await this.clickFollowButton(userID)\n this.clearIframe(iframe)\n\n return resolve(200)\n } else if (status === 403) {\n // 403 是访问权限已经被限制\n log.error(errorMsg)\n const msg = lang.transl('_你的账号已经被Pixiv限制')\n log.error(msg)\n msgBox.error(msg)\n this.stopAddFollow = true\n return resolve(status)\n } else {\n // 其他错误\n log.error(errorMsg)\n }\n }\n\n // 慢速执行\n // 关注用户的 API 也会触发 429 错误,此时获取作品数据的话会返回 429,\n // 但是关注用户的 API 依然返回 200,并且返回值也正常,但实际上关注用户的操作失败了。无法判断到底有没有关注成功\n // 所以需要限制添加的速度。我用 1400ms 依然会触发 429,所以需要使用更大的时间间隔,以确保不会触发 429\n setTimeoutWorker.set(\n () => {\n return resolve(status)\n },\n Tools.rangeRandom(2500, 3600)\n )\n })\n }\n\n private fun(\n userID: string,\n iframe: HTMLIFrameElement\n ): Promise {\n return new Promise(async (resolve) => {\n // 等待一段时间,默认操作完成。但是如果此时一些请求尚未完成,可能会被取消。所以这个时间最好稍大一点\n setTimeoutWorker.set(\n () => {\n return resolve(iframe)\n },\n Tools.rangeRandom(2500, 3600)\n )\n\n const button = iframe.contentDocument?.querySelector(\n 'button[data-click-label]'\n ) as HTMLButtonElement | null\n if (button) {\n button.click()\n console.log(userID + ' click')\n } else {\n const msg = lang.transl(\n '_没有找到关注按钮的提示',\n Tools.createUserLink(userID)\n )\n log.error(msg)\n\n return resolve(iframe)\n }\n })\n }\n\n private async clickFollowButton(userID: string): Promise {\n return new Promise(async (resolve, reject) => {\n const url = `https://www.pixiv.net/${\n lang.htmlLangType === 'en' ? 'en/' : ''\n }users/${userID}`\n const res = await fetch(url)\n // const text = await res.text()\n const iframe = document.createElement('iframe')\n iframe.style.display = 'none'\n document.body.append(iframe)\n // iframe.srcdoc = text\n iframe.src = url\n\n // 在一定时间后,强制执行回调,不管 iframe.onload 的状态。\n // 因为有时一些广告脚本可能会加载失败,导致很久才能进入 onload。那样会等待太久。\n setTimeoutWorker.set(\n async () => {\n const _iframe = await this.fun(userID, iframe)\n return resolve(_iframe)\n },\n Tools.rangeRandom(2500, 3600)\n )\n })\n }\n\n // 获取用户的 id 列表\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let idList = []\n try {\n idList = await API.getUserWorksByType(this.userList[this.index])\n } catch {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n store.idList = store.idList.concat(idList)\n\n this.index++\n\n log.log(\n `${lang.transl('_已抓取x个用户', this.index.toString())}, ${lang.transl(\n '_当前作品个数',\n store.idList.length.toString()\n )}`,\n 1,\n false\n )\n\n if (this.index >= this.userList.length) {\n return this.getIdListFinished()\n }\n\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.userList = []\n this.task = 'crawl'\n this.CSVData = []\n this.importFollowedUserIDs = []\n this.getUserListNo = 0\n this.index = 0\n }\n\n protected sortResult() {\n // 把作品数据按 id 倒序排列,id 大的在前面,这样可以先下载最新作品,后下载早期作品\n store.result.sort(Utils.sortByProperty('id'))\n }\n}\nexport { InitFollowingPage }\n","// 初始化首页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { IDData } from '../store/StoreType'\nimport { Config } from '../Config'\nimport { toast } from '../Toast'\nimport { theme } from '../Theme'\nimport { Utils } from '../utils/Utils'\nimport { msgBox } from '../MsgBox'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { states } from '../store/States'\nimport { settings } from '../setting/Settings'\nimport { Input } from '../Input'\n\nclass InitHomePage extends InitPageBase {\n constructor() {\n super()\n this.init()\n this.checkPageType()\n this.idRangeTip = this.createidRangeTip()\n }\n\n private downIdButton: HTMLButtonElement = document.createElement('button')\n private importIDListButton: HTMLButtonElement =\n document.createElement('button')\n private idRangeTip: HTMLDivElement\n\n private type: 'novels' | 'illusts' = 'illusts'\n private checkPageType() {\n this.type = window.location.pathname.includes('novel')\n ? 'novels'\n : 'illusts'\n }\n\n protected addCrawlBtns() {\n this.downIdButton = Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_输入id进行抓取'\n )\n this.downIdButton.addEventListener('click', () => {\n this.inputIDList()\n })\n\n const crawlIdRange = Tools.addBtn('crawlBtns', Colors.bgBlue, '_抓取id区间')\n crawlIdRange.addEventListener('click', () => {\n this.crawlIdRange()\n })\n\n this.importIDListButton = Tools.addBtn(\n 'crawlBtns',\n Colors.bgGreen,\n '_导入ID列表'\n )\n this.importIDListButton.addEventListener('click', () => {\n this.importIDList()\n })\n }\n\n protected addAnyElement() {\n Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_清空已保存的抓取结果'\n ).addEventListener('click', () => {\n EVT.fire('clearSavedCrawl')\n })\n }\n\n protected setFormOption() {\n options.hideOption([1])\n }\n\n // 单独添加一个用于提示 id 范围的元素,因为上面的日志显示在日志区域的顶端,不便于查看\n private createidRangeTip(): HTMLDivElement {\n const div = document.createElement('div')\n div.classList.add('id_range_tip', 'beautify_scrollbar', 'logWrap')\n theme.register(div)\n return document.body.insertAdjacentElement(\n 'beforebegin',\n div\n )! as HTMLDivElement\n }\n\n private async inputIDList() {\n EVT.fire('closeCenterPanel')\n this.checkPageType()\n\n const input = new Input({\n width: 400,\n type: 'textarea',\n rows: 10,\n instruction:\n lang.transl('_输入id进行抓取的提示文字') +\n '

        ' +\n lang.transl(\n this.type === 'illusts'\n ? '_输入的ID视为图像ID'\n : '_输入的ID视为小说ID'\n ),\n placeholder: '10000\\n10001\\n10002\\n10003',\n })\n\n const value = await input.submit()\n if (!value) {\n return toast.warning(lang.transl('_本次操作已取消'))\n }\n\n // 不必去重,因为 store 存储抓取结果时会去重\n const array = value.split('\\n')\n const result: string[] = []\n for (const str of array) {\n const id = parseInt(str)\n if (isNaN(id) || id < 22 || id > Config.worksNumberLimit) {\n console.log(lang.transl('_id不合法') + ': ' + str)\n } else {\n result.push(id.toString())\n }\n }\n\n this.addIdList(result)\n }\n\n private async crawlIdRange() {\n EVT.fire('closeCenterPanel')\n this.checkPageType()\n\n let start = 0\n let end = 0\n\n // 接收起点\n const startInput = new Input({\n width: 400,\n instruction:\n lang.transl('_抓取id区间说明') +\n '

        ' +\n lang.transl(\n this.type === 'illusts'\n ? '_输入的ID视为图像ID'\n : '_输入的ID视为小说ID'\n ) +\n '

        ' +\n lang.transl('_抓取id区间起点'),\n placeholder: '100',\n })\n\n const startValue = await startInput.submit()\n if (startValue) {\n const num = Number.parseInt(startValue)\n if (!isNaN(num) && num >= 0) {\n start = num\n } else {\n return toast.error(lang.transl('_参数不合法本次操作已取消'))\n }\n } else {\n return toast.warning(lang.transl('_本次操作已取消'))\n }\n\n // 接收终点\n const endInput = new Input({\n width: 400,\n instruction: lang.transl('_抓取id区间终点'),\n placeholder: '200',\n })\n\n const endValue = await endInput.submit()\n if (endValue) {\n const num = Number.parseInt(endValue)\n if (!isNaN(num) && num >= start) {\n end = num\n } else {\n return toast.error(lang.transl('_参数不合法本次操作已取消'))\n }\n } else {\n return toast.warning(lang.transl('_本次操作已取消'))\n }\n\n // 提示抓取范围,便于用户分批次抓取的时候查看\n const tip = lang.transl('_抓取id区间') + `: ${start} - ${end}`\n this.idRangeTip.textContent = tip\n this.idRangeTip.style.display = 'block'\n // 不要在这里使用 log.log ,因为之后开始抓取时,日志区域会被清空,所以用户在日志区域里看不到这个提示\n\n // 生成 id 列表\n const ids: string[] = []\n while (start <= end) {\n ids.push(start.toString())\n start++\n }\n\n this.addIdList(ids)\n }\n\n // 把 id 列表添加到 store 里,然后开始抓取\n private addIdList(ids: string[]) {\n const idList: IDData[] = []\n for (const id of ids) {\n idList.push({\n type: this.type,\n id: id,\n })\n }\n\n EVT.fire('crawlIdList', idList)\n }\n\n private async importIDList() {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as IDData[]\n if (!loadedJSON) {\n return\n }\n\n // 要求是数组并且要有内容\n if (!Array.isArray(loadedJSON) || !loadedJSON.length || !loadedJSON[0]) {\n return toast.error(lang.transl('_格式错误'))\n }\n\n // 检查是否含有必须的字段(只检查了一部分)\n const keys = Object.keys(loadedJSON[0])\n const need = ['id', 'type']\n for (const field of need) {\n if (!keys.includes(field)) {\n return toast.error(lang.transl('_格式错误'))\n }\n }\n\n log.success('✓ ' + lang.transl('_导入ID列表'))\n\n store.reset()\n\n store.idList = loadedJSON\n\n this.crawlImportIDList()\n }\n\n protected crawlImportIDList() {\n log.log(lang.transl('_当前作品个数', store.idList.length.toString()))\n log.log(lang.transl('_开始获取作品信息'))\n\n if (Tools.checkUserLogin() === false) {\n // 如果未登录账号,则全速抓取\n states.slowCrawlMode = false\n\n if (store.idList.length <= this.ajaxThreadsDefault) {\n this.ajaxThread = store.idList.length\n } else {\n this.ajaxThread = this.ajaxThreadsDefault\n }\n } else {\n // 登录账号后,可以使用慢速抓取\n if (\n settings.slowCrawl &&\n store.idList.length > settings.slowCrawlOnWorksNumber\n ) {\n log.warning(lang.transl('_慢速抓取'))\n states.slowCrawlMode = true\n this.ajaxThread = 1\n }\n }\n\n for (let i = 0; i < this.ajaxThread; i++) {\n this.getWorksData()\n }\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n}\n\nexport { InitHomePage }\n","//初始化 Unlisted 作品页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { options } from '../setting/Options'\nimport { Tools } from '../Tools'\nimport { Utils } from '../utils/Utils'\nimport { IDData } from '../store/StoreType'\nimport { store } from '../store/Store'\n\nclass InitUnlistedPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected addCrawlBtns() {\n Tools.addBtn('crawlBtns', Colors.bgBlue, '_抓取此作品').addEventListener(\n 'click',\n () => {\n this.readyCrawl()\n }\n )\n }\n\n protected setFormOption() {\n options.hideOption([1])\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n\n protected nextStep() {\n this.getIdList()\n }\n\n protected getIdList() {\n const workId = Utils.getURLPathField(window.location.pathname, 'unlisted')\n const isNovel = window.location.href.includes('/novel')\n const idData: IDData = {\n type: isNovel ? 'novels' : 'illusts',\n id: workId,\n }\n store.idList = [idData]\n\n this.getIdListFinished()\n }\n}\n\nexport { InitUnlistedPage }\n","// 初始化用户页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { EVT } from '../EVT'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { userWorksType, tagPageFlag } from '../crawl/CrawlArgument'\nimport { UserImageWorksWithTag, UserNovelsWithTag } from '../crawl/CrawlResult'\nimport { WorkTypeString } from '../store/StoreType'\nimport { states } from '../store/States'\nimport '../pageFunciton/SaveAvatarIcon'\nimport '../pageFunciton/SaveAvatarImage'\nimport '../pageFunciton/SaveUserCover'\nimport { BookmarkAllWorks, IDList } from '../pageFunciton/BookmarkAllWorks'\nimport { Utils } from '../utils/Utils'\nimport { Config } from '../Config'\n\nenum ListType {\n UserHome,\n Artworks,\n Illustrations,\n Manga,\n Novels,\n}\n\nclass InitUserPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private listType: ListType = ListType.UserHome // 当前页面应该获取哪些类型的作品\n\n private onceNumber = 48 // 每页作品个数,插画是 48 个,小说是 24 个\n\n private bookmarkAll = new BookmarkAllWorks()\n\n // 添加中间按钮\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected addAnyElement() {\n Tools.addBtn('otherBtns', Colors.bgGreen, '_保存用户头像').addEventListener(\n 'click',\n () => {\n EVT.fire('saveAvatarImage')\n }\n )\n\n Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_保存用户头像为图标',\n '_保存用户头像为图标说明'\n ).addEventListener('click', () => {\n EVT.fire('saveAvatarIcon')\n })\n\n Tools.addBtn('otherBtns', Colors.bgGreen, '_保存用户封面').addEventListener(\n 'click',\n () => {\n EVT.fire('saveUserCover')\n }\n )\n\n // 添加收藏本页所有作品的功能\n const bookmarkAllBtn = Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_收藏本页面的所有作品'\n )\n this.bookmarkAll = new BookmarkAllWorks(bookmarkAllBtn)\n\n bookmarkAllBtn.addEventListener('click', async () => {\n // 获取该用户的所有作品的 id 列表\n // 模拟了抓取流程,以获取相同的 id 列表\n EVT.fire('bookmarkModeStart')\n store.tag = Tools.getTagFromURL()\n this.crawlNumber = 1 // 设置为只抓取 1 页\n this.readyGetIdList()\n })\n\n window.addEventListener(EVT.list.getIdListFinished, this.sendBookmarkIdList)\n }\n\n private sendBookmarkIdList = () => {\n if (states.bookmarkMode) {\n // 将 id 的 type 设置为 illusts 或 novels\n const list: IDList[] = []\n for (const data of store.idList) {\n if (data.type === 'novels') {\n list.push(data as IDList)\n } else {\n list.push({\n type: 'illusts',\n id: data.id,\n })\n }\n }\n\n store.idList = [] // 清空这次抓取到的 id 列表\n this.bookmarkAll.sendIdList(list)\n }\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n protected nextStep() {\n this.readyGetIdList()\n\n log.log(lang.transl('_正在抓取'))\n }\n\n protected readyGetIdList() {\n // 判断页面类型\n // 匹配 pathname 里用户 id 之后的字符\n const test = location.pathname.match(/\\/users\\/\\d+(\\/.+)/)\n if (test === null) {\n // 用户主页\n this.listType = ListType.UserHome\n } else if (test.length === 2) {\n const str = test[1] //取出用户 id 之后的字符\n if (str.includes('/artworks')) {\n // 插画和漫画列表\n this.listType = ListType.Artworks\n } else if (str.includes('/illustrations')) {\n // 插画列表\n this.listType = ListType.Illustrations\n } else if (str.includes('/manga')) {\n // 漫画列表\n this.listType = ListType.Manga\n } else if (str.includes('/novels')) {\n // 小说列表\n this.listType = ListType.Novels\n this.onceNumber = 24 // 如果是在小说列表页,一页只有 24 个作品\n }\n }\n\n store.tag ? this.getIdListByTag() : this.getIdList()\n }\n\n private getOffset() {\n const nowPage = Utils.getURLSearchField(location.href, 'p') // 判断当前处于第几页,页码从 1 开始。也可能没有页码\n let offset: number = 0\n if (nowPage) {\n offset = (parseInt(nowPage) - 1) * this.onceNumber\n }\n if (offset < 0) {\n offset = 0\n }\n\n return offset\n }\n\n // 根据页数设置,计算要下载的个数\n private getRequsetNumber() {\n let requsetNumber = Config.worksNumberLimit\n if (this.crawlNumber !== -1) {\n requsetNumber = this.onceNumber * this.crawlNumber\n }\n return requsetNumber\n }\n\n // 获取用户某些类型的作品的 id 列表\n protected async getIdList() {\n let type: userWorksType[] = []\n\n switch (this.listType) {\n case ListType.UserHome:\n type = ['illusts', 'manga', 'novels']\n break\n case ListType.Artworks:\n type = ['illusts', 'manga']\n break\n case ListType.Illustrations:\n type = ['illusts']\n break\n case ListType.Manga:\n type = ['manga']\n break\n case ListType.Novels:\n type = ['novels']\n break\n }\n\n let idList = await API.getUserWorksByType(Tools.getUserId(), type)\n\n // 判断是否全都是小说,如果是,把每页的作品个数设置为 24 个\n const allWorkIsNovels = idList.every((data) => {\n return data.type === 'novels'\n })\n allWorkIsNovels && (this.onceNumber = 24)\n\n // 计算偏移量和需要保留的作品个数\n const offset = this.getOffset()\n const requsetNumber = this.getRequsetNumber()\n\n // 按照 id 升序排列,之后会删除不需要的部分\n idList.sort(Utils.sortByProperty('id')).reverse()\n\n // 不带 tag 获取作品时,由于 API 是一次性返回用户的所有作品,可能大于要求的数量,所以需要去掉多余的作品。\n // 删除 offset 需要去掉的部分。删除后面的 id,也就是近期作品\n idList.splice(idList.length - offset, idList.length)\n\n // 删除超过 requsetNumber 的作品。删除前面的 id,也就是早期作品\n if (idList.length > requsetNumber) {\n idList.splice(0, idList.length - requsetNumber)\n }\n\n // 储存\n store.idList = store.idList.concat(idList)\n\n this.getIdListFinished()\n }\n\n // 获取用户某些类型的作品的 id 列表(附带 tag)\n private async getIdListByTag() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n // 这里不用判断用户主页的情况,因为用户主页不会带 tag\n let type: tagPageFlag = 'illustmanga'\n switch (this.listType) {\n case ListType.Artworks:\n type = 'illustmanga'\n break\n case ListType.Illustrations:\n type = 'illusts'\n break\n case ListType.Manga:\n type = 'manga'\n break\n case ListType.Novels:\n type = 'novels'\n break\n }\n\n // 计算初始偏移量\n let offset = this.getOffset()\n // 计算需要获取多少个作品\n const requsetNumber = this.getRequsetNumber()\n\n // 循环请求作品,一次请求一页。假设用户的标签页面最大页数不会超过这个数字\n const maxRequest = 1000\n for (const iterator of new Array(maxRequest)) {\n let data = await API.getUserWorksByTypeWithTag(\n Tools.getUserId(),\n type,\n store.tag,\n offset,\n this.onceNumber\n )\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n // 图片和小说返回的数据是不同的,小说没有 illustType 标记\n if (this.listType === ListType.Novels) {\n const d = data as UserNovelsWithTag\n d.body.works.forEach((data) =>\n store.idList.push({\n type: 'novels',\n id: data.id,\n })\n )\n } else {\n const d = data as UserImageWorksWithTag\n d.body.works.forEach((data) => {\n let type: WorkTypeString = 'illusts'\n switch (data.illustType) {\n case 0:\n type = 'illusts'\n break\n case 1:\n type = 'manga'\n break\n case 2:\n type = 'ugoira'\n break\n }\n store.idList.push({\n type,\n id: data.id,\n })\n })\n }\n\n offset += data.body.works.length\n\n // 如果已经抓取到了预定的数量\n // 或者 API 返回的作品数量不足一页的数量,则认为抓取完毕\n if (\n store.idList.length >= requsetNumber ||\n data.body.works.length < this.onceNumber\n ) {\n return this.getIdListFinished()\n }\n }\n }\n\n protected resetGetIdListStatus() {\n this.listType = ListType.UserHome\n }\n\n protected sortResult() {\n // 把作品数据按 id 倒序排列,id 大的在前面,这样可以先下载最新作品,后下载早期作品\n store.result.sort(Utils.sortByProperty('id'))\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n\n window.removeEventListener(\n EVT.list.getIdListFinished,\n this.sendBookmarkIdList\n )\n }\n}\nexport { InitUserPage }\n","import { Colors } from '../Colors'\nimport { Config } from '../Config'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { pageType } from '../PageType'\nimport { showHelp } from '../ShowHelp'\nimport { states } from '../store/States'\nimport { IDData } from '../store/StoreType'\nimport { toast } from '../Toast'\nimport { Tools } from '../Tools'\n\n// 快速抓取\nclass QuickCrawl {\n constructor() {\n this.addBtn()\n this.setVisible()\n this.bindEvents()\n }\n\n private btn!: HTMLButtonElement\n\n private show = true // 是否显示\n\n // 指定在哪些页面类型里启用\n private readonly enablePageType = [\n pageType.list.Artwork,\n pageType.list.Novel,\n pageType.list.Unlisted,\n ]\n\n private addBtn() {\n // 在右侧添加快速抓取按钮\n this.btn = document.createElement('button')\n this.btn.classList.add('rightButton')\n this.btn.id = 'quickCrawlBtn'\n this.btn.setAttribute('data-xztitle', '_快速下载本页')\n this.btn.innerHTML = `\n \n`\n document.body.append(this.btn)\n lang.register(this.btn)\n }\n\n private bindEvents() {\n // 点击按钮启动快速抓取\n this.btn.addEventListener(\n 'click',\n () => {\n this.sendDownload()\n if (!Config.mobile) {\n showHelp.show(\n 'tipAltQToQuickDownload',\n lang.transl('_快捷键ALTQ快速下载本页作品')\n )\n }\n },\n false\n )\n\n // 使用快捷键 Alt + Q 启动快速抓取\n window.addEventListener(\n 'keydown',\n (ev) => {\n if (this.show && ev.altKey && ev.code === 'KeyQ') {\n this.sendDownload()\n }\n },\n false\n )\n\n // 页面类型改变时设置按钮的显示隐藏\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.setVisible()\n })\n }\n\n private sendDownload() {\n states.quickCrawl = true\n\n const isNovel = window.location.href.includes('/novel')\n\n let idData: IDData\n\n if (isNovel) {\n idData = {\n type: 'novels',\n id: Tools.getNovelId(window.location.href),\n }\n } else {\n idData = {\n type: 'illusts',\n id: Tools.getIllustId(window.location.href),\n }\n }\n\n EVT.fire('crawlIdList', [idData])\n\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n\n private setVisible() {\n this.show = this.enablePageType.includes(pageType.type)\n this.btn.style.display = this.show ? 'flex' : 'none'\n }\n}\n\nnew QuickCrawl()\n","import { API } from '../API'\nimport { GlossaryItem, NovelSeriesGlossaryItem } from '../crawl/CrawlResult'\n\ninterface GlossaryResult {\n id: string\n seriesId: string\n name: string\n items: GlossaryItem[]\n}\n\nclass GetNovelGlossarys {\n /**获取系列小说的设定资料 */\n public async getGlossarys(\n seriesId: string | number\n ): Promise {\n return new Promise(async (resolve, reject) => {\n // 先获取设定资料的分类、每条设定资料的简略数据\n // 注意此时每条设定资料缺少 detail 数据(此时为 null)\n const glossaryData = await API.getNovelSeriesGlossary(seriesId)\n const result = glossaryData.body.categories as unknown as GlossaryResult[]\n\n if (result.length === 0) {\n return resolve(result)\n }\n\n // 请求每条设定资料的详细数据\n for (const categorie of result) {\n for (const item of categorie.items) {\n const data = await API.getNovelSeriesGlossaryItem(\n item.seriesId,\n item.id\n )\n item.detail = data.body.item.detail\n }\n }\n\n return resolve(result)\n })\n }\n\n /**把设定资料用特定格式存储起来 */\n public storeGlossaryText(data: GlossaryResult[]) {\n const array: string[] = []\n for (const categorie of data) {\n array.push(categorie.name)\n array.push('\\n\\n')\n\n for (const item of categorie.items) {\n array.push(item.name)\n array.push('\\n')\n array.push(item.overview)\n array.push('\\n\\n')\n if (item.detail) {\n array.push(item.detail)\n array.push('\\n\\n')\n }\n array.push('----------------------------------------')\n array.push('\\n\\n')\n }\n }\n if (array.length > 0) {\n return array.join('') + '\\n\\n'\n }\n return ''\n }\n}\n\nconst getNovelGlossarys = new GetNovelGlossarys()\nexport { getNovelGlossarys }\n","// 初始化 本站的最新作品 小说页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { NewIllustOption } from '../crawl/CrawlArgument.d'\nimport { NewNovelData } from '../crawl/CrawlResult.d'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nclass InitNewNovelPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private option: NewIllustOption = this.resetOption()\n\n private readonly limitMax = 20 // 每次请求的数量最大是 20\n\n private fetchCount = 0 // 已请求的作品数量\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_下载大家的新作品'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInputGreater0(this.maxCount, false)\n }\n\n protected nextStep() {\n this.setSlowCrawl()\n this.initFetchURL()\n this.getIdList()\n }\n\n private resetOption(): NewIllustOption {\n return {\n lastId: '0',\n limit: '20', // 每次请求的数量,可以比 20 小\n type: '',\n r18: '',\n }\n }\n\n // 组织要请求的 url\n private initFetchURL() {\n this.option = this.resetOption()\n\n if (this.crawlNumber < this.limitMax) {\n this.option.limit = this.crawlNumber.toString()\n } else {\n this.option.limit = this.limitMax.toString()\n }\n\n // 是否是 R18 模式\n this.option.r18 = (location.href.includes('_r18.php') || false).toString()\n }\n\n protected async getIdList() {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let data: NewNovelData\n try {\n data = await API.getNewNovleData(this.option)\n } catch (error) {\n this.getIdList()\n return\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n let useData = data.body.novels\n\n for (const nowData of useData) {\n // 抓取够了指定的数量\n if (this.fetchCount + 1 > this.crawlNumber) {\n break\n } else {\n this.fetchCount++\n }\n\n const filterOpt: FilterOption = {\n aiType: nowData.aiType,\n id: nowData.id,\n bookmarkData: nowData.bookmarkData,\n bookmarkCount: nowData.bookmarkCount,\n workType: 3,\n tags: nowData.tags,\n userId: nowData.userId,\n createDate: nowData.createDate,\n xRestrict: nowData.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n store.idList.push({\n type: 'novels',\n id: nowData.id,\n })\n }\n }\n\n log.log(lang.transl('_新作品进度', this.fetchCount.toString()), 1, false)\n\n // 抓取完毕\n if (\n this.fetchCount >= this.crawlNumber ||\n this.fetchCount >= this.maxCount\n ) {\n log.log(lang.transl('_开始获取作品页面'))\n this.getIdListFinished()\n return\n }\n\n // 继续抓取\n this.option.lastId = data.body.lastId\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.fetchCount = 0\n }\n}\nexport { InitNewNovelPage }\n","//初始化小说作品页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\nimport { userWorksType } from '../crawl/CrawlArgument'\nimport { Tools } from '../Tools'\nimport { API } from '../API'\nimport { Utils } from '../utils/Utils'\n\nclass InitNovelPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private crawlDirection: number = 0 // 抓取方向,指示抓取新作品还是旧作品\n /*\n -1 抓取新作品\n 0 不设置抓取方向\n 1 抓取旧作品\n */\n\n protected initAny() {}\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_从本页开始抓取new'\n ).addEventListener('click', () => {\n this.crawlDirection = -1\n this.readyCrawl()\n })\n\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_从本页开始抓取old'\n ).addEventListener('click', () => {\n this.crawlDirection = 1\n this.readyCrawl()\n })\n }\n\n protected setFormOption() {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n\n protected getWantPage() {\n // 检查下载页数的设置\n const crawlAllTip =\n this.crawlDirection === -1\n ? lang.transl('_从本页开始抓取new')\n : lang.transl('_从本页开始抓取old')\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x个'),\n crawlAllTip\n )\n }\n\n protected async getIdList() {\n let type: userWorksType[] = ['novels']\n let idList = await API.getUserWorksByType(Tools.getUserId(), type)\n\n // 储存符合条件的 id\n let nowId = parseInt(Tools.getNovelId(window.location.href))\n idList.forEach((id) => {\n let idNum = parseInt(id.id)\n // 新作品\n if (idNum >= nowId && this.crawlDirection === -1) {\n store.idList.push(id)\n } else if (idNum <= nowId && this.crawlDirection === 1) {\n // 旧作品\n store.idList.push(id)\n }\n })\n\n // 当设置了下载个数时,进行裁剪\n if (this.crawlNumber !== -1) {\n // 新作品 升序排列\n if (this.crawlDirection === -1) {\n store.idList.sort(Utils.sortByProperty('id')).reverse()\n } else {\n // 旧作品 降序排列\n store.idList.sort(Utils.sortByProperty('id'))\n }\n\n store.idList = store.idList.splice(0, this.crawlNumber)\n }\n\n this.getIdListFinished()\n }\n\n protected resetGetIdListStatus() {\n this.crawlDirection = 0 // 解除下载方向的标记\n }\n}\nexport { InitNovelPage }\n","//初始化小说系列作品页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { options } from '../setting/Options'\nimport { store } from '../store/Store'\nimport { Tools } from '../Tools'\nimport { API } from '../API'\nimport { states } from '../store/States'\nimport { settings } from '../setting/Settings'\nimport { getNovelGlossarys } from './GetNovelGlossarys'\nimport { Utils } from '../utils/Utils'\n\nclass InitNovelSeriesPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private seriesId: string = ''\n private readonly limit = 30\n private last = 0\n\n protected addCrawlBtns() {\n Tools.addBtn('crawlBtns', Colors.bgBlue, '_抓取系列小说').addEventListener(\n 'click',\n () => {\n this.readyCrawl()\n }\n )\n }\n\n protected addAnyElement() {\n Tools.addBtn('crawlBtns', Colors.bgBlue, '_合并系列小说').addEventListener(\n 'click',\n () => {\n states.mergeNovel = true\n this.readyCrawl()\n }\n )\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 隐藏“个数/页数”选项\n options.hideOption([1])\n }\n\n protected getWantPage() {}\n\n protected async nextStep() {\n this.seriesId = Utils.getURLPathField(window.location.pathname, 'series')\n\n if (states.mergeNovel && settings.saveNovelMeta) {\n const data = await getNovelGlossarys.getGlossarys(this.seriesId)\n store.novelSeriesGlossary = getNovelGlossarys.storeGlossaryText(data)\n }\n\n this.getIdList()\n }\n\n protected async getIdList() {\n const seriesData = await API.getNovelSeriesData(\n this.seriesId,\n this.limit,\n this.last,\n 'asc'\n )\n\n const list = seriesData.body.page.seriesContents\n for (const item of list) {\n store.idList.push({\n type: 'novels',\n id: item.id,\n })\n }\n\n this.last += list.length\n\n // 如果这一次返回的作品数量达到了每批限制,可能这次没有请求完,继续请求后续的数据\n if (list.length === this.limit) {\n this.getIdList()\n } else {\n this.getIdListFinished()\n }\n }\n\n protected resetGetIdListStatus() {\n this.seriesId = ''\n this.last = 0\n }\n}\nexport { InitNovelSeriesPage }\n","// 初始化小说排行榜页面\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { options } from '../setting/Options'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\n\nclass InitRankingNovelPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n private pageUrlList: string[] = []\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_抓取本排行榜作品',\n '_抓取本排行榜作品Title'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n protected initAny() {}\n\n protected setFormOption() {\n // 个数/页数选项的提示\n this.maxCount = 100\n\n options.setWantPageTip({\n text: '_抓取多少作品',\n tip: '_想要获取多少个作品',\n rangTip: `1 - ${this.maxCount}`,\n })\n }\n\n protected getWantPage() {\n // 检查下载页数的设置\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_下载排行榜前x个作品'),\n lang.transl('_向下获取所有作品')\n )\n // 如果设置的作品个数是 -1,则设置为下载所有作品\n if (this.crawlNumber === -1) {\n this.crawlNumber = this.maxCount\n }\n }\n\n private getPageUrl() {\n const ul = document.querySelector('.ui-selectbox-container ul')\n if (ul) {\n const li = ul.querySelectorAll('li')\n this.maxCount = li.length * 50\n\n for (const el of li) {\n this.pageUrlList.push(el.dataset.url!)\n }\n } else {\n // 只有一页的话,没有页码部分的 ul li\n this.pageUrlList.push(location.href)\n }\n }\n\n protected nextStep() {\n this.getPageUrl()\n this.getIdList()\n }\n\n protected async getIdList() {\n let dom: Document\n try {\n const res = await fetch(this.pageUrlList[this.listPageFinished])\n const text = await res.text()\n const parse = new DOMParser()\n dom = parse.parseFromString(text, 'text/html')\n } catch (error) {\n this.getIdList()\n return\n }\n\n this.listPageFinished++\n\n const rankingItem = dom.querySelectorAll(\n '._ranking-items>div[id]'\n ) as NodeListOf\n\n // 检查每个作品的信息\n for (const item of rankingItem) {\n const rank = parseInt(item.querySelector('h1')!.innerText)\n // 检查是否已经抓取到了指定数量的作品\n if (rank > this.crawlNumber) {\n return this.getIdListFinished()\n }\n\n // https://www.pixiv.net/novel/show.php?id=12831389\n const link = (item.querySelector('.imgbox a') as HTMLAnchorElement)!.href\n const id = parseInt(link.split('id=')[1])\n\n const bmkEl = item.querySelector('.bookmark-count') as HTMLAnchorElement\n let bmk: number = bmkEl ? parseInt(bmkEl.innerText) : 0\n\n const tags: string[] = []\n const tagsA = item.querySelectorAll(\n '.tags>li>a'\n ) as NodeListOf\n for (const a of tagsA) {\n tags.push(a.innerText.trim())\n }\n\n const userId = item.querySelector('img')!.dataset.userId\n\n // 有的作品没有收藏按钮,点进去之后发现这个作品已经被删除了,只是排行榜里没有及时更新。这样的作品没有收藏按钮。\n const bookmarkBtn = item.querySelector('._one-click-bookmark')\n const bookmarked = bookmarkBtn\n ? bookmarkBtn.classList.contains('on')\n : false\n\n const filterOpt: FilterOption = {\n id: id,\n workType: 3,\n tags: tags,\n bookmarkCount: bmk,\n bookmarkData: bookmarked,\n userId: userId,\n }\n\n if (await filter.check(filterOpt)) {\n store.setRankList(id.toString(), rank)\n\n store.idList.push({\n type: 'novels',\n id: id.toString(),\n })\n }\n }\n\n log.log(\n lang.transl('_排行榜进度', this.listPageFinished.toString()),\n 1,\n false\n )\n\n // 抓取完毕\n if (\n store.idList.length >= this.crawlNumber ||\n this.listPageFinished === this.pageUrlList.length\n ) {\n this.getIdListFinished()\n } else {\n // 继续抓取\n this.getIdList()\n }\n }\n\n protected resetGetIdListStatus() {\n this.pageUrlList = []\n this.listPageFinished = 0\n }\n}\nexport { InitRankingNovelPage }\n","// 初始化小说搜索页\nimport { InitPageBase } from '../crawl/InitPageBase'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { options } from '../setting/Options'\nimport { SearchOption } from '../crawl/CrawlArgument'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { FastScreen } from '../pageFunciton/FastScreen'\nimport { Tools } from '../Tools'\nimport { BookmarkAllWorks } from '../pageFunciton/BookmarkAllWorks'\nimport { Utils } from '../utils/Utils'\nimport { idListWithPageNo } from '../store/IdListWithPageNo'\nimport { EVT } from '../EVT'\nimport { msgBox } from '../MsgBox'\nimport { crawlTagList } from '../crawlMixedPage/CrawlTagList'\nimport { states } from '../store/States'\nimport { pageType } from '../PageType'\nimport { Config } from '../Config'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nclass InitSearchNovelPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n new FastScreen()\n crawlTagList.init()\n }\n\n private readonly worksWrapSelector = '#root section>div ul'\n\n private option: SearchOption = {}\n private readonly worksNoPerPage = 24 // 每个页面有多少个作品\n private needCrawlPageCount = 0 // 一共有有多少个列表页面\n private sendCrawlTaskCount = 0 // 已经抓取了多少个列表页面\n private readonly allOption = [\n 'order',\n 'type',\n 'wlt',\n 'wgt',\n 'hlt',\n 'hgt',\n 'ratio',\n 'tool',\n 's_mode',\n 'mode',\n 'scd',\n 'ecd',\n 'blt',\n 'bgt',\n 'tlt',\n 'tgt',\n 'original_only',\n 'work_lang',\n 'ai_type',\n ]\n\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n\n this.addStartTimedCrawlBtn(this.readyCrawl.bind(this))\n this.addCancelTimedCrawlBtn()\n }\n\n private getWorksWrap() {\n const test = document.querySelectorAll(this.worksWrapSelector)\n if (test.length > 0) {\n // 小说页面用这个选择器,只匹配到了一个 ul\n return test[test.length - 1] as HTMLUListElement\n }\n return null\n }\n\n protected addAnyElement() {\n // 添加收藏本页所有作品的功能\n const bookmarkAllBtn = Tools.addBtn(\n 'otherBtns',\n Colors.bgGreen,\n '_收藏本页面的所有作品'\n )\n const bookmarkAll = new BookmarkAllWorks(bookmarkAllBtn)\n\n bookmarkAllBtn.addEventListener('click', () => {\n const listWrap = this.getWorksWrap()\n if (listWrap) {\n const list = document.querySelectorAll(\n '#root section>div ul>li'\n ) as NodeListOf\n if (list.length > 0) {\n bookmarkAll.sendWorkList(list, 'novels')\n }\n }\n })\n }\n\n protected setFormOption() {\n const isPremium = Tools.isPremium()\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: `1 - ${isPremium ? 5000 : 1000}`,\n })\n }\n\n protected initAny() {\n window.addEventListener(EVT.list.crawlTag, this.crawlTag)\n }\n\n protected destroy() {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n\n window.removeEventListener(EVT.list.crawlTag, this.crawlTag)\n }\n\n protected async nextStep() {\n this.setSlowCrawl()\n this.initFetchURL()\n\n // 计算应该抓取多少页\n const data = await this.getSearchData(1)\n // 计算总页数\n let pageCount = Math.ceil(data.total / this.worksNoPerPage)\n if (pageCount > 1000) {\n // 如果作品页数大于 1000 页,则判断当前用户是否是 pixiv 会员\n const isPremium = Tools.isPremium()\n if (!isPremium) {\n // 如果用户不是会员,则最多只能抓取到 1000 页\n pageCount = 1000\n log.warning(lang.transl('_搜索页面页数限制', pageCount.toString()))\n } else {\n // 如果用户是会员,最多可以抓取到 5000 页\n if (pageCount > 5000) {\n pageCount = 5000\n log.warning(lang.transl('_搜索页面页数限制', pageCount.toString()))\n }\n }\n }\n\n // 如果当前页面的页码大于有效页码,则不进行抓取\n if (this.startpageNo > pageCount) {\n EVT.fire('crawlComplete')\n EVT.fire('crawlEmpty')\n\n if (data.total === 0) {\n return msgBox.error(lang.transl('_作品总数为0'))\n }\n return msgBox.error(`${lang.transl('_超出最大页码')} ${pageCount}`)\n }\n\n if (this.crawlNumber === -1 || this.crawlNumber > pageCount) {\n this.crawlNumber = pageCount\n }\n\n // 计算从当前页面开始抓取的话,有多少页\n let needFetchPage = pageCount - this.startpageNo + 1\n // 比较用户设置的页数,取较小的那个数值\n this.needCrawlPageCount = Math.min(needFetchPage, this.crawlNumber)\n\n if (this.needCrawlPageCount === 0) {\n return this.noResult()\n }\n\n this.getIdList()\n }\n\n protected getWantPage() {\n this.crawlNumber = this.checkWantPageInput(\n lang.transl('_从本页开始下载x页'),\n lang.transl('_下载所有页面')\n )\n }\n\n // 获取搜索页的数据。因为有多处使用,所以进行了封装\n private async getSearchData(p: number) {\n let data = await API.getNovelSearchData(store.tag, p, this.option)\n return data.body.novel\n }\n\n // 组织要请求的 url 中的参数\n private initFetchURL() {\n let p = Utils.getURLSearchField(location.href, 'p')\n this.startpageNo = parseInt(p) || 1\n\n // 从页面 url 中获取可以使用的选项\n this.option = {}\n this.allOption.forEach((param) => {\n let value = Utils.getURLSearchField(location.href, param)\n if (value !== '') {\n this.option[param] = value\n }\n })\n\n // 抓取时始终关闭“以系列为单位显示”\n this.option.gs = '0'\n\n // 如果 url 里没有显式指定标签匹配模式,则使用 完全一致 模式\n // 因为在这种情况下,pixiv 默认使用的就是 完全一致\n if (!this.option.s_mode) {\n this.option.s_mode = 's_tag_full'\n }\n\n // 在日志里显示标签匹配模式\n log.log(\n `${lang.transl('_搜索模式')}: ${this.tipSearchMode(this.option.s_mode)}`\n )\n }\n\n // 注意:同样的 mode,在搜索图片时和搜索小说时可能有不同的含义。所以这个方法不是通用的。\n private tipSearchMode(mode: string) {\n switch (mode) {\n case 's_tag_only':\n return lang.transl('_标签部分一致')\n case 's_tag_full':\n return lang.transl('_标签完全一致')\n case 's_tc':\n return lang.transl('_正文')\n case 's_tag':\n return lang.transl('_标签标题说明文字')\n default:\n return mode\n }\n }\n\n private delayReTry(p: number) {\n window.setTimeout(() => {\n this.getIdList(p)\n }, Config.retryTime)\n // 限制时间大约是 3 分钟,这里为了保险起见,设置了更大的延迟时间。\n }\n\n private tipEmptyResult = Utils.debounce(() => {\n log.error(lang.transl('_抓取被限制时返回空结果的提示'))\n }, 1000)\n\n // 仅当出错重试时,才会传递参数 p。此时直接使用传入的 p,而不是继续让 p 增加\n protected async getIdList(p?: number): Promise {\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n if (p === undefined) {\n p = this.startpageNo + this.sendCrawlTaskCount\n this.sendCrawlTaskCount++\n }\n\n // 发起请求,获取列表页\n let data\n try {\n data = await this.getSearchData(p)\n\n if (data.total === 0) {\n console.log(`page ${p}: total 0`)\n this.tipEmptyResult()\n return this.delayReTry(p)\n }\n } catch {\n return this.getIdList(p)\n }\n\n if (states.stopCrawl) {\n return this.getIdListFinished()\n }\n\n data = data.data\n for (const nowData of data) {\n const filterOpt: FilterOption = {\n aiType: nowData.aiType,\n createDate: nowData.createDate,\n id: nowData.id,\n bookmarkData: nowData.bookmarkData,\n bookmarkCount: nowData.bookmarkCount,\n workType: 3,\n tags: nowData.tags,\n userId: nowData.userId,\n xRestrict: nowData.xRestrict,\n }\n\n if (await filter.check(filterOpt)) {\n idListWithPageNo.add(\n pageType.type,\n {\n type: 'novels',\n id: nowData.id,\n },\n p\n )\n }\n }\n\n this.listPageFinished++\n\n log.log(\n lang.transl(\n '_列表页抓取进度2',\n this.listPageFinished.toString(),\n this.needCrawlPageCount.toString()\n ),\n 1,\n false\n )\n\n if (this.sendCrawlTaskCount + 1 <= this.needCrawlPageCount) {\n // 继续发送抓取任务(+1 是因为 sendCrawlTaskCount 从 0 开始)\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getIdList()\n }, Config.slowCrawlDealy)\n } else {\n this.getIdList()\n }\n } else {\n // 抓取任务已经全部发送\n if (this.listPageFinished === this.needCrawlPageCount) {\n // 抓取任务全部完成\n log.log(lang.transl('_列表页抓取完成'))\n\n idListWithPageNo.store(pageType.type)\n\n this.getIdListFinished()\n }\n }\n }\n\n protected resetGetIdListStatus() {\n this.listPageFinished = 0\n this.sendCrawlTaskCount = 0\n }\n\n // 搜索页把下载任务按收藏数从高到低下载\n protected sortResult() {\n store.resultMeta.sort(Utils.sortByProperty('bmk'))\n store.result.sort(Utils.sortByProperty('bmk'))\n }\n\n private crawlTag = () => {\n if (states.crawlTagList) {\n this.readyCrawl()\n }\n }\n}\n\nexport { InitSearchNovelPage }\n","// 初始化所有页面抓取流程的基类\nimport { lang } from '../Lang'\nimport { Colors } from '../Colors'\nimport { Tools } from '../Tools'\nimport { API } from '../API'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { EVT } from '../EVT'\nimport { options } from '../setting/Options'\nimport { settings } from '../setting/Settings'\nimport { states } from '../store/States'\nimport { saveArtworkData } from '../store/SaveArtworkData'\nimport { saveNovelData } from '../store/SaveNovelData'\nimport { mute } from '../filter/Mute'\nimport { IDData } from '../store/StoreType'\nimport './StopCrawl'\nimport '../SelectWork'\nimport { destroyManager } from '../pageFunciton/DestroyManager'\nimport { vipSearchOptimize } from './VipSearchOptimize'\nimport { ArtworkData, NovelData } from './CrawlResult.d'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { Utils } from '../utils/Utils'\nimport { pageType } from '../PageType'\nimport { filter } from '../filter/Filter'\nimport { Config } from '../Config'\nimport { timedCrawl } from './TimedCrawl'\nimport '../pageFunciton/QuickBookmark'\nimport '../pageFunciton/DisplayThumbnailListOnMultiImageWorkPage'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\n\nabstract class InitPageBase {\n protected crawlNumber = 0 // 要抓取的个数/页数\n\n protected maxCount = 1000 // 当前页面类型最多有多少个页面/作品\n\n protected startpageNo = 1 // 列表页开始抓取时的页码,只在 api 需要页码时使用\n\n protected listPageFinished = 0 // 记录一共抓取了多少个列表页\n\n protected readonly ajaxThreadsDefault = 10 // 抓取作品数据时的并发请求数量默认值,也是最大值\n\n protected ajaxThread = this.ajaxThreadsDefault // 抓取时的并发请求数\n\n protected finishedRequest = 0 // 抓取作品之后,如果 id 队列为空,则统计有几个并发线程完成了请求。当这个数量等于 ajaxThreads 时,说明所有请求都完成了\n\n // 子组件必须调用 init 方法,并且不可以修改 init 方法\n protected init() {\n this.setFormOption()\n this.addCrawlBtns()\n this.addAnyElement()\n this.initAny()\n\n // 如果在 init 方法中绑定了全局事件,并且该事件只适用于当前页面类型,那么应该在 destroy 中解绑事件。\n\n // 注册当前页面的 destroy 函数\n destroyManager.register(this.destroy.bind(this))\n\n // 切换页面时,如果任务已经完成,则移除日志区域\n EVT.bindOnce('clearLogAfterPageSwitch', EVT.list.pageSwitch, () => {\n if (!states.busy) {\n log.remove()\n }\n })\n\n // 监听下载 id 列表的事件\n EVT.bindOnce('crawlIdList', EVT.list.crawlIdList, (ev: CustomEventInit) => {\n const idList = ev.detail.data as IDData[]\n if (idList) {\n this.crawlIdList(idList)\n }\n // 通过 bindOnce 绑定的 this 是执行此代码时通过这个虚拟类生成的实例,这个 this 是不会变化的\n // 但是这个虚拟类会产生多个实例,所以这里调用 this 的方法时,要求这个方法与具体实例无关,不受实例变化影响\n // 也就是说即使页面类型变化并且生成了新的实例,调用旧实例上的这个方法也依然会正常运行\n // 如果某个方法做不到这一点, 就不要在这里调用。\n // 基于此,在这里修改 this 上的属性是不合适的,因为每个新实例都会复制这个虚拟类上的属性,它们是独立的\n })\n }\n\n // 设置表单里的选项。主要是设置页数,并隐藏不需要的选项。\n protected setFormOption(): void {\n // 个数/页数选项的提示\n options.setWantPageTip({\n text: '_抓取多少页面',\n tip: '_从本页开始下载提示',\n rangTip: '_数字提示1',\n })\n }\n\n // 添加抓取区域的默认按钮,可以被子类覆写\n protected addCrawlBtns() {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_开始抓取',\n '_默认下载多页'\n ).addEventListener('click', () => {\n this.readyCrawl()\n })\n }\n\n // 添加其他任意元素(如果有)\n protected addAnyElement(): void {}\n\n // 初始化任意内容\n // 如果有一些代码不能归纳到 init 方法的前面几个方法里,那就放在这里\n // 通常用来初始化特有的组件、功能、事件、状态等\n protected initAny() {}\n\n // 销毁初始化页面时添加的元素和事件,恢复设置项等\n protected destroy(): void {\n Tools.clearSlot('crawlBtns')\n Tools.clearSlot('otherBtns')\n }\n\n // 作品个数/页数的输入不合法\n private getWantPageError() {\n EVT.fire('wrongSetting')\n const msg = lang.transl('_下载数量错误')\n msgBox.error(msg)\n throw new Error(msg)\n }\n\n // 在某些页面检查页数/个数设置\n // 可以为 -1,或者大于 0\n protected checkWantPageInput(crawlPartTip: string, crawlAllTip: string) {\n const want = settings.wantPageArr[pageType.type]\n\n // 如果比 1 小,并且不是 -1,则不通过\n if ((want < 1 && want !== -1) || isNaN(want)) {\n // 比 1 小的数里,只允许 -1 , 0 也不行\n throw this.getWantPageError()\n }\n\n if (want >= 1) {\n log.warning(crawlPartTip.replace('{}', want.toString()))\n } else if (want === -1) {\n log.warning(crawlAllTip)\n }\n\n return want\n }\n\n // 在某些页面检查页数/个数设置,要求必须大于 0\n // 参数 max 为最大值\n // 参数 page 指示单位是“页”(页面)还是“个”(作品个数)\n protected checkWantPageInputGreater0(max: number, page: boolean) {\n const want = settings.wantPageArr[pageType.type]\n if (want > 0) {\n const result = Math.min(want, max)\n log.warning(\n lang.transl(\n page ? '_从本页开始下载x页' : '_从本页开始下载x个',\n result.toString()\n )\n )\n return result\n } else {\n throw this.getWantPageError()\n }\n }\n\n // 设置要获取的作品数或页数。有些页面使用,有些页面不使用。使用时再具体定义\n protected getWantPage() {}\n\n // 获取多图作品设置。因为这个不属于过滤器 filter,所以在这里直接获取\n protected getMultipleSetting() {\n // 获取作品张数设置\n if (settings.firstFewImagesSwitch) {\n log.warning(\n `${lang.transl('_多图作品只下载前几张图片')} ${settings.firstFewImages}`\n )\n }\n }\n\n /**在日志上显示任意提示 */\n protected showTip() {\n if (\n settings.removeWorksOfFollowedUsersOnSearchPage &&\n (pageType.type === pageType.list.ArtworkSearch ||\n pageType.type === pageType.list.NovelSearch)\n ) {\n log.warning(lang.transl('_在搜索页面里移除已关注用户的作品'))\n }\n }\n\n protected setSlowCrawl() {\n states.slowCrawlMode = settings.slowCrawl\n if (settings.slowCrawl) {\n log.warning(lang.transl('_慢速抓取'))\n }\n }\n\n // 准备正常进行抓取,执行一些检查\n protected async readyCrawl() {\n // 检查是否可以开始抓取\n if (states.busy) {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n EVT.fire('clearLog')\n\n log.success(lang.transl('_开始抓取'))\n toast.show(lang.transl('_开始抓取'), {\n position: 'center',\n })\n\n EVT.fire('crawlStart')\n\n if (Utils.isPixiv()) {\n await mute.getMuteSettings()\n }\n\n this.getWantPage()\n\n this.getMultipleSetting()\n\n this.showTip()\n\n this.finishedRequest = 0\n\n states.stopCrawl = false\n\n // 进入第一个抓取流程\n this.nextStep()\n }\n\n // 基于传递的 id 列表直接开始抓取\n // 这个方法是为了让其他模块可以传递 id 列表,直接进行下载。\n // 这个类的子类没有必要使用这个方法。当子类需要直接指定 id 列表时,修改自己的 getIdList 方法即可。\n protected async crawlIdList(idList: IDData[]) {\n // 检查是否可以开始抓取\n // 如果不能抓取则把 id 列表添加到等待队列中\n if (states.busy) {\n store.waitingIdList.push(...idList)\n } else {\n EVT.fire('clearLog')\n\n log.success(lang.transl('_开始抓取'))\n toast.show(lang.transl('_开始抓取'), {\n position: 'center',\n })\n\n EVT.fire('crawlStart')\n\n if (Utils.isPixiv()) {\n await mute.getMuteSettings()\n }\n\n this.getMultipleSetting()\n\n this.finishedRequest = 0\n\n states.stopCrawl = false\n\n store.idList = idList\n\n this.getIdListFinished()\n }\n }\n\n // 当可以开始抓取时,进入下一个流程。默认情况下,开始获取作品列表。如有不同,由子类具体定义\n protected nextStep() {\n this.getIdList()\n }\n\n // 获取 id 列表,由各个子类具体定义\n protected getIdList() {}\n\n // id 列表获取完毕,开始抓取作品内容页\n protected async getIdListFinished() {\n states.slowCrawlMode = false\n this.resetGetIdListStatus()\n\n EVT.fire('getIdListFinished')\n if (states.stopCrawl || states.bookmarkMode) {\n return\n }\n\n if (store.idList.length === 0) {\n return this.noResult()\n }\n\n log.persistentRefresh()\n log.log(lang.transl('_当前作品个数', store.idList.length.toString()))\n\n // 导出 ID 列表,并停止抓取\n if ((settings.exportIDList || states.exportIDList) && Utils.isPixiv()) {\n states.busy = false\n EVT.fire('stopCrawl')\n log.warning(lang.transl('_已停止抓取'))\n\n if (settings.exportIDList) {\n const resultList = await Utils.json2BlobSafe(store.idList)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `ID list-total ${\n result.total\n }-from ${Tools.getPageTitle()}-${Utils.replaceUnsafeStr(\n new Date().toLocaleString()\n )}.json`\n )\n }\n\n const msg = '✓ ' + lang.transl('_导出ID列表')\n log.success(msg)\n toast.success(msg)\n }\n\n return\n }\n\n // 这个 return 在这里重置任务状态,不继续抓取作品的详情了,用于调试时反复进行抓取\n // return states.busy = false\n\n log.log(lang.transl('_开始获取作品信息'))\n\n if (\n settings.slowCrawl &&\n store.idList.length > settings.slowCrawlOnWorksNumber\n ) {\n // 慢速抓取\n log.warning(lang.transl('_慢速抓取'))\n states.slowCrawlMode = true\n this.ajaxThread = 1\n } else {\n // 全速抓取\n states.slowCrawlMode = false\n this.ajaxThread = Math.min(this.ajaxThreadsDefault, store.idList.length)\n }\n\n // 开始抓取作品数据\n for (let i = 0; i < this.ajaxThread; i++) {\n window.setTimeout(() => {\n store.idList.length > 0 ? this.getWorksData() : this.afterGetWorksData()\n }, 0)\n }\n }\n\n // 重设抓取作品列表时使用的变量或标记\n protected resetGetIdListStatus() {}\n\n protected log429ErrorTip = Utils.debounce(() => {\n log.error(lang.transl('_抓取被限制时返回空结果的提示'))\n }, 500)\n\n // 获取作品的数据\n protected async getWorksData(idData?: IDData): Promise {\n if (states.stopCrawl) {\n return this.crawlFinished()\n }\n\n idData = idData || (store.idList.shift()! as IDData)\n if (!idData) {\n return this.afterGetWorksData()\n }\n const id = idData.id\n\n if (!id) {\n const msg = 'Error: work id is invalid!'\n msgBox.error(msg)\n throw new Error(msg)\n }\n\n // 在抓取之前,预先对 id 进行检查,如果不符合要求则不发送这个请求,直接跳过它\n // 现在这里能够检查 2 种设置条件:\n // 1. 检查 id 是否符合 id 范围条件\n // 2. 检查 id 的发布时间是否符合时间范围条件\n // 3. 区分图像作品和小说。注意:因为在某些情况下,下载器只能确定一个作品是图像还是小说,但不能区分它具体是图像里的哪一种类型(插画、漫画、动图),所以这里不能检查具体的图像类型,只能检查是图像还是小说\n const check = await filter.check({\n id,\n workTypeString: idData.type,\n workType: Tools.getWorkTypeVague(idData.type),\n })\n if (!check) {\n return this.afterGetWorksData()\n }\n\n try {\n const unlisted = pageType.type === pageType.list.Unlisted\n // 这里不能使用 cacheWorkData中的缓存数据,因为某些数据(如作品的收藏状态)可能已经发生变化\n if (idData.type === 'novels') {\n const data = await API.getNovelData(id, unlisted)\n await saveNovelData.save(data)\n this.afterGetWorksData(data)\n } else {\n const data = await API.getArtworkData(id, unlisted)\n await saveArtworkData.save(data)\n this.afterGetWorksData(data)\n }\n } catch (error) {\n // 当 API 里的网络请求的状态码异常时,会 reject,被这里捕获\n if (error.status) {\n // 请求成功,但状态码不正常\n this.logErrorStatus(error.status, idData)\n if (error.status === 500 || error.status === 429) {\n // 如果状态码 500 或 429,获取不到作品数据,可能是被 pixiv 限制了,等待一段时间后再次发送这个请求\n this.log429ErrorTip()\n window.setTimeout(() => {\n this.getWorksData(idData)\n }, Config.retryTime)\n return\n } else {\n this.afterGetWorksData()\n }\n } else {\n // 请求失败,没有获得服务器的返回数据,一般都是\n // TypeError: Failed to fetch\n // 此外这里也会捕获到 save 作品数据时的错误(如果有)\n console.error(error)\n\n // 再次发送这个请求\n window.setTimeout(() => {\n this.getWorksData(idData)\n }, 2000)\n }\n }\n }\n\n // 每当获取完一个作品的信息\n private async afterGetWorksData(\n data?: NovelData | ArtworkData\n ): Promise {\n this.logResultNumber()\n\n // 抓取可能中途停止,保留抓取结果\n if (states.stopCrawl) {\n return this.crawlFinished()\n }\n\n // 如果会员搜索优化策略指示停止抓取,则立即进入完成状态\n if (data && (await vipSearchOptimize.stopCrawl(data))) {\n // 指示抓取已停止\n states.stopCrawl = true\n return this.crawlFinished()\n }\n\n // 在进行下一次抓取前,预先检查这个 id 是否符合过滤条件\n // 如果它不符合过滤条件,则立刻跳过它,这样也不会发送请求来获取这个作品的数据\n // 这样可以加快抓取速度\n if (store.idList.length > 0) {\n const nextIDData = store.idList[0]\n const check = await filter.check({\n id: nextIDData.id,\n workTypeString: nextIDData.type,\n workType: Tools.getWorkTypeVague(nextIDData.type),\n })\n if (!check) {\n store.idList.shift()\n return this.getWorksData()\n }\n }\n\n // 如果存在下一个作品,则继续抓取\n if (store.idList.length > 0) {\n if (states.slowCrawlMode) {\n setTimeoutWorker.set(() => {\n this.getWorksData()\n }, Config.slowCrawlDealy)\n } else {\n this.getWorksData()\n }\n } else {\n // 没有剩余作品,统计此后有多少个完成的请求\n this.finishedRequest++\n // 所有请求都执行完毕\n if (this.finishedRequest === this.ajaxThread) {\n this.crawlFinished()\n }\n }\n }\n\n // 抓取完毕\n protected crawlFinished() {\n if (store.result.length === 0) {\n return this.noResult()\n }\n\n store.crawlCompleteTime = new Date()\n\n // 对文件进行排序\n if (settings.setFileDownloadOrder) {\n // 按照用户设置的规则进行排序\n const scheme = new Map([\n ['ID', 'id'],\n ['bookmarkCount', 'bmk'],\n ['bookmarkID', 'bmkId'],\n ])\n let key = scheme.get(settings.downloadOrderSortBy)\n // 在搜索页面预览抓取结果时,始终按收藏数量排序\n if (\n pageType.type === pageType.list.ArtworkSearch &&\n settings.previewResult\n ) {\n key = 'bmk'\n }\n store.result.sort(Utils.sortByProperty(key!, settings.downloadOrder))\n store.resultMeta.sort(Utils.sortByProperty(key!, settings.downloadOrder))\n } else {\n // 如果用户未设置排序规则,则每个页面自行处理排序逻辑\n this.sortResult()\n }\n\n log.log(lang.transl('_共抓取到n个作品', store.resultMeta.length.toString()))\n\n log.log(lang.transl('_共抓取到n个文件', store.result.length.toString()))\n\n log.success(lang.transl('_抓取完毕'), 2)\n\n // 发出抓取完毕的信号\n EVT.fire('crawlComplete')\n\n // 自动导出抓取结果\n if (\n settings.autoExportResult &&\n store.result.length > settings.autoExportResultNumber\n ) {\n if (settings.autoExportResultCSV) {\n EVT.fire('exportCSV')\n }\n if (settings.autoExportResultJSON) {\n EVT.fire('exportResult')\n }\n }\n }\n\n // 网络请求状态异常时输出提示\n private logErrorStatus(status: number, idData: IDData) {\n const isNovel = idData.type === 'novels'\n const workLink = Tools.createWorkLink(idData.id, !isNovel)\n switch (status) {\n case 0:\n log.error(workLink + ' ' + lang.transl('_作品页状态码0'))\n break\n\n case 400:\n log.error(workLink + ' ' + lang.transl('_作品页状态码400'))\n break\n\n case 401:\n log.error(workLink + ' ' + lang.transl('_作品页状态码401'))\n break\n\n case 403:\n log.error(workLink + ' ' + lang.transl('_作品页状态码403'))\n break\n\n case 404:\n log.error(workLink + ' ' + lang.transl('_作品页状态码404'))\n break\n\n case 429:\n log.error(workLink + ' ' + lang.transl('_作品页状态码429'))\n break\n\n case 500:\n log.error(workLink + ' ' + lang.transl('_作品页状态码500'))\n break\n\n default:\n log.error(\n lang.transl('_无权访问', workLink) + `HTTP status code: ${status}`\n )\n break\n }\n }\n\n // 每当抓取了一个作品之后,输出提示\n protected logResultNumber() {\n log.log(\n `${lang.transl('_待处理')} ${store.idList.length}, ${lang.transl(\n '_共抓取到n个作品',\n store.resultMeta.length.toString()\n )}`,\n 1,\n false\n )\n }\n\n // 抓取结果为 0 时输出提示\n protected noResult() {\n // 先触发 crawlComplete,后触发 crawlEmpty。这样便于其他组件处理 crawlEmpty 这个例外情况\n // 如果触发顺序反过来,那么最后执行的都是 crawlComplete,可能会覆盖对 crawlEmpty 的处理\n EVT.fire('crawlComplete')\n EVT.fire('crawlEmpty')\n const msg = lang.transl('_抓取结果为零')\n log.error(msg, 2)\n msgBox.error(msg)\n }\n\n // 抓取完成后,对结果进行排序\n protected sortResult() {}\n\n /**定时抓取的按钮 */\n protected addStartTimedCrawlBtn(cb: Function) {\n Tools.addBtn(\n 'crawlBtns',\n Colors.bgBlue,\n '_定时抓取',\n '_定时抓取说明'\n ).addEventListener('click', () => {\n timedCrawl.start(cb)\n })\n }\n\n /**取消定时抓取的按钮 */\n protected addCancelTimedCrawlBtn() {\n const btn = Tools.addBtn('crawlBtns', Colors.bgWarning, '_取消定时抓取')\n btn.style.display = 'none'\n\n btn.addEventListener('click', () => {\n EVT.fire('cancelTimedCrawl')\n btn.style.display = 'none'\n })\n\n // 启动定时抓取之后,显示取消定时抓取的按钮\n window.addEventListener(EVT.list.startTimedCrawl, () => {\n btn.style.display = 'flex'\n })\n }\n}\n\nexport { InitPageBase }\n","import { options } from '../setting/Options'\nimport { InitPageBase } from './InitPageBase'\n\n// 投稿页面\nclass InitRequestPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n protected initAny() {\n // 为作品容器添加自定义 className,让显示更大的缩率图功能不那么容易失效\n const allSection = document.querySelectorAll('section')\n for (const section of allSection) {\n if (section.parentElement?.nodeName == 'DIV') {\n section.parentElement.classList.add('requestContainer')\n }\n }\n }\n\n protected addCrawlBtns() {}\n\n protected setFormOption() {\n options.hideOption([1])\n }\n}\n\nexport { InitRequestPage }\n","import { options } from '../setting/Options'\nimport { InitPageBase } from './InitPageBase'\n\n// 初始化不支持的页面类型\nclass InitUnsupportedPage extends InitPageBase {\n constructor() {\n super()\n this.init()\n }\n\n // 在不支持的页面类型里,不会添加专门用于当前页面的抓取按钮\n // 只会由 SelectWork 模块添加通用的“手动抓取”功能\n protected addCrawlBtns() {}\n\n protected setFormOption() {\n options.hideOption([1])\n }\n}\n\nexport { InitUnsupportedPage }\n","import { Colors } from '../Colors'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { log } from '../Log'\nimport { toast } from '../Toast'\nimport { Tools } from '../Tools'\nimport { states } from '../store/States'\n\nclass StopCrawl {\n constructor() {\n this.addBtn()\n this.bindEvents()\n }\n private btn!: HTMLButtonElement\n\n private addBtn() {\n this.btn = Tools.addBtn('stopCrawl', Colors.bgRed, '_停止抓取')\n this.hide()\n\n this.btn.addEventListener('click', () => {\n this.hide()\n const msg = lang.transl('_已停止抓取')\n log.error(msg)\n toast.error(msg)\n EVT.fire('stopCrawl')\n states.stopCrawl = true\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.show()\n })\n\n const hiddenEvents = [EVT.list.crawlComplete, EVT.list.stopCrawl]\n hiddenEvents.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.hide()\n })\n })\n }\n\n private hide() {\n this.btn.style.display = 'none'\n }\n\n private show() {\n this.btn.style.display = 'flex'\n }\n}\n\nnew StopCrawl()\n","import { setSetting, settings } from '../setting/Settings'\nimport { lang } from '../Lang'\nimport { msgBox } from '../MsgBox'\nimport { log } from '../Log'\nimport { EVT } from '../EVT'\nimport { states } from '../store/States'\nimport { Input } from '../Input'\nimport { toast } from '../Toast'\n\nclass TimedCrawl {\n constructor() {\n this.bindEvents()\n }\n\n private callback?: Function\n private time = 0\n private timer?: number\n /**定时器可用的最大延迟时间,这里计算为分钟 */\n // https://developer.mozilla.org/zh-CN/docs/Web/API/setTimeout#%E6%9C%80%E5%A4%A7%E5%BB%B6%E6%97%B6%E5%80%BC\n // max: 2147483647 / 60 / 1000\n private readonly timeMinuteMax = 35791\n /**这次抓取是否是由本模块发起的 */\n private crawlBySelf = false\n\n /**启动定时抓取任务。\n *\n * 只能有 1 个定时抓取任务,如果重复调用此方法,后传递的回调函数会覆盖之前的回调函数。\n */\n public async start(cb: Function) {\n const input = new Input({\n instruction: `${lang.transl('_定时抓取的间隔时间2')} (${lang.transl(\n '_分钟'\n )})`,\n value: settings.timedCrawlInterval.toString(),\n width: 500,\n })\n const value = await input.submit()\n if (!value) {\n return toast.warning(lang.transl('_本次操作已取消'))\n }\n\n const number = Number.parseInt(value)\n if (isNaN(number)) {\n return toast.error(lang.transl('_参数不合法本次操作已取消'))\n }\n\n if (number > this.timeMinuteMax) {\n msgBox.error(\n lang.transl('_定时抓取的时间超过最大值') +\n this.timeMinuteMax +\n lang.transl('_分钟')\n )\n return\n }\n\n if (number < 1) {\n msgBox.error(lang.transl('_定时抓取的时间最小值'))\n return\n }\n\n setSetting('timedCrawlInterval', number)\n\n this.reset()\n this.callback = cb\n this.execute()\n\n EVT.fire('startTimedCrawl')\n const msg = lang.transl(\n '_定时抓取已启动的提示',\n settings.timedCrawlInterval.toString()\n )\n msgBox.show(\n msg +\n '

        ' +\n lang.transl('_定时抓取的推荐用法') +\n '

        ' +\n lang.transl('_定时抓取已启动的提示2')\n )\n log.success(msg)\n }\n\n private execute() {\n this.time = settings.timedCrawlInterval * 60 * 1000\n this.timer = window.setTimeout(() => {\n if (!this.callback) {\n return\n }\n this.crawlBySelf = true\n states.quickCrawl = true\n this.callback()\n\n this.execute()\n }, this.time)\n }\n\n private reset() {\n this.callback = undefined\n window.clearTimeout(this.timer)\n this.crawlBySelf = false\n states.quickCrawl = false\n }\n\n private bindEvents() {\n // 当抓取结果为空,或者下载中止、完成时复位标记\n const resetCrawlBySelf = [\n EVT.list.crawlEmpty,\n EVT.list.downloadStop,\n EVT.list.downloadPause,\n EVT.list.downloadComplete,\n EVT.list.downloadCancel,\n ]\n\n for (const ev of resetCrawlBySelf) {\n window.addEventListener(ev, () => {\n window.setTimeout(() => {\n // 需要延迟执行,在日志提示显示之后再复位状态\n this.crawlBySelf = false\n }, 50)\n })\n }\n\n // 显示一些提示\n window.addEventListener(EVT.list.crawlStart, () => {\n if (!this.crawlBySelf) {\n return\n }\n log.success(lang.transl('_开始定时抓取'))\n log.log(lang.transl('_当前时间') + new Date().toLocaleString())\n })\n\n const tipWaitNextCrawl = [EVT.list.crawlEmpty, EVT.list.downloadComplete]\n\n for (const ev of tipWaitNextCrawl) {\n window.addEventListener(ev, () => {\n window.setTimeout(() => {\n if (this.crawlBySelf) {\n log.log(lang.transl('_当前时间') + new Date().toLocaleString())\n log.success(lang.transl('_等待下一次定时抓取'))\n }\n }, 0)\n })\n }\n\n window.addEventListener(EVT.list.cancelTimedCrawl, () => {\n this.reset()\n const msg = lang.transl('_已取消定时抓取')\n log.success(msg)\n msgBox.success(msg)\n })\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n if (!this.callback) {\n return\n }\n this.reset()\n const msg = lang.transl('_因为URL变化取消定时抓取任务')\n log.error(msg)\n msgBox.error(msg)\n })\n }\n}\n\nconst timedCrawl = new TimedCrawl()\nexport { timedCrawl }\n","import { EVT } from '../EVT'\nimport { pageType } from '../PageType'\nimport { settings } from '../setting/Settings'\nimport { ArtworkData, NovelData } from './CrawlResult.d'\nimport { filter } from '../filter/Filter'\nimport { Utils } from '../utils/Utils'\nimport { Tools } from '../Tools'\n\n// 当 Pixiv 会员使用按热门度排序搜索时,通过检查收藏数量是否符合要求来进行优化\n// 原理:当会员使用热门度排序时,Pixiv 返回的数据是按收藏数量从高到低排序的。(但不是严格一致,经常有少量作品顺序不对)\n// 假如会员用户在下载器里设置了收藏数量大于 10000,那么当查找到小于 10000 收藏的作品时,就可以考虑停止抓取作品了,因为后面的作品都是收藏数量低于 10000 的了\nclass VipSearchOptimize {\n constructor() {\n this.bindEvents()\n }\n\n // 在哪些页面上启用\n private readonly enablePageType: number[] = [pageType.list.ArtworkSearch]\n // 小说搜索页面不需要优化,因为列表数据中包含了每个作品的收藏数\n\n // 只有会员才能使用的排序方式(按热门度排序)\n private readonly vipOrders: string[] = [\n 'popular_d',\n 'popular_male_d',\n 'popular_female_d',\n ]\n // popular_d 受全站欢迎\n // popular_male_d 受男性欢迎\n // popular_female_d 受女性欢迎\n\n // 是否对这次抓取使用优化策略\n private vipSearchOptimize = false\n\n private filterFailed = 0 // 连续检查失败的数量。在检查作品是否满足收藏条件时,如果满足就将此计数清零;如果不满足就自增\n private readonly checkNumber = 30 // 连续多少个作品未达到要求时,停止抓取。这是一个猜测值\n // 设置 checkNumber 的原因:Pixiv 按热门度排序返回的数据其实并不是严格按照收藏数量排序的。所以设置一个数字作为处理这个情况的手段:连续多少个作品都不满足要求时,认为后续都是不满足要求的\n\n private bindEvents() {\n // 启动抓取时设置是否启用优化策略\n window.addEventListener(EVT.list.crawlStart, () => {\n this.vipSearchOptimize = this.setVipOptimize()\n })\n\n // 抓取完毕时重置状态\n window.addEventListener(EVT.list.crawlComplete, () => {\n this.reset()\n })\n }\n\n private reset() {\n this.vipSearchOptimize = false\n this.filterFailed = 0\n }\n\n // 指示是否停止抓取作品\n public async stopCrawl(data: NovelData | ArtworkData) {\n // 如果未启用会员搜索优化,或者没有设置收藏数量要求,则不停止抓取\n if (!this.vipSearchOptimize || !settings.BMKNumSwitch) {\n return false\n }\n\n // 连续多少个作品没有达到要求,则停止抓取\n if (this.filterFailed >= this.checkNumber) {\n return true\n }\n\n // 判断收藏数量是否不符合要求\n // createDate 用于计算日均收藏数量,必须传递\n const check = await filter.check({\n bookmarkCount: data.body.bookmarkCount,\n createDate: data.body.createDate,\n })\n\n if (!check) {\n this.filterFailed++\n } else {\n this.filterFailed = 0\n }\n\n return this.filterFailed >= this.checkNumber\n }\n\n // 设置是否启用优化策略\n private setVipOptimize() {\n // 判断页面类型\n if (!this.enablePageType.includes(pageType.type)) {\n return false\n }\n\n // 判断是否是会员\n if (!Tools.isPremium()) {\n return false\n }\n\n // 判断 order 方式\n const order = Utils.getURLSearchField(window.location.href, 'order')\n // 无排序方式\n if (!order) {\n return false\n }\n\n const vipOrder = this.vipOrders.includes(order)\n // 不是按热门度排序\n if (!vipOrder) {\n return false\n }\n\n // 按热门度排序\n // 判断是否启用了收藏数设置,如果是,则启用会员搜索优化\n return settings.BMKNumSwitch\n }\n}\n\nconst vipSearchOptimize = new VipSearchOptimize()\nexport { vipSearchOptimize }\n","import { store } from '../store/Store'\nimport { settings } from '../setting/Settings'\nimport { lang } from '../Lang'\nimport { EVT } from '../EVT'\nimport { DonwloadSuccessData, DonwloadSkipData } from './DownloadType'\nimport { bookmark } from '../Bookmark'\nimport { log } from '../Log'\n\n// 当文件下载成功后,收藏这个作品\nclass BookmarkAfterDL {\n constructor(tipEl?: HTMLElement) {\n if (tipEl) {\n this.tipEl = tipEl\n lang.register(this.tipEl)\n }\n\n this.bindEvents()\n }\n\n // 储存接收到的 id,用于防止对一个作品重复添加收藏\n // 其实重复添加收藏没什么影响,和只添加一次没区别。为了不浪费网络请求,还是尽量不要重复添加。\n private savedIds: number[] = []\n\n private successCount = 0\n\n private tipEl: HTMLElement = document.createElement('span')\n\n // 如果之前的下载已完成,那么当下一次开始下载时(也就是新的下载,而不是暂停后继续的下载),则重置状态\n private delayReset = false\n\n // 可选传入一个元素,显示收藏的数量和总数\n private bindEvents() {\n // 当有文件下载完成时,提取 id 进行收藏\n window.addEventListener(EVT.list.downloadSuccess, (ev: CustomEventInit) => {\n const successData = ev.detail.data as DonwloadSuccessData\n this.send(Number.parseInt(successData.id))\n })\n\n // 当有文件跳过下载时,如果是重复的下载,也进行收藏\n // 因为重复的下载,本意还是要下载的,只是之前下载过了。所以进行收藏。\n // 其他跳过下载的原因,则是本意就是不下载,所以不收藏。\n window.addEventListener(EVT.list.skipDownload, (ev: CustomEventInit) => {\n const skipData = ev.detail.data as DonwloadSkipData\n if (skipData.reason === 'duplicate') {\n this.send(Number.parseInt(skipData.id))\n }\n })\n\n // 当开始新的抓取时重置状态和提示\n window.addEventListener(EVT.list.crawlStart, (ev: CustomEventInit) => {\n this.reset()\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n this.delayReset = true\n })\n\n window.addEventListener(EVT.list.downloadStart, () => {\n if (this.delayReset) {\n this.reset()\n this.delayReset = false\n }\n })\n }\n\n private showCompleteTip = true\n private showProgress() {\n if (this.savedIds.length === 0) {\n lang.updateText(this.tipEl, '')\n return\n }\n lang.updateText(\n this.tipEl,\n '_已收藏带参数',\n `${this.successCount}/${this.savedIds.length}`\n )\n\n if (this.successCount === this.savedIds.length && this.showCompleteTip) {\n // 当全部收藏完成时,只显示一次提示。否则会显示多次\n this.showCompleteTip = false\n log.success(lang.transl('_收藏作品完毕'))\n }\n }\n\n private reset() {\n this.showCompleteTip = true\n this.savedIds = []\n this.successCount = 0\n this.tipEl.classList.remove('red')\n this.tipEl.classList.add('green')\n this.showProgress()\n }\n\n // 接收作品 id,开始收藏\n private send(id: number | string) {\n if (!settings.bmkAfterDL) {\n return\n }\n\n if (typeof id !== 'number') {\n id = Number.parseInt(id)\n }\n\n // 检查这个 id 是否已经添加了\n if (this.savedIds.includes(id)) {\n return\n }\n\n this.addBookmark(id)\n }\n\n // 给所有作品添加收藏(之前收藏过的,新 tag 将覆盖旧 tag)\n private async addBookmark(id: number) {\n return new Promise(async (resolve, reject) => {\n this.savedIds.push(id)\n this.showProgress()\n\n // 从 store 里查找这个作品的数据\n const dataSource =\n store.resultMeta.length > 0 ? store.resultMeta : store.result\n const data = dataSource.find((val) => val.idNum === id)\n if (data === undefined) {\n log.error(`Not find ${id} in result`)\n return resolve()\n }\n\n // 当抓取结果很少时,不使用慢速收藏\n await bookmark.add(\n id.toString(),\n data.type !== 3 ? 'illusts' : 'novels',\n data.tags,\n undefined,\n undefined,\n store.result.length > 24\n )\n this.successCount++\n\n this.showProgress()\n\n resolve()\n })\n }\n}\n\nexport { BookmarkAfterDL }\n","import { API } from '../API'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { msgBox } from '../MsgBox'\n\n/**当下载数量达到一定数值时,检查当前用户是否被 pixiv 警告 */\nclass CheckWarningMessage {\n constructor() {\n this.bindEvents()\n }\n\n /**已下载(成功保存到硬盘上)的文件数量\n *\n * 这个数字不会重置,除非当前标签页被关闭\n */\n private downloaded = 0\n /**每当保存数量增加了指定数量时,进行一次检查 */\n private readonly unitNumber = 100\n /**上次检查时的下载数量 */\n private lastCheckDownloaded = 0\n\n private bindEvents() {\n // 当有文件保存成功后,计算已下载文件的数量(不会计算跳过的文件)\n window.addEventListener(EVT.list.downloadSuccess, () => {\n this.addDownloaded()\n })\n }\n\n private async addDownloaded() {\n this.downloaded++\n if (this.downloaded >= this.lastCheckDownloaded + this.unitNumber) {\n this.lastCheckDownloaded = this.downloaded\n const result = await this.check()\n if (result) {\n msgBox.error(\n lang.transl('_过度访问警告警告') + '
        ' + lang.transl('_已暂停')\n )\n return EVT.fire('requestPauseDownload')\n }\n }\n }\n\n private async check(): Promise {\n return new Promise(async (resolve, reject) => {\n const data = await API.getLatestMessage(3)\n if (data.error) {\n console.error(data.message)\n return resolve(false)\n }\n if (data.body.total === 0) {\n return resolve(false)\n }\n\n for (const msgData of data.body.message_threads) {\n if (\n msgData.is_official === true &&\n msgData.thread_name === 'pixiv事務局'\n ) {\n if (\n msgData.latest_content.includes('policies.pixiv.net') &&\n msgData.latest_content.includes('14')\n ) {\n // 如果找到了官方账号发送的警告消息,则判断时间\n const now = new Date().getTime()\n const msgTime = Number.parseInt(msgData.modified_at + '000')\n // 如果这是 1 小时内的消息,则视为有效的警告消息\n // 如果警告消息的时间过去比较久了,则不再显示提示消息,否则就会无限提示了\n // 在进行大量下载时,pixiv 的警告消息可能会延迟几十分钟发送\n if (now - msgTime < 60 * 60 * 1000) {\n return resolve(true)\n }\n }\n }\n }\n\n return resolve(false)\n })\n }\n}\n\nnew CheckWarningMessage()\n","// 下载文件,然后发送给浏览器进行保存\nimport { EVT } from '../EVT'\nimport { log } from '../Log'\nimport { lang } from '../Lang'\nimport { fileName } from '../FileName'\nimport { convertUgoira } from '../ConvertUgoira/ConvertUgoira'\nimport {\n downloadArgument,\n SendToBackEndData,\n DonwloadSkipData,\n} from './DownloadType'\nimport { progressBar } from './ProgressBar'\nimport { filter } from '../filter/Filter'\nimport { downloadRecord } from './DownloadRecord'\nimport { settings } from '../setting/Settings'\nimport { MakeNovelFile } from './MakeNovelFile'\nimport { Utils } from '../utils/Utils'\nimport { Config } from '../Config'\nimport { msgBox } from '../MsgBox'\nimport { states } from '../store/States'\nimport { Tools } from '../Tools'\nimport { downloadNovelEmbeddedImage } from './DownloadNovelEmbeddedImage'\nimport { downloadNovelCover } from './DownloadNovelCover'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport { downloadStates } from './DownloadStates'\n\n// 处理下载队列里的任务\n// 不显示在进度条上的下载任务,不在这里处理\nclass Download {\n constructor(\n progressBarIndex: number,\n data: downloadArgument,\n downloadStatesIndex: number\n ) {\n this.progressBarIndex = progressBarIndex\n this.downloadStatesIndex = downloadStatesIndex\n this.beforeDownload(data)\n }\n\n private progressBarIndex: number\n private downloadStatesIndex: number\n\n private retry = 0 // 重试次数\n private lastRequestTime = 0 // 最后一次发起请求的时间戳\n private retryInterval: number[] = [] // 保存每次到达重试环节时,距离上一次请求的时间差\n\n private sizeChecked = false // 是否对文件体积进行了检查\n private skip = false // 这个下载是否应该被跳过。如果这个文件不符合某些过滤条件就应该跳过它\n private error = false // 在下载过程中是否出现了无法解决的错误\n\n private get cancel() {\n return this.skip || this.error || !states.downloading\n }\n\n // 跳过下载这个文件。可以传入用于提示的文本\n private skipDownload(data: DonwloadSkipData, msg?: string) {\n this.skip = true\n if (msg) {\n log.warning(msg)\n }\n if (states.downloading) {\n EVT.fire('skipDownload', data)\n }\n }\n\n // 在开始下载前进行检查\n private async beforeDownload(arg: downloadArgument) {\n // 检查是否是重复文件\n const duplicate = await downloadRecord.checkDeduplication(arg.result)\n if (duplicate) {\n return this.skipDownload(\n {\n id: arg.id,\n reason: 'duplicate',\n },\n lang.transl(\n '_跳过下载因为重复文件',\n Tools.createWorkLink(arg.id, arg.result.type !== 3)\n )\n )\n }\n\n // 如果是动图,再次检查是否排除了动图\n // 因为有时候用户在抓取时没有排除动图,但是在下载时排除了动图。所以下载时需要再次检查\n if (arg.result.type === 2 && !settings.downType2) {\n return this.skipDownload({\n id: arg.id,\n reason: 'excludedType',\n })\n }\n\n // 检查宽高条件和宽高比\n if (\n (settings.setWHSwitch || settings.ratioSwitch) &&\n arg.result.type !== 3\n ) {\n // 默认使用当前作品中第一张图片的宽高\n let wh = {\n width: arg.result.fullWidth,\n height: arg.result.fullHeight,\n }\n // 如果不是第一张图片,则加载图片以获取宽高\n if (arg.result.index > 0) {\n // 始终获取原图的尺寸\n wh = await Utils.getImageSize(arg.result.original)\n }\n\n // 如果获取宽高失败,图片会被视为通过宽高检查\n if (wh.width === 0 || wh.height === 0) {\n log.error(\n lang.transl('_获取图片的宽高时出现错误') +\n Tools.createWorkLink(arg.id)\n )\n // 图片加载失败可能是请求超时,或者图片不存在。这里无法获取到具体原因,所以不直接返回。\n // 如果是 404 错误,在 download 方法中可以处理这个问题\n // 如果是请求超时,则有可能错误的通过了这个图片\n }\n\n const result = await filter.check(wh)\n if (!result) {\n return this.skipDownload(\n {\n id: arg.id,\n reason: 'widthHeight',\n },\n lang.transl('_不保存图片因为宽高', Tools.createWorkLink(arg.id))\n )\n }\n }\n\n this.download(arg)\n }\n\n // 设置进度条信息\n private setProgressBar(name: string, loaded: number, total: number) {\n progressBar.setProgress(this.progressBarIndex, {\n name,\n loaded,\n total,\n })\n }\n\n // 当重试达到最大次数时\n private afterReTryMax(status: number, fileId: string) {\n const errorMsg = lang.transl(\n '_作品id无法下载带状态码',\n Tools.createWorkLink(fileId),\n status.toString()\n )\n // 404, 500 错误,跳过,不会再尝试下载这个文件(因为没有触发 downloadError 事件,所以不会重试下载)\n if (status === 404 || status === 500) {\n log.error(errorMsg)\n return this.skipDownload({\n id: fileId,\n reason: status.toString() as '404' | '500',\n })\n }\n\n // 状态码为 0,可能是系统磁盘空间不足导致的错误,也可能是代理软件导致的网络错误\n // 超时也会返回状态码 0\n if (status === 0) {\n // 判断是否是磁盘空间不足。特征是每次重试之间的间隔时间比较短。\n // 如果是超时,那么等待时间会比较长,可能超过 20 秒\n const timeLimit = 10000 // 如果从发起请求到进入重试的时间间隔小于这个值,则视为磁盘空间不足的情况\n const result = this.retryInterval.filter((val) => val <= timeLimit)\n // 在全部的 10 次请求中,如果有 9 次小于 10 秒,就有可能是磁盘空间不足。\n if (result.length > 9) {\n log.error(errorMsg)\n const tip = lang.transl('_状态码为0的错误提示')\n log.error(tip)\n msgBox.error(tip)\n return EVT.fire('requestPauseDownload')\n }\n }\n\n // 其他状态码,暂时跳过这个任务,但最后还是会尝试重新下载它\n this.error = true\n EVT.fire('downloadError', fileId)\n }\n\n // 下载文件\n private async download(arg: downloadArgument) {\n // 获取文件名\n const _fileName = fileName.createFileName(arg.result)\n\n // 重设当前下载栏的信息\n this.setProgressBar(_fileName, 0, 0)\n\n // 下载文件\n let url: string\n if (arg.result.type === 3) {\n // 生成小说的文件\n if (arg.result.novelMeta) {\n if (arg.result.novelMeta?.coverUrl) {\n downloadNovelCover.download(\n arg.result.novelMeta.coverUrl,\n _fileName,\n 'downloadNovel'\n )\n }\n\n let blob: Blob = await MakeNovelFile.make(arg.result.novelMeta)\n url = URL.createObjectURL(blob)\n\n if (settings.novelSaveAs === 'txt') {\n await downloadNovelEmbeddedImage.TXT(\n arg.result.novelMeta.content,\n arg.result.novelMeta.embeddedImages,\n _fileName\n )\n }\n } else {\n throw new Error('Not found novelMeta')\n }\n } else {\n // 对于图像作品,如果设置了图片尺寸就使用指定的 url,否则使用原图 url\n url = arg.result[settings.imageSize] || arg.result.original\n }\n\n let xhr = new XMLHttpRequest()\n xhr.open('GET', url, true)\n xhr.responseType = 'blob'\n\n // 显示下载进度\n xhr.addEventListener('progress', async (event) => {\n // 检查体积设置\n if (!this.sizeChecked) {\n this.sizeChecked = true\n const result = await filter.check({ size: event.total })\n if (!result) {\n // 当因为体积问题跳过下载时,可能这个下载进度还是 0 或者很少,所以这里直接把进度条拉满\n this.setProgressBar(_fileName, 1, 1)\n this.skipDownload(\n {\n id: arg.id,\n reason: 'size',\n },\n lang.transl('_不保存图片因为体积', Tools.createWorkLink(arg.id))\n )\n }\n }\n\n if (this.cancel) {\n xhr.abort()\n xhr = null as any\n return\n }\n\n this.setProgressBar(_fileName, event.loaded, event.total)\n })\n\n // 文件加载完毕,或者加载出错\n xhr.addEventListener('loadend', async () => {\n if (this.cancel) {\n xhr = null as any\n return\n }\n\n let file: Blob = xhr.response // 要下载的文件\n // 状态码错误,进入重试流程\n if (xhr.status !== 200) {\n // 正常下载完毕的状态码是 200\n // 储存重试的时间戳等信息\n this.retryInterval.push(new Date().getTime() - this.lastRequestTime)\n\n progressBar.errorColor(this.progressBarIndex, true)\n this.retry++\n\n if (this.retry >= Config.retryMax) {\n // 重试达到最大次数\n this.afterReTryMax(xhr.status, arg.id)\n } else {\n // 开始重试\n return this.download(arg)\n }\n } else {\n // 状态码正常\n progressBar.errorColor(this.progressBarIndex, false)\n // 需要转换动图的情况\n const convertExt = ['webm', 'gif', 'png']\n const ext = settings.ugoiraSaveAs\n if (\n convertExt.includes(ext) &&\n arg.result.ugoiraInfo &&\n settings.imageSize !== 'thumb'\n ) {\n // 当下载图片的方形缩略图时,不转换动图,因为此时下载的是作品的静态缩略图,无法进行转换\n try {\n if (ext === 'webm') {\n file = await convertUgoira.webm(\n file,\n arg.result.ugoiraInfo,\n arg.result.idNum\n )\n }\n\n if (ext === 'gif') {\n file = await convertUgoira.gif(\n file,\n arg.result.ugoiraInfo,\n arg.result.idNum\n )\n }\n\n if (ext === 'png') {\n file = await convertUgoira.apng(\n file,\n arg.result.ugoiraInfo,\n arg.result.idNum\n )\n }\n } catch (error) {\n const msg = lang.transl(\n '_动图转换失败的提示',\n Tools.createWorkLink(arg.result.idNum)\n )\n // 因为会重试所以不在日志上显示\n // log.error(msg, 1)\n console.error(msg)\n\n this.error = true\n EVT.fire('downloadError', arg.id)\n }\n }\n }\n\n if (this.cancel) {\n return\n }\n\n // 生成下载链接\n const blobUrl = URL.createObjectURL(file)\n\n // 对插画、漫画进行颜色检查\n // 在这里进行检查的主要原因:抓取时只会检查单图作品的颜色,不会检查多图作品的颜色。所以多图作品需要在这里进行检查。\n // 另一个原因:如果抓取时没有设置图片的颜色条件,下载时才设置颜色条件,那么就必须在这里进行检查。\n if (arg.result.type === 0 || arg.result.type === 1) {\n const result = await filter.check({\n mini: blobUrl,\n })\n if (!result) {\n return this.skipDownload(\n {\n id: arg.id,\n reason: 'color',\n },\n lang.transl('_不保存图片因为颜色', Tools.createWorkLink(arg.id))\n )\n }\n }\n\n // 向浏览器发送下载任务\n if (settings.setFileDownloadOrder) {\n await this.waitPreviousFileDownload()\n }\n this.browserDownload(blobUrl, _fileName, arg.id, arg.taskBatch)\n xhr = null as any\n file = null as any\n })\n\n this.lastRequestTime = new Date().getTime()\n // 没有设置 timeout,默认值是 0,不会超时\n xhr.send()\n }\n\n // 等待上一个文件下载成功之后(浏览器将文件保存到硬盘上),再保存这个文件。这是为了保证文件的保存顺序不会错乱\n private waitPreviousFileDownload() {\n return new Promise(async (resolve) => {\n if (this.downloadStatesIndex === 0) {\n return resolve(true)\n }\n\n if (downloadStates.states[this.downloadStatesIndex - 1] === 1) {\n return resolve(true)\n } else {\n return resolve(\n new Promise((resolve) => {\n setTimeoutWorker.set(() => {\n resolve(this.waitPreviousFileDownload())\n }, 50)\n })\n )\n }\n })\n }\n\n // 向浏览器发送下载任务\n private browserDownload(\n blobUrl: string,\n fileName: string,\n id: string,\n taskBatch: number\n ) {\n // 如果任务已停止,不会向浏览器发送下载任务\n if (this.cancel) {\n // 释放 bloburl\n URL.revokeObjectURL(blobUrl)\n return\n }\n\n const sendData: SendToBackEndData = {\n msg: 'save_work_file',\n fileUrl: blobUrl,\n fileName: fileName,\n id,\n taskBatch,\n }\n\n try {\n chrome.runtime.sendMessage(sendData)\n EVT.fire('sendBrowserDownload')\n } catch (error) {\n let msg = `${lang.transl('_发生错误原因')}
        {}${lang.transl(\n '_请刷新页面'\n )}`\n if ((error as Error).message.includes('Extension context invalidated')) {\n msg = msg.replace('{}', lang.transl('_扩展程序已更新'))\n log.error(msg)\n msgBox.error(msg)\n return\n }\n\n console.error(error)\n msg = msg.replace('{}', lang.transl('_未知错误'))\n log.error(msg)\n msgBox.error(msg)\n }\n }\n}\n\nexport { Download }\n","// 下载控制\nimport { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport {\n downloadArgument,\n DonwloadSuccessData,\n DonwloadSkipData,\n DownloadedMsg,\n TaskList,\n} from './DownloadType'\nimport { store } from '../store/Store'\nimport { log } from '../Log'\nimport { lang } from '../Lang'\nimport { Colors } from '../Colors'\nimport { setSetting, settings } from '../setting/Settings'\nimport { Download } from '../download/Download'\nimport { progressBar } from './ProgressBar'\nimport { downloadStates } from './DownloadStates'\nimport { ShowDownloadStates } from './ShowDownloadStates'\nimport { ShowSkipCount } from './ShowSkipCount'\nimport { ShowConvertCount } from './ShowConvertCount'\nimport { BookmarkAfterDL } from './BookmarkAfterDL'\nimport { states } from '../store/States'\nimport { Config } from '../Config'\nimport { toast } from '../Toast'\nimport { Utils } from '../utils/Utils'\nimport { pageType } from '../PageType'\nimport { msgBox } from '../MsgBox'\nimport './CheckWarningMessage'\nimport { showHelp } from '../ShowHelp'\n\nclass DownloadControl {\n constructor() {\n this.createResultBtns()\n\n this.createDownloadArea()\n\n this.bindEvents()\n\n const statusTipWrap = this.wrapper.querySelector(\n '.down_status'\n ) as HTMLSpanElement\n new ShowDownloadStates(statusTipWrap)\n\n const skipTipWrap = this.wrapper.querySelector(\n '.skip_tip'\n ) as HTMLSpanElement\n new ShowSkipCount(skipTipWrap)\n\n const convertTipWrap = this.wrapper.querySelector(\n '.convert_tip'\n ) as HTMLSpanElement\n new ShowConvertCount(convertTipWrap)\n\n // 只在 p 站内启用下载后收藏的功能\n if (Utils.isPixiv()) {\n const bmkAfterDLTipWrap = this.wrapper.querySelector(\n '.bmkAfterDL_tip'\n ) as HTMLSpanElement\n new BookmarkAfterDL(bmkAfterDLTipWrap)\n }\n }\n\n private wrapper: HTMLDivElement = document.createElement('div')\n\n /**在插槽里添加的操作抓取结果的按钮 */\n private resultBtns: {\n exportCSV: HTMLButtonElement\n exportJSON: HTMLButtonElement\n importJSON: HTMLButtonElement\n } = {\n exportCSV: document.createElement('button'),\n exportJSON: document.createElement('button'),\n importJSON: document.createElement('button'),\n }\n\n private thread = 5 // 同时下载的线程数的默认值\n // 这里默认设置为 5,是因为国内一些用户的下载速度比较慢,所以不应该同时下载很多文件。\n // 最大值由 Config.downloadThreadMax 定义\n\n private taskBatch = 0 // 标记任务批次,每次重新下载时改变它的值,传递给后台使其知道这是一次新的下载\n\n private taskList: TaskList = {} // 下载任务列表,使用下载的文件的 id 做 key,保存下载栏编号和它在下载状态列表中的索引\n\n private errorIdList: string[] = [] // 有任务下载失败时,保存 id\n\n private downloaded = 0 // 已下载的任务数量\n\n private stop = false // 是否已经停止下载\n\n private pause = false // 是否已经暂停下载\n\n private crawlIdListTimer: undefined | number = undefined\n\n private checkDownloadTimeoutTimer: undefined | number = undefined\n\n private readonly msgFlag = 'uuidTip'\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.hideResultBtns()\n this.hideDownloadArea()\n this.reset()\n })\n\n for (const ev of [\n EVT.list.crawlComplete,\n EVT.list.resultChange,\n EVT.list.resume,\n ]) {\n window.addEventListener(ev, (ev) => {\n // 当恢复了未完成的抓取数据时,将下载状态设置为暂停\n this.pause = ev.type === 'resume'\n // 让开始下载的方法进入任务队列,以便让监听上述事件的其他部分的代码先执行完毕\n window.setTimeout(() => {\n this.readyDownload()\n }, 0)\n })\n }\n\n window.addEventListener(EVT.list.skipDownload, (ev: CustomEventInit) => {\n // 跳过下载的文件不会触发 downloadSuccess 事件\n const data = ev.detail.data as DonwloadSkipData\n this.downloadOrSkipAFile(data)\n })\n\n window.addEventListener(EVT.list.downloadError, (ev: CustomEventInit) => {\n const id = ev.detail.data as string\n this.downloadError(id)\n })\n\n window.addEventListener(EVT.list.requestPauseDownload, (ev) => {\n // 请求暂停下载\n this.pauseDownload()\n })\n\n // 如果下载器让浏览器保存文件到本地,但是之后没有收到回应(不知道文件是否有成功保存),这会导致下载进度卡住\n window.addEventListener(EVT.list.sendBrowserDownload, () => {\n window.clearTimeout(this.checkDownloadTimeoutTimer)\n this.checkDownloadTimeoutTimer = window.setTimeout(() => {\n const msg = lang.transl('_可能发生了错误请刷新页面重试')\n msgBox.once('mayError', msg, 'warning')\n log.warning(msg)\n }, 5000)\n })\n\n const clearDownloadTimeoutTimerList = [\n EVT.list.downloadComplete,\n EVT.list.downloadError,\n EVT.list.downloadPause,\n EVT.list.downloadStop,\n EVT.list.downloadSuccess,\n EVT.list.crawlStart,\n ]\n clearDownloadTimeoutTimerList.forEach((evt) => {\n window.addEventListener(evt, () => {\n window.clearTimeout(this.checkDownloadTimeoutTimer)\n })\n })\n\n // 监听浏览器返回的消息\n chrome.runtime.onMessage.addListener((msg: DownloadedMsg) => {\n if (!this.taskBatch) {\n return\n }\n\n // UUID 的情况\n if (msg.data?.uuid) {\n log.error(lang.transl('_uuid'))\n msgBox.once(this.msgFlag, lang.transl('_uuid'), 'error')\n }\n\n // 文件下载成功\n if (msg.msg === 'downloaded') {\n // 释放 BLOBURL\n URL.revokeObjectURL(msg.data.url)\n\n // 发送下载成功的事件\n EVT.fire('downloadSuccess', msg.data)\n\n this.downloadOrSkipAFile(msg.data)\n } else if (msg.msg === 'download_err') {\n // 浏览器把文件保存到本地失败\n\n // 用户操作导致下载取消的情况,跳过这个文件,不再重试保存它。触发条件如:\n // 用户在浏览器弹出“另存为”对话框时取消保存\n // 用户让 IDM 转接这个下载时\n if (msg.err === 'USER_CANCELED') {\n log.error(\n lang.transl(\n '_user_canceled_tip',\n Tools.createWorkLink(msg.data.id),\n msg.err || 'unknown'\n )\n )\n\n this.downloadOrSkipAFile(msg.data)\n return\n }\n\n // 其他原因,下载器会重试保存这个文件\n log.error(\n lang.transl(\n '_save_file_failed_tip',\n Tools.createWorkLink(msg.data.id),\n msg.err || 'unknown'\n )\n )\n\n if (msg.err === 'FILE_FAILED') {\n log.error(lang.transl('_FILE_FAILED_tip'))\n }\n\n EVT.fire('saveFileError')\n // 重新下载这个文件\n // 但并不确定能否如预期一样重新下载这个文件\n this.saveFileError(msg.data)\n }\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n // 如果有等待中的下载任务,则开始下载等待中的任务\n if (store.waitingIdList.length === 0) {\n toast.success(lang.transl('_下载完毕2'), {\n position: 'center',\n })\n\n // 通知后台清除保存的此标签页的 idList\n chrome.runtime.sendMessage({\n msg: 'clearDownloadsTempData',\n })\n } else {\n window.clearTimeout(this.crawlIdListTimer)\n this.crawlIdListTimer = window.setTimeout(() => {\n states.quickCrawl = true // 下载等待的任务时,不显示下载器面板\n const idList = store.waitingIdList\n store.waitingIdList = []\n EVT.fire('crawlIdList', idList)\n }, 0)\n }\n })\n }\n\n private createDownloadArea() {\n const html = `
        \n
        \n \n \n \n \n
        \n
        \n \n \n \n \n \n
        \n
        `\n\n this.wrapper = Tools.useSlot('downloadArea', html) as HTMLDivElement\n lang.register(this.wrapper)\n\n this.wrapper\n .querySelector('.startDownload')!\n .addEventListener('click', () => {\n this.startDownload()\n })\n\n this.wrapper\n .querySelector('.pauseDownload')!\n .addEventListener('click', () => {\n this.pauseDownload()\n })\n\n this.wrapper\n .querySelector('.stopDownload')!\n .addEventListener('click', () => {\n this.stopDownload()\n })\n\n this.wrapper.querySelector('.copyUrl')!.addEventListener('click', () => {\n EVT.fire('showURLs')\n })\n }\n\n private createResultBtns() {\n // 只在 pixiv 上添加这些按钮\n if (Utils.isPixiv()) {\n // 导入抓取结果\n this.resultBtns.importJSON = Tools.addBtn(\n 'exportResult',\n Colors.bgGreen,\n '_导入抓取结果'\n )\n // 导入抓取结果的按钮始终显示,因为它需要始终可用。\n // 导出抓取结果的按钮只有在可以准备下载时才显示\n\n this.resultBtns.importJSON.addEventListener(\n 'click',\n () => {\n EVT.fire('importResult')\n },\n false\n )\n\n // 导出抓取结果\n this.resultBtns.exportJSON = Tools.addBtn(\n 'exportResult',\n Colors.bgGreen,\n '_导出抓取结果'\n )\n this.resultBtns.exportJSON.style.display = 'none'\n\n this.resultBtns.exportJSON.addEventListener(\n 'click',\n () => {\n EVT.fire('exportResult')\n },\n false\n )\n\n // 导出 csv\n this.resultBtns.exportCSV = Tools.addBtn(\n 'exportResult',\n Colors.bgGreen,\n '_导出csv'\n )\n this.resultBtns.exportCSV.style.display = 'none'\n\n this.resultBtns.exportCSV.addEventListener(\n 'click',\n () => {\n EVT.fire('exportCSV')\n },\n false\n )\n\n this.resultBtns.exportCSV.addEventListener(\n 'mouseenter',\n () => {\n showHelp.show('tipCSV', lang.transl('_导出CSV文件的提示'))\n },\n false\n )\n }\n }\n\n // 抓取完毕之后,已经可以开始下载时,显示必要的信息,并决定是否立即开始下载\n private readyDownload() {\n if (states.busy || states.mergeNovel) {\n return\n }\n\n if (store.result.length === 0) {\n return progressBar.reset(0)\n }\n\n if (settings.downloadUgoiraFirst) {\n store.resultMeta.sort(Tools.sortUgoiraFirst)\n store.result.sort(Tools.sortUgoiraFirst)\n }\n\n EVT.fire('readyDownload')\n\n this.showResultBtns()\n\n this.showDownloadArea()\n\n this.setDownloaded()\n\n this.setDownloadThread()\n\n // 在插画漫画搜索页面里,如果启用了“预览搜索页面的筛选结果”\n if (\n pageType.type === pageType.list.ArtworkSearch &&\n settings.previewResult\n ) {\n // “预览搜索页面的筛选结果”会阻止自动开始下载。但是一些情况例外\n // 允许快速抓取发起的下载请求自动开始下载\n // 允许由抓取标签列表功能发起的下载请求自动开始下载\n if (!states.quickCrawl && !states.crawlTagList) {\n return\n }\n }\n\n // 自动开始下载的情况\n if (\n settings.autoStartDownload ||\n states.quickCrawl ||\n states.crawlTagList\n ) {\n this.startDownload()\n }\n }\n\n // 开始下载\n private startDownload() {\n if (states.busy) {\n return toast.error(lang.transl('_当前任务尚未完成'))\n }\n\n if (store.result.length === 0) {\n return toast.error(lang.transl('_没有可用的抓取结果'))\n }\n\n if (this.pause) {\n // 从上次中断的位置继续下载\n // 把“使用中”的下载状态重置为“未使用”\n downloadStates.resume()\n } else {\n // 如果之前没有暂停任务,也没有进入恢复模式,则重新下载\n // 初始化下载状态列表\n downloadStates.init()\n }\n\n this.reset()\n\n msgBox.resetOnce(this.msgFlag)\n\n this.setDownloaded()\n\n this.taskBatch = new Date().getTime() // 修改本批下载任务的标记\n\n this.setDownloadThread()\n\n EVT.fire('downloadStart')\n\n // 建立并发下载线程\n for (let i = 0; i < this.thread; i++) {\n this.createDownload(i)\n }\n\n log.success(lang.transl('_正在下载中'))\n\n if (Config.mobile) {\n log.warning(lang.transl('_Kiwi浏览器可能不能建立文件夹的bug'))\n }\n }\n\n // 暂停下载\n private pauseDownload() {\n if (store.result.length === 0) {\n return\n }\n\n // 停止的优先级高于暂停。点击停止可以取消暂停状态,但点击暂停不能取消停止状态\n if (this.stop === true) {\n return\n }\n\n if (this.pause === false) {\n // 如果正在下载中\n if (states.busy) {\n this.pause = true\n log.warning(lang.transl('_已暂停'), 2)\n\n EVT.fire('downloadPause')\n } else {\n // 不在下载中的话不允许启用暂停功能\n return\n }\n }\n }\n\n // 停止下载\n private stopDownload() {\n if (store.result.length === 0 || this.stop) {\n return\n }\n\n this.stop = true\n log.error(lang.transl('_已停止'), 2)\n this.pause = false\n\n EVT.fire('downloadStop')\n }\n\n private downloadError(id: string) {\n this.errorIdList.push(id)\n\n // 是否继续下载\n const task = this.taskList[id]\n const no = task.progressBarIndex\n if (this.checkContinueDownload()) {\n this.createDownload(no)\n } else {\n this.checkCompleteWithError()\n }\n }\n\n private setDownloaded() {\n this.downloaded = downloadStates.downloadedCount()\n\n const text = `${this.downloaded} / ${store.result.length}`\n log.log(text, 2, false)\n\n // 设置总下载进度条\n progressBar.setTotalProgress(this.downloaded)\n\n store.remainingDownload = store.result.length - this.downloaded\n\n // 所有文件正常下载完毕(跳过下载的文件也算正常下载)\n if (this.downloaded === store.result.length) {\n log.success(lang.transl('_下载完毕'), 2)\n window.setTimeout(() => {\n // 延后触发下载完成的事件。因为下载完成事件是由上游事件(跳过下载,或下载成功事件)派生的,如果这里不延迟触发,可能导致其他模块先接收到下载完成事件,后接收到上游事件。\n EVT.fire('downloadComplete')\n }, 0)\n this.reset()\n }\n\n this.checkCompleteWithError()\n }\n\n // 设置下载线程数量\n private setDownloadThread() {\n const setThread = settings.downloadThread\n if (\n setThread < 1 ||\n setThread > Config.downloadThreadMax ||\n isNaN(setThread)\n ) {\n // 如果数值非法,则重设为默认值\n this.thread = Config.downloadThreadMax\n setSetting('downloadThread', Config.downloadThreadMax)\n } else {\n this.thread = setThread // 设置为用户输入的值\n }\n\n // 如果剩余任务数量少于下载线程数\n if (store.result.length - this.downloaded < this.thread) {\n this.thread = store.result.length - this.downloaded\n }\n\n // 重设下载进度条\n progressBar.reset(this.thread, this.downloaded)\n }\n\n private saveFileError(data: DonwloadSuccessData) {\n if (this.pause || this.stop) {\n return false\n }\n const task = this.taskList[data.id]\n // 复位这个任务的状态\n downloadStates.setState(task.index, -1)\n // 建立下载任务,再次下载它\n this.createDownload(task.progressBarIndex)\n }\n\n private downloadOrSkipAFile(data: DonwloadSuccessData | DonwloadSkipData) {\n const task = this.taskList[data.id]\n\n // 更改这个任务状态为“已完成”\n downloadStates.setState(task.index, 1)\n\n // 统计已下载数量\n this.setDownloaded()\n\n // 是否继续下载\n const no = task.progressBarIndex\n if (this.checkContinueDownload()) {\n this.createDownload(no)\n }\n }\n\n // 当一个文件下载成功或失败之后,检查是否还有后续下载任务\n private checkContinueDownload() {\n // 如果没有全部下载完毕\n if (this.downloaded < store.result.length) {\n // 如果任务已停止\n if (this.pause || this.stop) {\n return false\n }\n // 如果已完成的数量 加上 线程中未完成的数量,仍然没有达到文件总数,继续添加任务\n if (this.downloaded + this.thread - 1 < store.result.length) {\n return true\n } else {\n return false\n }\n } else {\n return false\n }\n }\n\n // 查找需要进行下载的作品,建立下载\n private createDownload(progressBarIndex: number) {\n const index = downloadStates.getFirstDownloadItem()\n if (index === undefined) {\n // 当已经没有需要下载的作品时,检查是否带着错误完成了下载\n // 如果下载过程中没有出错,就不会执行到这个分支\n return this.checkCompleteWithError()\n } else {\n const workData = store.result[index]\n const argument: downloadArgument = {\n id: workData.id,\n result: workData,\n index: index,\n progressBarIndex: progressBarIndex,\n taskBatch: this.taskBatch,\n }\n\n // 保存任务信息\n this.taskList[workData.id] = {\n index,\n progressBarIndex: progressBarIndex,\n }\n\n // 建立下载\n new Download(progressBarIndex, argument, index)\n }\n }\n\n // 在有下载出错的情况下,是否已经完成了下载\n private checkCompleteWithError() {\n if (\n this.errorIdList.length > 0 &&\n this.downloaded + this.errorIdList.length === store.result.length\n ) {\n // 进入暂停状态,一定时间后自动开始下载,重试下载出错的文件\n this.pauseDownload()\n setTimeout(() => {\n this.startDownload()\n }, 2000)\n }\n }\n\n private reset() {\n this.pause = false\n this.stop = false\n this.errorIdList = []\n this.downloaded = 0\n }\n\n private showDownloadArea() {\n this.wrapper.style.display = 'block'\n }\n\n private hideDownloadArea() {\n this.wrapper.style.display = 'none'\n }\n\n private showResultBtns() {\n this.resultBtns.exportJSON.style.display = 'flex'\n this.resultBtns.exportCSV.style.display = 'flex'\n }\n\n private hideResultBtns() {\n this.resultBtns.exportJSON.style.display = 'none'\n this.resultBtns.exportCSV.style.display = 'none'\n }\n}\n\nnew DownloadControl()\n","import { settings } from '../setting/Settings'\nimport { Utils } from '../utils/Utils'\n\nclass DownloadNovelCover {\n /**下载小说的封面图片\n *\n * 默认是正常下载小说的情况,可以设置为合并系列小说的情况\n */\n public async download(\n coverURL: string,\n novelName: string,\n action: 'downloadNovel' | 'mergeNovel' = 'downloadNovel'\n ) {\n if (!settings.downloadNovelCoverImage || !coverURL) {\n return\n }\n\n const url = await this.getCoverBolbURL(coverURL)\n let coverName = Utils.replaceSuffix(novelName, coverURL)\n\n // 合并系列小说时,文件直接保存在下载目录里,封面图片也保存在下载目录里\n // 所以要替换掉封面图路径里的斜线\n if (action === 'mergeNovel') {\n coverName = Utils.replaceUnsafeStr(coverName)\n }\n this.sendDownload(url, coverName)\n }\n\n // 生成封面图片的 Blob URL\n private async getCoverBolbURL(coverURL: string): Promise {\n return new Promise(async (resolve, reject) => {\n const res = await fetch(coverURL, {\n method: 'get',\n credentials: 'same-origin',\n })\n const blob = await res.blob()\n const url = URL.createObjectURL(blob)\n return resolve(url)\n })\n }\n\n private sendDownload(url: string, name: string) {\n chrome.runtime.sendMessage({\n msg: 'save_novel_cover_file',\n fileUrl: url,\n fileName: name,\n })\n }\n}\n\nconst downloadNovelCover = new DownloadNovelCover()\nexport { downloadNovelCover }\n","import { API } from '../API'\nimport { settings } from '../setting/Settings'\nimport { Utils } from '../utils/Utils'\n\ntype EmbeddedImages = null | {\n [key: string]: string\n}\n\ntype IDData = {\n /**图片的 id,可能会重复。id 重复时,它们的 p 不同 */\n id: string\n /**这个属性只在引用其他作品的图片时有实机值,表示这个图片是作品里的第几张图片(从 1 开始)。0 无实际意义。 */\n p: number\n /**表示图片来源自用户上传,或是引用其他作品 */\n type: 'upload' | 'pixiv'\n /**图片的 URL,有可能是 null。当图片是通过引用作品 ID 插入,但下载器获取到作品数据里的 urls 都是 null(通常是因为用户未登录),那这个属性就也是 null。此时无法下载这个图片 */\n url: string | null\n /**图片的 BLOBURL */\n blobURL?: string\n /**图片在原文中的标记文字 */\n flag: string\n}\n\ntype IDList = IDData[]\n\n/**下载小说里的内嵌图片 */\nclass DownloadNovelEmbeddedImage {\n // 小说保存为 txt 时,直接下载小说里的内嵌图片。因为 txt 无法存储图像,只能单独保存\n\n /**下载小说为 txt 时\n *\n * 默认是正常下载小说的情况,可以设置为合并系列小说的情况\n */\n public async TXT(\n content: string,\n embeddedImages: EmbeddedImages,\n novelName: string,\n action: 'downloadNovel' | 'mergeNovel' = 'downloadNovel'\n ) {\n if (!settings.downloadNovelEmbeddedImage) {\n return\n }\n\n const idList = await this.getIdList(content, embeddedImages)\n\n // 保存为 TXT 格式时,每加载完一个图片,就立即保存这个图片\n for (let idData of idList) {\n // 如果 url 是 null,则不会保存这个图片\n if (idData.url) {\n idData = await this.getImageBolbURL(idData)\n let imageName = Utils.replaceSuffix(novelName, idData.url!)\n // 在文件名末尾加上内嵌图片的 id 和序号\n const array = imageName.split('.')\n const addString = `-${idData.id}${idData.p === 0 ? '' : '-' + idData.p}`\n array[array.length - 2] = array[array.length - 2] + addString\n imageName = array.join('.')\n\n // 合并系列小说时,文件直接保存在下载目录里,内嵌图片也保存在下载目录里\n // 所以要替换掉内嵌图片路径里的斜线\n if (action === 'mergeNovel') {\n imageName = Utils.replaceUnsafeStr(imageName)\n }\n this.sendDownload(idData.blobURL!, imageName)\n }\n }\n }\n\n /**下载小说为 EPUB 时,替换内嵌图片标记,把图片用 img 标签保存到正文里 */\n public async EPUB(\n content: string,\n embeddedImages: EmbeddedImages\n ): Promise {\n return new Promise(async (resolve) => {\n if (!settings.downloadNovelEmbeddedImage) {\n return resolve(content)\n }\n\n const idList = await this.getIdList(content, embeddedImages)\n for (let idData of idList) {\n if (idData.url) {\n idData = await this.getImageBolbURL(idData)\n const dataURL = await this.getImageDataURL(idData)\n const html = ``\n content = content.replaceAll(idData.flag, html)\n } else {\n // 如果 url 是 null,则修改标记,做出提示\n content = content.replaceAll(\n idData.flag,\n ` ${idData.flag} url is null`\n )\n }\n }\n\n return resolve(content)\n })\n }\n\n // 获取正文里上传的图片 id 和引用的图片 id\n private async getIdList(\n content: string,\n embeddedImages: EmbeddedImages\n ): Promise {\n return new Promise(async (resolve) => {\n const idList: IDList = []\n\n // 获取上传的图片数据\n if (embeddedImages) {\n for (const [id, url] of Object.entries(embeddedImages)) {\n idList.push({\n id,\n p: 0,\n type: 'upload',\n url,\n flag: `[uploadedimage:${id}]`,\n })\n }\n }\n\n // 获取引用的图片数据\n const reg = /\\[pixivimage:(.+?)\\]/g\n let test\n while ((test = reg.exec(content))) {\n if (test && test.length === 2) {\n // 99381250\n // 一个图像作品可能有多个被引用的图片,如\n // 99760571-1\n // 99760571-130\n const idInfo = test[1].split('-')\n idList.push({\n id: idInfo[0],\n p: idInfo[1] ? parseInt(idInfo[1]) : 0,\n type: 'pixiv',\n url: '',\n flag: `[pixivimage:${test[1]}]`,\n })\n }\n }\n\n // 引用的图片此时没有 URL\n // 统计引用的图像作品的 id (不重复),然后获取每个 id 的数据\n const artworkIDs: Set = new Set()\n idList.forEach((data) => {\n if (data.type === 'pixiv') {\n artworkIDs.add(data.id)\n }\n })\n\n for (const id of Array.from(artworkIDs)) {\n try {\n // 尝试获取原图作品数据,提取 URL\n const workData = await API.getArtworkData(id)\n const p0URL = workData.body.urls.original\n\n for (const idData of idList) {\n if (idData.id === id) {\n // 如果 p 为 0 则表示未指定图片序号,也就是第一张图片\n if (idData.p === 0) {\n idData.url = p0URL\n } else {\n // 如果指定了图片序号,则从第一张图片的 URL 生成指定图片的 URL\n idData.url = p0URL.replace('p0.', `p${idData.p - 1}.`)\n }\n }\n }\n } catch (error) {\n // 原图作品可能被删除了,404\n console.log(error)\n continue\n }\n }\n\n // 返回数据时,删除没有 url 的数据\n const result = idList.filter((data) => data.url !== '')\n return resolve(result)\n })\n }\n\n private async getImageBolbURL(idData: IDData): Promise {\n return new Promise(async (resolve) => {\n if (idData.url) {\n const res = await fetch(idData.url)\n const blob = await res.blob()\n idData.blobURL = URL.createObjectURL(blob)\n }\n resolve(idData)\n })\n }\n\n private async getImageDataURL(data: IDData): Promise {\n return new Promise(async (resolve) => {\n const img = await Utils.loadImg(data.blobURL!)\n const canvas = document.createElement('canvas')\n canvas.width = img.width\n canvas.height = img.height\n const con = canvas.getContext('2d')\n con!.drawImage(img, 0, 0, img.width, img.height)\n\n const suffix = Utils.getSuffix(data.url!)\n // 如果原图是 png 格式,就转换成 png 格式的数据,否则转换为 jpeg 格式\n if (suffix === 'png') {\n const ImgDataURL = canvas.toDataURL()\n return resolve(ImgDataURL)\n } else {\n const ImgDataURL = canvas.toDataURL('image/jpeg', 0.95)\n return resolve(ImgDataURL)\n }\n })\n }\n\n private sendDownload(url: string, name: string) {\n chrome.runtime.sendMessage({\n msg: 'save_novel_embedded_image',\n fileUrl: url,\n fileName: name,\n })\n }\n}\n\nconst downloadNovelEmbeddedImage = new DownloadNovelEmbeddedImage()\nexport { downloadNovelEmbeddedImage }\n","import { WorkTypeString } from '../store/StoreType'\nimport { EVT } from '../EVT'\nimport { settings } from '../setting/Settings'\nimport { states } from '../store/States'\nimport { toast } from '../Toast'\nimport { Colors } from '../Colors'\nimport { lang } from '../Lang'\nimport { workToolBar } from '../WorkToolBar'\nimport { pageType } from '../PageType'\nimport { Tools } from '../Tools'\nimport { artworkThumbnail } from '../ArtworkThumbnail'\nimport { novelThumbnail } from '../NovelThumbnail'\n\n// 点击作品的收藏按钮时,下载这个作品\nclass DownloadOnClickBookmark {\n constructor() {\n this.bindEvents()\n }\n\n public bindEvents() {\n // 在作品缩略图上点击收藏按钮时,下载这个作品\n artworkThumbnail.onClickBookmarkBtn((el: HTMLElement, id: string) => {\n if (!id) {\n id = Tools.findWorkIdFromElement(el, 'illusts')\n }\n this.send(id)\n })\n\n novelThumbnail.onClickBookmarkBtn((el: HTMLElement, id: string) => {\n if (!id || id === '0') {\n id = Tools.findWorkIdFromElement(el, 'novels')\n console.log(id)\n }\n this.send(id, 'novels')\n })\n\n // 在作品页面里点击收藏按钮时,下载这个作品\n workToolBar.register(\n (\n toolbar: HTMLDivElement,\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) => {\n pixivBMKDiv.addEventListener('click', () => {\n if (pageType.type === pageType.list.Artwork) {\n this.send(Tools.getIllustId(window.location.href))\n }\n\n if (pageType.type === pageType.list.Novel) {\n this.send(Tools.getNovelId(window.location.href), 'novels')\n }\n })\n }\n )\n }\n\n /**发送作品的 id 和类型,抓取并下载这个作品\n *\n * @type 默认值是 'illusts'\n */\n public send(id: string, type: WorkTypeString = 'illusts') {\n if (settings.downloadOnClickBookmark) {\n states.quickCrawl = true\n\n EVT.fire('crawlIdList', [\n {\n id,\n type,\n },\n ])\n\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n }\n}\n\nconst downloadOnClickBookmark = new DownloadOnClickBookmark()\nexport { downloadOnClickBookmark }\n","import { Colors } from '../Colors'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { pageType } from '../PageType'\nimport { settings } from '../setting/Settings'\nimport { states } from '../store/States'\nimport { WorkTypeString } from '../store/StoreType'\nimport { toast } from '../Toast'\nimport { Tools } from '../Tools'\nimport { workToolBar } from '../WorkToolBar'\n\n// 在作品页面里点赞时,下载这个作品\nclass DownloadOnClickLike {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n workToolBar.register(\n (\n toolbar: HTMLDivElement,\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) => {\n likeBtn.addEventListener('click', () => {\n if (pageType.type === pageType.list.Artwork) {\n this.send(Tools.getIllustId(window.location.href))\n }\n\n if (pageType.type === pageType.list.Novel) {\n this.send(Tools.getNovelId(window.location.href), 'novels')\n }\n })\n }\n )\n }\n\n /**发送作品的 id 和类型,抓取并下载这个作品\n *\n * @type 默认值是 'illusts'\n */\n private send(id: string, type: WorkTypeString = 'illusts') {\n if (settings.downloadOnClickLike) {\n states.quickCrawl = true\n\n EVT.fire('crawlIdList', [\n {\n id,\n type,\n },\n ])\n\n toast.show(lang.transl('_已发送下载请求'), {\n bgColor: Colors.bgBlue,\n })\n }\n }\n}\n\nnew DownloadOnClickLike()\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { log } from '../Log'\nimport { settings } from '../setting/Settings'\nimport { DonwloadSuccessData } from './DownloadType'\nimport { IndexedDB } from '../utils/IndexedDB'\nimport { store } from '../store/Store'\nimport { fileName } from '../FileName'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { secretSignal } from '../utils/SecretSignal'\nimport { Result } from '../store/StoreType'\n\ninterface Record {\n id: string\n n: string\n /**文件 URL 里的作品的日期。可能为 undefined,因为旧版本没有这个数据,小说也没有这个数据 */\n d?: string\n}\n\n// 保存下载记录,用来判断重复下载的文件\nclass DownloadRecord {\n constructor() {\n this.IDB = new IndexedDB()\n this.init()\n }\n\n private IDB: IndexedDB\n private readonly DBName = 'DLRecord'\n private readonly DBVer = 1\n private readonly storeNameList: string[] = [\n 'record1',\n 'record2',\n 'record3',\n 'record4',\n 'record5',\n 'record6',\n 'record7',\n 'record8',\n 'record9',\n ] // 表名的列表\n\n private existedIdList: string[] = [] // 检查文件是否重复时,会查询数据库。查询到的数据的 id 会保存到这个列表里。当向数据库添加记录时,可以先查询这个列表,如果已经有过记录就改为 put 而不是 add,因为添加主键重复的数据会报错\n\n // 从图片 url 里取出日期字符串的正则表达式\n private readonly dateRegExp = /img\\/(.*)\\//\n\n private async init() {\n await this.initDB()\n this.bindEvents()\n }\n\n // 初始化数据库,获取数据库对象\n private async initDB() {\n // 在升级事件里创建表和索引\n const onUpdate = (db: IDBDatabase) => {\n for (const name of this.storeNameList) {\n if (!db.objectStoreNames.contains(name)) {\n const store = db.createObjectStore(name, { keyPath: 'id' })\n store.createIndex('id', 'id', { unique: true })\n }\n }\n }\n\n return new Promise(async (resolve, reject) => {\n resolve(await this.IDB.open(this.DBName, this.DBVer, onUpdate))\n })\n }\n\n private bindEvents() {\n // 当有文件下载完成时,存储这个任务的记录\n window.addEventListener(EVT.list.downloadSuccess, (ev: CustomEventInit) => {\n const successData = ev.detail.data as DonwloadSuccessData\n const result = store.findResult(successData.id)\n result && this.addRecord(result)\n })\n\n // 导入含有 id 列表的 txt 文件\n secretSignal.register('recordtxt', () => {\n this.importRecordFromTxt()\n })\n\n // 导入下载记录的按钮\n {\n const btn = document.querySelector('#importDownloadRecord')\n if (btn) {\n btn.addEventListener('click', () => {\n EVT.fire('importDownloadRecord')\n })\n }\n }\n\n // 监听导入下载记录的事件\n window.addEventListener(EVT.list.importDownloadRecord, () => {\n this.importRecordFromJSON()\n })\n\n // 导出下载记录的按钮\n {\n const btn = document.querySelector('#exportDownloadRecord')\n if (btn) {\n btn.addEventListener('click', () => {\n EVT.fire('exportDownloadRecord')\n })\n }\n }\n\n // 监听导出下载记录的事件\n window.addEventListener(EVT.list.exportDownloadRecord, () => {\n this.exportRecord()\n })\n\n // 清空下载记录的按钮\n {\n const btn = document.querySelector('#clearDownloadRecord')\n if (btn) {\n btn.addEventListener('click', () => {\n EVT.fire('clearDownloadRecord')\n })\n }\n }\n\n // 监听清空下载记录的事件\n window.addEventListener(EVT.list.clearDownloadRecord, () => {\n this.clearRecords()\n this.existedIdList = []\n })\n }\n\n // 当要查找或存储一个 id 时,返回它所对应的 storeName\n private getStoreName(id: string) {\n const firstNum = parseInt(id[0])\n return this.storeNameList[firstNum - 1]\n }\n\n // 生成一个下载记录\n private createRecord(data: Result | string): Record {\n let result: Result | undefined = undefined\n if (typeof data === 'string') {\n result = store.findResult(data)\n } else {\n result = data\n }\n if (result === undefined) {\n throw new Error('createRecord failed')\n }\n\n return {\n id: result.id,\n n: fileName.createFileName(result),\n d: this.getDateString(result),\n }\n }\n\n /**返回作品的修改日期字符串 */\n private getDateString(result: Result) {\n // 图像作品不使用 uploadDate,这是历史遗留原因,因为以前下载器的内部数据里没有 uploadDate 数据\n // 而是从文件 URL 里取出日期字符串。例如\n // 'https://i.pximg.net/img-original/img/2021/10/11/00/00/06/93364702_p0.png'\n // 返回\n // '2021/10/11/00/00/06'\n // 为了保持向后兼容,这里不做修改\n if (result.type !== 3) {\n return result.original.match(this.dateRegExp)![1]\n } else {\n // 小说作品使用 uploadDate,返回值如\n // '2021-09-03T14:31:03+00:00'\n return result.uploadDate\n }\n }\n\n // 添加一条下载记录\n private async addRecord(result: Result) {\n const storeName = this.getStoreName(result.id)\n const record = this.createRecord(result)\n\n if (this.existedIdList.includes(result.id)) {\n this.IDB.put(storeName, record)\n } else {\n // 先查询有没有这个记录\n const result = await this.IDB.get(storeName, record.id)\n this.IDB[result ? 'put' : 'add'](storeName, record)\n }\n }\n\n /** 检查一个作品是否是重复下载\n *\n * 返回值 true 表示重复,false 表示不重复\n */\n public async checkDeduplication(result: Result) {\n if (!Utils.isPixiv()) {\n return false\n }\n\n return new Promise(async (resolve, reject) => {\n // 如果未启用去重,直接返回不重复\n if (!settings.deduplication) {\n return resolve(false)\n }\n // 在数据库进行查找\n const storeName = this.getStoreName(result.id)\n const data = (await this.IDB.get(storeName, result.id)) as Record | null\n if (data === null) {\n return resolve(false)\n }\n\n // 有记录,说明这个文件下载过\n this.existedIdList.push(data.id)\n\n // 首先检查日期字符串是否发生了变化\n // 如果日期字符串变化了,则不视为重复文件\n if (data.d !== undefined && data.d !== this.getDateString(result)) {\n return resolve(false)\n }\n // 如果之前的下载记录里没有日期,说明是早期的下载记录,那么就不检查日期\n // 同时,更新这个作品的下载记录,为其添加日期\n if (data.d === undefined) {\n this.addRecord(result)\n }\n // 如果日期字符串没有变化,再根据策略进行判断\n if (settings.dupliStrategy === 'loose') {\n // 如果是宽松策略(不比较文件名)\n return resolve(true)\n } else {\n // 如果是严格策略(考虑文件名)\n const name = fileName.createFileName(result)\n return resolve(name === data.n)\n }\n })\n }\n\n // 清空下载记录\n private async clearRecords() {\n if (window.confirm(lang.transl('确定要清除下载记录吗')) === false) {\n return\n }\n\n log.log(lang.transl('_清除下载记录'))\n toast.show(lang.transl('_清除下载记录'))\n\n let total = this.storeNameList.length\n let num = 0\n\n for (const name of this.storeNameList) {\n log.log(`${lang.transl('_任务进度')} ${num}/${total}`)\n num++\n await this.IDB.clear(name)\n }\n log.log(`${lang.transl('_任务进度')} ${num}/${total}`)\n\n log.success(lang.transl('_下载记录已清除'))\n toast.success(lang.transl('_下载记录已清除'))\n }\n\n // 导出下载记录\n private async exportRecord() {\n log.log(lang.transl('_导出下载记录'))\n toast.show(lang.transl('_导出下载记录'))\n\n let total = this.storeNameList.length\n let num = 0\n\n let record: Record[] = []\n for (const name of this.storeNameList) {\n log.log(`${lang.transl('_任务进度')} ${num}/${total}`)\n num++\n const r = (await this.IDB.getAll(name)) as Record[]\n record = record.concat(r)\n }\n log.log(`${lang.transl('_任务进度')} ${num}/${total}`)\n\n if (record.length === 0) {\n log.error(lang.transl('_没有数据可供使用'))\n toast.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n const resultList = await Utils.json2BlobSafe(record)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `record-total ${result.total}-${Utils.replaceUnsafeStr(\n new Date().toLocaleString()\n )}.json`\n )\n }\n\n const msg = lang.transl('_导出成功')\n log.success(msg)\n toast.success(msg)\n }\n\n // 导入下载记录\n private async importRecord(record: Record[]) {\n log.log(lang.transl('_导入下载记录'))\n\n // 显示导入进度\n let stored = 0\n let total = record.length\n\n if (total > 10000) {\n log.warning(lang.transl('_数据较多需要花费一些时间'))\n }\n\n log.log(`${stored}/${total}`, 1, false)\n\n console.time('importRecord')\n // 依次处理每个存储库\n for (let index = 0; index < this.storeNameList.length; index++) {\n // 提取出要存入这个存储库的数据\n const data: Record[] = []\n for (const r of record) {\n if (parseInt(r.id[0]) - 1 === index) {\n data.push(r)\n }\n }\n\n if (data.length === 0) {\n continue\n }\n\n // 添加数据\n log.log(`${lang.transl('_待处理')} ${data.length}`)\n try {\n // console.time('restoreRecord' + (index + 1))\n await this.IDB.batchAddData(this.storeNameList[index], data, 'id')\n // console.timeEnd('restoreRecord' + (index + 1))\n\n stored += data.length\n log.log(`${stored}/${total}`, 1, false)\n } catch (error) {\n const errorMsg = (error as any)?.target?.error\n const tip = errorMsg ? errorMsg : error\n log.error(tip)\n msgBox.error(tip)\n }\n }\n console.timeEnd('importRecord')\n\n if (stored < total) {\n return\n }\n\n log.success(lang.transl('_导入成功'))\n toast.success(lang.transl('_导入成功'))\n\n msgBox.success(lang.transl('_导入成功'), {\n title: lang.transl('_导入下载记录'),\n })\n\n // 时间参考:导入 100000 条下载记录,花费的时间在 30 秒以内。但偶尔会有例外,中途像卡住了一样,很久没动,最后花了两分钟多的时间。\n }\n\n // 从 json 文件导入\n private async importRecordFromJSON() {\n const record = (await Utils.loadJSONFile().catch((err) => {\n msgBox.error(err)\n return\n })) as Record[]\n\n if (!record) {\n return\n }\n\n // 判断格式是否符合要求\n if (\n Array.isArray(record) === false ||\n record[0].id === undefined ||\n record[0].n === undefined\n ) {\n return msgBox.error(lang.transl('_格式错误'))\n }\n\n this.importRecord(record)\n }\n\n // 从 txt 文件导入\n // 每行一个文件 id(带序号),以换行分割\n private async importRecordFromTxt() {\n const file = (await Utils.selectFile('.txt'))[0]\n const text = await file.text()\n\n // 以换行分割\n let split = '\\r\\n'\n if (!text.includes(split)) {\n split = '\\n'\n }\n const arr = text.split(split)\n\n // 把每一行视为一个 id,进行导入\n const record: Record[] = []\n for (const str of arr) {\n if (str) {\n record.push({\n id: str,\n n: str,\n })\n }\n }\n this.importRecord(record)\n }\n}\n\nconst downloadRecord = new DownloadRecord()\nexport { downloadRecord }\n","import { EVT } from '../EVT'\nimport { store } from '../store/Store'\n\n// 每个任务会在数组中的对应位置用一个数字表示它的下载状态。数字和含义:\n// -1 未开始下载\n// 0 下载中\n// 1 下载完成\ntype DLStatesI = (-1 | 0 | 1)[]\n\n// 下载状态列表\nclass DownloadStates {\n constructor() {\n this.bindEvents()\n }\n\n public states: DLStatesI = []\n\n private bindEvents() {\n // 初始化下载状态\n const evs = [EVT.list.crawlComplete, EVT.list.resultChange]\n for (const ev of evs) {\n window.addEventListener(ev, () => {\n this.init()\n })\n }\n }\n\n // 创建新的状态列表\n public init() {\n this.states = new Array(store.result.length).fill(-1)\n }\n\n // 统计下载完成的数量\n public downloadedCount() {\n let count = 0\n const length = this.states.length\n for (let i = 0; i < length; i++) {\n if (this.states[i] === 1) {\n count++\n }\n }\n return count\n }\n\n // 接受传入的状态数据\n // 目前只有在恢复下载的时候使用\n public replace(states: DLStatesI) {\n this.states = states\n }\n\n // 恢复之前的下载任务\n // 这会把之前的“下载中”标记复位到“未开始下载”,以便再次下载\n public resume() {\n const length = this.states.length\n for (let i = 0; i < length; i++) {\n if (this.states[i] === 0) {\n this.setState(i, -1)\n }\n }\n }\n\n // 获取第一个“未开始下载”标记的索引\n public getFirstDownloadItem() {\n const length = this.states.length\n for (let i = 0; i < length; i++) {\n if (this.states[i] === -1) {\n this.setState(i, 0)\n return i\n }\n }\n return undefined\n }\n\n // 设置已下载列表中的标记\n public setState(index: number, value: -1 | 0 | 1) {\n this.states[index] = value\n }\n\n public clear() {\n this.states = []\n }\n}\n\nconst downloadStates = new DownloadStates()\nexport { downloadStates, DLStatesI }\n","import { Tools } from '../Tools'\nimport { store } from '../store/Store'\nimport { fileName } from '../FileName'\nimport { lang } from '../Lang'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\n// 输出 lst 文件\nclass ExportLST {\n constructor() {\n this.bindEvents()\n }\n\n private readonly separate = '?/' // 分隔符\n private readonly CRLF = '\\r\\n' // 换行符\n\n private bindEvents() {\n window.addEventListener(\n 'keydown',\n (ev) => {\n if (ev.altKey && ev.code === 'KeyL') {\n this.createLst()\n }\n },\n false\n )\n }\n\n private createLst() {\n if (store.result.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n const array: string[] = []\n for (const data of store.result) {\n array.push(data.original + this.separate + fileName.createFileName(data))\n }\n\n const result = array.join(this.CRLF)\n const blob = new Blob([result])\n const url = URL.createObjectURL(blob)\n const name = Tools.getPageTitle() + '.lst'\n\n Utils.downloadFile(url, name)\n }\n}\n\nnew ExportLST()\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { store } from '../store/Store'\nimport { lang } from '../Lang'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\nimport { log } from '../Log'\n\nclass ExportResult {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.exportResult, () => {\n this.output()\n })\n }\n\n private async output() {\n if (store.result.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n const resultList = await Utils.json2BlobSafe(store.result)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `result-total ${result.total}-${Utils.replaceUnsafeStr(\n Tools.getPageTitle()\n )}-${Utils.replaceUnsafeStr(\n store.crawlCompleteTime.toLocaleString()\n )}.json`\n )\n }\n\n const msg = lang.transl('_导出成功')\n log.success(msg)\n toast.success(msg)\n }\n}\n\nnew ExportResult()\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { Config } from '../Config'\nimport { store } from '../store/Store'\nimport { Result } from '../store/StoreType'\nimport { fileName } from '../FileName'\nimport { createCSV } from '../utils/CreateCSV'\nimport { toast } from '../Toast'\nimport { Utils } from '../utils/Utils'\nimport { showHelp } from '../ShowHelp'\n\n// 定义字段信息\ninterface Field {\n name: string\n index: keyof Result\n}\n// name 这个字段在 csv 里的标题\n// index 这个字段在数据里的索引名\n\n// 导出抓取结果为 csv 文件\nclass ExportResult2CSV {\n constructor() {\n window.addEventListener(EVT.list.exportCSV, () => {\n this.beforeCreate()\n })\n }\n\n // 定义要保存的字段\n private readonly fieldCfg: Field[] = [\n {\n name: 'id',\n index: 'idNum',\n },\n {\n name: 'tags',\n index: 'tags',\n },\n {\n name: 'tags_transl',\n index: 'tagsTranslOnly',\n },\n {\n name: 'user',\n index: 'user',\n },\n {\n name: 'userId',\n index: 'userId',\n },\n {\n name: 'title',\n index: 'title',\n },\n {\n name: 'description',\n index: 'description',\n },\n {\n name: 'type',\n index: 'type',\n },\n {\n name: 'page',\n index: 'pageCount',\n },\n {\n name: 'bookmark',\n index: 'bmk',\n },\n {\n name: 'bookmarked',\n index: 'bookmarked',\n },\n {\n name: 'likeCount',\n index: 'likeCount',\n },\n {\n name: 'viewCount',\n index: 'viewCount',\n },\n {\n name: 'commentCount',\n index: 'commentCount',\n },\n {\n name: 'width',\n index: 'fullWidth',\n },\n {\n name: 'height',\n index: 'fullHeight',\n },\n {\n name: 'xRestrict',\n index: 'xRestrict',\n },\n {\n name: 'AI',\n index: 'aiType',\n },\n {\n name: 'date',\n index: 'date',\n },\n {\n name: 'original',\n index: 'original',\n },\n {\n name: 'thumb',\n index: 'thumb',\n },\n // fileName 字段的 index 属性可以随便写,因为没有影响。\n {\n name: 'fileName',\n index: 'title',\n },\n ]\n\n private beforeCreate() {\n // 如果没有数据则不执行\n if (store.result.length === 0) {\n toast.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n // 使用 result 而不使用 resultMeta。主要是因为断点续传时只会恢复 result,不会恢复 resultMeta,所以 result 最可靠。考虑如下情况:\n // 1:刷新页面后,断点续传恢复了保存的数据,此时只有 result 里有数据,resultMeta 没有数据。\n // 2: 如果在页面 A 进行了下载,resultMeta 保存的是页面 A 的数据。此时进入页面 B,恢复了 B 页面保存的任务,此时 resultMeta 里还是页面 A 的数据。\n // 所以还是使用 result 比较可靠,不易出问题。\n this.create(store.result)\n }\n\n private create(data: Result[]) {\n const body: any[][] = [] // 内容数组\n\n // 标题数组\n const head: string[] = []\n for (const field of this.fieldCfg) {\n head.push(field.name)\n }\n body.push(head)\n\n // 循环每个作品的数据\n for (const d of data) {\n // 每个作品只导出一条记录\n // 如果是多图作品里第一张图之后的图片数据,则跳过\n const index = d.index ?? Tools.getResultIndex(d)\n if (index > 0) {\n continue\n }\n\n const bodyItem: any[] = [] // 储存这个作品生成的所有字段\n // 生成每个字段的结果\n for (const field of this.fieldCfg) {\n if (field.name === 'fileName') {\n bodyItem.push(fileName.createFileName(d))\n } else {\n let result = d[field.index] ?? ''\n\n // 对于某些字段,将其内容特殊化处理\n if (field.name === 'type') {\n result = Config.worksTypeName[result as number]\n }\n\n if (field.name === 'bookmarked') {\n result = (result as boolean) ? 'Yes' : 'No'\n }\n\n if (field.name === 'xRestrict') {\n result = Tools.getXRestrictText(result as number) || ''\n }\n\n if (field.name === 'AI') {\n result = Tools.getAITypeText(d.aiType || 0)\n }\n\n bodyItem.push(result)\n }\n }\n // 把这个作品的数据添加到内容数组里\n body.push(bodyItem)\n }\n\n const csv = createCSV.create(body)\n const csvURL = URL.createObjectURL(csv)\n\n // 设置文件名\n let csvName = `result-total ${body.length - 1}-${Utils.replaceUnsafeStr(\n Tools.getPageTitle()\n )}-${Utils.replaceUnsafeStr(store.crawlCompleteTime.toLocaleString())}.csv`\n\n Utils.downloadFile(csvURL, csvName)\n\n toast.success(lang.transl('_导出成功'))\n\n showHelp.show('tipCSV', lang.transl('_导出CSV文件的提示'))\n }\n}\n\nnew ExportResult2CSV()\n","import { EVT } from '../EVT'\nimport { Result } from '../store/StoreType'\nimport { lang } from '../Lang'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\nimport { store } from '../store/Store'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { filter } from '../filter/Filter'\n\nclass ImportResult {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.importResult, () => {\n if (states.busy) {\n toast.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n this.import()\n })\n }\n\n private async import() {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as Result[]\n if (!loadedJSON) {\n return\n }\n\n // 要求是数组并且要有内容\n if (!Array.isArray(loadedJSON) || !loadedJSON.length || !loadedJSON[0]) {\n return toast.error(lang.transl('_格式错误'))\n }\n\n // 检查是否含有必须的字段(只检查了一部分)\n const keys = Object.keys(loadedJSON[0])\n const need = ['idNum', 'id', 'original', 'type', 'ext']\n for (const field of need) {\n if (!keys.includes(field)) {\n return toast.error(lang.transl('_格式错误'))\n }\n }\n\n // 根据过滤选项,过滤导入的结果\n const temp: Result[] = []\n for (const result of loadedJSON) {\n const check = await filter.check({\n aiType: result.aiType,\n id: result.idNum,\n workType: result.type,\n pageCount: result.pageCount,\n tags: result.tagsWithTransl,\n bookmarkCount: result.bmk,\n bookmarkData: result.bookmarked,\n width: result.pageCount === 1 ? result.fullWidth : 0,\n height: result.pageCount === 1 ? result.fullHeight : 0,\n createDate: result.date,\n userId: result.userId,\n xRestrict: result.xRestrict,\n })\n if (check) {\n temp.push(result)\n }\n }\n\n // 如果没有符合过滤条件的结果\n if (temp.length === 0) {\n msgBox.warning(lang.transl('_没有符合条件的结果'))\n return\n }\n\n // 恢复数据\n // 通过 store.addResult 添加数据,可以应用多图作品设置,对导入的结果进行调整\n store.reset()\n for (const r of temp) {\n store.addResult(r)\n }\n\n // 发送通知\n EVT.fire('crawlComplete')\n\n msgBox.success(lang.transl('_导入成功'))\n }\n}\n\nnew ImportResult()\n","import { NovelMeta } from '../store/StoreType'\nimport { settings } from '../setting/Settings'\nimport { Tools } from '../Tools'\nimport { Utils } from '../utils/Utils'\nimport { downloadNovelEmbeddedImage } from './DownloadNovelEmbeddedImage'\n\ndeclare const EpubMaker: any\n\nclass MakeNovelFile {\n static async make(data: NovelMeta, type = settings.novelSaveAs) {\n if (type === 'txt') {\n return this.makeTXT(data, settings.saveNovelMeta)\n }\n return this.makeEPUB(data, settings.saveNovelMeta)\n }\n\n static makeTXT(data: NovelMeta, saveMeta = true) {\n let content = saveMeta ? data.meta + data.content : data.content\n\n // 替换换行标签,移除 html 标签\n content = content.replace(/
        /g, '\\n').replace(/<\\/?.+?>/g, '')\n\n return new Blob([content], {\n type: 'text/plain',\n })\n }\n\n static makeEPUB(data: NovelMeta, saveMeta = true): Promise {\n return new Promise(async (resolve, reject) => {\n let content = saveMeta ? data.meta + data.content : data.content\n\n content = Tools.replaceEPUBText(content)\n\n // 添加小说里内嵌的图片。这部分必须放在 replaceEPUBText 后面,否则 标签的左尖括号会被转义\n content = await downloadNovelEmbeddedImage.EPUB(\n content,\n data.embeddedImages\n )\n\n // epub 内部会使用标题 title 建立一个文件夹,把一些文件存放进去,所以要替换掉标题的特殊字符。特殊字符会导致这个文件夹名被截断,结果就是这个 epub 文件无法被解析。\n const userName = Tools.replaceEPUBText(\n Utils.replaceUnsafeStr(data.userName)\n )\n const title = Tools.replaceEPUBText(Utils.replaceUnsafeStr(data.title))\n new EpubMaker()\n .withTemplate('idpf-wasteland')\n .withAuthor(userName)\n .withModificationDate(new Date(data.createDate))\n .withRights({\n description: Tools.replaceEPUBText(data.description),\n license: '',\n })\n .withAttributionUrl(\n `https://www.pixiv.net/novel/show.php?id=${data.id}`\n )\n .withCover(data.coverUrl, {\n license: '',\n attributionUrl: '',\n })\n .withTitle(title)\n .withSection(\n new EpubMaker.Section(\n 'chapter',\n null,\n {\n title: title,\n content: content,\n },\n true,\n true\n )\n )\n .makeEpub()\n .then((blob: Blob) => {\n resolve(blob)\n })\n })\n }\n}\n\nexport { MakeNovelFile }\n","import { store } from '../store/Store'\nimport { Result } from '../store/StoreType'\nimport { EVT } from '../EVT'\nimport { Utils } from '../utils/Utils'\nimport { states } from '../store/States'\nimport { settings } from '../setting/Settings'\nimport { lang } from '../Lang'\nimport { Tools } from '../Tools'\nimport { downloadNovelCover } from '../download/DownloadNovelCover'\nimport { downloadNovelEmbeddedImage } from './DownloadNovelEmbeddedImage'\n\n// 单个小说的数据\ninterface NovelData {\n /**小说在系列中的排序,是从 1 开始的数字 */\n no: number\n title: string\n content: string\n embeddedImages: null | {\n [key: string]: string\n }\n}\n\n// https://github.com/bbottema/js-epub-maker\ndeclare const EpubMaker: any\n\nclass MergeNovel {\n constructor() {\n this.init()\n }\n\n private readonly CRLF = '\\n' // pixiv 小说的换行符\n\n /**在文件开头添加的元数据 */\n private meta = ''\n\n private init() {\n window.addEventListener(EVT.list.crawlComplete, () => {\n window.setTimeout(() => {\n if (states.mergeNovel) {\n this.merge()\n }\n }, 0)\n })\n }\n\n private async merge() {\n if (\n store.resultMeta.length === 0 ||\n store.resultMeta[0].novelMeta === null\n ) {\n states.mergeNovel = false\n return\n }\n\n // 因为结果里的小说顺序可能是乱的,所以需要按照小说的序号对结果进行排序\n const allResult = store.resultMeta.sort(\n Utils.sortByProperty('seriesOrder', 'asc')\n )\n\n const firstResult = store.resultMeta[0]\n\n // 汇总小说数据\n const allNovelData: NovelData[] = []\n for (const result of allResult) {\n allNovelData.push({\n no: result.seriesOrder!,\n title: Utils.replaceUnsafeStr(result.title),\n content: result.novelMeta!.content,\n embeddedImages: result.novelMeta!.embeddedImages,\n })\n }\n\n // 生成 meta 文本\n this.meta = ''\n if (settings.saveNovelMeta) {\n const metaArray: string[] = []\n // 系列标题\n metaArray.push(firstResult.seriesTitle!)\n // 作者\n metaArray.push(firstResult.user)\n // 网址链接\n const link = `https://www.pixiv.net/novel/series/${firstResult.seriesId}`\n metaArray.push(link + this.CRLF.repeat(2))\n // 设定资料\n if (store.novelSeriesGlossary) {\n metaArray.push(store.novelSeriesGlossary)\n }\n\n this.meta = metaArray.join(this.CRLF.repeat(2))\n }\n\n // 生成小说文件并下载\n let file: Blob | null = null\n const novelName = `${firstResult.seriesTitle}-tags_${firstResult.tags}-user_${firstResult.user}-seriesId_${firstResult.seriesId}.${settings.novelSaveAs}`\n if (settings.novelSaveAs === 'txt') {\n file = await this.makeTXT(allNovelData)\n // 保存为 txt 格式时,在这里下载小说内嵌的图片\n for (const result of allResult) {\n await downloadNovelEmbeddedImage.TXT(\n result.novelMeta!.content,\n result.novelMeta!.embeddedImages,\n novelName,\n 'mergeNovel'\n )\n }\n } else {\n file = await this.makeEPUB(allNovelData, firstResult)\n }\n\n const url = URL.createObjectURL(file)\n Utils.downloadFile(url, Utils.replaceUnsafeStr(novelName))\n\n states.mergeNovel = false\n EVT.fire('downloadComplete')\n\n // 保存第一个小说的封面图片\n // 实际上系列的封面不一定是第一个小说的封面,这里用第一个小说的封面凑合一下\n if (firstResult.novelMeta?.coverUrl) {\n downloadNovelCover.download(\n firstResult.novelMeta.coverUrl,\n novelName,\n 'mergeNovel'\n )\n }\n\n store.reset()\n }\n\n private async makeTXT(novelDataArray: NovelData[]): Promise {\n return new Promise(async (resolve, reject) => {\n const result: string[] = []\n if (settings.saveNovelMeta) {\n result.push(this.meta)\n }\n\n for (const data of novelDataArray) {\n // 添加章节名\n result.push(`${this.chapterNo(data.no)} ${data.title}`)\n // 在章节名与正文之间添加换行\n result.push(this.CRLF.repeat(2))\n // 添加正文\n // 替换换行标签,移除 html 标签\n result.push(\n data.content.replace(/
        /g, this.CRLF).replace(/<\\/?.+?>/g, '')\n )\n // 在正文结尾添加换行标记,使得不同章节之间区分开来\n result.push(this.CRLF.repeat(4))\n }\n\n const blob = new Blob(result, {\n type: 'text/plain',\n })\n return resolve(blob)\n })\n }\n\n private makeEPUB(\n novelDataArray: NovelData[],\n firstResult: Result\n ): Promise {\n return new Promise(async (resolve, reject) => {\n // 添加一些元数据\n let epubData = new EpubMaker()\n .withTemplate('idpf-wasteland')\n .withAuthor(Utils.replaceUnsafeStr(firstResult.novelMeta!.userName))\n .withModificationDate(new Date(firstResult.novelMeta!.createDate))\n .withRights({\n description: firstResult.novelMeta!.description,\n license: '',\n })\n .withAttributionUrl(\n `https://www.pixiv.net/novel/show.php?id=${firstResult.novelMeta!.id}`\n )\n .withCover(firstResult.novelMeta!.coverUrl, {\n license: '',\n attributionUrl: '',\n })\n .withTitle(Utils.replaceUnsafeStr(firstResult.seriesTitle!))\n\n // 下面注释的伪代码是用于创建二级目录用的。目前 pixiv 的小说只需要一层目录就够了,所以这里的代码未被使用\n // const Section = new EpubMaker.Section(...........)\n // for (const data of novelDataArray) {\n // Section.withSubSection(\n // new EpubMaker.Section(...........)\n // )\n // }\n // epubData = epubData.withSection(Section)\n\n if (settings.saveNovelMeta) {\n epubData.withSection(\n new EpubMaker.Section(\n 'chapter',\n 0,\n {\n title: lang.transl('_设定资料'),\n content: Tools.replaceEPUBText(this.meta),\n },\n true,\n true\n )\n )\n }\n\n // 为每一篇小说创建一个章节\n for (const data of novelDataArray) {\n let content = Tools.replaceEPUBText(data.content)\n\n // 添加小说里内嵌的图片。这部分必须放在 replaceEPUBText 后面,否则 标签的左尖括号会被转义\n content = await downloadNovelEmbeddedImage.EPUB(\n content,\n data.embeddedImages\n )\n\n // 创建 epub 文件时不需要在标题和正文后面添加换行符\n epubData.withSection(\n new EpubMaker.Section(\n 'chapter',\n data.no,\n {\n title: `${this.chapterNo(data.no)} ${data.title}`,\n content: content,\n },\n true,\n true\n )\n // 倒数第二个参数是 includeInToc,必须为 true,否则某些小说阅读软件无法读取章节信息\n // includeInToc 的作用是在 .ncx 文件和 nav.xhtml 文件里添加导航信息\n )\n }\n\n epubData.makeEpub().then((blob: Blob) => {\n resolve(blob)\n })\n })\n }\n\n // 在每个小说的开头加上章节编号\n // 在 TXT 格式的小说里添加章节编号,可以使小说阅读软件能够识别章节,以及显示章节导航,提高阅读体验\n // 对于 EPUB 格式的小说,由于其内部自带分章结构,所以并不依赖这里的章节编号\n private chapterNo(number: number | string) {\n // 如果是中文用户,返回“第N章”。这样最容易被国内的小说阅读软件识别出来\n if (lang.type === 'zh-cn' || lang.type === 'zh-tw' || lang.type === 'ja') {\n return `第${number}章`\n } else {\n // 对于其他地区,返回 `Chapter N`。但是由于我没有使用过国外的小说阅读软件,所以并不清楚是否能够起到分章作用\n return `Chapter ${number}`\n }\n // 我还尝试过使用 #1 这样的编号,但是这种方式并不可靠,有的小说可以分章有的小说不可以\n }\n}\n\nnew MergeNovel()\n","// 下载进度条\nimport { store } from '../store/Store'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { EVT } from '../EVT'\n\ninterface ProgressBarEl {\n name: HTMLSpanElement\n loaded: HTMLSpanElement\n progress: HTMLDivElement\n}\n\ninterface ProgressData {\n name: string\n loaded: number\n total: number\n}\n\n// 进度条\nclass ProgressBar {\n constructor() {\n this.createElements()\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private readonly wrapHTML = `\n
        \n
        \n \n
        \n
        \n
        \n
        \n
        \n 0\n /\n 0\n
        \n
        \n
        \n\n
          \n
          \n `\n\n private readonly barHTML = `
        • \n
          \n
          \n
          \n
          \n \n \n \n \n
          \n
        • `\n\n private wrap!: HTMLDivElement\n private downloadedEl!: HTMLSpanElement\n private progressColorEl!: HTMLDivElement\n private listWrap!: HTMLUListElement\n private totalNumberEl!: HTMLSpanElement\n private allProgressBar: ProgressBarEl[] = []\n\n private readonly KB = 1024\n private readonly MB = 1024 * 1024\n\n private createElements() {\n this.wrap = Tools.useSlot('progressBar', this.wrapHTML) as HTMLDivElement\n this.downloadedEl = this.wrap.querySelector(\n '.downloaded'\n ) as HTMLSpanElement\n this.progressColorEl = this.wrap.querySelector(\n '.progress1'\n ) as HTMLDivElement\n this.listWrap = this.wrap.querySelector(\n '.progressBarList'\n ) as HTMLUListElement\n this.totalNumberEl = this.wrap.querySelector(\n '.totalNumber'\n ) as HTMLSpanElement\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.hide()\n })\n }\n\n // 重设所有进度\n public reset(progressBarNum: number, downloaded: number = 0) {\n if (progressBarNum === 0) {\n // 如果进度条数量为 0(抓取结果为空),则隐藏进度条区域\n return this.hide()\n }\n\n // 重置总进度条\n this.setTotalProgress(downloaded)\n this.totalNumberEl.textContent = store.result.length.toString()\n // 重置子进度条\n this.listWrap.innerHTML = this.barHTML.repeat(progressBarNum)\n\n this.show()\n\n // 保存子进度条上需要使用到的元素\n const allProgressBar = this.listWrap.querySelectorAll('.downloadBar')\n this.allProgressBar = []\n for (const bar of allProgressBar) {\n const data: ProgressBarEl = {\n name: bar.querySelector('.fileName')! as HTMLSpanElement,\n loaded: bar.querySelector('.loaded')! as HTMLSpanElement,\n progress: bar.querySelector('.progress')! as HTMLDivElement,\n }\n\n this.allProgressBar.push(data)\n }\n }\n\n // 设置总进度条的进度\n public setTotalProgress(downloaded: number) {\n this.downloadedEl.textContent = downloaded.toString()\n\n const progress = (downloaded / store.result.length) * 100\n this.progressColorEl.style.width = progress + '%'\n }\n\n // 设置子进度条的进度\n public setProgress(index: number, data: ProgressData) {\n const bar = this.allProgressBar[index]\n if (!bar) {\n console.error(index, this.allProgressBar)\n return\n }\n bar.name.textContent = data.name\n bar.name.setAttribute('title', data.name)\n\n let text = ''\n if (data.total >= this.MB) {\n // 如果判断条件加上: || data.total === 0\n // 则文件未下载时显示的默认单位会是 MiB\n // 使用 MiB 作为单位\n text = `${(data.loaded / this.MB).toFixed(1)}/${(\n data.total / this.MB\n ).toFixed(1)} MiB`\n } else {\n // 使用 KiB 作为单位\n text = `${Math.floor(data.loaded / this.KB)}/${Math.floor(\n data.total / this.KB\n )} KiB`\n }\n\n bar.loaded.textContent = text\n\n const progress = data.loaded / data.total || 0 // 若结果为 NaN 则设为 0\n bar.progress.style.width = progress * 100 + '%'\n }\n\n // 让某个子进度条显示警告色\n public errorColor(index: number, show: boolean) {\n const bar = this.allProgressBar[index]\n if (!bar) {\n console.error(index, this.allProgressBar)\n return\n }\n bar.name.classList[show ? 'add' : 'remove']('downloadError')\n }\n\n private show() {\n this.wrap.style.display = 'block'\n }\n\n private hide() {\n this.wrap.style.display = 'none'\n }\n}\n\nconst progressBar = new ProgressBar()\nexport { progressBar }\n","import { EVT } from '../EVT'\nimport { log } from '../Log'\nimport { lang } from '../Lang'\nimport { store } from '../store/Store'\nimport { states } from '../store/States'\nimport { downloadStates, DLStatesI } from './DownloadStates'\nimport { Result } from '../store/StoreType'\nimport { IndexedDB } from '../utils/IndexedDB'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\ninterface TaskMeta {\n id: number\n url: string\n URLWhenCrawlStart: string\n part: number\n date: Date\n}\n\ninterface TaskData {\n id: number\n data: Result[]\n}\n\ninterface TaskStates {\n id: number\n states: DLStatesI\n}\n\n// 断点续传。恢复未完成的下载\nclass Resume {\n constructor() {\n this.IDB = new IndexedDB()\n this.init()\n }\n\n private IDB: IndexedDB\n private readonly DBName = 'PBD'\n private readonly DBVer = 3\n private metaName = 'taskMeta' // 下载任务元数据的表名\n private dataName = 'taskData' // 下载任务数据的表名\n private statesName = 'taskStates' // 下载状态列表的表名\n // 本模块所操作的下载数据的 id\n private taskId!: number\n\n private part: number[] = [] // 储存每个分段里的数据的数量\n\n private try = 0 // 任务结果是分批储存的,记录每批失败了几次。根据失败次数减少每批的数量\n\n // 尝试存储抓取结果时,单次存储的数量不能超过这个数字。因为超过这个数字可能会碰到单次存储的上限\n // 由于每个结果的体积可能不同,所以这只是一个预估值\n // 这有助于减少尝试次数。因为存储的思路是存储失败时改为上次数量的 1/2。例如有 100 w 个结果,存储算法会依次尝试存入 100 w、50 w、25 w、12.5 w 以此类推,直到最后有一次能成功存储一批数据。这样的话就进行了 4 次尝试才成功存入一批数据。但通过直接指定一批数据的大小为 onceMax,理想情况下可以只尝试一次就成功存入一批数据。\n // 非理想情况下,即这个数量的结果已经超过了单次存储上限(目前推测这可能会在大量抓取小说、动图时出现;如果抓取的作品大部分是插画、漫画,这个数量的结果应该不可能超出存储上限),那么这不会减少尝试数量,但因为每次尝试存储的数量不会超过这个数字,这依然有助于减少每次尝试时的资源占用、耗费时间。\n private readonly onceMax = 150000\n\n private readonly putStatesTime = 1000 // 每隔指定时间存储一次最新的下载状态\n\n private needPutStates = false // 指示是否需要更新存储的下载状态\n\n private async init() {\n if (!Utils.isPixiv()) {\n return\n }\n\n await this.initDB()\n this.bindEvents()\n\n if (states.settingInitialized) {\n this.restoreData()\n }\n\n this.regularPutStates()\n this.clearExired()\n }\n\n // 初始化数据库,获取数据库对象\n private async initDB() {\n // 在升级事件里创建表和索引\n const onUpdate = (db: IDBDatabase) => {\n if (!db.objectStoreNames.contains(this.metaName)) {\n const metaStore = db.createObjectStore(this.metaName, {\n keyPath: 'id',\n })\n metaStore.createIndex('id', 'id', { unique: true })\n metaStore.createIndex('url', 'url', { unique: true })\n }\n\n if (!db.objectStoreNames.contains(this.dataName)) {\n const dataStore = db.createObjectStore(this.dataName, {\n keyPath: 'id',\n })\n dataStore.createIndex('id', 'id', { unique: true })\n }\n\n if (!db.objectStoreNames.contains(this.statesName)) {\n const statesStore = db.createObjectStore(this.statesName, {\n keyPath: 'id',\n })\n statesStore.createIndex('id', 'id', { unique: true })\n }\n }\n\n // 打开数据库\n return new Promise(async (resolve, reject) => {\n resolve(await this.IDB.open(this.DBName, this.DBVer, onUpdate))\n })\n }\n\n private bindEvents() {\n // 切换页面时,重新检查恢复数据\n const restoreEvt = [EVT.list.pageSwitch, EVT.list.settingInitialized]\n restoreEvt.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.restoreData()\n })\n })\n\n // 抓取完成时,保存这次任务的数据\n const evs = [EVT.list.crawlComplete, EVT.list.resultChange]\n for (const ev of evs) {\n window.addEventListener(ev, async () => {\n this.saveData()\n })\n }\n\n // 当有文件下载完成或者跳过下载时,更新下载状态\n const saveEv = [EVT.list.downloadSuccess, EVT.list.skipDownload]\n saveEv.forEach((val) => {\n window.addEventListener(val, () => {\n this.needPutStates = true\n })\n })\n\n // 任务下载完毕时,以及停止任务时,清除这次任务的数据\n const clearDataEv = [EVT.list.downloadComplete, EVT.list.downloadStop]\n for (const ev of clearDataEv) {\n window.addEventListener(ev, async () => {\n this.clearData()\n })\n }\n\n // 清空已保存的抓取结果\n window.addEventListener(EVT.list.clearSavedCrawl, () => {\n this.clearSavedCrawl()\n })\n }\n\n // 恢复未完成任务的数据\n private async restoreData() {\n // 如果下载器在抓取或者在下载,则不恢复数据\n if (states.busy) {\n return\n }\n\n // 1 获取任务的元数据\n const meta = (await this.IDB.get(\n this.metaName,\n this.getURL(),\n 'url'\n )) as TaskMeta | null\n if (!meta) {\n return\n }\n\n log.warning(lang.transl('_正在恢复抓取结果'))\n\n this.taskId = meta.id\n\n // 2 恢复抓取结果\n\n // 生成每批数据的 id 列表\n const dataIdList: number[] = this.createIdList(meta.id, meta.part)\n // 读取全部数据并恢复\n const promiseList = []\n for (const id of dataIdList) {\n promiseList.push(this.IDB.get(this.dataName, id))\n }\n\n await Promise.all(promiseList).then((res) => {\n // 恢复数据时不适合使用 store.addResult,因为那样会被多图作品设置影响,可能导致恢复的数据和之前下载时不一致\n // 所以这里直接替换整个 store.result\n store.result = []\n const r = res as TaskData[]\n for (const taskData of r) {\n for (const data of taskData.data) {\n store.result.push(data)\n }\n }\n\n store.resetDownloadCount()\n })\n\n // 3 恢复下载状态\n const data = (await this.IDB.get(\n this.statesName,\n this.taskId\n )) as TaskStates\n\n if (data) {\n downloadStates.replace(data.states)\n }\n\n store.crawlCompleteTime = meta.date\n store.URLWhenCrawlStart = meta.URLWhenCrawlStart || ''\n\n // 恢复模式就绪\n log.success(lang.transl('_已恢复抓取结果'), 2)\n EVT.fire('resume')\n }\n\n private async saveData() {\n if (states.mergeNovel) {\n return\n }\n // 首先检查这个网址下是否已经存在数据,如果有数据,则清除之前的数据,保持每个网址只有一份数据\n const taskData = (await this.IDB.get(\n this.metaName,\n this.getURL(),\n 'url'\n )) as TaskMeta | null\n\n if (taskData) {\n await this.IDB.delete(this.metaName, taskData.id)\n await this.IDB.delete(this.statesName, taskData.id)\n }\n\n // 保存本次任务的数据\n // 如果此时本次任务已经完成,就不进行保存了\n if (downloadStates.downloadedCount() === store.result.length) {\n return\n }\n\n log.warning(lang.transl('_正在保存抓取结果'))\n this.taskId = new Date().getTime()\n\n this.part = []\n\n await this.saveTaskData()\n\n // 保存 meta 数据\n const metaData = {\n id: this.taskId,\n url: this.getURL(),\n URLWhenCrawlStart: store.URLWhenCrawlStart,\n part: this.part.length,\n date: store.crawlCompleteTime,\n }\n\n this.IDB.add(this.metaName, metaData)\n\n // 保存 states 数据\n const statesData = {\n id: this.taskId,\n states: downloadStates.states,\n }\n\n this.IDB.add(this.statesName, statesData)\n\n log.success(lang.transl('_已保存抓取结果'), 2)\n }\n\n // 存储抓取结果\n private async saveTaskData() {\n return new Promise(async (resolve, reject) => {\n // 每一批任务的第一次执行会尝试保存所有剩余数据(0.5 的 0 次幂是 1)\n // 如果出错了,则每次执行会尝试保存上一次数据量的一半,直到这次存储成功\n // 之后继续进行下一批任务(如果有)\n let tryNum = Math.floor(store.result.length * Math.pow(0.5, this.try))\n // 如果这批尝试数据大于指定数量,则设置为指定数量\n tryNum > this.onceMax && (tryNum = this.onceMax)\n let data = {\n id: this.numAppendNum(this.taskId, this.part.length),\n data: store.result.slice(\n this.getPartTotal(),\n this.getPartTotal() + tryNum\n ),\n }\n\n try {\n // 当成功存储了一批数据时\n await this.IDB.add(this.dataName, data)\n this.part.push(data.data.length) // 记录这一次保存的结果数量\n this.try = 0 // 重置已尝试次数\n\n // 任务数据全部添加完毕\n if (this.getPartTotal() >= store.result.length) {\n resolve(true)\n } else {\n // 任务数据没有添加完毕,继续添加\n resolve(this.saveTaskData())\n }\n } catch (error) {\n // 当存储失败时\n console.error(error)\n if (error.target && error.target.error && error.target.error.message) {\n const msg = error.target.error.message as string\n if (msg.includes('too large')) {\n // 体积超大\n // 尝试次数 + 1 ,进行下一次尝试\n this.try++\n resolve(this.saveTaskData())\n } else {\n // 未知错误,不再进行尝试\n this.try = 0\n log.error('IndexedDB: ' + msg)\n reject(error)\n }\n }\n }\n })\n }\n\n // 定时 put 下载状态\n private async regularPutStates() {\n window.setInterval(() => {\n if (this.needPutStates) {\n const statesData = {\n id: this.taskId,\n states: downloadStates.states,\n }\n this.needPutStates = false\n // 如果此时本次任务已经完成,就不进行保存了\n if (downloadStates.downloadedCount() === store.result.length) {\n return\n }\n this.IDB.put(this.statesName, statesData)\n }\n }, this.putStatesTime)\n }\n\n private async clearData() {\n if (!this.taskId) {\n return\n }\n const meta = (await this.IDB.get(this.metaName, this.taskId)) as TaskMeta\n\n if (!meta) {\n return\n }\n\n this.IDB.delete(this.metaName, this.taskId)\n this.IDB.delete(this.statesName, this.taskId)\n\n const dataIdList = this.createIdList(this.taskId, meta.part)\n for (const id of dataIdList) {\n this.IDB.delete(this.dataName, id)\n }\n }\n\n // 清除过期的数据\n private async clearExired() {\n // 数据的过期时间,设置为 30 天。30*24*60*60*1000\n const expiryTime = 2592000000\n\n // 每隔一天检查一次数据是否过期\n const nowTime = new Date().getTime()\n let lastCheckTime = 0\n const storeName = 'lastCheckExired'\n const data = localStorage.getItem(storeName)\n if (data === null) {\n localStorage.setItem(storeName, lastCheckTime.toString())\n } else {\n lastCheckTime = Number.parseInt(data)\n }\n if (nowTime - lastCheckTime < 86400000) {\n return\n }\n localStorage.setItem(storeName, nowTime.toString())\n\n // 检查数据是否过期\n const callback = (item: IDBCursorWithValue | null) => {\n if (item) {\n const data = item.value as TaskMeta\n if (nowTime - data.id > expiryTime) {\n this.IDB.delete(this.metaName, data.id)\n this.IDB.delete(this.statesName, data.id)\n\n const dataIdList = this.createIdList(data.id, data.part)\n for (const id of dataIdList) {\n this.IDB.delete(this.dataName, id)\n }\n }\n item.continue()\n }\n }\n\n this.IDB.openCursor(this.metaName, callback)\n }\n\n // 计算 part 数组里的数字之和\n private getPartTotal() {\n if (this.part.length === 0) {\n return 0\n }\n\n return this.part.reduce((prev, curr) => {\n return prev + curr\n })\n }\n\n // 处理本页面的 url\n private getURL() {\n return window.location.href.split('#')[0]\n }\n\n // 在数字后面追加数字\n // 用于在 task id 后面追加序号数字(part)\n private numAppendNum(id: number, num: number) {\n return parseInt(id.toString() + num)\n }\n\n // 根据 taskMeta 里的 id 和 part 数量,生成 taskData 里对应的数据的 id 列表\n private createIdList(taskid: number, part: number) {\n // part 记录数据分成了几部分,所以是从 1 开始的,而不是从 0 开始\n // 生成的 id 的结尾是从 0 开始增加的\n const arr = []\n let start = 0\n while (start < part) {\n arr.push(this.numAppendNum(taskid, start))\n start++\n }\n return arr\n }\n\n // 清空已保存的抓取结果\n private async clearSavedCrawl() {\n await Promise.all([\n this.IDB.clear(this.metaName),\n this.IDB.clear(this.dataName),\n this.IDB.clear(this.statesName),\n ])\n toast.success(lang.transl('_数据清除完毕'))\n }\n}\n\nnew Resume()\n","import { EVT } from '../EVT'\nimport { store } from '../store/Store'\nimport { DonwloadSuccessData } from './DownloadType'\nimport { fileName } from '../FileName'\nimport { Result } from '../store/StoreType'\nimport { settings } from '../setting/Settings'\nimport { Utils } from '../utils/Utils'\nimport { Tools } from '../Tools'\n\n// 为每个作品创建一个 txt 文件,保存这个作品的元数据\nclass SaveWorkMeta {\n constructor() {\n this.bindEvents()\n }\n\n // 保存已经下载了元数据的作品的 id\n private savedIds: number[] = []\n\n private readonly CRLF = '\\n' // txt 文件中使用的换行符\n\n private bindEvents() {\n // 当有作品文件下载成功时,保存其元数据\n window.addEventListener(EVT.list.downloadSuccess, (ev: CustomEventInit) => {\n const successData = ev.detail.data as DonwloadSuccessData\n this.saveMeta(Number.parseInt(successData.id))\n })\n\n // 当开始新的抓取时,清空保存的 id 列表\n window.addEventListener(EVT.list.crawlStart, () => {\n this.savedIds = []\n })\n }\n\n // 添加一项元数据\n // 在 name 和 value 后面添加换行符\n private addMeta(name: string, value: string) {\n return `${name}${this.CRLF}${value}${this.CRLF.repeat(2)}`\n }\n\n private getWorkURL(data: Result) {\n return `https://www.pixiv.net/${data.type === 3 ? 'n' : 'i'}/${data.idNum}`\n }\n\n private joinTags(tags: String[]) {\n const format = tags.map((tag) => '#' + tag)\n return format.join(this.CRLF)\n }\n\n // 根据作品类型判断是否需要保存它的元数据\n private checkNeedSave(type: 0 | 1 | 2 | 3): boolean {\n switch (type) {\n case 0:\n return settings.saveMetaType0\n case 1:\n return settings.saveMetaType1\n case 2:\n return settings.saveMetaType2\n case 3:\n return settings.saveMetaType3\n default:\n return false\n }\n }\n\n private saveMeta(id: number) {\n // 如果所有类型的作品都不需要保存元数据\n if (\n !settings.saveMetaType0 &&\n !settings.saveMetaType1 &&\n !settings.saveMetaType2 &&\n !settings.saveMetaType3\n ) {\n return\n }\n\n if (this.savedIds.includes(id)) {\n return\n }\n\n // 查找这个作品的数据\n const dataSource =\n store.resultMeta.length > 0 ? store.resultMeta : store.result\n const data = dataSource.find((val) => val.idNum === id)\n if (data === undefined) {\n console.error(`Not find ${id} in result`)\n return\n }\n\n if (this.checkNeedSave(data.type) === false) {\n return\n }\n\n // 添加文件内容\n const fileContent: string[] = []\n fileContent.push(this.addMeta('ID', data.idNum.toString()))\n fileContent.push(this.addMeta('URL', this.getWorkURL(data)))\n if (data.type !== 3) {\n fileContent.push(this.addMeta('Original', data.original))\n }\n fileContent.push(this.addMeta('Thumbnail', data.thumb))\n fileContent.push(\n this.addMeta('xRestrict', Tools.getXRestrictText(data.xRestrict)!)\n )\n fileContent.push(this.addMeta('AI', Tools.getAITypeText(data.aiType || 0)))\n fileContent.push(this.addMeta('User', data.user))\n fileContent.push(this.addMeta('UserID', data.userId))\n fileContent.push(this.addMeta('Title', data.title))\n fileContent.push(\n this.addMeta('Description', Utils.htmlToText(data.description))\n )\n fileContent.push(this.addMeta('Tags', this.joinTags(data.tags)))\n if (data.type !== 3) {\n fileContent.push(\n this.addMeta('Size', `${data.fullWidth} x ${data.fullHeight}`)\n )\n }\n fileContent.push(this.addMeta('Bookmark', data.bmk.toString()))\n fileContent.push(this.addMeta('Date', data.date))\n\n // 生成文件\n const blob = new Blob(fileContent, {\n type: 'text/plain',\n })\n\n // 生成文件名\n // 元数据文件需要和它对应的图片/小说文件的路径相同,文件名相似,这样它们才能在资源管理器里排在一起,便于查看\n\n // 生成这个数据的路径和文件名\n const _fileName = fileName.createFileName(data)\n // 取出后缀名之前的部分\n const index = _fileName.lastIndexOf('.')\n let part1 = _fileName.substring(0, index)\n\n if (!settings.zeroPadding) {\n // 把 id 字符串换成数字 id,这是为了去除 id 后面可能存在的序号,如 p0\n // 但如果用户启用了在序号前面填充 0,则不替换 id,因为文件名里的 id 后面可能带多个 0,如 p000,用 idNum 去替换的话替换不了后面两个 0\n part1 = part1.replace(data.id, data.idNum.toString())\n }\n // 拼接出元数据文件的文件名\n const metaFileName = `${part1}-meta.txt`\n\n // 发送下载请求\n // 因为我偷懒,所以后台不会返回下载状态,默认为下载成功\n chrome.runtime.sendMessage({\n msg: 'save_description_file',\n fileUrl: URL.createObjectURL(blob),\n fileName: metaFileName,\n })\n\n this.savedIds.push(id)\n }\n}\n\nnew SaveWorkMeta()\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\n\n// 显示正在转换的文件数量\nclass ShowConvertCount {\n constructor(el: HTMLElement) {\n this.el = el\n lang.register(this.el)\n this.bindEvents()\n }\n\n private el: HTMLElement // 显示提示文本的容器\n\n private bindEvents() {\n window.addEventListener(EVT.list.convertChange, (ev: CustomEventInit) => {\n const count = ev.detail.data\n if (count > 0) {\n lang.updateText(this.el, '_转换任务提示', count.toString())\n } else {\n this.el.textContent = ''\n lang.updateText(this.el, '')\n }\n })\n }\n}\n\nexport { ShowConvertCount }\n","import { Colors } from '../Colors'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\n\n// 显示下载状态\nclass ShowDownloadStates {\n constructor(el: HTMLElement) {\n this.el = el\n this.bindEvents()\n }\n\n private el: HTMLElement\n\n private bindEvents() {\n for (const ev of [\n EVT.list.crawlComplete,\n EVT.list.resultChange,\n EVT.list.resume,\n ]) {\n window.addEventListener(ev, () => {\n this.setText('_未开始下载')\n })\n }\n\n window.addEventListener(EVT.list.downloadStart, () => {\n this.setText('_正在下载中')\n })\n\n window.addEventListener(EVT.list.downloadPause, () => {\n this.setText('_已暂停', '#f00')\n })\n\n window.addEventListener(EVT.list.downloadStop, () => {\n this.setText('_已停止', '#f00')\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n this.setText('_下载完毕', Colors.textSuccess)\n })\n }\n\n private setText(textFlag: string, color: string = Colors.bgBlue) {\n lang.updateText(this.el, textFlag)\n this.el.style.color = color\n }\n}\n\nexport { ShowDownloadStates }\n","import { store } from '../store/Store'\nimport { states } from '../store/States'\nimport { EVT } from '../EVT'\n\n// 在网页标题上显示剩余下载数量\nclass ShowRemainingDownloadOnTitle {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.setInterval(() => {\n this.show()\n }, 500)\n\n const removeStrEvents = [\n EVT.list.downloadStop,\n EVT.list.downloadComplete,\n EVT.list.crawlStart,\n ]\n\n for (const evt of removeStrEvents) {\n window.addEventListener(evt, () => {\n this.removeStr()\n })\n }\n }\n\n // 生成新的字符串\n private createStr() {\n if (store.remainingDownload > 0) {\n return ` ${store.remainingDownload} `\n }\n return ''\n }\n\n // 保存缓存的字符串,后面会需要在标题中查找缓存的字符串\n private str = this.createStr()\n\n // 检查标题中是否有下载状态的 flag\n // 如果没有,就不会显示剩余数量\n private checkStatusFlag() {\n return document.title.indexOf(']') > 0\n }\n\n private show() {\n if (!states.downloading || !this.checkStatusFlag()) {\n return\n }\n\n // 先移除旧的字符串,然后添加新的字符串\n const title = this.removeStr(document.title)\n\n this.str = this.createStr()\n\n if (!this.str || !title) {\n return\n }\n\n document.title = title.replace(']', ']' + this.str)\n }\n\n private removeStr(): undefined\n // 如果传入字符串,则不直接修改 document.title,以提高性能\n private removeStr(titleStr: string): string\n private removeStr(titleStr?: string) {\n if (!this.str) {\n return\n }\n\n if (titleStr) {\n return titleStr.replace(this.str, '')\n } else {\n document.title = document.title.replace(this.str, '')\n }\n }\n}\n\nnew ShowRemainingDownloadOnTitle()\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\n\n// 显示跳过下载的文件数量\nclass ShowSkipCount {\n constructor(el: HTMLElement) {\n this.el = el\n lang.register(this.el)\n this.bindEvents()\n }\n\n private count = 0 // 跳过下载的数量\n private el: HTMLElement // 显示提示文本的容器\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.reset()\n })\n\n window.addEventListener(EVT.list.downloadStop, () => {\n // 重置计数但不清空提示文字,因为用户还需要看\n this.count = 0\n })\n\n window.addEventListener(EVT.list.skipDownload, () => {\n this.addCount()\n })\n\n window.addEventListener(EVT.list.downloadStart, () => {\n if (this.count === 0) {\n this.reset()\n }\n })\n\n window.addEventListener(EVT.list.resultChange, () => {\n this.reset()\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n // 重置计数但不清空提示文字,因为用户还需要看\n this.count = 0\n })\n }\n\n private addCount() {\n this.count++\n lang.updateText(this.el, '_已跳过n个文件', this.count.toString())\n }\n\n private reset() {\n this.count = 0\n lang.updateText(this.el, '')\n }\n}\n\nexport { ShowSkipCount }\n","import { pageType } from '../PageType'\nimport { EVT } from '../EVT'\nimport { states } from '../store/States'\nimport { Tools } from '../Tools'\nimport { store } from '../store/Store'\n\n/**\n↑ 抓取中\n→ 等待下一步操作(搜索页)\n▶ 可以开始下载\n↓ 下载中\n║ 下载暂停\n■ 下载停止\n✓ 下载完毕\n☑ 下载完毕,并且此时的页面不是开始抓取时的页面(页面网址发生了变化)\n*/\nenum Flags {\n crawling = '↑',\n waiting = '→',\n readyDownload = '▶',\n downloading = '↓',\n paused = '║',\n stopped = '■',\n completed = '✓',\n completedAndPageURLChange = '☑',\n space = ' ',\n}\n\n// 把下载器运行中的状态添加到页面标题前面\nclass ShowStatusOnTitle {\n constructor() {\n this.bindEvents()\n }\n\n private flashingTimer: undefined | number // title 闪烁时,使用的定时器\n\n private pageSwitchTimer: undefined | number // 页面切换后,检查页面标题是否变化了的定时器\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.set(Flags.crawling)\n })\n\n window.addEventListener(EVT.list.worksUpdate, () => {\n this.set(Flags.waiting)\n })\n\n for (const ev of [\n EVT.list.crawlComplete,\n EVT.list.resultChange,\n EVT.list.resume,\n ]) {\n window.addEventListener(ev, () => {\n this.set(Flags.readyDownload)\n })\n }\n\n window.addEventListener(EVT.list.downloadStart, () => {\n this.set(Flags.downloading)\n })\n\n // 切换了页面之后,标题可能会被 pixiv 修改,这样就没有标记了\n // 在这里监听页面切换的事件,如果切换后下载器仍在下载中,则重新添加标记\n // 回调函数应该在 pixiv 修改标题之后执行\n // 但是 pageSwitch 触发时,标题尚未被 pixiv 修改。pixiv 是在 pageSwitch 之后修改标题的。\n // 所以我使用定时器来检查标题是否被 pixiv 修改了\n window.addEventListener(EVT.list.pageSwitch, () => {\n window.clearInterval(this.pageSwitchTimer)\n if (!states.downloading) {\n return\n }\n const nowTitle = Tools.getPageTitle()\n this.pageSwitchTimer = window.setInterval(() => {\n if (Tools.getPageTitle() !== nowTitle) {\n this.set(Flags.downloading)\n window.clearInterval(this.pageSwitchTimer)\n }\n }, 500)\n })\n\n // 切换同类型页面时,如果切换之前已经有了正常下载完成的标记,则将其修改为另一个标记\n window.addEventListener(EVT.list.pageSwitchedTypeNotChange, () => {\n if (\n this.includeFlag(Flags.completed) ||\n this.includeFlag(Flags.completedAndPageURLChange)\n ) {\n this.setCompleteFlag()\n }\n })\n\n window.addEventListener(EVT.list.downloadComplete, () => {\n this.setCompleteFlag()\n })\n\n window.addEventListener(EVT.list.downloadPause, () => {\n this.set(Flags.paused)\n })\n\n window.addEventListener(EVT.list.downloadStop, () => {\n this.set(Flags.stopped)\n })\n\n const resetEvents = [EVT.list.crawlEmpty, EVT.list.stopCrawl]\n resetEvents.forEach((event) => {\n window.addEventListener(event, () => {\n this.reset()\n })\n })\n }\n\n // 检查标题里是否含有标记\n private includeFlag(flag?: Flags) {\n if (!flag) {\n // 没有传递标记,则检查所有标记\n for (const value of Object.values(Flags)) {\n const str = `[${value}]`\n if (document.title.includes(str)) {\n return true\n }\n }\n } else {\n // 否则检查指定标记\n const str = `[${flag}]`\n return document.title.includes(str)\n }\n return false\n }\n\n // 重设 title\n private reset() {\n window.clearInterval(this.flashingTimer)\n\n const metaTagPage = [\n pageType.list.Artwork,\n pageType.list.UserHome,\n pageType.list.Novel,\n ]\n // 从 og:title 标签获取标题。og:title 标签是最早更新标题的。但不确定是否在所有页面上都可以直接使用 og:title 标签的内容,所以这里只在部分页面上使用\n if (metaTagPage.includes(pageType.type)) {\n const ogTitle = document.querySelector(\n 'meta[property=\"og:title\"]'\n )! as HTMLMetaElement\n if (ogTitle) {\n document.title = ogTitle.content\n return\n }\n }\n\n // 去掉 title 里的标记\n const index = document.title.indexOf(']')\n document.title = document.title.substring(index + 1)\n }\n\n // 在标题上显示指定标记\n private set(flag: Flags) {\n const str = `[${flag}]`\n // 如果 title 里没有标记,就添加标记\n if (!this.includeFlag()) {\n document.title = `${str} ${document.title}`\n } else {\n // 如果已经有标记了,则替换为新当前传入的标记\n document.title = document.title.replace(/\\[.?\\]/, str)\n }\n\n // 可以开始下载,或者等待下一步操作,进行闪烁提醒\n if (flag === Flags.readyDownload || flag === Flags.waiting) {\n this.flashing(flag)\n } else {\n window.clearInterval(this.flashingTimer)\n }\n }\n\n private setCompleteFlag() {\n let flag = Flags.completed\n if (\n store.URLWhenCrawlStart !== '' &&\n window.location.href !== store.URLWhenCrawlStart\n ) {\n flag = Flags.completedAndPageURLChange\n }\n this.set(flag)\n }\n\n // 闪烁提醒,把给定的标记替换成空白,来回切换\n private flashing(flag: Flags.readyDownload | Flags.waiting) {\n window.clearInterval(this.flashingTimer)\n const str = `[${flag}]`\n const whiteSpace = `[${Flags.space}]`\n this.flashingTimer = window.setInterval(() => {\n if (this.includeFlag(flag)) {\n // 如果含有标记,就替换成空白\n document.title = document.title.replace(str, whiteSpace)\n } else {\n if (this.includeFlag(Flags.space)) {\n // 如果含有空白,就替换成标记\n document.title = document.title.replace(whiteSpace, str)\n } else {\n // 如果都没有,一般是页面切换了,标题被重置了,取消闪烁\n window.clearInterval(this.flashingTimer)\n }\n }\n }, 500)\n }\n}\n\nnew ShowStatusOnTitle()\n","import { store } from '../store/Store'\nimport { states } from '../store/States'\nimport { EVT } from '../EVT'\n\n// 抓取阶段,在网页标题上显示抓取到的结果数量\nclass ShowTotalResultOnTitle {\n constructor() {\n this.bindEvents()\n }\n\n private enable = false\n\n private bindEvents() {\n const enableEvts = [EVT.list.crawlStart, EVT.list.resultChange]\n\n enableEvts.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.removeStr()\n this.enable = true\n })\n })\n\n const disableEvts = [\n EVT.list.downloadStart,\n EVT.list.downloadPause,\n EVT.list.downloadStop,\n ]\n\n disableEvts.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.removeStr()\n this.enable = false\n })\n })\n\n window.setInterval(() => {\n this.enable && this.show()\n }, 500)\n }\n\n // 生成新的字符串\n private createStr() {\n if (store.result.length > 0) {\n return ` ${store.result.length} `\n }\n return ''\n }\n\n // 保存缓存的字符串,后面会需要在标题中查找缓存的字符串\n private str = this.createStr()\n\n // 检查标题中是否有下载状态的 flag\n // 如果没有,就不会显示剩余数量\n private checkStatusFlag() {\n return document.title.indexOf(']') > 0\n }\n\n private show() {\n if (states.downloading || !this.checkStatusFlag()) {\n return\n }\n\n // 先移除旧的字符串,然后添加新的字符串\n const title = this.removeStr(document.title)\n\n this.str = this.createStr()\n\n if (!this.str || !title) {\n return\n }\n\n document.title = title.replace(']', ']' + this.str)\n }\n\n // 如果传入字符串,则不直接修改 document.title,以提高性能\n private removeStr(titleStr?: string) {\n if (!this.str) {\n return\n }\n\n if (titleStr) {\n return titleStr.replace(this.str, '')\n } else {\n document.title = document.title.replace(this.str, '')\n }\n }\n}\n\nnew ShowTotalResultOnTitle()\n","import { Utils } from '../utils/Utils'\n\n// 检查图片是否是黑白图片\n// 获取图片中 rgb 三色的平均值,如果很接近就判断为黑白图片\n// 这是一个不太可靠的方法,在少数情况下,彩色图片可能会被误判为黑白图片\nclass BlackAndWhiteImage {\n private readonly latitude = 1 // 宽容度\n\n public async check(imgUrl: string): Promise {\n // 加载图片\n let img: HTMLImageElement\n try {\n img = await this.loadImg(imgUrl)\n } catch (error) {\n // loadImg 失败时返回的 reject 会在这里被捕获\n // 直接把这个图片视为彩色图片\n return false\n }\n\n const imgData = this.getImageData(img)\n // 把图片的像素分为 4 份,依次检查它们的色彩\n const pixel = img.width * img.height\n const part = 4\n // 计算每一份有多少字节。由于像素数量可能不是 4 的整数倍,所以向下舍入\n let eachLength = Math.floor(pixel / part) * 4\n let times = 0\n\n while (times < part) {\n const start = times * eachLength\n times++\n const end = times * eachLength\n const bool = this.getResult(imgData, start, end)\n // 如果某一部分是彩色图片,就直接返回结果,把整个图片视为彩色图片\n // 如果这一部分是黑白图片,则继续检查下一部分\n if (!bool) {\n return false\n }\n }\n\n // 因为彩色图片会短路返回,所以执行到这里意味着所有部分都是黑白图片\n return true\n }\n\n private async loadImg(url: string): Promise {\n return new Promise(async (resolve, reject) => {\n // 如果传递的是 blobURL 就直接使用\n if (url.startsWith('blob')) {\n resolve(Utils.loadImg(url))\n } else {\n // 不是 blobURL 的话先获取图片\n const res = await fetch(url).catch((error) => {\n // fetch 加载图片可能会失败 TypeError: Failed to fetch\n console.log(`Load image error! url: ${url}`)\n })\n // 如果 fetch 加载图片失败,res 会是 undefined\n if (!res) {\n return reject()\n }\n const blob = await res.blob()\n const blobURL = URL.createObjectURL(blob)\n resolve(Utils.loadImg(blobURL))\n }\n })\n }\n\n private getImageData(img: HTMLImageElement) {\n const width = img.width\n const height = img.height\n\n const canvas = document.createElement('canvas')\n canvas.width = width\n canvas.height = height\n const con = canvas.getContext('2d')!\n con.drawImage(img, 0, 0)\n const imageData = con.getImageData(0, 0, width, height)\n\n return imageData.data\n }\n\n /**计算 r g b 三种颜色的平均值,判断是否是黑白图片\n *\n * 返回值 true 为黑白图片,false 为彩色图片\n */\n private getResult(imgData: Uint8ClampedArray, start: number, end: number) {\n // 把 R G B 值分别相加\n let r = 0\n let g = 0\n let b = 0\n\n const totalLength = end - start\n while (start < end) {\n r += imgData[start]\n g += imgData[start + 1]\n b += imgData[start + 2]\n start = start + 4\n }\n\n // 求平均值,并取整\n const pixel = totalLength / 4\n r = Math.round(r / pixel)\n g = Math.round(g / pixel)\n b = Math.round(b / pixel)\n\n // 如果 rgb 值相同则是黑白图片\n if (r === g && g === b) {\n return true\n } else {\n // 如果 rgb 值不相同,则根据宽容度判断是否为黑白图片\n // 因为获取 rgb 的结果时,进行了四舍五入,即使 rgb 非常接近,也可能会相差 1,所以我设置了一个宽容度\n const max = Math.max(r, g, b) // 取出 rgb 中的最大值\n const min = max - this.latitude // 允许的最小值\n // 如果 rgb 三个数值与最小的数值相比,差距都在宽容度之内,则视为黑白图片\n return [r, g, b].every((number) => {\n return number >= min\n })\n }\n }\n}\n\nconst blackAndWhiteImage = new BlackAndWhiteImage()\nexport { blackAndWhiteImage }\n","import { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { Utils } from '../utils/Utils'\nimport {\n settings,\n setSetting,\n BlockTagsForSpecificUserItem,\n} from '../setting/Settings'\nimport { API } from '../API'\nimport { theme } from '../Theme'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\n\n// 针对特定用户屏蔽 tag\nclass BlockTagsForSpecificUser {\n constructor() {\n this.createWrap()\n theme.register(this.wrap)\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private rules: typeof settings.blockTagsForSpecificUserList = []\n\n private wrap!: HTMLDivElement // 最外层元素\n\n private expandBtn!: HTMLButtonElement // 展开/折叠 按钮\n private totalSpan!: HTMLSpanElement // 显示规则数量\n private showAddBtn!: HTMLButtonElement // 添加 按钮,点击显示添加区域\n\n private addWrap!: HTMLDivElement // 用于添加新项目的区域\n private addInputUid!: HTMLInputElement // 用于添加新项目的 uid 的输入框\n private addInputTags!: HTMLInputElement // 用于添加新项目的 tags 的输入框\n private addBtn!: HTMLButtonElement // 添加 按钮\n private cancelBtn!: HTMLButtonElement // 取消 按钮\n\n private listWrap!: HTMLDivElement // 列表区域容器\n\n private _addWrapShow = false\n\n set addWrapShow(val: boolean) {\n this._addWrapShow = val\n this.addWrap.style.display = val ? 'block' : 'none'\n\n if (!val) {\n this.addInputUid.value = ''\n this.addInputTags.value = ''\n }\n }\n\n get addWrapShow() {\n return this._addWrapShow\n }\n\n private wrapHTML = `\n
          \n\n
          \n 0\n \n \n
          \n\n
          \n
          \n
          \n \n \n
          \n\n
          \n Tags\n \n
          \n\n
          \n \n\n \n \n
          \n
          \n
          \n\n
          \n
          \n
          \n `\n\n // 创建列表外部的容器,静态html\n private createWrap() {\n this.wrap = Tools.useSlot(\n 'blockTagsForSpecificUser',\n this.wrapHTML\n )! as HTMLDivElement\n this.expandBtn = this.wrap.querySelector('.expand')! as HTMLButtonElement\n this.showAddBtn = this.wrap.querySelector('.showAdd')! as HTMLButtonElement\n this.totalSpan = this.wrap.querySelector('.total')! as HTMLSpanElement\n this.addWrap = this.wrap.querySelector('.addWrap')! as HTMLDivElement\n this.addInputUid = this.wrap.querySelector(\n '.addUidInput'\n )! as HTMLInputElement\n this.addInputTags = this.wrap.querySelector(\n '.addTagsInput'\n )! as HTMLInputElement\n this.addBtn = this.wrap.querySelector('.add')! as HTMLButtonElement\n this.cancelBtn = this.wrap.querySelector('.cancel')! as HTMLButtonElement\n this.listWrap = this.wrap.querySelector('.listWrap')! as HTMLDivElement\n\n // 展开/折叠\n this.expandBtn.addEventListener('click', () => {\n setSetting(\n 'blockTagsForSpecificUserShowList',\n !settings.blockTagsForSpecificUserShowList\n )\n\n if (\n settings.blockTagsForSpecificUserShowList &&\n this.rules.length === 0\n ) {\n toast.error(lang.transl('_没有数据可供使用'))\n }\n })\n\n // 切换显示添加区域\n this.showAddBtn.addEventListener('click', () => {\n this.addWrapShow = !this.addWrapShow\n if (this.addWrapShow) {\n this.addInputUid.focus()\n }\n })\n\n // 添加规则的按钮\n this.addBtn.addEventListener('click', () => {\n this.addRule(this.addInputUid.value, this.addInputTags.value)\n })\n\n // 取消添加的按钮\n this.cancelBtn.addEventListener('click', () => {\n this.addWrapShow = false\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'blockTagsForSpecificUserShowList') {\n this.showListWrap()\n }\n\n if (data.name === 'blockTagsForSpecificUser') {\n this.createAllList()\n }\n\n if (data.name === 'blockTagsForSpecificUserList') {\n this.createAllList()\n }\n })\n }\n\n private showListWrap() {\n const show = settings.blockTagsForSpecificUserShowList\n this.listWrap.style.display = show ? 'block' : 'none'\n lang.updateText(this.expandBtn, show ? '_收起' : '_展开')\n }\n\n // 根据规则动态创建 html\n private createAllList() {\n this.rules = [...settings.blockTagsForSpecificUserList]\n this.wrap.style.display = settings.blockTagsForSpecificUser\n ? 'block'\n : 'none'\n this.totalSpan.textContent = this.rules.length.toString()\n this.listWrap.innerHTML = ''\n for (const data of this.rules) {\n this.createList(data)\n }\n }\n\n // 创建规则对应的元素,并绑定事件\n private createList(data: BlockTagsForSpecificUserItem) {\n const { uid, user, tags } = data\n const html = `\n
          \n
          \n \n \n
          \n\n
          \n Tags\n \n
          \n\n
          \n\n \n\n \n
          \n
          `\n\n // 倒序显示,早添加的处于底部,晚添加的处于顶部\n this.listWrap.insertAdjacentHTML('afterbegin', html)\n\n const uidLabel = this.listWrap.querySelector('.uidLabel')! as HTMLElement\n if (user) {\n lang.updateText(uidLabel, '')\n uidLabel.textContent = user\n } else {\n this.updateUserName(data)\n }\n\n const updateRule = this.listWrap.querySelector(\n `button[data-updateRule='${uid}']`\n )\n const deleteRule = this.listWrap.querySelector(\n `button[data-deleteRule='${uid}']`\n )\n const uidInput = this.listWrap.querySelector(\n `input[data-uidInput='${uid}']`\n )! as HTMLInputElement\n const tagsInput = this.listWrap.querySelector(\n `input[data-tagsInput='${uid}']`\n )! as HTMLInputElement\n\n // 当输入框发生变化时,进行更新\n ;[uidInput, tagsInput].forEach((el) => {\n el?.addEventListener('change', () => {\n if (el.value) {\n this.updateRule(uid, uidInput.value, tagsInput.value, false)\n }\n })\n })\n\n // 更新按钮\n updateRule?.addEventListener('click', () => {\n this.updateRule(uid, uidInput.value, tagsInput.value)\n })\n\n // 删除按钮\n deleteRule?.addEventListener('click', () => {\n this.deleteRule(uid)\n })\n }\n\n // 如果某个规则没有用户名,就获取用户名储存起来\n private async updateUserName(data: BlockTagsForSpecificUserItem) {\n const profile = await API.getUserProfile(data.uid.toString()).catch(\n (err) => {\n console.log(err)\n }\n )\n if (profile && profile.body.name) {\n const name = profile.body.name\n const index = this.findIndex(data.uid)\n if (index > -1) {\n this.rules[index].user = name\n setSetting('blockTagsForSpecificUserList', [...this.rules])\n\n // 显示到页面上\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${data.uid}']`\n )\n if (listElement) {\n const label = listElement.querySelector('.uidLabel')\n label && (label.textContent = name)\n }\n }\n }\n }\n\n // 检查用户输入的值\n private checkValue(uidInput: string, tagsInput: string) {\n const tags = Utils.string2array(tagsInput)\n\n if (!uidInput || !tagsInput || tags.length === 0) {\n msgBox.error(lang.transl('_必填项不能为空'))\n return false\n }\n\n const uid = Number.parseInt(uidInput)\n if (!uid || isNaN(uid)) {\n msgBox.error(lang.transl('_用户ID必须是数字'))\n return false\n }\n\n return {\n uid,\n tags,\n }\n }\n\n private findIndex(uid: number) {\n return this.rules.findIndex((rule) => rule.uid === uid)\n }\n\n // 添加规则\n private addRule(uidInput: string, tagsInput: string) {\n const check = this.checkValue(uidInput, tagsInput)\n if (!check) {\n return\n }\n const { uid, tags } = check\n\n // 查找这个用户是否已经被添加过,如果添加过,则改为更新,而不是添加新规则\n const index = this.findIndex(uid)\n if (index > -1) {\n // 把两次的 tag 合并起来\n const joinTags = this.rules[index].tags.concat(tags)\n return this.updateRule(uid, uid.toString(), joinTags.toString())\n }\n\n this.addWrapShow = false\n this.rules.push(check)\n setSetting('blockTagsForSpecificUserList', [...this.rules])\n setSetting('blockTagsForSpecificUserShowList', true)\n\n toast.success(lang.transl('_添加成功'))\n }\n\n // 更新规则\n // tip 表示是否用消息框进行提示。当用户点击了更新按钮时应该显示提示;输入内容变化导致的自动更新可以不显示提示\n private updateRule(\n oldUid: number,\n uidInput: string,\n tagsInput: string,\n tip = true\n ) {\n const check = this.checkValue(uidInput, tagsInput)\n if (!check) {\n return\n }\n\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${oldUid}']`\n )\n listElement?.remove()\n\n const index = this.findIndex(oldUid)\n this.rules[index] = check\n setSetting('blockTagsForSpecificUserList', [...this.rules])\n\n if (tip) {\n toast.success(lang.transl('_更新成功'))\n }\n\n this.addWrapShow = false\n }\n\n // 删除规则\n private deleteRule(uid: number) {\n const index = this.findIndex(uid)\n this.rules.splice(index, 1)\n setSetting('blockTagsForSpecificUserList', [...this.rules])\n\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${uid}']`\n )\n listElement?.remove()\n }\n\n // 如果找到了符合的记录,则返回 true\n public check(uid: string | number, tags: string[]) {\n if (typeof uid === 'string') {\n uid = Number.parseInt(uid)\n }\n\n // 查找有无记录\n const index = this.findIndex(uid)\n if (index === -1) {\n return false\n }\n\n // 如果有记录则判断是否有相同的 tag,有任意一个就返回\n const rule = this.rules[index]\n const tagsString = tags.toString().toLowerCase()\n for (const tag of rule.tags) {\n if (tagsString.includes(tag.toLowerCase())) {\n return true\n }\n }\n\n // 没有相同的 tag\n return false\n }\n}\n\nconst blockTagsForSpecificUser = new BlockTagsForSpecificUser()\n\nexport { blockTagsForSpecificUser }\n","import { lang } from '../Lang'\nimport { log } from '../Log'\nimport { EVT } from '../EVT'\nimport { states } from '../store/States'\nimport { settings } from '../setting/Settings'\nimport { blackAndWhiteImage } from './BlackandWhiteImage'\nimport { mute } from './Mute'\nimport { blockTagsForSpecificUser } from './BlockTagsForSpecificUser'\nimport { msgBox } from '../MsgBox'\nimport { workPublishTime } from './WorkPublishTime'\nimport { WorkTypeString } from '../store/StoreType'\n\n/** 过滤选项,其中所有字段都是可选的 */\nexport interface FilterOption {\n /**是否为 AI 创作。0 未知 1 否 2 是 */\n aiType?: 0 | 1 | 2\n id?: number | string\n /**作品类型\n * -1 插画、漫画、动图的合集。也就是只知道是图像作品,但是不能确定是哪种具体的类型\n * 0 插画\n * 1 漫画\n * 2 动图\n * 3 小说\n */\n workType?: -1 | 0 | 1 | 2 | 3\n workTypeString?: WorkTypeString\n pageCount?: number\n tags?: string[]\n bookmarkCount?: number\n bookmarkData?: any\n width?: number\n height?: number\n yes_rank?: number\n createDate?: string\n mini?: string\n size?: number\n userId?: string\n xRestrict?: 0 | 1 | 2\n}\n\n// 检查作品是否符合过滤条件\nclass Filter {\n constructor() {\n this.bindEvents()\n }\n\n // 对启用了的过滤选项输出提示\n private showTip() {\n this.getDownType()\n this.getDownTypeByAge()\n this.getAIWorkType()\n this.getDownTypeByImgCount()\n this.getDownTypeByColor()\n this.getDownTypeByBmked()\n\n this.getMultiImageWorkImageLimit()\n\n this.getBMKNum()\n\n this.getSetWh()\n\n this.getRatio()\n\n this.getIdRange()\n\n this.getPostDate()\n\n this.getIncludeTag()\n\n this.getExcludeTag()\n\n if (states.debut) {\n log.warning(lang.transl('_抓取首次登场的作品Title'))\n }\n\n this.getBlockList()\n\n this.getSize()\n }\n\n /**检查作品是否符合过滤器的要求,返回值 false 表示作品不符合要求,true 表示符合要求 */\n // 注意:这是一个异步函数,所以要使用 await 获取检查结果\n // 想要检查哪些数据就传递哪些数据,不需要传递 FilterOption 的所有选项\n // 每个过滤器函数里都必须检查参数为 undefined 的情况\n // 每个过滤器函数必须返回一个 boolean 值,true 表示保留这个作品,false 表示排除这个作品\n public async check(option: FilterOption): Promise {\n // 检查下载的作品类型设置\n if (!this.checkDownType(option.workType)) {\n return false\n }\n\n if (!this.checkDownTypeByAge(option.xRestrict)) {\n return false\n }\n\n if (!this.checkAIWorkType(option.aiType)) {\n return false\n }\n\n // 检查单图、多图的下载\n if (!this.checkPageCount(option.workType, option.pageCount)) {\n return false\n }\n\n // 检查单图、多图的下载\n if (\n !this.checkMultiImageWorkImageLimit(option.workType, option.pageCount)\n ) {\n return false\n }\n\n // 检查收藏和未收藏的要求\n if (!this.checkDownTypeByBmked(option.bookmarkData)) {\n return false\n }\n\n // 检查收藏数要求\n if (!this.checkBMK(option.bookmarkCount, option.createDate)) {\n return false\n }\n\n // 检查要排除的 tag\n if (!this.checkExcludeTag(option.tags)) {\n return false\n }\n\n // 检查必须包含的 tag\n if (!this.checkIncludeTag(option.tags)) {\n return false\n }\n\n // 检查宽高设置\n if (!this.checkWidthHeight(option.width, option.height)) {\n return false\n }\n\n // 检查宽高比设置\n if (!this.checkRatio(option.width, option.height)) {\n return false\n }\n\n // 检查 id 范围设置\n if (!this.checkIdRange(option.id)) {\n return false\n }\n\n // 检查用户在 Pixiv 的屏蔽设定\n if (!(await this.checkMuteUser(option.userId))) {\n return false\n }\n if (!(await this.checkMuteTag(option.tags))) {\n return false\n }\n\n // 检查用户阻止名单\n if (!this.checkBlockList(option.userId)) {\n return false\n }\n\n // 检查针对特定用户屏蔽的 tags\n if (!this.checkBlockTagsForSpecificUser(option.userId, option.tags)) {\n return false\n }\n\n // 检查投稿时间设置\n if (!this.checkPostDate(option.createDate)) {\n return false\n }\n\n // 检查投稿时间设置\n if (!this.checkIdPublishTime(option.id, option.workTypeString)) {\n return false\n }\n\n // 检查首次登场设置\n if (!this.checkDebut(option.yes_rank)) {\n return false\n }\n\n // 检查文件体积设置\n if (!this.checkSize(option.size)) {\n return false\n }\n\n // 检查黑白图片\n // 这一步需要加载图片,需要较长的时间,较多的资源占用,所以放到最后检查\n if (!(await this.checkBlackWhite(option.mini))) {\n return false\n }\n\n return true\n }\n\n // ---------------- get ----------------\n\n // 提示下载的作品类型设置\n private getDownType() {\n // 如果全部排除则取消任务\n if (\n !settings.downType0 &&\n !settings.downType1 &&\n !settings.downType2 &&\n !settings.downType3\n ) {\n this.showWarning(lang.transl('_排除了所有作品类型'))\n }\n\n const tips = []\n !settings.downType0 && tips.push(lang.transl('_插画'))\n !settings.downType1 && tips.push(lang.transl('_漫画'))\n !settings.downType2 && tips.push(lang.transl('_动图'))\n !settings.downType3 && tips.push(lang.transl('_小说'))\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n private getDownTypeByAge() {\n // 如果全部排除则取消任务\n if (!settings.downAllAges && !settings.downR18 && !settings.downR18G) {\n this.showWarning(lang.transl('_排除了所有作品类型'))\n }\n\n const tips = []\n !settings.downAllAges && tips.push(lang.transl('_全年龄'))\n !settings.downR18 && tips.push('R-18')\n !settings.downR18G && tips.push('R-18G')\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n private getAIWorkType() {\n const tips = []\n !settings.AIGenerated && tips.push(lang.transl('_AI生成'))\n !settings.notAIGenerated && tips.push(lang.transl('_非AI生成'))\n !settings.UnknownAI && tips.push(lang.transl('_未知') + '(AI)')\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n private getDownTypeByImgCount() {\n const tips = []\n !settings.downSingleImg && tips.push(lang.transl('_单图作品'))\n !settings.downMultiImg && tips.push(lang.transl('_多图作品'))\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n // 提示图像颜色设置\n private getDownTypeByColor() {\n // 如果全部排除则取消任务\n if (!settings.downColorImg && !settings.downBlackWhiteImg) {\n this.showWarning(lang.transl('_排除了所有作品类型'))\n }\n\n const tips = []\n !settings.downColorImg && tips.push(lang.transl('_彩色图片'))\n !settings.downBlackWhiteImg && tips.push(lang.transl('_黑白图片'))\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n // 提示下载收藏和未收藏作品的设置\n private getDownTypeByBmked() {\n // 如果全部排除则取消任务\n if (!settings.downNotBookmarked && !settings.downBookmarked) {\n this.showWarning(lang.transl('_排除了所有作品类型'))\n }\n\n const tips = []\n !settings.downNotBookmarked && tips.push(lang.transl('_未收藏'))\n !settings.downBookmarked && tips.push(lang.transl('_已收藏'))\n\n if (tips.length > 0) {\n log.warning(lang.transl('_排除作品类型') + tips.join(', '))\n }\n }\n\n // 提示多图作品的图片数量限制\n private getMultiImageWorkImageLimit() {\n if (!settings.multiImageWorkImageLimitSwitch) {\n return\n }\n\n if (settings.multiImageWorkImageLimit > 0) {\n log.warning(\n lang.transl('_多图作品的图片数量上限') +\n ':' +\n settings.multiImageWorkImageLimit\n )\n }\n }\n\n // 提示必须包含的tag\n private getIncludeTag() {\n if (!settings.needTagSwitch) {\n return\n }\n\n if (settings.needTag.length > 0) {\n log.warning(\n lang.transl('_设置了必须tag之后的提示') + settings.needTag.toString()\n )\n }\n }\n\n // 提示要排除的tag\n private getExcludeTag() {\n if (!settings.notNeedTagSwitch) {\n return\n }\n\n if (settings.notNeedTag.length > 0) {\n log.warning(\n lang.transl('_设置了排除tag之后的提示') + settings.notNeedTag.toString()\n )\n }\n }\n\n // 提示宽高设置\n private getSetWh() {\n if (!settings.setWHSwitch) {\n return\n }\n\n if (settings.setWidth || settings.setHeight) {\n const andOr = settings.setWidthAndOr\n .replace('|', lang.transl('_或者'))\n .replace('&', lang.transl('_并且'))\n const text = `${lang.transl('_宽度')} ${settings.widthHeightLimit} ${\n settings.setWidth\n } ${andOr} ${lang.transl('_高度')} ${settings.widthHeightLimit} ${\n settings.setHeight\n }`\n log.warning(text)\n }\n }\n\n // 提示输入的收藏数\n private getBMKNum() {\n if (!settings.BMKNumSwitch) {\n return\n }\n\n const min = settings.BMKNumMin\n const max = settings.BMKNumMax\n const average = settings.BMKNumAverage\n\n if (min >= 0) {\n log.warning(lang.transl('_收藏数大于') + min)\n }\n\n if (max >= 0) {\n log.warning(lang.transl('_收藏数小于') + max)\n }\n\n if (average >= 0 && settings.BMKNumAverageSwitch) {\n log.warning(`${lang.transl('_日均收藏数量')} >= ${average}`)\n }\n }\n\n // 提示宽高比设置\n private getRatio() {\n if (!settings.ratioSwitch) {\n return\n }\n\n switch (settings.ratio) {\n case 'square':\n log.warning(\n lang.transl('_设置了宽高比之后的提示', lang.transl('_正方形'))\n )\n break\n case 'horizontal':\n log.warning(\n lang.transl('_设置了宽高比之后的提示', lang.transl('_横图'))\n )\n break\n case 'vertical':\n log.warning(\n lang.transl('_设置了宽高比之后的提示', lang.transl('_竖图'))\n )\n break\n case 'userSet':\n log.warning(\n lang.transl('_宽高比') +\n ` ${settings.userRatioLimit} ` +\n settings.userRatio\n )\n break\n }\n }\n\n // 提示 id 范围设置\n private getIdRange() {\n if (!settings.idRangeSwitch) {\n return\n }\n\n log.warning(`id ${settings.idRange} ${settings.idRangeInput}`)\n }\n\n // 提示投稿时间设置\n private getPostDate() {\n if (!settings.postDate) {\n return\n }\n\n if (isNaN(settings.postDateStart) || isNaN(settings.postDateStart)) {\n const msg = lang.transl('_日期时间格式错误')\n this.showWarning(msg)\n } else {\n const start = new Date(settings.postDateStart).toLocaleString()\n const end = new Date(settings.postDateEnd).toLocaleString()\n log.warning(`${lang.transl('_时间范围')}: ${start} - ${end}`)\n }\n }\n\n // 提示文件体积设置\n private getSize() {\n if (!settings.sizeSwitch) {\n return\n }\n\n log.warning(`Size: ${settings.sizeMin}MiB - ${settings.sizeMax}MiB`)\n }\n\n private getBlockList() {\n if (!settings.userBlockList) {\n return\n }\n\n for (const uid of settings.blockList) {\n if (isNaN(Number.parseInt(uid))) {\n return this.showWarning(lang.transl('_用户ID必须是数字'))\n }\n }\n\n if (settings.blockList.length > 0) {\n log.warning(\n lang.transl('_用户阻止名单') + ': ' + settings.blockList.toString()\n )\n }\n }\n\n // ---------------- check ----------------\n\n // 检查下载的作品类型设置\n private checkDownType(workType: FilterOption['workType']) {\n switch (workType) {\n case -1:\n return settings.downType0 || settings.downType1 || settings.downType2\n case 0:\n return settings.downType0\n case 1:\n return settings.downType1\n case 2:\n return settings.downType2\n case 3:\n return settings.downType3\n default:\n return true\n }\n }\n\n private checkDownTypeByAge(xRestrict?: FilterOption['xRestrict']) {\n switch (xRestrict) {\n case 0:\n return settings.downAllAges\n case 1:\n return settings.downR18\n case 2:\n return settings.downR18G\n default:\n return true\n }\n }\n\n private checkAIWorkType(aiType?: FilterOption['aiType']) {\n switch (aiType) {\n case 0:\n return settings.UnknownAI\n case 1:\n return settings.notAIGenerated\n case 2:\n return settings.AIGenerated\n default:\n return true\n }\n }\n\n // 检查多图作品的图片数量限制\n private checkMultiImageWorkImageLimit(\n workType: FilterOption['workType'],\n pageCount: FilterOption['pageCount']\n ) {\n // 此过滤条件只检查插画和漫画,只对多图作品生效。如果图片数量小于 2 则不检查\n if (\n !settings.multiImageWorkImageLimitSwitch ||\n settings.multiImageWorkImageLimit < 1 ||\n pageCount === undefined ||\n pageCount < 2 ||\n (workType !== 0 && workType !== 1)\n ) {\n return true\n }\n\n return pageCount <= settings.multiImageWorkImageLimit\n }\n\n // 依据图片数量,检查下载的作品类型\n private checkPageCount(\n workType: FilterOption['workType'],\n pageCount: FilterOption['pageCount']\n ) {\n if (workType === undefined || pageCount === undefined) {\n return true\n }\n\n // 将动图视为单图\n if (workType === 2) {\n pageCount = 1\n }\n\n if (pageCount === 1) {\n return settings.downSingleImg\n }\n\n if (pageCount > 1) {\n return settings.downMultiImg\n }\n\n return false\n }\n\n // 检查过滤黑白图像设置\n private async checkBlackWhite(imgUrl: FilterOption['mini']) {\n // 如果没有图片网址,或者没有排除任何一个选项,则不检查\n if (!imgUrl || (settings.downColorImg && settings.downBlackWhiteImg)) {\n return true\n }\n\n // result 为 true,表示它是黑白图片,false 是彩色图片\n const result = await blackAndWhiteImage.check(imgUrl)\n\n return (\n (result && settings.downBlackWhiteImg) ||\n (!result && settings.downColorImg)\n )\n }\n\n // 检查作品是否符合已收藏、未收藏作品的设置\n private checkDownTypeByBmked(bookmarked: any) {\n // 如果没有参数,或者都没有排除\n if (bookmarked === undefined) {\n return true\n }\n\n if (settings.downNotBookmarked && settings.downBookmarked) {\n return true\n }\n\n if (!settings.downNotBookmarked && settings.downBookmarked) {\n // 只下载已收藏\n return !!bookmarked\n } else if (settings.downNotBookmarked && !settings.downBookmarked) {\n // 只下载未收藏\n return !bookmarked\n }\n\n return false\n }\n\n // 检查收藏数要求\n private readonly oneDayTime = 24 * 60 * 60 * 1000 // 一天的毫秒数\n private readonly minimumTime = 4 * 60 * 60 * 1000 // 检查日均收藏数量时,要求作品发表之后经过的时间大于这个值。因为发表之后经过时间很短的作品,其日均收藏数量非常不可靠,所以对于小于这个值的作品不进行日均收藏数量的检查。\n private checkBMK(\n bmk: FilterOption['bookmarkCount'],\n date: FilterOption['createDate']\n ) {\n if (bmk === undefined || !settings.BMKNumSwitch) {\n return true\n }\n\n // 检查收藏数量是否达到设置的最大值、最小值范围\n const checkNumber = bmk >= settings.BMKNumMin && bmk <= settings.BMKNumMax\n\n // 如果没有设置检查日均收藏,就直接返回收藏数量的检查结果\n if (!settings.BMKNumAverageSwitch || date === undefined) {\n return checkNumber\n }\n\n // 检查日均收藏\n const createTime = new Date(date).getTime()\n const nowTime = new Date().getTime()\n\n // 如果作品发表时间太短(小于 4 小时)\n if (nowTime - createTime < this.minimumTime) {\n // 如果 4 小时里的收藏数量已经达到要求,则保留这个作品\n // 如果 4 小时里的收藏数量没有达到要求,则不检查继续它的日均收藏数量,返回收藏数量的检查结果\n return bmk >= settings.BMKNumAverage ? true : checkNumber\n }\n\n const day = (nowTime - createTime) / this.oneDayTime // 计算作品发表以来的天数\n const average = bmk / day\n const checkAverage = average >= settings.BMKNumAverage\n\n // 返回结果。收藏数量和日均收藏并不互斥,两者只要有一个满足条件就会保留这个作品\n return checkNumber || checkAverage\n }\n\n // 检查作品是否符合包含 tag 的条件。返回值表示是否保留这个作品。\n private checkIncludeTag(tags: FilterOption['tags']) {\n if (\n !settings.needTagSwitch ||\n settings.needTag.length === 0 ||\n tags === undefined\n ) {\n return true\n }\n\n let result = false\n // 把设置的包含的 tag 转换成小写,生成数组\n const needTags = settings.needTag.map((val) => {\n return val.toLowerCase()\n })\n\n // 如果设置了必须的 tag\n if (needTags.length > 0) {\n // 把处理的 tag 变成小写,并且去重\n // 如果不区分大小写的话,Fate/grandorder 和 Fate/GrandOrder 会被算作符合两个 tag,所以用 Set 结构去重。测试 id 51811780\n const workTags: Set = new Set()\n for (const tag of tags) {\n workTags.add(tag.toLowerCase())\n }\n\n // 全部包含\n if (settings.needTagMode === 'all') {\n let tagNeedMatched = 0\n for (const tag of workTags) {\n for (const need of needTags) {\n if (tag === need) {\n tagNeedMatched++\n break\n }\n }\n }\n\n // 如果全部匹配\n if (tagNeedMatched >= needTags.length) {\n result = true\n }\n } else {\n // 包含任意一个\n for (const tag of workTags.values()) {\n if (needTags.includes(tag)) {\n result = true\n break\n }\n }\n }\n } else {\n result = true\n }\n\n return result\n }\n\n // 检查作品是否符合排除 tag 的条件, 只要作品包含其中一个就排除。返回值表示是否保留这个作品。\n private checkExcludeTag(tags: FilterOption['tags']) {\n if (\n !settings.notNeedTagSwitch ||\n settings.notNeedTag.length === 0 ||\n tags === undefined\n ) {\n return true\n }\n\n const notNeedTags = settings.notNeedTag.map((str) => str.toLowerCase())\n\n for (const tag of tags) {\n for (const notNeed of notNeedTags) {\n // 部分匹配\n if (settings.tagMatchMode === 'partial') {\n if (tag.toLowerCase().includes(notNeed)) {\n // 如果检查到了排除的 tag,进行复查\n\n // 使用空格对 tag 进行分词,尝试提高准确率\n // 例如:用户本意是排除腐向作品(bl),但是如果作品的 tag 是 Strike the Blood 或者 Blue Poison 都会导致作品被排除。这是错误的。\n // 所以在有分词的情况下,应当对分词进行全等匹配以提高准确度\n const words = tag.split(' ')\n if (words.length > 1) {\n // 如果 tag 有空格,依次使用每个分词进行全词匹配。如果有任一一个 tag 被匹配到则排除这个作品\n if (words.some((word) => word.toLowerCase() === notNeed)) {\n return false\n }\n } else {\n // 如果 tag 没有空格,直接返回结果\n return false\n }\n }\n } else {\n // 全词匹配\n if (tag.toLowerCase() === notNeed) {\n return false\n }\n }\n }\n }\n\n return true\n }\n\n // 检查作品是否符合过滤宽高的条件\n private checkWidthHeight(\n width: FilterOption['width'],\n height: FilterOption['height']\n ) {\n if (\n !settings.setWHSwitch ||\n width === undefined ||\n height === undefined ||\n width === 0 ||\n height === 0\n ) {\n return true\n }\n\n const setWidth = settings.setWidth\n const setHeight = settings.setHeight\n\n // 未设置宽高,或者设置的宽高都不合法\n if (setWidth === 0 && setHeight === 0) {\n return true\n }\n\n if (settings.widthHeightLimit === '>=') {\n // 大于等于\n if (settings.setWidthAndOr === '&') {\n return width >= setWidth && height >= setHeight\n } else {\n return width >= setWidth || height >= setHeight\n }\n } else if (settings.widthHeightLimit === '<=') {\n // 小于等于\n if (settings.setWidthAndOr === '&') {\n return width <= setWidth && height <= setHeight\n } else {\n return width <= setWidth || height <= setHeight\n }\n } else {\n // 精确等于\n if (settings.setWidthAndOr === '&') {\n return width === setWidth && height === setHeight\n } else {\n return width === setWidth || height === setHeight\n }\n }\n }\n\n // 检查作品是否符合宽高比条件\n private checkRatio(\n width: FilterOption['width'],\n height: FilterOption['height']\n ) {\n if (\n !settings.ratioSwitch ||\n width === undefined ||\n height === undefined ||\n width === 0 ||\n height === 0\n ) {\n return true\n }\n\n switch (settings.ratio) {\n case 'square':\n return width === height\n case 'horizontal':\n return width / height > 1\n case 'vertical':\n return width / height < 1\n case 'userSet':\n switch (settings.userRatioLimit) {\n case '>=':\n return width / height >= settings.userRatio\n case '=':\n return width / height === settings.userRatio\n case '<=':\n return width / height <= settings.userRatio\n }\n }\n }\n\n // 检查 id 范围设置\n private checkIdRange(id: FilterOption['id']) {\n if (id === undefined || !settings.idRangeSwitch) {\n return true\n }\n\n const setId = settings.idRangeInput\n let nowId: number\n\n if (typeof id !== 'number') {\n nowId = parseInt(id)\n } else {\n nowId = id\n }\n\n if (settings.idRange === '>') {\n return nowId > setId\n } else {\n return nowId < setId\n }\n }\n\n // 检查投稿时间设置\n private checkPostDate(date: FilterOption['createDate']) {\n if (!settings.postDate || date === undefined) {\n return true\n }\n\n const time = new Date(date).getTime()\n return time >= settings.postDateStart && time <= settings.postDateEnd\n }\n\n private checkIdPublishTime(\n id: FilterOption['id'],\n type: FilterOption['workTypeString']\n ) {\n if (id === undefined || !settings.postDate || !type) {\n return true\n }\n\n const _id = Number.parseInt(id as string)\n const _type = type === 'novels' ? 'novels' : 'illusts'\n const range = workPublishTime.getTimeRange(_id, _type)\n // console.log(new Date(range[0]).toLocaleString())\n // console.log(new Date(range[1]).toLocaleString())\n\n // 如果返回的数据中的开始时间大于用户设置的结束时间,则检查不通过\n // 如果返回的数据中的结束时间小于用户设置的开始时间,则检查不通过\n if (range[0] > settings.postDateEnd || range[1] < settings.postDateStart) {\n return false\n }\n\n // 如果两条记录的时间差大于用户设置的时间差,此时的数据不可采信。将其通过\n if (range[1] - range[0] >= settings.postDateEnd - settings.postDateStart) {\n return true\n }\n\n // 如果两条记录的时间范围与用户设置的时间范围只有部分重叠,此时的数据不可采信。将其通过\n if (\n range[0] < settings.postDateStart &&\n range[1] > settings.postDateStart &&\n range[1] < settings.postDateEnd\n ) {\n return true\n }\n if (\n range[0] > settings.postDateStart &&\n range[0] < settings.postDateEnd &&\n range[1] > settings.postDateEnd\n ) {\n return true\n }\n\n // 达到这里的数据是可信的,不会发生误判\n return (\n range[0] >= settings.postDateStart && range[1] <= settings.postDateEnd\n )\n }\n\n // 检查首次登场设置\n // yes_rank 是昨日排名,如果为 0,则此作品是“首次登场”的作品\n private checkDebut(yes_rank: FilterOption['yes_rank']) {\n if (!states.debut || yes_rank === undefined) {\n return true\n }\n\n return yes_rank === 0\n }\n\n private checkBlockList(userId: FilterOption['userId']) {\n if (!settings.userBlockList || userId === undefined) {\n return true\n }\n\n // 如果阻止名单里有这个用户 id,则返回 false 表示阻止这个作品\n return !settings.blockList.includes(userId)\n }\n\n // 检查文件体积\n private readonly MiB = 1024 * 1024\n private checkSize(size: FilterOption['size']) {\n if (!settings.sizeSwitch || size === undefined) {\n return true\n }\n return (\n size >= settings.sizeMin * this.MiB && size <= settings.sizeMax * this.MiB\n )\n }\n\n private async checkMuteUser(userId: FilterOption['userId']) {\n if (userId === undefined) {\n return true\n }\n return !(await mute.checkUser(userId))\n }\n\n private async checkMuteTag(tags: FilterOption['tags']) {\n if (tags === undefined) {\n return true\n }\n\n // 一旦检查到某个 tag 存在于 mute 列表里,就排除这个作品\n for (const tag of tags) {\n if (await mute.checkTag(tag)) {\n return false\n }\n }\n\n return true\n\n // return !(tags.some((mute.checkTag.bind(mute))))\n }\n\n private checkBlockTagsForSpecificUser(\n userId: FilterOption['userId'],\n tags: FilterOption['tags']\n ) {\n if (\n !settings.blockTagsForSpecificUser ||\n userId === undefined ||\n tags === undefined\n ) {\n return true\n }\n\n // 对结果取反\n return !blockTagsForSpecificUser.check(userId, tags)\n }\n\n // 如果设置项的值不合法,则显示提示\n private showWarning(msg: string) {\n EVT.fire('wrongSetting')\n msgBox.error(msg)\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.showTip()\n })\n }\n}\n\nconst filter = new Filter()\nexport { filter }\n","import { API } from '../API'\nimport { lang } from '../Lang'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\n\n// 获取用户在 Pixiv 里屏蔽的用户和/或 tag,进行过滤\nclass Mute {\n private userList: string[] = []\n private tagList: string[] = []\n private got = false // 是否获取过用户设置\n\n /**检查传入的 user id 是否包含在用户屏蔽设置里 */\n public async checkUser(id: number | string) {\n // 检查时,要求至少进行过一次获取用户设置的操作\n if (!this.got) {\n await this.getMuteSettings()\n }\n\n if (typeof id === 'number') {\n id = id.toString()\n }\n return this.userList.includes(id)\n }\n\n /**检查传入的 tag 是否包含在用户屏蔽设置里 */\n public async checkTag(tag: string) {\n if (!this.got) {\n await this.getMuteSettings()\n }\n\n return this.tagList.includes(tag)\n }\n\n // 此模块不会在初始化时获取设置,这是为了避免增加一次无谓的网络请求\n // 当执行此模块的 check 方法时,如果没有获取过设置,则此模块会主动获取一次设置\n // 其他模块也可以在必要的时候(如开始抓取时)直接执行此方法,预先获取设置,为后面的流程做准备\n public async getMuteSettings() {\n this.userList = []\n this.tagList = []\n\n return new Promise(async (resolve, reject) => {\n if (Tools.checkUserLogin() === false) {\n return resolve(401)\n }\n\n try {\n const response = await API.getMuteSettings()\n const items = response.body.mute_items\n for (const item of items) {\n // 如果这个屏蔽项未启用,则不保存\n if (item.enabled === false) {\n continue\n }\n if (item.type === 'user') {\n this.userList.push(item.value)\n }\n if (item.type === 'tag') {\n this.tagList.push(item.value)\n }\n }\n\n if (this.userList.length > 0 || this.tagList.length > 0) {\n let msg = lang.transl('_屏蔽设定') + ':
          '\n if (this.userList.length > 0) {\n msg += `Users: ${this.userList.join(',')}
          `\n }\n if (this.tagList.length > 0) {\n msg += `Tags: ${this.tagList.join(',')}
          `\n }\n log.warning(msg)\n }\n\n this.got = true\n return resolve(items)\n } catch (error) {\n // 当请求出错时,视为获取完成。不抛出 reject,否则会导致抓取中止\n this.got = true\n if (error.status === 401) {\n console.error(\n 'get mute settings error ' + lang.transl('_作品页状态码401')\n )\n }\n return resolve(error.status)\n }\n })\n }\n}\n\nconst mute = new Mute()\nexport { mute }\n","import { API } from '../API'\nimport { secretSignal } from '../utils/SecretSignal'\nimport { Utils } from '../utils/Utils'\nimport { illustsData } from '../store/workPublishTimeIllusts'\nimport { novelData as novelsData } from '../store/WorkPublishTimeNovels'\n\n// 获取指定 id 的发布时间范围\nclass WorkPublishTime {\n constructor() {\n this.illustsLength = illustsData.length\n this.novelsLength = novelsData.length\n this.bindEvents()\n }\n\n // 数据源是二维数组,里面的每一项都是一个由作品 id 和作品发布时间组成的子数组。如:\n // [[20, 1189343647000], [10000, 1190285376000], [20006, 1190613767000]]\n\n /**每隔 10000 个作品采集一次数据 */\n private readonly gap = 10000\n\n private illustsLength = 0\n private novelsLength = 0\n\n /**获取作品的发布时间范围。\n *\n * 返回值是一个包含 2 个数字的数组,第一个数字是开始时间,第二个数字是结束时间。 */\n public getTimeRange(\n id: number,\n type: 'illusts' | 'novels' = 'illusts'\n ): number[] {\n const data = type === 'illusts' ? illustsData : novelsData\n const length = type === 'illusts' ? this.illustsLength : this.novelsLength\n const index = Math.floor(id / this.gap)\n\n // 如果传入的 id 匹配到最后一条记录,则将结束时间设置为现在\n if (index >= length - 1) {\n return [data[length - 1][1], new Date().getTime()]\n }\n\n // 如果传入的 id 匹配到第一条记录,则直接返回数据\n if (index === 0) {\n return [data[0][1], data[1][1]]\n }\n\n const record = data[index]\n // 如果有与传入 id 相匹配的记录,则判断这个记录的 id 与传入的 id 哪个大\n // 如果记录的 id 等于传入的 id,则直接返回其时间戳\n if (record[0] === id) {\n return [record[1], record[1]]\n } else if (record[0] < id) {\n // 如果记录的 id 小于传入的 id,则此记录的时间作为开始时间,下一条记录的时间作为结束时间\n // 此时必然有下一条记录,因为前面已经处理了没有下一条记录的情况\n return [record[1], data[index + 1][1]]\n } else {\n // 如果记录的 id 大于传入的 id,则此记录的时间作为结束时间,上一条记录的时间作为开始时间\n // 此时必然有上一条记录,因为前面已经处理了没有上一条记录的情况\n return [data[index - 1][1], record[1]]\n }\n }\n\n private bindEvents() {\n secretSignal.register('ppdtask1', () => {\n // 上次记录到 116480000\n this.crawlData(115670000, 116482395)\n })\n\n secretSignal.register('ppdtask2', () => {\n // 上次记录到 21670000\n this.crawlData(21500000, 21679349, 'novels')\n })\n }\n\n private async crawlData(\n start: number,\n end: number,\n type: 'illusts' | 'novels' = 'illusts'\n ): Promise {\n console.log('start crawl time data')\n const result: number[][] = []\n\n const min_illust = 20 // 最早的插画作品\n const min_novel = 129 // 最早的小说作品\n\n let id = start\n if (type === 'illusts' && start < min_illust) {\n id = min_illust\n }\n if (type === 'novels' && start < min_novel) {\n id = min_novel\n }\n\n while (id < end) {\n const data = await this.crawlWork(id, type)\n result.push(data)\n // 使用下一个接近 10000 倍数的 id 进行下一次抓取\n id = (Math.floor(data[0] / this.gap) + 1) * this.gap\n }\n\n console.log(result)\n console.log('crawl time data complete')\n\n const resultList = await Utils.json2BlobSafe(result)\n for (const result of resultList) {\n Utils.downloadFile(\n result.url,\n `workPublishTime-${type}-${start}-${end}.json`\n )\n }\n\n return result\n }\n\n // 获取指定作品的发布时间\n // 如果抓取出错(如 404 错误),则顺延到下一个作品 id 重试抓取\n private async crawlWork(\n id: number,\n type: 'illusts' | 'novels' = 'illusts'\n ): Promise {\n return new Promise(async (resolve) => {\n // 为了避免出现 429 错误,每次抓取之间设置了间隔时间\n window.setTimeout(async () => {\n try {\n const data = await API[\n type === 'illusts' ? 'getArtworkData' : 'getNovelData'\n ](id.toString())\n if (data.error === false) {\n const dateStr = data.body.createDate\n if (!dateStr) {\n return resolve(this.crawlWork(++id, type))\n }\n const time = new Date(dateStr).getTime()\n return resolve([id, time])\n } else {\n return resolve(this.crawlWork(++id, type))\n }\n } catch (error) {\n return resolve(this.crawlWork(++id, type))\n }\n }, 1700)\n })\n }\n}\n\nconst workPublishTime = new WorkPublishTime()\nexport { workPublishTime }\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { store } from '../store/Store'\nimport { Utils } from '../utils/Utils'\nimport { Config } from '../Config'\nimport { theme } from '../Theme'\nimport { msgBox } from '../MsgBox'\nimport { toast } from '../Toast'\nimport { CopyToClipboard } from '../CopyToClipboard'\n\nexport type OutputData = {\n content: string\n title: string\n}\n\n// 输出面板\nclass OutputPanel {\n constructor() {\n this.addOutPutPanel()\n\n theme.register(this.outputPanel)\n lang.register(this.outputPanel)\n\n this.bindEvents()\n }\n\n private outputPanel!: HTMLDivElement // 输出面板\n\n private outputTitle!: HTMLDivElement // 标题容器\n\n private outputContent!: HTMLDivElement // 内容容器\n\n private copyBtn!: HTMLButtonElement\n\n private closeBtn!: HTMLDivElement\n\n private bindEvents() {\n this.closeBtn.addEventListener('click', () => {\n this.close()\n })\n\n this.outputPanel.addEventListener('click', (e) => {\n const ev = e || window.event\n ev.stopPropagation()\n })\n\n document.addEventListener('click', () => {\n if (this.outputPanel.style.display !== 'none') {\n this.close()\n }\n })\n\n window.addEventListener(EVT.list.closeCenterPanel, () => {\n this.close()\n })\n\n // 复制输出内容\n this.copyBtn.addEventListener('click', () => {\n const text = this.outputContent.innerText.replaceAll('\\n\\n', '\\n')\n CopyToClipboard.setClipboard(text)\n\n window.setTimeout(() => {\n this.close()\n }, 100)\n })\n\n window.addEventListener(EVT.list.output, (ev: CustomEventInit) => {\n this.output(ev.detail.data)\n })\n }\n\n private addOutPutPanel() {\n const html = `\n
          \n
          ×
          \n
          \n
          \n
          \n \n
          \n
          \n `\n document.body.insertAdjacentHTML('beforebegin', html)\n\n this.outputPanel = document.querySelector('.outputWrap')! as HTMLDivElement\n\n if (Config.mobile) {\n this.outputPanel.classList.add('mobile')\n }\n\n this.outputTitle = this.outputPanel.querySelector(\n '.outputTitle'\n )! as HTMLDivElement\n\n this.outputContent = this.outputPanel.querySelector(\n '.outputContent'\n )! as HTMLDivElement\n\n this.copyBtn = this.outputPanel.querySelector(\n '.outputCopy'\n )! as HTMLButtonElement\n\n this.closeBtn = this.outputPanel.querySelector(\n '.outputClose'\n )! as HTMLDivElement\n }\n\n // 输出内容\n private output(data: OutputData) {\n if (!data.content) {\n return toast.error(lang.transl('_没有数据可供使用'))\n }\n\n if (store.result.length < Config.outputMax) {\n this.copyBtn.disabled = false\n lang.updateText(this.outputTitle, data.title)\n this.outputContent.innerHTML = data.content\n this.outputPanel.style.display = 'block'\n } else {\n // 如果结果较多,则不直接输出,改为保存 txt 文件\n const file = new Blob([data.content], {\n type: 'text/plain',\n })\n const url = URL.createObjectURL(file)\n const fileName = `Output-${new Date().toLocaleString()}.txt`\n Utils.downloadFile(url, fileName)\n\n this.copyBtn.disabled = true\n msgBox.warning(lang.transl('_输出内容太多已经为你保存到文件'))\n }\n }\n\n // 关闭输出面板\n private close() {\n this.outputPanel.style.display = 'none'\n this.outputContent.innerHTML = ''\n lang.updateText(this.outputTitle, '_输出信息')\n }\n}\n\nnew OutputPanel()\n","import { store } from '../store/Store'\nimport { EVT } from '../EVT'\nimport { fileName } from '../FileName'\nimport { lang } from '../Lang'\nimport { Config } from '../Config'\nimport { toast } from '../Toast'\nimport { Tools } from '../Tools'\nimport { Colors } from '../Colors'\n\n// 预览文件名\nclass PreviewFileName {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.previewFileName, () => {\n this.previewFileName()\n })\n\n const prevBtn = Tools.addBtn('namingBtns', Colors.bgGreen, '_预览文件名')\n\n prevBtn.addEventListener(\n 'click',\n () => {\n EVT.fire('previewFileName')\n },\n false\n )\n\n prevBtn.style.display = 'none'\n\n window.addEventListener(EVT.list.crawlStart, () => {\n prevBtn.style.display = 'none'\n })\n\n window.addEventListener(EVT.list.readyDownload, () => {\n prevBtn.style.display = 'flex'\n })\n }\n\n private previewFileName() {\n if (store.result.length === 0) {\n return toast.error(lang.transl('_没有可用的抓取结果'))\n }\n\n // 使用数组储存和拼接字符串,提高性能\n const resultArr: string[] = []\n let result = ''\n\n const length = store.result.length\n if (length < Config.outputMax) {\n // 输出结果,添加 html 标签\n for (let i = 0; i < length; i++) {\n const data = store.result[i]\n\n // 生成文件名,并为文件名添加颜色显示\n // 只有当文件数量少于限制值时才添加颜色。这是因为添加颜色会导致生成的 HTML 元素数量增多,渲染和复制时的资源占用增多\n const part = fileName.createFileName(data).split('/')\n const length = part.length\n for (let i = 0; i < length; i++) {\n const str = part[i]\n if (i < length - 1) {\n // 如果不是最后一项,说明是文件夹名,添加特定的颜色\n part[i] = `${str}`\n } else {\n // 最后一项是文件名,设置为黑色\n part[i] = `${str}`\n }\n }\n const fullNameHtml = part.join('/')\n\n if (data.type !== 3) {\n // 对于图片作品,在文件名前面显示默认文件名\n // 默认文件名有两种选择,一种是使用 url 里的文件名,一种是使用 data.id。这里使用前者,方便用户用其他下载软件下载后,复制输出的内容制作重命名脚本\n const defaultName = data.original.replace(/.*\\//, '')\n const nowResult = `

          ${defaultName}: ${fullNameHtml}

          `\n resultArr.push(nowResult)\n } else {\n // 小说作品不显示原文件名(因为没有此数据)\n const nowResult = `

          ${fullNameHtml}

          `\n resultArr.push(nowResult)\n }\n }\n\n result = resultArr.join('')\n } else {\n // 不生成 html 标签,只生成纯文本,保存为 txt 文件\n for (let i = 0; i < length; i++) {\n const data = store.result[i]\n const fullName = fileName.createFileName(data)\n\n if (data.type !== 3) {\n // 图片作品,在文件名前面显示文件 url 里的文件名\n let defaultName = data.original.replace(/.*\\//, '')\n resultArr.push(`${defaultName}: ${fullName}`)\n } else {\n // 小说作品不显示原文件名(因为没有此数据)\n resultArr.push(fullName)\n }\n }\n\n result = resultArr.join('\\n')\n }\n\n EVT.fire('output', {\n content: result,\n title: '_预览文件名',\n })\n }\n}\n\nnew PreviewFileName()\n","import { store } from '../store/Store'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { settings } from '../setting/Settings'\nimport { toast } from '../Toast'\nimport { Config } from '../Config'\n\n// 显示 url\nclass ShowURLs {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.showURLs, () => {\n this.showURLs()\n })\n }\n\n private showURLs() {\n const urls: string[] = []\n const size = settings.imageSize\n for (const data of store.result) {\n // 只输出图片文件的 url\n // 小说文件没有固定的 url 所以不输出\n if (data.type !== 3) {\n urls.push(data[size])\n }\n }\n\n if (store.result.length === 0 || urls.length === 0) {\n return toast.error(lang.transl('_没有可用的抓取结果'))\n }\n\n let result = ''\n if (store.result.length < Config.outputMax) {\n result = urls.join('
          ')\n } else {\n result = urls.join('\\n')\n }\n\n EVT.fire('output', {\n content: result,\n title: '_复制url',\n })\n }\n}\n\nnew ShowURLs()\n","import { API } from '../API'\nimport { lang } from '../Lang'\nimport { BookmarkResult } from '../crawl/CrawlResult'\nimport { EVT } from '../EVT'\nimport { toast } from '../Toast'\nimport { bookmark } from '../Bookmark'\nimport { Tools } from '../Tools'\nimport { log } from '../Log'\nimport { msgBox } from '../MsgBox'\nimport { setTimeoutWorker } from '../SetTimeoutWorker'\nimport { Config } from '../Config'\n\n// 一键收藏所有作品\n// 可以传入页面上的作品元素列表,也可以直接传入 id 列表\n// 一次任务里要么全部传递插画,要么全部传递小说,不要混合\ntype WorkType = 'illusts' | 'novels'\n\nexport interface IDList {\n type: WorkType\n id: string\n}\n\ntype BookmarkData = BookmarkResult & {\n type: WorkType\n}\n\nclass BookmarkAllWorks {\n constructor(tipWrap?: HTMLElement) {\n if (tipWrap) {\n this.tipWrap = tipWrap\n }\n }\n\n private idList: IDList[] = []\n\n private bookmarKData: BookmarkData[] = []\n\n public tipWrap: HTMLElement = document.createElement('button')\n\n // 传递 workList,这是作品列表元素的合集。代码会尝试分析每个作品元素中的超链接,提取出作品 id\n // 如果传递的作品是本页面上的作品,可以省略 type。代码会根据页面 url 判断是图片还是小说。\n // 如果传递的作品不是本页面上的,为防止误判,需要显式传递 type\n public sendWorkList(\n list: NodeListOf | HTMLElement[],\n type?: WorkType\n ) {\n this.reset()\n\n type =\n type ??\n (window.location.pathname.includes('/novel') ? 'novels' : 'illusts')\n\n const regExp = type === 'illusts' ? /\\/artworks\\/(\\d*)/ : /\\?id=(\\d*)/\n for (const el of list) {\n const a = el.querySelector('a')\n if (a) {\n // \"https://www.pixiv.net/artworks/82618568\"\n // \"https://www.pixiv.net/novel/show.php?id=12350618\"\n const test = regExp.exec(a.href)\n if (test && test.length > 1) {\n this.idList.push({\n type,\n id: test[1],\n })\n }\n }\n }\n\n this.startBookmark()\n }\n\n // 直接传递 id 列表\n public sendIdList(list: IDList[]) {\n this.reset()\n\n this.idList = list\n\n this.startBookmark()\n }\n\n private reset() {\n this.idList = []\n this.bookmarKData = []\n }\n\n // 启动收藏流程\n private async startBookmark() {\n if (this.idList.length === 0) {\n toast.error(lang.transl('_没有数据可供使用'))\n return\n }\n\n this.tipWrap.textContent = `Checking`\n this.tipWrap.setAttribute('disabled', 'disabled')\n\n await this.getTagData()\n await this.addBookmarkAll()\n this.complete()\n }\n\n // 获取每个作品的 tag 数据\n private async getTagData() {\n return new Promise(async (resolve, reject) => {\n for (const id of this.idList) {\n this.tipWrap.textContent = `Get data ${this.bookmarKData.length} / ${this.idList.length}`\n\n try {\n // 如果作品数量大于一定数量,则启用慢速抓取,以免在获取作品数据时发生 429 错误\n await new Promise(async (res) => {\n setTimeoutWorker.set(\n async () => {\n let data\n if (id.type === 'novels') {\n data = await API.getNovelData(id.id)\n } else {\n data = await API.getArtworkData(id.id)\n }\n\n this.bookmarKData.push({\n type: id.type,\n id: data.body.id,\n tags: Tools.extractTags(data),\n restrict: false,\n })\n res(id)\n },\n this.idList.length >= 120 ? Config.slowCrawlDealy : 0\n )\n })\n } catch (error) {\n // 捕获错误,主要是为了处理 429 错误。但是现在只会提示,没有重试。因为需要过 3 分钟之后才能重试成功,等待时间太长了\n const e = error as {\n status: number\n statusText: string\n }\n let msg = ''\n if (e.status) {\n msg = `${lang.transl('_发生错误原因')}${lang.transl('_错误代码')}${\n e.status\n }. ${lang.transl('_请稍后重试')}`\n } else {\n msg = `${lang.transl('_发生错误原因')}${lang.transl(\n '_未知错误'\n )}${lang.transl('_请稍后重试')}`\n }\n\n // 显示提示,并中止执行\n log.error(msg)\n msgBox.error(msg)\n this.tipWrap.textContent = `× Error`\n this.tipWrap.removeAttribute('disabled')\n EVT.fire('bookmarkModeEnd')\n return reject()\n }\n }\n\n resolve()\n })\n }\n\n // 给所有作品添加收藏(之前收藏过的,新 tag 将覆盖旧 tag)\n private async addBookmarkAll() {\n return new Promise(async (resolve) => {\n let index = 0\n for (const data of this.bookmarKData) {\n this.tipWrap.textContent = `Add bookmark ${index} / ${this.bookmarKData.length}`\n\n await bookmark.add(\n data.id,\n data.type,\n data.tags,\n undefined,\n undefined,\n true\n )\n index++\n }\n\n resolve()\n })\n }\n\n private complete() {\n this.tipWrap.textContent = `✓ Complete`\n this.tipWrap.removeAttribute('disabled')\n toast.success(lang.transl('_收藏作品完毕'))\n EVT.fire('bookmarkModeEnd')\n }\n}\n\nexport { BookmarkAllWorks }\n","import { API } from '../API'\nimport { Tools } from '../Tools'\nimport {\n BookmarkData,\n NovelCommonData,\n BookmarkResult,\n ArtworkCommonData,\n} from '../crawl/CrawlResult'\nimport { toast } from '../Toast'\nimport { bookmark } from '../Bookmark'\nimport { lang } from '../Lang'\n\n// 给收藏页面里的未分类作品批量添加 tag\nclass BookmarksAddTag {\n constructor(btn: HTMLButtonElement) {\n this.btn = btn\n this.bindEvents()\n }\n\n private type: 'illusts' | 'novels' = 'illusts' // 页面是图片还是小说\n\n private addTagList: BookmarkResult[] = [] // 需要添加 tag 的作品的数据\n\n private addIndex = 0 // 添加 tag 时的计数\n\n private btn: HTMLButtonElement\n\n private readonly once = 100 // 一次请求多少个作品的数据\n\n private bindEvents() {\n this.btn.addEventListener('click', () => {\n // 每次点击重置状态\n this.addTagList = []\n this.addIndex = 0\n\n this.btn.setAttribute('disabled', 'disabled')\n this.btn.textContent = `Checking`\n\n if (window.location.pathname.includes('/novel')) {\n this.type = 'novels'\n }\n\n this.readyAddTag()\n })\n }\n\n // 准备添加 tag。loop 表示这是第几轮循环\n private async readyAddTag(loop: number = 0) {\n const offset = loop * this.once // 一次请求只能获取一部分,所以可能有多次请求,要计算偏移量\n let errorFlag = false\n\n // 发起请求\n const [showData, hideData]: BookmarkData[] = await Promise.all([\n API.getBookmarkData(\n Tools.getUserId(),\n this.type,\n '未分類',\n offset,\n false\n ),\n API.getBookmarkData(Tools.getUserId(), this.type, '未分類', offset, true),\n ]).catch((error) => {\n if (error.status && error.status === 403) {\n this.btn!.textContent = `× Permission denied`\n }\n errorFlag = true\n return []\n })\n\n if (errorFlag) {\n return\n }\n\n // 保存有用的数据\n for (const data of [showData, hideData]) {\n const works = data.body.works\n // 如果作品的 bookmarkData 为假说明没有实际数据,可能是在获取别人的收藏数据。\n if (works.length > 0 && works[0].bookmarkData) {\n works.forEach((work: ArtworkCommonData | NovelCommonData) => {\n // 如果该作品没有标签,则不添加它\n // 这个作品也许确实没有标签,但绝大多数情况下,这表示这个作品已经被删除而不存在了(404)\n if (work.tags.length > 0) {\n this.addTagList.push({\n id: work.id,\n tags: work.tags,\n restrict: work.bookmarkData!.private,\n })\n }\n })\n }\n }\n\n // 已删除或无法访问的作品不会出现在请求结果里。本来一次请求 100 个,但返回的结果有可能会比 100 个少,甚至极端情况下是 0。所以实际获取到的作品可能比 total 数量少,这是正常的。\n\n // 判断是否请求了所有未分类的作品数据\n const total = offset + this.once\n if (total >= showData.body.total && total >= hideData.body.total) {\n if (this.addTagList.length === 0) {\n // 如果结果为空,不需要处理\n this.btn!.textContent = `✓ No need`\n this.btn!.removeAttribute('disabled')\n return\n } else {\n // 开始添加 tag\n this.addTag()\n }\n } else {\n // 需要继续获取\n this.readyAddTag(++loop)\n }\n }\n\n // 给未分类作品添加 tag\n private async addTag(): Promise {\n const item = this.addTagList[this.addIndex]\n\n await bookmark.add(item.id, this.type, item.tags, true, item.restrict, true)\n\n if (this.addIndex < this.addTagList.length - 1) {\n this.addIndex++\n this.btn!.textContent = `${this.addIndex} / ${this.addTagList.length}`\n // 继续添加下一个\n return this.addTag()\n } else {\n // 添加完成\n this.btn!.textContent = `✓ Complete`\n this.btn!.removeAttribute('disabled')\n toast.success(lang.transl('_收藏作品完毕'))\n }\n }\n}\n\nexport { BookmarksAddTag }\n","// 删除页面上的作品\nimport { log } from '../Log'\nimport { lang } from '../Lang'\nimport { Colors } from '../Colors'\nimport { Tools } from '../Tools'\nimport { states } from '../store/States'\nimport { EVT } from '../EVT'\nimport { msgBox } from '../MsgBox'\nimport { Utils } from '../utils/Utils'\nimport { store } from '../store/Store'\nimport { toast } from '../Toast'\n\nclass DeleteWorks {\n constructor(worksSelectors: string) {\n this.worksSelector = worksSelectors\n\n this.icon = this.createDeleteIcon()\n\n this.bindEvents()\n }\n\n private worksSelector: string = '' // 选择页面上所有作品的选择器\n\n private multipleSelector: string = '' // 多图作品特有的元素的标识\n\n private ugoiraSelector: string = '' // 动图作品特有的元素的标识\n\n private delMode: boolean = false // 是否处于手动删除作品状态\n\n private delBtn: HTMLButtonElement = document.createElement('button')\n\n private icon?: HTMLElement // 手动删除时,显示一个指示图标\n private readonly iconId = 'deleteWorkEl'\n private left = 0\n private top = 0\n private half = 12\n\n private deleteWorkCallback: Function = () => {} // 保存手动删除作品的回调函数,因为可能会多次绑定手动删除事件,所以需要保存传入的 callback 备用\n\n private createDeleteIcon() {\n const el = document.createElement('div')\n el.id = this.iconId\n document.body.appendChild(el)\n return el\n }\n\n private updateDeleteIcon() {\n if (!this.icon) {\n return\n }\n\n this.icon.style.display = this.delMode ? 'block' : 'none'\n\n // 如果指示图标处于隐藏状态,就不会更新其坐标。这样可以优化性能\n if (this.delMode) {\n this.icon.style.left = this.left - this.half + 'px'\n this.icon.style.top = this.top - this.half + 'px'\n }\n }\n\n private bindEvents() {\n // 作品列表更新后,需要重新给作品绑定手动删除事件\n window.addEventListener(EVT.list.worksUpdate, () => {\n if (this.delMode) {\n this.bindDeleteEvent()\n }\n })\n\n // 切换页面时,退出手动删除模式\n window.addEventListener(EVT.list.pageSwitch, () => {\n if (this.delMode) {\n this.toggleDeleteMode()\n }\n })\n\n // 鼠标移动时保存鼠标的坐标\n window.addEventListener(\n 'mousemove',\n (ev) => {\n this.moveEvent(ev)\n },\n true\n )\n }\n\n // 监听鼠标移动\n private moveEvent(ev: MouseEvent) {\n this.left = ev.x\n this.top = ev.y\n this.updateDeleteIcon()\n }\n\n // 清除多图作品的按钮\n public addClearMultipleBtn(selector: string, callback: Function = () => {}) {\n this.multipleSelector = selector\n\n Tools.addBtn('crawlBtns', Colors.bgRed, '_清除多图作品').addEventListener(\n 'click',\n () => {\n if (states.busy) {\n msgBox.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n if (store.resultMeta.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n this.clearMultiple()\n callback()\n },\n false\n )\n }\n\n // 清除动图作品的按钮\n public addClearUgoiraBtn(selector: string, callback: Function = () => {}) {\n this.ugoiraSelector = selector\n\n Tools.addBtn('crawlBtns', Colors.bgRed, '_清除动图作品').addEventListener(\n 'click',\n () => {\n if (states.busy) {\n msgBox.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n if (store.resultMeta.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n\n this.ClearUgoira()\n callback()\n },\n false\n )\n }\n\n // 手动删除作品的按钮\n public addManuallyDeleteBtn(callback: Function = () => {}) {\n this.deleteWorkCallback = callback\n this.delBtn = Tools.addBtn(\n 'crawlBtns',\n Colors.bgRed,\n '_手动删除作品',\n '_手动删除作品Title'\n )\n\n this.delBtn.addEventListener('click', () => {\n this.toggleDeleteMode()\n })\n }\n\n // 切换删除模式\n private toggleDeleteMode() {\n if (store.resultMeta.length === 0) {\n toast.error(lang.transl('_没有可用的抓取结果'))\n return\n }\n this.delMode = !this.delMode\n\n this.bindDeleteEvent()\n\n this.updateDeleteIcon()\n\n if (this.delMode) {\n lang.updateText(this.delBtn, '_退出手动删除')\n window.setTimeout(() => {\n EVT.fire('closeCenterPanel')\n }, 100)\n } else {\n lang.updateText(this.delBtn, '_手动删除作品')\n }\n }\n\n // 清除多图作品\n private clearMultiple() {\n const allPicArea = document.querySelectorAll(this.worksSelector)\n allPicArea.forEach((el) => {\n if (el.querySelector(this.multipleSelector)) {\n el.remove()\n }\n })\n this.showWorksCount()\n }\n\n // 清除动图作品\n private ClearUgoira() {\n const allPicArea = document.querySelectorAll(this.worksSelector)\n allPicArea.forEach((el) => {\n if (el.querySelector(this.ugoiraSelector)) {\n el.remove()\n }\n })\n this.showWorksCount()\n }\n\n // 给作品绑定手动删除事件\n // 删除作品后,回调函数可以接收到被删除的元素\n private bindDeleteEvent() {\n const listElement: NodeListOf = document.querySelectorAll(\n this.worksSelector\n )\n listElement.forEach((el) => {\n el.onclick = (ev) => {\n if (this.delMode) {\n ev.preventDefault()\n\n if (states.busy) {\n msgBox.error(lang.transl('_当前任务尚未完成'))\n return\n }\n\n const target = ev.currentTarget as HTMLElement\n target.remove()\n this.showWorksCount()\n this.deleteWorkCallback(target)\n }\n }\n })\n }\n\n // 显示调整后,列表里的作品数量\n private showWorksCount() {\n const selector = this.worksSelector\n log.success(\n lang.transl('_调整完毕', Utils.getVisibleEl(selector).length.toString()),\n 2,\n false\n )\n }\n}\n\nexport { DeleteWorks }\n","import { pageType } from '../PageType'\nimport { EVT } from '../EVT'\n\n// 管理所有页面的销毁事件\n// 页面把自己的 destory 函数注册到这个类里,当页面类型变化时会自动执行对应\nclass DestroyManager {\n constructor() {\n this.bindEvents()\n }\n\n private list: Map = new Map()\n private lastType = pageType.type\n\n private bindEvents() {\n window.addEventListener(EVT.list.pageSwitchedTypeChange, () => {\n const fun = this.list.get(this.lastType)\n fun && fun()\n\n this.lastType = pageType.type\n })\n }\n\n // 接收 destory 函数,并关联到对应的页面类型\n public register(fun: Function) {\n this.list.set(pageType.type, fun)\n }\n}\n\nconst destroyManager = new DestroyManager()\nexport { destroyManager }\n","import { theme } from '../Theme'\nimport { Tools } from '../Tools'\nimport { pageType } from '../PageType'\nimport { settings } from '../setting/Settings'\nimport { EVT } from '../EVT'\nimport { ImageViewer } from '../ImageViewer'\n\nclass DisplayThumbnailListOnMultiImageWorkPage {\n constructor() {\n this.bindEvents()\n }\n\n private readonly ID = 'viewerWarpper'\n private readonly insertTarget = 'main figcaption'\n private waitTimer: number | undefined\n\n private bindEvents() {\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.init()\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'displayThumbnailListOnMultiImageWorkPage') {\n data.value ? this.init() : this.remove()\n }\n })\n }\n\n private init() {\n this.remove()\n\n if (!settings.displayThumbnailListOnMultiImageWorkPage) {\n return\n }\n\n if (\n pageType.type !== pageType.list.Artwork &&\n pageType.type !== pageType.list.Unlisted\n ) {\n return\n }\n\n window.setTimeout(() => {\n this.display()\n }, 0)\n }\n\n private remove() {\n // 删除之前创建的元素,因为切换页面时它不会被自动清理\n document.querySelector(`#${this.ID}`)?.remove()\n window.clearTimeout(this.waitTimer)\n }\n\n private async display() {\n // 等待要插入的目标元素生成\n const target = document.querySelector(this.insertTarget)\n if (!target) {\n this.waitTimer = window.setTimeout(() => {\n this.display()\n }, 300)\n return\n }\n\n // 把缩略图列表添加到页面上\n const viewer = new ImageViewer({\n workId: Tools.getIllustId(),\n imageNumber: 2,\n })\n const wrap = await viewer.init()\n if (wrap) {\n wrap.id = this.ID\n theme.register(wrap)\n wrap.style.display = 'block'\n target.insertAdjacentElement('beforebegin', wrap)\n }\n }\n}\n\nnew DisplayThumbnailListOnMultiImageWorkPage()\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { theme } from '../Theme'\nimport { settings } from '../setting/Settings'\nimport { Config } from '../Config'\n\n// 在搜索页面按收藏数快速筛选\nclass FastScreen {\n constructor() {\n this.create()\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'showFastSearchArea') {\n this.setDisplay()\n }\n })\n\n window.addEventListener(EVT.list.pageSwitchedTypeChange, () => {\n this.destroy()\n })\n }\n\n private readonly fastScreenArea = document.createElement('div')\n\n private readonly tagList = [\n '100users入り',\n '500users入り',\n '1000users入り',\n '5000users入り',\n '10000users入り',\n '20000users入り',\n '30000users入り',\n '50000users入り',\n '100000users入り',\n ]\n\n // 添加快速筛选功能\n private create() {\n // 判断插入点的元素有没有加载出来\n const selector = Config.mobile ? '.search-header' : '#root>div'\n const target = document.querySelector(selector) as HTMLDivElement\n\n if (!target) {\n setTimeout(() => {\n this.create()\n }, 300)\n return\n }\n\n this.fastScreenArea.className = 'fastScreenArea'\n\n this.tagList.forEach((tag) => {\n const btn = document.createElement('button')\n btn.innerText = tag\n btn.onclick = () => {\n this.openFastScreenLink(tag)\n }\n this.fastScreenArea.appendChild(btn)\n })\n\n theme.register(this.fastScreenArea)\n\n target.insertAdjacentElement('afterend', this.fastScreenArea)\n\n this.setDisplay()\n }\n\n // 设置是否显示快速筛选区域\n private setDisplay() {\n this.fastScreenArea.style.display = settings.showFastSearchArea\n ? 'block'\n : 'none'\n }\n\n // 打开快速筛选链接\n private openFastScreenLink(fastTag: string) {\n // 拼接 tag。因为搜索页面可以无刷新切换搜索的 tag,所以需要动态获取当前 tag\n const nowTag = Tools.getTagFromURL()\n const firstTag = nowTag.split(' ')[0]\n const fullTag = firstTag + ' ' + fastTag\n\n // 用组合后的 tag 替换掉当前网址里的 tag\n let newURL = location.href.replace(\n encodeURIComponent(nowTag),\n encodeURIComponent(fullTag)\n )\n\n // 如果 url 路径的 tags/ 后面没有子路径,代表是在“顶部”分类。\n // “顶部”分类里始终是严格的搜索模式,即使添加 s_mode=s_tag 也无效,这经常会导致搜索结果为 0。所以如果分类是“顶部”,就自动修改为“插画·漫画”分类以获取更多搜索结果。\n // “顶部”分类的 url 示例\n // https://www.pixiv.net/tags/%E9%9B%AA%E8%8A%B1%E3%83%A9%E3%83%9F%E3%82%A3%2010000users%E5%85%A5%E3%82%8A?s_mode=s_tag\n const str = new URL(newURL).pathname.split('tags/')[1]\n if (str.includes('/') === false) {\n // 在 tag 后面添加“插画·漫画”分类的路径\n newURL = newURL.replace(str, str + '/artworks')\n }\n\n // 设置宽松的搜索模式 s_mode=s_tag\n const u = new URL(newURL)\n u.searchParams.set('s_mode', 's_tag')\n\n location.href = u.toString()\n }\n\n private destroy() {\n this.fastScreenArea.remove()\n }\n}\n\nexport { FastScreen }\n","// 作品页面内的快速收藏功能\nimport { API } from '../API'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { token } from '../Token'\nimport { pageType } from '../PageType'\nimport { ArtworkData, NovelData } from '../crawl/CrawlResult'\nimport { bookmark } from '../Bookmark'\nimport { workToolBar } from '../WorkToolBar'\nimport { downloadOnClickBookmark } from '../download/DownloadOnClickBookmark'\nimport { showHelp } from '../ShowHelp'\nimport { Config } from '../Config'\n\ntype WorkType = 'illusts' | 'novels'\n\nclass QuickBookmark {\n constructor() {\n workToolBar.register(\n (\n toolbar: HTMLDivElement,\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) => {\n this.init(toolbar, pixivBMKDiv, likeBtn)\n }\n )\n }\n\n private isNovel = false\n // 初始化时,获取作品数据\n private workData: ArtworkData | NovelData | undefined\n private isBookmarked: boolean | undefined\n\n private ob: MutationObserver | undefined // 监视心形收藏按钮变化\n private btn: HTMLAnchorElement = document.createElement('a') // 快速收藏按钮\n private readonly btnId = 'quickBookmarkEl' // 快速收藏按钮的 id\n private readonly redClass = 'bookmarkedColor' // 收藏后的红色的颜色值\n\n private async init(\n toolbar: HTMLDivElement,\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) {\n // 没有 token 就不能进行收藏\n if (!token.token) {\n return\n }\n\n if (\n pageType.type !== pageType.list.Artwork &&\n pageType.type !== pageType.list.Novel\n ) {\n return\n }\n\n this.isNovel = pageType.type === pageType.list.Novel\n\n // 删除可能存在的旧的快速收藏按钮\n const oldBtn = toolbar.querySelector('#' + this.btnId) as HTMLAnchorElement\n if (oldBtn) {\n oldBtn.remove()\n }\n\n // 判断这个作品是否收藏过了\n this.workData = await this.getWorkData()\n this.isBookmarked = !!this.workData.body.bookmarkData\n\n // 监听心形收藏按钮从未收藏到收藏的变化\n if (!this.isBookmarked) {\n if (!Config.mobile) {\n // 桌面端\n // 没有收藏时,心形按钮的第一个子元素是 button。收藏之后,button 被移除,然后添加一个 a 标签\n this.ob = new MutationObserver((mutations) => {\n for (const change of mutations) {\n if (change.type === 'childList') {\n const added = change.addedNodes\n if (added.length > 0 && added[0].nodeName === 'A') {\n this.isBookmarked = true\n this.redQuickBookmarkBtn()\n }\n }\n }\n })\n this.ob.observe(pixivBMKDiv, {\n childList: true,\n })\n } else {\n // 移动端\n // 点击心形按钮收藏作品后,不会添加 a 标签,也不会跳转到编辑收藏的页面,仅仅会改变 path 的 fill 颜色。\n const path = pixivBMKDiv.querySelector('path')\n if (!path) {\n return\n }\n this.ob = new MutationObserver((mutations) => {\n if (path.getAttribute('fill') === '#FF4060') {\n this.isBookmarked = true\n this.redQuickBookmarkBtn()\n } else {\n this.isBookmarked = false\n this.resetQuickBookmarkBtn()\n }\n })\n this.ob.observe(path, {\n attributes: true,\n attributeFilter: ['fill'],\n })\n }\n }\n\n // 添加快速收藏按钮\n this.btn = this.createBtn()\n lang.register(this.btn)\n toolbar.insertBefore(this.btn, toolbar.childNodes[3])\n\n if (this.isBookmarked) {\n this.redQuickBookmarkBtn()\n } else {\n this.btn.addEventListener('click', () => {\n // 添加收藏\n this.addBookmark(pixivBMKDiv, likeBtn)\n\n // 下载这个作品\n this.sendDownload()\n\n showHelp.show(\n 'tipBookmarkButton',\n lang.transl('_下载器的收藏按钮默认会添加作品的标签')\n )\n })\n }\n\n // 使用快捷键 Ctrl + B 点击快速收藏按钮\n window.addEventListener('keydown', (ev) => {\n if (ev.code === 'KeyB' && ev.ctrlKey) {\n this.btn && this.btn.click()\n }\n })\n }\n\n private sendDownload() {\n if (Tools.isArtworkData(this.workData!)) {\n downloadOnClickBookmark.send(this.workData!.body.illustId)\n } else {\n downloadOnClickBookmark.send(this.workData!.body.id, 'novels')\n }\n }\n\n // 创建快速收藏按钮\n private createBtn() {\n const btn = document.createElement('a')\n btn.id = this.btnId\n btn.textContent = '✩'\n btn.href = 'javascript:void(0)'\n btn.dataset.xztitle = '_快速收藏'\n return btn\n }\n\n private async getWorkData() {\n // 这里不能从缓存的数据中获取作品数据,因为作品的收藏状态可能已经发生了变化\n if (this.isNovel) {\n return await API.getNovelData(Tools.getNovelId())\n } else {\n return await API.getArtworkData(Tools.getIllustId())\n }\n }\n\n private async addBookmark(\n pixivBMKDiv: HTMLDivElement,\n likeBtn: HTMLButtonElement\n ) {\n const type = this.isNovel ? 'novels' : 'illusts'\n const id = this.isNovel ? Tools.getNovelId() : Tools.getIllustId()\n\n // 移动端不自动点赞和设置点赞按钮的颜色,因为切换作品后元素没有重新生成,样式会依旧存在\n if (!Config.mobile) {\n this.like(type, id, likeBtn)\n }\n\n if (this.isBookmarked) {\n return\n }\n\n // 先模拟点击 Pixiv 原本的收藏按钮,这样可以显示推荐作品\n // 这会发送一次 Pixiv 原生的收藏请求\n this.clickPixivBMKBtn(pixivBMKDiv)\n\n // 然后再由下载器发送收藏请求\n // 因为下载器的收藏按钮具有添加标签、非公开收藏等功能,所以要在后面执行,覆盖掉 Pixiv 原生收藏的效果\n window.setTimeout(async () => {\n const res = await bookmark.add(\n id,\n type,\n Tools.extractTags(this.workData!)\n )\n if (res !== 429) {\n // 收藏成功之后\n this.isBookmarked = true\n this.redQuickBookmarkBtn()\n }\n }, 100)\n }\n\n // 点赞这个作品\n private like(type: WorkType, id: string, likeBtn: HTMLButtonElement) {\n API.addLike(id, type, token.token)\n likeBtn.style.color = '#0096fa'\n }\n\n private getEditBookmarkLink() {\n if (this.isNovel) {\n return `/novel/bookmark_add.php?id=${Tools.getNovelId()}`\n } else {\n return `/bookmark_add.php?type=illust&illust_id=${Tools.getIllustId()}`\n }\n }\n\n // 如果这个作品已收藏,则改变快速收藏按钮\n private redQuickBookmarkBtn() {\n this.btn.classList.add(this.redClass)\n this.btn.href = this.getEditBookmarkLink()\n }\n\n // 如果这个作品从已收藏变成未收藏,则改变快速收藏按钮\n private resetQuickBookmarkBtn() {\n this.btn.classList.remove(this.redClass)\n this.btn.href = 'javascript:void(0)'\n }\n\n private clickPixivBMKBtn(pixivBMKDiv: HTMLDivElement) {\n if (Config.mobile) {\n pixivBMKDiv && pixivBMKDiv.click()\n } else {\n const btn = pixivBMKDiv.querySelector('button')\n btn && btn.click()\n }\n // 取消监听心形收藏按钮的变化\n this.ob && this.ob.disconnect()\n }\n}\n\nnew QuickBookmark()\n","import { settings } from '../setting/Settings'\nimport { pageType } from '../PageType'\nimport { store } from '../store/Store'\nimport { lang } from '../Lang'\nimport { log } from '../Log'\nimport { EVT } from '../EVT'\n\n// 在搜索页面里移除已关注用户的作品\nclass RemoveWorksOfFollowedUsersOnSearchPage {\n constructor() {\n // 初始化时,页面上的作品元素尚未生成,所以不必使用 findAllWorks 方法\n // this.findAllWorks()\n\n this.createObserver(document.body)\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (\n data.name === 'removeWorksOfFollowedUsersOnSearchPage' &&\n data.value\n ) {\n this.findAllWorks()\n }\n })\n\n window.addEventListener(EVT.list.followingUsersChange, () => {\n this.findAllWorks()\n })\n\n window.addEventListener(EVT.list.pageSwitch, () => {\n this.showTip = false\n })\n }\n\n private showTip = false\n\n // 在每个页面上只显示一次提示\n private showTipOnce() {\n if (this.showTip) {\n return\n }\n\n this.showTip = true\n log.warning(lang.transl('_在搜索页面里移除已关注用户的作品'))\n }\n\n private get enable() {\n return (\n settings.removeWorksOfFollowedUsersOnSearchPage &&\n (pageType.type === pageType.list.ArtworkSearch ||\n pageType.type === pageType.list.NovelSearch)\n )\n }\n\n /**传入作品元素,从中检查用户 ID,如果该用户已关注,就移除这个作品 */\n // 这里不能使用 ArtworkThumbnail 类(作品缩略图)所监听的元素来检查,因为 ArtworkThumbnail 监听的不是完整的作品元素,只是作品元素里的图片部分\n // 例如在搜索页面里,一个作品元素分为 3 个部分:1. 缩略图 2. 标题 3. 作者(用户名)\n // ArtworkThumbnail 获取的元素只是缩略图,不是完整的作品元素,所以不能用它来移除作品元素。而且缩略图里面有时可能没有用户信息,无法判断用户是否已关注。\n private check(el: HTMLElement) {\n if (!this.enable) {\n return\n }\n\n const userLink = el.querySelector('a[href*=users]') as HTMLAnchorElement\n if (!userLink) {\n return\n }\n\n // https://www.pixiv.net/users/9212166\n const userID = userLink.href.match(/\\d+/)\n if (userID && store.followingUserIDList.includes(userID[0])) {\n el.remove()\n this.showTipOnce()\n }\n }\n\n // 搜索页面里的插画作品选择器\n private readonly worksSelector = '#root section ul li'\n\n /**检查当前页面上的作品元素 */\n private findAllWorks() {\n if (!this.enable) {\n return\n }\n\n const allLI = document.body.querySelectorAll(\n this.worksSelector\n ) as NodeListOf\n for (const LI of allLI) {\n this.check(LI)\n }\n }\n\n /**使用监视器,检查未来添加的作品元素 */\n protected createObserver(target: HTMLElement) {\n const observer = new MutationObserver((records) => {\n if (!this.enable) {\n return\n }\n\n for (const record of records) {\n if (record.addedNodes.length > 0) {\n // 遍历被添加的元素,检查其中的作品元素\n for (const newEl of record.addedNodes) {\n if (newEl.nodeType !== 1) {\n continue\n }\n\n if (newEl.nodeName === 'LI') {\n this.check(newEl as HTMLElement)\n } else {\n const allLI = (newEl as HTMLElement).querySelectorAll('li')\n for (const LI of allLI) {\n this.check(LI)\n }\n }\n }\n }\n }\n })\n observer.observe(target, {\n childList: true,\n subtree: true,\n })\n }\n}\n\nconst removeWorksOfFollowedUsersOnSearchPage =\n new RemoveWorksOfFollowedUsersOnSearchPage()\nexport { removeWorksOfFollowedUsersOnSearchPage }\n","import { lang } from '../Lang'\nimport { API } from '../API'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { img2ico } from '../utils/imageToIcon'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\n// 保存用户头像为图标\nclass SaveAvatarIcon {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.saveAvatarIcon, () => {\n this.saveAvatarIcon()\n })\n }\n\n private async saveAvatarIcon() {\n const userId = Tools.getUserId()\n const userProfile = await API.getUserProfile(userId)\n const bigImg = userProfile.body.imageBig // imageBig 并不是头像原图,而是裁剪成 170 px 的尺寸\n const fullSizeImg = bigImg.replace('_170', '') // 去掉 170 标记,获取头像图片的原图\n\n // 生成 ico 文件\n // 尺寸固定为 256,因为尺寸更小的图标如 128,在 windows 资源管理器里会被缩小到 48 显示\n const blob = await img2ico.convert({\n size: [256],\n source: fullSizeImg,\n shape: 'fillet',\n bleed: true,\n })\n\n // 直接保存到下载文件夹\n const url = URL.createObjectURL(blob)\n const name = `${userProfile.body.name}_${userId}_icon.ico`\n Utils.downloadFile(url, name)\n\n const msg = '✓ ' + lang.transl('_保存用户头像为图标')\n log.success(msg)\n toast.success(msg)\n EVT.fire('closeCenterPanel')\n }\n}\n\nnew SaveAvatarIcon()\n","import { lang } from '../Lang'\nimport { API } from '../API'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\n// 保存用户头像\nclass SaveAvatarImage {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.saveAvatarImage, () => {\n this.saveAvatarImage()\n })\n }\n\n private async saveAvatarImage() {\n const userId = Tools.getUserId()\n const userProfile = await API.getUserProfile(userId)\n const imageURL = userProfile.body.imageBig\n\n // 提取图片的后缀名\n const arr = imageURL.split('.')\n const ext = arr[arr.length - 1]\n\n // imageBig 并不是头像原图,而是裁剪成 170 px 的尺寸\n // 如果是 gif 格式,则不生成其大图 url,因为生成的大图是静态图。不知道 gif 头像是否有大图,以及其 url 是什么样的\n // 如果是其他格式,则去掉 170 标记,获取头像图片的原图\n const fullSizeImgURL =\n ext === 'gif' ? imageURL : imageURL.replace('_170', '')\n\n // 加载文件\n const img = await fetch(fullSizeImgURL)\n const blob = await img.blob()\n\n // 直接保存到下载文件夹\n const url = URL.createObjectURL(blob)\n const name = `${userProfile.body.name}_${userId}_avatar.${ext}`\n Utils.downloadFile(url, name)\n\n const msg = '✓ ' + lang.transl('_保存用户头像')\n log.success(msg)\n toast.success(msg)\n EVT.fire('closeCenterPanel')\n }\n}\n\nnew SaveAvatarImage()\n","import { lang } from '../Lang'\nimport { API } from '../API'\nimport { log } from '../Log'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { Utils } from '../utils/Utils'\nimport { toast } from '../Toast'\n\n// 保存用户封面图片\nclass SaveUserCover {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.saveUserCover, () => {\n this.saveUserCover()\n })\n }\n\n private async saveUserCover() {\n const userId = Tools.getUserId()\n const userProfile = await API.getUserProfile(userId)\n const bgData = userProfile.body.background\n if (bgData === null) {\n return toast.error(lang.transl('_没有数据可供使用'))\n }\n\n const bgUrl = bgData.url\n\n if (!bgUrl) {\n return toast.error(lang.transl('_没有数据可供使用'))\n }\n\n // 加载文件\n const img = await fetch(bgUrl)\n const blob = await img.blob()\n\n // 提取后缀名\n const arr = bgUrl.split('.')\n const ext = arr[arr.length - 1]\n\n // 直接保存到下载文件夹\n const url = URL.createObjectURL(blob)\n const name = `${userProfile.body.name}_${userId}_cover.${ext}`\n Utils.downloadFile(url, name)\n\n const msg = '✓ ' + lang.transl('_保存用户封面')\n log.success(msg)\n toast.success(msg)\n EVT.fire('closeCenterPanel')\n }\n}\n\nnew SaveUserCover()\n","interface Data {\n [key: string]: {\n [key: string]: string\n }\n}\n\n// 为了兼容以前的版本的设置,把旧的设置值转换为新版本的设置值\nclass ConvertOldSettings {\n // 旧设置和新设置的对应关系\n // 为了集中管理,便于使用,写到了一个对象里\n private readonly data: Data = {\n ratio: {\n '0': 'square',\n '1': 'horizontal',\n '2': 'vertical',\n '3': 'userSet',\n },\n idRange: {\n '1': '>',\n '2': '<',\n },\n widthTag: {\n '1': 'yes',\n '-1': 'no',\n },\n restrict: {\n '1': 'yes',\n '-1': 'no',\n },\n userSetLang: {\n '-1': 'auto',\n '0': 'zh-cn',\n '1': 'ja',\n '2': 'en',\n '3': 'zh-tw',\n '4': 'ko',\n },\n }\n\n // 传递需要转换的设置的键值\n public convert(key: string, value: string): string {\n const map = this.data[key]\n // 如果这是一个可以转换的设置\n if (map) {\n // 如果传递的值是旧的设置值,则能够获取到新的设置值\n // 如果传递的值已经是新的设置值,则获取到的是 undefined ,此时不需要转换\n const newValue = map[value]\n if (newValue !== undefined) {\n return newValue\n }\n }\n\n return value\n }\n}\n\nconst convertOldSettings = new ConvertOldSettings()\n\nexport { convertOldSettings }\n","import { API } from '../API'\nimport { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { settings, setSetting } from './Settings'\nimport { theme } from '../Theme'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { log } from '../Log'\n\n// 针对某些用户,不下载他们的多图作品的最后几张图片\nclass DoNotDownloadLastFewImages {\n constructor() {\n this.createWrap()\n theme.register(this.wrap)\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private readonly slotName = 'DoNotDownloadLastFewImagesSlot'\n private wrap!: HTMLDivElement // 最外层元素\n\n private expandBtn!: HTMLButtonElement // 展开/折叠 按钮\n private totalSpan!: HTMLSpanElement // 显示规则数量\n private showAddBtn!: HTMLButtonElement // 添加 按钮,点击显示添加区域\n\n private addWrap!: HTMLDivElement // 用于添加新项目的区域\n private addInputUid!: HTMLInputElement // 用于添加新项目的 uid 的输入框\n private addValueInput!: HTMLInputElement // 用于添加新项目的 name 的输入框\n private addBtn!: HTMLButtonElement // 添加 按钮\n private cancelBtn!: HTMLButtonElement // 取消 按钮\n\n private listWrap!: HTMLDivElement // 列表区域容器\n\n private _addWrapShow = false\n\n set addWrapShow(val: boolean) {\n this._addWrapShow = val\n\n if (val) {\n this.addWrap.style.display = 'block'\n this.addInputUid.focus()\n } else {\n this.addWrap.style.display = 'none'\n this.addInputUid.value = ''\n this.addValueInput.value = ''\n }\n }\n\n get addWrapShow() {\n return this._addWrapShow\n }\n\n private wrapHTML = `\n \n\n \n 0\n \n \n \n\n
          \n
          \n
          \n \n \n
          \n\n
          \n \n \n
          \n\n
          \n \n\n \n \n
          \n
          \n
          \n\n
          \n
          \n
          \n `\n\n // 创建列表外部的容器,静态 html\n private createWrap() {\n this.wrap = Tools.useSlot(this.slotName, this.wrapHTML)! as HTMLDivElement\n this.expandBtn = this.wrap.querySelector('.expand')! as HTMLButtonElement\n this.showAddBtn = this.wrap.querySelector('.showAdd')! as HTMLButtonElement\n this.totalSpan = this.wrap.querySelector('.total')! as HTMLSpanElement\n this.addWrap = this.wrap.querySelector('.addWrap')! as HTMLDivElement\n this.addInputUid = this.wrap.querySelector(\n '.addUidInput'\n )! as HTMLInputElement\n this.addValueInput = this.wrap.querySelector(\n '.addValueInput'\n )! as HTMLInputElement\n this.addBtn = this.wrap.querySelector('.add')! as HTMLButtonElement\n this.cancelBtn = this.wrap.querySelector('.cancel')! as HTMLButtonElement\n this.listWrap = this.wrap.querySelector('.listWrap')! as HTMLDivElement\n\n // 展开/折叠按钮\n this.expandBtn.addEventListener('click', () => {\n setSetting(\n 'DoNotDownloadLastFewImagesShow',\n !settings.DoNotDownloadLastFewImagesShow\n )\n })\n\n // 切换显示添加规则的区域\n this.showAddBtn.addEventListener('click', () => {\n this.addWrapShow = !this.addWrapShow\n })\n\n // 添加规则的按钮\n this.addBtn.addEventListener('click', () => {\n this.addRule(this.addInputUid.value, this.addValueInput.value)\n })\n\n // 取消添加的按钮\n this.cancelBtn.addEventListener('click', () => {\n this.addWrapShow = false\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'DoNotDownloadLastFewImagesShow') {\n this.showListWrap()\n }\n if (data.name === 'DoNotDownloadLastFewImagesList') {\n this.createAllList()\n }\n })\n }\n\n private showListWrap() {\n const show = settings.DoNotDownloadLastFewImagesShow\n this.listWrap.style.display = show ? 'flex' : 'none'\n lang.updateText(this.expandBtn, show ? '_收起' : '_展开')\n }\n\n // 根据规则动态创建 html\n private createAllList() {\n this.totalSpan.textContent =\n settings.DoNotDownloadLastFewImagesList.length.toString()\n this.listWrap.innerHTML = ''\n const df = document.createDocumentFragment()\n for (const {\n uid,\n user,\n value,\n } of settings.DoNotDownloadLastFewImagesList) {\n df.append(this.createOneList(uid, user, value))\n }\n this.listWrap.append(df)\n }\n\n // 创建规则对应的元素,并绑定事件\n private createOneList(uid: number, user: string, value: number) {\n const html = `\n
          \n ${user}\n
          \n\n
          \n \n
          \n\n
          \n \n
          \n\n
          \n \n\n \n
          `\n\n const element = document.createElement('div')\n element.classList.add('settingItem')\n element.dataset.key = uid.toString()\n element.innerHTML = html\n\n const updateRule = element.querySelector(`button[data-updateRule='${uid}']`)\n const deleteRule = element.querySelector(`button[data-deleteRule='${uid}']`)\n const uidInput = element.querySelector(\n `input[data-uidInput='${uid}']`\n )! as HTMLInputElement\n const valueInput = element.querySelector(\n `input[data-valueInput='${uid}']`\n )! as HTMLInputElement\n\n // 当输入框发生变化时,进行更新\n ;[uidInput, valueInput].forEach((el) => {\n el?.addEventListener('change', () => {\n if (el.value) {\n this.updateRule(uid, uidInput.value, valueInput.value, false)\n }\n })\n })\n\n // 更新规则\n updateRule?.addEventListener('click', () => {\n this.updateRule(uid, uidInput.value, valueInput.value)\n })\n\n // 删除规则\n deleteRule?.addEventListener('click', () => {\n this.deleteRule(uid)\n })\n\n return element\n }\n\n // 检查用户输入的值\n private checkValue(uidInput: string, value: string) {\n if (!uidInput || !value) {\n msgBox.error(lang.transl('_必填项不能为空'))\n return false\n }\n\n const uid = Number.parseInt(uidInput)\n if (!uid || isNaN(uid)) {\n msgBox.error(lang.transl('_用户ID必须是数字'))\n return false\n }\n\n // value 允许为 0\n const val = Number.parseInt(value)\n if (isNaN(val) || val < 0) {\n msgBox.error(\n lang.transl('_不下载最后几张图片') + ' ' + lang.transl('_必须是数字')\n )\n return false\n }\n\n return {\n uid,\n val,\n }\n }\n\n private async getUserName(uid: number): Promise {\n return new Promise(async (resolve) => {\n const profile = await API.getUserProfile(uid.toString()).catch((err) => {\n console.log(err)\n log.error(\n `ERROR: userID ${uid}, status ${err.status}
          https://www.pixiv.net/users/${uid}`\n )\n })\n if (profile && profile.body.name) {\n return resolve(profile.body.name)\n }\n return resolve('')\n })\n }\n\n // 添加规则\n private async addRule(uid: string, value: string) {\n const check = this.checkValue(uid, value)\n if (!check) {\n return\n }\n\n let old = settings.DoNotDownloadLastFewImagesList.find(\n (item) => item.uid === check.uid\n )\n if (old) {\n old.value = check.val\n } else {\n const user = await this.getUserName(check.uid)\n const data = {\n uid: check.uid,\n user: user,\n value: check.val,\n }\n settings.DoNotDownloadLastFewImagesList.push(data)\n }\n\n setSetting(\n 'DoNotDownloadLastFewImagesList',\n settings.DoNotDownloadLastFewImagesList\n )\n\n this.addWrapShow = false\n\n toast.success(lang.transl('_添加成功'))\n }\n\n // 更新规则\n // tip 表示是否用显示操作成功的提示。当用户点击了更新按钮时应该显示提示;输入内容变化导致的自动更新可以不显示提示\n private async updateRule(\n oldUid: number,\n uid: string,\n value: string,\n tip = true\n ) {\n const check = this.checkValue(uid, value)\n if (!check) {\n return\n }\n\n let old = settings.DoNotDownloadLastFewImagesList.find(\n (item) => item.uid === oldUid\n )\n if (old) {\n // 更新时如果 uid 未改变,依然会获取用户名,因为用户名可能更新了\n const user = await this.getUserName(check.uid)\n old.uid = check.uid\n old.user = user\n old.value = check.val\n } else {\n return\n }\n\n setSetting(\n 'DoNotDownloadLastFewImagesList',\n settings.DoNotDownloadLastFewImagesList\n )\n\n this.addWrapShow = false\n\n if (tip) {\n toast.success(lang.transl('_更新成功'))\n }\n }\n\n // 删除规则\n private deleteRule(uid: number) {\n let index = settings.DoNotDownloadLastFewImagesList.findIndex(\n (item) => item.uid === uid\n )\n if (index > -1) {\n settings.DoNotDownloadLastFewImagesList.splice(index, 1)\n } else {\n return\n }\n\n setSetting(\n 'DoNotDownloadLastFewImagesList',\n settings.DoNotDownloadLastFewImagesList\n )\n\n this.removeListElement(uid)\n }\n\n private removeListElement(uid: number) {\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${uid}']`\n )\n listElement?.remove()\n }\n}\n\nnew DoNotDownloadLastFewImages()\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { formHtml } from './FormHTML'\nimport { SettingsForm } from './SettingsForm'\nimport { SaveNamingRule } from './SaveNamingRule'\nimport { theme } from '../Theme'\nimport { FormSettings } from './FormSettings'\nimport { Utils } from '../utils/Utils'\nimport { settings, setSetting, SettingKeys } from '../setting/Settings'\nimport { options } from '../setting/Options'\n\n// 设置表单\nclass Form {\n constructor() {\n this.form = Tools.useSlot('form', formHtml) as SettingsForm\n\n theme.register(this.form)\n lang.register(this.form)\n\n this.getElements()\n\n const allOptions = this.form.querySelectorAll(\n '.option'\n ) as NodeListOf\n options.init(allOptions)\n\n new SaveNamingRule(this.form.userSetName)\n\n new FormSettings(this.form)\n\n this.bindEvents()\n }\n\n public form: SettingsForm\n\n /**所有的美化表单元素 */\n // 每个美化的 input 控件后面必定有一个 span 元素\n // label 和 子选项区域则不一定有\n private allBeautifyInput: {\n input: HTMLInputElement\n span: HTMLSpanElement\n label: HTMLLabelElement | null\n subOption: HTMLSpanElement | null\n }[] = []\n\n /**一些固定格式的帮助元素 */\n private tips: {\n wrapID: string\n wrap: HTMLSpanElement\n settingName: SettingKeys\n }[] = []\n\n private getElements() {\n // 获取所有的美化控件和它们对应的 span 元素\n const allCheckBox = this.form.querySelectorAll(\n 'input[type=\"checkbox\"]'\n ) as NodeListOf\n const allRadio = this.form.querySelectorAll(\n 'input[type=\"radio\"]'\n ) as NodeListOf\n const checkboxAndRadio = [allCheckBox, allRadio]\n for (const arr of checkboxAndRadio) {\n arr.forEach((input) => {\n let subOption = null\n if (input.classList.contains('checkbox_switch')) {\n subOption = this.form.querySelector(\n `.subOptionWrap[data-show=\"${input.name}\"]`\n ) as HTMLSpanElement\n }\n this.allBeautifyInput.push({\n input: input,\n span: input.nextElementSibling! as HTMLSpanElement,\n label: this.form.querySelector(`label[for=\"${input.id}\"]`),\n subOption: subOption,\n })\n })\n }\n\n // 获取所有在表单上直接显示的提示元素\n for (const item of this.tips) {\n const wrap: HTMLSpanElement = this.form.querySelector(\n '#' + item.wrapID\n ) as HTMLSpanElement\n if (wrap) {\n item.wrap = wrap\n }\n }\n }\n\n private bindEvents() {\n // 为美化的表单控件绑定事件\n for (const item of this.allBeautifyInput) {\n const { input, span } = item\n\n // 点击美化元素时,点击真实的 input 控件\n span.addEventListener('click', () => {\n input.click()\n })\n\n // 当美化元素获得焦点,并且用户按下了回车或空格键时,点击真实的 input 控件\n span.addEventListener('keydown', (event) => {\n if (\n (event.code === 'Enter' || event.code === 'Space') &&\n event.target === span\n ) {\n event.stopPropagation()\n event.preventDefault()\n input.click()\n }\n })\n }\n\n // 设置变化或者重置时,重新设置美化状态\n window.addEventListener(\n EVT.list.settingChange,\n Utils.debounce(() => {\n this.initFormBeautify()\n this.showTips()\n }, 50)\n )\n\n // 用户点击“我知道了”按钮之后不再显示对应的提示\n for (const item of this.tips) {\n if (item.wrap) {\n const btn = item.wrap.querySelector('button')!\n btn.addEventListener('click', () => {\n setSetting(item.settingName, false)\n })\n }\n }\n\n // 选择背景图片\n {\n const el = this.form.querySelector('#selectBG')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('selectBG')\n })\n }\n }\n\n // 清除背景图片\n {\n const el = this.form.querySelector('#clearBG')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('clearBG')\n })\n }\n }\n\n // 重置设置\n {\n const el = this.form.querySelector('#resetSettings')\n if (el) {\n el.addEventListener('click', () => {\n const result = window.confirm(lang.transl('_是否重置设置'))\n if (result) {\n EVT.fire('resetSettings')\n }\n })\n }\n }\n\n // 导出设置\n {\n const el = this.form.querySelector('#exportSettings')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('exportSettings')\n })\n }\n }\n\n // 导入设置\n {\n const el = this.form.querySelector('#importSettings')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('importSettings')\n })\n }\n }\n\n // 重新显示帮助\n {\n const el = this.form.querySelector('#resetHelpTip')\n if (el) {\n el.addEventListener('click', () => {\n EVT.fire('resetHelpTip')\n })\n }\n }\n\n // 显示命名字段提示\n this.form\n .querySelector('.showFileNameTip')!\n .addEventListener('click', () =>\n Utils.toggleEl(document.querySelector('.fileNameTip')! as HTMLElement)\n )\n\n // 显示日期格式提示\n this.form\n .querySelector('.showDateTip')!\n .addEventListener('click', () =>\n Utils.toggleEl(document.querySelector('.dateFormatTip')! as HTMLElement)\n )\n\n // 显示标签分隔提示\n this.form\n .querySelector('.showTagsSeparatorTip')!\n .addEventListener('click', () =>\n Utils.toggleEl(\n document.querySelector('.tagsSeparatorTip')! as HTMLElement\n )\n )\n\n // 显示标签分隔提示\n this.form\n .querySelector('.showPreviewWorkTip')!\n .addEventListener('click', () =>\n Utils.toggleEl(\n document.querySelector('.previewWorkTip')! as HTMLElement\n )\n )\n\n // 输入框获得焦点时自动选择文本(文件名输入框例外)\n const centerInputs: NodeListOf =\n this.form.querySelectorAll('input[type=text]')\n for (const el of centerInputs) {\n if (el.name !== 'userSetName') {\n el.addEventListener('focus', function () {\n this.select()\n })\n }\n }\n\n // 把下拉框的选择项插入到文本框里\n const from = this.form.fileNameSelect\n const to = this.form.userSetName\n from.addEventListener('change', () => {\n if (from.value !== 'default') {\n // 把选择项插入到光标位置,并设置新的光标位置\n const position = to.selectionStart!\n to.value =\n to.value.substring(0, position) +\n from.value +\n to.value.substring(position)\n to.selectionStart = position + from.value.length\n to.selectionEnd = position + from.value.length\n to.focus()\n }\n })\n }\n\n // 设置表单里的美化元素的状态\n private initFormBeautify() {\n for (const item of this.allBeautifyInput) {\n const { input, span, label, subOption } = item\n // 重设 label 的高亮状态\n if (label) {\n const method = input.checked ? 'add' : 'remove'\n label.classList[method]('active')\n }\n\n // 重设子选项区域的显示/隐藏状态\n if (subOption) {\n subOption.style.display = input.checked ? 'inline' : 'none'\n }\n }\n }\n\n // 是否显示提示\n private showTips() {\n for (const item of this.tips) {\n if (!Utils.isPixiv()) {\n item.wrap.style.display = 'none'\n } else {\n item.wrap.style.display = settings[item.settingName] ? 'block' : 'none'\n }\n }\n }\n}\n\nnew Form()\n","import { Config } from '../Config'\n\n// 目前设置项的最大编号是 88\nexport const formHtml = `
          \n
          \n

          \n \n ? \n  \n \n \n

          \n\n

          \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n \n \n \n \n \n \n

          \n \n

          \n \n \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n <= \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n >= \n \n <= \n \n \n \n \n ? \n \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n\n =\" checked>\n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n =\" checked>\n \n \n\n \n \n \n \n \n \n \n\n \n \n\n \n

          \n\n

          \n \n \n ? \n \n \n \n \" checked>\n \n \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n  - \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n  \n \n \n \n \n \n \n
          \n \n
          \n

          \n\n
          \n \n \n \n
          \n
          \n
          \n

          \n \n \n  \n \n  \n \n \n

          \n

          \n \n {user}/{id}\n
          \n \n
          \n * \n
          \n {id}\n \n
          \n {user}\n \n
          \n {user_id}\n \n
          \n {title}\n \n
          \n {tags}\n \n
          \n {tags_translate}\n \n
          \n {tags_transl_only}\n \n
          \n {page_title}\n \n
          \n * {page_tag}\n \n
          \n {type}\n \n
          \n * {AI}\n \n
          \n {like}\n \n
          \n {bmk}\n \n
          \n {bmk_1000}\n \n
          \n {bmk_id}\n \n
          \n {view}\n \n
          \n * {rank}\n \n
          \n {date}\n \n
          \n {upload_date}\n \n
          \n {task_date}\n \n
          \n {px}\n \n
          \n * {series_title}\n \n
          \n * {series_order}\n \n
          \n * {series_id}\n \n
          \n {id_num}\n \n
          \n {p_num}\n \n

          \n\n

          \n \n \n \n

          \n \n

          \n \n \n \n

          \n \n

          \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n

          \n\n

          \n \n \n ? \n \n \n

          \n\n

          \n \n \n \n

          \n\n
          \n \n \n
          \n\n \n \n
          \n \n
          \n\n
          \n \n
          \n\n

          \n \n \n ? \n \n \n

          \n\n

          \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n

          \n \n

          \n \n \n ? \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n

          \n \n

          \n \n \n \n \n

          \n \n

          \n \n \n \n\n \n \n >\n \n  \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n

          \n\n

          \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n  \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n
          \n \n
          \n

          \n\n

          \n \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n\n \n \n \n \n \n \n \n \n

          \n \n

          \n \n \n ? \n \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n

          \n\n

          \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n

          \n

          \n \n

          \n \n

          \n \n \n ? \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n

          \n\n

          \n \n

          \n \n

          \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n \n

          \n \n

          \n \n \n ? \n \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n \n (1200px)\n \n \n \n (540px)\n \n \n \n (250px)\n

          \n\n

          \n \n \n ? \n \n \n \n MiB\n  - \n MiB\n \n

          \n\n

          \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n\n \n

          \n\n

          \n \n \n ? \n \n \n \n   \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n

          \n \n

          \n \n \n ? \n \n \n \n

          \n \n

          \n \n \n ? \n \n \n \n\n \n\n  \n \n  px\n\n \n

          \n\n

          \n \n \n \n\n \n \n \n \n \n

          \n \n

          \n \n \n \n

          \n\n

          \n \n \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n\n  \n \n  ms\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n \n \n\n \n\n \n

          \n\n

          \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n \n \n\n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n \n \n ? \n \n \n

          \n\n

          \n \n \n ? \n \n \n\n \n \n \n \n

          \n\n

          \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n

          \n\n

          \n \n

          \n\n

          \n \n \n \n

          \n

          \n \n
          \n YYYY 2021\n
          \n YY 21\n
          \n MM 04\n
          \n MMM Apr\n
          \n MMMM April\n
          \n DD 30\n
          \n hh 06\n
          \n mm 40\n
          \n ss 08\n
          \n

          \n\n

          \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n\n  \n \n\n \n

          \n\n

          \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n\n \n\n \n \n \n  \n  \n \n \n \n \n \n \n  \n \n \n

          \n \n

          \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n

          \n\n

          \n Language\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

          \n\n

          \n \n \n \n \n \n

          \n
          \n
          `\n","import { EVT } from '../EVT'\nimport { pageType } from '../PageType'\nimport { settings, setSetting, SettingKeys } from './Settings'\nimport { SettingsForm } from './SettingsForm'\nimport { DateFormat } from '../utils/DateFormat'\nimport { nameRuleManager } from './NameRuleManager'\n\n// 管理 from 表单里的输入选项(input 元素和 textarea 元素)\n// 从 settings 里恢复选项的值;当选项改变时保存到 settings 里\n// 不属于输入选项的设置,不在这里处理\n\ninterface InputFileds {\n text: SettingKeys[]\n textarea: SettingKeys[]\n checkbox: SettingKeys[]\n radio: SettingKeys[]\n datetime: SettingKeys[]\n}\n\nclass FormSettings {\n constructor(form: SettingsForm) {\n this.form = form\n\n nameRuleManager.registerInput(this.form.userSetName)\n\n this.bindEvents()\n\n this.restoreFormSettings()\n\n this.ListenChange()\n }\n\n private form!: SettingsForm\n\n // 没有填写 userSetName 字段,因为这个字段由 nameRuleManager 管理\n private readonly inputFileds: InputFileds = {\n checkbox: [\n 'downType0',\n 'downType1',\n 'downType2',\n 'downType3',\n 'downAllAges',\n 'downR18',\n 'downR18G',\n 'downSingleImg',\n 'downMultiImg',\n 'downColorImg',\n 'downBlackWhiteImg',\n 'downNotBookmarked',\n 'downBookmarked',\n 'firstFewImagesSwitch',\n 'multiImageWorkImageLimitSwitch',\n 'saveNovelMeta',\n 'BMKNumSwitch',\n 'BMKNumAverageSwitch',\n 'setWHSwitch',\n 'ratioSwitch',\n 'userSetChecked',\n 'postDate',\n 'idRangeSwitch',\n 'needTagSwitch',\n 'notNeedTagSwitch',\n 'magnifier',\n 'tagNameToFileName',\n 'noSerialNo',\n 'createFolderByTag',\n 'workDir',\n 'r18Folder',\n 'sizeSwitch',\n 'autoStartDownload',\n 'previewResult',\n 'deduplication',\n 'fileNameLengthLimitSwitch',\n 'bmkAfterDL',\n 'userBlockList',\n 'blockTagsForSpecificUser',\n 'bgDisplay',\n 'createFolderByType',\n 'createFolderByTypeIllust',\n 'createFolderByTypeManga',\n 'createFolderByTypeUgoira',\n 'createFolderByTypeNovel',\n 'zeroPadding',\n 'showFastSearchArea',\n 'saveMetaType0',\n 'saveMetaType1',\n 'saveMetaType2',\n 'saveMetaType3',\n 'setNameRuleForEachPageType',\n 'showAdvancedSettings',\n 'showNotificationAfterDownloadComplete',\n 'boldKeywords',\n 'autoExportResult',\n 'autoExportResultCSV',\n 'autoExportResultJSON',\n 'PreviewWork',\n 'showDownloadBtnOnThumb',\n 'showOriginImage',\n 'replaceSquareThumb',\n 'notFolderWhenOneFile',\n 'noSerialNoForSingleImg',\n 'noSerialNoForMultiImg',\n 'removeAtFromUsername',\n 'showPreviewWorkTip',\n 'showLargerThumbnails',\n 'doubleWidthThumb',\n 'wheelScrollSwitchImageOnPreviewWork',\n 'swicthImageByKeyboard',\n 'doNotDownloadLastImageOfMultiImageWork',\n 'downloadNovelCoverImage',\n 'downloadNovelEmbeddedImage',\n 'previewUgoira',\n 'hiddenBrowserDownloadBar',\n 'slowCrawl',\n 'downloadOnClickBookmark',\n 'downloadOnClickLike',\n 'exportLog',\n 'exportLogNormal',\n 'exportLogError',\n 'UseDifferentNameRuleIfWorkHasTagSwitch',\n 'AIGenerated',\n 'notAIGenerated',\n 'UnknownAI',\n 'setFileDownloadOrder',\n 'highlightFollowingUsers',\n 'exportIDList',\n 'displayThumbnailListOnMultiImageWorkPage',\n 'PreviewWorkDetailInfo',\n 'removeWorksOfFollowedUsersOnSearchPage',\n ],\n text: [\n 'setWantPage',\n 'firstFewImages',\n 'multiImageWorkImageLimit',\n 'convertUgoiraThread',\n 'BMKNumMin',\n 'BMKNumMax',\n 'BMKNumAverage',\n 'setWidth',\n 'setHeight',\n 'userRatio',\n 'idRangeInput',\n 'needTag',\n 'notNeedTag',\n 'workDirFileNumber',\n 'r18FolderName',\n 'sizeMin',\n 'sizeMax',\n 'downloadThread',\n 'fileNameLengthLimit',\n 'dateFormat',\n 'tagsSeparator',\n 'blockList',\n 'bgOpacity',\n 'zeroPaddingLength',\n 'workDirNameRule',\n 'autoExportResultNumber',\n 'previewWorkWait',\n 'previewResultLimit',\n 'timedCrawlInterval',\n 'slowCrawlOnWorksNumber',\n 'exportLogExclude',\n 'PreviewDetailInfoWidth',\n ],\n radio: [\n 'ugoiraSaveAs',\n 'novelSaveAs',\n 'widthHeightLimit',\n 'userRatioLimit',\n 'setWidthAndOr',\n 'ratio',\n 'idRange',\n 'magnifierSize',\n 'magnifierPosition',\n 'dupliStrategy',\n 'imageSize',\n 'userSetLang',\n 'restrict',\n 'widthTag',\n 'needTagMode',\n 'theme',\n 'bgPositionY',\n 'switchTabBar',\n 'tagMatchMode',\n 'prevWorkSize',\n 'showOriginImageSize',\n 'exportLogTiming',\n 'downloadOrder',\n 'downloadOrderSortBy',\n ],\n textarea: ['createFolderTagList'],\n datetime: ['postDateStart', 'postDateEnd'],\n }\n\n private restoreTimer = 0\n\n private bindEvents() {\n // 页面切换时,从设置里恢复当前页面的页数/个数\n window.addEventListener(EVT.list.pageSwitchedTypeChange, () => {\n this.restoreWantPage()\n })\n\n window.addEventListener(EVT.list.settingChange, () => {\n window.clearTimeout(this.restoreTimer)\n this.restoreTimer = window.setTimeout(() => {\n this.restoreFormSettings()\n }, 0)\n })\n }\n\n // 监听所有输入选项的变化\n // 该函数可执行一次,否则事件会重复绑定\n private ListenChange() {\n for (const name of this.inputFileds.text) {\n // 对于某些特定输入框,不使用通用的事件处理函数\n if (name === 'setWantPage') {\n continue\n }\n\n this.saveTextInput(name)\n }\n\n // setWantPage 变化时,保存到 wantPageArr\n this.form.setWantPage.addEventListener('change', () => {\n const temp = Array.from(settings.wantPageArr)\n temp[pageType.type] = Number.parseInt(this.form.setWantPage.value)\n setSetting('wantPageArr', temp)\n })\n\n for (const name of this.inputFileds.textarea) {\n this.saveTextInput(name)\n }\n\n for (const name of this.inputFileds.datetime) {\n this.saveTextInput(name)\n }\n\n for (const name of this.inputFileds.radio) {\n this.saveRadio(name)\n }\n\n for (const name of this.inputFileds.checkbox) {\n this.saveCheckBox(name)\n }\n }\n\n // 读取设置,恢复到表单里\n private restoreFormSettings() {\n for (const name of this.inputFileds.text) {\n // setWantPage 需要从 wantPageArr 恢复\n if (name === 'setWantPage') {\n this.restoreWantPage()\n continue\n }\n\n this.restoreString(name)\n }\n\n for (const name of this.inputFileds.radio) {\n this.restoreString(name)\n }\n\n for (const name of this.inputFileds.textarea) {\n this.restoreString(name)\n }\n\n for (const name of this.inputFileds.checkbox) {\n this.restoreBoolean(name)\n }\n\n for (const name of this.inputFileds.datetime) {\n this.restoreDate(name)\n }\n }\n\n // ---------------------\n\n // 处理输入框: change 时保存 value\n private saveTextInput(name: SettingKeys) {\n const el = this.form[name] as HTMLInputElement\n el.addEventListener('change', () => {\n setSetting(name, el.value)\n })\n }\n\n // 处理复选框: click 时保存 checked\n private saveCheckBox(name: SettingKeys) {\n // 由于表单里存在两个 showAdvancedSettings 设置,会获取到 NodeListOf\n // 其他设置只有一个,是 HTMLInputElement\n const el = this.form[name] as\n | HTMLInputElement\n | NodeListOf\n let elArray: HTMLInputElement[] = []\n if ((el as NodeListOf).length !== undefined) {\n elArray = Array.from(el as NodeListOf)\n } else {\n elArray.push(el as HTMLInputElement)\n }\n elArray.forEach((el) => {\n el.addEventListener('click', () => {\n setSetting(name, el.checked)\n })\n })\n }\n\n // 处理单选框: click 时保存 value\n private saveRadio(name: SettingKeys) {\n const radios = this.form[name]\n for (const radio of radios) {\n radio.addEventListener('click', () => {\n setSetting(name, radio.value)\n })\n }\n }\n\n // 恢复值为 Boolean 的设置项\n private restoreBoolean(name: SettingKeys) {\n if (settings[name] !== undefined) {\n // 由于表单里存在两个 showAdvancedSettings 设置,会获取到 NodeListOf\n // 其他设置只有一个,是 HTMLInputElement\n const el = this.form[name] as\n | HTMLInputElement\n | NodeListOf\n let elArray: HTMLInputElement[] = []\n if ((el as NodeListOf).length !== undefined) {\n elArray = Array.from(el as NodeListOf)\n } else {\n elArray.push(el as HTMLInputElement)\n }\n elArray.forEach((el) => {\n el.checked = settings[name] as boolean\n })\n }\n }\n\n // 恢复值为 string 的设置项\n private restoreString(name: SettingKeys) {\n if (settings[name] !== undefined) {\n this.form[name].value = settings[name].toString()\n }\n }\n\n // 恢复日期、时间设置项\n private restoreDate(name: SettingKeys) {\n if (settings[name] !== undefined) {\n // 把时间戳转换成 input 使用的字符串\n const date = settings[name] as number\n this.form[name].value = DateFormat.format(date, 'YYYY-MM-DDThh:mm')\n }\n }\n\n // 从设置里恢复当前页面的页数/个数\n private restoreWantPage() {\n const want = settings.wantPageArr[pageType.type]\n if (want !== undefined) {\n this.form.setWantPage.value = want.toString()\n }\n }\n}\n\nexport { FormSettings }\n","import { settings, setSetting, SettingKeys } from './Settings'\nimport { secretSignal } from '../utils/SecretSignal'\nimport { log } from '../Log'\nimport { toast } from '../Toast'\n\ntype Cfg = {\n [key in SettingKeys]?: string[]\n}\n\n// 管理不可见的设置。通过预设的按键,切换其开关状态\nclass InvisibleSettings {\n constructor() {\n this.register()\n }\n\n // ppdss: Powerful Pixiv Downloader Secret Settings\n private readonly cfg: Cfg = {\n createFolderBySl: ['ppdss1', 'switchsl', 'kaiguansl'],\n downloadUgoiraFirst: ['ppdss2', 'dlugoirafirst', 'qw111'],\n }\n\n private register() {\n for (const [name, codes] of Object.entries(this.cfg)) {\n for (const code of codes!) {\n secretSignal.register(code, () => {\n this.onChange(name as SettingKeys)\n })\n }\n }\n }\n\n private onChange(name: SettingKeys) {\n const nowValue = settings[name]\n if (typeof nowValue !== 'boolean') {\n return\n }\n\n // 如果查找到了符合的记录,则反转这个设置的值\n const newValue = !settings[name]\n setSetting(name, newValue)\n\n // 显示提示信息\n if (settings[name]) {\n const msg = name + ' On'\n log.success(msg)\n toast.success(msg)\n } else {\n const msg = name + ' Off'\n log.warning(msg)\n toast.warning(msg)\n }\n }\n}\n\nnew InvisibleSettings()\n","import { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { msgBox } from '../MsgBox'\nimport { pageType } from '../PageType'\nimport { Utils } from '../utils/Utils'\nimport { settings, setSetting } from './Settings'\n\n// 管理命名规则\n// 在实际使用中,作为 settings.userSetName 的代理\n// 其他类必须使用 nameRuleManager.rule 存取器来存取命名规则\nclass NameRuleManager {\n constructor() {\n this.bindEvents()\n }\n\n private bindEvents() {\n const evts = [\n EVT.list.settingInitialized,\n EVT.list.resetSettingsEnd,\n EVT.list.pageSwitchedTypeChange,\n ]\n evts.forEach((evt) => {\n window.addEventListener(evt, () => {\n this.setInputValue()\n })\n })\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n // 当用户开启这个开关时,设置当前页面类型的命名规则\n if (data.name === 'setNameRuleForEachPageType' && data.value) {\n if (\n settings.nameRuleForEachPageType[pageType.type] !==\n settings.userSetName\n ) {\n this.setInputValue()\n }\n }\n })\n }\n\n private saveCurrentPageRule(rule: string) {\n settings.nameRuleForEachPageType[pageType.type] = rule\n setSetting('nameRuleForEachPageType', settings.nameRuleForEachPageType)\n }\n\n // 所有页面通用的命名规则\n private readonly generalRule = '{page_title}/{id}'\n\n public get rule() {\n if (settings.setNameRuleForEachPageType) {\n let rule = settings.nameRuleForEachPageType[pageType.type]\n if (rule === undefined) {\n rule = this.generalRule\n this.saveCurrentPageRule(rule)\n }\n return rule\n } else {\n return settings.userSetName\n }\n }\n\n public set rule(str: string) {\n // 检查传递的命名规则的合法性\n // 为了防止文件名重复,命名规则里一定要包含 {id} 或者 {id_num}{p_num}\n const check =\n str.includes('{id}') ||\n (str.includes('{id_num}') && str.includes('{p_num}'))\n if (!check) {\n window.setTimeout(() => {\n msgBox.error(lang.transl('_命名规则一定要包含id'))\n }, 300)\n } else {\n // 替换特殊字符\n str = this.handleUserSetName(str) || this.generalRule\n setSetting('userSetName', str)\n\n if (settings.setNameRuleForEachPageType) {\n this.saveCurrentPageRule(str)\n }\n\n this.setInputValue()\n }\n }\n\n // 命名规则输入框的集合\n private inputList: HTMLInputElement[] = []\n\n // 注册命名规则输入框\n public registerInput(input: HTMLInputElement) {\n this.inputList.push(input)\n this.setInputValue()\n\n // 保存事件被触发之前的值\n let lastValue = input.value\n\n // 给输入框绑定事件\n const evList = ['change', 'focus']\n // change 事件只对用户手动输入有效\n // 当用户从下拉框添加一个命名标记时,不会触发 change 事件,需要监听 focus 事件\n evList.forEach((evName) => {\n input.addEventListener(evName, () => {\n // 当事件触发时,比较输入框的值是否与事件触发之前发生了变化\n // 如果值没有变化,就什么都不做\n // 对于 change 事件来说,值必然发生了变化,但是 focus 就不一定了\n // 试想:用户修改命名规则为非法的规则,例如输入 111,触发 change 事件之后下载器会提示命名规则非法\n // 然后用户点击输入框(focus 事件)想要修改规则,此时值没有变化,就不应该执行后续代码。如果依然执行后续代码,那么每当用户点击输入框,下载器就会马上显示提示,这导致用户根本没办法在输入框里修改命名规则\n if (input.value === lastValue) {\n return\n }\n lastValue = input.value\n if (settings.nameRuleForEachPageType[pageType.type] !== input.value) {\n this.rule = input.value\n }\n })\n })\n }\n\n // 设置输入框的值为当前命名规则\n private setInputValue() {\n // 如果 settings.nameRuleForEachPageType 里面没有当前页面的 key,值就是 undefined,需要设置为默认值\n const rule = this.rule\n this.inputList.forEach((input) => {\n input.value = rule\n })\n\n if (rule !== settings.userSetName) {\n setSetting('userSetName', rule)\n }\n }\n\n // 处理用命名规则的非法字符和非法规则\n // 这里不必处理得非常详尽,因为在生成文件名时,还会对结果进行处理\n // 测试用例:在作品页面内设置下面的命名规则,下载器会自动进行更正\n // /{page_tag}/|/{user}////) {\n this.allOption = allOption\n\n // 获取“页数/个数”设置的元素\n const wantPageOption = this.getOption(1)!\n this.wantPageEls = {\n wrap: wantPageOption.querySelector(\n '.setWantPageWrap'\n )! as HTMLSpanElement,\n text: wantPageOption.querySelector(\n '.setWantPageTip1'\n )! as HTMLSpanElement,\n rangTip: wantPageOption.querySelector(\n '.setWantPageTip2'\n )! as HTMLSpanElement,\n input: wantPageOption.querySelector('.setWantPage')! as HTMLInputElement,\n }\n\n this.handleShowAdvancedSettings()\n this.bindEvents()\n }\n\n private allOption!: NodeListOf\n\n private wantPageEls!: WantPageEls\n\n // 保持显示的选项的 id\n private readonly whiteList: number[] = [\n 1, 2, 4, 13, 17, 32, 44, 50, 51, 57, 64,\n ]\n\n // 某些页面类型需要隐藏某些选项。当调用 hideOption 方法时,把选项 id 保存起来\n // 优先级高于 whiteList\n private hiddenList: number[] = []\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'showAdvancedSettings') {\n this.handleShowAdvancedSettings()\n }\n })\n\n window.addEventListener(EVT.list.settingInitialized, () => {\n this.alwaysHideSomeOption()\n })\n\n const list = [\n EVT.list.pageSwitchedTypeNotChange,\n EVT.list.pageSwitchedTypeChange,\n ]\n list.forEach((ev) => {\n window.addEventListener(ev, () => {\n this.hiddenList = []\n window.setTimeout(() => {\n this.handleShowAdvancedSettings()\n this.alwaysHideSomeOption()\n })\n })\n })\n }\n\n // 总是隐藏某些设置\n private alwaysHideSomeOption() {\n this.hideOption([79, 80])\n\n // 在移动端某些设置不会生效,所以隐藏它们\n // 主要是和作品缩略图相关的一些设置\n if (Config.mobile) {\n this.hideOption([18, 68, 55, 71, 62, 40])\n }\n }\n\n private handleShowAdvancedSettings() {\n for (const option of this.allOption) {\n if (option.dataset.no === undefined) {\n continue\n }\n\n const no = Number.parseInt(option.dataset.no)\n\n // 如果需要隐藏高级设置\n if (!settings.showAdvancedSettings) {\n // 如果在白名单中,并且当前页面不需要隐藏它,那么它就是显示的\n if (this.whiteList.includes(no) && !this.hiddenList.includes(no)) {\n this.showOption([no])\n }\n\n // 如果没有在白名单中,或者当前页面需要隐藏它,就隐藏它\n if (!this.whiteList.includes(no) || this.hiddenList.includes(no)) {\n option.style.display = 'none'\n }\n } else {\n // 如果需要显示高级设置,那么只隐藏当前页面需要隐藏的选项\n if (this.hiddenList.includes(no)) {\n option.style.display = 'none'\n } else {\n this.showOption([no])\n }\n }\n }\n }\n\n // 使用编号获取指定选项的元素\n private getOption(no: number) {\n for (const option of this.allOption) {\n if (option.dataset.no === no.toString()) {\n return option\n }\n }\n throw `Not found this option: ${no}`\n }\n\n // 显示或隐藏指定的选项\n private setOptionDisplay(no: number[], display: string) {\n for (const number of no) {\n this.getOption(number).style.display = display\n }\n }\n\n // 显示所有选项\n // 在切换不同页面时使用\n public showAllOption() {\n for (const el of this.allOption) {\n el.style.display = 'block'\n }\n }\n\n // 隐藏指定的选项。参数是数组,传递设置项的编号。\n // 注意:由于这个方法会修改 hiddenList,所以它是有副作用的\n // 这个方法只应该在其他类里面使用,在这个类里不要直接调用它\n public hideOption(no: number[]) {\n this.hiddenList = no\n this.setOptionDisplay(no, 'none')\n }\n\n // 显示指定的选项。因为页面无刷新加载,所以一些选项被隐藏后,可能需要再次显示\n public showOption(no: number[]) {\n this.setOptionDisplay(no, 'block')\n }\n\n // 设置 “抓取多少作品/页面” 选项的提示和预设值\n public setWantPageTip(arg: WantPageArg) {\n lang.updateText(this.wantPageEls.text, arg.text)\n\n this.wantPageEls.wrap.dataset.xztip = arg.tip\n this.wantPageEls.wrap.dataset.tip = lang.transl(arg.tip as any)\n\n // rangTip 可能需要翻译\n if (arg.rangTip.startsWith('_')) {\n lang.updateText(this.wantPageEls.rangTip, arg.rangTip)\n } else {\n // 也可能直接传递了字符串,不需要翻译\n lang.updateText(this.wantPageEls.rangTip, '')\n this.wantPageEls.rangTip.textContent = arg.rangTip\n }\n }\n}\n\nconst options = new Options()\nexport { options }\n","import { EVT } from '../EVT'\nimport { Tools } from '../Tools'\nimport { lang } from '../Lang'\nimport { theme } from '../Theme'\nimport { settings, setSetting } from './Settings'\nimport { toast } from '../Toast'\nimport { nameRuleManager } from './NameRuleManager'\n\n// 保存和加载命名规则列表\nclass SaveNamingRule {\n constructor(ruleInput: HTMLInputElement) {\n this.ruleInput = ruleInput\n\n Tools.clearSlot('saveNamingRule')\n const wrap = Tools.useSlot('saveNamingRule', this.html) as HTMLElement\n theme.register(wrap)\n lang.register(wrap)\n\n this.saveBtn = wrap.querySelector('button.nameSave')! as HTMLButtonElement\n this.loadBtn = wrap.querySelector('button.nameLoad')! as HTMLButtonElement\n this.listWrap = wrap.querySelector('ul.namingRuleList')! as HTMLUListElement\n\n this.createList()\n\n this.bindEvents()\n }\n\n private readonly limit = 20 // 最大保存数量\n private saveBtn: HTMLButtonElement\n private loadBtn: HTMLButtonElement\n private listWrap: HTMLElement\n private ruleInput: HTMLInputElement\n private _show = false // 是否显示列表\n\n private set show(boolean: boolean) {\n this._show = boolean\n boolean ? this.showListWrap() : this.hideListWrap()\n }\n\n private get show() {\n return this._show\n }\n\n private bindEvents() {\n this.saveBtn.addEventListener('click', () => {\n this.add(this.ruleInput.value)\n })\n\n this.loadBtn.addEventListener('click', () => {\n this.show = !this.show\n })\n\n this.listWrap.addEventListener('mouseleave', () => {\n this.show = false\n })\n\n // 设置发生变化时重新创建列表\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'namingRuleList') {\n this.createList()\n }\n })\n }\n\n private add(rule: string) {\n if (settings.namingRuleList.length === this.limit) {\n this.delete(0)\n }\n // 如果这个规则已存在,不会重复添加它\n if (!settings.namingRuleList.includes(rule)) {\n const list = Array.from(settings.namingRuleList)\n list.push(rule)\n setSetting('namingRuleList', list)\n }\n\n toast.success(lang.transl('_已保存命名规则'))\n }\n\n private delete(index: number) {\n const list = Array.from(settings.namingRuleList)\n list.splice(index, 1)\n setSetting('namingRuleList', list)\n }\n\n private select(rule: string) {\n this.ruleInput.value = rule\n nameRuleManager.rule = rule\n }\n\n private createList() {\n const htmlArr = []\n for (let i = 0; i < settings.namingRuleList.length; i++) {\n const html = `
        • \n ${settings.namingRuleList[i]}\n \n
        • `\n htmlArr.push(html)\n }\n if (settings.namingRuleList.length === 0) {\n htmlArr.push(`
        •     no data
        • `)\n }\n this.listWrap.innerHTML = htmlArr.join('')\n\n const ruleEls = this.listWrap.querySelectorAll('.rule')\n for (const el of ruleEls) {\n el.addEventListener('click', () => {\n this.select(el.textContent!)\n this.show = false\n })\n }\n\n const deleteEls = this.listWrap.querySelectorAll(\n '.delete'\n ) as NodeListOf\n for (const el of deleteEls) {\n el.addEventListener('click', () => {\n const index = parseInt(el.dataset.index!)\n this.delete(index)\n })\n }\n }\n\n private showListWrap() {\n this.listWrap.style.display = 'block'\n }\n\n private hideListWrap() {\n this.listWrap.style.display = 'none'\n }\n\n private readonly html = `\n
          \n \n \n
            \n
            `\n}\n\nexport { SaveNamingRule }\n","// settings 保存了下载器的所有设置项\n\n// 获取设置项的值:\n// settings[name]\n\n// 修改设置项的值:\n// setSetting(name, value)\n\n// 本模块会触发 3 个事件:\n\n// EVT.list.settingChange\n// 当任意一个设置项被赋值时触发(不会区分值是否发生了变化)。这是最常用的事件。\n// 事件的参数里会传递这个设置项的名称和值,可以通过 ev.detail.data 获取,格式如:\n// {name: string, value: any}\n// 如果某个模块要监听特定的设置项,应该使用参数的 name 来判断触发事件的设置项是否是自己需要的设置项\n// 如果不依赖于特定设置项,则应该考虑使用节流或者防抖来限制事件的回调函数的执行频率,防止造成性能问题\n\n// EVT.list.settingInitialized\n// 当设置初始化完毕(以及恢复本地储存的设置)之后触发。这个事件在生命周期里只会触发一次。\n// 过程中,每个设置项都会触发一次 settingChange 事件\n\n// EVT.list.resetSettingsEnd\n// 重置设置之后触发\n// 导入设置之后触发\n// 过程中,每个设置项都会触发一次 settingChange 事件\n\n// 如果打开了多个标签页,每个页面的 settings 数据是相互独立的,在一个页面里修改设置不会影响另一个页面里的设置。\n// 但是持久化保存的数据只有一份:最后一次的设置变化是在哪个页面发生的,就保存哪个页面的 settings 数据。\n// 所以当页面刷新时,或者打开新的页面时,会加载设置最后一次发生变化的页面里的 settings 数据\n\nimport { EVT } from '../EVT'\nimport { Utils } from '../utils/Utils'\nimport { convertOldSettings } from './ConvertOldSettings'\nimport { msgBox } from '../MsgBox'\nimport { Config } from '../Config'\nimport { secretSignal } from '../utils/SecretSignal'\nimport { toast } from '../Toast'\nimport { lang } from '../Lang'\n\nexport interface BlockTagsForSpecificUserItem {\n uid: number\n user?: string\n tags: string[]\n}\n\ntype SettingValue =\n | string\n | number\n | boolean\n | string[]\n | number[]\n | object[]\n | { [key: number]: string }\n | Map\n\nexport interface SettingChangeData {\n name: SettingKeys\n value: SettingValue\n}\n\ninterface XzSetting {\n setWantPage: number\n wantPageArr: number[]\n firstFewImagesSwitch: boolean\n firstFewImages: number\n multiImageWorkImageLimitSwitch: boolean\n multiImageWorkImageLimit: number\n downType0: boolean\n downType1: boolean\n downType2: boolean\n downType3: boolean\n downSingleImg: boolean\n downMultiImg: boolean\n downColorImg: boolean\n downBlackWhiteImg: boolean\n downNotBookmarked: boolean\n downBookmarked: boolean\n ugoiraSaveAs: 'webm' | 'gif' | 'zip' | 'png'\n convertUgoiraThread: number\n needTagSwitch: boolean\n notNeedTagSwitch: boolean\n needTag: string[]\n notNeedTag: string[]\n autoStartDownload: boolean\n downloadThread: number\n userSetName: string\n namingRuleList: string[]\n tagNameToFileName: boolean\n workDir: boolean\n workDirFileNumber: number\n workDirNameRule: string\n showOptions: boolean\n postDate: boolean\n postDateStart: number\n postDateEnd: number\n previewResult: boolean\n previewResultLimit: number\n BMKNumSwitch: boolean\n BMKNumMin: number\n BMKNumMax: number\n BMKNumAverageSwitch: boolean\n BMKNumAverage: number\n setWHSwitch: boolean\n widthHeightLimit: '>=' | '=' | '<='\n setWidthAndOr: '&' | '|'\n setWidth: number\n setHeight: number\n ratioSwitch: boolean\n ratio: 'square' | 'horizontal' | 'vertical' | 'userSet'\n userSetChecked: boolean\n userRatio: number\n userRatioLimit: '>=' | '=' | '<='\n idRangeSwitch: boolean\n idRangeInput: number\n idRange: '>' | '<'\n noSerialNo: boolean\n filterBlackWhite: boolean\n sizeSwitch: boolean\n sizeMin: number\n sizeMax: number\n novelSaveAs: 'txt' | 'epub'\n saveNovelMeta: boolean\n deduplication: boolean\n dupliStrategy: 'strict' | 'loose'\n fileNameLengthLimitSwitch: boolean\n tagsSeparator: ',' | '#' | '^' | '&' | '_'\n fileNameLengthLimit: number\n imageSize: 'original' | 'regular' | 'small' | 'thumb'\n dateFormat: string\n userSetLang: 'zh-cn' | 'zh-tw' | 'ja' | 'en' | 'ko' | 'ru' | 'auto'\n bmkAfterDL: boolean\n\n // 选项在表单中的值\n widthTag: 'yes' | 'no'\n // 根据表单中的值转换为实际使用的值\n widthTagBoolean: boolean\n\n // 选项在表单中的值\n restrict: 'yes' | 'no'\n // 根据表单中的值转换为实际使用的值\n restrictBoolean: boolean\n\n userBlockList: boolean\n blockList: string[]\n needTagMode: 'all' | 'one'\n theme: 'auto' | 'white' | 'dark'\n r18Folder: boolean\n r18FolderName: string\n blockTagsForSpecificUser: boolean\n blockTagsForSpecificUserShowList: boolean\n blockTagsForSpecificUserList: BlockTagsForSpecificUserItem[]\n magnifier: boolean\n magnifierSize: 'original' | 'regular'\n magnifierPosition: 'left' | 'right'\n bgDisplay: boolean\n bgOpacity: number\n bgPositionY: 'center' | 'top'\n createFolderByType: boolean\n createFolderByTypeIllust: boolean\n createFolderByTypeManga: boolean\n createFolderByTypeUgoira: boolean\n createFolderByTypeNovel: boolean\n createFolderByTag: boolean\n createFolderTagList: string[]\n createFolderBySl: boolean\n downloadUgoiraFirst: boolean\n downAllAges: boolean\n downR18: boolean\n downR18G: boolean\n switchTabBar: 'over' | 'click'\n zeroPadding: boolean\n zeroPaddingLength: number\n tagMatchMode: 'partial' | 'whole'\n showFastSearchArea: boolean\n saveMetaType0: boolean\n saveMetaType1: boolean\n saveMetaType2: boolean\n saveMetaType3: boolean\n /** 为每个页面类型设置不同的命名规则的开关 */\n setNameRuleForEachPageType: boolean\n /** 每个页面类型所使用的命名规则 */\n // 这里应该使用 Map 结构,但是 JSON.stringify 不能处理 Map 类型,所以简化成了 Object\n nameRuleForEachPageType: {\n [key: number]: string\n }\n showAdvancedSettings: boolean\n showNotificationAfterDownloadComplete: boolean\n boldKeywords: boolean\n autoExportResult: boolean\n autoExportResultCSV: boolean\n autoExportResultJSON: boolean\n autoExportResultNumber: number\n PreviewWork: boolean\n showDownloadBtnOnThumb: boolean\n prevWorkSize: 'original' | 'regular'\n previewWorkWait: number\n showPreviewWorkTip: boolean\n showOriginImage: boolean\n showOriginImageSize: 'original' | 'regular'\n tipHowToUse: boolean\n whatIsNewFlag: string\n replaceSquareThumb: boolean\n notFolderWhenOneFile: boolean\n noSerialNoForSingleImg: boolean\n noSerialNoForMultiImg: boolean\n setUserNameShow: boolean\n setUserNameList: {\n [uid: string]: string\n }\n removeAtFromUsername: boolean\n showLargerThumbnails: boolean\n doubleWidthThumb: boolean\n wheelScrollSwitchImageOnPreviewWork: boolean\n swicthImageByKeyboard: boolean\n /**不抓取多图作品的最后一张图片 */\n doNotDownloadLastImageOfMultiImageWork: boolean\n downloadNovelCoverImage: boolean\n downloadNovelEmbeddedImage: boolean\n previewUgoira: boolean\n hiddenBrowserDownloadBar: boolean\n tipPreviewWork: boolean\n tipHotkeysViewLargeImage: boolean\n /**定时抓取的间隔时间,注意单位是分钟而不是毫秒 */\n timedCrawlInterval: number\n slowCrawl: boolean\n slowCrawlOnWorksNumber: number\n downloadOnClickBookmark: boolean\n downloadOnClickLike: boolean\n exportLog: boolean\n exportLogTiming: 'crawlComplete' | 'downloadComplete'\n exportLogNormal: boolean\n exportLogError: boolean\n exportLogExclude: string[]\n DoNotDownloadLastFewImagesShow: boolean\n DoNotDownloadLastFewImagesList: {\n uid: number\n user: string\n value: number\n }[]\n UseDifferentNameRuleIfWorkHasTagSwitch: boolean\n UseDifferentNameRuleIfWorkHasTagShow: boolean\n UseDifferentNameRuleIfWorkHasTagList: {\n id: number\n tags: string[]\n rule: string\n }[]\n AIGenerated: boolean\n notAIGenerated: boolean\n UnknownAI: boolean\n setFileDownloadOrder: boolean\n downloadOrder: 'desc' | 'asc'\n downloadOrderSortBy: 'ID' | 'bookmarkCount' | 'bookmarkID'\n tipAltXToShowControlPanel: boolean\n tipAltSToSelectWork: boolean\n tipAltQToQuickDownload: boolean\n tipBookmarkButton: boolean\n highlightFollowingUsers: boolean\n tipCSV: boolean\n exportIDList: boolean\n tipExportFollowingUserList: boolean\n displayThumbnailListOnMultiImageWorkPage: boolean\n tipBookmarkManage: boolean\n requestSponsorshipTime: number\n PreviewWorkDetailInfo: boolean\n PreviewDetailInfoWidth: number\n removeWorksOfFollowedUsersOnSearchPage: boolean\n tipExportAndImportBookmark: boolean\n}\n// chrome storage 里不能使用 Map,因为保存时,Map 会被转换为 Object {}\n\ntype SettingKeys = keyof XzSetting\n\nclass Settings {\n constructor() {\n this.restore()\n this.bindEvents()\n }\n\n // 默认设置\n private readonly defaultSettings: XzSetting = {\n setWantPage: -1,\n wantPageArr: [\n -1, -1, -1, -1, -1, 1000, -1, 500, -1, 1000, 100, -1, 100, -1, -1, 1000,\n 100, 100, 100, 100, -1,\n ],\n firstFewImagesSwitch: false,\n firstFewImages: 1,\n multiImageWorkImageLimitSwitch: false,\n multiImageWorkImageLimit: 10,\n downType0: true,\n downType1: true,\n downType2: true,\n downType3: true,\n downAllAges: true,\n downR18: true,\n downR18G: true,\n downSingleImg: true,\n downMultiImg: true,\n downColorImg: true,\n downBlackWhiteImg: true,\n downNotBookmarked: true,\n downBookmarked: true,\n ugoiraSaveAs: 'webm',\n convertUgoiraThread: 1,\n needTag: [],\n notNeedTag: [],\n autoStartDownload: true,\n downloadThread: 5,\n userSetName: '{page_title}/{id}',\n namingRuleList: [],\n tagNameToFileName: false,\n workDir: false,\n workDirFileNumber: 1,\n workDirNameRule: '{id_num}',\n showOptions: true,\n postDate: false,\n postDateStart: 946684800000,\n postDateEnd: 4102444800000,\n previewResult: true,\n previewResultLimit: 3000,\n BMKNumSwitch: false,\n BMKNumMin: 0,\n BMKNumMax: Config.BookmarkCountLimit,\n BMKNumAverageSwitch: false,\n BMKNumAverage: 600,\n setWHSwitch: false,\n widthHeightLimit: '>=',\n setWidthAndOr: '&',\n setWidth: 0,\n setHeight: 0,\n ratioSwitch: false,\n ratio: 'horizontal',\n userSetChecked: false,\n userRatio: 1.4,\n userRatioLimit: '>=',\n idRangeSwitch: false,\n idRangeInput: 0,\n idRange: '>',\n needTagSwitch: false,\n notNeedTagSwitch: false,\n noSerialNo: false,\n filterBlackWhite: false,\n sizeSwitch: false,\n sizeMin: 0,\n sizeMax: 100,\n novelSaveAs: 'txt',\n saveNovelMeta: false,\n deduplication: false,\n dupliStrategy: 'loose',\n fileNameLengthLimitSwitch: false,\n tagsSeparator: ',',\n fileNameLengthLimit: 200,\n imageSize: 'original',\n dateFormat: 'YYYY-MM-DD',\n userSetLang: 'auto',\n bmkAfterDL: false,\n widthTag: 'yes',\n restrict: 'no',\n widthTagBoolean: true,\n restrictBoolean: false,\n userBlockList: false,\n blockList: [],\n theme: 'auto',\n needTagMode: 'all',\n r18Folder: false,\n r18FolderName: '[R-18&R-18G]',\n blockTagsForSpecificUser: false,\n blockTagsForSpecificUserShowList: true,\n blockTagsForSpecificUserList: [],\n magnifier: true,\n magnifierSize: 'original',\n magnifierPosition: 'right',\n bgDisplay: false,\n bgOpacity: 60,\n bgPositionY: 'center',\n createFolderByType: false,\n createFolderByTypeIllust: false,\n createFolderByTypeManga: false,\n createFolderByTypeUgoira: false,\n createFolderByTypeNovel: false,\n createFolderByTag: false,\n createFolderTagList: [],\n createFolderBySl: false,\n downloadUgoiraFirst: false,\n switchTabBar: 'over',\n zeroPadding: false,\n zeroPaddingLength: 3,\n tagMatchMode: 'whole',\n showFastSearchArea: true,\n saveMetaType0: false,\n saveMetaType1: false,\n saveMetaType2: false,\n saveMetaType3: false,\n setNameRuleForEachPageType: false,\n nameRuleForEachPageType: {\n '-1': '{page_title}/{id}',\n '0': '{page_title}/{id}',\n '1': '{page_title}/{id}',\n '2': '{user}/{id}',\n '3': '{page_title}/{id}',\n '4': '{page_title}/{id}',\n '5': '{page_tag}/{id}',\n '6': '{page_title}/{id}',\n '7': '{page_title}/{rank}-{id}',\n '8': '{page_title}/{id}',\n '9': '{page_title}/{id}',\n '10': '{page_title}/{id}',\n '11': '{page_title}/{id}',\n '12': '{page_title}/{id}',\n '13': '{page_title}/{id}-{title}',\n '14': '{user}/{series_title}/{series_order} {title} {id}',\n '15': '{page_tag}/{id}-{title}',\n '16': '{page_title}/{rank}-{id}-{title}',\n '17': '{page_title}/{id}-{title}',\n '18': '{page_title}/{id}-{title}',\n '19': '{user}/{series_title}/{series_order} {title} {id}',\n '20': '{page_title}/{id}',\n '21': '{page_title}/{id}-{title}',\n },\n showAdvancedSettings: false,\n showNotificationAfterDownloadComplete: false,\n boldKeywords: true,\n autoExportResult: false,\n autoExportResultCSV: true,\n autoExportResultJSON: false,\n autoExportResultNumber: 1,\n PreviewWork: true,\n showDownloadBtnOnThumb: true,\n prevWorkSize: 'regular',\n previewWorkWait: 400,\n showPreviewWorkTip: true,\n showOriginImage: true,\n showOriginImageSize: 'original',\n tipHowToUse: true,\n whatIsNewFlag: 'xuejian&saber',\n replaceSquareThumb: true,\n notFolderWhenOneFile: false,\n noSerialNoForSingleImg: true,\n noSerialNoForMultiImg: true,\n setUserNameShow: true,\n setUserNameList: {},\n removeAtFromUsername: false,\n showLargerThumbnails: false,\n doubleWidthThumb: true,\n wheelScrollSwitchImageOnPreviewWork: true,\n swicthImageByKeyboard: true,\n doNotDownloadLastImageOfMultiImageWork: false,\n downloadNovelCoverImage: true,\n downloadNovelEmbeddedImage: true,\n previewUgoira: true,\n hiddenBrowserDownloadBar: false,\n tipPreviewWork: true,\n tipHotkeysViewLargeImage: true,\n timedCrawlInterval: 120,\n slowCrawl: true,\n slowCrawlOnWorksNumber: 100,\n downloadOnClickBookmark: false,\n downloadOnClickLike: false,\n exportLog: false,\n exportLogTiming: 'downloadComplete',\n exportLogNormal: false,\n exportLogError: true,\n exportLogExclude: ['404', '429', '500'],\n DoNotDownloadLastFewImagesShow: false,\n DoNotDownloadLastFewImagesList: [],\n UseDifferentNameRuleIfWorkHasTagSwitch: false,\n UseDifferentNameRuleIfWorkHasTagShow: true,\n UseDifferentNameRuleIfWorkHasTagList: [],\n AIGenerated: true,\n notAIGenerated: true,\n UnknownAI: true,\n setFileDownloadOrder: false,\n downloadOrder: 'desc',\n downloadOrderSortBy: 'ID',\n tipAltXToShowControlPanel: true,\n tipAltSToSelectWork: true,\n tipAltQToQuickDownload: true,\n tipBookmarkButton: true,\n highlightFollowingUsers: true,\n tipCSV: true,\n exportIDList: false,\n tipExportFollowingUserList: true,\n displayThumbnailListOnMultiImageWorkPage: true,\n tipBookmarkManage: true,\n requestSponsorshipTime: 0,\n PreviewWorkDetailInfo: false,\n PreviewDetailInfoWidth: 400,\n removeWorksOfFollowedUsersOnSearchPage: false,\n tipExportAndImportBookmark: true,\n }\n\n private allSettingKeys = Object.keys(this.defaultSettings)\n\n // 值为浮点数的选项\n private floatNumberKey = ['userRatio', 'sizeMin', 'sizeMax']\n\n // 值为整数的选项不必单独列出\n\n // 值为数字数组的选项\n private numberArrayKeys = ['wantPageArr']\n\n // 值为字符串数组的选项\n private stringArrayKeys = [\n 'namingRuleList',\n 'blockList',\n 'needTag',\n 'notNeedTag',\n 'createFolderTagList',\n 'exportLogExclude',\n ]\n\n // 以默认设置作为初始设置\n public settings: XzSetting = Utils.deepCopy(this.defaultSettings)\n\n private bindEvents() {\n // 当设置发生变化时进行本地存储\n window.addEventListener(EVT.list.settingChange, () => {\n this.store()\n })\n\n window.addEventListener(EVT.list.resetSettings, () => {\n this.reset()\n })\n\n window.addEventListener(EVT.list.exportSettings, () => {\n this.exportSettings()\n })\n\n window.addEventListener(EVT.list.importSettings, () => {\n this.importSettings()\n })\n\n window.addEventListener(EVT.list.resetHelpTip, () => {\n this.resetHelpTip()\n })\n\n // 切换只选择动图/选择全部作品类型\n const codes = ['onlyugoira', 'qw222']\n for (const code of codes) {\n secretSignal.register(code, () => {\n // 如果只有动图被选中,则选择全部作品类型\n // 反之,只选择动图\n if (\n this.settings.downType2 &&\n !this.settings.downType0 &&\n !this.settings.downType1 &&\n !this.settings.downType3\n ) {\n this.settings.downType0 = true\n this.settings.downType1 = true\n this.settings.downType3 = true\n // 多次修改只触发一次改变事件,提高效率\n this.setSetting('downType0', true)\n toast.warning('onlyUgoira off')\n } else {\n this.settings.downType0 = false\n this.settings.downType1 = false\n this.settings.downType2 = true\n this.settings.downType3 = false\n this.setSetting('downType2', true)\n toast.success('onlyUgoira on')\n }\n })\n }\n }\n\n // 读取恢复设置\n private restore() {\n let restoreData = this.defaultSettings\n // 首先从 chrome.storage 获取配置(从 11.5.0 版本开始)\n chrome.storage.local.get(Config.settingStoreName, (result) => {\n if (result[Config.settingStoreName]) {\n restoreData = result[Config.settingStoreName]\n } else {\n // 如无数据则尝试从 localStorage 获取配置,因为旧版本的配置储存在 localStorage 中\n const savedSettings = localStorage.getItem(Config.settingStoreName)\n if (savedSettings) {\n restoreData = JSON.parse(savedSettings)\n }\n }\n this.assignSettings(restoreData)\n EVT.fire('settingInitialized')\n })\n }\n\n private store = Utils.debounce(() => {\n // chrome.storage.local 的储存上限是 5 MiB(5242880 Byte)\n chrome.storage.local.set({\n [Config.settingStoreName]: this.settings,\n })\n }, 50)\n\n // 接收整个设置项,通过循环将其更新到 settings 上\n // 循环设置而不是整个替换的原因:\n // 1. 进行类型转换,如某些设置项是 number ,但是数据来源里是 string,setSetting 可以把它们转换到正确的类型\n // 2. 某些选项在旧版本里没有,所以不能用旧的设置整个覆盖\n private assignSettings(data: XzSetting) {\n const origin = Utils.deepCopy(data)\n for (const [key, value] of Object.entries(origin)) {\n this.setSetting(key as SettingKeys, value)\n }\n }\n\n private exportSettings() {\n const blob = Utils.json2Blob(this.settings)\n const url = URL.createObjectURL(blob)\n Utils.downloadFile(url, Config.appName + ` Settings.json`)\n URL.revokeObjectURL(url)\n toast.success(lang.transl('_导出成功'))\n }\n\n private async importSettings() {\n const loadedJSON = (await Utils.loadJSONFile().catch((err) => {\n return msgBox.error(err)\n })) as XzSetting\n if (!loadedJSON) {\n return\n }\n // 检查是否存在设置里的属性\n if (loadedJSON.downloadThread === undefined) {\n return msgBox.error(lang.transl('_格式错误'))\n }\n // 开始恢复导入的设置\n this.reset(loadedJSON)\n toast.success(lang.transl('_导入成功'))\n }\n\n // 有些帮助信息是只显示一次的,这里可以让它们再次显示\n // 主要是通过 showHelp.show 显示的帮助\n private resetHelpTip() {\n this.setSetting('tipHowToUse', true)\n this.setSetting('tipAltXToShowControlPanel', true)\n this.setSetting('tipPreviewWork', true)\n this.setSetting('tipHotkeysViewLargeImage', true)\n this.setSetting('tipAltSToSelectWork', true)\n this.setSetting('tipAltQToQuickDownload', true)\n this.setSetting('tipBookmarkButton', true)\n this.setSetting('tipCSV', true)\n this.setSetting('tipExportFollowingUserList', true)\n this.setSetting('tipBookmarkManage', true)\n this.setSetting('tipExportAndImportBookmark', true)\n\n toast.success('✓ ' + lang.transl('_重新显示帮助'))\n }\n\n // 重置设置 或者 导入设置\n // 可选参数:传递一份设置数据,用于从配置文件导入,恢复设置\n private reset(data?: XzSetting) {\n this.assignSettings(data ? data : this.defaultSettings)\n EVT.fire('resetSettingsEnd')\n }\n\n private tipError(key: string) {\n msgBox.error(`${key}: Invalid value`)\n }\n\n // 更改设置项\n // 其他模块应该通过这个方法更改设置\n // 这里面有一些类型转换的代码,主要目的:\n // 1. 兼容旧版本的设置。读取旧版本的设置时,将其转换成新版本的设置。例如某个设置在旧版本里是 string 类型,值为 'a,b,c'。新版本里是 string[] 类型,这里会自动将其转换成 ['a','b','c']\n // 2. 减少额外操作。例如某个设置的类型为 string[],其他模块可以传入 string 类型的值如 'a,b,c',而不必先把它转换成 string[]\n public setSetting(key: SettingKeys, value: SettingValue) {\n if (!this.allSettingKeys.includes(key)) {\n return\n }\n\n const keyType = typeof this.defaultSettings[key]\n const valueType = typeof value\n\n // 把旧的设置值转换为新的设置值。需要转换的值都是 string 类型\n if (valueType === 'string') {\n value = convertOldSettings.convert(key, value as string)\n }\n\n // 将传入的值转换成选项对应的类型\n if (keyType === 'string' && valueType !== 'string') {\n value = value.toString()\n }\n\n if (keyType === 'number' && valueType !== 'number') {\n // 时间是需要特殊处理的 number 类型\n if (key === 'postDateStart' || key == 'postDateEnd') {\n if (valueType === 'string') {\n if (value === '') {\n // 如果日期是空字符串,则替换为默认值\n value = this.defaultSettings[key]\n } else {\n // 把日期字符串转换成时间戳\n const date = new Date(value as string)\n value = date.getTime()\n }\n }\n } else {\n // 处理普通的 number 类型\n if (this.floatNumberKey.includes(key)) {\n value = Number.parseFloat(value as any)\n } else {\n value = Number.parseInt(value as any)\n }\n }\n\n if (isNaN(value as number)) {\n return this.tipError(key)\n }\n }\n\n if (keyType === 'boolean' && valueType !== 'boolean') {\n value = !!value\n }\n\n // 处理数组类型的值\n if (Array.isArray(this.defaultSettings[key])) {\n if (this.stringArrayKeys.includes(key)) {\n // 字符串转换成 string[]\n if (valueType === 'string') {\n value = Utils.string2array(value as string)\n }\n }\n\n if (this.numberArrayKeys.includes(key)) {\n // 把数组转换成 number[]\n if (Array.isArray(value)) {\n value = (value as any[]).map((val: string | number) => {\n if (typeof val !== 'number') {\n return Number(val)\n } else {\n return val\n }\n })\n } else {\n return\n }\n }\n }\n\n // 对于一些不合法的值,重置为默认值\n if (key === 'firstFewImages' && value < 1) {\n value = this.defaultSettings[key]\n }\n\n if (key === 'fileNameLengthLimit' && value < 1) {\n value = this.defaultSettings[key]\n }\n\n if (key === 'setWidthAndOr' && value === '') {\n value = this.defaultSettings[key]\n }\n\n if (key === 'previewResultLimit' && value < 0) {\n value = 999999\n }\n\n if (key === 'workDirNameRule') {\n value = (value as string).replace('{id}', '{id_num}')\n }\n\n // 更改设置\n ;(this.settings[key] as any) = value\n\n // 当修改某些设置时,顺便修改以来它的设置\n if (key === 'widthTag') {\n this.settings.widthTagBoolean = value === 'yes'\n }\n if (key === 'restrict') {\n this.settings.restrictBoolean = value === 'yes'\n }\n\n if (key === 'ratio') {\n this.settings.userSetChecked = value === 'userSet'\n }\n\n // 触发设置变化的事件\n EVT.fire('settingChange', { name: key, value: value })\n }\n}\n\nconst self = new Settings()\nconst settings = self.settings\nconst setSetting = self.setSetting.bind(self)\n\nexport { settings, setSetting, SettingKeys }\n","import { Tools } from '../Tools'\nimport { EVT } from '../EVT'\nimport { lang } from '../Lang'\nimport { settings, setSetting } from './Settings'\nimport { theme } from '../Theme'\nimport { toast } from '../Toast'\nimport { msgBox } from '../MsgBox'\nimport { Utils } from '../utils/Utils'\n\n// 如果作品含有某个标签,则对这个作品使用另一种命名规则\nclass UseDifferentNameRuleIfWorkHasTag {\n constructor() {\n this.createWrap()\n theme.register(this.wrap)\n lang.register(this.wrap)\n this.bindEvents()\n }\n\n private readonly slotName = 'UseDifferentNameRuleIfWorkHasTagSlot'\n private wrap!: HTMLDivElement // 最外层元素\n\n private expandBtn!: HTMLButtonElement // 展开/折叠 按钮\n private totalSpan!: HTMLSpanElement // 显示规则数量\n private showAddBtn!: HTMLButtonElement // 添加 按钮,点击显示添加区域\n\n private addWrap!: HTMLDivElement // 用于添加新项目的区域\n private addTagsInput!: HTMLInputElement // 用于添加新项目的 Tags 的输入框\n private addRuleInput!: HTMLInputElement // 用于添加新项目的命名规则的输入框\n private addBtn!: HTMLButtonElement // 添加 按钮\n private cancelBtn!: HTMLButtonElement // 取消 按钮\n\n private listWrap!: HTMLDivElement // 列表区域容器\n\n private _addWrapShow = false\n\n set addWrapShow(val: boolean) {\n this._addWrapShow = val\n\n if (val) {\n this.addWrap.style.display = 'block'\n this.addTagsInput.focus()\n } else {\n this.addWrap.style.display = 'none'\n this.addTagsInput.value = ''\n this.addRuleInput.value = ''\n }\n }\n\n get addWrapShow() {\n return this._addWrapShow\n }\n\n private wrapHTML = `\n
            \n\n \n 0\n \n \n \n\n
            \n
            \n
            \n Tags\n \n
            \n\n
            \n \n \n
            \n\n
            \n \n\n \n \n
            \n
            \n
            \n\n
            \n
            \n
            \n `\n\n // 创建列表外部的容器,静态 html\n private createWrap() {\n this.wrap = Tools.useSlot(this.slotName, this.wrapHTML)! as HTMLDivElement\n this.expandBtn = this.wrap.querySelector('.expand')! as HTMLButtonElement\n this.showAddBtn = this.wrap.querySelector('.showAdd')! as HTMLButtonElement\n this.totalSpan = this.wrap.querySelector('.total')! as HTMLSpanElement\n this.addWrap = this.wrap.querySelector('.addWrap')! as HTMLDivElement\n this.addTagsInput = this.wrap.querySelector(\n '.addTagsInput'\n )! as HTMLInputElement\n this.addRuleInput = this.wrap.querySelector(\n '.addRuleInput'\n )! as HTMLInputElement\n this.addBtn = this.wrap.querySelector('.add')! as HTMLButtonElement\n this.cancelBtn = this.wrap.querySelector('.cancel')! as HTMLButtonElement\n this.listWrap = this.wrap.querySelector('.listWrap')! as HTMLDivElement\n\n // 展开/折叠按钮\n this.expandBtn.addEventListener('click', () => {\n setSetting(\n 'UseDifferentNameRuleIfWorkHasTagShow',\n !settings.UseDifferentNameRuleIfWorkHasTagShow\n )\n })\n\n // 切换显示添加规则的区域\n this.showAddBtn.addEventListener('click', () => {\n this.addWrapShow = !this.addWrapShow\n })\n\n // 添加规则的按钮\n this.addBtn.addEventListener('click', () => {\n this.addRule(this.addTagsInput.value, this.addRuleInput.value)\n })\n\n // 取消添加的按钮\n this.cancelBtn.addEventListener('click', () => {\n this.addWrapShow = false\n })\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n if (data.name === 'UseDifferentNameRuleIfWorkHasTagShow') {\n this.showListWrap()\n }\n if (data.name === 'UseDifferentNameRuleIfWorkHasTagList') {\n this.createAllList()\n }\n })\n }\n\n private showListWrap() {\n const show = settings.UseDifferentNameRuleIfWorkHasTagShow\n this.listWrap.style.display = show ? 'flex' : 'none'\n lang.updateText(this.expandBtn, show ? '_收起' : '_展开')\n }\n\n // 根据规则动态创建 html\n private createAllList() {\n this.totalSpan.textContent =\n settings.UseDifferentNameRuleIfWorkHasTagList.length.toString()\n this.listWrap.innerHTML = ''\n const df = document.createDocumentFragment()\n for (const {\n id,\n tags,\n rule,\n } of settings.UseDifferentNameRuleIfWorkHasTagList) {\n df.append(this.createOneList(id, tags, rule))\n }\n this.listWrap.append(df)\n }\n\n // 创建规则对应的元素,并绑定事件\n private createOneList(id: number, tags: string[], rule: string) {\n const html = `\n
            \n ${id}\n
            \n\n
            \n \n
            \n\n
            \n \n
            \n\n
            \n \n\n \n
            `\n\n const element = document.createElement('div')\n element.classList.add('settingItem')\n element.dataset.key = id.toString()\n element.innerHTML = html\n\n const updateRule = element.querySelector(`button[data-updateRule='${id}']`)\n const deleteRule = element.querySelector(`button[data-deleteRule='${id}']`)\n const tagsInput = element.querySelector(\n `input[data-tagsInput='${id}']`\n )! as HTMLInputElement\n const ruleInput = element.querySelector(\n `input[data-ruleInput='${id}']`\n )! as HTMLInputElement\n\n // 当输入框发生变化时,进行更新\n ;[tagsInput, ruleInput].forEach((el) => {\n el?.addEventListener('change', () => {\n if (el.value) {\n this.updateRule(id, tagsInput.value, ruleInput.value, false)\n }\n })\n })\n\n // 更新规则\n updateRule?.addEventListener('click', () => {\n this.updateRule(id, tagsInput.value, ruleInput.value)\n })\n\n // 删除规则\n deleteRule?.addEventListener('click', () => {\n this.deleteRule(id)\n })\n\n return element\n }\n\n // 检查用户输入的值\n private checkValue(tagsInput: string, rule: string) {\n if (!tagsInput || !rule) {\n msgBox.error(lang.transl('_必填项不能为空'))\n return false\n }\n\n return {\n tags: Utils.string2array(tagsInput),\n rule,\n }\n }\n\n // 添加规则\n private async addRule(tagsInput: string, rule: string) {\n const check = this.checkValue(tagsInput, rule)\n if (!check) {\n return\n }\n\n const idList = settings.UseDifferentNameRuleIfWorkHasTagList.map(\n (item) => item.id\n )\n const id = idList.length === 0 ? 0 : Math.max(...idList) + 1\n const data = {\n id: id,\n tags: check.tags,\n rule: rule,\n }\n settings.UseDifferentNameRuleIfWorkHasTagList.push(data)\n\n setSetting(\n 'UseDifferentNameRuleIfWorkHasTagList',\n settings.UseDifferentNameRuleIfWorkHasTagList\n )\n\n console.log(...settings.UseDifferentNameRuleIfWorkHasTagList)\n this.addWrapShow = false\n\n toast.success(lang.transl('_添加成功'))\n }\n\n // 更新规则\n // tip 表示是否用显示操作成功的提示。当用户点击了更新按钮时应该显示提示;输入内容变化导致的自动更新可以不显示提示\n private async updateRule(\n id: number,\n tagsInput: string,\n rule: string,\n tip = true\n ) {\n const check = this.checkValue(tagsInput, rule)\n if (!check) {\n return\n }\n\n let old = settings.UseDifferentNameRuleIfWorkHasTagList.find(\n (item) => item.id === id\n )\n if (old) {\n old.tags = check.tags\n old.rule = rule\n } else {\n return\n }\n\n setSetting(\n 'UseDifferentNameRuleIfWorkHasTagList',\n settings.UseDifferentNameRuleIfWorkHasTagList\n )\n\n console.log(...settings.UseDifferentNameRuleIfWorkHasTagList)\n this.addWrapShow = false\n\n if (tip) {\n toast.success(lang.transl('_更新成功'))\n }\n }\n\n // 删除规则\n private deleteRule(id: number) {\n let index = settings.UseDifferentNameRuleIfWorkHasTagList.findIndex(\n (item) => item.id === id\n )\n if (index > -1) {\n settings.UseDifferentNameRuleIfWorkHasTagList.splice(index, 1)\n } else {\n return\n }\n\n setSetting(\n 'UseDifferentNameRuleIfWorkHasTagList',\n settings.UseDifferentNameRuleIfWorkHasTagList\n )\n\n console.log(...settings.UseDifferentNameRuleIfWorkHasTagList)\n this.removeListElement(id)\n }\n\n private removeListElement(id: number) {\n const listElement = this.listWrap.querySelector(\n `.settingItem[data-key='${id}']`\n )\n listElement?.remove()\n }\n}\n\nnew UseDifferentNameRuleIfWorkHasTag()\n","import { ArtworkData } from '../crawl/CrawlResult'\n\n// 本程序有多个模块需要在抓取流程之外获取作品数据\n// 为了避免重复发起请求,以及解决浏览器有时候不读取缓存的问题,所以在这里缓存一些作品数据\n// 即使下载器获取过某个作品的数据,但是以后再次请求时,浏览器也有可能不会读取缓存,而是重新发起请求。\nclass CacheWorkData {\n private cache: ArtworkData[] = []\n // 一个图像作品的数据大约是 5 KB\n private readonly max = 20\n\n public set(data: ArtworkData) {\n if (this.has(data.body.id)) {\n return\n }\n if (this.cache.length >= this.max) {\n this.cache.shift()\n }\n this.cache.push(data)\n }\n\n public get(id: string) {\n return this.cache.find((val) => val.body.id === id)\n }\n\n public has(id: string) {\n return this.cache.some((val) => val.body.id === id)\n }\n}\n\nconst cacheWorkData = new CacheWorkData()\nexport { cacheWorkData }\n","import { store } from './Store'\nimport { IDData } from './StoreType'\nimport { Utils } from '../utils/Utils'\n\ntype IDDataWithPageNo = IDData & {\n page: number\n}\n\n// 这是为了解决抓取多个列表页面时,获得的 id 数据顺序混乱的问题\n// 这个类会保留每个 id 所处的页码。抓取完成后可以把这些 id 按页码顺序排列,保证 id 的顺序和在页码里的顺序一致\nclass IdListWithPageNo {\n // 存储 id 列表,按 pageId 不同分别存储\n private allList: {\n [pageId: number]: IDDataWithPageNo[]\n } = {}\n\n // 添加一条记录\n public add(pageId: number, idData: IDData, page: number) {\n if (this.allList[pageId] === undefined) {\n this.allList[pageId] = []\n }\n this.allList[pageId].push({\n id: idData.id,\n type: idData.type,\n page: page,\n })\n }\n\n // 清空记录\n public clear(pageId: number) {\n if (this.allList[pageId]) {\n delete this.allList[pageId]\n }\n }\n\n // 排序\n private sort(pageId: number) {\n if (this.allList[pageId]) {\n this.allList[pageId].sort(Utils.sortByProperty('page', 'asc'))\n }\n }\n\n // 转储到 store.idList 里\n // 自动排序\n // 转储之后自动清空\n public store(pageId: number) {\n if (this.allList[pageId]) {\n this.sort(pageId)\n\n for (const data of this.allList[pageId]) {\n store.idList.push({\n id: data.id,\n type: data.type,\n })\n }\n\n this.clear(pageId)\n }\n }\n\n // 如果没有值,返回的就是 undefined\n public get(pageId: number) {\n return this.allList[pageId]\n }\n}\n\nconst idListWithPageNo = new IdListWithPageNo()\nexport { idListWithPageNo }\n","import { API } from '../API'\nimport { filter, FilterOption } from '../filter/Filter'\nimport { settings } from '../setting/Settings'\nimport { ArtworkData } from '../crawl/CrawlResult'\nimport { store } from './Store'\nimport { Tools } from '../Tools'\nimport { log } from '../Log'\nimport { Utils } from '../utils/Utils'\n\n// 保存图片作品的数据\nclass SaveArtworkData {\n public async save(data: ArtworkData) {\n // 获取需要检查的信息\n const body = data.body\n const fullWidth = body.width // 原图宽度\n const fullHeight = body.height // 原图高度\n const bmk = body.bookmarkCount // 收藏数\n\n const tags: string[] = Tools.extractTags(data) // tag 列表\n const tagsWithTransl: string[] = Tools.extractTags(data, 'both') // 保存 tag 列表,附带翻译后的 tag\n const tagsTranslOnly: string[] = Tools.extractTags(data, 'transl') // 保存翻译后的 tag 列表\n\n const aiMarkString = Tools.getAIGeneratedMark(body.aiType)\n if (aiMarkString) {\n tags.unshift(aiMarkString)\n tagsWithTransl.unshift(aiMarkString)\n tagsTranslOnly.unshift(aiMarkString)\n }\n\n const filterOpt: FilterOption = {\n aiType: body.aiType,\n createDate: body.createDate,\n id: body.id,\n workType: body.illustType,\n tags: tagsWithTransl,\n pageCount: body.pageCount,\n bookmarkCount: bmk,\n bookmarkData: body.bookmarkData,\n width: body.pageCount === 1 ? fullWidth : 0,\n height: body.pageCount === 1 ? fullHeight : 0,\n mini: body.pageCount === 1 ? body.urls.mini : undefined,\n userId: body.userId,\n xRestrict: body.xRestrict,\n }\n // 对于多图作品,其宽高和颜色不在这里进行检查。也就是只会在下载时检查。\n // 这是因为在多图作品里,第一张图片的宽高和颜色不能代表剩余的图片。\n\n // 检查通过\n if (await filter.check(filterOpt)) {\n const idNum = parseInt(body.id)\n const title = body.title // 作品标题\n const userId = body.userId // 用户id\n const user = body.userName // 用户名\n const pageCount = body.pageCount\n const bookmarked = !!body.bookmarkData\n\n // 保存作品在排行榜上的编号\n const rankData = store.getRankList(body.id)\n const rank = rankData ? rankData : null\n\n const seriesTitle = body.seriesNavData ? body.seriesNavData.title : ''\n const seriesOrder = body.seriesNavData ? body.seriesNavData.order : null\n\n // 保存作品信息\n const description = Utils.htmlDecode(body.description)\n\n if (body.illustType === 0 || body.illustType === 1) {\n // 插画或漫画\n const imgUrl = body.urls.original // 作品的原图 URL\n if (imgUrl === null) {\n log.error(`${Tools.createWorkLink(body.id, true)} URLs are null`)\n return\n }\n\n const tempExt = imgUrl.split('.')\n const ext = tempExt[tempExt.length - 1]\n\n store.addResult({\n aiType: body.aiType,\n id: body.id,\n idNum: idNum,\n // 对于插画和漫画的缩略图,当一个作品包含多个图片文件时,需要转换缩略图 url\n thumb:\n body.pageCount > 1\n ? Tools.convertArtworkThumbURL(body.urls.thumb, 0)\n : body.urls.thumb,\n pageCount: pageCount,\n original: imgUrl,\n regular: body.urls.regular,\n small: body.urls.small,\n title: title,\n description: description,\n tags: tags,\n tagsWithTransl: tagsWithTransl,\n tagsTranslOnly: tagsTranslOnly,\n user: user,\n userId: userId,\n fullWidth: fullWidth,\n fullHeight: fullHeight,\n ext: ext,\n bmk: bmk,\n bmkId: body.bookmarkData ? body.bookmarkData.id : '',\n bookmarked: bookmarked,\n date: body.createDate,\n uploadDate: body.uploadDate,\n type: body.illustType,\n rank: rank,\n seriesTitle: seriesTitle,\n seriesOrder: seriesOrder,\n seriesId: body.seriesNavData ? body.seriesNavData!.seriesId : null,\n viewCount: body.viewCount,\n likeCount: body.likeCount,\n commentCount: body.commentCount,\n xRestrict: body.xRestrict,\n sl: body.sl,\n })\n } else if (body.illustType === 2) {\n // 动图\n // 获取动图的信息\n const meta = await API.getUgoiraMeta(body.id)\n // 动图帧延迟数据\n const ugoiraInfo = {\n frames: meta.body.frames,\n mime_type: meta.body.mime_type,\n }\n\n // 当下载图片的方形缩略图时,它的后缀名从 url 中提取。\n // 此时不应该把它的后缀名设置为动图的保存格式,因为缩略图无法转换成动图\n let ext: string = settings.ugoiraSaveAs\n if (settings.imageSize === 'thumb') {\n const tempExt = body.urls.thumb.split('.')\n ext = tempExt[tempExt.length - 1]\n }\n\n store.addResult({\n aiType: body.aiType,\n id: body.id,\n idNum: idNum,\n thumb: body.urls.thumb,\n pageCount: pageCount,\n original: meta.body.originalSrc,\n regular: meta.body.src,\n small: meta.body.src,\n title: title,\n description: description,\n tags: tags,\n tagsWithTransl: tagsWithTransl,\n tagsTranslOnly: tagsTranslOnly,\n user: user,\n userId: userId,\n fullWidth: fullWidth,\n fullHeight: fullHeight,\n ext: ext,\n bmk: bmk,\n bmkId: body.bookmarkData ? body.bookmarkData.id : '',\n bookmarked: bookmarked,\n date: body.createDate,\n uploadDate: body.uploadDate,\n type: body.illustType,\n rank: rank,\n ugoiraInfo: ugoiraInfo,\n seriesTitle: seriesTitle,\n seriesOrder: seriesOrder,\n viewCount: body.viewCount,\n likeCount: body.likeCount,\n commentCount: body.commentCount,\n xRestrict: body.xRestrict,\n sl: body.sl,\n })\n }\n }\n }\n}\n\nconst saveArtworkData = new SaveArtworkData()\nexport { saveArtworkData }\n","import { filter, FilterOption } from '../filter/Filter'\nimport { NovelData } from '../crawl/CrawlResult'\nimport { store } from './Store'\nimport { settings } from '../setting/Settings'\nimport { Tools } from '../Tools'\nimport { Utils } from '../utils/Utils'\n\n// 保存单个小说作品的数据\nclass SaveNovelData {\n public async save(data: NovelData) {\n // 小说没有 illustType 属性, 把小说的 illustType 设置为 3,这是为了方便检查\n const illustType = 3\n\n // 获取需要检查的信息\n const body = data.body\n const bmk = body.bookmarkCount // 收藏数\n\n const tags: string[] = Tools.extractTags(data) // tag 列表\n // 小说的标签没有进行翻译,所以没有翻译后的标签\n\n const aiMarkString = Tools.getAIGeneratedMark(body.aiType)\n if (aiMarkString) {\n tags.unshift(aiMarkString)\n }\n\n const filterOpt: FilterOption = {\n aiType: body.aiType,\n createDate: body.createDate,\n id: body.id,\n workType: illustType,\n tags: tags,\n bookmarkCount: bmk,\n bookmarkData: body.bookmarkData,\n userId: body.userId,\n xRestrict: body.xRestrict,\n }\n\n // 检查通过\n if (await filter.check(filterOpt)) {\n const id = body.id\n const idNum = parseInt(id)\n const title = body.title\n const userId = body.userId\n const user = body.userName\n const bookmarked = !!body.bookmarkData\n\n // 保存作品在排行榜上的编号\n const rankData = store.getRankList(id)\n const rank = rankData ? rankData : null\n\n // 系列标题和序号\n const seriesTitle = body.seriesNavData ? body.seriesNavData.title : ''\n const seriesOrder = body.seriesNavData ? body.seriesNavData.order : null\n\n // 保存小说的一些元数据\n let meta = ''\n let metaArr: string[] = []\n\n const pageUrl = `https://www.pixiv.net/novel/show.php?id=${id}`\n const tagsA = []\n for (const tag of tags) {\n tagsA.push('#' + tag)\n }\n metaArr.push(title, user, pageUrl, body.description, tagsA.join('\\n'))\n meta = metaArr.join('\\n\\n') + '\\n\\n\\n'\n\n // 提取嵌入的图片资源\n let embeddedImages: null | {\n [key: string]: string\n } = null\n if (body.textEmbeddedImages) {\n embeddedImages = {}\n for (const [id, value] of Object.entries(body.textEmbeddedImages)) {\n embeddedImages[id] = value.urls.original\n }\n }\n\n // 保存作品信息\n const description = Utils.htmlDecode(body.description)\n\n store.addResult({\n aiType: body.aiType,\n id: id,\n idNum: idNum,\n thumb: body.coverUrl || undefined,\n title: title,\n description: description,\n tags: tags,\n tagsWithTransl: tags,\n tagsTranslOnly: tags,\n user: user,\n userId: userId,\n // 这里的 ext 并不重要,下载时会根据 novelSaveAs 设置自动生成对应的数据\n ext: settings.novelSaveAs,\n bmk: bmk,\n bmkId: body.bookmarkData ? body.bookmarkData.id : '',\n bookmarked: bookmarked,\n date: body.createDate,\n uploadDate: body.uploadDate,\n type: illustType,\n rank: rank,\n seriesTitle: seriesTitle,\n seriesOrder: seriesOrder,\n seriesId: body.seriesNavData ? body.seriesNavData!.seriesId : null,\n viewCount: body.viewCount,\n likeCount: body.likeCount,\n commentCount: body.commentCount,\n novelMeta: {\n id: body.id,\n title: body.title,\n content: this.replaceFlag(body.content),\n description: description,\n coverUrl: body.coverUrl,\n createDate: body.createDate,\n userName: body.userName,\n embeddedImages: embeddedImages,\n meta: meta,\n },\n xRestrict: body.xRestrict,\n })\n }\n }\n\n // '[[jumpuri:予約ページ>https://www.amazon.co.jp/dp/4758092486]]'\n // 替换成\n // '予約ページ(https://www.amazon.co.jp/dp/4758092486)'\n private replaceJumpuri(str: string) {\n let reg = /\\[\\[jumpuri:(.*?)>(.*?)\\]\\]/g\n let temp\n while ((temp = reg.exec(str))) {\n str = str.replace(temp[0], `${temp[1].trim()}(${temp[2].trim()})`)\n reg.lastIndex = 0\n }\n\n return str\n }\n\n // > '[[rb:莉莉丝 > Lilith]]'\n // 替换成\n // '莉莉丝(Lilith)'\n private replaceRb(str: string) {\n let reg = /\\[\\[rb:(.*?)>(.*?)\\]\\]/g\n let temp\n while ((temp = reg.exec(str))) {\n str = str.replace(temp[0], `${temp[1].trim()}(${temp[2].trim()})`)\n reg.lastIndex = 0\n }\n return str\n }\n\n // > '[chapter:标题]'\n // 替换成\n // '标题'\n private replaceChapter(str: string) {\n const reg = /\\[chapter:(.*?)\\]/g\n let temp\n while ((temp = reg.exec(str))) {\n str = str.replace(temp[0], temp[1])\n reg.lastIndex = 0\n }\n return str\n }\n\n // 对小说里的一些标记进行替换\n private replaceFlag(str: string) {\n str = str.replace(/\\[newpage\\]/g, '')\n\n str = this.replaceJumpuri(str)\n\n str = str.replace(/\\[jump:.*?\\]/g, '')\n\n str = this.replaceRb(str)\n\n str = this.replaceChapter(str)\n\n return str\n }\n}\n\nconst saveNovelData = new SaveNovelData()\nexport { saveNovelData }\n","import { EVT } from '../EVT'\n\n// 储存下载器内部产生的、会变化的状态\n// 这里的状态不需要持久化保存\n// 状态的值通常只由单一的模块修改\nclass States {\n constructor() {\n this.bindEvents()\n }\n\n /**指示 settings 是否初始化完毕 */\n public settingInitialized = false\n\n /**表示下载器是否处于繁忙状态\n *\n * 繁忙:下载器正在抓取作品,或者正在下载文件,或者正在批量添加收藏\n */\n public busy = false\n\n /**快速下载标记\n *\n * 快速下载模式中不会显示下载面板,并且总是会自动开始下载\n *\n * 启动快速下载时设为 true,下载完成或中止时复位到 false\n */\n public quickCrawl = false\n\n /**指示是否应该停止抓取 */\n public stopCrawl = false\n\n /**在排行榜抓取时,是否只抓取“首次登场”的作品 */\n // 修改者:InitRankingArtworkPage 模块修改这个状态\n public debut = false\n\n /**收藏模式的标记 */\n // 开始批量收藏时设为 true,收藏完成之后复位到 false\n public bookmarkMode = false\n\n /**合并系列小说时使用的标记 */\n public mergeNovel = false\n\n /**抓取标签列表时使用的标记 */\n public crawlTagList = false\n\n /**是否处于手动选择作品状态 */\n public selectWork = false\n\n /**是否处于下载中 */\n public downloading = false\n\n /**是否应用慢速抓取模式 */\n // 由 InitPageBase 修改它的值\n public slowCrawlMode = false\n\n /**是否在获取完作品 ID 列表后立即导出,并停止抓取 */\n // 这和 settings 里的 exportIDList 作用是相同的,但不是持久设置,\n // 因为它只在某些特定功能上临时使用,之后会被重置\n public exportIDList = false\n\n private bindEvents() {\n window.addEventListener(EVT.list.settingInitialized, () => {\n this.settingInitialized = true\n })\n\n const idle = [\n EVT.list.stopCrawl,\n EVT.list.crawlComplete,\n EVT.list.downloadPause,\n EVT.list.downloadStop,\n EVT.list.downloadComplete,\n EVT.list.bookmarkModeEnd,\n ]\n\n idle.forEach((type) => {\n window.addEventListener(type, () => {\n this.busy = false\n })\n })\n\n const busy = [\n EVT.list.crawlStart,\n EVT.list.downloadStart,\n EVT.list.bookmarkModeStart,\n ]\n\n busy.forEach((type) => {\n window.addEventListener(type, () => {\n this.busy = true\n })\n })\n\n window.addEventListener(EVT.list.bookmarkModeStart, () => {\n this.bookmarkMode = true\n })\n\n window.addEventListener(EVT.list.bookmarkModeEnd, () => {\n this.bookmarkMode = false\n })\n\n // 下载完成,或者下载中止时,复位快速下载类状态\n const resetQuickState = [\n EVT.list.crawlEmpty,\n EVT.list.downloadStop,\n EVT.list.downloadPause,\n EVT.list.downloadComplete,\n EVT.list.downloadCancel,\n ]\n\n for (const ev of resetQuickState) {\n window.addEventListener(ev, () => {\n this.quickCrawl = false\n })\n }\n\n window.addEventListener(EVT.list.downloadStart, () => {\n this.downloading = true\n })\n\n const downloadIdle = [\n EVT.list.downloadPause,\n EVT.list.downloadStop,\n EVT.list.downloadComplete,\n ]\n for (const ev of downloadIdle) {\n window.addEventListener(ev, () => {\n this.downloading = false\n })\n }\n\n window.addEventListener(EVT.list.settingChange, (ev: CustomEventInit) => {\n const data = ev.detail.data as any\n // 当用户关闭设置里的慢速抓取时,在这里把慢速抓取模式的标记设为 false\n // 但是当用户开启慢速抓取时,不应该在这里把标记设为 true\n if (data.name === 'slowCrawl' && data.value === false) {\n this.slowCrawlMode = false\n }\n })\n }\n}\n\nconst states = new States()\nexport { states }\n","import { EVT } from '../EVT'\nimport { settings } from '../setting/Settings'\nimport { Tools } from '../Tools'\nimport { Result, ResultOptional, RankList, IDData } from './StoreType'\n\n// 保存抓取结果和其他一些公用数据\nclass Store {\n constructor() {\n this.loggedUserID = Tools.getLoggedUserID()\n this.bindEvents()\n }\n\n public loggedUserID = ''\n\n public idList: IDData[] = [] // 储存从列表中抓取到的作品的 id\n\n public waitingIdList: IDData[] = [] // 下载器尚未完成本次下载时,如果有新的下载请求,则添加到这里,下载完成后再处理\n\n public resultMeta: Result[] = [] // 储存抓取结果的元数据。\n // 当用于图片作品时,它可以根据每个作品需要下载多少张,生成每一张图片的信息\n\n /**系列小说的设定资料 */\n public novelSeriesGlossary = ''\n\n private artworkIDList: number[] = [] // 储存抓取到的图片作品的 id 列表,用来避免重复添加\n private novelIDList: number[] = [] // 储存抓取到的小说作品的 id 列表,用来避免重复添加\n\n public result: Result[] = [] // 储存抓取结果\n\n /**当前登录用户的关注用户列表 */\n public followingUserIDList: string[] = []\n\n /**记录从每个作品里下载多少个文件 */\n public downloadCount: {\n [workID: string]: number\n } = {}\n\n // 恢复未完成的下载之后,生成 downloadCount 数据\n // 因为保存的任务数据里没有 downloadCount,并且恢复数据时也没有生成 downloadCount\n public resetDownloadCount() {\n this.downloadCount = {}\n for (const r of this.result) {\n this.downloadCount[r.idNum] = (this.downloadCount[r.idNum] || 0) + 1\n }\n }\n\n public remainingDownload = 0 // 剩余多少个等待下载和保存的文件\n\n private rankList: RankList = {} // 储存作品在排行榜中的排名\n\n public tag = '' // 开始抓取时,储存页面此时的 tag\n\n public title = '' // 开始抓取时,储存页面此时的 title\n\n public URLWhenCrawlStart = '' // 开始抓取时,储存页面此时的 URL\n\n public crawlCompleteTime: Date = new Date()\n\n /**只下载作品里的一部分图片 */\n private downloadOnlyPart: {\n [workID: string]: number[]\n } = {}\n\n public setDownloadOnlyPart(workID: number, indexList: number[]) {\n if (this.downloadOnlyPart[workID]) {\n this.downloadOnlyPart[workID] = Array.from(\n new Set(this.downloadOnlyPart[workID].concat(indexList))\n )\n } else {\n this.downloadOnlyPart[workID] = indexList\n }\n }\n\n private readonly fileDataDefault: Result = {\n aiType: 0,\n idNum: 0,\n id: '',\n original: '',\n thumb: '',\n regular: '',\n small: '',\n title: '',\n description: '',\n pageCount: 1,\n index: 0,\n tags: [],\n tagsWithTransl: [],\n tagsTranslOnly: [],\n user: '',\n userId: '',\n fullWidth: 0,\n fullHeight: 0,\n ext: '',\n bmk: 0,\n bookmarked: false,\n bmkId: '',\n date: '',\n uploadDate: '',\n type: 0,\n rank: null,\n ugoiraInfo: null,\n seriesTitle: null,\n seriesOrder: null,\n seriesId: null,\n novelMeta: null,\n likeCount: 0,\n viewCount: 0,\n commentCount: 0,\n xRestrict: 0,\n sl: null,\n }\n\n // 添加每个作品的信息。只需要传递有值的属性\n // 如果一个作品有多张图片,只需要传递第一张图片的数据。后面的数据会根据设置自动生成\n public addResult(data: ResultOptional) {\n // 检查该作品 id 是否已存在,已存在则不添加\n const useList = data.type === 3 ? this.novelIDList : this.artworkIDList\n if (data.idNum !== undefined) {\n if (useList.includes(data.idNum)) {\n return\n }\n useList.push(data.idNum)\n }\n\n // 添加该作品的元数据\n const workData = Object.assign({}, this.fileDataDefault, data)\n // 注意:由于 Object.assign 不是深拷贝,所以不可以修改 result 的引用类型数据,否则会影响到源对象\n // 可以修改基础类型的数据\n\n if (workData.type === 0 || workData.type === 1) {\n workData.id = workData.idNum + `_p0`\n } else {\n workData.id = workData.idNum.toString()\n }\n\n this.resultMeta.push(workData)\n\n EVT.fire('addResult', workData)\n\n // 保存这个作品里每个文件的数据\n if (workData.type === 2 || workData.type === 3) {\n // 动图和小说作品直接添加\n this.result.push(workData)\n\n this.downloadCount[workData.idNum] = 1\n } else {\n // 插画和漫画\n\n // 储存需要下载的图片的索引\n let fileIndexList: number[] = []\n\n // 只下载部分图片\n if (this.downloadOnlyPart[workData.idNum]) {\n fileIndexList = this.downloadOnlyPart[workData.idNum]\n delete this.downloadOnlyPart[workData.idNum]\n } else {\n // 下载全部图片\n let total = workData.pageCount\n\n // 如果下载全部图片,则检查一些过滤器\n // 只下载部分图片时,用户已经手动指定了要下载的图片,所以不要检查这些过滤器\n\n // 多图作品只下载前几张图片\n if (settings.firstFewImagesSwitch) {\n total = Math.min(workData.pageCount, settings.firstFewImages)\n }\n\n // 不抓取多图作品的最后一张图片\n if (\n settings.doNotDownloadLastImageOfMultiImageWork &&\n workData.pageCount > 1\n ) {\n total = Math.min(total, workData.pageCount - 1)\n }\n\n // 特定用户的多图作品不下载最后几张图片\n if (workData.pageCount > 1) {\n const removeLastFew = settings.DoNotDownloadLastFewImagesList.find(\n (item) => item.uid === Number.parseInt(workData.userId)\n )\n\n if (removeLastFew && removeLastFew.value > 0) {\n let number = workData.pageCount - removeLastFew.value\n if (number < 1) {\n // 用户设置的值有可能把这个作品的图片全部排除了,此时只跳过最后一张\n number = workData.pageCount - 1\n }\n total = Math.min(total, number)\n }\n }\n\n for (let i = 0; i < total; i++) {\n fileIndexList.push(i)\n }\n }\n\n this.downloadCount[workData.idNum] = fileIndexList.length\n\n // 生成每个图片的数据\n const p0 = 'p0'\n for (const i of fileIndexList) {\n const fileData = Object.assign({}, workData)\n const pi = 'p' + i\n fileData.index = i\n fileData.id = fileData.id.replace(p0, pi)\n fileData.original = fileData.original.replace(p0, pi)\n fileData.regular = fileData.regular.replace(p0, pi)\n fileData.small = fileData.small.replace(p0, pi)\n fileData.thumb = fileData.thumb.replace(p0, pi)\n this.result.push(fileData)\n }\n }\n }\n\n public getRankList(index: string) {\n return this.rankList[index]\n }\n\n public setRankList(id: string, rank: number) {\n this.rankList[id] = rank\n }\n\n public findResult(id: string) {\n for (const result of this.result) {\n if (result.id === id) {\n return result\n }\n }\n }\n\n public reset() {\n this.resultMeta = []\n this.artworkIDList = []\n this.novelIDList = []\n this.result = []\n this.idList = []\n this.waitingIdList = []\n this.rankList = {}\n this.remainingDownload = 0\n this.novelSeriesGlossary = ''\n this.tag = Tools.getTagFromURL()\n this.title = Tools.getPageTitle()\n }\n\n private bindEvents() {\n window.addEventListener(EVT.list.crawlStart, () => {\n this.URLWhenCrawlStart = window.location.href\n this.reset()\n })\n\n // 停止下载时,清空等待下载的任务\n window.addEventListener(EVT.list.downloadStop, () => {\n this.waitingIdList = []\n })\n\n window.addEventListener(EVT.list.resume, () => {\n this.tag = Tools.getTagFromURL()\n this.title = Tools.getPageTitle()\n })\n }\n}\n\nconst store = new Store()\nexport { store }\n","export const novelData = [\n [129, 1280384594000],\n [10007, 1280558885000],\n [20001, 1281099833000],\n [30006, 1282016726000],\n [40000, 1283058990000],\n [50003, 1284130800000],\n [60002, 1285248459000],\n [70000, 1286383797000],\n [80000, 1287587350000],\n [90003, 1288702643000],\n [100000, 1289750009000],\n [110000, 1290800661000],\n [120000, 1291911048000],\n [130000, 1293023102000],\n [140001, 1293990763000],\n [150004, 1294921696000],\n [160004, 1295784678000],\n [170001, 1296580286000],\n [180000, 1297357894000],\n [190002, 1298051246000],\n [200000, 1298800698000],\n [210000, 1299544965000],\n [220000, 1300512363000],\n [230000, 1301213084000],\n [240000, 1301836904000],\n [250000, 1302561861000],\n [260000, 1303376035000],\n [270002, 1304084248000],\n [280000, 1304695785000],\n [290000, 1305338427000],\n [300000, 1305942926000],\n [310002, 1306521475000],\n [320000, 1307103716000],\n [330000, 1307628374000],\n [340000, 1308152212000],\n [350001, 1308671940000],\n [360003, 1309193210000],\n [370000, 1309707590000],\n [380001, 1310224382000],\n [390002, 1310744385000],\n [400000, 1311240590000],\n [410000, 1311714592000],\n [420003, 1312224244000],\n [430001, 1312731339000],\n [440001, 1313296075000],\n [450003, 1313764835000],\n [460000, 1314249696000],\n [470003, 1314711329000],\n [480000, 1315145953000],\n [490007, 1315659922000],\n [500000, 1316129991000],\n [510003, 1316556988000],\n [520000, 1316999883000],\n [530004, 1317484198000],\n [540001, 1317970536000],\n [550003, 1318383439000],\n [560001, 1318844138000],\n [570001, 1319298372000],\n [580000, 1319786020000],\n [590001, 1320157532000],\n [600000, 1320589354000],\n [610003, 1321033402000],\n [620000, 1321519466000],\n [630002, 1321925666000],\n [640000, 1322323144000],\n [650001, 1322778841000],\n [660000, 1323187376000],\n [670000, 1323619422000],\n [680002, 1324113471000],\n [690005, 1324542346000],\n [700000, 1324863292000],\n [710000, 1325265330000],\n [720001, 1325664232000],\n [730000, 1326030447000],\n [740000, 1326447371000],\n [750000, 1326813089000],\n [760000, 1327222222000],\n [770000, 1327616533000],\n [780001, 1327978661000],\n [790006, 1328363509000],\n [800000, 1328708326000],\n [810002, 1329049070000],\n [820000, 1329313827000],\n [830000, 1329661069000],\n [840000, 1330044197000],\n [850002, 1330399536000],\n [860000, 1330760171000],\n [870000, 1331091059000],\n [880001, 1331430688000],\n [890000, 1331740424000],\n [900000, 1332056343000],\n [910000, 1332342034000],\n [920004, 1332657590000],\n [930000, 1332950185000],\n [940001, 1333253995000],\n [950001, 1333531155000],\n [960003, 1333851677000],\n [970001, 1334204901000],\n [980001, 1334509654000],\n [990000, 1334915605000],\n [1000004, 1335194889000],\n [1010001, 1335577999000],\n [1020001, 1335865453000],\n [1030000, 1336148344000],\n [1040000, 1336430393000],\n [1050000, 1336801524000],\n [1060001, 1337093451000],\n [1070000, 1337435442000],\n [1080003, 1337748152000],\n [1090000, 1338048813000],\n [1100000, 1338386829000],\n [1110006, 1338706652000],\n [1120001, 1338995770000],\n [1130003, 1339304913000],\n [1140000, 1339594732000],\n [1150005, 1339900812000],\n [1160000, 1340181428000],\n [1170000, 1340467013000],\n [1180000, 1340798549000],\n [1190004, 1341081318000],\n [1200000, 1341378294000],\n [1210000, 1341627003000],\n [1220000, 1341838882000],\n [1230002, 1342107912000],\n [1240001, 1342366761000],\n [1250000, 1342624522000],\n [1260000, 1342893053000],\n [1270001, 1343141451000],\n [1280000, 1343411297000],\n [1290000, 1343663085000],\n [1300001, 1343920259000],\n [1310000, 1344169879000],\n [1320002, 1344409293000],\n [1330000, 1344659199000],\n [1340000, 1344896869000],\n [1350000, 1345124715000],\n [1360009, 1345359194000],\n [1370002, 1345599272000],\n [1380000, 1345835088000],\n [1390000, 1346075877000],\n [1400001, 1346330394000],\n [1410001, 1346550028000],\n [1420000, 1346779027000],\n [1430000, 1347060633000],\n [1440001, 1347279773000],\n [1450001, 1347538265000],\n [1460005, 1347781791000],\n [1470001, 1347973096000],\n [1480002, 1348233789000],\n [1490000, 1348421630000],\n [1500001, 1348700844000],\n [1510001, 1348937413000],\n [1520000, 1349157850000],\n [1530001, 1349372979000],\n [1540002, 1349606131000],\n [1550001, 1349795097000],\n [1560001, 1350052229000],\n [1570002, 1350269341000],\n [1580001, 1350532237000],\n [1590000, 1350758415000],\n [1600000, 1350997858000],\n [1610006, 1351261071000],\n [1620003, 1351479480000],\n [1630002, 1351693412000],\n [1640000, 1351949249000],\n [1650005, 1352189853000],\n [1660000, 1352449647000],\n [1670002, 1352637939000],\n [1680001, 1352884190000],\n [1690000, 1353154000000],\n [1700000, 1353402782000],\n [1710000, 1353638092000],\n [1720001, 1353848294000],\n [1730000, 1354118175000],\n [1740003, 1354378863000],\n [1750002, 1354631450000],\n [1760000, 1354938336000],\n [1770001, 1355153123000],\n [1780000, 1355444255000],\n [1790003, 1355670988000],\n [1800000, 1355934280000],\n [1810000, 1356190313000],\n [1820001, 1356371790000],\n [1830001, 1356616228000],\n [1840003, 1356868743000],\n [1850002, 1357070395000],\n [1860000, 1357313538000],\n [1870000, 1357548863000],\n [1880001, 1357824009000],\n [1890000, 1358074605000],\n [1900000, 1358265865000],\n [1910000, 1358569040000],\n [1920003, 1358779320000],\n [1930000, 1359041117000],\n [1940001, 1359285099000],\n [1950002, 1359536718000],\n [1960000, 1359745109000],\n [1970002, 1359966846000],\n [1980000, 1360210328000],\n [1990001, 1360429921000],\n [2000000, 1360642383000],\n [2010000, 1360844563000],\n [2020000, 1361026805000],\n [2030005, 1361263382000],\n [2040000, 1361519812000],\n [2050000, 1361713982000],\n [2060001, 1361973749000],\n [2070000, 1362225095000],\n [2080000, 1362416157000],\n [2090000, 1362671650000],\n [2100001, 1362903499000],\n [2110004, 1363125268000],\n [2120000, 1363354484000],\n [2130000, 1363575696000],\n [2140000, 1363788816000],\n [2150000, 1364031500000],\n [2160000, 1364224743000],\n [2170003, 1364468664000],\n [2180001, 1364685260000],\n [2190000, 1364872459000],\n [2200001, 1365085949000],\n [2210001, 1365305116000],\n [2220000, 1365521609000],\n [2230000, 1365821669000],\n [2240001, 1366035468000],\n [2250001, 1366338753000],\n [2260002, 1366554728000],\n [2270000, 1366817986000],\n [2280001, 1367079795000],\n [2290001, 1367301796000],\n [2300000, 1367535148000],\n [2310000, 1367755047000],\n [2320001, 1367938482000],\n [2330002, 1368198077000],\n [2340002, 1368402443000],\n [2350002, 1368671885000],\n [2360000, 1368908138000],\n [2370000, 1369143679000],\n [2380000, 1369399230000],\n [2390002, 1369586696000],\n [2400004, 1369887355000],\n [2410000, 1370104099000],\n [2420002, 1370341310000],\n [2430001, 1370603557000],\n [2440001, 1370788687000],\n [2450000, 1371038666000],\n [2460002, 1371286007000],\n [2470000, 1371481119000],\n [2480000, 1371732988000],\n [2490002, 1371958259000],\n [2500000, 1372170531000],\n [2510000, 1372430704000],\n [2520001, 1372617024000],\n [2530004, 1372871380000],\n [2540001, 1373120348000],\n [2550000, 1373293117000],\n [2560000, 1373552201000],\n [2570001, 1373799086000],\n [2580000, 1373990399000],\n [2590001, 1374251028000],\n [2600000, 1374478513000],\n [2610000, 1374695793000],\n [2620001, 1374935403000],\n [2630001, 1375151019000],\n [2640000, 1375366140000],\n [2650003, 1375582844000],\n [2660006, 1375789458000],\n [2670000, 1375982223000],\n [2680001, 1376219077000],\n [2690000, 1376419869000],\n [2700000, 1376641349000],\n [2710002, 1376830708000],\n [2720001, 1377025884000],\n [2730003, 1377257395000],\n [2740002, 1377439480000],\n [2750000, 1377658821000],\n [2760000, 1377871532000],\n [2770000, 1378042294000],\n [2780000, 1378279211000],\n [2790004, 1378512151000],\n [2800000, 1378707972000],\n [2810000, 1378919770000],\n [2820001, 1379167185000],\n [2830000, 1379338634000],\n [2840000, 1379588368000],\n [2850000, 1379791566000],\n [2860002, 1379998199000],\n [2870001, 1380244352000],\n [2880001, 1380458162000],\n [2890000, 1380709854000],\n [2900001, 1380955990000],\n [2910000, 1381149483000],\n [2920000, 1381395761000],\n [2930000, 1381600314000],\n [2940005, 1381806653000],\n [2950001, 1382032915000],\n [2960000, 1382266138000],\n [2970000, 1382497296000],\n [2980001, 1382722022000],\n [2990002, 1382958224000],\n [3000001, 1383198845000],\n [3010001, 1383402564000],\n [3020000, 1383581008000],\n [3030002, 1383836419000],\n [3040001, 1384069244000],\n [3050000, 1384263193000],\n [3060003, 1384524757000],\n [3070001, 1384737837000],\n [3080000, 1384996638000],\n [3090003, 1385212146000],\n [3100003, 1385431019000],\n [3110000, 1385699731000],\n [3120003, 1385900847000],\n [3130000, 1386153660000],\n [3140002, 1386408440000],\n [3150000, 1386604510000],\n [3160003, 1386865240000],\n [3170000, 1387110539000],\n [3180000, 1387367749000],\n [3190000, 1387604327000],\n [3200000, 1387802332000],\n [3210000, 1387970572000],\n [3220007, 1388160975000],\n [3230000, 1388398804000],\n [3240000, 1388570893000],\n [3250002, 1388768138000],\n [3260001, 1388976072000],\n [3270002, 1389194106000],\n [3280001, 1389440923000],\n [3290006, 1389592662000],\n [3300000, 1389790343000],\n [3310000, 1390038223000],\n [3320001, 1390228417000],\n [3330003, 1390483721000],\n [3340000, 1390708173000],\n [3350001, 1390916206000],\n [3360000, 1391147130000],\n [3370000, 1391328790000],\n [3380002, 1391519054000],\n [3390001, 1391742834000],\n [3400000, 1391928566000],\n [3410000, 1392108927000],\n [3420001, 1392300500000],\n [3430000, 1392440337000],\n [3440000, 1392581355000],\n [3450000, 1392818545000],\n [3460000, 1393053469000],\n [3470003, 1393240576000],\n [3480000, 1393469026000],\n [3490004, 1393675973000],\n [3500000, 1393852227000],\n [3510001, 1394081671000],\n [3520001, 1394285166000],\n [3530001, 1394462801000],\n [3540002, 1394697374000],\n [3550000, 1394880049000],\n [3560002, 1395050621000],\n [3570000, 1395246872000],\n [3580003, 1395474465000],\n [3590000, 1395659536000],\n [3600001, 1395846777000],\n [3610003, 1396065846000],\n [3620000, 1396244134000],\n [3630001, 1396417542000],\n [3640000, 1396614221000],\n [3650001, 1396791326000],\n [3660000, 1397022134000],\n [3670000, 1397274214000],\n [3680003, 1397465091000],\n [3690003, 1397723422000],\n [3700000, 1397926553000],\n [3710001, 1398151228000],\n [3720005, 1398391812000],\n [3730000, 1398595954000],\n [3740000, 1398778603000],\n [3750000, 1398968016000],\n [3760000, 1399202230000],\n [3770001, 1399372076000],\n [3780000, 1399569729000],\n [3790000, 1399790469000],\n [3800000, 1399992962000],\n [3810000, 1400246876000],\n [3820000, 1400425983000],\n [3830000, 1400679476000],\n [3840002, 1400911387000],\n [3850000, 1401098715000],\n [3860001, 1401339903000],\n [3870000, 1401551332000],\n [3880001, 1401759755000],\n [3890001, 1401983592000],\n [3900002, 1402204857000],\n [3910000, 1402398206000],\n [3920001, 1402640662000],\n [3930000, 1402831875000],\n [3940001, 1403027766000],\n [3950001, 1403273218000],\n [3960001, 1403448681000],\n [3970001, 1403689984000],\n [3980003, 1403925632000],\n [3990001, 1404107465000],\n [4000000, 1404318974000],\n [4010001, 1404563643000],\n [4020003, 1404739221000],\n [4030003, 1404955522000],\n [4040000, 1405172711000],\n [4050001, 1405356399000],\n [4060004, 1405613850000],\n [4070000, 1405857345000],\n [4080000, 1406040627000],\n [4090000, 1406291871000],\n [4100002, 1406484212000],\n [4110000, 1406727405000],\n [4120000, 1406945016000],\n [4130001, 1407141824000],\n [4140010, 1407340131000],\n [4150000, 1407562661000],\n [4160000, 1407734796000],\n [4170001, 1407935639000],\n [4180000, 1408125359000],\n [4190000, 1408330818000],\n [4200001, 1408532218000],\n [4210000, 1408722044000],\n [4220000, 1408901567000],\n [4230001, 1409137675000],\n [4240001, 1409330881000],\n [4250005, 1409500868000],\n [4260002, 1409744703000],\n [4270002, 1409967629000],\n [4280003, 1410150372000],\n [4290000, 1410357905000],\n [4300000, 1410596035000],\n [4310000, 1410775372000],\n [4320000, 1410968927000],\n [4330000, 1411212383000],\n [4340001, 1411396391000],\n [4350000, 1411601413000],\n [4360000, 1411826286000],\n [4370002, 1412006421000],\n [4380000, 1412254595000],\n [4390001, 1412446854000],\n [4400000, 1412610825000],\n [4410002, 1412853440000],\n [4420000, 1413040935000],\n [4430002, 1413210796000],\n [4440001, 1413449251000],\n [4450003, 1413674476000],\n [4460002, 1413895354000],\n [4470002, 1414148442000],\n [4480003, 1414334560000],\n [4490000, 1414587176000],\n [4500000, 1414768048000],\n [4510002, 1414948293000],\n [4520000, 1415180576000],\n [4530000, 1415427122000],\n [4540000, 1415620756000],\n [4550000, 1415833945000],\n [4560002, 1416071344000],\n [4570004, 1416308460000],\n [4580002, 1416572690000],\n [4590000, 1416760063000],\n [4600002, 1417003566000],\n [4610002, 1417259849000],\n [4620001, 1417447473000],\n [4630000, 1417714518000],\n [4640000, 1417956598000],\n [4650000, 1418216048000],\n [4660000, 1418475241000],\n [4670000, 1418710339000],\n [4680004, 1418970521000],\n [4690002, 1419169105000],\n [4700005, 1419358497000],\n [4710000, 1419526254000],\n [4720000, 1419772928000],\n [4730000, 1419974551000],\n [4740000, 1420161657000],\n [4750001, 1420365381000],\n [4760002, 1420562341000],\n [4770000, 1420815773000],\n [4780001, 1421031408000],\n [4790001, 1421246156000],\n [4800000, 1421501308000],\n [4810000, 1421686861000],\n [4820000, 1421939002000],\n [4830000, 1422169526000],\n [4840000, 1422371808000],\n [4850000, 1422623205000],\n [4860000, 1422797374000],\n [4870000, 1423017739000],\n [4880000, 1423234605000],\n [4890000, 1423410499000],\n [4900000, 1423644484000],\n [4910001, 1423837444000],\n [4920000, 1423970388000],\n [4930001, 1424165273000],\n [4940001, 1424364687000],\n [4950002, 1424582000000],\n [4960001, 1424768846000],\n [4970001, 1424966114000],\n [4980000, 1425171871000],\n [4990000, 1425349395000],\n [5000000, 1425559592000],\n [5010001, 1425741575000],\n [5020003, 1425913279000],\n [5030003, 1426126824000],\n [5040001, 1426327854000],\n [5050000, 1426495511000],\n [5060001, 1426693282000],\n [5070005, 1426922090000],\n [5080000, 1427098056000],\n [5090000, 1427293125000],\n [5100000, 1427514626000],\n [5110000, 1427695785000],\n [5120002, 1427877197000],\n [5130002, 1428060146000],\n [5140001, 1428234288000],\n [5150000, 1428419973000],\n [5160000, 1428671937000],\n [5170002, 1428847629000],\n [5180001, 1429094087000],\n [5190000, 1429341649000],\n [5200003, 1429525955000],\n [5210000, 1429765217000],\n [5220000, 1429975534000],\n [5230001, 1430176975000],\n [5240002, 1430391697000],\n [5250000, 1430580945000],\n [5260000, 1430763266000],\n [5270001, 1430924583000],\n [5280000, 1431154114000],\n [5290000, 1431323463000],\n [5300002, 1431536550000],\n [5310000, 1431780262000],\n [5320000, 1431956743000],\n [5330000, 1432204529000],\n [5340001, 1432398271000],\n [5350006, 1432606153000],\n [5360001, 1432841545000],\n [5370000, 1433063471000],\n [5380003, 1433258662000],\n [5390000, 1433508887000],\n [5400000, 1433685193000],\n [5410001, 1433916258000],\n [5420000, 1434135276000],\n [5430001, 1434333869000],\n [5440001, 1434559422000],\n [5450000, 1434804693000],\n [5460001, 1434979921000],\n [5470000, 1435217857000],\n [5480001, 1435416104000],\n [5490000, 1435602027000],\n [5500001, 1435840850000],\n [5510000, 1436030904000],\n [5520003, 1436227024000],\n [5530000, 1436442515000],\n [5540003, 1436663422000],\n [5550000, 1436874223000],\n [5560001, 1437120062000],\n [5570000, 1437316067000],\n [5580000, 1437494808000],\n [5590000, 1437746039000],\n [5600002, 1437929627000],\n [5610001, 1438176113000],\n [5620000, 1438388870000],\n [5630000, 1438589507000],\n [5640000, 1438796233000],\n [5650000, 1439030571000],\n [5660004, 1439214144000],\n [5670001, 1439431273000],\n [5680000, 1439642569000],\n [5690001, 1439824201000],\n [5700005, 1440058580000],\n [5710000, 1440256699000],\n [5720000, 1440475809000],\n [5730002, 1440689040000],\n [5740000, 1440914751000],\n [5750003, 1441110359000],\n [5760000, 1441364816000],\n [5770000, 1441549697000],\n [5780006, 1441797710000],\n [5790001, 1442037713000],\n [5800002, 1442233888000],\n [5810000, 1442481291000],\n [5820003, 1442705357000],\n [5830000, 1442908303000],\n [5840000, 1443086697000],\n [5850003, 1443282432000],\n [5860000, 1443459310000],\n [5870006, 1443707232000],\n [5880001, 1443928257000],\n [5890001, 1444139874000],\n [5900001, 1444396252000],\n [5910001, 1444577096000],\n [5920000, 1444792260000],\n [5930002, 1445029691000],\n [5940001, 1445245605000],\n [5950000, 1445504572000],\n [5960000, 1445731426000],\n [5970002, 1445953442000],\n [5980000, 1446211281000],\n [5990002, 1446383992000],\n [6000000, 1446580875000],\n [6010003, 1446842203000],\n [6020001, 1447044347000],\n [6030000, 1447253873000],\n [6040000, 1447505627000],\n [6050000, 1447691164000],\n [6060001, 1447947945000],\n [6070005, 1448186860000],\n [6080000, 1448365784000],\n [6090000, 1448624170000],\n [6100002, 1448810246000],\n [6110000, 1449066515000],\n [6120000, 1449317021000],\n [6130002, 1449507406000],\n [6140001, 1449770690000],\n [6150000, 1450002546000],\n [6160000, 1450231069000],\n [6170001, 1450484327000],\n [6180001, 1450692134000],\n [6190000, 1450882802000],\n [6200001, 1451053403000],\n [6210000, 1451234149000],\n [6220003, 1451471784000],\n [6230000, 1451644655000],\n [6240000, 1451713332000],\n [6250000, 1451847328000],\n [6260005, 1452076808000],\n [6270000, 1452299253000],\n [6280000, 1452496401000],\n [6290000, 1452698011000],\n [6300000, 1452951233000],\n [6310000, 1453142080000],\n [6320001, 1453393135000],\n [6330000, 1453616322000],\n [6340001, 1453812318000],\n [6350000, 1454055730000],\n [6360003, 1454238250000],\n [6370000, 1454427033000],\n [6380000, 1454661000000],\n [6390000, 1454842409000],\n [6400000, 1455041335000],\n [6410000, 1455272058000],\n [6420000, 1455429130000],\n [6430000, 1455565696000],\n [6440000, 1455807564000],\n [6450000, 1456029749000],\n [6460000, 1456225146000],\n [6470000, 1456470713000],\n [6480000, 1456663870000],\n [6490003, 1456892356000],\n [6500001, 1457110676000],\n [6510002, 1457312408000],\n [6520000, 1457531526000],\n [6530000, 1457759895000],\n [6540001, 1457945527000],\n [6550000, 1458146778000],\n [6560000, 1458393176000],\n [6570001, 1458570750000],\n [6580000, 1458809559000],\n [6590000, 1459016231000],\n [6600000, 1459238945000],\n [6610000, 1459438183000],\n [6620004, 1459646525000],\n [6630000, 1459854652000],\n [6640001, 1460090525000],\n [6650000, 1460290792000],\n [6660000, 1460548807000],\n [6670000, 1460814501000],\n [6680000, 1461034745000],\n [6690000, 1461309246000],\n [6700004, 1461504246000],\n [6710000, 1461752821000],\n [6720003, 1461973135000],\n [6730001, 1462174879000],\n [6740001, 1462370008000],\n [6750001, 1462548340000],\n [6760000, 1462720908000],\n [6770002, 1462975121000],\n [6780000, 1463232933000],\n [6790007, 1463433933000],\n [6800002, 1463714821000],\n [6810000, 1463920668000],\n [6820000, 1464128839000],\n [6830004, 1464385492000],\n [6840000, 1464599226000],\n [6850001, 1464861239000],\n [6860002, 1465075280000],\n [6870000, 1465297401000],\n [6880001, 1465549772000],\n [6890000, 1465736580000],\n [6900000, 1465964679000],\n [6910001, 1466179197000],\n [6920000, 1466354374000],\n [6930001, 1466603732000],\n [6940002, 1466845739000],\n [6950000, 1467033992000],\n [6960000, 1467284783000],\n [6970001, 1467480681000],\n [6980000, 1467714202000],\n [6990002, 1467914778000],\n [7000001, 1468145606000],\n [7010000, 1468384915000],\n [7020000, 1468639043000],\n [7030001, 1468840463000],\n [7040002, 1469087617000],\n [7050000, 1469337012000],\n [7060002, 1469582162000],\n [7070002, 1469845430000],\n [7080002, 1470060235000],\n [7090000, 1470312128000],\n [7100000, 1470548609000],\n [7110000, 1470754953000],\n [7120000, 1470989043000],\n [7130001, 1471190531000],\n [7140000, 1471414854000],\n [7150004, 1471624400000],\n [7160000, 1471854212000],\n [7170000, 1472088374000],\n [7180002, 1472310616000],\n [7190001, 1472520312000],\n [7200000, 1472738227000],\n [7210002, 1472965256000],\n [7220001, 1473171102000],\n [7230000, 1473424874000],\n [7240001, 1473609515000],\n [7250000, 1473863715000],\n [7260001, 1474116184000],\n [7270003, 1474295985000],\n [7280000, 1474535039000],\n [7290000, 1474737285000],\n [7300000, 1474975696000],\n [7310000, 1475234975000],\n [7320000, 1475421025000],\n [7330001, 1475671020000],\n [7340001, 1475911455000],\n [7350005, 1476103986000],\n [7360002, 1476361587000],\n [7370000, 1476599211000],\n [7380001, 1476815745000],\n [7390000, 1477099543000],\n [7400000, 1477316178000],\n [7410001, 1477579038000],\n [7420003, 1477818419000],\n [7430002, 1478011264000],\n [7440000, 1478264690000],\n [7450002, 1478480338000],\n [7460006, 1478769027000],\n [7470001, 1478994247000],\n [7480000, 1479219274000],\n [7490000, 1479486058000],\n [7500002, 1479730140000],\n [7510003, 1479958570000],\n [7520003, 1480222232000],\n [7530001, 1480471579000],\n [7540000, 1480749927000],\n [7550000, 1480952230000],\n [7560000, 1481224069000],\n [7570001, 1481463117000],\n [7580000, 1481722387000],\n [7590002, 1481985058000],\n [7600001, 1482227418000],\n [7610001, 1482478601000],\n [7620000, 1482645299000],\n [7630003, 1482841839000],\n [7640001, 1483074183000],\n [7650000, 1483258759000],\n [7660004, 1483452663000],\n [7670000, 1483674720000],\n [7680002, 1483879318000],\n [7690000, 1484064960000],\n [7700000, 1484322340000],\n [7710000, 1484542900000],\n [7720000, 1484812130000],\n [7730001, 1485026320000],\n [7740000, 1485257233000],\n [7750006, 1485510790000],\n [7760000, 1485696491000],\n [7770000, 1485932317000],\n [7780000, 1486164673000],\n [7790001, 1486362226000],\n [7800000, 1486599658000],\n [7810000, 1486822612000],\n [7820001, 1487000522000],\n [7830000, 1487174999000],\n [7840000, 1487419341000],\n [7850000, 1487602867000],\n [7860000, 1487855018000],\n [7870000, 1488086339000],\n [7880000, 1488292733000],\n [7890001, 1488543208000],\n [7900000, 1488728156000],\n [7910001, 1488979685000],\n [7920001, 1489220616000],\n [7930000, 1489412693000],\n [7940003, 1489631325000],\n [7950001, 1489848873000],\n [7960000, 1490044638000],\n [7970002, 1490279983000],\n [7980001, 1490516089000],\n [7990001, 1490719990000],\n [8000000, 1490963479000],\n [8010000, 1491137084000],\n [8020002, 1491375868000],\n [8030000, 1491612912000],\n [8040001, 1491803454000],\n [8050001, 1492077857000],\n [8060002, 1492324560000],\n [8070003, 1492561737000],\n [8080002, 1492838030000],\n [8090002, 1493043924000],\n [8100001, 1493307660000],\n [8110002, 1493543878000],\n [8120000, 1493769888000],\n [8130004, 1493982506000],\n [8140000, 1494142350000],\n [8150001, 1494318814000],\n [8160000, 1494568833000],\n [8170000, 1494762677000],\n [8180002, 1495006227000],\n [8190000, 1495250700000],\n [8200000, 1495443298000],\n [8210002, 1495646825000],\n [8220011, 1495894082000],\n [8230000, 1496082134000],\n [8240000, 1496326810000],\n [8250000, 1496555088000],\n [8260000, 1496756385000],\n [8270000, 1497007056000],\n [8280001, 1497183503000],\n [8290002, 1497397397000],\n [8300003, 1497629360000],\n [8310000, 1497796088000],\n [8320000, 1498023980000],\n [8330001, 1498235560000],\n [8340001, 1498396394000],\n [8350000, 1498613161000],\n [8360001, 1498837786000],\n [8370000, 1499015731000],\n [8380001, 1499265524000],\n [8390002, 1499481547000],\n [8400001, 1499686732000],\n [8410005, 1499932800000],\n [8420001, 1500169609000],\n [8430000, 1500374791000],\n [8440006, 1500617656000],\n [8450000, 1500814972000],\n [8460003, 1501039768000],\n [8470000, 1501277295000],\n [8480001, 1501477676000],\n [8490000, 1501697581000],\n [8500002, 1501932379000],\n [8510000, 1502117905000],\n [8520002, 1502331968000],\n [8530000, 1502540146000],\n [8540000, 1502722627000],\n [8550001, 1502898202000],\n [8560004, 1503134037000],\n [8570003, 1503323268000],\n [8580002, 1503521778000],\n [8590002, 1503744984000],\n [8600000, 1503928192000],\n [8610000, 1504170146000],\n [8620000, 1504371768000],\n [8630002, 1504602602000],\n [8640004, 1504820812000],\n [8650000, 1505027878000],\n [8660001, 1505226480000],\n [8670000, 1505482045000],\n [8680000, 1505658395000],\n [8690000, 1505834586000],\n [8700001, 1506089466000],\n [8710000, 1506264067000],\n [8720000, 1506500571000],\n [8730002, 1506728331000],\n [8740000, 1506914687000],\n [8750000, 1507128072000],\n [8760000, 1507345605000],\n [8770000, 1507518334000],\n [8780000, 1507708428000],\n [8790001, 1507940275000],\n [8800002, 1508138851000],\n [8810000, 1508387594000],\n [8820000, 1508606774000],\n [8830000, 1508827234000],\n [8840001, 1509091766000],\n [8850004, 1509287015000],\n [8860000, 1509490049000],\n [8870000, 1509723653000],\n [8880000, 1509932817000],\n [8890002, 1510207133000],\n [8900004, 1510424299000],\n [8910000, 1510667493000],\n [8920001, 1510940639000],\n [8930000, 1511186220000],\n [8940000, 1511451946000],\n [8950000, 1511704396000],\n [8960000, 1511990454000],\n [8970002, 1512274717000],\n [8980000, 1512537099000],\n [8990000, 1512820550000],\n [9000001, 1513072801000],\n [9010001, 1513357525000],\n [9020000, 1513609923000],\n [9030000, 1513915128000],\n [9040000, 1514118493000],\n [9050002, 1514301843000],\n [9060000, 1514555378000],\n [9070000, 1514732301000],\n [9080001, 1514962790000],\n [9090001, 1515172312000],\n [9100002, 1515397618000],\n [9110000, 1515639717000],\n [9120002, 1515896492000],\n [9130001, 1516144113000],\n [9140000, 1516418097000],\n [9150001, 1516626163000],\n [9160001, 1516883176000],\n [9170001, 1517111440000],\n [9180000, 1517325014000],\n [9190000, 1517578594000],\n [9200001, 1517757784000],\n [9210001, 1518010671000],\n [9220000, 1518256808000],\n [9230005, 1518430798000],\n [9240001, 1518605600000],\n [9250000, 1518794113000],\n [9260001, 1518995823000],\n [9270000, 1519225213000],\n [9280003, 1519458758000],\n [9290001, 1519651282000],\n [9300001, 1519890063000],\n [9310000, 1520090182000],\n [9320000, 1520286849000],\n [9330001, 1520520452000],\n [9340000, 1520744294000],\n [9350002, 1520943868000],\n [9360001, 1521147293000],\n [9370002, 1521362086000],\n [9380000, 1521558925000],\n [9390001, 1521769563000],\n [9400001, 1521973588000],\n [9410000, 1522173272000],\n [9420000, 1522410936000],\n [9430000, 1522582869000],\n [9440000, 1522765509000],\n [9450000, 1523004539000],\n [9460000, 1523190018000],\n [9470000, 1523431728000],\n [9480000, 1523685971000],\n [9490002, 1523878396000],\n [9500002, 1524128292000],\n [9510004, 1524330609000],\n [9520004, 1524533838000],\n [9530000, 1524759003000],\n [9540000, 1524987989000],\n [9550001, 1525164608000],\n [9560002, 1525357365000],\n [9570003, 1525528111000],\n [9580002, 1525674935000],\n [9590000, 1525878167000],\n [9600000, 1526120272000],\n [9610000, 1526290836000],\n [9620000, 1526490579000],\n [9630000, 1526727803000],\n [9640000, 1526907002000],\n [9650002, 1527128556000],\n [9660000, 1527340038000],\n [9670001, 1527517920000],\n [9680002, 1527765780000],\n [9690002, 1527957463000],\n [9700000, 1528151574000],\n [9710000, 1528379137000],\n [9720000, 1528580383000],\n [9730001, 1528772398000],\n [9740001, 1528987967000],\n [9750000, 1529204175000],\n [9760000, 1529406774000],\n [9770001, 1529609683000],\n [9780000, 1529819612000],\n [9790000, 1530014717000],\n [9800000, 1530245547000],\n [9810002, 1530432261000],\n [9820001, 1530629380000],\n [9830000, 1530874223000],\n [9840000, 1531041319000],\n [9850000, 1531235299000],\n [9860001, 1531486297000],\n [9870000, 1531670196000],\n [9880001, 1531889979000],\n [9890001, 1532135177000],\n [9900000, 1532338734000],\n [9910000, 1532578434000],\n [9920001, 1532787506000],\n [9930000, 1532975363000],\n [9940002, 1533210580000],\n [9950002, 1533417619000],\n [9960000, 1533624914000],\n [9970001, 1533822046000],\n [9980000, 1534037713000],\n [9990000, 1534228523000],\n [10000000, 1534413149000],\n [10010001, 1534602898000],\n [10020000, 1534783503000],\n [10030000, 1535021938000],\n [10040001, 1535212003000],\n [10050000, 1535428390000],\n [10060003, 1535641964000],\n [10070001, 1535858219000],\n [10080001, 1536054602000],\n [10090000, 1536289206000],\n [10100000, 1536480473000],\n [10110000, 1536676444000],\n [10120000, 1536926627000],\n [10130002, 1537109324000],\n [10140002, 1537291222000],\n [10150000, 1537542002000],\n [10160001, 1537742745000],\n [10170000, 1537951046000],\n [10180001, 1538191192000],\n [10190000, 1538335437000],\n [10200000, 1538573831000],\n [10210000, 1538809742000],\n [10220001, 1538988459000],\n [10230001, 1539181117000],\n [10240000, 1539420771000],\n [10250000, 1539603667000],\n [10260000, 1539849223000],\n [10270001, 1540053876000],\n [10280002, 1540283911000],\n [10290000, 1540536175000],\n [10300001, 1540729543000],\n [10310000, 1540922544000],\n [10320000, 1541154968000],\n [10330000, 1541337866000],\n [10340001, 1541577224000],\n [10350000, 1541802693000],\n [10360000, 1541963072000],\n [10370000, 1542202693000],\n [10380000, 1542444218000],\n [10390000, 1542627147000],\n [10400000, 1542839314000],\n [10410000, 1543047446000],\n [10420001, 1543235621000],\n [10430000, 1543484894000],\n [10440000, 1543685077000],\n [10450000, 1543913221000],\n [10460000, 1544159482000],\n [10470003, 1544358248000],\n [10480004, 1544606237000],\n [10490002, 1544855404000],\n [10500000, 1545051752000],\n [10510000, 1545300827000],\n [10520005, 1545521938000],\n [10530000, 1545661181000],\n [10540000, 1545834409000],\n [10550000, 1546063345000],\n [10560000, 1546244119000],\n [10570000, 1546421525000],\n [10580000, 1546614293000],\n [10590000, 1546787040000],\n [10600000, 1547033210000],\n [10610000, 1547273443000],\n [10620006, 1547455616000],\n [10630000, 1547657448000],\n [10640000, 1547904630000],\n [10650001, 1548082511000],\n [10660000, 1548328452000],\n [10670000, 1548524147000],\n [10680000, 1548734159000],\n [10690000, 1548948502000],\n [10700000, 1549167894000],\n [10710000, 1549362890000],\n [10720000, 1549582063000],\n [10730001, 1549784961000],\n [10740000, 1549939861000],\n [10750001, 1550125895000],\n [10760001, 1550285616000],\n [10770000, 1550431490000],\n [10780004, 1550660401000],\n [10790000, 1550851727000],\n [10800000, 1551023024000],\n [10810000, 1551259433000],\n [10820002, 1551458705000],\n [10830001, 1551629225000],\n [10840002, 1551870373000],\n [10850001, 1552064671000],\n [10860000, 1552234630000],\n [10870002, 1552471261000],\n [10880000, 1552662209000],\n [10890000, 1552836681000],\n [10900002, 1553069704000],\n [10910000, 1553257072000],\n [10920000, 1553422366000],\n [10930000, 1553606730000],\n [10940001, 1553802181000],\n [10950000, 1553998231000],\n [10960000, 1554134490000],\n [10970002, 1554360751000],\n [10980000, 1554554642000],\n [10990000, 1554735834000],\n [11000000, 1554991576000],\n [11010001, 1555218769000],\n [11020000, 1555420366000],\n [11030000, 1555672640000],\n [11040001, 1555849807000],\n [11050001, 1556084207000],\n [11060000, 1556299720000],\n [11070000, 1556504671000],\n [11080001, 1556632398000],\n [11090000, 1556782396000],\n [11100002, 1556955999000],\n [11110000, 1557106544000],\n [11120000, 1557296907000],\n [11130000, 1557514210000],\n [11140000, 1557684014000],\n [11150001, 1557925678000],\n [11160001, 1558170113000],\n [11170000, 1558354050000],\n [11180001, 1558597755000],\n [11190000, 1558792328000],\n [11200001, 1558975623000],\n [11210000, 1559221084000],\n [11220009, 1559435114000],\n [11230001, 1559636873000],\n [11240000, 1559873390000],\n [11250001, 1560067885000],\n [11260002, 1560253598000],\n [11270000, 1560479047000],\n [11280000, 1560672273000],\n [11290000, 1560863233000],\n [11300003, 1561102493000],\n [11310000, 1561287305000],\n [11320000, 1561489991000],\n [11330000, 1561731006000],\n [11340000, 1561903335000],\n [11350000, 1562136969000],\n [11360001, 1562344828000],\n [11370000, 1562510422000],\n [11380000, 1562736164000],\n [11390000, 1562948007000],\n [11400000, 1563125661000],\n [11410001, 1563328806000],\n [11420000, 1563546056000],\n [11430000, 1563724029000],\n [11440003, 1563963216000],\n [11450001, 1564167040000],\n [11460001, 1564335184000],\n [11470001, 1564568121000],\n [11480000, 1564760362000],\n [11490005, 1564962205000],\n [11500000, 1565179291000],\n [11510000, 1565367541000],\n [11520001, 1565572757000],\n [11530000, 1565747468000],\n [11540000, 1565914332000],\n [11550002, 1566091110000],\n [11560000, 1566252215000],\n [11570001, 1566459388000],\n [11580001, 1566648694000],\n [11590000, 1566824198000],\n [11600001, 1567013191000],\n [11610000, 1567228025000],\n [11620001, 1567393806000],\n [11630001, 1567606734000],\n [11640000, 1567835845000],\n [11650001, 1568012646000],\n [11660000, 1568212823000],\n [11670000, 1568435781000],\n [11680003, 1568605425000],\n [11690002, 1568787569000],\n [11700002, 1568989756000],\n [11710000, 1569163036000],\n [11720003, 1569334820000],\n [11730000, 1569574593000],\n [11740000, 1569752468000],\n [11750000, 1569935750000],\n [11760000, 1570150966000],\n [11770000, 1570332151000],\n [11780000, 1570509507000],\n [11790003, 1570715608000],\n [11800003, 1570888809000],\n [11810000, 1571034246000],\n [11820001, 1571216151000],\n [11830000, 1571419097000],\n [11840000, 1571584069000],\n [11850001, 1571757789000],\n [11860001, 1571993843000],\n [11870001, 1572169847000],\n [11880002, 1572357033000],\n [11890000, 1572533610000],\n [11900000, 1572715665000],\n [11910000, 1572878846000],\n [11920000, 1573112560000],\n [11930000, 1573308611000],\n [11940000, 1573474898000],\n [11950000, 1573661969000],\n [11960000, 1573890077000],\n [11970001, 1574075552000],\n [11980000, 1574297595000],\n [11990004, 1574507058000],\n [12000000, 1574681239000],\n [12010000, 1574895129000],\n [12020000, 1575113068000],\n [12030004, 1575288871000],\n [12040000, 1575515481000],\n [12050000, 1575722999000],\n [12060000, 1575900754000],\n [12070000, 1576138200000],\n [12080001, 1576334837000],\n [12090001, 1576511372000],\n [12100000, 1576752334000],\n [12110000, 1576943163000],\n [12120000, 1577116967000],\n [12130001, 1577281370000],\n [12140000, 1577461695000],\n [12150000, 1577646401000],\n [12160000, 1577796064000],\n [12170001, 1577957614000],\n [12180001, 1578127602000],\n [12190001, 1578279558000],\n [12200000, 1578477602000],\n [12210000, 1578666504000],\n [12220000, 1578839347000],\n [12230000, 1579008316000],\n [12240000, 1579227285000],\n [12250002, 1579415678000],\n [12260003, 1579607375000],\n [12270000, 1579805432000],\n [12280000, 1580008380000],\n [12290002, 1580191030000],\n [12300000, 1580389984000],\n [12310001, 1580566786000],\n [12320003, 1580730297000],\n [12330000, 1580915887000],\n [12340001, 1581129374000],\n [12350001, 1581261750000],\n [12360000, 1581430178000],\n [12370000, 1581606681000],\n [12380000, 1581751510000],\n [12390001, 1581868909000],\n [12400000, 1582069408000],\n [12410001, 1582272103000],\n [12420003, 1582429352000],\n [12430000, 1582554250000],\n [12440000, 1582738718000],\n [12450004, 1582951392000],\n [12460000, 1583070874000],\n [12470002, 1583235146000],\n [12480001, 1583402022000],\n [12490003, 1583559433000],\n [12500000, 1583673315000],\n [12510000, 1583825446000],\n [12520002, 1583980204000],\n [12530001, 1584135315000],\n [12540000, 1584263921000],\n [12550000, 1584416516000],\n [12560001, 1584590400000],\n [12570001, 1584744451000],\n [12580000, 1584885405000],\n [12590000, 1585058908000],\n [12600002, 1585236381000],\n [12610000, 1585399742000],\n [12620000, 1585517492000],\n [12630001, 1585669259000],\n [12640000, 1585828423000],\n [12650000, 1585989472000],\n [12660003, 1586098998000],\n [12670001, 1586269270000],\n [12680000, 1586438019000],\n [12690001, 1586591555000],\n [12700000, 1586695382000],\n [12710003, 1586836653000],\n [12720001, 1586971750000],\n [12730000, 1587131198000],\n [12740003, 1587258788000],\n [12750000, 1587373867000],\n [12760000, 1587488314000],\n [12770000, 1587641662000],\n [12780000, 1587781045000],\n [12790000, 1587893479000],\n [12800000, 1588002355000],\n [12810001, 1588148020000],\n [12820000, 1588261459000],\n [12830000, 1588405175000],\n [12840000, 1588508532000],\n [12850000, 1588603233000],\n [12860002, 1588689904000],\n [12870001, 1588780404000],\n [12880000, 1588926173000],\n [12890001, 1589031515000],\n [12900004, 1589112738000],\n [12910000, 1589198403000],\n [12920000, 1589338200000],\n [12930000, 1589463502000],\n [12940000, 1589580481000],\n [12950000, 1589690404000],\n [12960003, 1589796092000],\n [12970000, 1589904983000],\n [12980000, 1590056583000],\n [12990001, 1590174208000],\n [13000000, 1590293031000],\n [13010000, 1590402693000],\n [13020000, 1590542113000],\n [13030000, 1590673782000],\n [13040000, 1590817020000],\n [13050000, 1590921816000],\n [13060000, 1591050960000],\n [13070003, 1591197055000],\n [13080001, 1591357890000],\n [13090001, 1591464609000],\n [13100000, 1591588831000],\n [13110001, 1591714925000],\n [13120001, 1591874091000],\n [13130000, 1592018956000],\n [13140000, 1592127066000],\n [13150003, 1592239701000],\n [13160001, 1592403491000],\n [13170000, 1592562322000],\n [13180000, 1592673515000],\n [13190002, 1592805607000],\n [13200003, 1592944390000],\n [13210000, 1593102620000],\n [13220000, 1593261761000],\n [13230000, 1593358849000],\n [13240000, 1593523575000],\n [13250001, 1593691848000],\n [13260001, 1593849928000],\n [13270000, 1593953075000],\n [13280002, 1594098141000],\n [13290000, 1594221705000],\n [13300000, 1594391310000],\n [13310001, 1594528320000],\n [13320000, 1594646658000],\n [13330000, 1594810055000],\n [13340000, 1594974088000],\n [13350000, 1595086699000],\n [13360002, 1595219750000],\n [13370000, 1595373630000],\n [13380004, 1595514554000],\n [13390000, 1595646365000],\n [13400000, 1595752459000],\n [13410003, 1595863524000],\n [13420003, 1596029751000],\n [13430000, 1596194279000],\n [13440000, 1596306883000],\n [13450001, 1596441247000],\n [13460002, 1596593681000],\n [13470002, 1596734690000],\n [13480000, 1596886682000],\n [13490001, 1596987319000],\n [13500000, 1597123137000],\n [13510001, 1597244082000],\n [13520000, 1597387488000],\n [13530000, 1597496781000],\n [13540000, 1597589882000],\n [13550001, 1597746996000],\n [13560000, 1597895740000],\n [13570002, 1598026651000],\n [13580000, 1598162365000],\n [13590002, 1598279240000],\n [13600000, 1598443997000],\n [13610000, 1598608599000],\n [13620003, 1598726042000],\n [13630002, 1598859157000],\n [13640001, 1598978674000],\n [13650001, 1599140606000],\n [13660000, 1599296267000],\n [13670000, 1599398967000],\n [13680001, 1599550784000],\n [13690000, 1599701636000],\n [13700000, 1599841328000],\n [13710000, 1599975477000],\n [13720001, 1600089113000],\n [13730000, 1600252766000],\n [13740001, 1600416357000],\n [13750001, 1600532583000],\n [13760002, 1600665853000],\n [13770000, 1600769092000],\n [13780000, 1600891369000],\n [13790004, 1601046381000],\n [13800000, 1601178160000],\n [13810000, 1601294975000],\n [13820002, 1601457229000],\n [13830001, 1601618680000],\n [13840000, 1601742168000],\n [13850001, 1601888032000],\n [13860001, 1602053063000],\n [13870001, 1602229323000],\n [13880001, 1602343999000],\n [13890000, 1602487521000],\n [13900000, 1602647496000],\n [13910000, 1602824568000],\n [13920000, 1602952732000],\n [13930000, 1603099598000],\n [13940001, 1603269016000],\n [13950001, 1603431520000],\n [13960000, 1603553517000],\n [13970000, 1603683799000],\n [13980001, 1603825799000],\n [13990000, 1603990293000],\n [14000000, 1604141441000],\n [14010000, 1604239538000],\n [14020002, 1604392582000],\n [14030001, 1604547728000],\n [14040000, 1604710282000],\n [14050002, 1604831865000],\n [14060001, 1604978794000],\n [14070003, 1605111829000],\n [14080000, 1605281377000],\n [14090000, 1605426595000],\n [14100000, 1605544081000],\n [14110001, 1605710566000],\n [14120000, 1605878130000],\n [14130000, 1606009270000],\n [14140000, 1606110664000],\n [14150000, 1606228059000],\n [14160000, 1606395766000],\n [14170000, 1606550198000],\n [14180000, 1606655608000],\n [14190005, 1606811213000],\n [14200001, 1606977488000],\n [14210000, 1607132673000],\n [14220002, 1607254867000],\n [14230000, 1607408548000],\n [14240000, 1607578193000],\n [14250000, 1607731193000],\n [14260000, 1607855866000],\n [14270001, 1608015495000],\n [14280000, 1608188196000],\n [14290000, 1608344622000],\n [14300001, 1608467026000],\n [14310000, 1608631924000],\n [14320001, 1608787087000],\n [14330001, 1608900065000],\n [14340004, 1609032182000],\n [14350001, 1609157888000],\n [14360002, 1609289135000],\n [14370000, 1609392601000],\n [14380004, 1609477161000],\n [14390000, 1609591619000],\n [14400000, 1609687852000],\n [14410000, 1609831223000],\n [14420001, 1609957660000],\n [14430000, 1610118005000],\n [14440000, 1610261298000],\n [14450000, 1610366620000],\n [14460000, 1610524924000],\n [14470000, 1610684778000],\n [14480001, 1610809189000],\n [14490000, 1610930924000],\n [14500000, 1611076353000],\n [14510000, 1611244136000],\n [14520000, 1611399289000],\n [14530001, 1611494532000],\n [14540000, 1611645230000],\n [14550001, 1611779802000],\n [14560000, 1611929597000],\n [14570000, 1612053001000],\n [14580000, 1612159145000],\n [14590000, 1612284409000],\n [14600002, 1612445935000],\n [14610002, 1612594878000],\n [14620000, 1612696360000],\n [14630000, 1612822111000],\n [14640002, 1612968761000],\n [14650000, 1613108310000],\n [14660000, 1613224941000],\n [14670000, 1613306449000],\n [14680003, 1613406134000],\n [14690002, 1613567319000],\n [14700001, 1613724799000],\n [14710001, 1613833209000],\n [14720002, 1613937109000],\n [14730000, 1614073989000],\n [14740000, 1614203006000],\n [14750000, 1614348178000],\n [14760000, 1614475529000],\n [14770000, 1614583382000],\n [14780001, 1614704431000],\n [14790001, 1614865547000],\n [14800000, 1615013503000],\n [14810000, 1615118546000],\n [14820001, 1615260353000],\n [14830000, 1615392435000],\n [14840001, 1615554134000],\n [14850000, 1615656736000],\n [14860000, 1615777688000],\n [14870000, 1615909277000],\n [14880000, 1616074253000],\n [14890000, 1616225241000],\n [14900000, 1616329884000],\n [14910001, 1616479813000],\n [14920001, 1616639805000],\n [14930000, 1616776543000],\n [14940000, 1616919064000],\n [14950001, 1617033405000],\n [14960000, 1617192850000],\n [14970000, 1617324478000],\n [14980000, 1617457126000],\n [14990001, 1617560471000],\n [15000000, 1617721110000],\n [15010000, 1617890905000],\n [15020001, 1618051846000],\n [15030000, 1618154216000],\n [15040001, 1618325640000],\n [15050000, 1618498930000],\n [15060000, 1618661401000],\n [15070000, 1618759507000],\n [15080000, 1618927949000],\n [15090000, 1619101646000],\n [15100003, 1619267671000],\n [15110001, 1619366377000],\n [15120000, 1619539865000],\n [15130001, 1619698940000],\n [15140000, 1619841193000],\n [15150000, 1619952445000],\n [15160001, 1620053070000],\n [15170000, 1620147984000],\n [15180001, 1620264427000],\n [15190000, 1620408103000],\n [15200001, 1620542441000],\n [15210000, 1620656347000],\n [15220002, 1620827018000],\n [15230002, 1620996871000],\n [15240001, 1621125933000],\n [15250005, 1621247716000],\n [15260000, 1621414260000],\n [15270000, 1621576564000],\n [15280004, 1621693448000],\n [15290001, 1621784663000],\n [15300001, 1621944874000],\n [15310000, 1622111419000],\n [15320000, 1622262907000],\n [15330001, 1622368908000],\n [15340001, 1622490000000],\n [15350000, 1622646046000],\n [15360000, 1622811317000],\n [15370000, 1622934001000],\n [15380000, 1623050332000],\n [15390002, 1623204454000],\n [15400001, 1623345615000],\n [15410000, 1623499760000],\n [15420000, 1623596380000],\n [15430000, 1623754940000],\n [15440000, 1623917063000],\n [15450006, 1624062216000],\n [15460000, 1624173519000],\n [15470000, 1624285944000],\n [15480001, 1624446884000],\n [15490001, 1624611602000],\n [15500001, 1624721981000],\n [15510000, 1624848973000],\n [15520000, 1624987994000],\n [15530000, 1625149123000],\n [15540001, 1625305857000],\n [15550000, 1625407992000],\n [15560001, 1625570458000],\n [15570000, 1625708289000],\n [15580001, 1625846024000],\n [15590000, 1625983462000],\n [15600000, 1626102253000],\n [15610000, 1626268263000],\n [15620001, 1626435982000],\n [15630000, 1626571357000],\n [15640000, 1626697635000],\n [15650000, 1626859260000],\n [15660001, 1626984401000],\n [15670001, 1627121694000],\n [15680000, 1627222279000],\n [15690000, 1627377515000],\n [15700001, 1627534685000],\n [15710002, 1627667668000],\n [15720000, 1627799205000],\n [15730001, 1627916409000],\n [15740002, 1628077710000],\n [15750001, 1628239296000],\n [15760000, 1628352705000],\n [15770000, 1628478255000],\n [15780001, 1628594784000],\n [15790001, 1628735344000],\n [15800001, 1628858188000],\n [15810000, 1628957693000],\n [15820000, 1629072598000],\n [15830000, 1629203998000],\n [15840000, 1629345639000],\n [15850000, 1629469386000],\n [15860002, 1629589331000],\n [15870000, 1629705588000],\n [15880000, 1629823753000],\n [15890001, 1629980009000],\n [15900001, 1630116572000],\n [15910000, 1630221709000],\n [15920000, 1630329553000],\n [15930000, 1630470444000],\n [15940001, 1630596817000],\n [15950000, 1630742907000],\n [15960000, 1630841882000],\n [15970000, 1630949694000],\n [15980000, 1631107604000],\n [15990001, 1631258037000],\n [16000000, 1631368076000],\n [16010001, 1631459740000],\n [16020000, 1631616392000],\n [16030000, 1631759130000],\n [16040000, 1631890364000],\n [16050002, 1632006000000],\n [16060000, 1632113580000],\n [16070000, 1632224017000],\n [16080000, 1632357039000],\n [16090000, 1632479964000],\n [16100002, 1632584915000],\n [16110000, 1632693601000],\n [16120001, 1632837146000],\n [16130001, 1632992269000],\n [16140000, 1633103302000],\n [16150000, 1633236036000],\n [16160000, 1633351627000],\n [16170000, 1633510429000],\n [16180001, 1633670463000],\n [16190000, 1633787504000],\n [16200000, 1633879002000],\n [16210000, 1634036463000],\n [16220000, 1634190311000],\n [16230000, 1634316909000],\n [16240001, 1634449090000],\n [16250001, 1634564297000],\n [16260000, 1634731148000],\n [16270000, 1634894514000],\n [16280001, 1635006911000],\n [16290000, 1635146973000],\n [16300000, 1635296235000],\n [16310001, 1635438801000],\n [16320000, 1635596200000],\n [16330000, 1635683945000],\n [16340001, 1635813965000],\n [16350000, 1635944185000],\n [16360001, 1636104318000],\n [16370000, 1636216125000],\n [16380001, 1636349708000],\n [16390000, 1636485778000],\n [16400000, 1636633126000],\n [16410000, 1636775436000],\n [16420000, 1636887831000],\n [16430000, 1637035157000],\n [16440000, 1637202106000],\n [16450000, 1637344438000],\n [16460000, 1637480688000],\n [16470001, 1637592913000],\n [16480002, 1637739009000],\n [16490000, 1637904942000],\n [16500000, 1638026842000],\n [16510000, 1638162888000],\n [16520000, 1638292148000],\n [16530000, 1638458030000],\n [16540002, 1638615167000],\n [16550000, 1638714393000],\n [16560000, 1638876409000],\n [16570000, 1639040028000],\n [16580000, 1639187217000],\n [16590000, 1639307662000],\n [16600000, 1639454477000],\n [16610000, 1639627185000],\n [16620000, 1639779710000],\n [16630000, 1639907263000],\n [16640003, 1640056572000],\n [16650000, 1640195488000],\n [16660000, 1640347206000],\n [16670002, 1640441258000],\n [16680000, 1640558659000],\n [16690000, 1640704773000],\n [16700000, 1640851001000],\n [16710000, 1640944416000],\n [16720000, 1641034407000],\n [16730001, 1641145162000],\n [16740001, 1641287228000],\n [16750001, 1641432930000],\n [16760000, 1641569488000],\n [16770000, 1641714711000],\n [16780000, 1641819617000],\n [16790000, 1641976092000],\n [16800002, 1642135341000],\n [16810000, 1642258816000],\n [16820000, 1642376854000],\n [16830000, 1642522447000],\n [16840000, 1642692211000],\n [16850001, 1642848145000],\n [16860001, 1642946066000],\n [16870006, 1643104274000],\n [16880000, 1643256755000],\n [16890000, 1643383270000],\n [16900001, 1643513558000],\n [16910000, 1643624822000],\n [16920000, 1643761593000],\n [16930000, 1643897518000],\n [16940001, 1644046689000],\n [16950000, 1644148988000],\n [16960000, 1644292691000],\n [16970000, 1644424029000],\n [16980001, 1644571875000],\n [16990000, 1644672859000],\n [17000000, 1644761982000],\n [17010001, 1644848140000],\n [17020000, 1644994685000],\n [17030000, 1645143682000],\n [17040000, 1645269253000],\n [17050001, 1645357332000],\n [17060001, 1645465591000],\n [17070000, 1645604057000],\n [17080001, 1645725342000],\n [17090000, 1645877056000],\n [17100000, 1645972181000],\n [17110000, 1646124672000],\n [17120000, 1646276532000],\n [17130000, 1646407396000],\n [17140000, 1646535918000],\n [17150000, 1646650916000],\n [17160001, 1646804197000],\n [17170001, 1646946167000],\n [17180000, 1647084906000],\n [17190000, 1647182489000],\n [17200000, 1647314276000],\n [17210000, 1647447683000],\n [17220000, 1647607726000],\n [17230002, 1647721896000],\n [17240000, 1647838182000],\n [17250000, 1647954518000],\n [17260001, 1648112167000],\n [17270000, 1648244365000],\n [17280000, 1648363832000],\n [17290002, 1648479018000],\n [17300000, 1648637593000],\n [17310000, 1648744721000],\n [17320000, 1648882125000],\n [17330001, 1648989613000],\n [17340001, 1649121083000],\n [17350002, 1649258940000],\n [17360000, 1649424449000],\n [17370000, 1649558056000],\n [17380002, 1649679221000],\n [17390000, 1649848546000],\n [17400000, 1650014854000],\n [17410001, 1650127780000],\n [17420000, 1650265614000],\n [17430000, 1650415187000],\n [17440000, 1650565548000],\n [17450000, 1650718660000],\n [17460000, 1650817714000],\n [17470000, 1650980883000],\n [17480001, 1651147321000],\n [17490000, 1651256656000],\n [17500000, 1651380792000],\n [17510000, 1651497322000],\n [17520000, 1651636671000],\n [17530000, 1651742579000],\n [17540001, 1651852590000],\n [17550000, 1651980986000],\n [17560000, 1652097812000],\n [17570000, 1652258339000],\n [17580000, 1652418951000],\n [17590000, 1652537092000],\n [17600000, 1652648521000],\n [17610000, 1652798828000],\n [17620000, 1652966576000],\n [17630000, 1653120396000],\n [17640000, 1653224595000],\n [17650000, 1653366436000],\n [17660000, 1653503365000],\n [17670000, 1653662025000],\n [17680002, 1653797175000],\n [17690001, 1653916799000],\n [17700000, 1654083042000],\n [17710000, 1654250603000],\n [17720001, 1654366796000],\n [17730000, 1654500942000],\n [17740000, 1654659950000],\n [17750000, 1654795307000],\n [17760001, 1654949442000],\n [17770000, 1655049498000],\n [17780000, 1655209018000],\n [17790000, 1655371763000],\n [17800000, 1655523056000],\n [17810000, 1655635213000],\n [17820000, 1655777166000],\n [17830001, 1655925251000],\n [17840000, 1656082802000],\n [17850000, 1656223265000],\n [17860001, 1656347789000],\n [17870000, 1656519562000],\n [17880000, 1656686470000],\n [17890001, 1656823962000],\n [17900000, 1656943371000],\n [17910000, 1657110378000],\n [17920000, 1657261432000],\n [17930000, 1657389177000],\n [17940000, 1657537359000],\n [17950001, 1657703351000],\n [17960001, 1657862126000],\n [17970000, 1657982775000],\n [17980000, 1658107869000],\n [17990000, 1658231351000],\n [18000000, 1658390432000],\n [18010000, 1658529832000],\n [18020000, 1658657110000],\n [18030000, 1658786587000],\n [18040000, 1658931410000],\n [18050000, 1659090621000],\n [18060002, 1659210315000],\n [18070000, 1659342601000],\n [18080000, 1659490247000],\n [18090000, 1659623847000],\n [18100000, 1659771081000],\n [18110000, 1659878153000],\n [18120000, 1660020634000],\n [18130000, 1660135471000],\n [18140000, 1660271287000],\n [18150000, 1660392085000],\n [18160000, 1660493452000],\n [18170001, 1660634551000],\n [18180001, 1660751722000],\n [18190001, 1660907787000],\n [18200000, 1661015264000],\n [18210001, 1661154293000],\n [18220000, 1661296680000],\n [18230000, 1661441105000],\n [18240000, 1661594422000],\n [18250000, 1661697793000],\n [18260000, 1661860267000],\n [18270000, 1662006107000],\n [18280000, 1662153346000],\n [18290000, 1662284110000],\n [18300000, 1662417637000],\n [18310001, 1662564937000],\n [18320000, 1662732210000],\n [18330000, 1662864886000],\n [18340000, 1662989323000],\n [18350000, 1663157286000],\n [18360001, 1663325776000],\n [18370001, 1663457990000],\n [18380001, 1663569154000],\n [18390000, 1663685381000],\n [18400000, 1663854279000],\n [18410000, 1663986345000],\n [18420002, 1664098955000],\n [18430003, 1664233443000],\n [18440000, 1664381791000],\n [18450000, 1664545903000],\n [18460001, 1664672366000],\n [18470000, 1664797315000],\n [18480000, 1664963327000],\n [18490001, 1665129129000],\n [18500000, 1665249079000],\n [18510000, 1665378101000],\n [18520000, 1665498402000],\n [18530000, 1665666274000],\n [18540000, 1665822906000],\n [18550000, 1665928917000],\n [18560000, 1666091693000],\n [18570000, 1666258710000],\n [18580000, 1666413011000],\n [18590000, 1666525787000],\n [18600000, 1666683378000],\n [18610001, 1666856198000],\n [18620000, 1667012932000],\n [18630001, 1667130397000],\n [18640000, 1667227842000],\n [18650000, 1667391437000],\n [18660000, 1667537375000],\n [18670000, 1667659115000],\n [18680000, 1667778232000],\n [18690000, 1667928642000],\n [18700000, 1668092558000],\n [18710000, 1668243412000],\n [18720000, 1668347270000],\n [18730000, 1668511156000],\n [18740000, 1668681913000],\n [18750000, 1668835345000],\n [18760000, 1668948613000],\n [18770000, 1669107023000],\n [18780001, 1669217357000],\n [18790000, 1669385287000],\n [18800000, 1669521446000],\n [18810000, 1669644488000],\n [18820000, 1669806609000],\n [18830000, 1669969123000],\n [18840000, 1670085906000],\n [18850001, 1670230236000],\n [18860000, 1670388111000],\n [18870000, 1670553568000],\n [18880000, 1670680140000],\n [18890001, 1670803201000],\n [18900000, 1670955818000],\n [18910000, 1671119233000],\n [18920000, 1671281912000],\n [18930000, 1671409195000],\n [18940000, 1671567402000],\n [18950000, 1671721208000],\n [18960000, 1671861312000],\n [18970000, 1671954612000],\n [18980000, 1672061020000],\n [18990001, 1672222393000],\n [19000000, 1672353531000],\n [19010000, 1672467100000],\n [19020000, 1672553764000],\n [19030000, 1672671491000],\n [19040000, 1672808932000],\n [19050000, 1672932463000],\n [19060000, 1673087550000],\n [19070000, 1673193657000],\n [19080000, 1673334059000],\n [19090000, 1673495777000],\n [19100000, 1673631095000],\n [19110000, 1673768998000],\n [19120000, 1673885155000],\n [19130000, 1674054006000],\n [19140000, 1674222465000],\n [19150000, 1674353315000],\n [19160000, 1674473730000],\n [19170001, 1674632979000],\n [19180000, 1674785242000],\n [19190000, 1674912941000],\n [19200000, 1675017226000],\n [19210000, 1675171526000],\n [19220000, 1675332469000],\n [19230000, 1675444750000],\n [19240000, 1675578816000],\n [19250000, 1675692430000],\n [19260000, 1675852157000],\n [19270000, 1675999035000],\n [19280000, 1676117630000],\n [19290000, 1676213750000],\n [19300000, 1676339631000],\n [19310001, 1676450914000],\n [19320000, 1676596485000],\n [19330000, 1676726295000],\n [19340000, 1676824763000],\n [19350000, 1676985136000],\n [19360000, 1677125230000],\n [19370001, 1677247234000],\n [19380000, 1677373760000],\n [19390000, 1677495165000],\n [19400000, 1677633838000],\n [19410000, 1677769224000],\n [19420000, 1677919084000],\n [19430000, 1678019683000],\n [19440001, 1678155656000],\n [19450001, 1678288614000],\n [19460000, 1678449353000],\n [19470000, 1678577300000],\n [19480000, 1678704079000],\n [19490001, 1678828261000],\n [19500000, 1678977066000],\n [19510000, 1679123089000],\n [19520000, 1679232561000],\n [19530001, 1679366629000],\n [19540000, 1679492483000],\n [19550000, 1679650444000],\n [19560000, 1679756408000],\n [19570000, 1679865472000],\n [19580000, 1680010450000],\n [19590000, 1680165108000],\n [19600000, 1680274893000],\n [19610000, 1680386401000],\n [19620000, 1680512613000],\n [19630001, 1680642045000],\n [19640001, 1680788039000],\n [19650000, 1680928729000],\n [19660000, 1681038067000],\n [19670000, 1681176951000],\n [19680000, 1681327167000],\n [19690000, 1681483914000],\n [19700000, 1681613428000],\n [19710000, 1681733363000],\n [19720000, 1681901262000],\n [19730000, 1682061980000],\n [19740000, 1682176670000],\n [19750000, 1682309707000],\n [19760001, 1682466416000],\n [19770000, 1682617585000],\n [19780001, 1682768367000],\n [19790000, 1682866680000],\n [19800000, 1683019738000],\n [19810000, 1683136858000],\n [19820000, 1683268994000],\n [19830000, 1683372201000],\n [19840001, 1683462031000],\n [19850001, 1683603948000],\n [19860000, 1683730620000],\n [19870000, 1683898327000],\n [19880001, 1684024153000],\n [19890000, 1684148452000],\n [19900000, 1684313296000],\n [19910000, 1684469994000],\n [19920002, 1684590680000],\n [19930000, 1684699592000],\n [19940001, 1684851189000],\n [19950000, 1685017223000],\n [19960001, 1685169953000],\n [19970000, 1685278382000],\n [19980000, 1685433556000],\n [19990000, 1685564102000],\n [20000000, 1685716288000],\n [20010003, 1685847463000],\n [20020000, 1685964724000],\n [20030000, 1686119859000],\n [20040000, 1686275819000],\n [20050000, 1686401217000],\n [20060001, 1686496334000],\n [20070001, 1686654781000],\n [20080000, 1686814224000],\n [20090000, 1686958417000],\n [20100000, 1687078105000],\n [20110000, 1687190663000],\n [20120001, 1687355764000],\n [20130000, 1687523522000],\n [20140000, 1687645127000],\n [20150000, 1687774959000],\n [20160000, 1687936267000],\n [20170000, 1688078953000],\n [20180002, 1688208028000],\n [20190000, 1688306045000],\n [20200000, 1688453116000],\n [20210000, 1688598008000],\n [20220000, 1688737374000],\n [20230000, 1688867724000],\n [20240000, 1688988884000],\n [20250001, 1689149214000],\n [20260000, 1689311524000],\n [20270000, 1689433202000],\n [20280000, 1689564424000],\n [20290000, 1689687736000],\n [20300000, 1689856471000],\n [20310000, 1690007766000],\n [20320000, 1690119474000],\n [20330000, 1690271740000],\n [20340000, 1690412997000],\n [20350000, 1690556408000],\n [20360000, 1690695983000],\n [20370000, 1690813374000],\n [20380000, 1690966802000],\n [20390001, 1691109438000],\n [20400000, 1691241419000],\n [20410000, 1691360804000],\n [20420000, 1691498119000],\n [20430001, 1691642753000],\n [20440000, 1691761055000],\n [20450001, 1691887415000],\n [20460000, 1692010504000],\n [20470000, 1692112959000],\n [20480000, 1692255348000],\n [20490000, 1692372791000],\n [20500000, 1692508140000],\n [20510000, 1692624146000],\n [20520000, 1692765923000],\n [20530000, 1692888700000],\n [20540000, 1693038437000],\n [20550000, 1693143069000],\n [20560001, 1693284776000],\n [20570000, 1693409238000],\n [20580000, 1693558804000],\n [20590000, 1693667983000],\n [20600001, 1693801909000],\n [20610000, 1693950411000],\n [20620000, 1694100047000],\n [20630001, 1694257179000],\n [20640000, 1694357698000],\n [20650001, 1694519970000],\n [20660000, 1694683520000],\n [20670000, 1694831389000],\n [20680002, 1694954414000],\n [20690000, 1695056275000],\n [20700001, 1695217826000],\n [20710000, 1695374863000],\n [20720000, 1695482728000],\n [20730000, 1695622806000],\n [20740000, 1695771949000],\n [20750000, 1695917849000],\n [20760000, 1696066366000],\n [20770000, 1696167557000],\n [20780002, 1696333609000],\n [20790001, 1696498978000],\n [20800000, 1696647600000],\n [20810000, 1696769069000],\n [20820000, 1696880989000],\n [20830000, 1697036612000],\n [20840000, 1697205385000],\n [20850000, 1697351378000],\n [20860000, 1697475553000],\n [20870001, 1697647826000],\n [20880000, 1697814223000],\n [20890000, 1697964038000],\n [20900000, 1698114540000],\n [20910000, 1698284373000],\n [20920000, 1698442869000],\n [20930000, 1698575354000],\n [20940000, 1698701279000],\n [20950000, 1698838714000],\n [20960000, 1698999234000],\n [20970001, 1699114399000],\n [20980000, 1699258766000],\n [20990000, 1699425433000],\n [21000000, 1699598512000],\n [21010001, 1699714856000],\n [21020000, 1699857336000],\n [21030002, 1700020188000],\n [21040000, 1700195973000],\n [21050000, 1700322845000],\n [21060000, 1700475217000],\n [21070000, 1700647081000],\n [21080000, 1700787860000],\n [21090000, 1700923757000],\n [21100000, 1701068828000],\n [21110000, 1701228360000],\n [21120001, 1701375951000],\n [21130002, 1701523398000],\n [21140000, 1701654327000],\n [21150000, 1701804625000],\n [21160000, 1701961975000],\n [21170000, 1702121359000],\n [21180000, 1702224558000],\n [21190000, 1702390238000],\n [21200000, 1702559901000],\n [21210000, 1702721469000],\n [21220000, 1702834825000],\n [21230000, 1703001809000],\n [21240001, 1703174055000],\n [21250000, 1703333512000],\n [21260000, 1703427102000],\n [21270001, 1703527561000],\n [21280000, 1703689409000],\n [21290000, 1703848444000],\n [21300001, 1703952652000],\n [21310000, 1704035239000],\n [21320001, 1704184959000],\n [21330000, 1704299117000],\n [21340000, 1704457111000],\n [21350000, 1704591749000],\n [21360000, 1704709211000],\n [21370002, 1704864150000],\n [21380000, 1705033355000],\n [21390000, 1705161084000],\n [21400000, 1705311385000],\n [21410001, 1705480370000],\n [21420000, 1705646826000],\n [21430000, 1705767267000],\n [21440000, 1705911585000],\n [21450000, 1706063572000],\n [21460000, 1706200084000],\n [21470000, 1706359804000],\n [21480000, 1706484417000],\n [21490000, 1706628284000],\n [21500000, 1706787810000],\n [21510000, 1706936708000],\n [21520000, 1707051230000],\n [21530000, 1707203452000],\n [21540000, 1707358202000],\n [21550001, 1707493684000],\n [21560000, 1707632981000],\n [21570000, 1707741391000],\n [21580000, 1707864128000],\n [21590000, 1707983294000],\n [21600001, 1708108861000],\n [21610002, 1708246649000],\n [21620000, 1708362354000],\n [21630000, 1708523363000],\n [21640000, 1708665620000],\n [21650000, 1708777893000],\n [21660000, 1708872340000],\n [21670000, 1709024108000],\n]\n","export const illustsData = [\n [20, 1189343647000],\n [10000, 1190285376000],\n [20006, 1190613767000],\n [30001, 1190901997000],\n [40003, 1191179021000],\n [50004, 1191500729000],\n [60000, 1191759823000],\n [70000, 1192017141000],\n [80000, 1192296354000],\n [90000, 1192548870000],\n [100003, 1192843804000],\n [110000, 1193153408000],\n [120000, 1193485993000],\n [130000, 1193765339000],\n [140003, 1194150173000],\n [150001, 1194467241000],\n [160003, 1194796339000],\n [170000, 1195152402000],\n [180003, 1195485536000],\n [190002, 1195857370000],\n [200000, 1196184465000],\n [210004, 1196522277000],\n [220000, 1196828559000],\n [230000, 1197146134000],\n [240016, 1197455278000],\n [250000, 1197763170000],\n [260000, 1198103280000],\n [270001, 1198395166000],\n [280002, 1198674253000],\n [290000, 1198977560000],\n [300000, 1199330503000],\n [310002, 1199612897000],\n [320004, 1199885562000],\n [330000, 1200159374000],\n [340000, 1200450945000],\n [350005, 1200756520000],\n [360000, 1201025513000],\n [370004, 1201333829000],\n [380000, 1201596101000],\n [390006, 1201873948000],\n [400004, 1202135836000],\n [410003, 1202447870000],\n [420007, 1202718864000],\n [430003, 1202989278000],\n [440000, 1203245126000],\n [450000, 1203510072000],\n [460002, 1203775430000],\n [470001, 1204038291000],\n [480003, 1204299199000],\n [490000, 1204552308000],\n [500002, 1204820237000],\n [510004, 1205065613000],\n [520000, 1205311670000],\n [530009, 1205550410000],\n [540001, 1205766458000],\n [550000, 1205954720000],\n [560001, 1206140135000],\n [570001, 1206322998000],\n [580000, 1206511254000],\n [590005, 1206701143000],\n [600000, 1206881009000],\n [610000, 1207061727000],\n [620000, 1207243644000],\n [630002, 1207434510000],\n [640001, 1207637232000],\n [650001, 1207836760000],\n [660005, 1208020490000],\n [670001, 1208205586000],\n [680002, 1208438014000],\n [690001, 1208621430000],\n [700004, 1208802131000],\n [710007, 1209032196000],\n [720000, 1209218825000],\n [730002, 1209397610000],\n [740003, 1209565351000],\n [750000, 1209741709000],\n [760002, 1209914404000],\n [770000, 1210074595000],\n [780000, 1210252468000],\n [790001, 1210423656000],\n [800005, 1210580882000],\n [810005, 1210756954000],\n [820000, 1210937741000],\n [830000, 1211087983000],\n [840004, 1211236844000],\n [850000, 1211411767000],\n [860003, 1211592338000],\n [870000, 1211724268000],\n [880001, 1211896787000],\n [890000, 1212071744000],\n [900000, 1212240265000],\n [910003, 1212397535000],\n [920001, 1212570167000],\n [930000, 1212743643000],\n [940003, 1212888537000],\n [950001, 1213021904000],\n [960000, 1213191145000],\n [970010, 1213356614000],\n [980000, 1213490592000],\n [990000, 1213625981000],\n [1000000, 1213792360000],\n [1010001, 1213948014000],\n [1020002, 1214066142000],\n [1030000, 1214206483000],\n [1040004, 1214328257000],\n [1050004, 1214488555000],\n [1060000, 1214636988000],\n [1070003, 1214748702000],\n [1080011, 1214904492000],\n [1090000, 1215036636000],\n [1100011, 1215186680000],\n [1110006, 1215322803000],\n [1120006, 1215438170000],\n [1130000, 1215590433000],\n [1140001, 1215708492000],\n [1150000, 1215865334000],\n [1160001, 1215963472000],\n [1170001, 1216117693000],\n [1180001, 1216241875000],\n [1190003, 1216390773000],\n [1200003, 1216522697000],\n [1210010, 1216637029000],\n [1220004, 1216746895000],\n [1230000, 1216894616000],\n [1240001, 1217006818000],\n [1250013, 1217139907000],\n [1260003, 1217251726000],\n [1270003, 1217366045000],\n [1280005, 1217498788000],\n [1290001, 1217605113000],\n [1300002, 1217732126000],\n [1310000, 1217852250000],\n [1320001, 1217956806000],\n [1330000, 1218098038000],\n [1340000, 1218211024000],\n [1350000, 1218344320000],\n [1360003, 1218460214000],\n [1370003, 1218580323000],\n [1380000, 1218713348000],\n [1390001, 1218835149000],\n [1400000, 1218978021000],\n [1410004, 1219086217000],\n [1420005, 1219223973000],\n [1430000, 1219331134000],\n [1440000, 1219461421000],\n [1450000, 1219574536000],\n [1460003, 1219676680000],\n [1470001, 1219797775000],\n [1480000, 1219916216000],\n [1490007, 1220021891000],\n [1500004, 1220118737000],\n [1510007, 1220235399000],\n [1520005, 1220360467000],\n [1530000, 1220465705000],\n [1540005, 1220616937000],\n [1550002, 1220711361000],\n [1560000, 1220798947000],\n [1570000, 1220900621000],\n [1580000, 1221030344000],\n [1590003, 1221138309000],\n [1600001, 1221236989000],\n [1610000, 1221344315000],\n [1620000, 1221452031000],\n [1630009, 1221553447000],\n [1640000, 1221658718000],\n [1650003, 1221757535000],\n [1660006, 1221879285000],\n [1670004, 1221973316000],\n [1680002, 1222068582000],\n [1690002, 1222162793000],\n [1700004, 1222263169000],\n [1710000, 1222365270000],\n [1720000, 1222493935000],\n [1730006, 1222589500000],\n [1740000, 1222690957000],\n [1750006, 1222787660000],\n [1760002, 1222894188000],\n [1770003, 1223028337000],\n [1780000, 1223124745000],\n [1790000, 1223210324000],\n [1800000, 1223305149000],\n [1810000, 1223408306000],\n [1820004, 1223541292000],\n [1830001, 1223645742000],\n [1840003, 1223737145000],\n [1850004, 1223827774000],\n [1860001, 1223913165000],\n [1870001, 1224038216000],\n [1880000, 1224153575000],\n [1890002, 1224253802000],\n [1900005, 1224343693000],\n [1910000, 1224426875000],\n [1920000, 1224524581000],\n [1930000, 1224662433000],\n [1940001, 1224764799000],\n [1950002, 1224865468000],\n [1960008, 1224960411000],\n [1970006, 1225042106000],\n [1980000, 1225168238000],\n [1990000, 1225279658000],\n [2000002, 1225377623000],\n [2010002, 1225468910000],\n [2020002, 1225561524000],\n [2030001, 1225653134000],\n [2040000, 1225734805000],\n [2050002, 1225861022000],\n [2060005, 1225972185000],\n [2070002, 1226068225000],\n [2080002, 1226156629000],\n [2090000, 1226238861000],\n [2100002, 1226332222000],\n [2110001, 1226430234000],\n [2120005, 1226553119000],\n [2130000, 1226661352000],\n [2140000, 1226749829000],\n [2150005, 1226829597000],\n [2160003, 1226921698000],\n [2170001, 1227016838000],\n [2180004, 1227112662000],\n [2190003, 1227258648000],\n [2200001, 1227347281000],\n [2210021, 1227434020000],\n [2220001, 1227514291000],\n [2230004, 1227602927000],\n [2240003, 1227701091000],\n [2250000, 1227797903000],\n [2260001, 1227892579000],\n [2270000, 1227979672000],\n [2280000, 1228058900000],\n [2290000, 1228175237000],\n [2300008, 1228292564000],\n [2310003, 1228393475000],\n [2320002, 1228488496000],\n [2330001, 1228575829000],\n [2340001, 1228656923000],\n [2350005, 1228749831000],\n [2360001, 1228841515000],\n [2370000, 1228945993000],\n [2380009, 1229065515000],\n [2390001, 1229153952000],\n [2400001, 1229227924000],\n [2410003, 1229280540000],\n [2420002, 1229375501000],\n [2430001, 1229477555000],\n [2440005, 1229576902000],\n [2450000, 1229673103000],\n [2460000, 1229761464000],\n [2470002, 1229843101000],\n [2480006, 1229923737000],\n [2490004, 1230006968000],\n [2500004, 1230059526000],\n [2510001, 1230137905000],\n [2520001, 1230219194000],\n [2530001, 1230306089000],\n [2540001, 1230392672000],\n [2550001, 1230480029000],\n [2560002, 1230569639000],\n [2570000, 1230659339000],\n [2580001, 1230737516000],\n [2590003, 1230811927000],\n [2600002, 1230898077000],\n [2610002, 1230980712000],\n [2620001, 1231057356000],\n [2630000, 1231132141000],\n [2640011, 1231205232000],\n [2650004, 1231263657000],\n [2660001, 1231344684000],\n [2670002, 1231429477000],\n [2680003, 1231515785000],\n [2690000, 1231597519000],\n [2700002, 1231675854000],\n [2710000, 1231747570000],\n [2720000, 1231814599000],\n [2730001, 1231910705000],\n [2740000, 1231993040000],\n [2750000, 1232072385000],\n [2760000, 1232152007000],\n [2770000, 1232211499000],\n [2780002, 1232283039000],\n [2790000, 1232364267000],\n [2800003, 1232447068000],\n [2810016, 1232530355000],\n [2820000, 1232613279000],\n [2830003, 1232711358000],\n [2840005, 1232782422000],\n [2850001, 1232848213000],\n [2860000, 1232898493000],\n [2870002, 1232983769000],\n [2880002, 1233069479000],\n [2890000, 1233154231000],\n [2900004, 1233239012000],\n [2910002, 1233322130000],\n [2920002, 1233393929000],\n [2930000, 1233456592000],\n [2940000, 1233504254000],\n [2950000, 1233587016000],\n [2960005, 1233668117000],\n [2970000, 1233748455000],\n [2980004, 1233827735000],\n [2990000, 1233906015000],\n [3000000, 1233973497000],\n [3010000, 1234025920000],\n [3020000, 1234097404000],\n [3030000, 1234174857000],\n [3040000, 1234250595000],\n [3050012, 1234308966000],\n [3060001, 1234362854000],\n [3070000, 1234441241000],\n [3080001, 1234517324000],\n [3090003, 1234567842000],\n [3100005, 1234620065000],\n [3110007, 1234682828000],\n [3120001, 1234723962000],\n [3130004, 1234799784000],\n [3140000, 1234881157000],\n [3150000, 1234963132000],\n [3160000, 1235043967000],\n [3170003, 1235121229000],\n [3180000, 1235186214000],\n [3190000, 1235234695000],\n [3200001, 1235304366000],\n [3210000, 1235374231000],\n [3220002, 1235438963000],\n [3230001, 1235497393000],\n [3240000, 1235576230000],\n [3250001, 1235657222000],\n [3260003, 1235736421000],\n [3270000, 1235805204000],\n [3280000, 1235860055000],\n [3290000, 1235919464000],\n [3300000, 1235999012000],\n [3310000, 1236077174000],\n [3320000, 1236150033000],\n [3330002, 1236213654000],\n [3340001, 1236276161000],\n [3350001, 1236355989000],\n [3360002, 1236430601000],\n [3370003, 1236498230000],\n [3380001, 1236547557000],\n [3390006, 1236613645000],\n [3400001, 1236691737000],\n [3410001, 1236767006000],\n [3420000, 1236836892000],\n [3430001, 1236888047000],\n [3440008, 1236958235000],\n [3450008, 1237029038000],\n [3460001, 1237092055000],\n [3470005, 1237134446000],\n [3480010, 1237212359000],\n [3490002, 1237289939000],\n [3500002, 1237359461000],\n [3510004, 1237428257000],\n [3520000, 1237479684000],\n [3530003, 1237551651000],\n [3540007, 1237616270000],\n [3550002, 1237660604000],\n [3560001, 1237726693000],\n [3570006, 1237795071000],\n [3580000, 1237847938000],\n [3590000, 1237909900000],\n [3600001, 1237985785000],\n [3610007, 1238053132000],\n [3620003, 1238102589000],\n [3630001, 1238168800000],\n [3640002, 1238242579000],\n [3650000, 1238309057000],\n [3660000, 1238349121000],\n [3670004, 1238422770000],\n [3680002, 1238494104000],\n [3690001, 1238548283000],\n [3700001, 1238598887000],\n [3710003, 1238669626000],\n [3720001, 1238731713000],\n [3730001, 1238777676000],\n [3740000, 1238848576000],\n [3750001, 1238911413000],\n [3760002, 1238949271000],\n [3770000, 1239025032000],\n [3780003, 1239097177000],\n [3790010, 1239166551000],\n [3800001, 1239221210000],\n [3810000, 1239297378000],\n [3820002, 1239380016000],\n [3830002, 1239453905000],\n [3840000, 1239515903000],\n [3850002, 1239553333000],\n [3860000, 1239634973000],\n [3870003, 1239717244000],\n [3880001, 1239804843000],\n [3890000, 1239886748000],\n [3900000, 1239968879000],\n [3910000, 1240036921000],\n [3920000, 1240080529000],\n [3930003, 1240144719000],\n [3940003, 1240222544000],\n [3950000, 1240296272000],\n [3960001, 1240357930000],\n [3970000, 1240423383000],\n [3980001, 1240503305000],\n [3990000, 1240585260000],\n [4000000, 1240655799000],\n [4010001, 1240712027000],\n [4020000, 1240756100000],\n [4030002, 1240836439000],\n [4040004, 1240916533000],\n [4050002, 1240978980000],\n [4060012, 1241019328000],\n [4070000, 1241098459000],\n [4080001, 1241172464000],\n [4090010, 1241232896000],\n [4100000, 1241279884000],\n [4110001, 1241352170000],\n [4120001, 1241415995000],\n [4130000, 1241459609000],\n [4140013, 1241524607000],\n [4150003, 1241579188000],\n [4160001, 1241618637000],\n [4170003, 1241693840000],\n [4180000, 1241754350000],\n [4190001, 1241802244000],\n [4200004, 1241869051000],\n [4210001, 1241903352000],\n [4220007, 1241957470000],\n [4230000, 1242020819000],\n [4240001, 1242064990000],\n [4250000, 1242142670000],\n [4260000, 1242222455000],\n [4270003, 1242301994000],\n [4280001, 1242375986000],\n [4290000, 1242429235000],\n [4300000, 1242484029000],\n [4310001, 1242545688000],\n [4320003, 1242577020000],\n [4330000, 1242655220000],\n [4340000, 1242731764000],\n [4350002, 1242798205000],\n [4360000, 1242842152000],\n [4370005, 1242916566000],\n [4380000, 1242990862000],\n [4390003, 1243043132000],\n [4400003, 1243087966000],\n [4410000, 1243142065000],\n [4420004, 1243173603000],\n [4430003, 1243245111000],\n [4440000, 1243295775000],\n [4450001, 1243352896000],\n [4460000, 1243428716000],\n [4470000, 1243499239000],\n [4480000, 1243546633000],\n [4490008, 1243611829000],\n [4500000, 1243680471000],\n [4510007, 1243726638000],\n [4520000, 1243773896000],\n [4530000, 1243840248000],\n [4540001, 1243880872000],\n [4550001, 1243955623000],\n [4560003, 1244033430000],\n [4570000, 1244106466000],\n [4580000, 1244161088000],\n [4590000, 1244217575000],\n [4600012, 1244283613000],\n [4610000, 1244317138000],\n [4620001, 1244374605000],\n [4630000, 1244426298000],\n [4640003, 1244475731000],\n [4650014, 1244552008000],\n [4660002, 1244619636000],\n [4670003, 1244661268000],\n [4680000, 1244733110000],\n [4690002, 1244810784000],\n [4700003, 1244869895000],\n [4710005, 1244908052000],\n [4720001, 1244966932000],\n [4730000, 1244996596000],\n [4740000, 1245073495000],\n [4750005, 1245148333000],\n [4760003, 1245211674000],\n [4770002, 1245257650000],\n [4780002, 1245335654000],\n [4790001, 1245411977000],\n [4800003, 1245470179000],\n [4810001, 1245512460000],\n [4820004, 1245575170000],\n [4830001, 1245608036000],\n [4840000, 1245682116000],\n [4850001, 1245758893000],\n [4860000, 1245830517000],\n [4870001, 1245878690000],\n [4880000, 1245947115000],\n [4890001, 1246026562000],\n [4900002, 1246093663000],\n [4910002, 1246141590000],\n [4920000, 1246194756000],\n [4930006, 1246269185000],\n [4940000, 1246330995000],\n [4950003, 1246380594000],\n [4960004, 1246456810000],\n [4970001, 1246532999000],\n [4980000, 1246600659000],\n [4990001, 1246646313000],\n [5000000, 1246712162000],\n [5010000, 1246764226000],\n [5020002, 1246802551000],\n [5030000, 1246874584000],\n [5040002, 1246921322000],\n [5050000, 1246978642000],\n [5060001, 1247053952000],\n [5070003, 1247122990000],\n [5080000, 1247163071000],\n [5090012, 1247237814000],\n [5100001, 1247303799000],\n [5110000, 1247340850000],\n [5120006, 1247400292000],\n [5130000, 1247464875000],\n [5140001, 1247505727000],\n [5150000, 1247581477000],\n [5160000, 1247657605000],\n [5170000, 1247734497000],\n [5180003, 1247779280000],\n [5190011, 1247844270000],\n [5200001, 1247912117000],\n [5210000, 1247959876000],\n [5220003, 1248010424000],\n [5230001, 1248067662000],\n [5240002, 1248102071000],\n [5250009, 1248171495000],\n [5260001, 1248215258000],\n [5270005, 1248272067000],\n [5280003, 1248338387000],\n [5290015, 1248372446000],\n [5300001, 1248441311000],\n [5310000, 1248499026000],\n [5320000, 1248537062000],\n [5330001, 1248597583000],\n [5340000, 1248630173000],\n [5350000, 1248699529000],\n [5360001, 1248758099000],\n [5370001, 1248796495000],\n [5380001, 1248865288000],\n [5390008, 1248910616000],\n [5400006, 1248962620000],\n [5410005, 1249022010000],\n [5420000, 1249055536000],\n [5430008, 1249119772000],\n [5440000, 1249159590000],\n [5450008, 1249215395000],\n [5460000, 1249267500000],\n [5470001, 1249314199000],\n [5480002, 1249381222000],\n [5490009, 1249425570000],\n [5500000, 1249481249000],\n [5510000, 1249544055000],\n [5520001, 1249580138000],\n [5530002, 1249648156000],\n [5540006, 1249702201000],\n [5550000, 1249745436000],\n [5560006, 1249808811000],\n [5570006, 1249843110000],\n [5580011, 1249908731000],\n [5590001, 1249962535000],\n [5600000, 1250004013000],\n [5610000, 1250067638000],\n [5620000, 1250105377000],\n [5630010, 1250170869000],\n [5640001, 1250234408000],\n [5650000, 1250283303000],\n [5660000, 1250348991000],\n [5670002, 1250417131000],\n [5680002, 1250470126000],\n [5690003, 1250518788000],\n [5700000, 1250583103000],\n [5710000, 1250615540000],\n [5720000, 1250683273000],\n [5730001, 1250737779000],\n [5740001, 1250779234000],\n [5750000, 1250841660000],\n [5760004, 1250876242000],\n [5770002, 1250942945000],\n [5780000, 1250994139000],\n [5790000, 1251035549000],\n [5800012, 1251097978000],\n [5810000, 1251131781000],\n [5820001, 1251200871000],\n [5830000, 1251252353000],\n [5840002, 1251298144000],\n [5850004, 1251362895000],\n [5860002, 1251393581000],\n [5870000, 1251458864000],\n [5880004, 1251501747000],\n [5890000, 1251552074000],\n [5900000, 1251603656000],\n [5910003, 1251640979000],\n [5920001, 1251701011000],\n [5930001, 1251731077000],\n [5940004, 1251799106000],\n [5950002, 1251833410000],\n [5960000, 1251900933000],\n [5970002, 1251969785000],\n [5980001, 1252003787000],\n [5990001, 1252073509000],\n [6000009, 1252134109000],\n [6010001, 1252167556000],\n [6020008, 1252226737000],\n [6030006, 1252253877000],\n [6040005, 1252324357000],\n [6050004, 1252377437000],\n [6060001, 1252422863000],\n [6070000, 1252491703000],\n [6080000, 1252518066000],\n [6090000, 1252590024000],\n [6100000, 1252657336000],\n [6110000, 1252689755000],\n [6120000, 1252752938000],\n [6130001, 1252787625000],\n [6140000, 1252842284000],\n [6150001, 1252887499000],\n [6160004, 1252940963000],\n [6170000, 1253014662000],\n [6180000, 1253072324000],\n [6190003, 1253117275000],\n [6200000, 1253192710000],\n [6210007, 1253259594000],\n [6220004, 1253293456000],\n [6230002, 1253359261000],\n [6240001, 1253408051000],\n [6250000, 1253454244000],\n [6260000, 1253510197000],\n [6270005, 1253545430000],\n [6280003, 1253603112000],\n [6290000, 1253633675000],\n [6300000, 1253690076000],\n [6310004, 1253718754000],\n [6320000, 1253787672000],\n [6330009, 1253827693000],\n [6340003, 1253890698000],\n [6350000, 1253949685000],\n [6360003, 1253981010000],\n [6370003, 1254038599000],\n [6380000, 1254065917000],\n [6390007, 1254138466000],\n [6400002, 1254161381000],\n [6410002, 1254232715000],\n [6420005, 1254297948000],\n [6430001, 1254328569000],\n [6440003, 1254402664000],\n [6450000, 1254470858000],\n [6460000, 1254505532000],\n [6470005, 1254569748000],\n [6480004, 1254607798000],\n [6490004, 1254657512000],\n [6500001, 1254711690000],\n [6510000, 1254757243000],\n [6520003, 1254832152000],\n [6530002, 1254899396000],\n [6540001, 1254936211000],\n [6550000, 1255002705000],\n [6560005, 1255054676000],\n [6570001, 1255103185000],\n [6580004, 1255187603000],\n [6590004, 1255241732000],\n [6600006, 1255275381000],\n [6610006, 1255335923000],\n [6620004, 1255365040000],\n [6630000, 1255437371000],\n [6640004, 1255503196000],\n [6650000, 1255542374000],\n [6660003, 1255616844000],\n [6670006, 1255692389000],\n [6680002, 1255747536000],\n [6690000, 1255789048000],\n [6700007, 1255845043000],\n [6710001, 1255876623000],\n [6720006, 1255947630000],\n [6730001, 1255999240000],\n [6740001, 1256052059000],\n [6750001, 1256127357000],\n [6760000, 1256192620000],\n [6770001, 1256230979000],\n [6780004, 1256305273000],\n [6790000, 1256366761000],\n [6800002, 1256399088000],\n [6810001, 1256457917000],\n [6820014, 1256481202000],\n [6830000, 1256530568000],\n [6840003, 1256569253000],\n [6850000, 1256640930000],\n [6860001, 1256686001000],\n [6870001, 1256740999000],\n [6880001, 1256810974000],\n [6890001, 1256846841000],\n [6900006, 1256909975000],\n [6910008, 1256956991000],\n [6920001, 1256993093000],\n [6930002, 1257021797000],\n [6940007, 1257074334000],\n [6950006, 1257112755000],\n [6960010, 1257171176000],\n [6970029, 1257229635000],\n [6980001, 1257260628000],\n [6990009, 1257333480000],\n [7000004, 1257389136000],\n [7010001, 1257435146000],\n [7020003, 1257509404000],\n [7030000, 1257562969000],\n [7040011, 1257602634000],\n [7050001, 1257654208000],\n [7060007, 1257686818000],\n [7070003, 1257747290000],\n [7080000, 1257781719000],\n [7090002, 1257854092000],\n [7100000, 1257906922000],\n [7110000, 1257949717000],\n [7120010, 1258017940000],\n [7130000, 1258052980000],\n [7140003, 1258121655000],\n [7150004, 1258179932000],\n [7160005, 1258212028000],\n [7170018, 1258268171000],\n [7180007, 1258297347000],\n [7190003, 1258369922000],\n [7200000, 1258423598000],\n [7210001, 1258471779000],\n [7220000, 1258547279000],\n [7230006, 1258613975000],\n [7240009, 1258652603000],\n [7250000, 1258726763000],\n [7260001, 1258788982000],\n [7270001, 1258820885000],\n [7280001, 1258881797000],\n [7290021, 1258901428000],\n [7300003, 1258941371000],\n [7310003, 1258978847000],\n [7320000, 1258997635000],\n [7330003, 1259068970000],\n [7340002, 1259137031000],\n [7350004, 1259172407000],\n [7360000, 1259245313000],\n [7370001, 1259318445000],\n [7380001, 1259366162000],\n [7390001, 1259413895000],\n [7400001, 1259463754000],\n [7410003, 1259500536000],\n [7420006, 1259566058000],\n [7430004, 1259600101000],\n [7440000, 1259674892000],\n [7450006, 1259746273000],\n [7460007, 1259794215000],\n [7470003, 1259853521000],\n [7480001, 1259928386000],\n [7490002, 1259983081000],\n [7500006, 1260022442000],\n [7510000, 1260071171000],\n [7520000, 1260106690000],\n [7530000, 1260172447000],\n [7540000, 1260208351000],\n [7550009, 1260281963000],\n [7560001, 1260355097000],\n [7570000, 1260411385000],\n [7580002, 1260459860000],\n [7590001, 1260534424000],\n [7600000, 1260587470000],\n [7610007, 1260627276000],\n [7620004, 1260684093000],\n [7630004, 1260715167000],\n [7640004, 1260784681000],\n [7650004, 1260830330000],\n [7660002, 1260889337000],\n [7670001, 1260964691000],\n [7680001, 1261029793000],\n [7690002, 1261071760000],\n [7700003, 1261146596000],\n [7710009, 1261212831000],\n [7720001, 1261245754000],\n [7730011, 1261307347000],\n [7740001, 1261355745000],\n [7750000, 1261408395000],\n [7760010, 1261482358000],\n [7770010, 1261537178000],\n [7780002, 1261576719000],\n [7790002, 1261610556000],\n [7800002, 1261659130000],\n [7810001, 1261699801000],\n [7820004, 1261746610000],\n [7830000, 1261793852000],\n [7840001, 1261837044000],\n [7850001, 1261893306000],\n [7860000, 1261927165000],\n [7870000, 1261988405000],\n [7880006, 1262022689000],\n [7890001, 1262089362000],\n [7900000, 1262147767000],\n [7910004, 1262187188000],\n [7920000, 1262246668000],\n [7930000, 1262272485000],\n [7940000, 1262310429000],\n [7950000, 1262345982000],\n [7960000, 1262374368000],\n [7970001, 1262435699000],\n [7980006, 1262482125000],\n [7990006, 1262523783000],\n [8000000, 1262571603000],\n [8010002, 1262611322000],\n [8020002, 1262662269000],\n [8030000, 1262699160000],\n [8040000, 1262751940000],\n [8050001, 1262787880000],\n [8060003, 1262847522000],\n [8070004, 1262879016000],\n [8080003, 1262948453000],\n [8090000, 1263005525000],\n [8100001, 1263043440000],\n [8110004, 1263090083000],\n [8120001, 1263129819000],\n [8130001, 1263178927000],\n [8140000, 1263213746000],\n [8150000, 1263264406000],\n [8160001, 1263308752000],\n [8170001, 1263381109000],\n [8180000, 1263433234000],\n [8190004, 1263482236000],\n [8200001, 1263552778000],\n [8210000, 1263582347000],\n [8220000, 1263641955000],\n [8230000, 1263668432000],\n [8240000, 1263721345000],\n [8250002, 1263743461000],\n [8260003, 1263812466000],\n [8270001, 1263840381000],\n [8280000, 1263909812000],\n [8290002, 1263975879000],\n [8300002, 1264004629000],\n [8310008, 1264073609000],\n [8320001, 1264112814000],\n [8330000, 1264170205000],\n [8340003, 1264225027000],\n [8350000, 1264256849000],\n [8360004, 1264306527000],\n [8370004, 1264337256000],\n [8380000, 1264381896000],\n [8390002, 1264429503000],\n [8400000, 1264495753000],\n [8410000, 1264525760000],\n [8420000, 1264595385000],\n [8430002, 1264646313000],\n [8440000, 1264688257000],\n [8450004, 1264751892000],\n [8460000, 1264781077000],\n [8470002, 1264839031000],\n [8480003, 1264864949000],\n [8490001, 1264912159000],\n [8500001, 1264940198000],\n [8510002, 1264963055000],\n [8520005, 1265026244000],\n [8530003, 1265055913000],\n [8540004, 1265115694000],\n [8550006, 1265158385000],\n [8560001, 1265203504000],\n [8570001, 1265251639000],\n [8580003, 1265292623000],\n [8590005, 1265351842000],\n [8600000, 1265384653000],\n [8610001, 1265441412000],\n [8620000, 1265468298000],\n [8630000, 1265516784000],\n [8640001, 1265545204000],\n [8650001, 1265574034000],\n [8660001, 1265633483000],\n [8670000, 1265675793000],\n [8680002, 1265721819000],\n [8690004, 1265769855000],\n [8700000, 1265809934000],\n [8710003, 1265851086000],\n [8720010, 1265885485000],\n [8730000, 1265904395000],\n [8740000, 1265966419000],\n [8750000, 1265991793000],\n [8760005, 1266046654000],\n [8770002, 1266072240000],\n [8780000, 1266109367000],\n [8790000, 1266142840000],\n [8800000, 1266162438000],\n [8810001, 1266223290000],\n [8820004, 1266248215000],\n [8830000, 1266311115000],\n [8840000, 1266336776000],\n [8850002, 1266404590000],\n [8860003, 1266431080000],\n [8870011, 1266495239000],\n [8880000, 1266532193000],\n [8890004, 1266586323000],\n [8900006, 1266634787000],\n [8910000, 1266671132000],\n [8920003, 1266704552000],\n [8930000, 1266748887000],\n [8940001, 1266771304000],\n [8950007, 1266834419000],\n [8960000, 1266853031000],\n [8970000, 1266914766000],\n [8980000, 1266941561000],\n [8990002, 1267006421000],\n [9000002, 1267033072000],\n [9010000, 1267099263000],\n [9020000, 1267136814000],\n [9030001, 1267189340000],\n [9040001, 1267227765000],\n [9050002, 1267271033000],\n [9060001, 1267295095000],\n [9070001, 1267349581000],\n [9080000, 1267372556000],\n [9090001, 1267437953000],\n [9100001, 1267464018000],\n [9110000, 1267529940000],\n [9120002, 1267557994000],\n [9130000, 1267619150000],\n [9140001, 1267649393000],\n [9150000, 1267707477000],\n [9160001, 1267756145000],\n [9170002, 1267797588000],\n [9180003, 1267845140000],\n [9190000, 1267880161000],\n [9200000, 1267911888000],\n [9210000, 1267956602000],\n [9220000, 1267977687000],\n [9230001, 1268041678000],\n [9240001, 1268067085000],\n [9250003, 1268128511000],\n [9260000, 1268150764000],\n [9270004, 1268213052000],\n [9280000, 1268238021000],\n [9290010, 1268301488000],\n [9300001, 1268326858000],\n [9310000, 1268390142000],\n [9320000, 1268414486000],\n [9330001, 1268469126000],\n [9340000, 1268493356000],\n [9350001, 1268544135000],\n [9360001, 1268572846000],\n [9370002, 1268619924000],\n [9380007, 1268658826000],\n [9390000, 1268701926000],\n [9400000, 1268743976000],\n [9410007, 1268782970000],\n [9420003, 1268828664000],\n [9430003, 1268860371000],\n [9440002, 1268914210000],\n [9450002, 1268947479000],\n [9460005, 1269001003000],\n [9470002, 1269031061000],\n [9480000, 1269082722000],\n [9490002, 1269106998000],\n [9500001, 1269162960000],\n [9510000, 1269187333000],\n [9520000, 1269242743000],\n [9530002, 1269268090000],\n [9540002, 1269321764000],\n [9550000, 1269352784000],\n [9560000, 1269403387000],\n [9570002, 1269436975000],\n [9580005, 1269480995000],\n [9590004, 1269519219000],\n [9600000, 1269544500000],\n [9610002, 1269600989000],\n [9620002, 1269624459000],\n [9630002, 1269680285000],\n [9640006, 1269704898000],\n [9650002, 1269757853000],\n [9660003, 1269785364000],\n [9670007, 1269835201000],\n [9680001, 1269868455000],\n [9690001, 1269910981000],\n [9700002, 1269950640000],\n [9710004, 1269974845000],\n [9720000, 1270030676000],\n [9730002, 1270050327000],\n [9740002, 1270097462000],\n [9750008, 1270124323000],\n [9760010, 1270142744000],\n [9770005, 1270196324000],\n [9780007, 1270220578000],\n [9790001, 1270268030000],\n [9800000, 1270299979000],\n [9810000, 1270327188000],\n [9820004, 1270374286000],\n [9830001, 1270395746000],\n [9840007, 1270450706000],\n [9850002, 1270477065000],\n [9860000, 1270522915000],\n [9870005, 1270558305000],\n [9880002, 1270587924000],\n [9890003, 1270641211000],\n [9900009, 1270667244000],\n [9910002, 1270729503000],\n [9920000, 1270772739000],\n [9930002, 1270820871000],\n [9940000, 1270867332000],\n [9950000, 1270902222000],\n [9960000, 1270923509000],\n [9970002, 1270973617000],\n [9980005, 1270995483000],\n [9990001, 1271052458000],\n [10000000, 1271084467000],\n [10010000, 1271152586000],\n [10020001, 1271178520000],\n [10030002, 1271249106000],\n [10040004, 1271300905000],\n [10050001, 1271342704000],\n [10060001, 1271411103000],\n [10070000, 1271438670000],\n [10080000, 1271497617000],\n [10090000, 1271520730000],\n [10100006, 1271572090000],\n [10110001, 1271596744000],\n [10120000, 1271640791000],\n [10130001, 1271686480000],\n [10140000, 1271748797000],\n [10150000, 1271776989000],\n [10160002, 1271844770000],\n [10170001, 1271870174000],\n [10180000, 1271939973000],\n [10190000, 1271982449000],\n [10200002, 1272031889000],\n [10210002, 1272079184000],\n [10220000, 1272113379000],\n [10230001, 1272138602000],\n [10240005, 1272186107000],\n [10250008, 1272207045000],\n [10260000, 1272269454000],\n [10270000, 1272295567000],\n [10280004, 1272362958000],\n [10290002, 1272386402000],\n [10300003, 1272455984000],\n [10310001, 1272480451000],\n [10320003, 1272533421000],\n [10330002, 1272555900000],\n [10340001, 1272619333000],\n [10350001, 1272643694000],\n [10360000, 1272699431000],\n [10370000, 1272726810000],\n [10380000, 1272778479000],\n [10390002, 1272809410000],\n [10400003, 1272858602000],\n [10410000, 1272892018000],\n [10420001, 1272930483000],\n [10430000, 1272971101000],\n [10440000, 1272990692000],\n [10450004, 1273039646000],\n [10460004, 1273063064000],\n [10470003, 1273082413000],\n [10480012, 1273148702000],\n [10490001, 1273178432000],\n [10500000, 1273237856000],\n [10510003, 1273272118000],\n [10520000, 1273314937000],\n [10530003, 1273335371000],\n [10540003, 1273383275000],\n [10550000, 1273407737000],\n [10560003, 1273427935000],\n [10570001, 1273493380000],\n [10580000, 1273518887000],\n [10590001, 1273583380000],\n [10600000, 1273629537000],\n [10610003, 1273673975000],\n [10620002, 1273736864000],\n [10630008, 1273765536000],\n [10640001, 1273832963000],\n [10650001, 1273856472000],\n [10660000, 1273913403000],\n [10670003, 1273938190000],\n [10680003, 1273987415000],\n [10690002, 1274013883000],\n [10700001, 1274041442000],\n [10710001, 1274101755000],\n [10720001, 1274148034000],\n [10730000, 1274191649000],\n [10740001, 1274251918000],\n [10750000, 1274281421000],\n [10760001, 1274344952000],\n [10770001, 1274370852000],\n [10780000, 1274437849000],\n [10790001, 1274461341000],\n [10800003, 1274516434000],\n [10810000, 1274540863000],\n [10820000, 1274585874000],\n [10830001, 1274613400000],\n [10840000, 1274630996000],\n [10850002, 1274696077000],\n [10860002, 1274718536000],\n [10870000, 1274786118000],\n [10880005, 1274810518000],\n [10890000, 1274877703000],\n [10900005, 1274924038000],\n [10910000, 1274969786000],\n [10920003, 1275033999000],\n [10930001, 1275062164000],\n [10940002, 1275117814000],\n [10950000, 1275143781000],\n [10960001, 1275188364000],\n [10970000, 1275218494000],\n [10980000, 1275236993000],\n [10990001, 1275304384000],\n [11000001, 1275326405000],\n [11010008, 1275394258000],\n [11020002, 1275426312000],\n [11030000, 1275484933000],\n [11040001, 1275533742000],\n [11050001, 1275575272000],\n [11060005, 1275635913000],\n [11070002, 1275664460000],\n [11080000, 1275714355000],\n [11090004, 1275744055000],\n [11100000, 1275769810000],\n [11110000, 1275814398000],\n [11120011, 1275834332000],\n [11130002, 1275887874000],\n [11140002, 1275920205000],\n [11150000, 1275975608000],\n [11160000, 1276007756000],\n [11170001, 1276065720000],\n [11180000, 1276094358000],\n [11190000, 1276153093000],\n [11200003, 1276182302000],\n [11210003, 1276247378000],\n [11220003, 1276272594000],\n [11230001, 1276326893000],\n [11240005, 1276352916000],\n [11250002, 1276396637000],\n [11260002, 1276427108000],\n [11270002, 1276443222000],\n [11280002, 1276506906000],\n [11290001, 1276530201000],\n [11300004, 1276597379000],\n [11310000, 1276620884000],\n [11320004, 1276688782000],\n [11330000, 1276714922000],\n [11340000, 1276780694000],\n [11350003, 1276831842000],\n [11360001, 1276871333000],\n [11370004, 1276918283000],\n [11380006, 1276951279000],\n [11390000, 1276973002000],\n [11400005, 1277023272000],\n [11410005, 1277044636000],\n [11420007, 1277100970000],\n [11430001, 1277132150000],\n [11440000, 1277193416000],\n [11450005, 1277220644000],\n [11460000, 1277286195000],\n [11470000, 1277310437000],\n [11480007, 1277378868000],\n [11490001, 1277405797000],\n [11500000, 1277471329000],\n [11510005, 1277510838000],\n [11520014, 1277552590000],\n [11530000, 1277574577000],\n [11540002, 1277626363000],\n [11550000, 1277650324000],\n [11560003, 1277711981000],\n [11570002, 1277739469000],\n [11580003, 1277805672000],\n [11590002, 1277833631000],\n [11600007, 1277901407000],\n [11610000, 1277943642000],\n [11620004, 1277992741000],\n [11630006, 1278052857000],\n [11640004, 1278085215000],\n [11650000, 1278141043000],\n [11660000, 1278168247000],\n [11670001, 1278211901000],\n [11680005, 1278242882000],\n [11690000, 1278263525000],\n [11700000, 1278331018000],\n [11710001, 1278363283000],\n [11720001, 1278422573000],\n [11730001, 1278467910000],\n [11740002, 1278508847000],\n [11750001, 1278546502000],\n [11760002, 1278596862000],\n [11770055, 1278654118000],\n [11780003, 1278686331000],\n [11790002, 1278735703000],\n [11800000, 1278768480000],\n [11810000, 1278807401000],\n [11820006, 1278844282000],\n [11830002, 1278863674000],\n [11840002, 1278927490000],\n [11850000, 1278949803000],\n [11860004, 1279015329000],\n [11870004, 1279037966000],\n [11880006, 1279102801000],\n [11890001, 1279125228000],\n [11900000, 1279191755000],\n [11910003, 1279216455000],\n [11920000, 1279282608000],\n [11930000, 1279320656000],\n [11940000, 1279367086000],\n [11950005, 1279391585000],\n [11960001, 1279444783000],\n [11970000, 1279467624000],\n [11980002, 1279516298000],\n [11990000, 1279544139000],\n [12000006, 1279573067000],\n [12010002, 1279632740000],\n [12020000, 1279674263000],\n [12030001, 1279714985000],\n [12040004, 1279739983000],\n [12050001, 1279797478000],\n [12060002, 1279819893000],\n [12070000, 1279880710000],\n [12080001, 1279903895000],\n [12090000, 1279959100000],\n [12100000, 1279984330000],\n [12110008, 1280031762000],\n [12120000, 1280061767000],\n [12130001, 1280097529000],\n [12140002, 1280146450000],\n [12150004, 1280175516000],\n [12160000, 1280231047000],\n [12170003, 1280253885000],\n [12180004, 1280312366000],\n [12190010, 1280334261000],\n [12200002, 1280392960000],\n [12210000, 1280416789000],\n [12220001, 1280470620000],\n [12230002, 1280500335000],\n [12240000, 1280546599000],\n [12250001, 1280580530000],\n [12260000, 1280605572000],\n [12270000, 1280653774000],\n [12280002, 1280675302000],\n [12290000, 1280725084000],\n [12300000, 1280756249000],\n [12310000, 1280793725000],\n [12320002, 1280837490000],\n [12330002, 1280862689000],\n [12340001, 1280920068000],\n [12350001, 1280942280000],\n [12360002, 1280999471000],\n [12370001, 1281023696000],\n [12380000, 1281079371000],\n [12390006, 1281107837000],\n [12400001, 1281157949000],\n [12410008, 1281189784000],\n [12420004, 1281231583000],\n [12430001, 1281267381000],\n [12440012, 1281287383000],\n [12450005, 1281343947000],\n [12460000, 1281367264000],\n [12470000, 1281417336000],\n [12480000, 1281447426000],\n [12490000, 1281485017000],\n [12500002, 1281525838000],\n [12510000, 1281547664000],\n [12520000, 1281601916000],\n [12530003, 1281626599000],\n [12540000, 1281681792000],\n [12550000, 1281712170000],\n [12560000, 1281768918000],\n [12570000, 1281799924000],\n [12580005, 1281857189000],\n [12590008, 1281885144000],\n [12600000, 1281939245000],\n [12610001, 1281967862000],\n [12620000, 1282015601000],\n [12630000, 1282050647000],\n [12640000, 1282086682000],\n [12650007, 1282132325000],\n [12660001, 1282154655000],\n [12670000, 1282213268000],\n [12680003, 1282235398000],\n [12690005, 1282292642000],\n [12700001, 1282318186000],\n [12710000, 1282369235000],\n [12720002, 1282399052000],\n [12730001, 1282440554000],\n [12740000, 1282477003000],\n [12750000, 1282498068000],\n [12760003, 1282556916000],\n [12770001, 1282579108000],\n [12780007, 1282634809000],\n [12790002, 1282662019000],\n [12800001, 1282713987000],\n [12810000, 1282745037000],\n [12820000, 1282790864000],\n [12830002, 1282828562000],\n [12840002, 1282866685000],\n [12850005, 1282911120000],\n [12860002, 1282935089000],\n [12870000, 1282988256000],\n [12880000, 1283011329000],\n [12890004, 1283061649000],\n [12900010, 1283088208000],\n [12910002, 1283123926000],\n [12920000, 1283169509000],\n [12930000, 1283188995000],\n [12940001, 1283245495000],\n [12950000, 1283266662000],\n [12960001, 1283321664000],\n [12970000, 1283352413000],\n [12980001, 1283411926000],\n [12990003, 1283440104000],\n [13000000, 1283500853000],\n [13010001, 1283527719000],\n [13020004, 1283579691000],\n [13030004, 1283608092000],\n [13040004, 1283643707000],\n [13050000, 1283681660000],\n [13060000, 1283701069000],\n [13070004, 1283763448000],\n [13080010, 1283787320000],\n [13090001, 1283851111000],\n [13100002, 1283874086000],\n [13110003, 1283937995000],\n [13120002, 1283960387000],\n [13130000, 1284021968000],\n [13140001, 1284044422000],\n [13150001, 1284103338000],\n [13160000, 1284131400000],\n [13170000, 1284181635000],\n [13180003, 1284210864000],\n [13190000, 1284238395000],\n [13200004, 1284281470000],\n [13210003, 1284302032000],\n [13220003, 1284356532000],\n [13230000, 1284386961000],\n [13240000, 1284438215000],\n [13250004, 1284472990000],\n [13260003, 1284523883000],\n [13270000, 1284559545000],\n [13280001, 1284613657000],\n [13290003, 1284647063000],\n [13300000, 1284703307000],\n [13310002, 1284734091000],\n [13320002, 1284780594000],\n [13330004, 1284816503000],\n [13340000, 1284859349000],\n [13350001, 1284898520000],\n [13360000, 1284922896000],\n [13370002, 1284973746000],\n [13380000, 1284995064000],\n [13390004, 1285058627000],\n [13400002, 1285084289000],\n [13410005, 1285151263000],\n [13420000, 1285174192000],\n [13430000, 1285227503000],\n [13440004, 1285250843000],\n [13450007, 1285301710000],\n [13460000, 1285338172000],\n [13470007, 1285386754000],\n [13480002, 1285418930000],\n [13490002, 1285443125000],\n [13500001, 1285491869000],\n [13510006, 1285512382000],\n [13520000, 1285572669000],\n [13530003, 1285599963000],\n [13540002, 1285663189000],\n [13550000, 1285688428000],\n [13560001, 1285753766000],\n [13570000, 1285777318000],\n [13580005, 1285845224000],\n [13590002, 1285866408000],\n [13600001, 1285932869000],\n [13610003, 1285955477000],\n [13620000, 1286011278000],\n [13630001, 1286033520000],\n [13640001, 1286079742000],\n [13650001, 1286106928000],\n [13660002, 1286124128000],\n [13670005, 1286189352000],\n [13680002, 1286210184000],\n [13690000, 1286277190000],\n [13700001, 1286298612000],\n [13710002, 1286366512000],\n [13720001, 1286391268000],\n [13730002, 1286455082000],\n [13740007, 1286486830000],\n [13750001, 1286543733000],\n [13760001, 1286582060000],\n [13770000, 1286622918000],\n [13780003, 1286642450000],\n [13790000, 1286692726000],\n [13800001, 1286718021000],\n [13810003, 1286752215000],\n [13820000, 1286791489000],\n [13830001, 1286810989000],\n [13840001, 1286875998000],\n [13850003, 1286899374000],\n [13860000, 1286965646000],\n [13870000, 1286989108000],\n [13880001, 1287056928000],\n [13890003, 1287079973000],\n [13900000, 1287145497000],\n [13910002, 1287172085000],\n [13920000, 1287225384000],\n [13930004, 1287245969000],\n [13940003, 1287296215000],\n [13950003, 1287320263000],\n [13960000, 1287346883000],\n [13970011, 1287406934000],\n [13980000, 1287449201000],\n [13990002, 1287496124000],\n [14000000, 1287550315000],\n [14010002, 1287585133000],\n [14020002, 1287645957000],\n [14030000, 1287674130000],\n [14040003, 1287738931000],\n [14050002, 1287763516000],\n [14060000, 1287818586000],\n [14070005, 1287844055000],\n [14080003, 1287886605000],\n [14090001, 1287917308000],\n [14100000, 1287934346000],\n [14110007, 1287997009000],\n [14120003, 1288019639000],\n [14130002, 1288084105000],\n [14140000, 1288107911000],\n [14150000, 1288175810000],\n [14160003, 1288199607000],\n [14170001, 1288268739000],\n [14180000, 1288301838000],\n [14190002, 1288357841000],\n [14200005, 1288383988000],\n [14210000, 1288430900000],\n [14220000, 1288450015000],\n [14230001, 1288460894000],\n [14240001, 1288503897000],\n [14250002, 1288524444000],\n [14260002, 1288536417000],\n [14270001, 1288559551000],\n [14280004, 1288614494000],\n [14290000, 1288636790000],\n [14300001, 1288701069000],\n [14310000, 1288724423000],\n [14320002, 1288776052000],\n [14330000, 1288796401000],\n [14340003, 1288857588000],\n [14350006, 1288883585000],\n [14360004, 1288949700000],\n [14370001, 1288973472000],\n [14380001, 1289028320000],\n [14390005, 1289053182000],\n [14400004, 1289092512000],\n [14410000, 1289124567000],\n [14420002, 1289142469000],\n [14430000, 1289200698000],\n [14440000, 1289226741000],\n [14450000, 1289286036000],\n [14460001, 1289314520000],\n [14470002, 1289376224000],\n [14480002, 1289401742000],\n [14490001, 1289460865000],\n [14500001, 1289484283000],\n [14510000, 1289523233000],\n [14520001, 1289569043000],\n [14530002, 1289607472000],\n [14540001, 1289646752000],\n [14550004, 1289665668000],\n [14560005, 1289714543000],\n [14570002, 1289738263000],\n [14580001, 1289759036000],\n [14590001, 1289822837000],\n [14600006, 1289844897000],\n [14610004, 1289910783000],\n [14620000, 1289940668000],\n [14630004, 1289999394000],\n [14640000, 1290044327000],\n [14650001, 1290088675000],\n [14660010, 1290146173000],\n [14670003, 1290178715000],\n [14680006, 1290229305000],\n [14690001, 1290258858000],\n [14700000, 1290283021000],\n [14710001, 1290330017000],\n [14720001, 1290351368000],\n [14730000, 1290407282000],\n [14740002, 1290435028000],\n [14750000, 1290464600000],\n [14760004, 1290505101000],\n [14770005, 1290524323000],\n [14780002, 1290585156000],\n [14790002, 1290611533000],\n [14800002, 1290675115000],\n [14810005, 1290699536000],\n [14820003, 1290765982000],\n [14830002, 1290789167000],\n [14840001, 1290843946000],\n [14850000, 1290869019000],\n [14860000, 1290913104000],\n [14870000, 1290943562000],\n [14880003, 1290963089000],\n [14890000, 1291030901000],\n [14900000, 1291054197000],\n [14910000, 1291121135000],\n [14920001, 1291167073000],\n [14930001, 1291212813000],\n [14940001, 1291277195000],\n [14950003, 1291305231000],\n [14960001, 1291373249000],\n [14970000, 1291398478000],\n [14980003, 1291454733000],\n [14990006, 1291477691000],\n [15000018, 1291527486000],\n [15010002, 1291553361000],\n [15020002, 1291586032000],\n [15030000, 1291642446000],\n [15040001, 1291699202000],\n [15050004, 1291733347000],\n [15060010, 1291798100000],\n [15070001, 1291824339000],\n [15080000, 1291893540000],\n [15090000, 1291922099000],\n [15100005, 1291986770000],\n [15110000, 1292032722000],\n [15120005, 1292069186000],\n [15130001, 1292090384000],\n [15140000, 1292141815000],\n [15150000, 1292164081000],\n [15160001, 1292223938000],\n [15170002, 1292251943000],\n [15180009, 1292315000000],\n [15190001, 1292339700000],\n [15200000, 1292399890000],\n [15210000, 1292423274000],\n [15220007, 1292475878000],\n [15230002, 1292508400000],\n [15240003, 1292562759000],\n [15250003, 1292596779000],\n [15260000, 1292646528000],\n [15270004, 1292677534000],\n [15280001, 1292703551000],\n [15290000, 1292750853000],\n [15300001, 1292770943000],\n [15310005, 1292830092000],\n [15320003, 1292856886000],\n [15330003, 1292916490000],\n [15340000, 1292943635000],\n [15350000, 1293001746000],\n [15360003, 1293029691000],\n [15370002, 1293077329000],\n [15380000, 1293107925000],\n [15390000, 1293124460000],\n [15400012, 1293177148000],\n [15410000, 1293200478000],\n [15420002, 1293223235000],\n [15430000, 1293268036000],\n [15440002, 1293288596000],\n [15450000, 1293330169000],\n [15460004, 1293364717000],\n [15470003, 1293384306000],\n [15480004, 1293441672000],\n [15490001, 1293465151000],\n [15500002, 1293518526000],\n [15510001, 1293546831000],\n [15520002, 1293597431000],\n [15530005, 1293630221000],\n [15540002, 1293675124000],\n [15550000, 1293712423000],\n [15560002, 1293736274000],\n [15570000, 1293785654000],\n [15580000, 1293807104000],\n [15590000, 1293813108000],\n [15600004, 1293848040000],\n [15610006, 1293872314000],\n [15620010, 1293890945000],\n [15630001, 1293917668000],\n [15640001, 1293964548000],\n [15650000, 1293984667000],\n [15660000, 1294034714000],\n [15670000, 1294059820000],\n [15680002, 1294081042000],\n [15690008, 1294132088000],\n [15700004, 1294153388000],\n [15710001, 1294198562000],\n [15720001, 1294229511000],\n [15730000, 1294247497000],\n [15740000, 1294301349000],\n [15750001, 1294325182000],\n [15760002, 1294376467000],\n [15770000, 1294407648000],\n [15780002, 1294444452000],\n [15790003, 1294485613000],\n [15800003, 1294506185000],\n [15810001, 1294559429000],\n [15820000, 1294583260000],\n [15830001, 1294623456000],\n [15840000, 1294655809000],\n [15850001, 1294673991000],\n [15860000, 1294737035000],\n [15870000, 1294760300000],\n [15880003, 1294826572000],\n [15890003, 1294849889000],\n [15900000, 1294917508000],\n [15910001, 1294941223000],\n [15920002, 1295007709000],\n [15930001, 1295029623000],\n [15940002, 1295083114000],\n [15950000, 1295105042000],\n [15960008, 1295150096000],\n [15970000, 1295176582000],\n [15980003, 1295193532000],\n [15990008, 1295257398000],\n [16000000, 1295279291000],\n [16010001, 1295344325000],\n [16020001, 1295365579000],\n [16030000, 1295430007000],\n [16040000, 1295451532000],\n [16050000, 1295515049000],\n [16060001, 1295537558000],\n [16070000, 1295601077000],\n [16080006, 1295625363000],\n [16090003, 1295677743000],\n [16100002, 1295703430000],\n [16110005, 1295729619000],\n [16120000, 1295773021000],\n [16130001, 1295792062000],\n [16140002, 1295841907000],\n [16150000, 1295876478000],\n [16160003, 1295920129000],\n [16170001, 1295961719000],\n [16180003, 1296005962000],\n [16190001, 1296048001000],\n [16200000, 1296084003000],\n [16210001, 1296132386000],\n [16220000, 1296154256000],\n [16230002, 1296214941000],\n [16240001, 1296233843000],\n [16250000, 1296285251000],\n [16260001, 1296308274000],\n [16270000, 1296328631000],\n [16280000, 1296373529000],\n [16290003, 1296393394000],\n [16300004, 1296412941000],\n [16310000, 1296473201000],\n [16320003, 1296490245000],\n [16330006, 1296550062000],\n [16340000, 1296571947000],\n [16350000, 1296623456000],\n [16360000, 1296652965000],\n [16370000, 1296675824000],\n [16380002, 1296731668000],\n [16390000, 1296748000000],\n [16400000, 1296806467000],\n [16410000, 1296830277000],\n [16420000, 1296870503000],\n [16430000, 1296902174000],\n [16440000, 1296919854000],\n [16450000, 1296962274000],\n [16460001, 1296987424000],\n [16470002, 1297003969000],\n [16480000, 1297047879000],\n [16490006, 1297082200000],\n [16500001, 1297099131000],\n [16510003, 1297158628000],\n [16520001, 1297177734000],\n [16530004, 1297231023000],\n [16540001, 1297258924000],\n [16550000, 1297293429000],\n [16560000, 1297339287000],\n [16570000, 1297356967000],\n [16580000, 1297406230000],\n [16590005, 1297428558000],\n [16600000, 1297444000000],\n [16610005, 1297492058000],\n [16620000, 1297515324000],\n [16630004, 1297532087000],\n [16640002, 1297580468000],\n [16650000, 1297602605000],\n [16660000, 1297615573000],\n [16670000, 1297667071000],\n [16680001, 1297687168000],\n [16690001, 1297697982000],\n [16700001, 1297749017000],\n [16710000, 1297776910000],\n [16720000, 1297805417000],\n [16730000, 1297857224000],\n [16740004, 1297876015000],\n [16750002, 1297935653000],\n [16760000, 1297956063000],\n [16770000, 1298009599000],\n [16780000, 1298036761000],\n [16790001, 1298065707000],\n [16800000, 1298109530000],\n [16810002, 1298128885000],\n [16820000, 1298170973000],\n [16830000, 1298198906000],\n [16840000, 1298215638000],\n [16850003, 1298271332000],\n [16860003, 1298297297000],\n [16870001, 1298334574000],\n [16880000, 1298374612000],\n [16890000, 1298387834000],\n [16900006, 1298440832000],\n [16910001, 1298468928000],\n [16920002, 1298506815000],\n [16930003, 1298550268000],\n [16940000, 1298572618000],\n [16950001, 1298631374000],\n [16960001, 1298650858000],\n [16970003, 1298702149000],\n [16980000, 1298727161000],\n [16990001, 1298750306000],\n [17000000, 1298796449000],\n [17010000, 1298816402000],\n [17020001, 1298861035000],\n [17030001, 1298897501000],\n [17040000, 1298918040000],\n [17050001, 1298976561000],\n [17060002, 1298995413000],\n [17070000, 1299054977000],\n [17080002, 1299077821000],\n [17090002, 1299127707000],\n [17100000, 1299157842000],\n [17110002, 1299180217000],\n [17120003, 1299238067000],\n [17130000, 1299257087000],\n [17140006, 1299308923000],\n [17150000, 1299332822000],\n [17160002, 1299356148000],\n [17170000, 1299399969000],\n [17180001, 1299419595000],\n [17190003, 1299451732000],\n [17200000, 1299497993000],\n [17210006, 1299515396000],\n [17220000, 1299573968000],\n [17230000, 1299595987000],\n [17240001, 1299641799000],\n [17250002, 1299672911000],\n [17260000, 1299688220000],\n [17270004, 1299744534000],\n [17280000, 1299767015000],\n [17290000, 1299810783000],\n [17300003, 1299862908000],\n [17310003, 1299930844000],\n [17320000, 1299984696000],\n [17330001, 1300017855000],\n [17340009, 1300066730000],\n [17350001, 1300107195000],\n [17360002, 1300158110000],\n [17370001, 1300194119000],\n [17380001, 1300244735000],\n [17390002, 1300279598000],\n [17400002, 1300319831000],\n [17410000, 1300361932000],\n [17420000, 1300384138000],\n [17430000, 1300440756000],\n [17440000, 1300461723000],\n [17450000, 1300509897000],\n [17460003, 1300536055000],\n [17470009, 1300554024000],\n [17480004, 1300601614000],\n [17490002, 1300623320000],\n [17500002, 1300638827000],\n [17510002, 1300684104000],\n [17520001, 1300705166000],\n [17530000, 1300719958000],\n [17540002, 1300762970000],\n [17550001, 1300793717000],\n [17560001, 1300809983000],\n [17570006, 1300860379000],\n [17580002, 1300885414000],\n [17590001, 1300905210000],\n [17600002, 1300957348000],\n [17610000, 1300978270000],\n [17620004, 1301022368000],\n [17630000, 1301051509000],\n [17640002, 1301068408000],\n [17650005, 1301115630000],\n [17660002, 1301141633000],\n [17670000, 1301159101000],\n [17680000, 1301207711000],\n [17690001, 1301230061000],\n [17700000, 1301247769000],\n [17710001, 1301300097000],\n [17720004, 1301321694000],\n [17730004, 1301359814000],\n [17740000, 1301394002000],\n [17750002, 1301412230000],\n [17760001, 1301461723000],\n [17770000, 1301488134000],\n [17780000, 1301505666000],\n [17790009, 1301556016000],\n [17800002, 1301578213000],\n [17810001, 1301593721000],\n [17820002, 1301640723000],\n [17830001, 1301662323000],\n [17840002, 1301677376000],\n [17850001, 1301725555000],\n [17860000, 1301749268000],\n [17870000, 1301766216000],\n [17880000, 1301813367000],\n [17890005, 1301834761000],\n [17900010, 1301849283000],\n [17910000, 1301900908000],\n [17920000, 1301924610000],\n [17930001, 1301957678000],\n [17940002, 1301998758000],\n [17950001, 1302017959000],\n [17960002, 1302072029000],\n [17970000, 1302097165000],\n [17980001, 1302133258000],\n [17990000, 1302175976000],\n [18000000, 1302197316000],\n [18010003, 1302258790000],\n [18020004, 1302278230000],\n [18030010, 1302327468000],\n [18040001, 1302352435000],\n [18050005, 1302368737000],\n [18060000, 1302416328000],\n [18070000, 1302439072000],\n [18080000, 1302457025000],\n [18090000, 1302521270000],\n [18100001, 1302541649000],\n [18110000, 1302607823000],\n [18120001, 1302629764000],\n [18130006, 1302695816000],\n [18140000, 1302717159000],\n [18150002, 1302782840000],\n [18160001, 1302806997000],\n [18170000, 1302870683000],\n [18180001, 1302894611000],\n [18190002, 1302944980000],\n [18200004, 1302965974000],\n [18210001, 1303006426000],\n [18220000, 1303034427000],\n [18230001, 1303051920000],\n [18240003, 1303108733000],\n [18250000, 1303136821000],\n [18260001, 1303195064000],\n [18270000, 1303224047000],\n [18280001, 1303282325000],\n [18290003, 1303309822000],\n [18300000, 1303368067000],\n [18310004, 1303396790000],\n [18320000, 1303453454000],\n [18330000, 1303482659000],\n [18340001, 1303525887000],\n [18350003, 1303555922000],\n [18360005, 1303572740000],\n [18370001, 1303614719000],\n [18380009, 1303640637000],\n [18390003, 1303656640000],\n [18400001, 1303712501000],\n [18410001, 1303740814000],\n [18420000, 1303793239000],\n [18430000, 1303826988000],\n [18440003, 1303878971000],\n [18450001, 1303912501000],\n [18460000, 1303952901000],\n [18470001, 1303996909000],\n [18480001, 1304026701000],\n [18490004, 1304070588000],\n [18500000, 1304090317000],\n [18510001, 1304134618000],\n [18520003, 1304163399000],\n [18530000, 1304179558000],\n [18540000, 1304224315000],\n [18550003, 1304248335000],\n [18560000, 1304264348000],\n [18570003, 1304318720000],\n [18580005, 1304344670000],\n [18590000, 1304380431000],\n [18600000, 1304418142000],\n [18610000, 1304436977000],\n [18620000, 1304483107000],\n [18630000, 1304510844000],\n [18640001, 1304525913000],\n [18650002, 1304571627000],\n [18660001, 1304594862000],\n [18670000, 1304612428000],\n [18680000, 1304670820000],\n [18690000, 1304692839000],\n [18700001, 1304730933000],\n [18710001, 1304762137000],\n [18720001, 1304779328000],\n [18730005, 1304805791000],\n [18740000, 1304842467000],\n [18750001, 1304861184000],\n [18760001, 1304880764000],\n [18770003, 1304942590000],\n [18780005, 1304959461000],\n [18790000, 1305024086000],\n [18800000, 1305042511000],\n [18810000, 1305105612000],\n [18820000, 1305126851000],\n [18830002, 1305186649000],\n [18840002, 1305211233000],\n [18850001, 1305263143000],\n [18860002, 1305296090000],\n [18870007, 1305334791000],\n [18880002, 1305369203000],\n [18890000, 1305386728000],\n [18900002, 1305427616000],\n [18910001, 1305454232000],\n [18920000, 1305470965000],\n [18930002, 1305522320000],\n [18940001, 1305553956000],\n [18950001, 1305596355000],\n [18960001, 1305638411000],\n [18970001, 1305673304000],\n [18980002, 1305723866000],\n [18990001, 1305757275000],\n [19000000, 1305809290000],\n [19010009, 1305837813000],\n [19020007, 1305894834000],\n [19030001, 1305913206000],\n [19040002, 1305965220000],\n [19050002, 1305986717000],\n [19060004, 1306009914000],\n [19070000, 1306049956000],\n [19080003, 1306069433000],\n [19090002, 1306087127000],\n [19100000, 1306150069000],\n [19110000, 1306166258000],\n [19120003, 1306228843000],\n [19130003, 1306250294000],\n [19140006, 1306311779000],\n [19150002, 1306335760000],\n [19160002, 1306393436000],\n [19170000, 1306420009000],\n [19180000, 1306473281000],\n [19190000, 1306504375000],\n [19200002, 1306530639000],\n [19210000, 1306573710000],\n [19220003, 1306593144000],\n [19230000, 1306621510000],\n [19240003, 1306655709000],\n [19250004, 1306673753000],\n [19260001, 1306688234000],\n [19270001, 1306749515000],\n [19280001, 1306768188000],\n [19290000, 1306826654000],\n [19300000, 1306852185000],\n [19310001, 1306898547000],\n [19320000, 1306935589000],\n [19330003, 1306973637000],\n [19340005, 1307019857000],\n [19350002, 1307045441000],\n [19360000, 1307103660000],\n [19370000, 1307119838000],\n [19380000, 1307169540000],\n [19390003, 1307193572000],\n [19400001, 1307210358000],\n [19410001, 1307255861000],\n [19420003, 1307276768000],\n [19430000, 1307290443000],\n [19440000, 1307350716000],\n [19450001, 1307371274000],\n [19460000, 1307422771000],\n [19470001, 1307455172000],\n [19480001, 1307499891000],\n [19490000, 1307539315000],\n [19500000, 1307567911000],\n [19510004, 1307622498000],\n [19520000, 1307640381000],\n [19530001, 1307704413000],\n [19540001, 1307722120000],\n [19550002, 1307768243000],\n [19560000, 1307794803000],\n [19570002, 1307811258000],\n [19580003, 1307857708000],\n [19590005, 1307879918000],\n [19600001, 1307895029000],\n [19610000, 1307958216000],\n [19620002, 1307978222000],\n [19630002, 1308040399000],\n [19640000, 1308063792000],\n [19650003, 1308124029000],\n [19660002, 1308150027000],\n [19670001, 1308210699000],\n [19680003, 1308236169000],\n [19690000, 1308296022000],\n [19700000, 1308322119000],\n [19710001, 1308363044000],\n [19720002, 1308395885000],\n [19730004, 1308413453000],\n [19740002, 1308458162000],\n [19750010, 1308481668000],\n [19760006, 1308496706000],\n [19770008, 1308555450000],\n [19780001, 1308580470000],\n [19790001, 1308634952000],\n [19800000, 1308666162000],\n [19810003, 1308718375000],\n [19820000, 1308752129000],\n [19830000, 1308803871000],\n [19840000, 1308838040000],\n [19850001, 1308887980000],\n [19860001, 1308923907000],\n [19870002, 1308962490000],\n [19880002, 1308998955000],\n [19890003, 1309017577000],\n [19900012, 1309064025000],\n [19910001, 1309089449000],\n [19920000, 1309106589000],\n [19930000, 1309172893000],\n [19940004, 1309193070000],\n [19950000, 1309260287000],\n [19960001, 1309282649000],\n [19970001, 1309349322000],\n [19980001, 1309378576000],\n [19990002, 1309438414000],\n [20000000, 1309470273000],\n [20010000, 1309524618000],\n [20020000, 1309552158000],\n [20030000, 1309600178000],\n [20040003, 1309620373000],\n [20050002, 1309663215000],\n [20060000, 1309690686000],\n [20070000, 1309707046000],\n [20080001, 1309766699000],\n [20090000, 1309790656000],\n [20100001, 1309846681000],\n [20110000, 1309876281000],\n [20120004, 1309932570000],\n [20130000, 1309961691000],\n [20140000, 1310003497000],\n [20150000, 1310041811000],\n [20160000, 1310056900000],\n [20170000, 1310120484000],\n [20180001, 1310141027000],\n [20190001, 1310192843000],\n [20200001, 1310218573000],\n [20210003, 1310240759000],\n [20220001, 1310284832000],\n [20230000, 1310305227000],\n [20240000, 1310341152000],\n [20250000, 1310388758000],\n [20260001, 1310418431000],\n [20270000, 1310475992000],\n [20280001, 1310508762000],\n [20290003, 1310561348000],\n [20300000, 1310591204000],\n [20310004, 1310646798000],\n [20320001, 1310670408000],\n [20330007, 1310731839000],\n [20340002, 1310755076000],\n [20350002, 1310806937000],\n [20360001, 1310829167000],\n [20370000, 1310873205000],\n [20380004, 1310902877000],\n [20390001, 1310920468000],\n [20400001, 1310968321000],\n [20410006, 1310991474000],\n [20420000, 1311006875000],\n [20430000, 1311064100000],\n [20440000, 1311084772000],\n [20450001, 1311123782000],\n [20460002, 1311162399000],\n [20470001, 1311178561000],\n [20480000, 1311235088000],\n [20490000, 1311258344000],\n [20500000, 1311303174000],\n [20510002, 1311339356000],\n [20520000, 1311362905000],\n [20530000, 1311413763000],\n [20540001, 1311434039000],\n [20550000, 1311475736000],\n [20560001, 1311505255000],\n [20570001, 1311522648000],\n [20580000, 1311579354000],\n [20590002, 1311604273000],\n [20600000, 1311653390000],\n [20610001, 1311687194000],\n [20620004, 1311730278000],\n [20630001, 1311770214000],\n [20640001, 1311795655000],\n [20650002, 1311850920000],\n [20660000, 1311871766000],\n [20670001, 1311929902000],\n [20680002, 1311953147000],\n [20690002, 1312003428000],\n [20700000, 1312032538000],\n [20710000, 1312059365000],\n [20720004, 1312104991000],\n [20730002, 1312124466000],\n [20740000, 1312170787000],\n [20750000, 1312202579000],\n [20760004, 1312222639000],\n [20770000, 1312277576000],\n [20780003, 1312297129000],\n [20790000, 1312343645000],\n [20800001, 1312375698000],\n [20810005, 1312396079000],\n [20820000, 1312451540000],\n [20830000, 1312472965000],\n [20840007, 1312526698000],\n [20850001, 1312553734000],\n [20860002, 1312594022000],\n [20870000, 1312629862000],\n [20880000, 1312649133000],\n [20890001, 1312698590000],\n [20900003, 1312724121000],\n [20910006, 1312751963000],\n [20920006, 1312800742000],\n [20930002, 1312820645000],\n [20940007, 1312875899000],\n [20950000, 1312900379000],\n [20960001, 1312941650000],\n [20970000, 1312978307000],\n [20980003, 1312998067000],\n [20990000, 1313051765000],\n [21000001, 1313076106000],\n [21010000, 1313130407000],\n [21020001, 1313160975000],\n [21030001, 1313215417000],\n [21040004, 1313247433000],\n [21050005, 1313301467000],\n [21060001, 1313332019000],\n [21070003, 1313381642000],\n [21080000, 1313414672000],\n [21090000, 1313455024000],\n [21100003, 1313495199000],\n [21110002, 1313516792000],\n [21120001, 1313572991000],\n [21130001, 1313595683000],\n [21140004, 1313650708000],\n [21150000, 1313677682000],\n [21160000, 1313726375000],\n [21170003, 1313758608000],\n [21180000, 1313781396000],\n [21190001, 1313833429000],\n [21200001, 1313855451000],\n [21210003, 1313906661000],\n [21220000, 1313933611000],\n [21230005, 1313974048000],\n [21240002, 1314015010000],\n [21250000, 1314035676000],\n [21260007, 1314093605000],\n [21270000, 1314115440000],\n [21280000, 1314172198000],\n [21290001, 1314197976000],\n [21300002, 1314250182000],\n [21310000, 1314280626000],\n [21320002, 1314322037000],\n [21330000, 1314362035000],\n [21340000, 1314386898000],\n [21350000, 1314439830000],\n [21360001, 1314461821000],\n [21370001, 1314512215000],\n [21380000, 1314538371000],\n [21390000, 1314575380000],\n [21400000, 1314620028000],\n [21410001, 1314642285000],\n [21420001, 1314701761000],\n [21430001, 1314721520000],\n [21440000, 1314777562000],\n [21450000, 1314800426000],\n [21460000, 1314846685000],\n [21470001, 1314884232000],\n [21480001, 1314930814000],\n [21490000, 1314969958000],\n [21500000, 1314999773000],\n [21510003, 1315042331000],\n [21520000, 1315062498000],\n [21530002, 1315104703000],\n [21540006, 1315134496000],\n [21550000, 1315151760000],\n [21560003, 1315214710000],\n [21570004, 1315237490000],\n [21580002, 1315303317000],\n [21590000, 1315326783000],\n [21600001, 1315394334000],\n [21610000, 1315417250000],\n [21620007, 1315484272000],\n [21630005, 1315514205000],\n [21640002, 1315572280000],\n [21650001, 1315597738000],\n [21660000, 1315650322000],\n [21670009, 1315671921000],\n [21680001, 1315722958000],\n [21690001, 1315747606000],\n [21700000, 1315786265000],\n [21710002, 1315831829000],\n [21720000, 1315864633000],\n [21730000, 1315919301000],\n [21740001, 1315965116000],\n [21750000, 1316008394000],\n [21760003, 1316062939000],\n [21770000, 1316097353000],\n [21780013, 1316159041000],\n [21790000, 1316186261000],\n [21800005, 1316239287000],\n [21810001, 1316267691000],\n [21820003, 1316306735000],\n [21830010, 1316343785000],\n [21840001, 1316363104000],\n [21850001, 1316414441000],\n [21860003, 1316438203000],\n [21870001, 1316470394000],\n [21880001, 1316522778000],\n [21890000, 1316554809000],\n [21900000, 1316600632000],\n [21910000, 1316619796000],\n [21920009, 1316684574000],\n [21930001, 1316707729000],\n [21940001, 1316763644000],\n [21950001, 1316788791000],\n [21960000, 1316835026000],\n [21970004, 1316867190000],\n [21980000, 1316889287000],\n [21990000, 1316940627000],\n [22000000, 1316961644000],\n [22010001, 1317021110000],\n [22020004, 1317049342000],\n [22030000, 1317116618000],\n [22040000, 1317141016000],\n [22050001, 1317209989000],\n [22060000, 1317236089000],\n [22070001, 1317301682000],\n [22080000, 1317349434000],\n [22090002, 1317390868000],\n [22100004, 1317432575000],\n [22110003, 1317469757000],\n [22120000, 1317488614000],\n [22130007, 1317539969000],\n [22140002, 1317562919000],\n [22150004, 1317609637000],\n [22160000, 1317650002000],\n [22170000, 1317704968000],\n [22180000, 1317738990000],\n [22190003, 1317801343000],\n [22200000, 1317827808000],\n [22210000, 1317895808000],\n [22220003, 1317919863000],\n [22230002, 1317988722000],\n [22240000, 1318016522000],\n [22250001, 1318071385000],\n [22260001, 1318093300000],\n [22270003, 1318147216000],\n [22280000, 1318170584000],\n [22290000, 1318208160000],\n [22300003, 1318240420000],\n [22310000, 1318258161000],\n [22320003, 1318316469000],\n [22330003, 1318344717000],\n [22340001, 1318409556000],\n [22350000, 1318435205000],\n [22360001, 1318504263000],\n [22370000, 1318529232000],\n [22380002, 1318595828000],\n [22390000, 1318618338000],\n [22400000, 1318671167000],\n [22410002, 1318691515000],\n [22420001, 1318735377000],\n [22430000, 1318764254000],\n [22440003, 1318781325000],\n [22450005, 1318848420000],\n [22460001, 1318869603000],\n [22470000, 1318938778000],\n [22480001, 1318967790000],\n [22490004, 1319030449000],\n [22500004, 1319079994000],\n [22510002, 1319119857000],\n [22520003, 1319179130000],\n [22530000, 1319208961000],\n [22540001, 1319255965000],\n [22550003, 1319286551000],\n [22560000, 1319305301000],\n [22570001, 1319356571000],\n [22580000, 1319378199000],\n [22590003, 1319426643000],\n [22600001, 1319463672000],\n [22610000, 1319512754000],\n [22620004, 1319551356000],\n [22630000, 1319610153000],\n [22640005, 1319641157000],\n [22650000, 1319707349000],\n [22660000, 1319731547000],\n [22670001, 1319800581000],\n [22680000, 1319819486000],\n [22690003, 1319873970000],\n [22700001, 1319897967000],\n [22710001, 1319935963000],\n [22720004, 1319968209000],\n [22730003, 1319985235000],\n [22740001, 1320011852000],\n [22750000, 1320058950000],\n [22760000, 1320071362000],\n [22770003, 1320098160000],\n [22780001, 1320152372000],\n [22790001, 1320190601000],\n [22800001, 1320241044000],\n [22810001, 1320284413000],\n [22820004, 1320319340000],\n [22830001, 1320337268000],\n [22840003, 1320404415000],\n [22850002, 1320425018000],\n [22860001, 1320480947000],\n [22870000, 1320503617000],\n [22880005, 1320543865000],\n [22890002, 1320574159000],\n [22900002, 1320591657000],\n [22910000, 1320651757000],\n [22920003, 1320677541000],\n [22930000, 1320741302000],\n [22940003, 1320765723000],\n [22950001, 1320831753000],\n [22960006, 1320855105000],\n [22970001, 1320924795000],\n [22980002, 1320944792000],\n [22990001, 1321008281000],\n [23000000, 1321023750000],\n [23010002, 1321070842000],\n [23020003, 1321103718000],\n [23030000, 1321129017000],\n [23040000, 1321177273000],\n [23050002, 1321196946000],\n [23060001, 1321261553000],\n [23070000, 1321285909000],\n [23080000, 1321355699000],\n [23090000, 1321383060000],\n [23100005, 1321449832000],\n [23110002, 1321506266000],\n [23120003, 1321541632000],\n [23130002, 1321607482000],\n [23140001, 1321632446000],\n [23150000, 1321687922000],\n [23160008, 1321712956000],\n [23170003, 1321755137000],\n [23180004, 1321786716000],\n [23190002, 1321804967000],\n [23200000, 1321873109000],\n [23210001, 1321895437000],\n [23220003, 1321963844000],\n [23230002, 1321984715000],\n [23240001, 1322039864000],\n [23250001, 1322060908000],\n [23260000, 1322127226000],\n [23270002, 1322153048000],\n [23280001, 1322222793000],\n [23290001, 1322254119000],\n [23300000, 1322305405000],\n [23310000, 1322327316000],\n [23320000, 1322381472000],\n [23330000, 1322404249000],\n [23340002, 1322465114000],\n [23350000, 1322493113000],\n [23360006, 1322560101000],\n [23370001, 1322584337000],\n [23380000, 1322653117000],\n [23390001, 1322680475000],\n [23400002, 1322745694000],\n [23410000, 1322805019000],\n [23420001, 1322838363000],\n [23430004, 1322893389000],\n [23440000, 1322920931000],\n [23450001, 1322957348000],\n [23460001, 1322993838000],\n [23470000, 1323013257000],\n [23480002, 1323079810000],\n [23490000, 1323104038000],\n [23500001, 1323173670000],\n [23510000, 1323209081000],\n [23520000, 1323264634000],\n [23530000, 1323321279000],\n [23540000, 1323355034000],\n [23550000, 1323418051000],\n [23560000, 1323446018000],\n [23570002, 1323502786000],\n [23580003, 1323529242000],\n [23590001, 1323577529000],\n [23600001, 1323605404000],\n [23610002, 1323626059000],\n [23620000, 1323692297000],\n [23630002, 1323722658000],\n [23640000, 1323782683000],\n [23650002, 1323837289000],\n [23660002, 1323873320000],\n [23670000, 1323936718000],\n [23680000, 1323963767000],\n [23690000, 1324032527000],\n [23700002, 1324058055000],\n [23710002, 1324116644000],\n [23720000, 1324140121000],\n [23730002, 1324193994000],\n [23740000, 1324217210000],\n [23750013, 1324272754000],\n [23760005, 1324304982000],\n [23770001, 1324365660000],\n [23780000, 1324394436000],\n [23790000, 1324459838000],\n [23800000, 1324484711000],\n [23810000, 1324550120000],\n [23820000, 1324573423000],\n [23830002, 1324631388000],\n [23840000, 1324653579000],\n [23850006, 1324696103000],\n [23860002, 1324726178000],\n [23870000, 1324741818000],\n [23880005, 1324784124000],\n [23890000, 1324810794000],\n [23900002, 1324825733000],\n [23910008, 1324876708000],\n [23920002, 1324907837000],\n [23930004, 1324949590000],\n [23940001, 1324988433000],\n [23950000, 1325009155000],\n [23960001, 1325065524000],\n [23970003, 1325088851000],\n [23980000, 1325144565000],\n [23990000, 1325171450000],\n [24000001, 1325225873000],\n [24010000, 1325255398000],\n [24020000, 1325299260000],\n [24030001, 1325329713000],\n [24040000, 1325343849000],\n [24050000, 1325354156000],\n [24060002, 1325391700000],\n [24070005, 1325414182000],\n [24080002, 1325431130000],\n [24090005, 1325478851000],\n [24100000, 1325508947000],\n [24110003, 1325530378000],\n [24120001, 1325581779000],\n [24130000, 1325602300000],\n [24140003, 1325647072000],\n [24150003, 1325677503000],\n [24160000, 1325695447000],\n [24170000, 1325751276000],\n [24180003, 1325775153000],\n [24190000, 1325826025000],\n [24200004, 1325856193000],\n [24210000, 1325881515000],\n [24220004, 1325930803000],\n [24230005, 1325951349000],\n [24240002, 1326004206000],\n [24250002, 1326030421000],\n [24260000, 1326066557000],\n [24270000, 1326104441000],\n [24280000, 1326122937000],\n [24290000, 1326185192000],\n [24300004, 1326209696000],\n [24310000, 1326276388000],\n [24320006, 1326301033000],\n [24330000, 1326370510000],\n [24340004, 1326401119000],\n [24350000, 1326460332000],\n [24360000, 1326497622000],\n [24370001, 1326539733000],\n [24380003, 1326558635000],\n [24390005, 1326609165000],\n [24400001, 1326632524000],\n [24410000, 1326656873000],\n [24420001, 1326718293000],\n [24430003, 1326756418000],\n [24440000, 1326807702000],\n [24450000, 1326863425000],\n [24460001, 1326897026000],\n [24470000, 1326958084000],\n [24480003, 1326985898000],\n [24490003, 1327050172000],\n [24500000, 1327074420000],\n [24510007, 1327128099000],\n [24520000, 1327153359000],\n [24530001, 1327179534000],\n [24540000, 1327223273000],\n [24550001, 1327242616000],\n [24560000, 1327296026000],\n [24570000, 1327327396000],\n [24580001, 1327380190000],\n [24590004, 1327414612000],\n [24600003, 1327472400000],\n [24610001, 1327502381000],\n [24620000, 1327564547000],\n [24630000, 1327591471000],\n [24640000, 1327656324000],\n [24650000, 1327679517000],\n [24660001, 1327732168000],\n [24670000, 1327757534000],\n [24680000, 1327786496000],\n [24690001, 1327827888000],\n [24700003, 1327847355000],\n [24710000, 1327901011000],\n [24720002, 1327931464000],\n [24730000, 1327978534000],\n [24740003, 1328015394000],\n [24750002, 1328045492000],\n [24760003, 1328097938000],\n [24770005, 1328118306000],\n [24780001, 1328180280000],\n [24790001, 1328199589000],\n [24800000, 1328260480000],\n [24810000, 1328281188000],\n [24820003, 1328326341000],\n [24830000, 1328356163000],\n [24840001, 1328373411000],\n [24850005, 1328421344000],\n [24860000, 1328444479000],\n [24870000, 1328460248000],\n [24880003, 1328518733000],\n [24890003, 1328539867000],\n [24900002, 1328589557000],\n [24910000, 1328620608000],\n [24920000, 1328648168000],\n [24930000, 1328702024000],\n [24940000, 1328721346000],\n [24950006, 1328783479000],\n [24960000, 1328803437000],\n [24970000, 1328863429000],\n [24980001, 1328886008000],\n [24990000, 1328929723000],\n [25000000, 1328960415000],\n [25010002, 1328977344000],\n [25020000, 1329025731000],\n [25030001, 1329049980000],\n [25040000, 1329068690000],\n [25050004, 1329130478000],\n [25060001, 1329146399000],\n [25070000, 1329183000000],\n [25080002, 1329215844000],\n [25090000, 1329228949000],\n [25100001, 1329244207000],\n [25110000, 1329302631000],\n [25120001, 1329321708000],\n [25130000, 1329381029000],\n [25140000, 1329404840000],\n [25150000, 1329462877000],\n [25160000, 1329489644000],\n [25170003, 1329534862000],\n [25180003, 1329566487000],\n [25190004, 1329585135000],\n [25200000, 1329633782000],\n [25210001, 1329656239000],\n [25220000, 1329678393000],\n [25230003, 1329737720000],\n [25240000, 1329757682000],\n [25250001, 1329819619000],\n [25260006, 1329839336000],\n [25270001, 1329895309000],\n [25280001, 1329916969000],\n [25290000, 1329931156000],\n [25300002, 1329990158000],\n [25310001, 1330010883000],\n [25320002, 1330069055000],\n [25330005, 1330093987000],\n [25340002, 1330135679000],\n [25350001, 1330167880000],\n [25360000, 1330185900000],\n [25370005, 1330233020000],\n [25380000, 1330257575000],\n [25390000, 1330275288000],\n [25400006, 1330337069000],\n [25410001, 1330358238000],\n [25420000, 1330419710000],\n [25430000, 1330442947000],\n [25440000, 1330501132000],\n [25450002, 1330524884000],\n [25460003, 1330571420000],\n [25470000, 1330607826000],\n [25480000, 1330646728000],\n [25490000, 1330690283000],\n [25500000, 1330707682000],\n [25510000, 1330757961000],\n [25520002, 1330781287000],\n [25530000, 1330801141000],\n [25540000, 1330848222000],\n [25550002, 1330868611000],\n [25560000, 1330896046000],\n [25570001, 1330946186000],\n [25580002, 1330963906000],\n [25590000, 1331022524000],\n [25600002, 1331045469000],\n [25610000, 1331096539000],\n [25620000, 1331126122000],\n [25630000, 1331153408000],\n [25640001, 1331206395000],\n [25650002, 1331224551000],\n [25660000, 1331280542000],\n [25670000, 1331301283000],\n [25680000, 1331320141000],\n [25690001, 1331368532000],\n [25700000, 1331389470000],\n [25710000, 1331423623000],\n [25720001, 1331460346000],\n [25730001, 1331477367000],\n [25740002, 1331525812000],\n [25750000, 1331557421000],\n [25760002, 1331583780000],\n [25770003, 1331637365000],\n [25780002, 1331655489000],\n [25790000, 1331711754000],\n [25800002, 1331734318000],\n [25810000, 1331772872000],\n [25820004, 1331812945000],\n [25830000, 1331831627000],\n [25840002, 1331889754000],\n [25850005, 1331910420000],\n [25860000, 1331953728000],\n [25870005, 1331982874000],\n [25880001, 1331999511000],\n [25890001, 1332046691000],\n [25900002, 1332071972000],\n [25910008, 1332089058000],\n [25920000, 1332147695000],\n [25930000, 1332169521000],\n [25940000, 1332215782000],\n [25950001, 1332244364000],\n [25960000, 1332261210000],\n [25970001, 1332318531000],\n [25980001, 1332341176000],\n [25990001, 1332391355000],\n [26000000, 1332421461000],\n [26010001, 1332448273000],\n [26020001, 1332498487000],\n [26030003, 1332517971000],\n [26040003, 1332568170000],\n [26050005, 1332593995000],\n [26060000, 1332612085000],\n [26070001, 1332661599000],\n [26080000, 1332682793000],\n [26090000, 1332715829000],\n [26100001, 1332759035000],\n [26110000, 1332777419000],\n [26120001, 1332831588000],\n [26130000, 1332856823000],\n [26140001, 1332899875000],\n [26150003, 1332935043000],\n [26160005, 1332953658000],\n [26170000, 1333009094000],\n [26180002, 1333032588000],\n [26190002, 1333081253000],\n [26200000, 1333110673000],\n [26210005, 1333131212000],\n [26220001, 1333180480000],\n [26230003, 1333202751000],\n [26240002, 1333216958000],\n [26250003, 1333261703000],\n [26260001, 1333283092000],\n [26270002, 1333297313000],\n [26280003, 1333350689000],\n [26290000, 1333374776000],\n [26300003, 1333414324000],\n [26310000, 1333448080000],\n [26320001, 1333465609000],\n [26330002, 1333513846000],\n [26340000, 1333543161000],\n [26350000, 1333565419000],\n [26360000, 1333620535000],\n [26370016, 1333641602000],\n [26380000, 1333698076000],\n [26390003, 1333722924000],\n [26400000, 1333767843000],\n [26410001, 1333799891000],\n [26420000, 1333819060000],\n [26430001, 1333869652000],\n [26440004, 1333891179000],\n [26450008, 1333926182000],\n [26460000, 1333975402000],\n [26470000, 1334009892000],\n [26480001, 1334063752000],\n [26490000, 1334104979000],\n [26500001, 1334150649000],\n [26510003, 1334197725000],\n [26520006, 1334239625000],\n [26530002, 1334300793000],\n [26540002, 1334329381000],\n [26550000, 1334378884000],\n [26560004, 1334407100000],\n [26570003, 1334425369000],\n [26580001, 1334474696000],\n [26590000, 1334496269000],\n [26600000, 1334531353000],\n [26610000, 1334582684000],\n [26620000, 1334632119000],\n [26630000, 1334671685000],\n [26640003, 1334732050000],\n [26650003, 1334761449000],\n [26660000, 1334828133000],\n [26670003, 1334851309000],\n [26680000, 1334918853000],\n [26690002, 1334940306000],\n [26700001, 1334994930000],\n [26710001, 1335018257000],\n [26720000, 1335058796000],\n [26730002, 1335087232000],\n [26740000, 1335104499000],\n [26750003, 1335157043000],\n [26760002, 1335189740000],\n [26770000, 1335245891000],\n [26780000, 1335278145000],\n [26790000, 1335339602000],\n [26800003, 1335366431000],\n [26810000, 1335431515000],\n [26820000, 1335454402000],\n [26830000, 1335519587000],\n [26840000, 1335541861000],\n [26850001, 1335594938000],\n [26860000, 1335620982000],\n [26870001, 1335654336000],\n [26880000, 1335693317000],\n [26890000, 1335712127000],\n [26900000, 1335752226000],\n [26910002, 1335780274000],\n [26920001, 1335797031000],\n [26930002, 1335840978000],\n [26940001, 1335876413000],\n [26950004, 1335894469000],\n [26960010, 1335953947000],\n [26970002, 1335972896000],\n [26980002, 1336020059000],\n [26990000, 1336047444000],\n [27000004, 1336063912000],\n [27010000, 1336112956000],\n [27020000, 1336137514000],\n [27030000, 1336153320000],\n [27040002, 1336202325000],\n [27050001, 1336224411000],\n [27060000, 1336241566000],\n [27070003, 1336288292000],\n [27080002, 1336308446000],\n [27090002, 1336324327000],\n [27100000, 1336390568000],\n [27110005, 1336408761000],\n [27120004, 1336476729000],\n [27130001, 1336496528000],\n [27140000, 1336563051000],\n [27150003, 1336582429000],\n [27160002, 1336650098000],\n [27170000, 1336671286000],\n [27180001, 1336738136000],\n [27190008, 1336762649000],\n [27200001, 1336816258000],\n [27210000, 1336836124000],\n [27220001, 1336881015000],\n [27230000, 1336907644000],\n [27240001, 1336923102000],\n [27250000, 1336984269000],\n [27260001, 1337006982000],\n [27270000, 1337064011000],\n [27280003, 1337092299000],\n [27290000, 1337148869000],\n [27300001, 1337178811000],\n [27310000, 1337236012000],\n [27320001, 1337265681000],\n [27330002, 1337325114000],\n [27340000, 1337352785000],\n [27350000, 1337400123000],\n [27360001, 1337430078000],\n [27370001, 1337446930000],\n [27380000, 1337494574000],\n [27390000, 1337516826000],\n [27400000, 1337533460000],\n [27410003, 1337597039000],\n [27420000, 1337616114000],\n [27430001, 1337681477000],\n [27440000, 1337702199000],\n [27450003, 1337766827000],\n [27460001, 1337785580000],\n [27470001, 1337843145000],\n [27480000, 1337870282000],\n [27490002, 1337926687000],\n [27500006, 1337956060000],\n [27510001, 1338000450000],\n [27520002, 1338032806000],\n [27530003, 1338049617000],\n [27540001, 1338098559000],\n [27550000, 1338121850000],\n [27560001, 1338141443000],\n [27570002, 1338206892000],\n [27580003, 1338229454000],\n [27590000, 1338293963000],\n [27600005, 1338315960000],\n [27610005, 1338380867000],\n [27620000, 1338404423000],\n [27630000, 1338467376000],\n [27640002, 1338486580000],\n [27650000, 1338549472000],\n [27660001, 1338566618000],\n [27670000, 1338615989000],\n [27680000, 1338642024000],\n [27690003, 1338660669000],\n [27700001, 1338707484000],\n [27710004, 1338728007000],\n [27720000, 1338744173000],\n [27730002, 1338808696000],\n [27740000, 1338826837000],\n [27750002, 1338893483000],\n [27760003, 1338912375000],\n [27770000, 1338976276000],\n [27780000, 1338997211000],\n [27790000, 1339061938000],\n [27800005, 1339083281000],\n [27810001, 1339148802000],\n [27820001, 1339169278000],\n [27830003, 1339217169000],\n [27840004, 1339243775000],\n [27850000, 1339257949000],\n [27860001, 1339303042000],\n [27870003, 1339327478000],\n [27880001, 1339342682000],\n [27890001, 1339406105000],\n [27900002, 1339428305000],\n [27910001, 1339492536000],\n [27920000, 1339514526000],\n [27930000, 1339577898000],\n [27940000, 1339600802000],\n [27950001, 1339666418000],\n [27960000, 1339688855000],\n [27970001, 1339754701000],\n [27980000, 1339775979000],\n [27990002, 1339827471000],\n [28000001, 1339851999000],\n [28010000, 1339869886000],\n [28020003, 1339917808000],\n [28030000, 1339938744000],\n [28040001, 1339956022000],\n [28050000, 1340019221000],\n [28060000, 1340035977000],\n [28070001, 1340096245000],\n [28080001, 1340116922000],\n [28090006, 1340172198000],\n [28100000, 1340201271000],\n [28110000, 1340251067000],\n [28120000, 1340286408000],\n [28130005, 1340331666000],\n [28140001, 1340372317000],\n [28150001, 1340405911000],\n [28160007, 1340447121000],\n [28170001, 1340467578000],\n [28180005, 1340515988000],\n [28190000, 1340540304000],\n [28200000, 1340557451000],\n [28210001, 1340622994000],\n [28220000, 1340641537000],\n [28230002, 1340710729000],\n [28240002, 1340740385000],\n [28250002, 1340802755000],\n [28260001, 1340855684000],\n [28270001, 1340893485000],\n [28280000, 1340956017000],\n [28290001, 1340983084000],\n [28300006, 1341034045000],\n [28310002, 1341062165000],\n [28320002, 1341083841000],\n [28330003, 1341130422000],\n [28340002, 1341150295000],\n [28350001, 1341191796000],\n [28360003, 1341235505000],\n [28370002, 1341282818000],\n [28380002, 1341322738000],\n [28390004, 1341368707000],\n [28400002, 1341409081000],\n [28410002, 1341459614000],\n [28420000, 1341497096000],\n [28430000, 1341552647000],\n [28440001, 1341585199000],\n [28450003, 1341622267000],\n [28460000, 1341655958000],\n [28470002, 1341672783000],\n [28480004, 1341710315000],\n [28490009, 1341741193000],\n [28500000, 1341759278000],\n [28510001, 1341816710000],\n [28520002, 1341844218000],\n [28530012, 1341901072000],\n [28540000, 1341930582000],\n [28550001, 1341988592000],\n [28560004, 1342017454000],\n [28570000, 1342075828000],\n [28580001, 1342103967000],\n [28590000, 1342161081000],\n [28600003, 1342190253000],\n [28610001, 1342235717000],\n [28620001, 1342268239000],\n [28630001, 1342286166000],\n [28640010, 1342337530000],\n [28650001, 1342360857000],\n [28660003, 1342396987000],\n [28670000, 1342431172000],\n [28680003, 1342450217000],\n [28690000, 1342508733000],\n [28700000, 1342536379000],\n [28710001, 1342596428000],\n [28720002, 1342623394000],\n [28730002, 1342684054000],\n [28740000, 1342709478000],\n [28750000, 1342765943000],\n [28760006, 1342795449000],\n [28770000, 1342842784000],\n [28780001, 1342873829000],\n [28790000, 1342892175000],\n [28800000, 1342941622000],\n [28810000, 1342963500000],\n [28820001, 1342994775000],\n [28830003, 1343043964000],\n [28840001, 1343063586000],\n [28850006, 1343123005000],\n [28860001, 1343144148000],\n [28870002, 1343199642000],\n [28880003, 1343226067000],\n [28890000, 1343274080000],\n [28900001, 1343307927000],\n [28910004, 1343345931000],\n [28920000, 1343389753000],\n [28930005, 1343409584000],\n [28940001, 1343463465000],\n [28950000, 1343487606000],\n [28960005, 1343533031000],\n [28970002, 1343561406000],\n [28980000, 1343578531000],\n [28990001, 1343635911000],\n [29000001, 1343659416000],\n [29010000, 1343708503000],\n [29020001, 1343739760000],\n [29030000, 1343759280000],\n [29040002, 1343813698000],\n [29050000, 1343833676000],\n [29060003, 1343881064000],\n [29070000, 1343911244000],\n [29080000, 1343928684000],\n [29090003, 1343983187000],\n [29100001, 1344005495000],\n [29110001, 1344049127000],\n [29120000, 1344080978000],\n [29130003, 1344100077000],\n [29140000, 1344149355000],\n [29150001, 1344172653000],\n [29160001, 1344192347000],\n [29170000, 1344245752000],\n [29180000, 1344265213000],\n [29190004, 1344310025000],\n [29200000, 1344341702000],\n [29210000, 1344357427000],\n [29220000, 1344408602000],\n [29230005, 1344432797000],\n [29240000, 1344449877000],\n [29250004, 1344499896000],\n [29260003, 1344522133000],\n [29270000, 1344558985000],\n [29280000, 1344597380000],\n [29290000, 1344617865000],\n [29300000, 1344672749000],\n [29310000, 1344697892000],\n [29320002, 1344750005000],\n [29330001, 1344778553000],\n [29340000, 1344819126000],\n [29350002, 1344857294000],\n [29360000, 1344877526000],\n [29370005, 1344931746000],\n [29380004, 1344955704000],\n [29390002, 1344999794000],\n [29400003, 1345031254000],\n [29410001, 1345048813000],\n [29420002, 1345102616000],\n [29430001, 1345126849000],\n [29440002, 1345169851000],\n [29450000, 1345205034000],\n [29460000, 1345224004000],\n [29470001, 1345275931000],\n [29480001, 1345300341000],\n [29490003, 1345342277000],\n [29500000, 1345374875000],\n [29510000, 1345392844000],\n [29520002, 1345449113000],\n [29530000, 1345473512000],\n [29540001, 1345521340000],\n [29550002, 1345553473000],\n [29560000, 1345576673000],\n [29570000, 1345631832000],\n [29580000, 1345652011000],\n [29590009, 1345707406000],\n [29600004, 1345731272000],\n [29610003, 1345774886000],\n [29620005, 1345810760000],\n [29630001, 1345831478000],\n [29640002, 1345883956000],\n [29650000, 1345907135000],\n [29660000, 1345952305000],\n [29670001, 1345981178000],\n [29680000, 1345998619000],\n [29690000, 1346056048000],\n [29700001, 1346079034000],\n [29710002, 1346128089000],\n [29720003, 1346159030000],\n [29730009, 1346185433000],\n [29740005, 1346238445000],\n [29750001, 1346257670000],\n [29760000, 1346316933000],\n [29770000, 1346338800000],\n [29780005, 1346374925000],\n [29790011, 1346409902000],\n [29800001, 1346425111000],\n [29810000, 1346463735000],\n [29820002, 1346496963000],\n [29830001, 1346515159000],\n [29840003, 1346562643000],\n [29850001, 1346587804000],\n [29860004, 1346605220000],\n [29870002, 1346668826000],\n [29880000, 1346688952000],\n [29890004, 1346755226000],\n [29900002, 1346777475000],\n [29910000, 1346843623000],\n [29920003, 1346865832000],\n [29930005, 1346931902000],\n [29940001, 1346953696000],\n [29950000, 1347018301000],\n [29960000, 1347039567000],\n [29970000, 1347092333000],\n [29980002, 1347115246000],\n [29990001, 1347153602000],\n [30000002, 1347183917000],\n [30010000, 1347201084000],\n [30020000, 1347249061000],\n [30030003, 1347284093000],\n [30040001, 1347322819000],\n [30050000, 1347367541000],\n [30060000, 1347391244000],\n [30070002, 1347452321000],\n [30080000, 1347475900000],\n [30090000, 1347537862000],\n [30100002, 1347559116000],\n [30110002, 1347623392000],\n [30120002, 1347642254000],\n [30130001, 1347695632000],\n [30140002, 1347719027000],\n [30150005, 1347760228000],\n [30160005, 1347792525000],\n [30170000, 1347810529000],\n [30180003, 1347858045000],\n [30190000, 1347882687000],\n [30200005, 1347898127000],\n [30210001, 1347961234000],\n [30220000, 1347982321000],\n [30230000, 1348046296000],\n [30240009, 1348068337000],\n [30250002, 1348133170000],\n [30260000, 1348155473000],\n [30270002, 1348221215000],\n [30280000, 1348242526000],\n [30290000, 1348295069000],\n [30300000, 1348320609000],\n [30310002, 1348344515000],\n [30320004, 1348388630000],\n [30330002, 1348407709000],\n [30340000, 1348445478000],\n [30350001, 1348491432000],\n [30360002, 1348526881000],\n [30370003, 1348578382000],\n [30380006, 1348619988000],\n [30390004, 1348666157000],\n [30400001, 1348717374000],\n [30410000, 1348754288000],\n [30420001, 1348810599000],\n [30430000, 1348842518000],\n [30440001, 1348887881000],\n [30450004, 1348920258000],\n [30460001, 1348937804000],\n [30470006, 1348984917000],\n [30480001, 1349005416000],\n [30490000, 1349017720000],\n [30500001, 1349067895000],\n [30510001, 1349098051000],\n [30520000, 1349128966000],\n [30530001, 1349180813000],\n [30540000, 1349200374000],\n [30550001, 1349262605000],\n [30560004, 1349279737000],\n [30570000, 1349341873000],\n [30580001, 1349362683000],\n [30590004, 1349418047000],\n [30600003, 1349446021000],\n [30610002, 1349478102000],\n [30620000, 1349516772000],\n [30630002, 1349536086000],\n [30640001, 1349582802000],\n [30650005, 1349612047000],\n [30660000, 1349630540000],\n [30670000, 1349681778000],\n [30680001, 1349702931000],\n [30690005, 1349729020000],\n [30700000, 1349784465000],\n [30710000, 1349800542000],\n [30720005, 1349864590000],\n [30730002, 1349883197000],\n [30740007, 1349948520000],\n [30750000, 1349970840000],\n [30760001, 1350037993000],\n [30770000, 1350059990000],\n [30780006, 1350114426000],\n [30790001, 1350137646000],\n [30800000, 1350176862000],\n [30810002, 1350207937000],\n [30820001, 1350225907000],\n [30830004, 1350283400000],\n [30840000, 1350311590000],\n [30850000, 1350373544000],\n [30860000, 1350400104000],\n [30870000, 1350464861000],\n [30880001, 1350488021000],\n [30890002, 1350554413000],\n [30900000, 1350576170000],\n [30910002, 1350641788000],\n [30920001, 1350662648000],\n [30930000, 1350716905000],\n [30940004, 1350741541000],\n [30950000, 1350779641000],\n [30960001, 1350813264000],\n [30970000, 1350830966000],\n [30980004, 1350891403000],\n [30990001, 1350916993000],\n [31000000, 1350976045000],\n [31010001, 1351003096000],\n [31020001, 1351065860000],\n [31030002, 1351091655000],\n [31040002, 1351158698000],\n [31050001, 1351181008000],\n [31060001, 1351248541000],\n [31070000, 1351270528000],\n [31080000, 1351326009000],\n [31090001, 1351348327000],\n [31100000, 1351391151000],\n [31110001, 1351419833000],\n [31120000, 1351436406000],\n [31130002, 1351494007000],\n [31140000, 1351520318000],\n [31150001, 1351571494000],\n [31160000, 1351603993000],\n [31170001, 1351616879000],\n [31180001, 1351672701000],\n [31190004, 1351688915000],\n [31200002, 1351697284000],\n [31210001, 1351755761000],\n [31220000, 1351781594000],\n [31230001, 1351844251000],\n [31240000, 1351868361000],\n [31250000, 1351915604000],\n [31260002, 1351945557000],\n [31270000, 1351963493000],\n [31280001, 1352014755000],\n [31290000, 1352035437000],\n [31300001, 1352071439000],\n [31310002, 1352119911000],\n [31320000, 1352157772000],\n [31330000, 1352207601000],\n [31340000, 1352252867000],\n [31350001, 1352295460000],\n [31360003, 1352343034000],\n [31370001, 1352382698000],\n [31380000, 1352436799000],\n [31390001, 1352472324000],\n [31400000, 1352520774000],\n [31410000, 1352551559000],\n [31420003, 1352568588000],\n [31430001, 1352613659000],\n [31440001, 1352633614000],\n [31450005, 1352645308000],\n [31460008, 1352691678000],\n [31470001, 1352727836000],\n [31480000, 1352780469000],\n [31490000, 1352816844000],\n [31500003, 1352880609000],\n [31510001, 1352907694000],\n [31520001, 1352977785000],\n [31530002, 1353005580000],\n [31540000, 1353072123000],\n [31550001, 1353121500000],\n [31560003, 1353155121000],\n [31570001, 1353175532000],\n [31580000, 1353226769000],\n [31590001, 1353248098000],\n [31600002, 1353306006000],\n [31610002, 1353337613000],\n [31620001, 1353405329000],\n [31630003, 1353426802000],\n [31640003, 1353492674000],\n [31650001, 1353513109000],\n [31660002, 1353579990000],\n [31670000, 1353600377000],\n [31680001, 1353655160000],\n [31690000, 1353680325000],\n [31700000, 1353724383000],\n [31710001, 1353759163000],\n [31720002, 1353779334000],\n [31730001, 1353830614000],\n [31740000, 1353852339000],\n [31750001, 1353907684000],\n [31760001, 1353941076000],\n [31770000, 1354006974000],\n [31780001, 1354032634000],\n [31790002, 1354102566000],\n [31800000, 1354126363000],\n [31810000, 1354193232000],\n [31820003, 1354241685000],\n [31830000, 1354284395000],\n [31840009, 1354331929000],\n [31850000, 1354364870000],\n [31860001, 1354387817000],\n [31870001, 1354438127000],\n [31880001, 1354459257000],\n [31890002, 1354519928000],\n [31900002, 1354547493000],\n [31910000, 1354615038000],\n [31920001, 1354639209000],\n [31930000, 1354708282000],\n [31940000, 1354745934000],\n [31950001, 1354800989000],\n [31960001, 1354860621000],\n [31970001, 1354892723000],\n [31980000, 1354946804000],\n [31990000, 1354973952000],\n [32000000, 1355011859000],\n [32010004, 1355047009000],\n [32020000, 1355065908000],\n [32030000, 1355130015000],\n [32040001, 1355154706000],\n [32050002, 1355224028000],\n [32060000, 1355249813000],\n [32070000, 1355315780000],\n [32080000, 1355362193000],\n [32090000, 1355407121000],\n [32100000, 1355469050000],\n [32110000, 1355498162000],\n [32120002, 1355553225000],\n [32130000, 1355579716000],\n [32140000, 1355619367000],\n [32150000, 1355653645000],\n [32160000, 1355672606000],\n [32170000, 1355737957000],\n [32180000, 1355760599000],\n [32190000, 1355826598000],\n [32200000, 1355849812000],\n [32210003, 1355916669000],\n [32220001, 1355935338000],\n [32230000, 1355999504000],\n [32240000, 1356019847000],\n [32250000, 1356084601000],\n [32260002, 1356106676000],\n [32270005, 1356162133000],\n [32280001, 1356186797000],\n [32290004, 1356230230000],\n [32300001, 1356262480000],\n [32310002, 1356278457000],\n [32320003, 1356322817000],\n [32330004, 1356347954000],\n [32340000, 1356361566000],\n [32350000, 1356398407000],\n [32360000, 1356432951000],\n [32370002, 1356448195000],\n [32380000, 1356496994000],\n [32390009, 1356528420000],\n [32400001, 1356560459000],\n [32410001, 1356606089000],\n [32420003, 1356625487000],\n [32430005, 1356679025000],\n [32440001, 1356704600000],\n [32450002, 1356747556000],\n [32460001, 1356782493000],\n [32470002, 1356804577000],\n [32480005, 1356857553000],\n [32490000, 1356879703000],\n [32500000, 1356921717000],\n [32510002, 1356949912000],\n [32520001, 1356965991000],\n [32530000, 1356971788000],\n [32540000, 1357005717000],\n [32550001, 1357028963000],\n [32560008, 1357047482000],\n [32570000, 1357065837000],\n [32580000, 1357116945000],\n [32590002, 1357138715000],\n [32600001, 1357183055000],\n [32610000, 1357212910000],\n [32620006, 1357230509000],\n [32630001, 1357284201000],\n [32640000, 1357308794000],\n [32650010, 1357346583000],\n [32660000, 1357382482000],\n [32670004, 1357401362000],\n [32680001, 1357451550000],\n [32690000, 1357476017000],\n [32700000, 1357494075000],\n [32710003, 1357552561000],\n [32720000, 1357573049000],\n [32730002, 1357636115000],\n [32740001, 1357658985000],\n [32750000, 1357722615000],\n [32760001, 1357746111000],\n [32770002, 1357812581000],\n [32780001, 1357835793000],\n [32790003, 1357903657000],\n [32800002, 1357926407000],\n [32810000, 1357982969000],\n [32820005, 1358004671000],\n [32830003, 1358054726000],\n [32840001, 1358080998000],\n [32850000, 1358100823000],\n [32860001, 1358149594000],\n [32870001, 1358169325000],\n [32880003, 1358199284000],\n [32890000, 1358255481000],\n [32900000, 1358306245000],\n [32910001, 1358345546000],\n [32920000, 1358407151000],\n [32930000, 1358436073000],\n [32940001, 1358502920000],\n [32950000, 1358526289000],\n [32960001, 1358582688000],\n [32970001, 1358606161000],\n [32980002, 1358649874000],\n [32990001, 1358678827000],\n [33000005, 1358695809000],\n [33010004, 1358759419000],\n [33020001, 1358782613000],\n [33030002, 1358847606000],\n [33040001, 1358870521000],\n [33050001, 1358936101000],\n [33060000, 1358958980000],\n [33070001, 1359025425000],\n [33080001, 1359048058000],\n [33090003, 1359113713000],\n [33100002, 1359136635000],\n [33110001, 1359190541000],\n [33120000, 1359212401000],\n [33130002, 1359257152000],\n [33140001, 1359285220000],\n [33150003, 1359301502000],\n [33160000, 1359364171000],\n [33170002, 1359386594000],\n [33180003, 1359450774000],\n [33190001, 1359473743000],\n [33200001, 1359535857000],\n [33210003, 1359558011000],\n [33220000, 1359608548000],\n [33230000, 1359638083000],\n [33240001, 1359659753000],\n [33250001, 1359717631000],\n [33260000, 1359736486000],\n [33270000, 1359787846000],\n [33280000, 1359810823000],\n [33290005, 1359828486000],\n [33300002, 1359875996000],\n [33310004, 1359895908000],\n [33320002, 1359912237000],\n [33330000, 1359972666000],\n [33340003, 1359991723000],\n [33350000, 1360051414000],\n [33360000, 1360075785000],\n [33370000, 1360129999000],\n [33380004, 1360158180000],\n [33390002, 1360202106000],\n [33400000, 1360240975000],\n [33410000, 1360266923000],\n [33420002, 1360324787000],\n [33430000, 1360345066000],\n [33440001, 1360398665000],\n [33450000, 1360420991000],\n [33460000, 1360463006000],\n [33470000, 1360495216000],\n [33480000, 1360512536000],\n [33490000, 1360562472000],\n [33500002, 1360586674000],\n [33510002, 1360607159000],\n [33520004, 1360668303000],\n [33530001, 1360689941000],\n [33540000, 1360752747000],\n [33550000, 1360769416000],\n [33560000, 1360811670000],\n [33570000, 1360840391000],\n [33580000, 1360852612000],\n [33590000, 1360879818000],\n [33600000, 1360929139000],\n [33610001, 1360947954000],\n [33620000, 1361001599000],\n [33630002, 1361024996000],\n [33640001, 1361066180000],\n [33650000, 1361096699000],\n [33660002, 1361114495000],\n [33670001, 1361172685000],\n [33680000, 1361198026000],\n [33690004, 1361249539000],\n [33700001, 1361281162000],\n [33710000, 1361325351000],\n [33720001, 1361365549000],\n [33730000, 1361406340000],\n [33740003, 1361451235000],\n [33750002, 1361481535000],\n [33760003, 1361531344000],\n [33770001, 1361546410000],\n [33780000, 1361594376000],\n [33790003, 1361623143000],\n [33800001, 1361643129000],\n [33810002, 1361692896000],\n [33820003, 1361714116000],\n [33830002, 1361759930000],\n [33840000, 1361798429000],\n [33850001, 1361848052000],\n [33860000, 1361885684000],\n [33870001, 1361934021000],\n [33880000, 1361970745000],\n [33890001, 1362013181000],\n [33900001, 1362056052000],\n [33910000, 1362083062000],\n [33920001, 1362138442000],\n [33930000, 1362158543000],\n [33940002, 1362211924000],\n [33950000, 1362233946000],\n [33960003, 1362268771000],\n [33970000, 1362302007000],\n [33980005, 1362320066000],\n [33990000, 1362368927000],\n [34000001, 1362404229000],\n [34010001, 1362451090000],\n [34020001, 1362489362000],\n [34030001, 1362533721000],\n [34040000, 1362573912000],\n [34050000, 1362608923000],\n [34060000, 1362657771000],\n [34070000, 1362680849000],\n [34080000, 1362740206000],\n [34090001, 1362758897000],\n [34100000, 1362807733000],\n [34110001, 1362831210000],\n [34120000, 1362843477000],\n [34130001, 1362883265000],\n [34140000, 1362908291000],\n [34150000, 1362925095000],\n [34160000, 1362966745000],\n [34170000, 1363003879000],\n [34180000, 1363022619000],\n [34190001, 1363082209000],\n [34200003, 1363102242000],\n [34210001, 1363158027000],\n [34220006, 1363183022000],\n [34230000, 1363214377000],\n [34240000, 1363259970000],\n [34250003, 1363275997000],\n [34260003, 1363332164000],\n [34270001, 1363356684000],\n [34280000, 1363392926000],\n [34290000, 1363426876000],\n [34300000, 1363446114000],\n [34310004, 1363489717000],\n [34320004, 1363517532000],\n [34330000, 1363533647000],\n [34340000, 1363588591000],\n [34350001, 1363613184000],\n [34360004, 1363646755000],\n [34370000, 1363693573000],\n [34380000, 1363712786000],\n [34390000, 1363764801000],\n [34400004, 1363787051000],\n [34410006, 1363823001000],\n [34420000, 1363866102000],\n [34430000, 1363886655000],\n [34440002, 1363945291000],\n [34450006, 1363966020000],\n [34460000, 1364014561000],\n [34470001, 1364041700000],\n [34480001, 1364060263000],\n [34490002, 1364110667000],\n [34500002, 1364132150000],\n [34510000, 1364158715000],\n [34520002, 1364207776000],\n [34530000, 1364227606000],\n [34540000, 1364282648000],\n [34550001, 1364307643000],\n [34560005, 1364354029000],\n [34570000, 1364386780000],\n [34580001, 1364406700000],\n [34590000, 1364460535000],\n [34600002, 1364482170000],\n [34610000, 1364530121000],\n [34620000, 1364560514000],\n [34630002, 1364580436000],\n [34640003, 1364631885000],\n [34650002, 1364654125000],\n [34660000, 1364695210000],\n [34670001, 1364724468000],\n [34680000, 1364741581000],\n [34690004, 1364774365000],\n [34700001, 1364812449000],\n [34710000, 1364829362000],\n [34720004, 1364879934000],\n [34730002, 1364907299000],\n [34740001, 1364927146000],\n [34750001, 1364980183000],\n [34760003, 1365000659000],\n [34770001, 1365045313000],\n [34780000, 1365076504000],\n [34790003, 1365094373000],\n [34800002, 1365149517000],\n [34810000, 1365172056000],\n [34820000, 1365213235000],\n [34830004, 1365242665000],\n [34840000, 1365259978000],\n [34850000, 1365298274000],\n [34860003, 1365327124000],\n [34870003, 1365345164000],\n [34880002, 1365396764000],\n [34890001, 1365429032000],\n [34900003, 1365480402000],\n [34910002, 1365515898000],\n [34920000, 1365571064000],\n [34930001, 1365604805000],\n [34940003, 1365667660000],\n [34950000, 1365694831000],\n [34960000, 1365763981000],\n [34970002, 1365788159000],\n [34980003, 1365844846000],\n [34990002, 1365866098000],\n [35000000, 1365912680000],\n [35010000, 1365938418000],\n [35020009, 1365954749000],\n [35030002, 1366020003000],\n [35040003, 1366041754000],\n [35050001, 1366111126000],\n [35060002, 1366136702000],\n [35070001, 1366202459000],\n [35080006, 1366248627000],\n [35090000, 1366297213000],\n [35100000, 1366362163000],\n [35110001, 1366386116000],\n [35120000, 1366440216000],\n [35130002, 1366464803000],\n [35140002, 1366496101000],\n [35150001, 1366533569000],\n [35160002, 1366552354000],\n [35170000, 1366599837000],\n [35180003, 1366638967000],\n [35190001, 1366696124000],\n [35200005, 1366727915000],\n [35210001, 1366789728000],\n [35220000, 1366814996000],\n [35230001, 1366877875000],\n [35240000, 1366902753000],\n [35250004, 1366967102000],\n [35260002, 1366989933000],\n [35270003, 1367042683000],\n [35280000, 1367069376000],\n [35290001, 1367097857000],\n [35300001, 1367140787000],\n [35310002, 1367160512000],\n [35320000, 1367203401000],\n [35330000, 1367231060000],\n [35340004, 1367247611000],\n [35350000, 1367298029000],\n [35360000, 1367326900000],\n [35370000, 1367340896000],\n [35380001, 1367401377000],\n [35390000, 1367420920000],\n [35400001, 1367474131000],\n [35410001, 1367503508000],\n [35420002, 1367547259000],\n [35430003, 1367582146000],\n [35440000, 1367600557000],\n [35450000, 1367653215000],\n [35460003, 1367676318000],\n [35470003, 1367702380000],\n [35480002, 1367743839000],\n [35490003, 1367763454000],\n [35500002, 1367799672000],\n [35510000, 1367831949000],\n [35520007, 1367849485000],\n [35530000, 1367897825000],\n [35540001, 1367935595000],\n [35550001, 1367994106000],\n [35560001, 1368024203000],\n [35570006, 1368086266000],\n [35580000, 1368111893000],\n [35590000, 1368173676000],\n [35600001, 1368198005000],\n [35610001, 1368243823000],\n [35620002, 1368272106000],\n [35630000, 1368288754000],\n [35640000, 1368334385000],\n [35650002, 1368358082000],\n [35660002, 1368372869000],\n [35670000, 1368435347000],\n [35680000, 1368457871000],\n [35690001, 1368520421000],\n [35700000, 1368544432000],\n [35710002, 1368609152000],\n [35720000, 1368632844000],\n [35730001, 1368699096000],\n [35740000, 1368720560000],\n [35750002, 1368788434000],\n [35760000, 1368809626000],\n [35770004, 1368864506000],\n [35780000, 1368887525000],\n [35790002, 1368928451000],\n [35800006, 1368957247000],\n [35810000, 1368974492000],\n [35820000, 1369027081000],\n [35830000, 1369058682000],\n [35840001, 1369108781000],\n [35850000, 1369144659000],\n [35860000, 1369196731000],\n [35870000, 1369231420000],\n [35880000, 1369284640000],\n [35890000, 1369317701000],\n [35900000, 1369365115000],\n [35910000, 1369403469000],\n [35920002, 1369445821000],\n [35930000, 1369480312000],\n [35940001, 1369498786000],\n [35950000, 1369547395000],\n [35960005, 1369570839000],\n [35970003, 1369588480000],\n [35980000, 1369654650000],\n [35990004, 1369677301000],\n [36000003, 1369744096000],\n [36010001, 1369773124000],\n [36020000, 1369832322000],\n [36030000, 1369892728000],\n [36040000, 1369923001000],\n [36050003, 1369976757000],\n [36060001, 1370008172000],\n [36070000, 1370034071000],\n [36080002, 1370078311000],\n [36090004, 1370097755000],\n [36100000, 1370137880000],\n [36110001, 1370165367000],\n [36120000, 1370182475000],\n [36130002, 1370227262000],\n [36140000, 1370266045000],\n [36150000, 1370305401000],\n [36160001, 1370352160000],\n [36170004, 1370397133000],\n [36180000, 1370439727000],\n [36190003, 1370485761000],\n [36200001, 1370525228000],\n [36210000, 1370569914000],\n [36220004, 1370611516000],\n [36230009, 1370648909000],\n [36240001, 1370686818000],\n [36250000, 1370704462000],\n [36260003, 1370745990000],\n [36270000, 1370773068000],\n [36280001, 1370789150000],\n [36290000, 1370838426000],\n [36300001, 1370871222000],\n [36310000, 1370913442000],\n [36320001, 1370956581000],\n [36330002, 1370997170000],\n [36340001, 1371041329000],\n [36350000, 1371066729000],\n [36360003, 1371126696000],\n [36370000, 1371154621000],\n [36380001, 1371213332000],\n [36390002, 1371236016000],\n [36400000, 1371287069000],\n [36410000, 1371308204000],\n [36420000, 1371349710000],\n [36430002, 1371378306000],\n [36440000, 1371394756000],\n [36450001, 1371450733000],\n [36460000, 1371479351000],\n [36470001, 1371530182000],\n [36480000, 1371563379000],\n [36490002, 1371606919000],\n [36500002, 1371647601000],\n [36510001, 1371688831000],\n [36520002, 1371733114000],\n [36530000, 1371767609000],\n [36540000, 1371818399000],\n [36550001, 1371842736000],\n [36560002, 1371892516000],\n [36570002, 1371913541000],\n [36580000, 1371957173000],\n [36590006, 1371984267000],\n [36600001, 1372000119000],\n [36610000, 1372059277000],\n [36620000, 1372085763000],\n [36630000, 1372147271000],\n [36640002, 1372172906000],\n [36650000, 1372233724000],\n [36660002, 1372258397000],\n [36670003, 1372316050000],\n [36680000, 1372344310000],\n [36690003, 1372403092000],\n [36700000, 1372430704000],\n [36710003, 1372478206000],\n [36720001, 1372508088000],\n [36730001, 1372526097000],\n [36740003, 1372574807000],\n [36750000, 1372597137000],\n [36760000, 1372615663000],\n [36770000, 1372678627000],\n [36780004, 1372700829000],\n [36790002, 1372766402000],\n [36800001, 1372792926000],\n [36810000, 1372852918000],\n [36820003, 1372874800000],\n [36830003, 1372937528000],\n [36840000, 1372958129000],\n [36850001, 1373022700000],\n [36860000, 1373043138000],\n [36870000, 1373097021000],\n [36880006, 1373120418000],\n [36890005, 1373144993000],\n [36900000, 1373183895000],\n [36910000, 1373202657000],\n [36920000, 1373218741000],\n [36930000, 1373281954000],\n [36940000, 1373301604000],\n [36950000, 1373367314000],\n [36960000, 1373388217000],\n [36970005, 1373453035000],\n [36980000, 1373474500000],\n [36990000, 1373540055000],\n [37000001, 1373563115000],\n [37010000, 1373628900000],\n [37020000, 1373650645000],\n [37030002, 1373704437000],\n [37040000, 1373727114000],\n [37050006, 1373771545000],\n [37060005, 1373802717000],\n [37070000, 1373821369000],\n [37080001, 1373870908000],\n [37090000, 1373892934000],\n [37100000, 1373911492000],\n [37110003, 1373974641000],\n [37120000, 1373997077000],\n [37130001, 1374061966000],\n [37140002, 1374087619000],\n [37150001, 1374148800000],\n [37160008, 1374174217000],\n [37170000, 1374234991000],\n [37180001, 1374255688000],\n [37190001, 1374309357000],\n [37200002, 1374331853000],\n [37210001, 1374375180000],\n [37220000, 1374404348000],\n [37230002, 1374420626000],\n [37240000, 1374477526000],\n [37250000, 1374502909000],\n [37260001, 1374552567000],\n [37270000, 1374585225000],\n [37280003, 1374626401000],\n [37290000, 1374667952000],\n [37300001, 1374693759000],\n [37310001, 1374750480000],\n [37320000, 1374772297000],\n [37330002, 1374831692000],\n [37340000, 1374854036000],\n [37350001, 1374908418000],\n [37360004, 1374935059000],\n [37370001, 1374979887000],\n [37380000, 1375011527000],\n [37390002, 1375029597000],\n [37400002, 1375087939000],\n [37410000, 1375109998000],\n [37420001, 1375161830000],\n [37430001, 1375191923000],\n [37440000, 1375232946000],\n [37450000, 1375272094000],\n [37460001, 1375287532000],\n [37470000, 1375341379000],\n [37480000, 1375365927000],\n [37490000, 1375404444000],\n [37500003, 1375443179000],\n [37510001, 1375461256000],\n [37520002, 1375513602000],\n [37530002, 1375538515000],\n [37540002, 1375575106000],\n [37550004, 1375610354000],\n [37560000, 1375628282000],\n [37570002, 1375675631000],\n [37580000, 1375707251000],\n [37590001, 1375727391000],\n [37600001, 1375781193000],\n [37610002, 1375801243000],\n [37620001, 1375848211000],\n [37630000, 1375879256000],\n [37640005, 1375896679000],\n [37650000, 1375950116000],\n [37660002, 1375972012000],\n [37670001, 1376008998000],\n [37680001, 1376045664000],\n [37690006, 1376064238000],\n [37700002, 1376117367000],\n [37710001, 1376144696000],\n [37720005, 1376191150000],\n [37730000, 1376223380000],\n [37740001, 1376249258000],\n [37750001, 1376302974000],\n [37760000, 1376324962000],\n [37770003, 1376379604000],\n [37780001, 1376404591000],\n [37790001, 1376451395000],\n [37800001, 1376483821000],\n [37810000, 1376505856000],\n [37820002, 1376557229000],\n [37830000, 1376578917000],\n [37840000, 1376625963000],\n [37850001, 1376656561000],\n [37860001, 1376677251000],\n [37870002, 1376728731000],\n [37880000, 1376751974000],\n [37890004, 1376800729000],\n [37900000, 1376829027000],\n [37910000, 1376849565000],\n [37920000, 1376905760000],\n [37930000, 1376925891000],\n [37940000, 1376979900000],\n [37950000, 1377007345000],\n [37960000, 1377052827000],\n [37970001, 1377088208000],\n [37980000, 1377110956000],\n [37990006, 1377166181000],\n [38000001, 1377186057000],\n [38010000, 1377239944000],\n [38020002, 1377266798000],\n [38030000, 1377307287000],\n [38040001, 1377341505000],\n [38050003, 1377361200000],\n [38060000, 1377412670000],\n [38070005, 1377437016000],\n [38080003, 1377474053000],\n [38090003, 1377518447000],\n [38100002, 1377540322000],\n [38110001, 1377600153000],\n [38120001, 1377621114000],\n [38130000, 1377681632000],\n [38140001, 1377704485000],\n [38150000, 1377763375000],\n [38160003, 1377788184000],\n [38170002, 1377842353000],\n [38180005, 1377871027000],\n [38190000, 1377900233000],\n [38200002, 1377939649000],\n [38210001, 1377958601000],\n [38220003, 1377986125000],\n [38230001, 1378025318000],\n [38240002, 1378044932000],\n [38250000, 1378095298000],\n [38260000, 1378129838000],\n [38270000, 1378181543000],\n [38280001, 1378217043000],\n [38290000, 1378270350000],\n [38300000, 1378303716000],\n [38310001, 1378360455000],\n [38320001, 1378392908000],\n [38330000, 1378456687000],\n [38340001, 1378481391000],\n [38350000, 1378535921000],\n [38360001, 1378562601000],\n [38370002, 1378601699000],\n [38380000, 1378634402000],\n [38390000, 1378652499000],\n [38400000, 1378710554000],\n [38410000, 1378737840000],\n [38420003, 1378797520000],\n [38430001, 1378825252000],\n [38440001, 1378888982000],\n [38450002, 1378913608000],\n [38460000, 1378979577000],\n [38470000, 1379002251000],\n [38480001, 1379069153000],\n [38490000, 1379090230000],\n [38500000, 1379146714000],\n [38510001, 1379170837000],\n [38520001, 1379219093000],\n [38530001, 1379246161000],\n [38540000, 1379264109000],\n [38550000, 1379312723000],\n [38560000, 1379335204000],\n [38570000, 1379356798000],\n [38580001, 1379421630000],\n [38590000, 1379465000000],\n [38600002, 1379512079000],\n [38610000, 1379566247000],\n [38620004, 1379600141000],\n [38630002, 1379656975000],\n [38640002, 1379688418000],\n [38650003, 1379740660000],\n [38660001, 1379770479000],\n [38670001, 1379815814000],\n [38680004, 1379850237000],\n [38690001, 1379870995000],\n [38700002, 1379925107000],\n [38710000, 1379947170000],\n [38720001, 1380011108000],\n [38730002, 1380036696000],\n [38740000, 1380106543000],\n [38750001, 1380137694000],\n [38760000, 1380202580000],\n [38770001, 1380268313000],\n [38780000, 1380297975000],\n [38790001, 1380358738000],\n [38800000, 1380382146000],\n [38810000, 1380435524000],\n [38820001, 1380460498000],\n [38830002, 1380504622000],\n [38840001, 1380548581000],\n [38850003, 1380599636000],\n [38860001, 1380636128000],\n [38870000, 1380695813000],\n [38880000, 1380726816000],\n [38890000, 1380793282000],\n [38900002, 1380817153000],\n [38910005, 1380886252000],\n [38920002, 1380911028000],\n [38930001, 1380966632000],\n [38940004, 1380987605000],\n [38950000, 1381036757000],\n [38960001, 1381062521000],\n [38970001, 1381083578000],\n [38980000, 1381147999000],\n [38990002, 1381183596000],\n [39000000, 1381238718000],\n [39010000, 1381289418000],\n [39020001, 1381327969000],\n [39030001, 1381378325000],\n [39040001, 1381414484000],\n [39050002, 1381473072000],\n [39060001, 1381503610000],\n [39070000, 1381557108000],\n [39080001, 1381587652000],\n [39090002, 1381638859000],\n [39100005, 1381670136000],\n [39110001, 1381713463000],\n [39120002, 1381750602000],\n [39130000, 1381771266000],\n [39140000, 1381840441000],\n [39150004, 1381886453000],\n [39160000, 1381928937000],\n [39170001, 1381987485000],\n [39180001, 1382023386000],\n [39190000, 1382094081000],\n [39200000, 1382118886000],\n [39210002, 1382176669000],\n [39220000, 1382198409000],\n [39230000, 1382251062000],\n [39240000, 1382275083000],\n [39250000, 1382319937000],\n [39260000, 1382363621000],\n [39270003, 1382424605000],\n [39280000, 1382454868000],\n [39290002, 1382522396000],\n [39300000, 1382545319000],\n [39310000, 1382614356000],\n [39320001, 1382636773000],\n [39330000, 1382702066000],\n [39340001, 1382723317000],\n [39350001, 1382777459000],\n [39360000, 1382800070000],\n [39370003, 1382851982000],\n [39380000, 1382879757000],\n [39390004, 1382933535000],\n [39400001, 1382971415000],\n [39410000, 1383039852000],\n [39420000, 1383064852000],\n [39430003, 1383134247000],\n [39440000, 1383150130000],\n [39450003, 1383209088000],\n [39460004, 1383226803000],\n [39470001, 1383239461000],\n [39480002, 1383305804000],\n [39490000, 1383330874000],\n [39500003, 1383389307000],\n [39510002, 1383410824000],\n [39520000, 1383465663000],\n [39530001, 1383488952000],\n [39540004, 1383536354000],\n [39550001, 1383566404000],\n [39560000, 1383587943000],\n [39570001, 1383655387000],\n [39580000, 1383709273000],\n [39590001, 1383749270000],\n [39600000, 1383817042000],\n [39610004, 1383844566000],\n [39620000, 1383914206000],\n [39630002, 1383958908000],\n [39640009, 1383999261000],\n [39650000, 1384025481000],\n [39660000, 1384074693000],\n [39670001, 1384094814000],\n [39680002, 1384144502000],\n [39690000, 1384176297000],\n [39700000, 1384206383000],\n [39710000, 1384264473000],\n [39720000, 1384332176000],\n [39730000, 1384362320000],\n [39740000, 1384434643000],\n [39750002, 1384497066000],\n [39760001, 1384530859000],\n [39770001, 1384591769000],\n [39780000, 1384616741000],\n [39790005, 1384670466000],\n [39800001, 1384695642000],\n [39810003, 1384750781000],\n [39820000, 1384787697000],\n [39830002, 1384861205000],\n [39840001, 1384917103000],\n [39850000, 1384959607000],\n [39860000, 1385027424000],\n [39870001, 1385053575000],\n [39880001, 1385122298000],\n [39890001, 1385152257000],\n [39900001, 1385205088000],\n [39910001, 1385227283000],\n [39920001, 1385282720000],\n [39930000, 1385304834000],\n [39940006, 1385370821000],\n [39950002, 1385397805000],\n [39960001, 1385469875000],\n [39970002, 1385532270000],\n [39980002, 1385566841000],\n [39990003, 1385639730000],\n [40000001, 1385692970000],\n [40010000, 1385736566000],\n [40020004, 1385795632000],\n [40030000, 1385823366000],\n [40040004, 1385872369000],\n [40050002, 1385901651000],\n [40060000, 1385946562000],\n [40070001, 1385995108000],\n [40080000, 1386063717000],\n [40090003, 1386093291000],\n [40100004, 1386163639000],\n [40110001, 1386226926000],\n [40120001, 1386258746000],\n [40130000, 1386331000000],\n [40140001, 1386375148000],\n [40150000, 1386418743000],\n [40160001, 1386444120000],\n [40170000, 1386494429000],\n [40180000, 1386515214000],\n [40190000, 1386583554000],\n [40200002, 1386610726000],\n [40210001, 1386680661000],\n [40220000, 1386740668000],\n [40230000, 1386775701000],\n [40240001, 1386847675000],\n [40250002, 1386895894000],\n [40260002, 1386944786000],\n [40270006, 1387000670000],\n [40280000, 1387031121000],\n [40290000, 1387082024000],\n [40300001, 1387111458000],\n [40310000, 1387155881000],\n [40320002, 1387203263000],\n [40330000, 1387269619000],\n [40340001, 1387298063000],\n [40350000, 1387367915000],\n [40360000, 1387414556000],\n [40370000, 1387461528000],\n [40380000, 1387517028000],\n [40390000, 1387551023000],\n [40400002, 1387605448000],\n [40410001, 1387635538000],\n [40420002, 1387682554000],\n [40430001, 1387715737000],\n [40440001, 1387743208000],\n [40450000, 1387793441000],\n [40460000, 1387812170000],\n [40470002, 1387863887000],\n [40480000, 1387891948000],\n [40490001, 1387906185000],\n [40500004, 1387960133000],\n [40510000, 1387980328000],\n [40520000, 1388012402000],\n [40530000, 1388059806000],\n [40540002, 1388080796000],\n [40550001, 1388139588000],\n [40560000, 1388160731000],\n [40570001, 1388213456000],\n [40580001, 1388240301000],\n [40590000, 1388286861000],\n [40600001, 1388321884000],\n [40610002, 1388366148000],\n [40620000, 1388406437000],\n [40630001, 1388432055000],\n [40640003, 1388479513000],\n [40650000, 1388500080000],\n [40660000, 1388506206000],\n [40670000, 1388541772000],\n [40680000, 1388566722000],\n [40690000, 1388586411000],\n [40700002, 1388631705000],\n [40710000, 1388666584000],\n [40720000, 1388697954000],\n [40730004, 1388746402000],\n [40740002, 1388767513000],\n [40750000, 1388821955000],\n [40760000, 1388845971000],\n [40770000, 1388891736000],\n [40780002, 1388920808000],\n [40790000, 1388938832000],\n [40800000, 1388999657000],\n [40810001, 1389023069000],\n [40820000, 1389086558000],\n [40830004, 1389111542000],\n [40840002, 1389179422000],\n [40850001, 1389204596000],\n [40860002, 1389271476000],\n [40870001, 1389314701000],\n [40880001, 1389362164000],\n [40890005, 1389408217000],\n [40900003, 1389443723000],\n [40910000, 1389466321000],\n [40920000, 1389520043000],\n [40930000, 1389541663000],\n [40940001, 1389595713000],\n [40950000, 1389619982000],\n [40960001, 1389670949000],\n [40970000, 1389710777000],\n [40980000, 1389777793000],\n [40990003, 1389805633000],\n [41000001, 1389876411000],\n [41010004, 1389930176000],\n [41020000, 1389969392000],\n [41030003, 1390022259000],\n [41040000, 1390052441000],\n [41050000, 1390095627000],\n [41060001, 1390129212000],\n [41070000, 1390148564000],\n [41080002, 1390218360000],\n [41090000, 1390253841000],\n [41100000, 1390310266000],\n [41110002, 1390365394000],\n [41120000, 1390400848000],\n [41130000, 1390462727000],\n [41140000, 1390490469000],\n [41150006, 1390557209000],\n [41160000, 1390581485000],\n [41170000, 1390639346000],\n [41180000, 1390662146000],\n [41190001, 1390711554000],\n [41200000, 1390738921000],\n [41210000, 1390761786000],\n [41220001, 1390825685000],\n [41230004, 1390864879000],\n [41240001, 1390914926000],\n [41250000, 1390967166000],\n [41260001, 1391003550000],\n [41270000, 1391057312000],\n [41280001, 1391090640000],\n [41290000, 1391133271000],\n [41300004, 1391173543000],\n [41310001, 1391196402000],\n [41320000, 1391248927000],\n [41330004, 1391268984000],\n [41340002, 1391318292000],\n [41350003, 1391343049000],\n [41360000, 1391358890000],\n [41370006, 1391420322000],\n [41380002, 1391440394000],\n [41390000, 1391500984000],\n [41400001, 1391526066000],\n [41410003, 1391586012000],\n [41420001, 1391612173000],\n [41430000, 1391671991000],\n [41440000, 1391698434000],\n [41450000, 1391757471000],\n [41460000, 1391784929000],\n [41470000, 1391834616000],\n [41480000, 1391862063000],\n [41490003, 1391881559000],\n [41500000, 1391932582000],\n [41510000, 1391953765000],\n [41520004, 1391998284000],\n [41530002, 1392037552000],\n [41540000, 1392066530000],\n [41550000, 1392112644000],\n [41560000, 1392131840000],\n [41570001, 1392194076000],\n [41580000, 1392219316000],\n [41590000, 1392282853000],\n [41600000, 1392304606000],\n [41610005, 1392348357000],\n [41620001, 1392376215000],\n [41630000, 1392389474000],\n [41640001, 1392426804000],\n [41650000, 1392460251000],\n [41660002, 1392478667000],\n [41670001, 1392526199000],\n [41680001, 1392552314000],\n [41690001, 1392570369000],\n [41700000, 1392633722000],\n [41710000, 1392655918000],\n [41720000, 1392721170000],\n [41730000, 1392744219000],\n [41740002, 1392810166000],\n [41750000, 1392839290000],\n [41760000, 1392899792000],\n [41770001, 1392946266000],\n [41780003, 1392989834000],\n [41790000, 1393032132000],\n [41800001, 1393067824000],\n [41810001, 1393084402000],\n [41820001, 1393135710000],\n [41830000, 1393161351000],\n [41840002, 1393203897000],\n [41850002, 1393248383000],\n [41860001, 1393291912000],\n [41870001, 1393335014000],\n [41880000, 1393388020000],\n [41890001, 1393424619000],\n [41900004, 1393484298000],\n [41910001, 1393513270000],\n [41920000, 1393575080000],\n [41930004, 1393599724000],\n [41940000, 1393649411000],\n [41950001, 1393678485000],\n [41960000, 1393701470000],\n [41970000, 1393749770000],\n [41980000, 1393770253000],\n [41990000, 1393815455000],\n [42000000, 1393852628000],\n [42010003, 1393897936000],\n [42020000, 1393940871000],\n [42030000, 1393995575000],\n [42040000, 1394028460000],\n [42050003, 1394084274000],\n [42060000, 1394116297000],\n [42070006, 1394174826000],\n [42080000, 1394203514000],\n [42090000, 1394254421000],\n [42100001, 1394284010000],\n [42110001, 1394306295000],\n [42120004, 1394353495000],\n [42130000, 1394372476000],\n [42140000, 1394403256000],\n [42150003, 1394454978000],\n [42160002, 1394492825000],\n [42170001, 1394542229000],\n [42180000, 1394584146000],\n [42190000, 1394628598000],\n [42200001, 1394665824000],\n [42210000, 1394712644000],\n [42220000, 1394732736000],\n [42230006, 1394793084000],\n [42240000, 1394811767000],\n [42250000, 1394861234000],\n [42260001, 1394888921000],\n [42270000, 1394916941000],\n [42280002, 1394963854000],\n [42290000, 1394983698000],\n [42300005, 1395045978000],\n [42310003, 1395070383000],\n [42320002, 1395132113000],\n [42330003, 1395157270000],\n [42340000, 1395220938000],\n [42350002, 1395245872000],\n [42360000, 1395308429000],\n [42370003, 1395331913000],\n [42380000, 1395390043000],\n [42390000, 1395414897000],\n [42400001, 1395466421000],\n [42410002, 1395495043000],\n [42420002, 1395535189000],\n [42430001, 1395571843000],\n [42440003, 1395591434000],\n [42450001, 1395653812000],\n [42460000, 1395677629000],\n [42470000, 1395738654000],\n [42480002, 1395762934000],\n [42490000, 1395822734000],\n [42500002, 1395847945000],\n [42510000, 1395906367000],\n [42520001, 1395933159000],\n [42530002, 1395991085000],\n [42540002, 1396018980000],\n [42550001, 1396071207000],\n [42560001, 1396100789000],\n [42570002, 1396138699000],\n [42580000, 1396175404000],\n [42590001, 1396194254000],\n [42600002, 1396252141000],\n [42610000, 1396277944000],\n [42620000, 1396323943000],\n [42630002, 1396357555000],\n [42640000, 1396391700000],\n [42650000, 1396440208000],\n [42660002, 1396469027000],\n [42670000, 1396524679000],\n [42680001, 1396546938000],\n [42690001, 1396606462000],\n [42700001, 1396627908000],\n [42710002, 1396682080000],\n [42720000, 1396707226000],\n [42730001, 1396750142000],\n [42740003, 1396782763000],\n [42750000, 1396800959000],\n [42760001, 1396863535000],\n [42770000, 1396887145000],\n [42780001, 1396954829000],\n [42790001, 1396982837000],\n [42800001, 1397049398000],\n [42810002, 1397110653000],\n [42820000, 1397143579000],\n [42830000, 1397215545000],\n [42840002, 1397254675000],\n [42850002, 1397301720000],\n [42860000, 1397322967000],\n [42870002, 1397375930000],\n [42880000, 1397397773000],\n [42890001, 1397455706000],\n [42900000, 1397488856000],\n [42910000, 1397560697000],\n [42920001, 1397599593000],\n [42930005, 1397657542000],\n [42940000, 1397724358000],\n [42950000, 1397752975000],\n [42960000, 1397823929000],\n [42970004, 1397861939000],\n [42980000, 1397906037000],\n [42990001, 1397925324000],\n [43000001, 1397977859000],\n [43010002, 1398000649000],\n [43020001, 1398051368000],\n [43030002, 1398090478000],\n [43040000, 1398155348000],\n [43050000, 1398182383000],\n [43060000, 1398253653000],\n [43070000, 1398292539000],\n [43080002, 1398347725000],\n [43090000, 1398411627000],\n [43100001, 1398440983000],\n [43110000, 1398499356000],\n [43120000, 1398524216000],\n [43130000, 1398571734000],\n [43140000, 1398600068000],\n [43150000, 1398618732000],\n [43160008, 1398685865000],\n [43170000, 1398709556000],\n [43180003, 1398763821000],\n [43190002, 1398783609000],\n [43200001, 1398842780000],\n [43210000, 1398868275000],\n [43220000, 1398917399000],\n [43230000, 1398951267000],\n [43240001, 1398985439000],\n [43250002, 1399033139000],\n [43260000, 1399053659000],\n [43270002, 1399106899000],\n [43280000, 1399129212000],\n [43290001, 1399181866000],\n [43300000, 1399212177000],\n [43310004, 1399255726000],\n [43320000, 1399290772000],\n [43330001, 1399309105000],\n [43340003, 1399363810000],\n [43350000, 1399385332000],\n [43360002, 1399442840000],\n [43370000, 1399475201000],\n [43380000, 1399544901000],\n [43390001, 1399570022000],\n [43400000, 1399638792000],\n [43410001, 1399670418000],\n [43420001, 1399718529000],\n [43430002, 1399738317000],\n [43440002, 1399790375000],\n [43450000, 1399814799000],\n [43460002, 1399864598000],\n [43470001, 1399905263000],\n [43480000, 1399971974000],\n [43490003, 1399999898000],\n [43500000, 1400070205000],\n [43510000, 1400115414000],\n [43520000, 1400163520000],\n [43530003, 1400228908000],\n [43540000, 1400255949000],\n [43550001, 1400313912000],\n [43560000, 1400339124000],\n [43570000, 1400388580000],\n [43580004, 1400416359000],\n [43590002, 1400444855000],\n [43600005, 1400506605000],\n [43610001, 1400569839000],\n [43620000, 1400601150000],\n [43630001, 1400672517000],\n [43640000, 1400723348000],\n [43650003, 1400769717000],\n [43660000, 1400837345000],\n [43670003, 1400862090000],\n [43680003, 1400921009000],\n [43690002, 1400945026000],\n [43700000, 1400996183000],\n [43710000, 1401022371000],\n [43720000, 1401063071000],\n [43730002, 1401112830000],\n [43740000, 1401177721000],\n [43750000, 1401208122000],\n [43760000, 1401280984000],\n [43770000, 1401333522000],\n [43780001, 1401375608000],\n [43790001, 1401444365000],\n [43800001, 1401471127000],\n [43810003, 1401530344000],\n [43820001, 1401550961000],\n [43830000, 1401600993000],\n [43840000, 1401626966000],\n [43850000, 1401657217000],\n [43860008, 1401713968000],\n [43870003, 1401767777000],\n [43880001, 1401807602000],\n [43890002, 1401876480000],\n [43900000, 1401904346000],\n [43910001, 1401973528000],\n [43920001, 1402025979000],\n [43930000, 1402063985000],\n [43940000, 1402112952000],\n [43950000, 1402145459000],\n [43960001, 1402172306000],\n [43970001, 1402218554000],\n [43980000, 1402238671000],\n [43990000, 1402291402000],\n [44000001, 1402324160000],\n [44010000, 1402384520000],\n [44020002, 1402413601000],\n [44030000, 1402483256000],\n [44040000, 1402509616000],\n [44050000, 1402578519000],\n [44060000, 1402623458000],\n [44070002, 1402667904000],\n [44080001, 1402715545000],\n [44090000, 1402750894000],\n [44100000, 1402785867000],\n [44110000, 1402826595000],\n [44120000, 1402846052000],\n [44130000, 1402913327000],\n [44140000, 1402938297000],\n [44150000, 1403006985000],\n [44160001, 1403044298000],\n [44170002, 1403097803000],\n [44180000, 1403150518000],\n [44190000, 1403188706000],\n [44200000, 1403253194000],\n [44210002, 1403279667000],\n [44220001, 1403336437000],\n [44230002, 1403361689000],\n [44240001, 1403406798000],\n [44250004, 1403437621000],\n [44260000, 1403458355000],\n [44270001, 1403526600000],\n [44280000, 1403575405000],\n [44290000, 1403619591000],\n [44300006, 1403682903000],\n [44310002, 1403706840000],\n [44320003, 1403759025000],\n [44330002, 1403791871000],\n [44340000, 1403845932000],\n [44350000, 1403878913000],\n [44360000, 1403926002000],\n [44370000, 1403958052000],\n [44380004, 1403978310000],\n [44390002, 1404027816000],\n [44400000, 1404049867000],\n [44410002, 1404092202000],\n [44420000, 1404134229000],\n [44430000, 1404164270000],\n [44440001, 1404218810000],\n [44450000, 1404257765000],\n [44460001, 1404307517000],\n [44470000, 1404361188000],\n [44480000, 1404396968000],\n [44490000, 1404450979000],\n [44500000, 1404484370000],\n [44510000, 1404531329000],\n [44520002, 1404563707000],\n [44530000, 1404586575000],\n [44540003, 1404635596000],\n [44550000, 1404656947000],\n [44560001, 1404700582000],\n [44570000, 1404737750000],\n [44580001, 1404759751000],\n [44590000, 1404823038000],\n [44600002, 1404871988000],\n [44610000, 1404914244000],\n [44620000, 1404970300000],\n [44630000, 1405002069000],\n [44640002, 1405060766000],\n [44650000, 1405091407000],\n [44660000, 1405146732000],\n [44670001, 1405174715000],\n [44680001, 1405220483000],\n [44690002, 1405251314000],\n [44700000, 1405270285000],\n [44710000, 1405337178000],\n [44720000, 1405361842000],\n [44730002, 1405427494000],\n [44740003, 1405475240000],\n [44750004, 1405519456000],\n [44760003, 1405582910000],\n [44770000, 1405612234000],\n [44780003, 1405680048000],\n [44790003, 1405709128000],\n [44800000, 1405766040000],\n [44810000, 1405789241000],\n [44820001, 1405845253000],\n [44830002, 1405869189000],\n [44840001, 1405922372000],\n [44850002, 1405949188000],\n [44860000, 1405992548000],\n [44870000, 1406035142000],\n [44880001, 1406086433000],\n [44890001, 1406124315000],\n [44900002, 1406182689000],\n [44910005, 1406214574000],\n [44920000, 1406278021000],\n [44930000, 1406305823000],\n [44940001, 1406365818000],\n [44950000, 1406392124000],\n [44960001, 1406448520000],\n [44970001, 1406473115000],\n [44980002, 1406534631000],\n [44990000, 1406562421000],\n [45000000, 1406627631000],\n [45010000, 1406653768000],\n [45020000, 1406718289000],\n [45030000, 1406745105000],\n [45040002, 1406806551000],\n [45050007, 1406826261000],\n [45060000, 1406886698000],\n [45070000, 1406909284000],\n [45080002, 1406964417000],\n [45090003, 1406990559000],\n [45100001, 1407037498000],\n [45110000, 1407068214000],\n [45120000, 1407091073000],\n [45130000, 1407150920000],\n [45140000, 1407174945000],\n [45150001, 1407236279000],\n [45160000, 1407260335000],\n [45170004, 1407322261000],\n [45180000, 1407346097000],\n [45190001, 1407407515000],\n [45200002, 1407428521000],\n [45210000, 1407487560000],\n [45220002, 1407510877000],\n [45230001, 1407563375000],\n [45240001, 1407591542000],\n [45250000, 1407630080000],\n [45260002, 1407664218000],\n [45270001, 1407683121000],\n [45280000, 1407735019000],\n [45290001, 1407765570000],\n [45300001, 1407812110000],\n [45310000, 1407847709000],\n [45320000, 1407873477000],\n [45330000, 1407926302000],\n [45340000, 1407947772000],\n [45350002, 1408002387000],\n [45360000, 1408027778000],\n [45370001, 1408077726000],\n [45380000, 1408111355000],\n [45390002, 1408162182000],\n [45400000, 1408197659000],\n [45410000, 1408248522000],\n [45420004, 1408280781000],\n [45430000, 1408324617000],\n [45440001, 1408366777000],\n [45450002, 1408408751000],\n [45460005, 1408452134000],\n [45470002, 1408488705000],\n [45480000, 1408537718000],\n [45490000, 1408577858000],\n [45500001, 1408624745000],\n [45510000, 1408661595000],\n [45520000, 1408709941000],\n [45530001, 1408739295000],\n [45540002, 1408790292000],\n [45550001, 1408813387000],\n [45560000, 1408869060000],\n [45570000, 1408892386000],\n [45580003, 1408950609000],\n [45590001, 1408978478000],\n [45600001, 1409038069000],\n [45610000, 1409066062000],\n [45620006, 1409128203000],\n [45630000, 1409153928000],\n [45640000, 1409216945000],\n [45650000, 1409241599000],\n [45660002, 1409305363000],\n [45670002, 1409329768000],\n [45680001, 1409387563000],\n [45690001, 1409411227000],\n [45700002, 1409456447000],\n [45710001, 1409485571000],\n [45720001, 1409501028000],\n [45730010, 1409567310000],\n [45740000, 1409591429000],\n [45750000, 1409660281000],\n [45760001, 1409706661000],\n [45770000, 1409753397000],\n [45780001, 1409817467000],\n [45790000, 1409846233000],\n [45800001, 1409916309000],\n [45810001, 1409955523000],\n [45820001, 1410004195000],\n [45830002, 1410027341000],\n [45840001, 1410080086000],\n [45850000, 1410101234000],\n [45860003, 1410159791000],\n [45870002, 1410188406000],\n [45880000, 1410251730000],\n [45890000, 1410277481000],\n [45900002, 1410346533000],\n [45910000, 1410373358000],\n [45920001, 1410441075000],\n [45930000, 1410494820000],\n [45940000, 1410533064000],\n [45950000, 1410586687000],\n [45960002, 1410617477000],\n [45970001, 1410666060000],\n [45980000, 1410700170000],\n [45990001, 1410742254000],\n [46000003, 1410780600000],\n [46010001, 1410800885000],\n [46020000, 1410871404000],\n [46030001, 1410925985000],\n [46040000, 1410965180000],\n [46050002, 1411035539000],\n [46060000, 1411068445000],\n [46070002, 1411132729000],\n [46080000, 1411179286000],\n [46090001, 1411217966000],\n [46100001, 1411260613000],\n [46110002, 1411299116000],\n [46120001, 1411324250000],\n [46130002, 1411392713000],\n [46140002, 1411444634000],\n [46150004, 1411477767000],\n [46160001, 1411533742000],\n [46170002, 1411571943000],\n [46180002, 1411644554000],\n [46190000, 1411694810000],\n [46200002, 1411742253000],\n [46210003, 1411796970000],\n [46220001, 1411827559000],\n [46230000, 1411878229000],\n [46240000, 1411909469000],\n [46250001, 1411958548000],\n [46260000, 1412001347000],\n [46270000, 1412069171000],\n [46280000, 1412092418000],\n [46290000, 1412159293000],\n [46300000, 1412182471000],\n [46310004, 1412251678000],\n [46320001, 1412292704000],\n [46330001, 1412343931000],\n [46340000, 1412390517000],\n [46350000, 1412426684000],\n [46360003, 1412459043000],\n [46370001, 1412502758000],\n [46380000, 1412522089000],\n [46390000, 1412579126000],\n [46400001, 1412606211000],\n [46410000, 1412670515000],\n [46420000, 1412697641000],\n [46430000, 1412769724000],\n [46440000, 1412805139000],\n [46450003, 1412861657000],\n [46460001, 1412900611000],\n [46470000, 1412946324000],\n [46480000, 1412966082000],\n [46490000, 1413021523000],\n [46500000, 1413045739000],\n [46510004, 1413105184000],\n [46520002, 1413132385000],\n [46530001, 1413189711000],\n [46540000, 1413212103000],\n [46550001, 1413279134000],\n [46560000, 1413308431000],\n [46570002, 1413380899000],\n [46580000, 1413448537000],\n [46590000, 1413481017000],\n [46600002, 1413553814000],\n [46610001, 1413610622000],\n [46620000, 1413643873000],\n [46630000, 1413699682000],\n [46640002, 1413727940000],\n [46650000, 1413796851000],\n [46660000, 1413829473000],\n [46670000, 1413900925000],\n [46680000, 1413972104000],\n [46690001, 1414020575000],\n [46700006, 1414077321000],\n [46710001, 1414153803000],\n [46720000, 1414209098000],\n [46730000, 1414246272000],\n [46740001, 1414300019000],\n [46750000, 1414330741000],\n [46760000, 1414395376000],\n [46770001, 1414429636000],\n [46780003, 1414504384000],\n [46790001, 1414577244000],\n [46800001, 1414622603000],\n [46810000, 1414678523000],\n [46820000, 1414722059000],\n [46830001, 1414757909000],\n [46840001, 1414769504000],\n [46850000, 1414823220000],\n [46860000, 1414852020000],\n [46870001, 1414903508000],\n [46880000, 1414934932000],\n [46890002, 1414980757000],\n [46900002, 1415017619000],\n [46910000, 1415062708000],\n [46920000, 1415112999000],\n [46930000, 1415187739000],\n [46940002, 1415248447000],\n [46950003, 1415289061000],\n [46960000, 1415364291000],\n [46970001, 1415417408000],\n [46980003, 1415454956000],\n [46990000, 1415507307000],\n [47000000, 1415539055000],\n [47010000, 1415588639000],\n [47020000, 1415631586000],\n [47030002, 1415696295000],\n [47040002, 1415718900000],\n [47050002, 1415789004000],\n [47060000, 1415839179000],\n [47070003, 1415891607000],\n [47080000, 1415967746000],\n [47090005, 1416022074000],\n [47100000, 1416060637000],\n [47110001, 1416115908000],\n [47120001, 1416146173000],\n [47130000, 1416208876000],\n [47140001, 1416242085000],\n [47150000, 1416317801000],\n [47160000, 1416390921000],\n [47170000, 1416448604000],\n [47180000, 1416497398000],\n [47190000, 1416574038000],\n [47200001, 1416629021000],\n [47210003, 1416666230000],\n [47220001, 1416721789000],\n [47230001, 1416753783000],\n [47240000, 1416813201000],\n [47250000, 1416842192000],\n [47260002, 1416918200000],\n [47270000, 1416984962000],\n [47280002, 1417023611000],\n [47290000, 1417098065000],\n [47300000, 1417172998000],\n [47310000, 1417218646000],\n [47320006, 1417265182000],\n [47330000, 1417309885000],\n [47340001, 1417348922000],\n [47350001, 1417374842000],\n [47360001, 1417442238000],\n [47370000, 1417514169000],\n [47380001, 1417573663000],\n [47390001, 1417621738000],\n [47400000, 1417698110000],\n [47410001, 1417763923000],\n [47420000, 1417799488000],\n [47430000, 1417865705000],\n [47440002, 1417903772000],\n [47450000, 1417951702000],\n [47460002, 1417989019000],\n [47470002, 1418050247000],\n [47480000, 1418125512000],\n [47490000, 1418188809000],\n [47500001, 1418230565000],\n [47510003, 1418304837000],\n [47520000, 1418374861000],\n [47530001, 1418410134000],\n [47540001, 1418472019000],\n [47550000, 1418516238000],\n [47560001, 1418557982000],\n [47570001, 1418602760000],\n [47580000, 1418655482000],\n [47590000, 1418728714000],\n [47600002, 1418786472000],\n [47610000, 1418830833000],\n [47620000, 1418906555000],\n [47630001, 1418974005000],\n [47640003, 1419006790000],\n [47650000, 1419070128000],\n [47660000, 1419094682000],\n [47670002, 1419153085000],\n [47680003, 1419175796000],\n [47690000, 1419244695000],\n [47700000, 1419274769000],\n [47710000, 1419333862000],\n [47720000, 1419354340000],\n [47730001, 1419415711000],\n [47740000, 1419433879000],\n [47750007, 1419479734000],\n [47760000, 1419511462000],\n [47770001, 1419528679000],\n [47780001, 1419591419000],\n [47790000, 1419614182000],\n [47800003, 1419670281000],\n [47810001, 1419695043000],\n [47820003, 1419753778000],\n [47830000, 1419782289000],\n [47840000, 1419844011000],\n [47850001, 1419874897000],\n [47860000, 1419938290000],\n [47870000, 1419964946000],\n [47880001, 1420015097000],\n [47890000, 1420036028000],\n [47900000, 1420042361000],\n [47910000, 1420078699000],\n [47920001, 1420103980000],\n [47930000, 1420123777000],\n [47940000, 1420175074000],\n [47950000, 1420206280000],\n [47960001, 1420253354000],\n [47970000, 1420288344000],\n [47980000, 1420321580000],\n [47990000, 1420368200000],\n [48000001, 1420388763000],\n [48010000, 1420453511000],\n [48020004, 1420478404000],\n [48030000, 1420544239000],\n [48040000, 1420579475000],\n [48050001, 1420636400000],\n [48060002, 1420694718000],\n [48070001, 1420731031000],\n [48080000, 1420801573000],\n [48090005, 1420828904000],\n [48100000, 1420887623000],\n [48110005, 1420911824000],\n [48120000, 1420970320000],\n [48130001, 1420995201000],\n [48140001, 1421053286000],\n [48150003, 1421076820000],\n [48160001, 1421150311000],\n [48170002, 1421208087000],\n [48180002, 1421249944000],\n [48190001, 1421323732000],\n [48200001, 1421380565000],\n [48210000, 1421421390000],\n [48220001, 1421480469000],\n [48230000, 1421507793000],\n [48240001, 1421562583000],\n [48250000, 1421589740000],\n [48260000, 1421647746000],\n [48270001, 1421681904000],\n [48280000, 1421752922000],\n [48290002, 1421796949000],\n [48300002, 1421848870000],\n [48310000, 1421910136000],\n [48320000, 1421940971000],\n [48330000, 1422009927000],\n [48340004, 1422037304000],\n [48350000, 1422095668000],\n [48360001, 1422119397000],\n [48370000, 1422177393000],\n [48380000, 1422200867000],\n [48390000, 1422271145000],\n [48400000, 1422314467000],\n [48410000, 1422367980000],\n [48420000, 1422433504000],\n [48430004, 1422463457000],\n [48440000, 1422534768000],\n [48450000, 1422587272000],\n [48460003, 1422627741000],\n [48470000, 1422677639000],\n [48480003, 1422710491000],\n [48490003, 1422746403000],\n [48500000, 1422788824000],\n [48510000, 1422811475000],\n [48520002, 1422879052000],\n [48530005, 1422919644000],\n [48540000, 1422969688000],\n [48550000, 1423021714000],\n [48560000, 1423059994000],\n [48570000, 1423124083000],\n [48580000, 1423151799000],\n [48590001, 1423219438000],\n [48600001, 1423248799000],\n [48610001, 1423307183000],\n [48620003, 1423331652000],\n [48630000, 1423387909000],\n [48640000, 1423410111000],\n [48650000, 1423475783000],\n [48660000, 1423504414000],\n [48670000, 1423571959000],\n [48680001, 1423617558000],\n [48690000, 1423656664000],\n [48700000, 1423695965000],\n [48710002, 1423747660000],\n [48720002, 1423801076000],\n [48730004, 1423838902000],\n [48740006, 1423880064000],\n [48750001, 1423912035000],\n [48760000, 1423927165000],\n [48770000, 1423976919000],\n [48780001, 1424005623000],\n [48790004, 1424052534000],\n [48800001, 1424095460000],\n [48810002, 1424156267000],\n [48820000, 1424187104000],\n [48830004, 1424253921000],\n [48840002, 1424281276000],\n [48850000, 1424350047000],\n [48860000, 1424405036000],\n [48870000, 1424445222000],\n [48880001, 1424506523000],\n [48890000, 1424533717000],\n [48900002, 1424588830000],\n [48910003, 1424612370000],\n [48920000, 1424657127000],\n [48930000, 1424700853000],\n [48940005, 1424764099000],\n [48950001, 1424794919000],\n [48960000, 1424863985000],\n [48970004, 1424907331000],\n [48980000, 1424958445000],\n [48990000, 1425020098000],\n [49000000, 1425052228000],\n [49010000, 1425113573000],\n [49020002, 1425137788000],\n [49030000, 1425192625000],\n [49040000, 1425218915000],\n [49050000, 1425277345000],\n [49060000, 1425310019000],\n [49070001, 1425376397000],\n [49080000, 1425401283000],\n [49090000, 1425470717000],\n [49100001, 1425522821000],\n [49110002, 1425565908000],\n [49120000, 1425631623000],\n [49130001, 1425661246000],\n [49140001, 1425721796000],\n [49150000, 1425746273000],\n [49160000, 1425803701000],\n [49170000, 1425826933000],\n [49180000, 1425888991000],\n [49190000, 1425914570000],\n [49200001, 1425980130000],\n [49210005, 1426009556000],\n [49220001, 1426078336000],\n [49230000, 1426135941000],\n [49240003, 1426172068000],\n [49250000, 1426237030000],\n [49260000, 1426264348000],\n [49270002, 1426321389000],\n [49280002, 1426346221000],\n [49290002, 1426401154000],\n [49300000, 1426429467000],\n [49310001, 1426492115000],\n [49320000, 1426522044000],\n [49330000, 1426593267000],\n [49340001, 1426648563000],\n [49350000, 1426690127000],\n [49360000, 1426758029000],\n [49370002, 1426788601000],\n [49380008, 1426855140000],\n [49390001, 1426902362000],\n [49400002, 1426943270000],\n [49410000, 1426990368000],\n [49420000, 1427027854000],\n [49430000, 1427076951000],\n [49440002, 1427121382000],\n [49450003, 1427188723000],\n [49460000, 1427221714000],\n [49470001, 1427288345000],\n [49480001, 1427346664000],\n [49490000, 1427382958000],\n [49500000, 1427449110000],\n [49510000, 1427478001000],\n [49520001, 1427538782000],\n [49530000, 1427565781000],\n [49540001, 1427621536000],\n [49550002, 1427644856000],\n [49560003, 1427710766000],\n [49570001, 1427741876000],\n [49580000, 1427804380000],\n [49590000, 1427835668000],\n [49600002, 1427889902000],\n [49610005, 1427922598000],\n [49620000, 1427980018000],\n [49630000, 1428033261000],\n [49640001, 1428070688000],\n [49650004, 1428122102000],\n [49660001, 1428155752000],\n [49670004, 1428198715000],\n [49680001, 1428233407000],\n [49690000, 1428253898000],\n [49700002, 1428317973000],\n [49710001, 1428348567000],\n [49720001, 1428412177000],\n [49730000, 1428469600000],\n [49740002, 1428506182000],\n [49750004, 1428578339000],\n [49760002, 1428621049000],\n [49770001, 1428675507000],\n [49780000, 1428730122000],\n [49790003, 1428762157000],\n [49800000, 1428810192000],\n [49810000, 1428841777000],\n [49820000, 1428880711000],\n [49830001, 1428934950000],\n [49840000, 1429006335000],\n [49850000, 1429054292000],\n [49860001, 1429109898000],\n [49870000, 1429183117000],\n [49880000, 1429236717000],\n [49890000, 1429283590000],\n [49900001, 1429345715000],\n [49910000, 1429372438000],\n [49920001, 1429427262000],\n [49930000, 1429452183000],\n [49940000, 1429511794000],\n [49950000, 1429545046000],\n [49960001, 1429620425000],\n [49970001, 1429683143000],\n [49980000, 1429720850000],\n [49990000, 1429795605000],\n [50000000, 1429863864000],\n [50010000, 1429898787000],\n [50020000, 1429961496000],\n [50030000, 1429996983000],\n [50040004, 1430045105000],\n [50050000, 1430067028000],\n [50060003, 1430139388000],\n [50070002, 1430200615000],\n [50080002, 1430235720000],\n [50090001, 1430296784000],\n [50100000, 1430321228000],\n [50110000, 1430389982000],\n [50120001, 1430412736000],\n [50130002, 1430479345000],\n [50140000, 1430501860000],\n [50150000, 1430557445000],\n [50160001, 1430581431000],\n [50170001, 1430636674000],\n [50180000, 1430664979000],\n [50190006, 1430719047000],\n [50200001, 1430750240000],\n [50210000, 1430802866000],\n [50220000, 1430835446000],\n [50230000, 1430886375000],\n [50240000, 1430917406000],\n [50250001, 1430969831000],\n [50260000, 1431011510000],\n [50270001, 1431083973000],\n [50280003, 1431123849000],\n [50290002, 1431172739000],\n [50300000, 1431204867000],\n [50310001, 1431252706000],\n [50320000, 1431275326000],\n [50330001, 1431349340000],\n [50340000, 1431415400000],\n [50350002, 1431450112000],\n [50360000, 1431524579000],\n [50370004, 1431595757000],\n [50380000, 1431629249000],\n [50390001, 1431698689000],\n [50400001, 1431753573000],\n [50410000, 1431786571000],\n [50420000, 1431837465000],\n [50430000, 1431868109000],\n [50440003, 1431924122000],\n [50450000, 1431963346000],\n [50460001, 1432038066000],\n [50470002, 1432100070000],\n [50480000, 1432137840000],\n [50490001, 1432212978000],\n [50500001, 1432280391000],\n [50510000, 1432314638000],\n [50520000, 1432378486000],\n [50530000, 1432405540000],\n [50540000, 1432460533000],\n [50550001, 1432483593000],\n [50560000, 1432556836000],\n [50570001, 1432620778000],\n [50580000, 1432659550000],\n [50590001, 1432733347000],\n [50600000, 1432803486000],\n [50610004, 1432845996000],\n [50620001, 1432910338000],\n [50630000, 1432969407000],\n [50640000, 1432999743000],\n [50650000, 1433054954000],\n [50660001, 1433081521000],\n [50670000, 1433139525000],\n [50680005, 1433174212000],\n [50690003, 1433247766000],\n [50700007, 1433304560000],\n [50710000, 1433344640000],\n [50720000, 1433417598000],\n [50730002, 1433465723000],\n [50740000, 1433515819000],\n [50750000, 1433573481000],\n [50760000, 1433603104000],\n [50770000, 1433656399000],\n [50780000, 1433684476000],\n [50790006, 1433742245000],\n [50800000, 1433776632000],\n [50810002, 1433846603000],\n [50820000, 1433874860000],\n [50830002, 1433943909000],\n [50840000, 1434010217000],\n [50850001, 1434045170000],\n [50860002, 1434115301000],\n [50870000, 1434165997000],\n [50880000, 1434203013000],\n [50890000, 1434250611000],\n [50900000, 1434284671000],\n [50910000, 1434328565000],\n [50920000, 1434378765000],\n [50930001, 1434449589000],\n [50940000, 1434495986000],\n [50950002, 1434551913000],\n [50960000, 1434622524000],\n [50970001, 1434660867000],\n [50980001, 1434723356000],\n [50990000, 1434781138000],\n [51000000, 1434812712000],\n [51010005, 1434865927000],\n [51020003, 1434894231000],\n [51030000, 1434949765000],\n [51040001, 1434986243000],\n [51050001, 1435058040000],\n [51060000, 1435104020000],\n [51070004, 1435156327000],\n [51080001, 1435224543000],\n [51090000, 1435255929000],\n [51100000, 1435323878000],\n [51110003, 1435371108000],\n [51120002, 1435410415000],\n [51130000, 1435457064000],\n [51140000, 1435494630000],\n [51150001, 1435548043000],\n [51160000, 1435590927000],\n [51170000, 1435661743000],\n [51180000, 1435693160000],\n [51190000, 1435757210000],\n [51200001, 1435820137000],\n [51210000, 1435852363000],\n [51220001, 1435924090000],\n [51230000, 1435963538000],\n [51240000, 1436011041000],\n [51250000, 1436041964000],\n [51260001, 1436092245000],\n [51270002, 1436113783000],\n [51280000, 1436184639000],\n [51290001, 1436222209000],\n [51300002, 1436274448000],\n [51310000, 1436321505000],\n [51320000, 1436367233000],\n [51330000, 1436438434000],\n [51340000, 1436482573000],\n [51350000, 1436539264000],\n [51360001, 1436600774000],\n [51370005, 1436630589000],\n [51380000, 1436689104000],\n [51390000, 1436714870000],\n [51400000, 1436787425000],\n [51410000, 1436842693000],\n [51420000, 1436886365000],\n [51430000, 1436959083000],\n [51440001, 1437015088000],\n [51450000, 1437059007000],\n [51460002, 1437127790000],\n [51470001, 1437161200000],\n [51480000, 1437221108000],\n [51490000, 1437266583000],\n [51500000, 1437310382000],\n [51510001, 1437353953000],\n [51520001, 1437393709000],\n [51530001, 1437429645000],\n [51540002, 1437486190000],\n [51550009, 1437545501000],\n [51560000, 1437579146000],\n [51570000, 1437647564000],\n [51580001, 1437688568000],\n [51590000, 1437746118000],\n [51600006, 1437804136000],\n [51610001, 1437838006000],\n [51620001, 1437896582000],\n [51630000, 1437924161000],\n [51640004, 1437993698000],\n [51650001, 1438041123000],\n [51660000, 1438092330000],\n [51670000, 1438155491000],\n [51680000, 1438188475000],\n [51690001, 1438258316000],\n [51700004, 1438310555000],\n [51710001, 1438352766000],\n [51720000, 1438404349000],\n [51730000, 1438439607000],\n [51740000, 1438492706000],\n [51750000, 1438523901000],\n [51760000, 1438576479000],\n [51770000, 1438613331000],\n [51780001, 1438676812000],\n [51790000, 1438707698000],\n [51800001, 1438775013000],\n [51810000, 1438822665000],\n [51820000, 1438868881000],\n [51830000, 1438925089000],\n [51840001, 1438959605000],\n [51850003, 1439015686000],\n [51860000, 1439046332000],\n [51870001, 1439101072000],\n [51880001, 1439129645000],\n [51890000, 1439180053000],\n [51900001, 1439215210000],\n [51910001, 1439268110000],\n [51920001, 1439303260000],\n [51930002, 1439357219000],\n [51940000, 1439389903000],\n [51950001, 1439439328000],\n [51960000, 1439474031000],\n [51970000, 1439522995000],\n [51980002, 1439562464000],\n [51990001, 1439619122000],\n [52000003, 1439652589000],\n [52010002, 1439713106000],\n [52020000, 1439737809000],\n [52030001, 1439796813000],\n [52040002, 1439825293000],\n [52050002, 1439887490000],\n [52060002, 1439915547000],\n [52070001, 1439981728000],\n [52080000, 1440007097000],\n [52090000, 1440071411000],\n [52100000, 1440105179000],\n [52110002, 1440161382000],\n [52120002, 1440204370000],\n [52130002, 1440247573000],\n [52140000, 1440293559000],\n [52150002, 1440333019000],\n [52160002, 1440378395000],\n [52170001, 1440424211000],\n [52180003, 1440482841000],\n [52190000, 1440515889000],\n [52200000, 1440582877000],\n [52210003, 1440612864000],\n [52220000, 1440679254000],\n [52230003, 1440726969000],\n [52240002, 1440770502000],\n [52250001, 1440819055000],\n [52260001, 1440855205000],\n [52270001, 1440904479000],\n [52280001, 1440940469000],\n [52290003, 1440986585000],\n [52300001, 1441027528000],\n [52310000, 1441071842000],\n [52320000, 1441118194000],\n [52330000, 1441188677000],\n [52340002, 1441231428000],\n [52350000, 1441290113000],\n [52360000, 1441359877000],\n [52370001, 1441396714000],\n [52380000, 1441456240000],\n [52390001, 1441503699000],\n [52400000, 1441542484000],\n [52410000, 1441591959000],\n [52420002, 1441638157000],\n [52430000, 1441710469000],\n [52440000, 1441757685000],\n [52450000, 1441808428000],\n [52460001, 1441877759000],\n [52470001, 1441925058000],\n [52480001, 1441983737000],\n [52490008, 1442044638000],\n [52500000, 1442073356000],\n [52510000, 1442131880000],\n [52520001, 1442157561000],\n [52530002, 1442230417000],\n [52540002, 1442285982000],\n [52550000, 1442331304000],\n [52560006, 1442406457000],\n [52570000, 1442469129000],\n [52580003, 1442507932000],\n [52590000, 1442582714000],\n [52600000, 1442640190000],\n [52610000, 1442675304000],\n [52620000, 1442734874000],\n [52630001, 1442765771000],\n [52640000, 1442832097000],\n [52650000, 1442874140000],\n [52660000, 1442925918000],\n [52670001, 1442973989000],\n [52680000, 1443013257000],\n [52690001, 1443073808000],\n [52700001, 1443112150000],\n [52710000, 1443187348000],\n [52720001, 1443245159000],\n [52730000, 1443279080000],\n [52740000, 1443331711000],\n [52750003, 1443360896000],\n [52760000, 1443416366000],\n [52770003, 1443454110000],\n [52780000, 1443526258000],\n [52790000, 1443573159000],\n [52800000, 1443623335000],\n [52810000, 1443687223000],\n [52820000, 1443715413000],\n [52830000, 1443785028000],\n [52840000, 1443812701000],\n [52850000, 1443868318000],\n [52860001, 1443892966000],\n [52870002, 1443951923000],\n [52880001, 1443977319000],\n [52890002, 1444050020000],\n [52900001, 1444112972000],\n [52910000, 1444150582000],\n [52920001, 1444224436000],\n [52930000, 1444293770000],\n [52940000, 1444328660000],\n [52950001, 1444398014000],\n [52960001, 1444448428000],\n [52970001, 1444485550000],\n [52980001, 1444537079000],\n [52990000, 1444571696000],\n [53000000, 1444624072000],\n [53010005, 1444658586000],\n [53020001, 1444728690000],\n [53030000, 1444776865000],\n [53040001, 1444834638000],\n [53050000, 1444910842000],\n [53060001, 1444974041000],\n [53070000, 1445012878000],\n [53080000, 1445077854000],\n [53090000, 1445107072000],\n [53100000, 1445164056000],\n [53110001, 1445193150000],\n [53120000, 1445264139000],\n [53130000, 1445339154000],\n [53140000, 1445396667000],\n [53150003, 1445441692000],\n [53160000, 1445518494000],\n [53170000, 1445588117000],\n [53180002, 1445628093000],\n [53190001, 1445689759000],\n [53200001, 1445738163000],\n [53210000, 1445775998000],\n [53220001, 1445833271000],\n [53230000, 1445876063000],\n [53240002, 1445952191000],\n [53250001, 1446023732000],\n [53260001, 1446071058000],\n [53270003, 1446130056000],\n [53280000, 1446200786000],\n [53290000, 1446222908000],\n [53300000, 1446276180000],\n [53310002, 1446298208000],\n [53320002, 1446314767000],\n [53330007, 1446368379000],\n [53340001, 1446391392000],\n [53350000, 1446463645000],\n [53360000, 1446511544000],\n [53370000, 1446554904000],\n [53380000, 1446613562000],\n [53390000, 1446652845000],\n [53400001, 1446728534000],\n [53410001, 1446798097000],\n [53420000, 1446835848000],\n [53430000, 1446897512000],\n [53440000, 1446935447000],\n [53450000, 1446979710000],\n [53460000, 1447002529000],\n [53470000, 1447074958000],\n [53480003, 1447138089000],\n [53490002, 1447171463000],\n [53500000, 1447241068000],\n [53510000, 1447263850000],\n [53520000, 1447334523000],\n [53530001, 1447400956000],\n [53540000, 1447434309000],\n [53550001, 1447495192000],\n [53560001, 1447520520000],\n [53570001, 1447579045000],\n [53580002, 1447602584000],\n [53590001, 1447677054000],\n [53600000, 1447734384000],\n [53610001, 1447774550000],\n [53620000, 1447848786000],\n [53630001, 1447909667000],\n [53640000, 1447950831000],\n [53650000, 1448025195000],\n [53660000, 1448081028000],\n [53670000, 1448117623000],\n [53680002, 1448173146000],\n [53690000, 1448202318000],\n [53700002, 1448256072000],\n [53710000, 1448286558000],\n [53720008, 1448350876000],\n [53730002, 1448385838000],\n [53740003, 1448459361000],\n [53750001, 1448529328000],\n [53760001, 1448571384000],\n [53770000, 1448635733000],\n [53780001, 1448695133000],\n [53790000, 1448725329000],\n [53800001, 1448783477000],\n [53810000, 1448809518000],\n [53820000, 1448882576000],\n [53830000, 1448935147000],\n [53840001, 1448982556000],\n [53850000, 1449056968000],\n [53860001, 1449120058000],\n [53870000, 1449160498000],\n [53880000, 1449235420000],\n [53890001, 1449294310000],\n [53900002, 1449328023000],\n [53910000, 1449385484000],\n [53920000, 1449413366000],\n [53930000, 1449486304000],\n [53940000, 1449545121000],\n [53950000, 1449590438000],\n [53960000, 1449666749000],\n [53970000, 1449737401000],\n [53980000, 1449782727000],\n [53990003, 1449845097000],\n [54000005, 1449906786000],\n [54010002, 1449935748000],\n [54020000, 1449994184000],\n [54030000, 1450019154000],\n [54040000, 1450089997000],\n [54050000, 1450138364000],\n [54060000, 1450190996000],\n [54070002, 1450263073000],\n [54080000, 1450319232000],\n [54090001, 1450366580000],\n [54100000, 1450442905000],\n [54110001, 1450501438000],\n [54120002, 1450537128000],\n [54130000, 1450594818000],\n [54140000, 1450622901000],\n [54150000, 1450692686000],\n [54160002, 1450728829000],\n [54170001, 1450792823000],\n [54180000, 1450849584000],\n [54190000, 1450880944000],\n [54200002, 1450930324000],\n [54210002, 1450964468000],\n [54220001, 1450990001000],\n [54230001, 1451040270000],\n [54240001, 1451058045000],\n [54250000, 1451113602000],\n [54260000, 1451142117000],\n [54270001, 1451193442000],\n [54280001, 1451222549000],\n [54290001, 1451262047000],\n [54300000, 1451306768000],\n [54310001, 1451353931000],\n [54320001, 1451397388000],\n [54330000, 1451455072000],\n [54340002, 1451488299000],\n [54350000, 1451541348000],\n [54360000, 1451568664000],\n [54370003, 1451578081000],\n [54380002, 1451583548000],\n [54390046, 1451584646000],\n [54400004, 1451585608000],\n [54410135, 1451586483000],\n [54420052, 1451587666000],\n [54430122, 1451589379000],\n [54440001, 1451591925000],\n [54450001, 1451625209000],\n [54460004, 1451641989000],\n [54470000, 1451655523000],\n [54480004, 1451675422000],\n [54490001, 1451730868000],\n [54500000, 1451755391000],\n [54510000, 1451810931000],\n [54520003, 1451834335000],\n [54530000, 1451893722000],\n [54540001, 1451921581000],\n [54550000, 1451981684000],\n [54560000, 1452009596000],\n [54570003, 1452069136000],\n [54580000, 1452096975000],\n [54590000, 1452165734000],\n [54600000, 1452206246000],\n [54610001, 1452262161000],\n [54620000, 1452316918000],\n [54630001, 1452349574000],\n [54640001, 1452402538000],\n [54650001, 1452434481000],\n [54660000, 1452486057000],\n [54670000, 1452517947000],\n [54680000, 1452572400000],\n [54690000, 1452613850000],\n [54700001, 1452690017000],\n [54710000, 1452756792000],\n [54720000, 1452790521000],\n [54730001, 1452863830000],\n [54740000, 1452921765000],\n [54750002, 1452955817000],\n [54760000, 1453008750000],\n [54770000, 1453038460000],\n [54780000, 1453098873000],\n [54790001, 1453132481000],\n [54800002, 1453204722000],\n [54810004, 1453257872000],\n [54820000, 1453302010000],\n [54830002, 1453372832000],\n [54840001, 1453411706000],\n [54850001, 1453470798000],\n [54860007, 1453522524000],\n [54870000, 1453556436000],\n [54880002, 1453604239000],\n [54890001, 1453638389000],\n [54900000, 1453683740000],\n [54910004, 1453731139000],\n [54920001, 1453798773000],\n [54930000, 1453830095000],\n [54940000, 1453900095000],\n [54950000, 1453960642000],\n [54960002, 1453996322000],\n [54970000, 1454066614000],\n [54980000, 1454101949000],\n [54990002, 1454153860000],\n [55000000, 1454178375000],\n [55010003, 1454233202000],\n [55020000, 1454253981000],\n [55030000, 1454318469000],\n [55040000, 1454344713000],\n [55050000, 1454413707000],\n [55060000, 1454444292000],\n [55070000, 1454503062000],\n [55080004, 1454545766000],\n [55090000, 1454592044000],\n [55100000, 1454640952000],\n [55110000, 1454680957000],\n [55120000, 1454731019000],\n [55130002, 1454764695000],\n [55140000, 1454807309000],\n [55150001, 1454845415000],\n [55160002, 1454873571000],\n [55170001, 1454936377000],\n [55180007, 1454994613000],\n [55190000, 1455030538000],\n [55200008, 1455098217000],\n [55210001, 1455132058000],\n [55220001, 1455190327000],\n [55230000, 1455224267000],\n [55240002, 1455284238000],\n [55250001, 1455337972000],\n [55260000, 1455371967000],\n [55270000, 1455402129000],\n [55280001, 1455438260000],\n [55290002, 1455457052000],\n [55300000, 1455479181000],\n [55310001, 1455539860000],\n [55320007, 1455593116000],\n [55330001, 1455634142000],\n [55340000, 1455699982000],\n [55350000, 1455732305000],\n [55360000, 1455801485000],\n [55370001, 1455862899000],\n [55380001, 1455897144000],\n [55390000, 1455960059000],\n [55400003, 1455986485000],\n [55410000, 1456044639000],\n [55420000, 1456068698000],\n [55430000, 1456133038000],\n [55440002, 1456155786000],\n [55450003, 1456225718000],\n [55460000, 1456273371000],\n [55470001, 1456324697000],\n [55480000, 1456393085000],\n [55490004, 1456439002000],\n [55500002, 1456496132000],\n [55510001, 1456554911000],\n [55520001, 1456585844000],\n [55530000, 1456641519000],\n [55540001, 1456669586000],\n [55550000, 1456731043000],\n [55560000, 1456758846000],\n [55570000, 1456825629000],\n [55580000, 1456860157000],\n [55590000, 1456926706000],\n [55600000, 1456989100000],\n [55610001, 1457020517000],\n [55620005, 1457091333000],\n [55630000, 1457138155000],\n [55640002, 1457181847000],\n [55650000, 1457222400000],\n [55660001, 1457262443000],\n [55670002, 1457284199000],\n [55680000, 1457351979000],\n [55690002, 1457396717000],\n [55700000, 1457445365000],\n [55710001, 1457502688000],\n [55720002, 1457533722000],\n [55730001, 1457592521000],\n [55740005, 1457622716000],\n [55750000, 1457688390000],\n [55760002, 1457713904000],\n [55770005, 1457770918000],\n [55780002, 1457796696000],\n [55790000, 1457854875000],\n [55800002, 1457881729000],\n [55810004, 1457947485000],\n [55820000, 1457973754000],\n [55830000, 1458043691000],\n [55840003, 1458095965000],\n [55850001, 1458140031000],\n [55860000, 1458209267000],\n [55870000, 1458249917000],\n [55880000, 1458308641000],\n [55890001, 1458363092000],\n [55900000, 1458397132000],\n [55910000, 1458450051000],\n [55920001, 1458482981000],\n [55930000, 1458537698000],\n [55940001, 1458569645000],\n [55950001, 1458632632000],\n [55960002, 1458663443000],\n [55970002, 1458733391000],\n [55980000, 1458781771000],\n [55990001, 1458828772000],\n [56000001, 1458891213000],\n [56010006, 1458922690000],\n [56020001, 1458985543000],\n [56030000, 1459013112000],\n [56040001, 1459071569000],\n [56050001, 1459095916000],\n [56060000, 1459163470000],\n [56070000, 1459195288000],\n [56080000, 1459256338000],\n [56090000, 1459314017000],\n [56100000, 1459351265000],\n [56110001, 1459417661000],\n [56120000, 1459444333000],\n [56130001, 1459507802000],\n [56140000, 1459534425000],\n [56150002, 1459595264000],\n [56160002, 1459623731000],\n [56170000, 1459678424000],\n [56180001, 1459701527000],\n [56190002, 1459766357000],\n [56200000, 1459804779000],\n [56210000, 1459863795000],\n [56220000, 1459926641000],\n [56230002, 1459959385000],\n [56240001, 1460029929000],\n [56250002, 1460079251000],\n [56260000, 1460127601000],\n [56270002, 1460187551000],\n [56280000, 1460216748000],\n [56290000, 1460273543000],\n [56300001, 1460297446000],\n [56310000, 1460365122000],\n [56320000, 1460415361000],\n [56330002, 1460474858000],\n [56340001, 1460551981000],\n [56350001, 1460622390000],\n [56360002, 1460680949000],\n [56370002, 1460735958000],\n [56380001, 1460804923000],\n [56390000, 1460843792000],\n [56400003, 1460890412000],\n [56410000, 1460916070000],\n [56420000, 1460987720000],\n [56430000, 1461058187000],\n [56440000, 1461104036000],\n [56450001, 1461164452000],\n [56460001, 1461239528000],\n [56470001, 1461299694000],\n [56480000, 1461340726000],\n [56490002, 1461404556000],\n [56500000, 1461430336000],\n [56510000, 1461485723000],\n [56520001, 1461509999000],\n [56530000, 1461579857000],\n [56540001, 1461622012000],\n [56550002, 1461680516000],\n [56560003, 1461750402000],\n [56570000, 1461783666000],\n [56580001, 1461851082000],\n [56590001, 1461905468000],\n [56600000, 1461939707000],\n [56610000, 1461992012000],\n [56620000, 1462024178000],\n [56630000, 1462064072000],\n [56640001, 1462100062000],\n [56650000, 1462118558000],\n [56660000, 1462178165000],\n [56670000, 1462202537000],\n [56680002, 1462258590000],\n [56690000, 1462287637000],\n [56700000, 1462343808000],\n [56710000, 1462374018000],\n [56720000, 1462425879000],\n [56730000, 1462455521000],\n [56740000, 1462512257000],\n [56750000, 1462547701000],\n [56760000, 1462606894000],\n [56770000, 1462634736000],\n [56780000, 1462687724000],\n [56790000, 1462715398000],\n [56800001, 1462776332000],\n [56810000, 1462811630000],\n [56820000, 1462885637000],\n [56830000, 1462947935000],\n [56840001, 1462985941000],\n [56850003, 1463060847000],\n [56860002, 1463130472000],\n [56870001, 1463167081000],\n [56880000, 1463227574000],\n [56890000, 1463267664000],\n [56900000, 1463310778000],\n [56910002, 1463340423000],\n [56920000, 1463407866000],\n [56930000, 1463480118000],\n [56940001, 1463536446000],\n [56950001, 1463586244000],\n [56960000, 1463661415000],\n [56970000, 1463724491000],\n [56980000, 1463762636000],\n [56990002, 1463827553000],\n [57000000, 1463858294000],\n [57010000, 1463911420000],\n [57020000, 1463935233000],\n [57030000, 1464008061000],\n [57040000, 1464057361000],\n [57050000, 1464100893000],\n [57060000, 1464172598000],\n [57070000, 1464221271000],\n [57080000, 1464274322000],\n [57090002, 1464346599000],\n [57100000, 1464389456000],\n [57110000, 1464437876000],\n [57120001, 1464482219000],\n [57130000, 1464522044000],\n [57140001, 1464562495000],\n [57150002, 1464619102000],\n [57160000, 1464692561000],\n [57170003, 1464741541000],\n [57180000, 1464792809000],\n [57190001, 1464866840000],\n [57200000, 1464923308000],\n [57210001, 1464968228000],\n [57220002, 1465031928000],\n [57230000, 1465058901000],\n [57240000, 1465116687000],\n [57250000, 1465139412000],\n [57260000, 1465209025000],\n [57270000, 1465250979000],\n [57280002, 1465308208000],\n [57290000, 1465377991000],\n [57300002, 1465411049000],\n [57310000, 1465477312000],\n [57320000, 1465531970000],\n [57330000, 1465571088000],\n [57340002, 1465629183000],\n [57350000, 1465657956000],\n [57360001, 1465712022000],\n [57370002, 1465739702000],\n [57380003, 1465798169000],\n [57390000, 1465832711000],\n [57400002, 1465905402000],\n [57410001, 1465957217000],\n [57420000, 1466002806000],\n [57430002, 1466072473000],\n [57440000, 1466108320000],\n [57450003, 1466170932000],\n [57460000, 1466222949000],\n [57470000, 1466258707000],\n [57480002, 1466307682000],\n [57490002, 1466340883000],\n [57500001, 1466392225000],\n [57510000, 1466435119000],\n [57520000, 1466506445000],\n [57530002, 1466555125000],\n [57540001, 1466606467000],\n [57550001, 1466677968000],\n [57560000, 1466726102000],\n [57570001, 1466780549000],\n [57580000, 1466842875000],\n [57590000, 1466872426000],\n [57600003, 1466930708000],\n [57610000, 1466957296000],\n [57620001, 1467031096000],\n [57630004, 1467094259000],\n [57640001, 1467130515000],\n [57650002, 1467202266000],\n [57660000, 1467256271000],\n [57670000, 1467298424000],\n [57680001, 1467362753000],\n [57690001, 1467391224000],\n [57700001, 1467451186000],\n [57710000, 1467477064000],\n [57720001, 1467533842000],\n [57730001, 1467559523000],\n [57740000, 1467630123000],\n [57750000, 1467683320000],\n [57760001, 1467731359000],\n [57770000, 1467803600000],\n [57780000, 1467846628000],\n [57790001, 1467898220000],\n [57800002, 1467956415000],\n [57810004, 1467994201000],\n [57820000, 1468058296000],\n [57830000, 1468088599000],\n [57840000, 1468145940000],\n [57850000, 1468172938000],\n [57860000, 1468242988000],\n [57870000, 1468308685000],\n [57880001, 1468343747000],\n [57890000, 1468415336000],\n [57900000, 1468480127000],\n [57910002, 1468515175000],\n [57920000, 1468588085000],\n [57930000, 1468644842000],\n [57940000, 1468681404000],\n [57950001, 1468740473000],\n [57960000, 1468769888000],\n [57970000, 1468830116000],\n [57980000, 1468856568000],\n [57990000, 1468930009000],\n [58000000, 1468991107000],\n [58010000, 1469029824000],\n [58020000, 1469102160000],\n [58030001, 1469157377000],\n [58040002, 1469201597000],\n [58050001, 1469270090000],\n [58060000, 1469317980000],\n [58070002, 1469364513000],\n [58080003, 1469424004000],\n [58090000, 1469464510000],\n [58100001, 1469536743000],\n [58110006, 1469599305000],\n [58120000, 1469638732000],\n [58130000, 1469710329000],\n [58140003, 1469771253000],\n [58150000, 1469807649000],\n [58160000, 1469873493000],\n [58170000, 1469909390000],\n [58180000, 1469963816000],\n [58190002, 1469992257000],\n [58200000, 1470054609000],\n [58210001, 1470105154000],\n [58220001, 1470146582000],\n [58230000, 1470204408000],\n [58240001, 1470238306000],\n [58250001, 1470306237000],\n [58260000, 1470348275000],\n [58270005, 1470402711000],\n [58280000, 1470454252000],\n [58290002, 1470491835000],\n [58300000, 1470543014000],\n [58310000, 1470576227000],\n [58320004, 1470626364000],\n [58330000, 1470665253000],\n [58340000, 1470719718000],\n [58350006, 1470752430000],\n [58360000, 1470804496000],\n [58370000, 1470838465000],\n [58380001, 1470886060000],\n [58390001, 1470920134000],\n [58400001, 1470962532000],\n [58410000, 1471007534000],\n [58420001, 1471062944000],\n [58430001, 1471100546000],\n [58440000, 1471163099000],\n [58450000, 1471193115000],\n [58460000, 1471256200000],\n [58470000, 1471285401000],\n [58480001, 1471346036000],\n [58490006, 1471379846000],\n [58500000, 1471436710000],\n [58510003, 1471483845000],\n [58520000, 1471527272000],\n [58530000, 1471579773000],\n [58540002, 1471616931000],\n [58550001, 1471668133000],\n [58560001, 1471701994000],\n [58570001, 1471754111000],\n [58580004, 1471788458000],\n [58590000, 1471847283000],\n [58600000, 1471879199000],\n [58610001, 1471946052000],\n [58620000, 1471990282000],\n [58630000, 1472046646000],\n [58640002, 1472111711000],\n [58650000, 1472149702000],\n [58660005, 1472218227000],\n [58670001, 1472276534000],\n [58680001, 1472311268000],\n [58690001, 1472371312000],\n [58700004, 1472398255000],\n [58710000, 1472465816000],\n [58720000, 1472507006000],\n [58730003, 1472562516000],\n [58740002, 1472612751000],\n [58750001, 1472652473000],\n [58760002, 1472710864000],\n [58770001, 1472744177000],\n [58780000, 1472815308000],\n [58790002, 1472854851000],\n [58800001, 1472904365000],\n [58810002, 1472946637000],\n [58820003, 1472990669000],\n [58830000, 1473039462000],\n [58840001, 1473088018000],\n [58850001, 1473162209000],\n [58860001, 1473219832000],\n [58870001, 1473262856000],\n [58880001, 1473337075000],\n [58890000, 1473398787000],\n [58900004, 1473438865000],\n [58910004, 1473503559000],\n [58920000, 1473529656000],\n [58930000, 1473585805000],\n [58940000, 1473610448000],\n [58950000, 1473682349000],\n [58960000, 1473737224000],\n [58970000, 1473780525000],\n [58980001, 1473853142000],\n [58990000, 1473903889000],\n [59000002, 1473949244000],\n [59010001, 1474015896000],\n [59020000, 1474050478000],\n [59030001, 1474112215000],\n [59040000, 1474157059000],\n [59050002, 1474202612000],\n [59060001, 1474252489000],\n [59070005, 1474291094000],\n [59080001, 1474352936000],\n [59090000, 1474388153000],\n [59100000, 1474464391000],\n [59110001, 1474523991000],\n [59120000, 1474556977000],\n [59130003, 1474630670000],\n [59140000, 1474683088000],\n [59150000, 1474725202000],\n [59160005, 1474779589000],\n [59170000, 1474812561000],\n [59180000, 1474883449000],\n [59190000, 1474935867000],\n [59200000, 1474989339000],\n [59210001, 1475064332000],\n [59220000, 1475129668000],\n [59230000, 1475170305000],\n [59240002, 1475244164000],\n [59250001, 1475303419000],\n [59260001, 1475334591000],\n [59270000, 1475392316000],\n [59280005, 1475419783000],\n [59290000, 1475488696000],\n [59300000, 1475528870000],\n [59310001, 1475590468000],\n [59320000, 1475657907000],\n [59330001, 1475686232000],\n [59340000, 1475757932000],\n [59350003, 1475812066000],\n [59360004, 1475852837000],\n [59370000, 1475911406000],\n [59380001, 1475941922000],\n [59390001, 1476004293000],\n [59400000, 1476034568000],\n [59410000, 1476096636000],\n [59420000, 1476129978000],\n [59430000, 1476196619000],\n [59440000, 1476272537000],\n [59450000, 1476340363000],\n [59460004, 1476384975000],\n [59470000, 1476456661000],\n [59480003, 1476521187000],\n [59490002, 1476552341000],\n [59500000, 1476612768000],\n [59510000, 1476644723000],\n [59520002, 1476714278000],\n [59530003, 1476789295000],\n [59540004, 1476854219000],\n [59550000, 1476898255000],\n [59560002, 1476972714000],\n [59570001, 1477045122000],\n [59580000, 1477092184000],\n [59590002, 1477141991000],\n [59600001, 1477195190000],\n [59610000, 1477230360000],\n [59620000, 1477300850000],\n [59630000, 1477358100000],\n [59640000, 1477410899000],\n [59650000, 1477489171000],\n [59660000, 1477563831000],\n [59670001, 1477626136000],\n [59680000, 1477670133000],\n [59690000, 1477737118000],\n [59700003, 1477771839000],\n [59710001, 1477825224000],\n [59720000, 1477844574000],\n [59730000, 1477908183000],\n [59740001, 1477926263000],\n [59750000, 1477992314000],\n [59760000, 1478035514000],\n [59770000, 1478098882000],\n [59780000, 1478165969000],\n [59790000, 1478199515000],\n [59800003, 1478269516000],\n [59810001, 1478333879000],\n [59820000, 1478366872000],\n [59830000, 1478428778000],\n [59840001, 1478470292000],\n [59850000, 1478530563000],\n [59860001, 1478607047000],\n [59870000, 1478676582000],\n [59880001, 1478740581000],\n [59890001, 1478793768000],\n [59900001, 1478867764000],\n [59910001, 1478918808000],\n [59920002, 1478960589000],\n [59930003, 1479018936000],\n [59940000, 1479048927000],\n [59950000, 1479121186000],\n [59960000, 1479182550000],\n [59970005, 1479229974000],\n [59980001, 1479307323000],\n [59990000, 1479384685000],\n [60000000, 1479455423000],\n [60010000, 1479514144000],\n [60020001, 1479564619000],\n [60030000, 1479623969000],\n [60040000, 1479654902000],\n [60050000, 1479732185000],\n [60060000, 1479804841000],\n [60070000, 1479857950000],\n [60080000, 1479907841000],\n [60090000, 1479980658000],\n [60100000, 1480047221000],\n [60110002, 1480096515000],\n [60120002, 1480164784000],\n [60130004, 1480221877000],\n [60140007, 1480256393000],\n [60150000, 1480327810000],\n [60160001, 1480389639000],\n [60170000, 1480437775000],\n [60180000, 1480515550000],\n [60190001, 1480590152000],\n [60200001, 1480656554000],\n [60210001, 1480701685000],\n [60220000, 1480769066000],\n [60230001, 1480823736000],\n [60240000, 1480859801000],\n [60250000, 1480928761000],\n [60260001, 1480986080000],\n [60270000, 1481040525000],\n [60280000, 1481118864000],\n [60290000, 1481195165000],\n [60300000, 1481265395000],\n [60310000, 1481317642000],\n [60320000, 1481376091000],\n [60330001, 1481434401000],\n [60340002, 1481467474000],\n [60350000, 1481542146000],\n [60360000, 1481611462000],\n [60370000, 1481658725000],\n [60380000, 1481727720000],\n [60390000, 1481805784000],\n [60400001, 1481879887000],\n [60410000, 1481937290000],\n [60420000, 1481984144000],\n [60430002, 1482044400000],\n [60440000, 1482075538000],\n [60450002, 1482151308000],\n [60460000, 1482217539000],\n [60470000, 1482260096000],\n [60480001, 1482331019000],\n [60490002, 1482403591000],\n [60500000, 1482456355000],\n [60510000, 1482500440000],\n [60520000, 1482546777000],\n [60530000, 1482582859000],\n [60540000, 1482601298000],\n [60550000, 1482652348000],\n [60560000, 1482674545000],\n [60570001, 1482721794000],\n [60580000, 1482762956000],\n [60590000, 1482820331000],\n [60600002, 1482851372000],\n [60610001, 1482910028000],\n [60620000, 1482939295000],\n [60630000, 1483000868000],\n [60640002, 1483028900000],\n [60650000, 1483091458000],\n [60660000, 1483122307000],\n [60670001, 1483175760000],\n [60680004, 1483196425000],\n [60690000, 1483210669000],\n [60700003, 1483254919000],\n [60710000, 1483280373000],\n [60720001, 1483331831000],\n [60730000, 1483365638000],\n [60740000, 1483419372000],\n [60750000, 1483451305000],\n [60760000, 1483503879000],\n [60770000, 1483538081000],\n [60780000, 1483594341000],\n [60790003, 1483628720000],\n [60800001, 1483696774000],\n [60810002, 1483726056000],\n [60820001, 1483785559000],\n [60830005, 1483815367000],\n [60840001, 1483873749000],\n [60850001, 1483903342000],\n [60860000, 1483959039000],\n [60870001, 1484000637000],\n [60880001, 1484058261000],\n [60890002, 1484130896000],\n [60900000, 1484187151000],\n [60910000, 1484235037000],\n [60920000, 1484310570000],\n [60930000, 1484369465000],\n [60940001, 1484406004000],\n [60950002, 1484465204000],\n [60960000, 1484493581000],\n [60970001, 1484568233000],\n [60980000, 1484632631000],\n [60990000, 1484673727000],\n [61000000, 1484747006000],\n [61010000, 1484818553000],\n [61020000, 1484873088000],\n [61030004, 1484924798000],\n [61040000, 1484989157000],\n [61050000, 1485019482000],\n [61060003, 1485079433000],\n [61070003, 1485106552000],\n [61080000, 1485176741000],\n [61090001, 1485243764000],\n [61100002, 1485280302000],\n [61110001, 1485351326000],\n [61120002, 1485419493000],\n [61130005, 1485452399000],\n [61140000, 1485520824000],\n [61150000, 1485569319000],\n [61160001, 1485609703000],\n [61170000, 1485661493000],\n [61180000, 1485696254000],\n [61190001, 1485756890000],\n [61200000, 1485791360000],\n [61210000, 1485864250000],\n [61220000, 1485916122000],\n [61230000, 1485961290000],\n [61240002, 1486029393000],\n [61250001, 1486060297000],\n [61260000, 1486126376000],\n [61270000, 1486176696000],\n [61280000, 1486215506000],\n [61290000, 1486266720000],\n [61300001, 1486299874000],\n [61310000, 1486353467000],\n [61320000, 1486393351000],\n [61330003, 1486463624000],\n [61340003, 1486507596000],\n [61350002, 1486561760000],\n [61360001, 1486626809000],\n [61370000, 1486657775000],\n [61380000, 1486727915000],\n [61390000, 1486773392000],\n [61400000, 1486816368000],\n [61410000, 1486865070000],\n [61420000, 1486904647000],\n [61430000, 1486965714000],\n [61440000, 1486999592000],\n [61450000, 1487058450000],\n [61460000, 1487082681000],\n [61470000, 1487141957000],\n [61480002, 1487177786000],\n [61490000, 1487249996000],\n [61500000, 1487315623000],\n [61510004, 1487351938000],\n [61520000, 1487417611000],\n [61530000, 1487464184000],\n [61540000, 1487506450000],\n [61550000, 1487558601000],\n [61560001, 1487602436000],\n [61570002, 1487673379000],\n [61580000, 1487729561000],\n [61590001, 1487773681000],\n [61600001, 1487840488000],\n [61610000, 1487886123000],\n [61620000, 1487946620000],\n [61630000, 1488009110000],\n [61640000, 1488041915000],\n [61650000, 1488104050000],\n [61660000, 1488137656000],\n [61670003, 1488203273000],\n [61680000, 1488272954000],\n [61690004, 1488306578000],\n [61700001, 1488374500000],\n [61710002, 1488439391000],\n [61720000, 1488476649000],\n [61730003, 1488546944000],\n [61740000, 1488604970000],\n [61750000, 1488640963000],\n [61760001, 1488700486000],\n [61770000, 1488727677000],\n [61780000, 1488799826000],\n [61790001, 1488857988000],\n [61800000, 1488900604000],\n [61810001, 1488975206000],\n [61820000, 1489034828000],\n [61830000, 1489072603000],\n [61840003, 1489142367000],\n [61850002, 1489193541000],\n [61860000, 1489239443000],\n [61870000, 1489294279000],\n [61880001, 1489327105000],\n [61890001, 1489392956000],\n [61900000, 1489426148000],\n [61910001, 1489495011000],\n [61920001, 1489548258000],\n [61930000, 1489589470000],\n [61940001, 1489659435000],\n [61950001, 1489705940000],\n [61960000, 1489759515000],\n [61970000, 1489814949000],\n [61980000, 1489848301000],\n [61990002, 1489899476000],\n [62000000, 1489932248000],\n [62010000, 1489989312000],\n [62020001, 1490024376000],\n [62030001, 1490098245000],\n [62040001, 1490161753000],\n [62050000, 1490201923000],\n [62060000, 1490274647000],\n [62070002, 1490341815000],\n [62080001, 1490380510000],\n [62090000, 1490445446000],\n [62100000, 1490500749000],\n [62110001, 1490536871000],\n [62120000, 1490603274000],\n [62130000, 1490642055000],\n [62140004, 1490708949000],\n [62150001, 1490777542000],\n [62160000, 1490820295000],\n [62170003, 1490881477000],\n [62180001, 1490946798000],\n [62190004, 1490976957000],\n [62200002, 1491039126000],\n [62210001, 1491067568000],\n [62220000, 1491128642000],\n [62230002, 1491159785000],\n [62240004, 1491224760000],\n [62250000, 1491283628000],\n [62260000, 1491320899000],\n [62270002, 1491393053000],\n [62280002, 1491453235000],\n [62290000, 1491494583000],\n [62300000, 1491567593000],\n [62310000, 1491623151000],\n [62320002, 1491661534000],\n [62330002, 1491716479000],\n [62340003, 1491746742000],\n [62350000, 1491815038000],\n [62360001, 1491871127000],\n [62370001, 1491925389000],\n [62380000, 1492003693000],\n [62390000, 1492082003000],\n [62400000, 1492151690000],\n [62410002, 1492198376000],\n [62420000, 1492260748000],\n [62430000, 1492312442000],\n [62440000, 1492348959000],\n [62450000, 1492413755000],\n [62460000, 1492453035000],\n [62470002, 1492526215000],\n [62480000, 1492599361000],\n [62490001, 1492660202000],\n [62500000, 1492705541000],\n [62510000, 1492781135000],\n [62520001, 1492841436000],\n [62530002, 1492874780000],\n [62540002, 1492933762000],\n [62550001, 1492960691000],\n [62560000, 1493033974000],\n [62570001, 1493093628000],\n [62580002, 1493136732000],\n [62590000, 1493211622000],\n [62600000, 1493276444000],\n [62610003, 1493312435000],\n [62620000, 1493385440000],\n [62630001, 1493438388000],\n [62640000, 1493473315000],\n [62650000, 1493522097000],\n [62660000, 1493555085000],\n [62670001, 1493586549000],\n [62680003, 1493641931000],\n [62690003, 1493681520000],\n [62700002, 1493731183000],\n [62710000, 1493778538000],\n [62720000, 1493818359000],\n [62730003, 1493872141000],\n [62740000, 1493910022000],\n [62750000, 1493968043000],\n [62760001, 1493997052000],\n [62770000, 1494057461000],\n [62780000, 1494086198000],\n [62790000, 1494144157000],\n [62800000, 1494170300000],\n [62810000, 1494245199000],\n [62820001, 1494308647000],\n [62830000, 1494351165000],\n [62840000, 1494425972000],\n [62850000, 1494501435000],\n [62860000, 1494567101000],\n [62870000, 1494610007000],\n [62880001, 1494673577000],\n [62890000, 1494716102000],\n [62900001, 1494760899000],\n [62910002, 1494795763000],\n [62920000, 1494858716000],\n [62930001, 1494933038000],\n [62940001, 1494999035000],\n [62950000, 1495045116000],\n [62960000, 1495117455000],\n [62970002, 1495192286000],\n [62980001, 1495245451000],\n [62990000, 1495288662000],\n [63000000, 1495342893000],\n [63010001, 1495375426000],\n [63020000, 1495443878000],\n [63030001, 1495488210000],\n [63040002, 1495550606000],\n [63050000, 1495621709000],\n [63060000, 1495673523000],\n [63070003, 1495725794000],\n [63080001, 1495800279000],\n [63090001, 1495855801000],\n [63100000, 1495896259000],\n [63110000, 1495956096000],\n [63120004, 1495984862000],\n [63130000, 1496058038000],\n [63140001, 1496116229000],\n [63150000, 1496159773000],\n [63160001, 1496236152000],\n [63170001, 1496303987000],\n [63180001, 1496350329000],\n [63190002, 1496414214000],\n [63200000, 1496477730000],\n [63210001, 1496509683000],\n [63220000, 1496568699000],\n [63230002, 1496593843000],\n [63240001, 1496667827000],\n [63250000, 1496730997000],\n [63260002, 1496768310000],\n [63270000, 1496841898000],\n [63280000, 1496910562000],\n [63290001, 1496945416000],\n [63300000, 1497013621000],\n [63310000, 1497063495000],\n [63320002, 1497102454000],\n [63330002, 1497153633000],\n [63340000, 1497187604000],\n [63350001, 1497249375000],\n [63360000, 1497286640000],\n [63370000, 1497359990000],\n [63380000, 1497426544000],\n [63390000, 1497463041000],\n [63400001, 1497533901000],\n [63410000, 1497600873000],\n [63420001, 1497634004000],\n [63430000, 1497695549000],\n [63440000, 1497730358000],\n [63450001, 1497783481000],\n [63460001, 1497819943000],\n [63470004, 1497881556000],\n [63480001, 1497952328000],\n [63490006, 1498004419000],\n [63500001, 1498055950000],\n [63510000, 1498127512000],\n [63520000, 1498184357000],\n [63530000, 1498232682000],\n [63540000, 1498297671000],\n [63550001, 1498328857000],\n [63560000, 1498384089000],\n [63570004, 1498408425000],\n [63580000, 1498481408000],\n [63590001, 1498547374000],\n [63600002, 1498592418000],\n [63610001, 1498659877000],\n [63620000, 1498732262000],\n [63630000, 1498789573000],\n [63640000, 1498834886000],\n [63650000, 1498893446000],\n [63660000, 1498924888000],\n [63670001, 1498984295000],\n [63680000, 1499011669000],\n [63690002, 1499084640000],\n [63700001, 1499145935000],\n [63710000, 1499184277000],\n [63720001, 1499256812000],\n [63730000, 1499319244000],\n [63740000, 1499358325000],\n [63750000, 1499427606000],\n [63760000, 1499473779000],\n [63770000, 1499518404000],\n [63780000, 1499570137000],\n [63790000, 1499606468000],\n [63800001, 1499667532000],\n [63810001, 1499705198000],\n [63820000, 1499777692000],\n [63830000, 1499842313000],\n [63840000, 1499880848000],\n [63850000, 1499952096000],\n [63860001, 1500019471000],\n [63870000, 1500060664000],\n [63880000, 1500121683000],\n [63890003, 1500175988000],\n [63900002, 1500214550000],\n [63910000, 1500271015000],\n [63920000, 1500302259000],\n [63930002, 1500369797000],\n [63940002, 1500417210000],\n [63950000, 1500474447000],\n [63960001, 1500541939000],\n [63970004, 1500591859000],\n [63980001, 1500646704000],\n [63990000, 1500702985000],\n [64000000, 1500737424000],\n [64010000, 1500797122000],\n [64020003, 1500824521000],\n [64030000, 1500894449000],\n [64040001, 1500944980000],\n [64050001, 1500993080000],\n [64060000, 1501059445000],\n [64070000, 1501096994000],\n [64080000, 1501161638000],\n [64090001, 1501220721000],\n [64100002, 1501255441000],\n [64110000, 1501317242000],\n [64120000, 1501347076000],\n [64130000, 1501406103000],\n [64140000, 1501432171000],\n [64150000, 1501497471000],\n [64160003, 1501534700000],\n [64170000, 1501589484000],\n [64180001, 1501640305000],\n [64190000, 1501682663000],\n [64200001, 1501740921000],\n [64210000, 1501774003000],\n [64220001, 1501840191000],\n [64230003, 1501876461000],\n [64240001, 1501933039000],\n [64250000, 1501975601000],\n [64260000, 1502018981000],\n [64270002, 1502054247000],\n [64280000, 1502108300000],\n [64290000, 1502147937000],\n [64300001, 1502196328000],\n [64310000, 1502239978000],\n [64320001, 1502283677000],\n [64330001, 1502327192000],\n [64340000, 1502369852000],\n [64350001, 1502414935000],\n [64360000, 1502456746000],\n [64370000, 1502507657000],\n [64380000, 1502545058000],\n [64390000, 1502599020000],\n [64400002, 1502635191000],\n [64410001, 1502694201000],\n [64420002, 1502725088000],\n [64430000, 1502784283000],\n [64440000, 1502811813000],\n [64450000, 1502873020000],\n [64460003, 1502900305000],\n [64470000, 1502965681000],\n [64480000, 1502994637000],\n [64490001, 1503057862000],\n [64500004, 1503094715000],\n [64510003, 1503141827000],\n [64520000, 1503177780000],\n [64530000, 1503229320000],\n [64540001, 1503269341000],\n [64550000, 1503322079000],\n [64560000, 1503380947000],\n [64570000, 1503417451000],\n [64580000, 1503487289000],\n [64590000, 1503541439000],\n [64600000, 1503585532000],\n [64610001, 1503651473000],\n [64620001, 1503691200000],\n [64630000, 1503749613000],\n [64640001, 1503798428000],\n [64650000, 1503837777000],\n [64660000, 1503888823000],\n [64670000, 1503931542000],\n [64680000, 1503998660000],\n [64690000, 1504037284000],\n [64700000, 1504099208000],\n [64710000, 1504145326000],\n [64720002, 1504185871000],\n [64730000, 1504235552000],\n [64740000, 1504278115000],\n [64750000, 1504338313000],\n [64760000, 1504368311000],\n [64770000, 1504426725000],\n [64780002, 1504453083000],\n [64790004, 1504525423000],\n [64800000, 1504581975000],\n [64810000, 1504625026000],\n [64820000, 1504696220000],\n [64830000, 1504746792000],\n [64840003, 1504794394000],\n [64850001, 1504862330000],\n [64860000, 1504893632000],\n [64870002, 1504950575000],\n [64880000, 1504977342000],\n [64890000, 1505032864000],\n [64900001, 1505057676000],\n [64910000, 1505128148000],\n [64920000, 1505179616000],\n [64930000, 1505227942000],\n [64940001, 1505298552000],\n [64950000, 1505350667000],\n [64960000, 1505402075000],\n [64970000, 1505475364000],\n [64980000, 1505527756000],\n [64990000, 1505567634000],\n [65000000, 1505619955000],\n [65010000, 1505653358000],\n [65020002, 1505700308000],\n [65030002, 1505739476000],\n [65040000, 1505798668000],\n [65050001, 1505841437000],\n [65060002, 1505916471000],\n [65070000, 1505990197000],\n [65080000, 1506053515000],\n [65090003, 1506098572000],\n [65100000, 1506165418000],\n [65110000, 1506213077000],\n [65120001, 1506257441000],\n [65130004, 1506317830000],\n [65140002, 1506361335000],\n [65150002, 1506434369000],\n [65160000, 1506505630000],\n [65170001, 1506559410000],\n [65180000, 1506611217000],\n [65190000, 1506685849000],\n [65200000, 1506741954000],\n [65210000, 1506781740000],\n [65220000, 1506837965000],\n [65230001, 1506868001000],\n [65240001, 1506935676000],\n [65250002, 1506967887000],\n [65260001, 1507038169000],\n [65270000, 1507105220000],\n [65280001, 1507137257000],\n [65290000, 1507208805000],\n [65300000, 1507266104000],\n [65310002, 1507303384000],\n [65320001, 1507359758000],\n [65330002, 1507389726000],\n [65340000, 1507452124000],\n [65350004, 1507486625000],\n [65360003, 1507548526000],\n [65370000, 1507595053000],\n [65380000, 1507647739000],\n [65390000, 1507724768000],\n [65400002, 1507796920000],\n [65410001, 1507852793000],\n [65420000, 1507908618000],\n [65430000, 1507976799000],\n [65440000, 1508026300000],\n [65450000, 1508071551000],\n [65460002, 1508138699000],\n [65470003, 1508194279000],\n [65480000, 1508253836000],\n [65490000, 1508329397000],\n [65500000, 1508402756000],\n [65510000, 1508461111000],\n [65520000, 1508513731000],\n [65530000, 1508580291000],\n [65540001, 1508622937000],\n [65550002, 1508672935000],\n [65560000, 1508723206000],\n [65570000, 1508771508000],\n [65580003, 1508849150000],\n [65590000, 1508921514000],\n [65600001, 1508982148000],\n [65610000, 1509035394000],\n [65620003, 1509113929000],\n [65630001, 1509181233000],\n [65640000, 1509225439000],\n [65650001, 1509277179000],\n [65660001, 1509320755000],\n [65670000, 1509375281000],\n [65680001, 1509435848000],\n [65690000, 1509461170000],\n [65700000, 1509525368000],\n [65710000, 1509572960000],\n [65720000, 1509634932000],\n [65730000, 1509702456000],\n [65740000, 1509748102000],\n [65750002, 1509802062000],\n [65760000, 1509860261000],\n [65770001, 1509894005000],\n [65780001, 1509970166000],\n [65790001, 1510043296000],\n [65800000, 1510099873000],\n [65810002, 1510155255000],\n [65820000, 1510233192000],\n [65830000, 1510307681000],\n [65840000, 1510362918000],\n [65850002, 1510406391000],\n [65860000, 1510458601000],\n [65870000, 1510496232000],\n [65880003, 1510569457000],\n [65890000, 1510633348000],\n [65900000, 1510683341000],\n [65910000, 1510758402000],\n [65920001, 1510837965000],\n [65930000, 1510913169000],\n [65940001, 1510976767000],\n [65950000, 1511019100000],\n [65960000, 1511084403000],\n [65970000, 1511132352000],\n [65980001, 1511193070000],\n [65990002, 1511274902000],\n [66000000, 1511355236000],\n [66010001, 1511424780000],\n [66020000, 1511486569000],\n [66030001, 1511548859000],\n [66040000, 1511618201000],\n [66050000, 1511682667000],\n [66060000, 1511716807000],\n [66070000, 1511794805000],\n [66080000, 1511876394000],\n [66090000, 1511953844000],\n [66100000, 1512027193000],\n [66110001, 1512082204000],\n [66120000, 1512142392000],\n [66130002, 1512212602000],\n [66140001, 1512268916000],\n [66150000, 1512310671000],\n [66160000, 1512383781000],\n [66170003, 1512452862000],\n [66180001, 1512514503000],\n [66190000, 1512576281000],\n [66200003, 1512656239000],\n [66210000, 1512735127000],\n [66220000, 1512801376000],\n [66230000, 1512841118000],\n [66240001, 1512906660000],\n [66250001, 1512970369000],\n [66260001, 1513026996000],\n [66270000, 1513093478000],\n [66280001, 1513174934000],\n [66290000, 1513255346000],\n [66300001, 1513332121000],\n [66310000, 1513398412000],\n [66320002, 1513439931000],\n [66330001, 1513506007000],\n [66340000, 1513557857000],\n [66350000, 1513615875000],\n [66360003, 1513694759000],\n [66370001, 1513773236000],\n [66380000, 1513847414000],\n [66390000, 1513911314000],\n [66400002, 1513960253000],\n [66410002, 1514028888000],\n [66420002, 1514072781000],\n [66430000, 1514113979000],\n [66440000, 1514132751000],\n [66450000, 1514194504000],\n [66460000, 1514217822000],\n [66470001, 1514287260000],\n [66480001, 1514332191000],\n [66490000, 1514381665000],\n [66500002, 1514436757000],\n [66510001, 1514473371000],\n [66520001, 1514536420000],\n [66530000, 1514571264000],\n [66540000, 1514634599000],\n [66550001, 1514681448000],\n [66560000, 1514718967000],\n [66570001, 1514733848000],\n [66580000, 1514770953000],\n [66590001, 1514805113000],\n [66600000, 1514838239000],\n [66610000, 1514896743000],\n [66620001, 1514951564000],\n [66630002, 1514989931000],\n [66640000, 1515053617000],\n [66650000, 1515088457000],\n [66660001, 1515158299000],\n [66670002, 1515218400000],\n [66680000, 1515253066000],\n [66690000, 1515315406000],\n [66700001, 1515344449000],\n [66710001, 1515405256000],\n [66720000, 1515436566000],\n [66730002, 1515506638000],\n [66740003, 1515577451000],\n [66750004, 1515636081000],\n [66760000, 1515686408000],\n [66770000, 1515763229000],\n [66780000, 1515824048000],\n [66790000, 1515859245000],\n [66800000, 1515923095000],\n [66810002, 1515962501000],\n [66820000, 1516028988000],\n [66830000, 1516105801000],\n [66840000, 1516175859000],\n [66850000, 1516226300000],\n [66860001, 1516288122000],\n [66870000, 1516364367000],\n [66880000, 1516427246000],\n [66890002, 1516462797000],\n [66900000, 1516524145000],\n [66910000, 1516553175000],\n [66920000, 1516625683000],\n [66930000, 1516689581000],\n [66940001, 1516728074000],\n [66950003, 1516801407000],\n [66960001, 1516872999000],\n [66970000, 1516930948000],\n [66980000, 1516980600000],\n [66990000, 1517045188000],\n [67000003, 1517081791000],\n [67010002, 1517139796000],\n [67020002, 1517192905000],\n [67030000, 1517242650000],\n [67040000, 1517319211000],\n [67050000, 1517392855000],\n [67060000, 1517450939000],\n [67070000, 1517499186000],\n [67080001, 1517571947000],\n [67090001, 1517626970000],\n [67100002, 1517667339000],\n [67110001, 1517726092000],\n [67120003, 1517756647000],\n [67130002, 1517828941000],\n [67140001, 1517889529000],\n [67150000, 1517934672000],\n [67160000, 1518009187000],\n [67170002, 1518080642000],\n [67180000, 1518137129000],\n [67190000, 1518189353000],\n [67200000, 1518253579000],\n [67210003, 1518285361000],\n [67220000, 1518347750000],\n [67230000, 1518393591000],\n [67240000, 1518438178000],\n [67250000, 1518496710000],\n [67260002, 1518535498000],\n [67270000, 1518594649000],\n [67280001, 1518619642000],\n [67290000, 1518680031000],\n [67300001, 1518715800000],\n [67310000, 1518787067000],\n [67320002, 1518846975000],\n [67330000, 1518882031000],\n [67340000, 1518942703000],\n [67350000, 1518969582000],\n [67360000, 1519041746000],\n [67370000, 1519099005000],\n [67380000, 1519140204000],\n [67390000, 1519211860000],\n [67400000, 1519260688000],\n [67410002, 1519306946000],\n [67420001, 1519362722000],\n [67430002, 1519399402000],\n [67440000, 1519459261000],\n [67450000, 1519488534000],\n [67460000, 1519550053000],\n [67470001, 1519582526000],\n [67480003, 1519652081000],\n [67490001, 1519721536000],\n [67500003, 1519767915000],\n [67510001, 1519826491000],\n [67520001, 1519891484000],\n [67530001, 1519927907000],\n [67540000, 1519998020000],\n [67550000, 1520056025000],\n [67560000, 1520089627000],\n [67570001, 1520148400000],\n [67580001, 1520176867000],\n [67590005, 1520247852000],\n [67600000, 1520304428000],\n [67610000, 1520349746000],\n [67620000, 1520422811000],\n [67630000, 1520486827000],\n [67640000, 1520524749000],\n [67650000, 1520595483000],\n [67660001, 1520646573000],\n [67670000, 1520690096000],\n [67680000, 1520746182000],\n [67690001, 1520779081000],\n [67700000, 1520848667000],\n [67710002, 1520899906000],\n [67720000, 1520952228000],\n [67730001, 1521021293000],\n [67740000, 1521057070000],\n [67750000, 1521120782000],\n [67760000, 1521184574000],\n [67770000, 1521218836000],\n [67780000, 1521281394000],\n [67790000, 1521316367000],\n [67800000, 1521373329000],\n [67810000, 1521423767000],\n [67820001, 1521471600000],\n [67830001, 1521542819000],\n [67840000, 1521598520000],\n [67850000, 1521638974000],\n [67860000, 1521702616000],\n [67870000, 1521742100000],\n [67880000, 1521811971000],\n [67890001, 1521872786000],\n [67900000, 1521906671000],\n [67910000, 1521969555000],\n [67920007, 1522001670000],\n [67930000, 1522070406000],\n [67940000, 1522135837000],\n [67950000, 1522173584000],\n [67960002, 1522242791000],\n [67970000, 1522306809000],\n [67980000, 1522344460000],\n [67990001, 1522412594000],\n [68000000, 1522468069000],\n [68010000, 1522506554000],\n [68020000, 1522557559000],\n [68030000, 1522590706000],\n [68040000, 1522650575000],\n [68050000, 1522685331000],\n [68060000, 1522756281000],\n [68070000, 1522813717000],\n [68080000, 1522856141000],\n [68090003, 1522928876000],\n [68100000, 1522988245000],\n [68110000, 1523029133000],\n [68120001, 1523093331000],\n [68130002, 1523125014000],\n [68140001, 1523183935000],\n [68150001, 1523227230000],\n [68160000, 1523284539000],\n [68170002, 1523358484000],\n [68180000, 1523420575000],\n [68190001, 1523466033000],\n [68200001, 1523541144000],\n [68210000, 1523615555000],\n [68220000, 1523672390000],\n [68230000, 1523713946000],\n [68240000, 1523766455000],\n [68250001, 1523798848000],\n [68260000, 1523863242000],\n [68270001, 1523901468000],\n [68280000, 1523973786000],\n [68290001, 1524047744000],\n [68300001, 1524107018000],\n [68310000, 1524154044000],\n [68320001, 1524229042000],\n [68330000, 1524286922000],\n [68340000, 1524323212000],\n [68350000, 1524381473000],\n [68360000, 1524409014000],\n [68370000, 1524478747000],\n [68380001, 1524525543000],\n [68390000, 1524580850000],\n [68400000, 1524653994000],\n [68410000, 1524709045000],\n [68420000, 1524755100000],\n [68430000, 1524826488000],\n [68440000, 1524865483000],\n [68450000, 1524916337000],\n [68460001, 1524953059000],\n [68470000, 1524999613000],\n [68480001, 1525025191000],\n [68490000, 1525080615000],\n [68500002, 1525101539000],\n [68510003, 1525162635000],\n [68520002, 1525187749000],\n [68530000, 1525245718000],\n [68540000, 1525273420000],\n [68550000, 1525327908000],\n [68560001, 1525359119000],\n [68570002, 1525416288000],\n [68580000, 1525447801000],\n [68590001, 1525506649000],\n [68600004, 1525534849000],\n [68610000, 1525591851000],\n [68620003, 1525618511000],\n [68630000, 1525643849000],\n [68640001, 1525701190000],\n [68650000, 1525767545000],\n [68660000, 1525808401000],\n [68670000, 1525876015000],\n [68680000, 1525949150000],\n [68690000, 1526007825000],\n [68700000, 1526056163000],\n [68710000, 1526122821000],\n [68720000, 1526169299000],\n [68730000, 1526210632000],\n [68740001, 1526245158000],\n [68750000, 1526306217000],\n [68760000, 1526373997000],\n [68770001, 1526422460000],\n [68780000, 1526482497000],\n [68790000, 1526556215000],\n [68800001, 1526614484000],\n [68810000, 1526660277000],\n [68820001, 1526726230000],\n [68830000, 1526766179000],\n [68840000, 1526815391000],\n [68850000, 1526860749000],\n [68860001, 1526914592000],\n [68870001, 1526986814000],\n [68880000, 1527046837000],\n [68890007, 1527089275000],\n [68900002, 1527162614000],\n [68910000, 1527220624000],\n [68920000, 1527263825000],\n [68930000, 1527328049000],\n [68940001, 1527361209000],\n [68950004, 1527416538000],\n [68960000, 1527442251000],\n [68970000, 1527513976000],\n [68980001, 1527583168000],\n [68990000, 1527634736000],\n [69000000, 1527691902000],\n [69010001, 1527766421000],\n [69020000, 1527823668000],\n [69030000, 1527868950000],\n [69040000, 1527935212000],\n [69050000, 1527978877000],\n [69060000, 1528025307000],\n [69070002, 1528064391000],\n [69080001, 1528123377000],\n [69090000, 1528198458000],\n [69100000, 1528260415000],\n [69110001, 1528302226000],\n [69120000, 1528377728000],\n [69130000, 1528447154000],\n [69140002, 1528488138000],\n [69150000, 1528545941000],\n [69160000, 1528592623000],\n [69170000, 1528632255000],\n [69180000, 1528680956000],\n [69190005, 1528729587000],\n [69200000, 1528803749000],\n [69210000, 1528862130000],\n [69220000, 1528905872000],\n [69230001, 1528981229000],\n [69240000, 1529046681000],\n [69250000, 1529088379000],\n [69260000, 1529150795000],\n [69270000, 1529200936000],\n [69280000, 1529240724000],\n [69290000, 1529300926000],\n [69300003, 1529343151000],\n [69310000, 1529416036000],\n [69320002, 1529486838000],\n [69330000, 1529539015000],\n [69340000, 1529593237000],\n [69350001, 1529667628000],\n [69360000, 1529722072000],\n [69370002, 1529763311000],\n [69380002, 1529818645000],\n [69390000, 1529851102000],\n [69400001, 1529920747000],\n [69410001, 1529975408000],\n [69420002, 1530027810000],\n [69430000, 1530103971000],\n [69440001, 1530173255000],\n [69450000, 1530224811000],\n [69460000, 1530283275000],\n [69470000, 1530342956000],\n [69480002, 1530373895000],\n [69490000, 1530432807000],\n [69500000, 1530461484000],\n [69510002, 1530536210000],\n [69520001, 1530605315000],\n [69530002, 1530658087000],\n [69540000, 1530716093000],\n [69550001, 1530790105000],\n [69560000, 1530854239000],\n [69570000, 1530895115000],\n [69580000, 1530957423000],\n [69590000, 1530988766000],\n [69600000, 1531046898000],\n [69610000, 1531091459000],\n [69620002, 1531148189000],\n [69630004, 1531223860000],\n [69640000, 1531291270000],\n [69650000, 1531340220000],\n [69660000, 1531407337000],\n [69670000, 1531481045000],\n [69680000, 1531538663000],\n [69690004, 1531581179000],\n [69700004, 1531642256000],\n [69710000, 1531674430000],\n [69720001, 1531736842000],\n [69730000, 1531780044000],\n [69740000, 1531839242000],\n [69750002, 1531912872000],\n [69760000, 1531978052000],\n [69770001, 1532024345000],\n [69780000, 1532096007000],\n [69790001, 1532160363000],\n [69800000, 1532195393000],\n [69810001, 1532255368000],\n [69820001, 1532295023000],\n [69830001, 1532355365000],\n [69840004, 1532425955000],\n [69850001, 1532481458000],\n [69860002, 1532531549000],\n [69870001, 1532604726000],\n [69880002, 1532664516000],\n [69890000, 1532707078000],\n [69900000, 1532772952000],\n [69910001, 1532811097000],\n [69920001, 1532864268000],\n [69930000, 1532911701000],\n [69940001, 1532961232000],\n [69950000, 1533028668000],\n [69960000, 1533065978000],\n [69970000, 1533128703000],\n [69980000, 1533187983000],\n [69990000, 1533224798000],\n [70000001, 1533293626000],\n [70010000, 1533341881000],\n [70020002, 1533388770000],\n [70030003, 1533441440000],\n [70040003, 1533475406000],\n [70050000, 1533530540000],\n [70060000, 1533568278000],\n [70070001, 1533634816000],\n [70080000, 1533663670000],\n [70090001, 1533727595000],\n [70100000, 1533754702000],\n [70110001, 1533815063000],\n [70120001, 1533853793000],\n [70130001, 1533907802000],\n [70140001, 1533965009000],\n [70150000, 1534003521000],\n [70160001, 1534068838000],\n [70170003, 1534116792000],\n [70180000, 1534167758000],\n [70190000, 1534226116000],\n [70200000, 1534261750000],\n [70210000, 1534324674000],\n [70220001, 1534354181000],\n [70230002, 1534417528000],\n [70240001, 1534457754000],\n [70250000, 1534510811000],\n [70260000, 1534559909000],\n [70270004, 1534599747000],\n [70280000, 1534654766000],\n [70290000, 1534689851000],\n [70300000, 1534757233000],\n [70310002, 1534799115000],\n [70320000, 1534859703000],\n [70330001, 1534925365000],\n [70340000, 1534965074000],\n [70350000, 1535029985000],\n [70360002, 1535091868000],\n [70370000, 1535129089000],\n [70380001, 1535193273000],\n [70390000, 1535240430000],\n [70400001, 1535286462000],\n [70410000, 1535341070000],\n [70420002, 1535383883000],\n [70430000, 1535457290000],\n [70440000, 1535518458000],\n [70450000, 1535560250000],\n [70460000, 1535633551000],\n [70470001, 1535689162000],\n [70480001, 1535727872000],\n [70490000, 1535789665000],\n [70500002, 1535821987000],\n [70510000, 1535882378000],\n [70520000, 1535916475000],\n [70530001, 1535983603000],\n [70540000, 1536050503000],\n [70550000, 1536088917000],\n [70560000, 1536157094000],\n [70570000, 1536231786000],\n [70580000, 1536296501000],\n [70590000, 1536340085000],\n [70600002, 1536406617000],\n [70610000, 1536455059000],\n [70620000, 1536495553000],\n [70630001, 1536547843000],\n [70640000, 1536593072000],\n [70650000, 1536668563000],\n [70660000, 1536736908000],\n [70670001, 1536780704000],\n [70680000, 1536848733000],\n [70690000, 1536921949000],\n [70700001, 1536973292000],\n [70710001, 1537017778000],\n [70720000, 1537069850000],\n [70730000, 1537107049000],\n [70740000, 1537164128000],\n [70750000, 1537196639000],\n [70760000, 1537270358000],\n [70770000, 1537331917000],\n [70780001, 1537378349000],\n [70790000, 1537452583000],\n [70800002, 1537526264000],\n [70810000, 1537581934000],\n [70820000, 1537627198000],\n [70830002, 1537688897000],\n [70840000, 1537722143000],\n [70850000, 1537780273000],\n [70860000, 1537804597000],\n [70870000, 1537872500000],\n [70880000, 1537917687000],\n [70890000, 1537971507000],\n [70900001, 1538039774000],\n [70910000, 1538089855000],\n [70920000, 1538147137000],\n [70930000, 1538210737000],\n [70940000, 1538242739000],\n [70950000, 1538297704000],\n [70960000, 1538320420000],\n [70970000, 1538386328000],\n [70980000, 1538422301000],\n [70990000, 1538489010000],\n [71000000, 1538556741000],\n [71010001, 1538597401000],\n [71020000, 1538661225000],\n [71030000, 1538728102000],\n [71040000, 1538761843000],\n [71050000, 1538820539000],\n [71060002, 1538854718000],\n [71070000, 1538911539000],\n [71080002, 1538957736000],\n [71090000, 1539001928000],\n [71100000, 1539061140000],\n [71110003, 1539102071000],\n [71120001, 1539174711000],\n [71130003, 1539239471000],\n [71140000, 1539279611000],\n [71150003, 1539352332000],\n [71160002, 1539417036000],\n [71170001, 1539450581000],\n [71180000, 1539511324000],\n [71190000, 1539540615000],\n [71200000, 1539610136000],\n [71210000, 1539681105000],\n [71220001, 1539738088000],\n [71230000, 1539788591000],\n [71240001, 1539861270000],\n [71250000, 1539922323000],\n [71260003, 1539968212000],\n [71270000, 1540035844000],\n [71280000, 1540088174000],\n [71290000, 1540127974000],\n [71300000, 1540194402000],\n [71310000, 1540241544000],\n [71320000, 1540306298000],\n [71330001, 1540382709000],\n [71340000, 1540449555000],\n [71350001, 1540496571000],\n [71360000, 1540564024000],\n [71370000, 1540627992000],\n [71380000, 1540662656000],\n [71390000, 1540724624000],\n [71400002, 1540774195000],\n [71410002, 1540825418000],\n [71420000, 1540900181000],\n [71430001, 1540942900000],\n [71440000, 1540988683000],\n [71450000, 1541013088000],\n [71460001, 1541078575000],\n [71470000, 1541149141000],\n [71480000, 1541200241000],\n [71490000, 1541251238000],\n [71500000, 1541308607000],\n [71510000, 1541341872000],\n [71520000, 1541412652000],\n [71530000, 1541472532000],\n [71540000, 1541520635000],\n [71550000, 1541596851000],\n [71560001, 1541668759000],\n [71570000, 1541726871000],\n [71580001, 1541777843000],\n [71590000, 1541845928000],\n [71600002, 1541888736000],\n [71610000, 1541934928000],\n [71620000, 1541964051000],\n [71630000, 1542031527000],\n [71640000, 1542103996000],\n [71650000, 1542165525000],\n [71660001, 1542213349000],\n [71670001, 1542288816000],\n [71680000, 1542361750000],\n [71690000, 1542418474000],\n [71700000, 1542464082000],\n [71710000, 1542521873000],\n [71720000, 1542551494000],\n [71730001, 1542621946000],\n [71740002, 1542667578000],\n [71750000, 1542722500000],\n [71760000, 1542791211000],\n [71770000, 1542824840000],\n [71780003, 1542892813000],\n [71790000, 1542943408000],\n [71800000, 1542982468000],\n [71810000, 1543043560000],\n [71820006, 1543080139000],\n [71830000, 1543142640000],\n [71840000, 1543192718000],\n [71850002, 1543246324000],\n [71860003, 1543323743000],\n [71870001, 1543396323000],\n [71880000, 1543454076000],\n [71890004, 1543506855000],\n [71900000, 1543582963000],\n [71910000, 1543644113000],\n [71920001, 1543681587000],\n [71930001, 1543744321000],\n [71940001, 1543782600000],\n [71950001, 1543847396000],\n [71960000, 1543910919000],\n [71970002, 1543949491000],\n [71980000, 1544014940000],\n [71990002, 1544077125000],\n [72000002, 1544121143000],\n [72010003, 1544190546000],\n [72020000, 1544254822000],\n [72030000, 1544292984000],\n [72040001, 1544353258000],\n [72050000, 1544397195000],\n [72060000, 1544454946000],\n [72070000, 1544530756000],\n [72080002, 1544600454000],\n [72090000, 1544654112000],\n [72100000, 1544712024000],\n [72110000, 1544784886000],\n [72120000, 1544843542000],\n [72130002, 1544886475000],\n [72140000, 1544947989000],\n [72150000, 1544978552000],\n [72160000, 1545051850000],\n [72170000, 1545120134000],\n [72180000, 1545174503000],\n [72190000, 1545232427000],\n [72200000, 1545306855000],\n [72210000, 1545371245000],\n [72220000, 1545413187000],\n [72230000, 1545477616000],\n [72240001, 1545523994000],\n [72250000, 1545568189000],\n [72260001, 1545607132000],\n [72270001, 1545648313000],\n [72280000, 1545666632000],\n [72290000, 1545723283000],\n [72300002, 1545749364000],\n [72310000, 1545808557000],\n [72320001, 1545839607000],\n [72330003, 1545905923000],\n [72340001, 1545937307000],\n [72350001, 1545997652000],\n [72360002, 1546044137000],\n [72370001, 1546089745000],\n [72380000, 1546143723000],\n [72390000, 1546181512000],\n [72400000, 1546233763000],\n [72410000, 1546262657000],\n [72420000, 1546274077000],\n [72430000, 1546317453000],\n [72440000, 1546348206000],\n [72450000, 1546396049000],\n [72460000, 1546437174000],\n [72470000, 1546493281000],\n [72480000, 1546527962000],\n [72490000, 1546592449000],\n [72500000, 1546629592000],\n [72510001, 1546688629000],\n [72520000, 1546734599000],\n [72530004, 1546775131000],\n [72540001, 1546815138000],\n [72550002, 1546870083000],\n [72560000, 1546939278000],\n [72570000, 1546987244000],\n [72580000, 1547043211000],\n [72590003, 1547110805000],\n [72600000, 1547152350000],\n [72610000, 1547214363000],\n [72620001, 1547271736000],\n [72630000, 1547305600000],\n [72640001, 1547363893000],\n [72650000, 1547394641000],\n [72660000, 1547454693000],\n [72670001, 1547482786000],\n [72680000, 1547554701000],\n [72690000, 1547614636000],\n [72700000, 1547656970000],\n [72710000, 1547729496000],\n [72720000, 1547795122000],\n [72730000, 1547836724000],\n [72740000, 1547898735000],\n [72750001, 1547945548000],\n [72760000, 1547986028000],\n [72770002, 1548033768000],\n [72780000, 1548082371000],\n [72790001, 1548152633000],\n [72800000, 1548202317000],\n [72810000, 1548253713000],\n [72820001, 1548321357000],\n [72830000, 1548360891000],\n [72840000, 1548423665000],\n [72850001, 1548480132000],\n [72860002, 1548514935000],\n [72870001, 1548574649000],\n [72880000, 1548604181000],\n [72890001, 1548677054000],\n [72900001, 1548739463000],\n [72910000, 1548781107000],\n [72920002, 1548853626000],\n [72930000, 1548919152000],\n [72940000, 1548951077000],\n [72950000, 1549019715000],\n [72960001, 1549068329000],\n [72970003, 1549111971000],\n [72980001, 1549159968000],\n [72990000, 1549196188000],\n [73000000, 1549237832000],\n [73010002, 1549289058000],\n [73020002, 1549354695000],\n [73030005, 1549392741000],\n [73040000, 1549458883000],\n [73050003, 1549520105000],\n [73060002, 1549555854000],\n [73070000, 1549627217000],\n [73080001, 1549681748000],\n [73090000, 1549720758000],\n [73100002, 1549772898000],\n [73110000, 1549807132000],\n [73120002, 1549856659000],\n [73130000, 1549890810000],\n [73140001, 1549946094000],\n [73150001, 1549986080000],\n [73160000, 1550056521000],\n [73170000, 1550084186000],\n [73180001, 1550140671000],\n [73190001, 1550159800000],\n [73200001, 1550224779000],\n [73210001, 1550260933000],\n [73220000, 1550316429000],\n [73230000, 1550353828000],\n [73240001, 1550400558000],\n [73250000, 1550425730000],\n [73260001, 1550492995000],\n [73270000, 1550546568000],\n [73280000, 1550587970000],\n [73290000, 1550653467000],\n [73300001, 1550684542000],\n [73310001, 1550751102000],\n [73320000, 1550793473000],\n [73330001, 1550841517000],\n [73340001, 1550881298000],\n [73350002, 1550922499000],\n [73360001, 1550958074000],\n [73370000, 1551006541000],\n [73380000, 1551041014000],\n [73390001, 1551099431000],\n [73400002, 1551157089000],\n [73410000, 1551196014000],\n [73420000, 1551266496000],\n [73430001, 1551314543000],\n [73440000, 1551362590000],\n [73450002, 1551420873000],\n [73460000, 1551456707000],\n [73470002, 1551518312000],\n [73480001, 1551546935000],\n [73490000, 1551601645000],\n [73500000, 1551625574000],\n [73510001, 1551692198000],\n [73520001, 1551733459000],\n [73530000, 1551794253000],\n [73540000, 1551856997000],\n [73550002, 1551892186000],\n [73560001, 1551961298000],\n [73570003, 1552017331000],\n [73580000, 1552059548000],\n [73590000, 1552120744000],\n [73600000, 1552148547000],\n [73610000, 1552206052000],\n [73620001, 1552232092000],\n [73630002, 1552299864000],\n [73640000, 1552343880000],\n [73650000, 1552398957000],\n [73660001, 1552464772000],\n [73670000, 1552499469000],\n [73680000, 1552567147000],\n [73690000, 1552619001000],\n [73700000, 1552662176000],\n [73710000, 1552721307000],\n [73720000, 1552751752000],\n [73730000, 1552808226000],\n [73740000, 1552835248000],\n [73750000, 1552902939000],\n [73760001, 1552954284000],\n [73770000, 1553006331000],\n [73780000, 1553073115000],\n [73790000, 1553113343000],\n [73800001, 1553169072000],\n [73810000, 1553216422000],\n [73820000, 1553265664000],\n [73830001, 1553325454000],\n [73840001, 1553356922000],\n [73850000, 1553416024000],\n [73860000, 1553442284000],\n [73870000, 1553511233000],\n [73880001, 1553558316000],\n [73890000, 1553609553000],\n [73900001, 1553674157000],\n [73910001, 1553708617000],\n [73920000, 1553776601000],\n [73930000, 1553833131000],\n [73940001, 1553872563000],\n [73950003, 1553931861000],\n [73960001, 1553960734000],\n [73970000, 1554014776000],\n [73980000, 1554042148000],\n [73990000, 1554093422000],\n [74000000, 1554131333000],\n [74010000, 1554199206000],\n [74020000, 1554250709000],\n [74030000, 1554302489000],\n [74040001, 1554372228000],\n [74050000, 1554423465000],\n [74060000, 1554474600000],\n [74070000, 1554534629000],\n [74080000, 1554567156000],\n [74090001, 1554626234000],\n [74100000, 1554651766000],\n [74110002, 1554721970000],\n [74120000, 1554780065000],\n [74130000, 1554824868000],\n [74140001, 1554899176000],\n [74150003, 1554964923000],\n [74160000, 1555009812000],\n [74170000, 1555078977000],\n [74180000, 1555142601000],\n [74190000, 1555177120000],\n [74200000, 1555233822000],\n [74210000, 1555258531000],\n [74220000, 1555330359000],\n [74230000, 1555394652000],\n [74240000, 1555439575000],\n [74250002, 1555509015000],\n [74260000, 1555581255000],\n [74270000, 1555633380000],\n [74280001, 1555686276000],\n [74290000, 1555749001000],\n [74300000, 1555780505000],\n [74310000, 1555837371000],\n [74320001, 1555862390000],\n [74330000, 1555933600000],\n [74340000, 1555989889000],\n [74350000, 1556034502000],\n [74360001, 1556107770000],\n [74370000, 1556167348000],\n [74380000, 1556208193000],\n [74390000, 1556281031000],\n [74400001, 1556331452000],\n [74410004, 1556370777000],\n [74420000, 1556420818000],\n [74430000, 1556458605000],\n [74440000, 1556511455000],\n [74450000, 1556546313000],\n [74460001, 1556593795000],\n [74470000, 1556624857000],\n [74480000, 1556637699000],\n [74490001, 1556688527000],\n [74500000, 1556718811000],\n [74510001, 1556765309000],\n [74520000, 1556802015000],\n [74530002, 1556849353000],\n [74540002, 1556889643000],\n [74550002, 1556939986000],\n [74560000, 1556977364000],\n [74570000, 1557023415000],\n [74580000, 1557059372000],\n [74590000, 1557096900000],\n [74600001, 1557140408000],\n [74610000, 1557172924000],\n [74620003, 1557238020000],\n [74630000, 1557309534000],\n [74640000, 1557363295000],\n [74650000, 1557414782000],\n [74660001, 1557488614000],\n [74670001, 1557541721000],\n [74680002, 1557583324000],\n [74690001, 1557636382000],\n [74700000, 1557669411000],\n [74710000, 1557733896000],\n [74720000, 1557775631000],\n [74730000, 1557842303000],\n [74740000, 1557910870000],\n [74750000, 1557960886000],\n [74760000, 1558019461000],\n [74770000, 1558092814000],\n [74780000, 1558146423000],\n [74790000, 1558188463000],\n [74800001, 1558243324000],\n [74810000, 1558274890000],\n [74820002, 1558338702000],\n [74830000, 1558378003000],\n [74840000, 1558445935000],\n [74850002, 1558515890000],\n [74860001, 1558566351000],\n [74870001, 1558622469000],\n [74880003, 1558691372000],\n [74890000, 1558739188000],\n [74900002, 1558789053000],\n [74910001, 1558841401000],\n [74920000, 1558876318000],\n [74930001, 1558932416000],\n [74940001, 1558974705000],\n [74950000, 1559048815000],\n [74960000, 1559117085000],\n [74970001, 1559163704000],\n [74980000, 1559226208000],\n [74990000, 1559296147000],\n [75000000, 1559341839000],\n [75010000, 1559391087000],\n [75020001, 1559440340000],\n [75030000, 1559478346000],\n [75040001, 1559528747000],\n [75050000, 1559574491000],\n [75060002, 1559649834000],\n [75070000, 1559711830000],\n [75080000, 1559753905000],\n [75090002, 1559824921000],\n [75100000, 1559886875000],\n [75110004, 1559923687000],\n [75120000, 1559985944000],\n [75130000, 1560016514000],\n [75140000, 1560072057000],\n [75150001, 1560095010000],\n [75160001, 1560165185000],\n [75170003, 1560218438000],\n [75180000, 1560265400000],\n [75190000, 1560336925000],\n [75200000, 1560388429000],\n [75210001, 1560438284000],\n [75220000, 1560510607000],\n [75230000, 1560564573000],\n [75240000, 1560605980000],\n [75250000, 1560656737000],\n [75260001, 1560691792000],\n [75270000, 1560751011000],\n [75280001, 1560791029000],\n [75290000, 1560862353000],\n [75300000, 1560927205000],\n [75310001, 1560964659000],\n [75320000, 1561035219000],\n [75330000, 1561095592000],\n [75340000, 1561133284000],\n [75350001, 1561193649000],\n [75360000, 1561223789000],\n [75370002, 1561281019000],\n [75380000, 1561308233000],\n [75390001, 1561379138000],\n [75400000, 1561437826000],\n [75410000, 1561481017000],\n [75420000, 1561553132000],\n [75430000, 1561616259000],\n [75440000, 1561655761000],\n [75450001, 1561726404000],\n [75460000, 1561782418000],\n [75470000, 1561819049000],\n [75480000, 1561872925000],\n [75490000, 1561903030000],\n [75500003, 1561960317000],\n [75510001, 1561996854000],\n [75520002, 1562067922000],\n [75530002, 1562124498000],\n [75540000, 1562167665000],\n [75550001, 1562240504000],\n [75560000, 1562298567000],\n [75570000, 1562341575000],\n [75580000, 1562406542000],\n [75590000, 1562437694000],\n [75600004, 1562491887000],\n [75610000, 1562514825000],\n [75620003, 1562585131000],\n [75630000, 1562636339000],\n [75640000, 1562683191000],\n [75650002, 1562753859000],\n [75660000, 1562800478000],\n [75670000, 1562854095000],\n [75680000, 1562918120000],\n [75690001, 1562950801000],\n [75700000, 1563010535000],\n [75710002, 1563041761000],\n [75720002, 1563099712000],\n [75730002, 1563130877000],\n [75740001, 1563186079000],\n [75750000, 1563218209000],\n [75760000, 1563282794000],\n [75770000, 1563344879000],\n [75780001, 1563381629000],\n [75790000, 1563453956000],\n [75800000, 1563517085000],\n [75810000, 1563553688000],\n [75820000, 1563613736000],\n [75830003, 1563643643000],\n [75840000, 1563703356000],\n [75850000, 1563734344000],\n [75860001, 1563799753000],\n [75870001, 1563858045000],\n [75880000, 1563898194000],\n [75890000, 1563968622000],\n [75900000, 1564027533000],\n [75910001, 1564069923000],\n [75920000, 1564139955000],\n [75930000, 1564192711000],\n [75940000, 1564235050000],\n [75950000, 1564290089000],\n [75960001, 1564323613000],\n [75970002, 1564388017000],\n [75980000, 1564423582000],\n [75990000, 1564490729000],\n [76000000, 1564547542000],\n [76010000, 1564586012000],\n [76020002, 1564650865000],\n [76030000, 1564685184000],\n [76040000, 1564749129000],\n [76050000, 1564798987000],\n [76060000, 1564840050000],\n [76070000, 1564892912000],\n [76080000, 1564926788000],\n [76090001, 1564986889000],\n [76100001, 1565020129000],\n [76110000, 1565086406000],\n [76120000, 1565118741000],\n [76130002, 1565180359000],\n [76140000, 1565220758000],\n [76150001, 1565267646000],\n [76160002, 1565313456000],\n [76170000, 1565358718000],\n [76180000, 1565413169000],\n [76190000, 1565450269000],\n [76200001, 1565511983000],\n [76210001, 1565546923000],\n [76220002, 1565607908000],\n [76230001, 1565656671000],\n [76240000, 1565703462000],\n [76250001, 1565759227000],\n [76260001, 1565795841000],\n [76270000, 1565855146000],\n [76280000, 1565883889000],\n [76290000, 1565946107000],\n [76300000, 1565978408000],\n [76310000, 1566039436000],\n [76320002, 1566079948000],\n [76330003, 1566125560000],\n [76340000, 1566153619000],\n [76350001, 1566216889000],\n [76360000, 1566265859000],\n [76370000, 1566310563000],\n [76380000, 1566372197000],\n [76390000, 1566403363000],\n [76400000, 1566471275000],\n [76410001, 1566509566000],\n [76420001, 1566565068000],\n [76430000, 1566611680000],\n [76440001, 1566652231000],\n [76450003, 1566702182000],\n [76460001, 1566740305000],\n [76470000, 1566799829000],\n [76480000, 1566837513000],\n [76490000, 1566908438000],\n [76500000, 1566967629000],\n [76510002, 1567007870000],\n [76520000, 1567078974000],\n [76530003, 1567135140000],\n [76540000, 1567178242000],\n [76550000, 1567236718000],\n [76560000, 1567264875000],\n [76570000, 1567320844000],\n [76580000, 1567349250000],\n [76590000, 1567414982000],\n [76600000, 1567457714000],\n [76610000, 1567518907000],\n [76620000, 1567587982000],\n [76630002, 1567637441000],\n [76640000, 1567694711000],\n [76650000, 1567766416000],\n [76660002, 1567819638000],\n [76670005, 1567864904000],\n [76680002, 1567919174000],\n [76690000, 1567951278000],\n [76700001, 1568011851000],\n [76710002, 1568047453000],\n [76720000, 1568119256000],\n [76730003, 1568183199000],\n [76740001, 1568225531000],\n [76750000, 1568295584000],\n [76760000, 1568362361000],\n [76770002, 1568402570000],\n [76780000, 1568463499000],\n [76790000, 1568513761000],\n [76800001, 1568553173000],\n [76810002, 1568604342000],\n [76820001, 1568640092000],\n [76830001, 1568699299000],\n [76840001, 1568738525000],\n [76850003, 1568811673000],\n [76860000, 1568875384000],\n [76870000, 1568917822000],\n [76880000, 1568986806000],\n [76890002, 1569046157000],\n [76900000, 1569080246000],\n [76910001, 1569139762000],\n [76920001, 1569168747000],\n [76930000, 1569226998000],\n [76940000, 1569253569000],\n [76950000, 1569325964000],\n [76960000, 1569386704000],\n [76970000, 1569431406000],\n [76980001, 1569505424000],\n [76990002, 1569576236000],\n [77000002, 1569626464000],\n [77010000, 1569675238000],\n [77020000, 1569727667000],\n [77030000, 1569762931000],\n [77040000, 1569822825000],\n [77050000, 1569858533000],\n [77060000, 1569929216000],\n [77070000, 1569980978000],\n [77080002, 1570027438000],\n [77090001, 1570095720000],\n [77100001, 1570135068000],\n [77110000, 1570195330000],\n [77120000, 1570248898000],\n [77130001, 1570284981000],\n [77140002, 1570336741000],\n [77150000, 1570366946000],\n [77160000, 1570417375000],\n [77170000, 1570459051000],\n [77180000, 1570526961000],\n [77190001, 1570565629000],\n [77200002, 1570627858000],\n [77210000, 1570687028000],\n [77220000, 1570724875000],\n [77230001, 1570796190000],\n [77240000, 1570847380000],\n [77250001, 1570883067000],\n [77260000, 1570926372000],\n [77270000, 1570963263000],\n [77280000, 1570984991000],\n [77290000, 1571041957000],\n [77300001, 1571067701000],\n [77310000, 1571139043000],\n [77320001, 1571193128000],\n [77330000, 1571239423000],\n [77340005, 1571312887000],\n [77350000, 1571369811000],\n [77360002, 1571411950000],\n [77370000, 1571473839000],\n [77380000, 1571505313000],\n [77390000, 1571563317000],\n [77400000, 1571591232000],\n [77410000, 1571660678000],\n [77420000, 1571712562000],\n [77430003, 1571750399000],\n [77440000, 1571813293000],\n [77450000, 1571851607000],\n [77460001, 1571923655000],\n [77470000, 1571992236000],\n [77480000, 1572037784000],\n [77490000, 1572092494000],\n [77500000, 1572142437000],\n [77510000, 1572180148000],\n [77520001, 1572231861000],\n [77530000, 1572275768000],\n [77540000, 1572348116000],\n [77550001, 1572405568000],\n [77560000, 1572447709000],\n [77570001, 1572501282000],\n [77580000, 1572529172000],\n [77590001, 1572568204000],\n [77600000, 1572616006000],\n [77610000, 1572672492000],\n [77620001, 1572707631000],\n [77630000, 1572765930000],\n [77640000, 1572795506000],\n [77650002, 1572855145000],\n [77660003, 1572883288000],\n [77670000, 1572955653000],\n [77680002, 1573016599000],\n [77690001, 1573058789000],\n [77700001, 1573131780000],\n [77710002, 1573197783000],\n [77720000, 1573239769000],\n [77730000, 1573299891000],\n [77740000, 1573348388000],\n [77750000, 1573387544000],\n [77760000, 1573428601000],\n [77770000, 1573478893000],\n [77780003, 1573537253000],\n [77790000, 1573576677000],\n [77800000, 1573648497000],\n [77810000, 1573711114000],\n [77820000, 1573750607000],\n [77830001, 1573822482000],\n [77840000, 1573880260000],\n [77850001, 1573917037000],\n [77860000, 1573977296000],\n [77870000, 1574006064000],\n [77880000, 1574077861000],\n [77890000, 1574136265000],\n [77900000, 1574181839000],\n [77910001, 1574255379000],\n [77920000, 1574323713000],\n [77930002, 1574374417000],\n [77940000, 1574431990000],\n [77950000, 1574490397000],\n [77960002, 1574521934000],\n [77970000, 1574578831000],\n [77980000, 1574607595000],\n [77990001, 1574675031000],\n [78000000, 1574722236000],\n [78010000, 1574778123000],\n [78020000, 1574847408000],\n [78030001, 1574893044000],\n [78040000, 1574949601000],\n [78050000, 1575015696000],\n [78060001, 1575050002000],\n [78070000, 1575112026000],\n [78080000, 1575151289000],\n [78090005, 1575198305000],\n [78100004, 1575233752000],\n [78110000, 1575293230000],\n [78120000, 1575359472000],\n [78130000, 1575396543000],\n [78140000, 1575465710000],\n [78150001, 1575533610000],\n [78160000, 1575579854000],\n [78170000, 1575640986000],\n [78180000, 1575701599000],\n [78190000, 1575733850000],\n [78200001, 1575794252000],\n [78210000, 1575823317000],\n [78220000, 1575896218000],\n [78230000, 1575964173000],\n [78240000, 1576011655000],\n [78250000, 1576073933000],\n [78260001, 1576144389000],\n [78270000, 1576200749000],\n [78280000, 1576250393000],\n [78290000, 1576315055000],\n [78300000, 1576351491000],\n [78310001, 1576406488000],\n [78320000, 1576444214000],\n [78330000, 1576504997000],\n [78340002, 1576574146000],\n [78350000, 1576621106000],\n [78360002, 1576678062000],\n [78370001, 1576746527000],\n [78380000, 1576794604000],\n [78390002, 1576851721000],\n [78400000, 1576911721000],\n [78410004, 1576943227000],\n [78420000, 1577002401000],\n [78430001, 1577028867000],\n [78440001, 1577096620000],\n [78450000, 1577123671000],\n [78460000, 1577184292000],\n [78470001, 1577203292000],\n [78480000, 1577257657000],\n [78490001, 1577283436000],\n [78500000, 1577332465000],\n [78510000, 1577369168000],\n [78520000, 1577418022000],\n [78530001, 1577454785000],\n [78540000, 1577504358000],\n [78550000, 1577541845000],\n [78560002, 1577594977000],\n [78570000, 1577628750000],\n [78580000, 1577681692000],\n [78590000, 1577714761000],\n [78600000, 1577760133000],\n [78610001, 1577789089000],\n [78620000, 1577804530000],\n [78630000, 1577821920000],\n [78640000, 1577860275000],\n [78650001, 1577885897000],\n [78660000, 1577930220000],\n [78670001, 1577968102000],\n [78680000, 1578013562000],\n [78690000, 1578054428000],\n [78700000, 1578097732000],\n [78710000, 1578138315000],\n [78720000, 1578173994000],\n [78730001, 1578218433000],\n [78740001, 1578241469000],\n [78750000, 1578305688000],\n [78760000, 1578337485000],\n [78770000, 1578398338000],\n [78780000, 1578444020000],\n [78790000, 1578491624000],\n [78800001, 1578551468000],\n [78810000, 1578583667000],\n [78820000, 1578649262000],\n [78830000, 1578679125000],\n [78840001, 1578735714000],\n [78850000, 1578763096000],\n [78860001, 1578820711000],\n [78870000, 1578847582000],\n [78880000, 1578904548000],\n [78890001, 1578930264000],\n [78900000, 1578999366000],\n [78910000, 1579045378000],\n [78920001, 1579097395000],\n [78930000, 1579163961000],\n [78940001, 1579201038000],\n [78950000, 1579265770000],\n [78960001, 1579313475000],\n [78970003, 1579352400000],\n [78980000, 1579400812000],\n [78990000, 1579436538000],\n [79000003, 1579479371000],\n [79010001, 1579529582000],\n [79020000, 1579593758000],\n [79030000, 1579628044000],\n [79040000, 1579695257000],\n [79050000, 1579748926000],\n [79060000, 1579791612000],\n [79070000, 1579858764000],\n [79080001, 1579894275000],\n [79090000, 1579950627000],\n [79100002, 1579987385000],\n [79110000, 1580034338000],\n [79120003, 1580058941000],\n [79130000, 1580125354000],\n [79140000, 1580172351000],\n [79150000, 1580219627000],\n [79160000, 1580281139000],\n [79170001, 1580313877000],\n [79180000, 1580381019000],\n [79190000, 1580418004000],\n [79200000, 1580474093000],\n [79210001, 1580516349000],\n [79220001, 1580557493000],\n [79230001, 1580589474000],\n [79240000, 1580635332000],\n [79250000, 1580655762000],\n [79260000, 1580712913000],\n [79270000, 1580742007000],\n [79280002, 1580803170000],\n [79290001, 1580833015000],\n [79300001, 1580898048000],\n [79310000, 1580930509000],\n [79320000, 1580991151000],\n [79330000, 1581040569000],\n [79340001, 1581083505000],\n [79350000, 1581133125000],\n [79360000, 1581166802000],\n [79370000, 1581209820000],\n [79380000, 1581245802000],\n [79390000, 1581268960000],\n [79400000, 1581332594000],\n [79410000, 1581365287000],\n [79420000, 1581414114000],\n [79430000, 1581436278000],\n [79440001, 1581499724000],\n [79450000, 1581527485000],\n [79460002, 1581591921000],\n [79470000, 1581611896000],\n [79480002, 1581664302000],\n [79490000, 1581686246000],\n [79500000, 1581707828000],\n [79510001, 1581755219000],\n [79520000, 1581778876000],\n [79530001, 1581827495000],\n [79540001, 1581855277000],\n [79550000, 1581885174000],\n [79560000, 1581940328000],\n [79570000, 1581979931000],\n [79580000, 1582030075000],\n [79590001, 1582079484000],\n [79600001, 1582120357000],\n [79610000, 1582175729000],\n [79620001, 1582210202000],\n [79630001, 1582270110000],\n [79640001, 1582298785000],\n [79650000, 1582350093000],\n [79660000, 1582377404000],\n [79670000, 1582413033000],\n [79680000, 1582453470000],\n [79690000, 1582476625000],\n [79700000, 1582529117000],\n [79710000, 1582554052000],\n [79720000, 1582608340000],\n [79730000, 1582642389000],\n [79740000, 1582703142000],\n [79750000, 1582733106000],\n [79760000, 1582797396000],\n [79770000, 1582831796000],\n [79780000, 1582891176000],\n [79790000, 1582932604000],\n [79800002, 1582973282000],\n [79810000, 1582993603000],\n [79820000, 1583041517000],\n [79830001, 1583066674000],\n [79840000, 1583097399000],\n [79850000, 1583147549000],\n [79860001, 1583175322000],\n [79870000, 1583230930000],\n [79880001, 1583254210000],\n [79890000, 1583312479000],\n [79900000, 1583337435000],\n [79910000, 1583395809000],\n [79920002, 1583421490000],\n [79930000, 1583478558000],\n [79940000, 1583507226000],\n [79950003, 1583559493000],\n [79960001, 1583588210000],\n [79970000, 1583630350000],\n [79980004, 1583660784000],\n [79990000, 1583680236000],\n [80000000, 1583729581000],\n [80010001, 1583760195000],\n [80020000, 1583800746000],\n [80030001, 1583841420000],\n [80040001, 1583873476000],\n [80050002, 1583924963000],\n [80060001, 1583954200000],\n [80070003, 1584013619000],\n [80080002, 1584053110000],\n [80090000, 1584098273000],\n [80100001, 1584123740000],\n [80110000, 1584172919000],\n [80120000, 1584196207000],\n [80130000, 1584236963000],\n [80140000, 1584268538000],\n [80150000, 1584288460000],\n [80160004, 1584346855000],\n [80170000, 1584374092000],\n [80180000, 1584433499000],\n [80190000, 1584460885000],\n [80200001, 1584520112000],\n [80210000, 1584547904000],\n [80220001, 1584607409000],\n [80230002, 1584633704000],\n [80240001, 1584689221000],\n [80250001, 1584717343000],\n [80260000, 1584769637000],\n [80270000, 1584799213000],\n [80280001, 1584844859000],\n [80290004, 1584876896000],\n [80300001, 1584901795000],\n [80310000, 1584960974000],\n [80320000, 1584994959000],\n [80330000, 1585050808000],\n [80340001, 1585093198000],\n [80350000, 1585140198000],\n [80360000, 1585188885000],\n [80370000, 1585229910000],\n [80380000, 1585282846000],\n [80390000, 1585318135000],\n [80400000, 1585366586000],\n [80410000, 1585398047000],\n [80420000, 1585431266000],\n [80430000, 1585471931000],\n [80440000, 1585493157000],\n [80450000, 1585546072000],\n [80460000, 1585578800000],\n [80470001, 1585632499000],\n [80480000, 1585664658000],\n [80490000, 1585710656000],\n [80500000, 1585745275000],\n [80510000, 1585784723000],\n [80520001, 1585829200000],\n [80530001, 1585869472000],\n [80540000, 1585914540000],\n [80550000, 1585951327000],\n [80560000, 1585994226000],\n [80570000, 1586016746000],\n [80580001, 1586065316000],\n [80590000, 1586090070000],\n [80600000, 1586122548000],\n [80610001, 1586171687000],\n [80620001, 1586201295000],\n [80630001, 1586256244000],\n [80640000, 1586285461000],\n [80650001, 1586340914000],\n [80660000, 1586366212000],\n [80670000, 1586423226000],\n [80680003, 1586448333000],\n [80690001, 1586505875000],\n [80700000, 1586531864000],\n [80710002, 1586583545000],\n [80720000, 1586611358000],\n [80730001, 1586649157000],\n [80740000, 1586681597000],\n [80750000, 1586701176000],\n [80760000, 1586745365000],\n [80770000, 1586780528000],\n [80780000, 1586814400000],\n [80790000, 1586861417000],\n [80800000, 1586886787000],\n [80810000, 1586941592000],\n [80820000, 1586965088000],\n [80830001, 1587020675000],\n [80840001, 1587048413000],\n [80850004, 1587098709000],\n [80860001, 1587129781000],\n [80870000, 1587171493000],\n [80880000, 1587203816000],\n [80890000, 1587223661000],\n [80900000, 1587267891000],\n [80910001, 1587293885000],\n [80920000, 1587311373000],\n [80930000, 1587362365000],\n [80940000, 1587390170000],\n [80950000, 1587434564000],\n [80960004, 1587470310000],\n [80970001, 1587500856000],\n [80980000, 1587548549000],\n [80990001, 1587571495000],\n [81000000, 1587623222000],\n [81010000, 1587650355000],\n [81020000, 1587695608000],\n [81030000, 1587729330000],\n [81040000, 1587758238000],\n [81050002, 1587802832000],\n [81060000, 1587825583000],\n [81070001, 1587868470000],\n [81080000, 1587895722000],\n [81090001, 1587914447000],\n [81100001, 1587963144000],\n [81110000, 1587991996000],\n [81120001, 1588028404000],\n [81130002, 1588069594000],\n [81140001, 1588092759000],\n [81150000, 1588142605000],\n [81160002, 1588166470000],\n [81170000, 1588206886000],\n [81180000, 1588243564000],\n [81190000, 1588264193000],\n [81200000, 1588314060000],\n [81210001, 1588339106000],\n [81220000, 1588373618000],\n [81230000, 1588407867000],\n [81240000, 1588429734000],\n [81250000, 1588469180000],\n [81260000, 1588497556000],\n [81270000, 1588517856000],\n [81280000, 1588557854000],\n [81290000, 1588585602000],\n [81300001, 1588604457000],\n [81310000, 1588639853000],\n [81320001, 1588667014000],\n [81330000, 1588686356000],\n [81340000, 1588716907000],\n [81350001, 1588752094000],\n [81360001, 1588771880000],\n [81370000, 1588806874000],\n [81380001, 1588846871000],\n [81390000, 1588868932000],\n [81400000, 1588921819000],\n [81410001, 1588947698000],\n [81420000, 1588988258000],\n [81430002, 1589018884000],\n [81440001, 1589038387000],\n [81450000, 1589081675000],\n [81460001, 1589106242000],\n [81470001, 1589122621000],\n [81480000, 1589165020000],\n [81490000, 1589198298000],\n [81500000, 1589222553000],\n [81510001, 1589274227000],\n [81520003, 1589297244000],\n [81530001, 1589348690000],\n [81540002, 1589377233000],\n [81550001, 1589419759000],\n [81560000, 1589455384000],\n [81570000, 1589476947000],\n [81580000, 1589529412000],\n [81590001, 1589553375000],\n [81600000, 1589597520000],\n [81610000, 1589626092000],\n [81620000, 1589644519000],\n [81630000, 1589687424000],\n [81640000, 1589712385000],\n [81650000, 1589729438000],\n [81660000, 1589776069000],\n [81670000, 1589805780000],\n [81680000, 1589831247000],\n [81690000, 1589878317000],\n [81700000, 1589900422000],\n [81710000, 1589946751000],\n [81720001, 1589977852000],\n [81730000, 1590004142000],\n [81740000, 1590052120000],\n [81750000, 1590074143000],\n [81760000, 1590122002000],\n [81770000, 1590152424000],\n [81780000, 1590186109000],\n [81790000, 1590223220000],\n [81800000, 1590244149000],\n [81810001, 1590280602000],\n [81820000, 1590309802000],\n [81830000, 1590328866000],\n [81840000, 1590365787000],\n [81850001, 1590404238000],\n [81860000, 1590426625000],\n [81870002, 1590481067000],\n [81880001, 1590505421000],\n [81890001, 1590554488000],\n [81900000, 1590585537000],\n [81910003, 1590627640000],\n [81920000, 1590666740000],\n [81930002, 1590696478000],\n [81940001, 1590746190000],\n [81950001, 1590768658000],\n [81960000, 1590817160000],\n [81970000, 1590843166000],\n [81980000, 1590870668000],\n [81990000, 1590910285000],\n [82000001, 1590930718000],\n [82010000, 1590956360000],\n [82020001, 1591005181000],\n [82030002, 1591026660000],\n [82040000, 1591083085000],\n [82050000, 1591110373000],\n [82060000, 1591163968000],\n [82070000, 1591193751000],\n [82080001, 1591243811000],\n [82090000, 1591277157000],\n [82100001, 1591322136000],\n [82110000, 1591359589000],\n [82120001, 1591389164000],\n [82130000, 1591431941000],\n [82140000, 1591453966000],\n [82150000, 1591494520000],\n [82160000, 1591523716000],\n [82170000, 1591542092000],\n [82180006, 1591592338000],\n [82190000, 1591624821000],\n [82200001, 1591672179000],\n [82210002, 1591708023000],\n [82220000, 1591751015000],\n [82230000, 1591791293000],\n [82240000, 1591830419000],\n [82250000, 1591875827000],\n [82260001, 1591911847000],\n [82270000, 1591961077000],\n [82280000, 1591986746000],\n [82290000, 1592034683000],\n [82300001, 1592057862000],\n [82310001, 1592099204000],\n [82320000, 1592127432000],\n [82330000, 1592145964000],\n [82340000, 1592193978000],\n [82350001, 1592228903000],\n [82360002, 1592277287000],\n [82370001, 1592314508000],\n [82380002, 1592362674000],\n [82390000, 1592400722000],\n [82400000, 1592450790000],\n [82410000, 1592487981000],\n [82420002, 1592538424000],\n [82430000, 1592574401000],\n [82440002, 1592619918000],\n [82450000, 1592653527000],\n [82460001, 1592678101000],\n [82470001, 1592723845000],\n [82480000, 1592746447000],\n [82490002, 1592786843000],\n [82500003, 1592829927000],\n [82510003, 1592872839000],\n [82520000, 1592917116000],\n [82530000, 1592963754000],\n [82540000, 1593004368000],\n [82550000, 1593053016000],\n [82560000, 1593091205000],\n [82570000, 1593140653000],\n [82580000, 1593179016000],\n [82590000, 1593226109000],\n [82600000, 1593260110000],\n [82610000, 1593292880000],\n [82620000, 1593333710000],\n [82630001, 1593355075000],\n [82640000, 1593405247000],\n [82650000, 1593439573000],\n [82660000, 1593489699000],\n [82670001, 1593523829000],\n [82680001, 1593567734000],\n [82690002, 1593608143000],\n [82700001, 1593653460000],\n [82710001, 1593695518000],\n [82720000, 1593745692000],\n [82730000, 1593783686000],\n [82740000, 1593828572000],\n [82750000, 1593862380000],\n [82760001, 1593886312000],\n [82770000, 1593934010000],\n [82780000, 1593956231000],\n [82790002, 1593998674000],\n [82800000, 1594039473000],\n [82810000, 1594075207000],\n [82820000, 1594120404000],\n [82830000, 1594141724000],\n [82840001, 1594200917000],\n [82850001, 1594226720000],\n [82860000, 1594287260000],\n [82870000, 1594314277000],\n [82880000, 1594374352000],\n [82890001, 1594400826000],\n [82900000, 1594452807000],\n [82910003, 1594479187000],\n [82920000, 1594522939000],\n [82930000, 1594552179000],\n [82940000, 1594571960000],\n [82950000, 1594630946000],\n [82960000, 1594655608000],\n [82970001, 1594714679000],\n [82980000, 1594740707000],\n [82990002, 1594799679000],\n [83000000, 1594827097000],\n [83010000, 1594886333000],\n [83020000, 1594914451000],\n [83030000, 1594975465000],\n [83040000, 1595002269000],\n [83050000, 1595054245000],\n [83060000, 1595081829000],\n [83070004, 1595124763000],\n [83080000, 1595154475000],\n [83090001, 1595173905000],\n [83100003, 1595230572000],\n [83110000, 1595257562000],\n [83120001, 1595315003000],\n [83130003, 1595343775000],\n [83140001, 1595399483000],\n [83150000, 1595429817000],\n [83160003, 1595478091000],\n [83170000, 1595508448000],\n [83180000, 1595546386000],\n [83190000, 1595584953000],\n [83200000, 1595607597000],\n [83210000, 1595657153000],\n [83220001, 1595683315000],\n [83230000, 1595717647000],\n [83240000, 1595751744000],\n [83250000, 1595772715000],\n [83260000, 1595818547000],\n [83270002, 1595855249000],\n [83280001, 1595900392000],\n [83290004, 1595940913000],\n [83300001, 1595985442000],\n [83310000, 1596026279000],\n [83320000, 1596067464000],\n [83330000, 1596112206000],\n [83340000, 1596153373000],\n [83350000, 1596196765000],\n [83360000, 1596223051000],\n [83370000, 1596269059000],\n [83380001, 1596292424000],\n [83390000, 1596334336000],\n [83400000, 1596363703000],\n [83410000, 1596381794000],\n [83420000, 1596434923000],\n [83430000, 1596464523000],\n [83440001, 1596516746000],\n [83450000, 1596550377000],\n [83460000, 1596601180000],\n [83470000, 1596635514000],\n [83480001, 1596685585000],\n [83490003, 1596720358000],\n [83500000, 1596766201000],\n [83510000, 1596803270000],\n [83520000, 1596837133000],\n [83530000, 1596878712000],\n [83540000, 1596901234000],\n [83550000, 1596949353000],\n [83560003, 1596977164000],\n [83570000, 1597008775000],\n [83580000, 1597048325000],\n [83590000, 1597071327000],\n [83600001, 1597119083000],\n [83610001, 1597151951000],\n [83620001, 1597194929000],\n [83630000, 1597232364000],\n [83640001, 1597263295000],\n [83650000, 1597310339000],\n [83660001, 1597334343000],\n [83670001, 1597386089000],\n [83680000, 1597413459000],\n [83690003, 1597454239000],\n [83700000, 1597486103000],\n [83710008, 1597506740000],\n [83720000, 1597551335000],\n [83730000, 1597577788000],\n [83740001, 1597597200000],\n [83750000, 1597653183000],\n [83760002, 1597678126000],\n [83770000, 1597734775000],\n [83780001, 1597763020000],\n [83790000, 1597818557000],\n [83800000, 1597847957000],\n [83810000, 1597900828000],\n [83820000, 1597932895000],\n [83830000, 1597985003000],\n [83840000, 1598017642000],\n [83850000, 1598061692000],\n [83860000, 1598095381000],\n [83870000, 1598120266000],\n [83880000, 1598166455000],\n [83890002, 1598189754000],\n [83900000, 1598230443000],\n [83910000, 1598272013000],\n [83920001, 1598311996000],\n [83930001, 1598356953000],\n [83940000, 1598393233000],\n [83950001, 1598441409000],\n [83960000, 1598473930000],\n [83970001, 1598526618000],\n [83980000, 1598557164000],\n [83990000, 1598611628000],\n [84000001, 1598640860000],\n [84010001, 1598691060000],\n [84020000, 1598714144000],\n [84030000, 1598758204000],\n [84040000, 1598786391000],\n [84050000, 1598802968000],\n [84060000, 1598854786000],\n [84070001, 1598880613000],\n [84080000, 1598915240000],\n [84090000, 1598960805000],\n [84100000, 1598992906000],\n [84110000, 1599044803000],\n [84120000, 1599071788000],\n [84130000, 1599129363000],\n [84140000, 1599157743000],\n [84150000, 1599215826000],\n [84160000, 1599244993000],\n [84170000, 1599294970000],\n [84180001, 1599318855000],\n [84190002, 1599365651000],\n [84200000, 1599393085000],\n [84210000, 1599414750000],\n [84220000, 1599471537000],\n [84230000, 1599495506000],\n [84240000, 1599556292000],\n [84250000, 1599582680000],\n [84260001, 1599642678000],\n [84270003, 1599667852000],\n [84280001, 1599728801000],\n [84290000, 1599756746000],\n [84300001, 1599818638000],\n [84310000, 1599844574000],\n [84320000, 1599895309000],\n [84330002, 1599920152000],\n [84340003, 1599962736000],\n [84350000, 1599992375000],\n [84360000, 1600010654000],\n [84370000, 1600067378000],\n [84380000, 1600096395000],\n [84390000, 1600154553000],\n [84400001, 1600182935000],\n [84410000, 1600243243000],\n [84420000, 1600270065000],\n [84430000, 1600333148000],\n [84440001, 1600360786000],\n [84450000, 1600422881000],\n [84460000, 1600450161000],\n [84470000, 1600503314000],\n [84480000, 1600528307000],\n [84490001, 1600577352000],\n [84500000, 1600606321000],\n [84510004, 1600644331000],\n [84520000, 1600684992000],\n [84530001, 1600709066000],\n [84540001, 1600760266000],\n [84550000, 1600784472000],\n [84560003, 1600833748000],\n [84570000, 1600869873000],\n [84580000, 1600925480000],\n [84590000, 1600958971000],\n [84600000, 1601017833000],\n [84610000, 1601047273000],\n [84620000, 1601099559000],\n [84630000, 1601126922000],\n [84640000, 1601166841000],\n [84650000, 1601199955000],\n [84660000, 1601220002000],\n [84670000, 1601279997000],\n [84680000, 1601307991000],\n [84690002, 1601371822000],\n [84700000, 1601399958000],\n [84710000, 1601460743000],\n [84720002, 1601484176000],\n [84730001, 1601543158000],\n [84740001, 1601568062000],\n [84750000, 1601628361000],\n [84760001, 1601654620000],\n [84770000, 1601706617000],\n [84780000, 1601734222000],\n [84790002, 1601777347000],\n [84800000, 1601807920000],\n [84810001, 1601826134000],\n [84820001, 1601883369000],\n [84830000, 1601910614000],\n [84840001, 1601968183000],\n [84850000, 1601997403000],\n [84860000, 1602056593000],\n [84870000, 1602083577000],\n [84880002, 1602144536000],\n [84890000, 1602172352000],\n [84900000, 1602233741000],\n [84910001, 1602259465000],\n [84920000, 1602311733000],\n [84930000, 1602337315000],\n [84940000, 1602377797000],\n [84950000, 1602411111000],\n [84960000, 1602430625000],\n [84970000, 1602489973000],\n [84980000, 1602517478000],\n [84990001, 1602578895000],\n [85000002, 1602605576000],\n [85010001, 1602668663000],\n [85020003, 1602701055000],\n [85030001, 1602761490000],\n [85040003, 1602802821000],\n [85050000, 1602851208000],\n [85060000, 1602896027000],\n [85070000, 1602933391000],\n [85080000, 1602960055000],\n [85090000, 1603008554000],\n [85100000, 1603031419000],\n [85110000, 1603084867000],\n [85120000, 1603118190000],\n [85130001, 1603176350000],\n [85140000, 1603207204000],\n [85150000, 1603269807000],\n [85160000, 1603298349000],\n [85170000, 1603361902000],\n [85180000, 1603392486000],\n [85190006, 1603451581000],\n [85200000, 1603488670000],\n [85210000, 1603534355000],\n [85220000, 1603558403000],\n [85230000, 1603607507000],\n [85240001, 1603632338000],\n [85250000, 1603674774000],\n [85260001, 1603717899000],\n [85270000, 1603768489000],\n [85280000, 1603807261000],\n [85290000, 1603863363000],\n [85300000, 1603897106000],\n [85310000, 1603958296000],\n [85320000, 1603987706000],\n [85330000, 1604049178000],\n [85340000, 1604071668000],\n [85350000, 1604113097000],\n [85360001, 1604138820000],\n [85370000, 1604154118000],\n [85380000, 1604182076000],\n [85390000, 1604217262000],\n [85400001, 1604238600000],\n [85410000, 1604283830000],\n [85420000, 1604322279000],\n [85430001, 1604365714000],\n [85440000, 1604401200000],\n [85450006, 1604426722000],\n [85460000, 1604488455000],\n [85470000, 1604522436000],\n [85480002, 1604575885000],\n [85490001, 1604614044000],\n [85500000, 1604665701000],\n [85510001, 1604707601000],\n [85520000, 1604746791000],\n [85530000, 1604771476000],\n [85540000, 1604820463000],\n [85550001, 1604843004000],\n [85560000, 1604888244000],\n [85570001, 1604928134000],\n [85580000, 1604978324000],\n [85590000, 1605017606000],\n [85600001, 1605066713000],\n [85610000, 1605101470000],\n [85620000, 1605150004000],\n [85630000, 1605189793000],\n [85640000, 1605244786000],\n [85650002, 1605278578000],\n [85660000, 1605328883000],\n [85670000, 1605360539000],\n [85680000, 1605403968000],\n [85690000, 1605435942000],\n [85700002, 1605455705000],\n [85710000, 1605517074000],\n [85720000, 1605543716000],\n [85730000, 1605605844000],\n [85740000, 1605634746000],\n [85750000, 1605696751000],\n [85760000, 1605730228000],\n [85770000, 1605786348000],\n [85780000, 1605827263000],\n [85790001, 1605875392000],\n [85800002, 1605915640000],\n [85810000, 1605954736000],\n [85820002, 1605978690000],\n [85830000, 1606029172000],\n [85840000, 1606052878000],\n [85850002, 1606092611000],\n [85860000, 1606126897000],\n [85870000, 1606148517000],\n [85880000, 1606211093000],\n [85890001, 1606239435000],\n [85900001, 1606301459000],\n [85910000, 1606332601000],\n [85920002, 1606390291000],\n [85930000, 1606426752000],\n [85940000, 1606478449000],\n [85950000, 1606514400000],\n [85960000, 1606557362000],\n [85970003, 1606578715000],\n [85980000, 1606627726000],\n [85990003, 1606653018000],\n [86000001, 1606683108000],\n [86010000, 1606735819000],\n [86020000, 1606762500000],\n [86030000, 1606818754000],\n [86040000, 1606848141000],\n [86050001, 1606906257000],\n [86060000, 1606940375000],\n [86070001, 1606996588000],\n [86080000, 1607037903000],\n [86090000, 1607084583000],\n [86100000, 1607127525000],\n [86110000, 1607165807000],\n [86120001, 1607190672000],\n [86130000, 1607240200000],\n [86140000, 1607263451000],\n [86150001, 1607309630000],\n [86160002, 1607347237000],\n [86170003, 1607396501000],\n [86180000, 1607435611000],\n [86190002, 1607490136000],\n [86200000, 1607524276000],\n [86210001, 1607581076000],\n [86220000, 1607612673000],\n [86230000, 1607673108000],\n [86240000, 1607701001000],\n [86250000, 1607754713000],\n [86260001, 1607781967000],\n [86270000, 1607825737000],\n [86280000, 1607857680000],\n [86290000, 1607880016000],\n [86300000, 1607940113000],\n [86310000, 1607969943000],\n [86320000, 1608031851000],\n [86330001, 1608073772000],\n [86340001, 1608122282000],\n [86350000, 1608172435000],\n [86360000, 1608214074000],\n [86370000, 1608271201000],\n [86380000, 1608303611000],\n [86390001, 1608357966000],\n [86400001, 1608386966000],\n [86410000, 1608432676000],\n [86420000, 1608464132000],\n [86430000, 1608491850000],\n [86440000, 1608548383000],\n [86450000, 1608584314000],\n [86460000, 1608637792000],\n [86470000, 1608680410000],\n [86480000, 1608726826000],\n [86490000, 1608763061000],\n [86500001, 1608804647000],\n [86510000, 1608822113000],\n [86520000, 1608858720000],\n [86530003, 1608891984000],\n [86540000, 1608909214000],\n [86550001, 1608956008000],\n [86560000, 1608986831000],\n [86570000, 1609024070000],\n [86580000, 1609061639000],\n [86590000, 1609083571000],\n [86600002, 1609136877000],\n [86610000, 1609166538000],\n [86620002, 1609215625000],\n [86630001, 1609246633000],\n [86640000, 1609281333000],\n [86650001, 1609318776000],\n [86660000, 1609340404000],\n [86670002, 1609378551000],\n [86680001, 1609402813000],\n [86690000, 1609419573000],\n [86700000, 1609427833000],\n [86710001, 1609438598000],\n [86720000, 1609471195000],\n [86730000, 1609492245000],\n [86740001, 1609510048000],\n [86750000, 1609542326000],\n [86760000, 1609576482000],\n [86770000, 1609597332000],\n [86780001, 1609636492000],\n [86790000, 1609666321000],\n [86800000, 1609685861000],\n [86810000, 1609730596000],\n [86820000, 1609761612000],\n [86830000, 1609785653000],\n [86840002, 1609838038000],\n [86850002, 1609860617000],\n [86860002, 1609913574000],\n [86870000, 1609942399000],\n [86880000, 1609989846000],\n [86890003, 1610024770000],\n [86900000, 1610067652000],\n [86910003, 1610108358000],\n [86920001, 1610143689000],\n [86930000, 1610185067000],\n [86940001, 1610206533000],\n [86950001, 1610253334000],\n [86960000, 1610280157000],\n [86970000, 1610301936000],\n [86980000, 1610349015000],\n [86990000, 1610372052000],\n [87000000, 1610415162000],\n [87010000, 1610455354000],\n [87020001, 1610499781000],\n [87030000, 1610542450000],\n [87040001, 1610588105000],\n [87050000, 1610628593000],\n [87060000, 1610674146000],\n [87070000, 1610714760000],\n [87080000, 1610755748000],\n [87090000, 1610792712000],\n [87100000, 1610813843000],\n [87110000, 1610860693000],\n [87120004, 1610885481000],\n [87130000, 1610905671000],\n [87140000, 1610963265000],\n [87150001, 1610987688000],\n [87160000, 1611047115000],\n [87170001, 1611073100000],\n [87180000, 1611133202000],\n [87190000, 1611158922000],\n [87200000, 1611218267000],\n [87210001, 1611244919000],\n [87220003, 1611303699000],\n [87230000, 1611328247000],\n [87240001, 1611376847000],\n [87250001, 1611404915000],\n [87260000, 1611429073000],\n [87270001, 1611473057000],\n [87280001, 1611494297000],\n [87290002, 1611532048000],\n [87300000, 1611574806000],\n [87310001, 1611603103000],\n [87320000, 1611657841000],\n [87330000, 1611683185000],\n [87340001, 1611740504000],\n [87350001, 1611764653000],\n [87360000, 1611823133000],\n [87370000, 1611847489000],\n [87380001, 1611904116000],\n [87390000, 1611931539000],\n [87400000, 1611976818000],\n [87410000, 1612007710000],\n [87420000, 1612028208000],\n [87430003, 1612073912000],\n [87440000, 1612095997000],\n [87450000, 1612114063000],\n [87460000, 1612168956000],\n [87470000, 1612192262000],\n [87480001, 1612244712000],\n [87490000, 1612273447000],\n [87500000, 1612318002000],\n [87510001, 1612355620000],\n [87520000, 1612393200000],\n [87530000, 1612439260000],\n [87540000, 1612470865000],\n [87550000, 1612521992000],\n [87560000, 1612546329000],\n [87570000, 1612597585000],\n [87580000, 1612621395000],\n [87590001, 1612663032000],\n [87600000, 1612692007000],\n [87610000, 1612710664000],\n [87620000, 1612761984000],\n [87630001, 1612792557000],\n [87640000, 1612840944000],\n [87650005, 1612876756000],\n [87660000, 1612922132000],\n [87670000, 1612961112000],\n [87680000, 1613002087000],\n [87690000, 1613038016000],\n [87700000, 1613059448000],\n [87710000, 1613115117000],\n [87720000, 1613141773000],\n [87730000, 1613187144000],\n [87740000, 1613216930000],\n [87750000, 1613234854000],\n [87760000, 1613272307000],\n [87770000, 1613293810000],\n [87780000, 1613308342000],\n [87790000, 1613323241000],\n [87800000, 1613374101000],\n [87810001, 1613398896000],\n [87820000, 1613444966000],\n [87830001, 1613480261000],\n [87840001, 1613517135000],\n [87850000, 1613561701000],\n [87860000, 1613588747000],\n [87870000, 1613643245000],\n [87880001, 1613668258000],\n [87890000, 1613726307000],\n [87900000, 1613748976000],\n [87910000, 1613799261000],\n [87920000, 1613826002000],\n [87930000, 1613857147000],\n [87940000, 1613895016000],\n [87950001, 1613915579000],\n [87960000, 1613952398000],\n [87970000, 1613991958000],\n [87980000, 1614010102000],\n [87990000, 1614057614000],\n [88000000, 1614083703000],\n [88010000, 1614108067000],\n [88020000, 1614160604000],\n [88030001, 1614182571000],\n [88040000, 1614240526000],\n [88050000, 1614266222000],\n [88060000, 1614322531000],\n [88070000, 1614350324000],\n [88080000, 1614395570000],\n [88090001, 1614425858000],\n [88100000, 1614445571000],\n [88110000, 1614490959000],\n [88120002, 1614513295000],\n [88130000, 1614528724000],\n [88140000, 1614581461000],\n [88150000, 1614607485000],\n [88160001, 1614652568000],\n [88170000, 1614687823000],\n [88180000, 1614722235000],\n [88190000, 1614769470000],\n [88200000, 1614794834000],\n [88210001, 1614852362000],\n [88220000, 1614877875000],\n [88230000, 1614935713000],\n [88240000, 1614958693000],\n [88250001, 1615008512000],\n [88260000, 1615035799000],\n [88270001, 1615069177000],\n [88280000, 1615105490000],\n [88290003, 1615125960000],\n [88300003, 1615169063000],\n [88310004, 1615207124000],\n [88320000, 1615239351000],\n [88330000, 1615285711000],\n [88340001, 1615306402000],\n [88350000, 1615362866000],\n [88360001, 1615388634000],\n [88370000, 1615444524000],\n [88380000, 1615474182000],\n [88390001, 1615527046000],\n [88400000, 1615557587000],\n [88410000, 1615601796000],\n [88420000, 1615633604000],\n [88430000, 1615653786000],\n [88440000, 1615699116000],\n [88450000, 1615722802000],\n [88460000, 1615739556000],\n [88470000, 1615795474000],\n [88480000, 1615820457000],\n [88490002, 1615875495000],\n [88500001, 1615904999000],\n [88510000, 1615956873000],\n [88520000, 1615989658000],\n [88530000, 1616039715000],\n [88540000, 1616075008000],\n [88550000, 1616123180000],\n [88560002, 1616159310000],\n [88570000, 1616196667000],\n [88580000, 1616233617000],\n [88590002, 1616254733000],\n [88600000, 1616300154000],\n [88610001, 1616325026000],\n [88620000, 1616342572000],\n [88630001, 1616397499000],\n [88640000, 1616424247000],\n [88650000, 1616477154000],\n [88660000, 1616508572000],\n [88670000, 1616558712000],\n [88680000, 1616592726000],\n [88690001, 1616637905000],\n [88700001, 1616676059000],\n [88710002, 1616716130000],\n [88720000, 1616759999000],\n [88730000, 1616795128000],\n [88740001, 1616838735000],\n [88750000, 1616860732000],\n [88760001, 1616908211000],\n [88770000, 1616933790000],\n [88780000, 1616958010000],\n [88790000, 1617011950000],\n [88800003, 1617036555000],\n [88810000, 1617093907000],\n [88820000, 1617118816000],\n [88830001, 1617174316000],\n [88840001, 1617200731000],\n [88850001, 1617243634000],\n [88860002, 1617278494000],\n [88870000, 1617309504000],\n [88880000, 1617358689000],\n [88890001, 1617383138000],\n [88900000, 1617434397000],\n [88910000, 1617459553000],\n [88920001, 1617501009000],\n [88930000, 1617529499000],\n [88940002, 1617548191000],\n [88950000, 1617595153000],\n [88960002, 1617627783000],\n [88970000, 1617672115000],\n [88980001, 1617712524000],\n [88990000, 1617752994000],\n [89000000, 1617797507000],\n [89010000, 1617836768000],\n [89020001, 1617883489000],\n [89030000, 1617921920000],\n [89040000, 1617969299000],\n [89050001, 1617999997000],\n [89060001, 1618045483000],\n [89070000, 1618068552000],\n [89080000, 1618115428000],\n [89090000, 1618142898000],\n [89100001, 1618169322000],\n [89110000, 1618225851000],\n [89120000, 1618256800000],\n [89130000, 1618312355000],\n [89140001, 1618343716000],\n [89150001, 1618399131000],\n [89160001, 1618434000000],\n [89170000, 1618487875000],\n [89180001, 1618530483000],\n [89190001, 1618576475000],\n [89200000, 1618617370000],\n [89210000, 1618654080000],\n [89220001, 1618675923000],\n [89230001, 1618722709000],\n [89240000, 1618748103000],\n [89250000, 1618773431000],\n [89260000, 1618829097000],\n [89270001, 1618855923000],\n [89280001, 1618915423000],\n [89290001, 1618945208000],\n [89300000, 1619003717000],\n [89310001, 1619038604000],\n [89320001, 1619090895000],\n [89330000, 1619125411000],\n [89340000, 1619177962000],\n [89350000, 1619211232000],\n [89360000, 1619256552000],\n [89370000, 1619278794000],\n [89380000, 1619326404000],\n [89390001, 1619352456000],\n [89400000, 1619379540000],\n [89410000, 1619435000000],\n [89420000, 1619465104000],\n [89430000, 1619522412000],\n [89440000, 1619558208000],\n [89450000, 1619610454000],\n [89460001, 1619650162000],\n [89470000, 1619690241000],\n [89480000, 1619712665000],\n [89490000, 1619768104000],\n [89500002, 1619793721000],\n [89510000, 1619838000000],\n [89520000, 1619868624000],\n [89530001, 1619891012000],\n [89540000, 1619936521000],\n [89550000, 1619961045000],\n [89560000, 1619998134000],\n [89570000, 1620035507000],\n [89580000, 1620056966000],\n [89590000, 1620104538000],\n [89600001, 1620132106000],\n [89610001, 1620156501000],\n [89620000, 1620197445000],\n [89630002, 1620218762000],\n [89640000, 1620246460000],\n [89650000, 1620296840000],\n [89660000, 1620321447000],\n [89670000, 1620378694000],\n [89680001, 1620402803000],\n [89690000, 1620453849000],\n [89700000, 1620480136000],\n [89710000, 1620515600000],\n [89720000, 1620548748000],\n [89730002, 1620568797000],\n [89740000, 1620606311000],\n [89750001, 1620647872000],\n [89760000, 1620676706000],\n [89770001, 1620730642000],\n [89780000, 1620757879000],\n [89790001, 1620815341000],\n [89800000, 1620840939000],\n [89810000, 1620900235000],\n [89820000, 1620924966000],\n [89830000, 1620983564000],\n [89840000, 1621006065000],\n [89850001, 1621053339000],\n [89860001, 1621081841000],\n [89870000, 1621109974000],\n [89880000, 1621150548000],\n [89890000, 1621171336000],\n [89900000, 1621208665000],\n [89910000, 1621252583000],\n [89920000, 1621286110000],\n [89930000, 1621335985000],\n [89940001, 1621365022000],\n [89950000, 1621419685000],\n [89960001, 1621445054000],\n [89970000, 1621503348000],\n [89980002, 1621528309000],\n [89990001, 1621586938000],\n [90000000, 1621611201000],\n [90010000, 1621660634000],\n [90020000, 1621688662000],\n [90030000, 1621721040000],\n [90040000, 1621756835000],\n [90050000, 1621776870000],\n [90060000, 1621812602000],\n [90070000, 1621855438000],\n [90080004, 1621881435000],\n [90090000, 1621937529000],\n [90100000, 1621963889000],\n [90110001, 1622022538000],\n [90120000, 1622047836000],\n [90130000, 1622107620000],\n [90140000, 1622134471000],\n [90150001, 1622193679000],\n [90160001, 1622217099000],\n [90170000, 1622266721000],\n [90180000, 1622293836000],\n [90190000, 1622325877000],\n [90200000, 1622361667000],\n [90210000, 1622381815000],\n [90220000, 1622420125000],\n [90230000, 1622461211000],\n [90240000, 1622482229000],\n [90250000, 1622538039000],\n [90260000, 1622559740000],\n [90270000, 1622614058000],\n [90280002, 1622642923000],\n [90290000, 1622691764000],\n [90300000, 1622727037000],\n [90310001, 1622773389000],\n [90320001, 1622809521000],\n [90330000, 1622843167000],\n [90340000, 1622884240000],\n [90350000, 1622905227000],\n [90360000, 1622946676000],\n [90370000, 1622973786000],\n [90380000, 1622991614000],\n [90390000, 1623042022000],\n [90400000, 1623073658000],\n [90410000, 1623119778000],\n [90420000, 1623157012000],\n [90430000, 1623195060000],\n [90440001, 1623239172000],\n [90450000, 1623272548000],\n [90460000, 1623323818000],\n [90470000, 1623356437000],\n [90480000, 1623408801000],\n [90490000, 1623434687000],\n [90500000, 1623484497000],\n [90510000, 1623508098000],\n [90520000, 1623551323000],\n [90530000, 1623579777000],\n [90540000, 1623597466000],\n [90550000, 1623652098000],\n [90560000, 1623680595000],\n [90570000, 1623732073000],\n [90580000, 1623765415000],\n [90590000, 1623815281000],\n [90600000, 1623849449000],\n [90610000, 1623894287000],\n [90620000, 1623933712000],\n [90630002, 1623975946000],\n [90640000, 1624017229000],\n [90650000, 1624048744000],\n [90660000, 1624092010000],\n [90670000, 1624114410000],\n [90680000, 1624155450000],\n [90690000, 1624183428000],\n [90700000, 1624201282000],\n [90710000, 1624250418000],\n [90720000, 1624283420000],\n [90730000, 1624329178000],\n [90740001, 1624366823000],\n [90750001, 1624409521000],\n [90760000, 1624451215000],\n [90770000, 1624488127000],\n [90780001, 1624534770000],\n [90790000, 1624565483000],\n [90800000, 1624617743000],\n [90810001, 1624642581000],\n [90820000, 1624693006000],\n [90830001, 1624717159000],\n [90840001, 1624759122000],\n [90850000, 1624788393000],\n [90860001, 1624807262000],\n [90870002, 1624862147000],\n [90880000, 1624890846000],\n [90890000, 1624941410000],\n [90900000, 1624975119000],\n [90910003, 1625023200000],\n [90920000, 1625057873000],\n [90930002, 1625093378000],\n [90940000, 1625137864000],\n [90950001, 1625167064000],\n [90960000, 1625221678000],\n [90970000, 1625247018000],\n [90980000, 1625297083000],\n [90990000, 1625321661000],\n [91000000, 1625361446000],\n [91010000, 1625391835000],\n [91020000, 1625410814000],\n [91030001, 1625460847000],\n [91040000, 1625492417000],\n [91050002, 1625538794000],\n [91060000, 1625576331000],\n [91070000, 1625612008000],\n [91080000, 1625655607000],\n [91090000, 1625676564000],\n [91100000, 1625734139000],\n [91110000, 1625758730000],\n [91120001, 1625815829000],\n [91130000, 1625841974000],\n [91140000, 1625886925000],\n [91150000, 1625918380000],\n [91160000, 1625944463000],\n [91170000, 1625988355000],\n [91180001, 1626010374000],\n [91190000, 1626048401000],\n [91200000, 1626090518000],\n [91210001, 1626120952000],\n [91220000, 1626173755000],\n [91230000, 1626201993000],\n [91240000, 1626257370000],\n [91250000, 1626282016000],\n [91260001, 1626339404000],\n [91270000, 1626364995000],\n [91280001, 1626422902000],\n [91290001, 1626448420000],\n [91300000, 1626497465000],\n [91310000, 1626526559000],\n [91320000, 1626562870000],\n [91330001, 1626598863000],\n [91340000, 1626619253000],\n [91350000, 1626667572000],\n [91360000, 1626702033000],\n [91370000, 1626748789000],\n [91380000, 1626786000000],\n [91390000, 1626832490000],\n [91400000, 1626871207000],\n [91410000, 1626910348000],\n [91420000, 1626950240000],\n [91430001, 1626975304000],\n [91440001, 1627025779000],\n [91450000, 1627052434000],\n [91460000, 1627098880000],\n [91470000, 1627129161000],\n [91480001, 1627159365000],\n [91490001, 1627200772000],\n [91500001, 1627222086000],\n [91510000, 1627266953000],\n [91520002, 1627303365000],\n [91530000, 1627344228000],\n [91540000, 1627386109000],\n [91550002, 1627419996000],\n [91560000, 1627469441000],\n [91570002, 1627496681000],\n [91580002, 1627552012000],\n [91590000, 1627577244000],\n [91600000, 1627633974000],\n [91610002, 1627658630000],\n [91620003, 1627707670000],\n [91630000, 1627735328000],\n [91640000, 1627758052000],\n [91650001, 1627800425000],\n [91660000, 1627822804000],\n [91670000, 1627854019000],\n [91680000, 1627899489000],\n [91690000, 1627922287000],\n [91700000, 1627977531000],\n [91710000, 1628002930000],\n [91720000, 1628055932000],\n [91730000, 1628086281000],\n [91740000, 1628135358000],\n [91750000, 1628169378000],\n [91760000, 1628214699000],\n [91770000, 1628252181000],\n [91780001, 1628284290000],\n [91790001, 1628325896000],\n [91800001, 1628348457000],\n [91810001, 1628390478000],\n [91820000, 1628419243000],\n [91830002, 1628438044000],\n [91840000, 1628482975000],\n [91850000, 1628509353000],\n [91860002, 1628530158000],\n [91870000, 1628580157000],\n [91880001, 1628605566000],\n [91890002, 1628650436000],\n [91900000, 1628684140000],\n [91910000, 1628717443000],\n [91920002, 1628760853000],\n [91930000, 1628783284000],\n [91940000, 1628833352000],\n [91950000, 1628859509000],\n [91960000, 1628888945000],\n [91970000, 1628929003000],\n [91980002, 1628949933000],\n [91990001, 1628976385000],\n [92000000, 1629013891000],\n [92010000, 1629034080000],\n [92020001, 1629050568000],\n [92030000, 1629098917000],\n [92040001, 1629122464000],\n [92050001, 1629165939000],\n [92060000, 1629201251000],\n [92070000, 1629228686000],\n [92080000, 1629279438000],\n [92090003, 1629301654000],\n [92100000, 1629354528000],\n [92110000, 1629382820000],\n [92120001, 1629428380000],\n [92130000, 1629461783000],\n [92140000, 1629489334000],\n [92150000, 1629533407000],\n [92160000, 1629554732000],\n [92170000, 1629591443000],\n [92180000, 1629622576000],\n [92190000, 1629642144000],\n [92200000, 1629684467000],\n [92210000, 1629720044000],\n [92220000, 1629747693000],\n [92230000, 1629798593000],\n [92240000, 1629820858000],\n [92250002, 1629875567000],\n [92260000, 1629901711000],\n [92270000, 1629949310000],\n [92280000, 1629982572000],\n [92290000, 1630018215000],\n [92300001, 1630060374000],\n [92310000, 1630081934000],\n [92320000, 1630129786000],\n [92330001, 1630155300000],\n [92340000, 1630183059000],\n [92350000, 1630221839000],\n [92360000, 1630242352000],\n [92370000, 1630271314000],\n [92380001, 1630317518000],\n [92390000, 1630337159000],\n [92400000, 1630382926000],\n [92410000, 1630412215000],\n [92420001, 1630429095000],\n [92430001, 1630483322000],\n [92440000, 1630508357000],\n [92450000, 1630560280000],\n [92460000, 1630590093000],\n [92470000, 1630636193000],\n [92480000, 1630671179000],\n [92490001, 1630700747000],\n [92500000, 1630744157000],\n [92510000, 1630765812000],\n [92520001, 1630806856000],\n [92530000, 1630835440000],\n [92540001, 1630853116000],\n [92550000, 1630898590000],\n [92560000, 1630932842000],\n [92570000, 1630970533000],\n [92580000, 1631014453000],\n [92590000, 1631043850000],\n [92600000, 1631095907000],\n [92610000, 1631119701000],\n [92620000, 1631176254000],\n [92630000, 1631199949000],\n [92640002, 1631253216000],\n [92650002, 1631282400000],\n [92660001, 1631324551000],\n [92670002, 1631357277000],\n [92680000, 1631377229000],\n [92690000, 1631422503000],\n [92700003, 1631446220000],\n [92710000, 1631462798000],\n [92720000, 1631516450000],\n [92730000, 1631542583000],\n [92740003, 1631591632000],\n [92750000, 1631625667000],\n [92760000, 1631669372000],\n [92770000, 1631708250000],\n [92780000, 1631746635000],\n [92790000, 1631792358000],\n [92800000, 1631826201000],\n [92810000, 1631874789000],\n [92820003, 1631896937000],\n [92830003, 1631946719000],\n [92840001, 1631971337000],\n [92850000, 1632003550000],\n [92860002, 1632040968000],\n [92870000, 1632062151000],\n [92880000, 1632104085000],\n [92890000, 1632134232000],\n [92900000, 1632153650000],\n [92910000, 1632207629000],\n [92920000, 1632233716000],\n [92930001, 1632281347000],\n [92940003, 1632316006000],\n [92950002, 1632354953000],\n [92960000, 1632390604000],\n [92970000, 1632411632000],\n [92980002, 1632468523000],\n [92990001, 1632494582000],\n [93000000, 1632539184000],\n [93010001, 1632569325000],\n [93020000, 1632591106000],\n [93030000, 1632637348000],\n [93040002, 1632659517000],\n [93050000, 1632686353000],\n [93060002, 1632738377000],\n [93070000, 1632762448000],\n [93080000, 1632820353000],\n [93090000, 1632844137000],\n [93100000, 1632902683000],\n [93110000, 1632928133000],\n [93120000, 1632983492000],\n [93130000, 1633011118000],\n [93140000, 1633055783000],\n [93150000, 1633090148000],\n [93160000, 1633117454000],\n [93170001, 1633162248000],\n [93180000, 1633185803000],\n [93190001, 1633227999000],\n [93200000, 1633257628000],\n [93210001, 1633276861000],\n [93220001, 1633333310000],\n [93230001, 1633359566000],\n [93240001, 1633412563000],\n [93250001, 1633444232000],\n [93260000, 1633498298000],\n [93270001, 1633530121000],\n [93280000, 1633582979000],\n [93290001, 1633615633000],\n [93300000, 1633668364000],\n [93310000, 1633701509000],\n [93320000, 1633745574000],\n [93330000, 1633778453000],\n [93340000, 1633799743000],\n [93350000, 1633846044000],\n [93360000, 1633869822000],\n [93370000, 1633898119000],\n [93380000, 1633948902000],\n [93390002, 1633973431000],\n [93400000, 1634032282000],\n [93410000, 1634057765000],\n [93420000, 1634117857000],\n [93430000, 1634144756000],\n [93440000, 1634205236000],\n [93450000, 1634234014000],\n [93460001, 1634293036000],\n [93470000, 1634318727000],\n [93480002, 1634368869000],\n [93490000, 1634394483000],\n [93500001, 1634437527000],\n [93510001, 1634467278000],\n [93520000, 1634486578000],\n [93530000, 1634546192000],\n [93540001, 1634572876000],\n [93550000, 1634634855000],\n [93560000, 1634662513000],\n [93570000, 1634724092000],\n [93580000, 1634750955000],\n [93590000, 1634812596000],\n [93600000, 1634848910000],\n [93610001, 1634902063000],\n [93620000, 1634932691000],\n [93630001, 1634980370000],\n [93640001, 1635003828000],\n [93650001, 1635051305000],\n [93660000, 1635077962000],\n [93670000, 1635106708000],\n [93680000, 1635159684000],\n [93690000, 1635188542000],\n [93700000, 1635245335000],\n [93710003, 1635273356000],\n [93720000, 1635331885000],\n [93730000, 1635363989000],\n [93740000, 1635419650000],\n [93750002, 1635456306000],\n [93760000, 1635506037000],\n [93770000, 1635534789000],\n [93780000, 1635583147000],\n [93790000, 1635604701000],\n [93800001, 1635632402000],\n [93810000, 1635661010000],\n [93820000, 1635678590000],\n [93830000, 1635690570000],\n [93840000, 1635717518000],\n [93850000, 1635761107000],\n [93860000, 1635783455000],\n [93870000, 1635843752000],\n [93880000, 1635869652000],\n [93890000, 1635922335000],\n [93900002, 1635948667000],\n [93910000, 1636001431000],\n [93920001, 1636035436000],\n [93930001, 1636087879000],\n [93940000, 1636121598000],\n [93950004, 1636168844000],\n [93960002, 1636201173000],\n [93970000, 1636235282000],\n [93980000, 1636274954000],\n [93990000, 1636296417000],\n [94000000, 1636347998000],\n [94010000, 1636380724000],\n [94020000, 1636432758000],\n [94030000, 1636467490000],\n [94040000, 1636524000000],\n [94050000, 1636556411000],\n [94060000, 1636609572000],\n [94070000, 1636639397000],\n [94080001, 1636688884000],\n [94090000, 1636724837000],\n [94100001, 1636769763000],\n [94110000, 1636804397000],\n [94120000, 1636832830000],\n [94130000, 1636877299000],\n [94140001, 1636898962000],\n [94150000, 1636945784000],\n [94160001, 1636983624000],\n [94170000, 1637035689000],\n [94180001, 1637071919000],\n [94190000, 1637126743000],\n [94200000, 1637160488000],\n [94210000, 1637217623000],\n [94220002, 1637248047000],\n [94230000, 1637307501000],\n [94240003, 1637335174000],\n [94250000, 1637387507000],\n [94260001, 1637415849000],\n [94270000, 1637457796000],\n [94280003, 1637490222000],\n [94290000, 1637510450000],\n [94300000, 1637568614000],\n [94310001, 1637594427000],\n [94320000, 1637645400000],\n [94330000, 1637673692000],\n [94340000, 1637717882000],\n [94350000, 1637758190000],\n [94360000, 1637804370000],\n [94370000, 1637845662000],\n [94380000, 1637895340000],\n [94390000, 1637932735000],\n [94400000, 1637975870000],\n [94410000, 1638010801000],\n [94420000, 1638034566000],\n [94430000, 1638082864000],\n [94440000, 1638106561000],\n [94450000, 1638150124000],\n [94460001, 1638190313000],\n [94470001, 1638236140000],\n [94480000, 1638275362000],\n [94490000, 1638312529000],\n [94500001, 1638359064000],\n [94510000, 1638396225000],\n [94520000, 1638446401000],\n [94530000, 1638487812000],\n [94540001, 1638534056000],\n [94550000, 1638573040000],\n [94560001, 1638611797000],\n [94570001, 1638633654000],\n [94580001, 1638681819000],\n [94590000, 1638707684000],\n [94600002, 1638739779000],\n [94610000, 1638791053000],\n [94620000, 1638827797000],\n [94630000, 1638877512000],\n [94640001, 1638916136000],\n [94650000, 1638964380000],\n [94660000, 1639002600000],\n [94670000, 1639051564000],\n [94680000, 1639092606000],\n [94690000, 1639138004000],\n [94700000, 1639175470000],\n [94710000, 1639216802000],\n [94720000, 1639240239000],\n [94730000, 1639289730000],\n [94740000, 1639314497000],\n [94750000, 1639355956000],\n [94760000, 1639399376000],\n [94770000, 1639446657000],\n [94780000, 1639488341000],\n [94790000, 1639540890000],\n [94800000, 1639578070000],\n [94810000, 1639634825000],\n [94820000, 1639667014000],\n [94830000, 1639727096000],\n [94840000, 1639754857000],\n [94850002, 1639807985000],\n [94860000, 1639836570000],\n [94870000, 1639881936000],\n [94880000, 1639913328000],\n [94890001, 1639939256000],\n [94900001, 1639997861000],\n [94910000, 1640032136000],\n [94920000, 1640086745000],\n [94930001, 1640126944000],\n [94940000, 1640174567000],\n [94950000, 1640216396000],\n [94960000, 1640262124000],\n [94970000, 1640293978000],\n [94980000, 1640337791000],\n [94990000, 1640355810000],\n [95000000, 1640383148000],\n [95010000, 1640417193000],\n [95020000, 1640437332000],\n [95030000, 1640457665000],\n [95040000, 1640502272000],\n [95050000, 1640525742000],\n [95060000, 1640568505000],\n [95070000, 1640607220000],\n [95080000, 1640643662000],\n [95090000, 1640688477000],\n [95100000, 1640713771000],\n [95110001, 1640765263000],\n [95120000, 1640789455000],\n [95130000, 1640836018000],\n [95140000, 1640865820000],\n [95150000, 1640886986000],\n [95160000, 1640929078000],\n [95170000, 1640948539000],\n [95180000, 1640962119000],\n [95190000, 1640967773000],\n [95200000, 1640999289000],\n [95210001, 1641021726000],\n [95220000, 1641041414000],\n [95230000, 1641062154000],\n [95240001, 1641107276000],\n [95250000, 1641130900000],\n [95260000, 1641169453000],\n [95270000, 1641202441000],\n [95280000, 1641222169000],\n [95290001, 1641268706000],\n [95300000, 1641299401000],\n [95310000, 1641331812000],\n [95320000, 1641378569000],\n [95330000, 1641402623000],\n [95340000, 1641459753000],\n [95350001, 1641484334000],\n [95360000, 1641541402000],\n [95370000, 1641567555000],\n [95380000, 1641614938000],\n [95390000, 1641645081000],\n [95400001, 1641678389000],\n [95410000, 1641718133000],\n [95420000, 1641740063000],\n [95430000, 1641783577000],\n [95440000, 1641813730000],\n [95450000, 1641836631000],\n [95460000, 1641893792000],\n [95470000, 1641919136000],\n [95480000, 1641979082000],\n [95490000, 1642005692000],\n [95500000, 1642066270000],\n [95510001, 1642094064000],\n [95520000, 1642152651000],\n [95530001, 1642178810000],\n [95540000, 1642231351000],\n [95550000, 1642256244000],\n [95560000, 1642301175000],\n [95570000, 1642330779000],\n [95580000, 1642350152000],\n [95590001, 1642407721000],\n [95600000, 1642433495000],\n [95610000, 1642491125000],\n [95620003, 1642518675000],\n [95630000, 1642577539000],\n [95640000, 1642605531000],\n [95650000, 1642662484000],\n [95660002, 1642691138000],\n [95670000, 1642748927000],\n [95680000, 1642777004000],\n [95690001, 1642824011000],\n [95700000, 1642853326000],\n [95710000, 1642879158000],\n [95720001, 1642923104000],\n [95730000, 1642944769000],\n [95740001, 1642984481000],\n [95750000, 1643025451000],\n [95760001, 1643061600000],\n [95770002, 1643108753000],\n [95780000, 1643139339000],\n [95790000, 1643193042000],\n [95800000, 1643219513000],\n [95810000, 1643276236000],\n [95820000, 1643301999000],\n [95830000, 1643359596000],\n [95840000, 1643384088000],\n [95850000, 1643436377000],\n [95860000, 1643463390000],\n [95870000, 1643503825000],\n [95880001, 1643535017000],\n [95890000, 1643554532000],\n [95900000, 1643602080000],\n [95910000, 1643634055000],\n [95920000, 1643669363000],\n [95930000, 1643713379000],\n [95940000, 1643739115000],\n [95950000, 1643793651000],\n [95960000, 1643816717000],\n [95970000, 1643870775000],\n [95980000, 1643897062000],\n [95990000, 1643943154000],\n [96000000, 1643978568000],\n [96010000, 1644014001000],\n [96020000, 1644052331000],\n [96030000, 1644073609000],\n [96040000, 1644117712000],\n [96050000, 1644144613000],\n [96060000, 1644163045000],\n [96070004, 1644217418000],\n [96080001, 1644245022000],\n [96090001, 1644294817000],\n [96100002, 1644327396000],\n [96110000, 1644373211000],\n [96120000, 1644410656000],\n [96130000, 1644452618000],\n [96140000, 1644492703000],\n [96150001, 1644522089000],\n [96160000, 1644568767000],\n [96170000, 1644591604000],\n [96180000, 1644636121000],\n [96190001, 1644665864000],\n [96200000, 1644687566000],\n [96210000, 1644732574000],\n [96220000, 1644754873000],\n [96230001, 1644769034000],\n [96240000, 1644810107000],\n [96250000, 1644835977000],\n [96260000, 1644849447000],\n [96270000, 1644884644000],\n [96280000, 1644923709000],\n [96290000, 1644948749000],\n [96300000, 1645004525000],\n [96310000, 1645027867000],\n [96320000, 1645085715000],\n [96330000, 1645111159000],\n [96340001, 1645166953000],\n [96350000, 1645194497000],\n [96360000, 1645238464000],\n [96370000, 1645270349000],\n [96380000, 1645291965000],\n [96390003, 1645338654000],\n [96400000, 1645362057000],\n [96410000, 1645396567000],\n [96420000, 1645441201000],\n [96430000, 1645465905000],\n [96440003, 1645518199000],\n [96450000, 1645538687000],\n [96460000, 1645578555000],\n [96470000, 1645612446000],\n [96480000, 1645634807000],\n [96490000, 1645691338000],\n [96500000, 1645716653000],\n [96510000, 1645776440000],\n [96520000, 1645801874000],\n [96530000, 1645852693000],\n [96540000, 1645882000000],\n [96550000, 1645922691000],\n [96560001, 1645954326000],\n [96570001, 1645974002000],\n [96580000, 1646021264000],\n [96590000, 1646053246000],\n [96600000, 1646089480000],\n [96610001, 1646132910000],\n [96620000, 1646160063000],\n [96630000, 1646215743000],\n [96640000, 1646240060000],\n [96650001, 1646298000000],\n [96660000, 1646321417000],\n [96670000, 1646379141000],\n [96680000, 1646405726000],\n [96690000, 1646452784000],\n [96700000, 1646481415000],\n [96710000, 1646506562000],\n [96720000, 1646551308000],\n [96730000, 1646573095000],\n [96740000, 1646613282000],\n [96750000, 1646653562000],\n [96760000, 1646688519000],\n [96770000, 1646737225000],\n [96780000, 1646761941000],\n [96790001, 1646815449000],\n [96800000, 1646837455000],\n [96810003, 1646889463000],\n [96820000, 1646920634000],\n [96830000, 1646970593000],\n [96840000, 1647004780000],\n [96850000, 1647047991000],\n [96860001, 1647081744000],\n [96870000, 1647104597000],\n [96880000, 1647151938000],\n [96890000, 1647175394000],\n [96900001, 1647201204000],\n [96910000, 1647250064000],\n [96920000, 1647270916000],\n [96930000, 1647323937000],\n [96940000, 1647352851000],\n [96950001, 1647400831000],\n [96960001, 1647435932000],\n [96970001, 1647482574000],\n [96980001, 1647520201000],\n [96990000, 1647559457000],\n [97000000, 1647601584000],\n [97010000, 1647625416000],\n [97020000, 1647675245000],\n [97030000, 1647699013000],\n [97040001, 1647738565000],\n [97050000, 1647770012000],\n [97060000, 1647788815000],\n [97070000, 1647832918000],\n [97080000, 1647862795000],\n [97090001, 1647885819000],\n [97100000, 1647941829000],\n [97110000, 1647967953000],\n [97120000, 1648025460000],\n [97130000, 1648050847000],\n [97140000, 1648108091000],\n [97150000, 1648134375000],\n [97160000, 1648187483000],\n [97170000, 1648217127000],\n [97180000, 1648260677000],\n [97190000, 1648292570000],\n [97200000, 1648313035000],\n [97210000, 1648360179000],\n [97220001, 1648385292000],\n [97230002, 1648416624000],\n [97240000, 1648464289000],\n [97250000, 1648490405000],\n [97260000, 1648545108000],\n [97270000, 1648570375000],\n [97280000, 1648627532000],\n [97290000, 1648653425000],\n [97300000, 1648706876000],\n [97310000, 1648735286000],\n [97320000, 1648774530000],\n [97330000, 1648811160000],\n [97340000, 1648832900000],\n [97350000, 1648883188000],\n [97360000, 1648909261000],\n [97370000, 1648951531000],\n [97380000, 1648981759000],\n [97390000, 1649000134000],\n [97400000, 1649048805000],\n [97410001, 1649079946000],\n [97420000, 1649124773000],\n [97430001, 1649162281000],\n [97440000, 1649202085000],\n [97450001, 1649245271000],\n [97460000, 1649279910000],\n [97470000, 1649329956000],\n [97480000, 1649362356000],\n [97490000, 1649415174000],\n [97500000, 1649443697000],\n [97510001, 1649492288000],\n [97520000, 1649516238000],\n [97530001, 1649559814000],\n [97540000, 1649588261000],\n [97550001, 1649607526000],\n [97560000, 1649665207000],\n [97570000, 1649691288000],\n [97580000, 1649749484000],\n [97590000, 1649777794000],\n [97600000, 1649837193000],\n [97610000, 1649864455000],\n [97620000, 1649924301000],\n [97630000, 1649951118000],\n [97640001, 1650010638000],\n [97650000, 1650036067000],\n [97660000, 1650085732000],\n [97670001, 1650114550000],\n [97680000, 1650149599000],\n [97690000, 1650184582000],\n [97700001, 1650204445000],\n [97710000, 1650246943000],\n [97720000, 1650285061000],\n [97730000, 1650324640000],\n [97740000, 1650369926000],\n [97750000, 1650406505000],\n [97760001, 1650454683000],\n [97770000, 1650488690000],\n [97780000, 1650539666000],\n [97790000, 1650572092000],\n [97800000, 1650623950000],\n [97810000, 1650649218000],\n [97820000, 1650698937000],\n [97830000, 1650723060000],\n [97840000, 1650763419000],\n [97850001, 1650793105000],\n [97860000, 1650811744000],\n [97870000, 1650859436000],\n [97880000, 1650892827000],\n [97890000, 1650937001000],\n [97900000, 1650976372000],\n [97910000, 1651012201000],\n [97920000, 1651058881000],\n [97930000, 1651085134000],\n [97940000, 1651140494000],\n [97950000, 1651164143000],\n [97960000, 1651214464000],\n [97970000, 1651238558000],\n [97980000, 1651274894000],\n [97990000, 1651309740000],\n [98000000, 1651329556000],\n [98010000, 1651367050000],\n [98020000, 1651395706000],\n [98030001, 1651414572000],\n [98040000, 1651453238000],\n [98050000, 1651489385000],\n [98060000, 1651511038000],\n [98070000, 1651560061000],\n [98080001, 1651585717000],\n [98090000, 1651626209000],\n [98100000, 1651660631000],\n [98110001, 1651680777000],\n [98120000, 1651727064000],\n [98130000, 1651752712000],\n [98140000, 1651777533000],\n [98150000, 1651829455000],\n [98160000, 1651850625000],\n [98170000, 1651897753000],\n [98180000, 1651925450000],\n [98190000, 1651949752000],\n [98200000, 1651991741000],\n [98210000, 1652013784000],\n [98220000, 1652040136000],\n [98230000, 1652091772000],\n [98240000, 1652115170000],\n [98250000, 1652171957000],\n [98260000, 1652195468000],\n [98270001, 1652250334000],\n [98280000, 1652280651000],\n [98290001, 1652333857000],\n [98300000, 1652365069000],\n [98310000, 1652416463000],\n [98320000, 1652449293000],\n [98330000, 1652490305000],\n [98340002, 1652524153000],\n [98350001, 1652544334000],\n [98360001, 1652590508000],\n [98370000, 1652615956000],\n [98380002, 1652636691000],\n [98390000, 1652692865000],\n [98400000, 1652716070000],\n [98410000, 1652774155000],\n [98420001, 1652800199000],\n [98430002, 1652856185000],\n [98440000, 1652885172000],\n [98450000, 1652937760000],\n [98460000, 1652970116000],\n [98470000, 1653019210000],\n [98480000, 1653052985000],\n [98490001, 1653093221000],\n [98500000, 1653127987000],\n [98510000, 1653148724000],\n [98520001, 1653193876000],\n [98530000, 1653219729000],\n [98540000, 1653239894000],\n [98550000, 1653295318000],\n [98560000, 1653318459000],\n [98570000, 1653371956000],\n [98580000, 1653401929000],\n [98590000, 1653449762000],\n [98600000, 1653484814000],\n [98610000, 1653529521000],\n [98620000, 1653568713000],\n [98630001, 1653607977000],\n [98640000, 1653650480000],\n [98650000, 1653674013000],\n [98660000, 1653722738000],\n [98670001, 1653747137000],\n [98680000, 1653787374000],\n [98690000, 1653817935000],\n [98700000, 1653836604000],\n [98710000, 1653888350000],\n [98720000, 1653920114000],\n [98730000, 1653969242000],\n [98740000, 1654003806000],\n [98750000, 1654045210000],\n [98760001, 1654084663000],\n [98770000, 1654118935000],\n [98780000, 1654169178000],\n [98790000, 1654201643000],\n [98800000, 1654253088000],\n [98810000, 1654278868000],\n [98820001, 1654329163000],\n [98830000, 1654354013000],\n [98840000, 1654397808000],\n [98850001, 1654426920000],\n [98860000, 1654445286000],\n [98870000, 1654500301000],\n [98880002, 1654526820000],\n [98890000, 1654579790000],\n [98900000, 1654611580000],\n [98910000, 1654664420000],\n [98920000, 1654697588000],\n [98930000, 1654749487000],\n [98940000, 1654783568000],\n [98950000, 1654833489000],\n [98960001, 1654867663000],\n [98970000, 1654908892000],\n [98980001, 1654944139000],\n [98990000, 1654965503000],\n [99000000, 1655011751000],\n [99010001, 1655036623000],\n [99020000, 1655062050000],\n [99030000, 1655115730000],\n [99040000, 1655140802000],\n [99050001, 1655200238000],\n [99060000, 1655227418000],\n [99070000, 1655286100000],\n [99080000, 1655311322000],\n [99090000, 1655371756000],\n [99100000, 1655397488000],\n [99110000, 1655456409000],\n [99120001, 1655481377000],\n [99130001, 1655530998000],\n [99140000, 1655558478000],\n [99150000, 1655595815000],\n [99160001, 1655629094000],\n [99170000, 1655649877000],\n [99180000, 1655697169000],\n [99190002, 1655732133000],\n [99200001, 1655777542000],\n [99210000, 1655815828000],\n [99220000, 1655858280000],\n [99230000, 1655900428000],\n [99240000, 1655939022000],\n [99250000, 1655985533000],\n [99260000, 1656021877000],\n [99270000, 1656068560000],\n [99280000, 1656092055000],\n [99290001, 1656141419000],\n [99300001, 1656166335000],\n [99310000, 1656207842000],\n [99320000, 1656239403000],\n [99330000, 1656258623000],\n [99340000, 1656314463000],\n [99350000, 1656342153000],\n [99360000, 1656396899000],\n [99370000, 1656427915000],\n [99380000, 1656482185000],\n [99390000, 1656512903000],\n [99400001, 1656562839000],\n [99410000, 1656595579000],\n [99420000, 1656633247000],\n [99430000, 1656675331000],\n [99440000, 1656705852000],\n [99450000, 1656751022000],\n [99460000, 1656774792000],\n [99470000, 1656819776000],\n [99480000, 1656848027000],\n [99490002, 1656869398000],\n [99500000, 1656925839000],\n [99510000, 1656951106000],\n [99520000, 1657009297000],\n [99530000, 1657035775000],\n [99540000, 1657093341000],\n [99550000, 1657120434000],\n [99560000, 1657174517000],\n [99570000, 1657202489000],\n [99580000, 1657249291000],\n [99590000, 1657288695000],\n [99600000, 1657335917000],\n [99610000, 1657368370000],\n [99620001, 1657397214000],\n [99630001, 1657439756000],\n [99640000, 1657461763000],\n [99650000, 1657506983000],\n [99660000, 1657543658000],\n [99670000, 1657583872000],\n [99680000, 1657627368000],\n [99690000, 1657663740000],\n [99700002, 1657710358000],\n [99710000, 1657740367000],\n [99720000, 1657793730000],\n [99730000, 1657819234000],\n [99740000, 1657874904000],\n [99750000, 1657897814000],\n [99760000, 1657947118000],\n [99770000, 1657975961000],\n [99780000, 1658009309000],\n [99790000, 1658047456000],\n [99800000, 1658068837000],\n [99810000, 1658111280000],\n [99820001, 1658140909000],\n [99830000, 1658160879000],\n [99840000, 1658217236000],\n [99850000, 1658242527000],\n [99860001, 1658291248000],\n [99870001, 1658323415000],\n [99880001, 1658366167000],\n [99890000, 1658404801000],\n [99900000, 1658430178000],\n [99910000, 1658480339000],\n [99920000, 1658502571000],\n [99930000, 1658546742000],\n [99940000, 1658576671000],\n [99950000, 1658599585000],\n [99960000, 1658645517000],\n [99970000, 1658668180000],\n [99980000, 1658701239000],\n [99990001, 1658746444000],\n [100000000, 1658770550000],\n [100010001, 1658825057000],\n [100020000, 1658849795000],\n [100030000, 1658902252000],\n [100040000, 1658931216000],\n [100050002, 1658977024000],\n [100060000, 1659011336000],\n [100070000, 1659048276000],\n [100080000, 1659091189000],\n [100090001, 1659114637000],\n [100100000, 1659161710000],\n [100110000, 1659188166000],\n [100120001, 1659225744000],\n [100130000, 1659257431000],\n [100140000, 1659277374000],\n [100150001, 1659315360000],\n [100160000, 1659352775000],\n [100170001, 1659376747000],\n [100180000, 1659428206000],\n [100190000, 1659452356000],\n [100200000, 1659499984000],\n [100210002, 1659532025000],\n [100220000, 1659571779000],\n [100230000, 1659610850000],\n [100240000, 1659635757000],\n [100250002, 1659689460000],\n [100260000, 1659711827000],\n [100270000, 1659757449000],\n [100280000, 1659787156000],\n [100290000, 1659810033000],\n [100300002, 1659854775000],\n [100310000, 1659877201000],\n [100320001, 1659904955000],\n [100330000, 1659950666000],\n [100340000, 1659971854000],\n [100350001, 1660020731000],\n [100360000, 1660051015000],\n [100370000, 1660088507000],\n [100380000, 1660128077000],\n [100390000, 1660150743000],\n [100400000, 1660199251000],\n [100410000, 1660224708000],\n [100420000, 1660263125000],\n [100430000, 1660299268000],\n [100440000, 1660319860000],\n [100450000, 1660368097000],\n [100460000, 1660395113000],\n [100470000, 1660428835000],\n [100480002, 1660467041000],\n [100490000, 1660488418000],\n [100500001, 1660532076000],\n [100510000, 1660563664000],\n [100520000, 1660586072000],\n [100530000, 1660636094000],\n [100540000, 1660660143000],\n [100550001, 1660705709000],\n [100560000, 1660738438000],\n [100570000, 1660769636000],\n [100580000, 1660816247000],\n [100590000, 1660838488000],\n [100600000, 1660890601000],\n [100610000, 1660916383000],\n [100620000, 1660954023000],\n [100630000, 1660988123000],\n [100640000, 1661008313000],\n [100650000, 1661051552000],\n [100660000, 1661078751000],\n [100670000, 1661096020000],\n [100680001, 1661145736000],\n [100690000, 1661175462000],\n [100700000, 1661215588000],\n [100710000, 1661254370000],\n [100720000, 1661280952000],\n [100730001, 1661333728000],\n [100740001, 1661358099000],\n [100750000, 1661414497000],\n [100760000, 1661440179000],\n [100770000, 1661492341000],\n [100780000, 1661521055000],\n [100790000, 1661561197000],\n [100800000, 1661595564000],\n [100810000, 1661617049000],\n [100820001, 1661662917000],\n [100830000, 1661689252000],\n [100840000, 1661718103000],\n [100850000, 1661768784000],\n [100860000, 1661793527000],\n [100870000, 1661849515000],\n [100880001, 1661872195000],\n [100890000, 1661917529000],\n [100900000, 1661948051000],\n [100910000, 1661969237000],\n [100920000, 1662023950000],\n [100930000, 1662046758000],\n [100940001, 1662101858000],\n [100950000, 1662128942000],\n [100960000, 1662173387000],\n [100970000, 1662204890000],\n [100980000, 1662228844000],\n [100990000, 1662273369000],\n [101000001, 1662296585000],\n [101010000, 1662330600000],\n [101020000, 1662375501000],\n [101030000, 1662399311000],\n [101040000, 1662454532000],\n [101050000, 1662478221000],\n [101060000, 1662534277000],\n [101070000, 1662562041000],\n [101080001, 1662615000000],\n [101090000, 1662646251000],\n [101100000, 1662695101000],\n [101110000, 1662728898000],\n [101120000, 1662767763000],\n [101130000, 1662804411000],\n [101140000, 1662826306000],\n [101150000, 1662873053000],\n [101160000, 1662898991000],\n [101170000, 1662921420000],\n [101180000, 1662975008000],\n [101190000, 1662998412000],\n [101200001, 1663055550000],\n [101210000, 1663081475000],\n [101220001, 1663137351000],\n [101230000, 1663167043000],\n [101240000, 1663220786000],\n [101250000, 1663252123000],\n [101260001, 1663303174000],\n [101270000, 1663335605000],\n [101280000, 1663377786000],\n [101290000, 1663411636000],\n [101300000, 1663434514000],\n [101310000, 1663481292000],\n [101320000, 1663506006000],\n [101330000, 1663538154000],\n [101340000, 1663575100000],\n [101350000, 1663596656000],\n [101360001, 1663642801000],\n [101370000, 1663679427000],\n [101380001, 1663723527000],\n [101390001, 1663764847000],\n [101400000, 1663809476000],\n [101410000, 1663850607000],\n [101420000, 1663890675000],\n [101430000, 1663928623000],\n [101440000, 1663950553000],\n [101450000, 1663999393000],\n [101460000, 1664026202000],\n [101470000, 1664062966000],\n [101480000, 1664096841000],\n [101490000, 1664117420000],\n [101500000, 1664166014000],\n [101510001, 1664199412000],\n [101520000, 1664247441000],\n [101530000, 1664284337000],\n [101540000, 1664330061000],\n [101550000, 1664369209000],\n [101560000, 1664413801000],\n [101570000, 1664454981000],\n [101580000, 1664497469000],\n [101590000, 1664538598000],\n [101600000, 1664563614000],\n [101610001, 1664610820000],\n [101620001, 1664634225000],\n [101630000, 1664676093000],\n [101640000, 1664706511000],\n [101650000, 1664726088000],\n [101660000, 1664781204000],\n [101670001, 1664808690000],\n [101680001, 1664860503000],\n [101690000, 1664893068000],\n [101700000, 1664942458000],\n [101710000, 1664977095000],\n [101720000, 1665023401000],\n [101730000, 1665060915000],\n [101740000, 1665104252000],\n [101750000, 1665143938000],\n [101760000, 1665175158000],\n [101770000, 1665218600000],\n [101780000, 1665241251000],\n [101790000, 1665284588000],\n [101800000, 1665312938000],\n [101810000, 1665330821000],\n [101820000, 1665372149000],\n [101830000, 1665398820000],\n [101840000, 1665416394000],\n [101850001, 1665465350000],\n [101860000, 1665494515000],\n [101870000, 1665530852000],\n [101880000, 1665571548000],\n [101890000, 1665593214000],\n [101900000, 1665646911000],\n [101910001, 1665670737000],\n [101920000, 1665712000000],\n [101930001, 1665746769000],\n [101940000, 1665767338000],\n [101950001, 1665810534000],\n [101960001, 1665835542000],\n [101970000, 1665854271000],\n [101980000, 1665894802000],\n [101990000, 1665917567000],\n [102000000, 1665933751000],\n [102010000, 1665979225000],\n [102020001, 1666010201000],\n [102030000, 1666035288000],\n [102040000, 1666084139000],\n [102050001, 1666105768000],\n [102060000, 1666151876000],\n [102070000, 1666183433000],\n [102080000, 1666216827000],\n [102090000, 1666261199000],\n [102100000, 1666282384000],\n [102110000, 1666334679000],\n [102120000, 1666359814000],\n [102130000, 1666396801000],\n [102140000, 1666428164000],\n [102150000, 1666448425000],\n [102160000, 1666485189000],\n [102170000, 1666514196000],\n [102180001, 1666532789000],\n [102190001, 1666565854000],\n [102200000, 1666605896000],\n [102210001, 1666626596000],\n [102220000, 1666675350000],\n [102230000, 1666704277000],\n [102240000, 1666741236000],\n [102250000, 1666781943000],\n [102260000, 1666803294000],\n [102270000, 1666855732000],\n [102280000, 1666881175000],\n [102290000, 1666926797000],\n [102300000, 1666959138000],\n [102310001, 1666985187000],\n [102320000, 1667026497000],\n [102330000, 1667049301000],\n [102340000, 1667074375000],\n [102350000, 1667110331000],\n [102360000, 1667130422000],\n [102370000, 1667143380000],\n [102380000, 1667177656000],\n [102390001, 1667206886000],\n [102400000, 1667221135000],\n [102410000, 1667232357000],\n [102420000, 1667272246000],\n [102430000, 1667301644000],\n [102440000, 1667320439000],\n [102450000, 1667367598000],\n [102460000, 1667394858000],\n [102470000, 1667427666000],\n [102480000, 1667464915000],\n [102490000, 1667485160000],\n [102500000, 1667524862000],\n [102510000, 1667560354000],\n [102520000, 1667580817000],\n [102530000, 1667624234000],\n [102540000, 1667649179000],\n [102550001, 1667668772000],\n [102560000, 1667710692000],\n [102570000, 1667734400000],\n [102580000, 1667750824000],\n [102590000, 1667797645000],\n [102600000, 1667825493000],\n [102610000, 1667852133000],\n [102620000, 1667897579000],\n [102630000, 1667919378000],\n [102640000, 1667962893000],\n [102650000, 1667995549000],\n [102660000, 1668020437000],\n [102670004, 1668068451000],\n [102680000, 1668090936000],\n [102690000, 1668129462000],\n [102700000, 1668162955000],\n [102710002, 1668179889000],\n [102720000, 1668219563000],\n [102730000, 1668247564000],\n [102740001, 1668265922000],\n [102750000, 1668303741000],\n [102760000, 1668329693000],\n [102770000, 1668346874000],\n [102780000, 1668375663000],\n [102790000, 1668418003000],\n [102800000, 1668438783000],\n [102810000, 1668484194000],\n [102820000, 1668514548000],\n [102830000, 1668539261000],\n [102840000, 1668587302000],\n [102850000, 1668609630000],\n [102860001, 1668653622000],\n [102870000, 1668686822000],\n [102880000, 1668713232000],\n [102890000, 1668756421000],\n [102900001, 1668779395000],\n [102910000, 1668811400000],\n [102920001, 1668844024000],\n [102930002, 1668865313000],\n [102940000, 1668896876000],\n [102950000, 1668928452000],\n [102960000, 1668948443000],\n [102970000, 1668971136000],\n [102980000, 1669018484000],\n [102990000, 1669041914000],\n [103000001, 1669085862000],\n [103010000, 1669119022000],\n [103020000, 1669143271000],\n [103030001, 1669186087000],\n [103040000, 1669207952000],\n [103050000, 1669233127000],\n [103060001, 1669279725000],\n [103070000, 1669301857000],\n [103080000, 1669347356000],\n [103090000, 1669378612000],\n [103100000, 1669404460000],\n [103110000, 1669445020000],\n [103120000, 1669467819000],\n [103130000, 1669492431000],\n [103140001, 1669530622000],\n [103150000, 1669551525000],\n [103160000, 1669570387000],\n [103170000, 1669620905000],\n [103180000, 1669644820000],\n [103190000, 1669685233000],\n [103200000, 1669720198000],\n [103210000, 1669740091000],\n [103220001, 1669787993000],\n [103230000, 1669813297000],\n [103240000, 1669837950000],\n [103250000, 1669883072000],\n [103260000, 1669905232000],\n [103270001, 1669948516000],\n [103280000, 1669981254000],\n [103290000, 1670003254000],\n [103300000, 1670048941000],\n [103310000, 1670072034000],\n [103320000, 1670093871000],\n [103330000, 1670133300000],\n [103340000, 1670154660000],\n [103350000, 1670172240000],\n [103360001, 1670220480000],\n [103370000, 1670245740000],\n [103380000, 1670277480000],\n [103390000, 1670319000000],\n [103400000, 1670339280000],\n [103410000, 1670384520000],\n [103420000, 1670416800000],\n [103430000, 1670448720000],\n [103440002, 1670492880000],\n [103450000, 1670513040000],\n [103460000, 1670560200000],\n [103470000, 1670589120000],\n [103480000, 1670613240000],\n [103490000, 1670655000000],\n [103500000, 1670677320000],\n [103510000, 1670706120000],\n [103520000, 1670741520000],\n [103530002, 1670762040000],\n [103540000, 1670783700000],\n [103550000, 1670833980000],\n [103560000, 1670856420000],\n [103570000, 1670900760000],\n [103580000, 1670934000000],\n [103590000, 1670962320000],\n [103600000, 1671009780000],\n [103610000, 1671030900000],\n [103620000, 1671080700000],\n [103630000, 1671109800000],\n [103640000, 1671144180000],\n [103650000, 1671185160000],\n [103660000, 1671204600000],\n [103670000, 1671247980000],\n [103680000, 1671274620000],\n [103690000, 1671292800000],\n [103700000, 1671336000000],\n [103710000, 1671361620000],\n [103720000, 1671379740000],\n [103730001, 1671430260000],\n [103740000, 1671457140000],\n [103750000, 1671496200000],\n [103760000, 1671534780000],\n [103770000, 1671558060000],\n [103780001, 1671608340000],\n [103790000, 1671632100000],\n [103800000, 1671673020000],\n [103810000, 1671708240000],\n [103820000, 1671729660000],\n [103830000, 1671779400000],\n [103840000, 1671802980000],\n [103850000, 1671830220000],\n [103860000, 1671863040000],\n [103870000, 1671882180000],\n [103880000, 1671894900000],\n [103890000, 1671923820000],\n [103900000, 1671949680000],\n [103910002, 1671967260000],\n [103920000, 1671979860000],\n [103930000, 1672016040000],\n [103940000, 1672049280000],\n [103950000, 1672068720000],\n [103960001, 1672113420000],\n [103970000, 1672143420000],\n [103980000, 1672170420000],\n [103990001, 1672215780000],\n [104000002, 1672237620000],\n [104010000, 1672277580000],\n [104020000, 1672308120000],\n [104030000, 1672327620000],\n [104040001, 1672369020000],\n [104050000, 1672396500000],\n [104060002, 1672414380000],\n [104070000, 1672451820000],\n [104080001, 1672474140000],\n [104090000, 1672489980000],\n [104100000, 1672499040000],\n [104110000, 1672506000000],\n [104120000, 1672535640000],\n [104130000, 1672556220000],\n [104140000, 1672573980000],\n [104150000, 1672587900000],\n [104160000, 1672627680000],\n [104170000, 1672652520000],\n [104180000, 1672671420000],\n [104190001, 1672707180000],\n [104200000, 1672735260000],\n [104210000, 1672753800000],\n [104220000, 1672785120000],\n [104230000, 1672820400000],\n [104240000, 1672840680000],\n [104250001, 1672873500000],\n [104260001, 1672910940000],\n [104270000, 1672930620000],\n [104280000, 1672973160000],\n [104290000, 1673003400000],\n [104300000, 1673021340000],\n [104310000, 1673064360000],\n [104320000, 1673089800000],\n [104330000, 1673107200000],\n [104340000, 1673147580000],\n [104350000, 1673173320000],\n [104360000, 1673190720000],\n [104370003, 1673229120000],\n [104380001, 1673256120000],\n [104390000, 1673274420000],\n [104400000, 1673311620000],\n [104410000, 1673348880000],\n [104420001, 1673368980000],\n [104430000, 1673420820000],\n [104440000, 1673445180000],\n [104450000, 1673485080000],\n [104460000, 1673522160000],\n [104470000, 1673545560000],\n [104480000, 1673596860000],\n [104490002, 1673619300000],\n [104500000, 1673657220000],\n [104510000, 1673688540000],\n [104520000, 1673708040000],\n [104530000, 1673745120000],\n [104540000, 1673773260000],\n [104550000, 1673791200000],\n [104560000, 1673825220000],\n [104570000, 1673864820000],\n [104580000, 1673885040000],\n [104590000, 1673934000000],\n [104600000, 1673962200000],\n [104610000, 1673999460000],\n [104620000, 1674039420000],\n [104630000, 1674061140000],\n [104640000, 1674113160000],\n [104650000, 1674138060000],\n [104660000, 1674181200000],\n [104670000, 1674214680000],\n [104680000, 1674236760000],\n [104690000, 1674280920000],\n [104700000, 1674304680000],\n [104710000, 1674326040000],\n [104720001, 1674367080000],\n [104730000, 1674389700000],\n [104740000, 1674409380000],\n [104750000, 1674459780000],\n [104760000, 1674483000000],\n [104770000, 1674523860000],\n [104780000, 1674559440000],\n [104790000, 1674583860000],\n [104800000, 1674634020000],\n [104810000, 1674656880000],\n [104820000, 1674698640000],\n [104830000, 1674733980000],\n [104840000, 1674756420000],\n [104850000, 1674807060000],\n [104860000, 1674828660000],\n [104870000, 1674865320000],\n [104880000, 1674896700000],\n [104890000, 1674916080000],\n [104900000, 1674951780000],\n [104910000, 1674981120000],\n [104920000, 1674999360000],\n [104930000, 1675029120000],\n [104940000, 1675071180000],\n [104950000, 1675090860000],\n [104960000, 1675134780000],\n [104970000, 1675165980000],\n [104980000, 1675184040000],\n [104990000, 1675233960000],\n [105000000, 1675257900000],\n [105010000, 1675291800000],\n [105020000, 1675331520000],\n [105030000, 1675350300000],\n [105040000, 1675392780000],\n [105050000, 1675420440000],\n [105060000, 1675436520000],\n [105070000, 1675474320000],\n [105080000, 1675503360000],\n [105090000, 1675522200000],\n [105100000, 1675558380000],\n [105110000, 1675585200000],\n [105120002, 1675602960000],\n [105130000, 1675627260000],\n [105140000, 1675672260000],\n [105150000, 1675693560000],\n [105160000, 1675731060000],\n [105170000, 1675766760000],\n [105180000, 1675785300000],\n [105190000, 1675833960000],\n [105200000, 1675860600000],\n [105210000, 1675885440000],\n [105220000, 1675932240000],\n [105230000, 1675953420000],\n [105240000, 1675992780000],\n [105250002, 1676024520000],\n [105260000, 1676041800000],\n [105270002, 1676079780000],\n [105280000, 1676107800000],\n [105290002, 1676126580000],\n [105300000, 1676160780000],\n [105310000, 1676188440000],\n [105320000, 1676206560000],\n [105330000, 1676225340000],\n [105340000, 1676272800000],\n [105350000, 1676294880000],\n [105360000, 1676311260000],\n [105370000, 1676348580000],\n [105380001, 1676371620000],\n [105390000, 1676384640000],\n [105400000, 1676409600000],\n [105410000, 1676449440000],\n [105420000, 1676470320000],\n [105430000, 1676508780000],\n [105440000, 1676545200000],\n [105450000, 1676564940000],\n [105460000, 1676612940000],\n [105470000, 1676639400000],\n [105480000, 1676666880000],\n [105490000, 1676704980000],\n [105500000, 1676726100000],\n [105510000, 1676749800000],\n [105520000, 1676785860000],\n [105530000, 1676807280000],\n [105540000, 1676822100000],\n [105550000, 1676867460000],\n [105560000, 1676895900000],\n [105570000, 1676917800000],\n [105580000, 1676964120000],\n [105590000, 1676987460000],\n [105600000, 1677019320000],\n [105610000, 1677056400000],\n [105620000, 1677074880000],\n [105630000, 1677107340000],\n [105640000, 1677140760000],\n [105650000, 1677160500000],\n [105660001, 1677190980000],\n [105670001, 1677230340000],\n [105680000, 1677250140000],\n [105690000, 1677286440000],\n [105700000, 1677315960000],\n [105710000, 1677334920000],\n [105720000, 1677367080000],\n [105730000, 1677396720000],\n [105740000, 1677415680000],\n [105750000, 1677433800000],\n [105760000, 1677480480000],\n [105770000, 1677503760000],\n [105780000, 1677530640000],\n [105790000, 1677572460000],\n [105800000, 1677592500000],\n [105810000, 1677622380000],\n [105820000, 1677661200000],\n [105830000, 1677680520000],\n [105840000, 1677717300000],\n [105850000, 1677752820000],\n [105860000, 1677771060000],\n [105870001, 1677815100000],\n [105880000, 1677843900000],\n [105890000, 1677860640000],\n [105900000, 1677902400000],\n [105910000, 1677927600000],\n [105920000, 1677944280000],\n [105930000, 1677982920000],\n [105940000, 1678007760000],\n [105950000, 1678024380000],\n [105960000, 1678053060000],\n [105970000, 1678092960000],\n [105980001, 1678112340000],\n [105990001, 1678147500000],\n [106000000, 1678183140000],\n [106010000, 1678201560000],\n [106020000, 1678243800000],\n [106030000, 1678274820000],\n [106040000, 1678291920000],\n [106050000, 1678335600000],\n [106060000, 1678362480000],\n [106070000, 1678378860000],\n [106080000, 1678424700000],\n [106090000, 1678450320000],\n [106100000, 1678468860000],\n [106110003, 1678509420000],\n [106120000, 1678534200000],\n [106130000, 1678551480000],\n [106140000, 1678589880000],\n [106150000, 1678612680000],\n [106160000, 1678628940000],\n [106170000, 1678657140000],\n [106180001, 1678696680000],\n [106190000, 1678716480000],\n [106200000, 1678748040000],\n [106210002, 1678784760000],\n [106220000, 1678803420000],\n [106230001, 1678837920000],\n [106240000, 1678873860000],\n [106250000, 1678892280000],\n [106260000, 1678932720000],\n [106270000, 1678964280000],\n [106280000, 1678981860000],\n [106290000, 1679026080000],\n [106300000, 1679053320000],\n [106310000, 1679069340000],\n [106320000, 1679109120000],\n [106330000, 1679134200000],\n [106340000, 1679151540000],\n [106350001, 1679186760000],\n [106360001, 1679214420000],\n [106370000, 1679232180000],\n [106380000, 1679252820000],\n [106390000, 1679296680000],\n [106400000, 1679318520000],\n [106410000, 1679342340000],\n [106420001, 1679380200000],\n [106430002, 1679401020000],\n [106440000, 1679418060000],\n [106450000, 1679463300000],\n [106460000, 1679488440000],\n [106470000, 1679508780000],\n [106480000, 1679554320000],\n [106490000, 1679577120000],\n [106500000, 1679600640000],\n [106510000, 1679643120000],\n [106520000, 1679663400000],\n [106530000, 1679683500000],\n [106540002, 1679720880000],\n [106550000, 1679743920000],\n [106560000, 1679759700000],\n [106570000, 1679797680000],\n [106580001, 1679821260000],\n [106590000, 1679837700000],\n [106600000, 1679859600000],\n [106610001, 1679901840000],\n [106620000, 1679923920000],\n [106630000, 1679951700000],\n [106640000, 1679991780000],\n [106650002, 1680012240000],\n [106660000, 1680045000000],\n [106670000, 1680081360000],\n [106680000, 1680100500000],\n [106690000, 1680135900000],\n [106700000, 1680170400000],\n [106710000, 1680188520000],\n [106720000, 1680226920000],\n [106730000, 1680257820000],\n [106740000, 1680274800000],\n [106750000, 1680304680000],\n [106760000, 1680332820000],\n [106770000, 1680352440000],\n [106780001, 1680368580000],\n [106790000, 1680406200000],\n [106800001, 1680429600000],\n [106810000, 1680445200000],\n [106820000, 1680474780000],\n [106830000, 1680512220000],\n [106840001, 1680530820000],\n [106850001, 1680562320000],\n [106860000, 1680598080000],\n [106870000, 1680617100000],\n [106880000, 1680649320000],\n [106890000, 1680684540000],\n [106900000, 1680702720000],\n [106910000, 1680732360000],\n [106920000, 1680770640000],\n [106930000, 1680789660000],\n [106940000, 1680820620000],\n [106950000, 1680856980000],\n [106960000, 1680876000000],\n [106970000, 1680904440000],\n [106980000, 1680936780000],\n [106990000, 1680956820000],\n [107000000, 1680973380000],\n [107010000, 1681010520000],\n [107020002, 1681032780000],\n [107030000, 1681047960000],\n [107040001, 1681070400000],\n [107050000, 1681111800000],\n [107060000, 1681132800000],\n [107070000, 1681158360000],\n [107080000, 1681200660000],\n [107090000, 1681221060000],\n [107100000, 1681251480000],\n [107110000, 1681290420000],\n [107120000, 1681309740000],\n [107130000, 1681345620000],\n [107140000, 1681381920000],\n [107150000, 1681399140000],\n [107160000, 1681441740000],\n [107170000, 1681471620000],\n [107180002, 1681488720000],\n [107190000, 1681527900000],\n [107200000, 1681553220000],\n [107210000, 1681570560000],\n [107220000, 1681603440000],\n [107230002, 1681629840000],\n [107240000, 1681647480000],\n [107250001, 1681661760000],\n [107260000, 1681704120000],\n [107270000, 1681732020000],\n [107280000, 1681748280000],\n [107290000, 1681792260000],\n [107300000, 1681819620000],\n [107310001, 1681837560000],\n [107320000, 1681883220000],\n [107330000, 1681908120000],\n [107340000, 1681928760000],\n [107350000, 1681974480000],\n [107360003, 1681996560000],\n [107370000, 1682024220000],\n [107380000, 1682065620000],\n [107390000, 1682084640000],\n [107400000, 1682111160000],\n [107410000, 1682145360000],\n [107420001, 1682165520000],\n [107430001, 1682181480000],\n [107440000, 1682219040000],\n [107450000, 1682241480000],\n [107460000, 1682256660000],\n [107470000, 1682277480000],\n [107480000, 1682321460000],\n [107490000, 1682341980000],\n [107500000, 1682365200000],\n [107510000, 1682407980000],\n [107520000, 1682428140000],\n [107530000, 1682453040000],\n [107540001, 1682495580000],\n [107550002, 1682515980000],\n [107560000, 1682545200000],\n [107570000, 1682586780000],\n [107580000, 1682605860000],\n [107590000, 1682641680000],\n [107600000, 1682676360000],\n [107610000, 1682693640000],\n [107620000, 1682727780000],\n [107630000, 1682755500000],\n [107640000, 1682773200000],\n [107650000, 1682790720000],\n [107660000, 1682826420000],\n [107670000, 1682850000000],\n [107680000, 1682863320000],\n [107690000, 1682884560000],\n [107700000, 1682922240000],\n [107710000, 1682942820000],\n [107720000, 1682957040000],\n [107730000, 1682996400000],\n [107740000, 1683022680000],\n [107750000, 1683039120000],\n [107760000, 1683071520000],\n [107770000, 1683101220000],\n [107780000, 1683120000000],\n [107790000, 1683143520000],\n [107800000, 1683179400000],\n [107810001, 1683201840000],\n [107820001, 1683218160000],\n [107830000, 1683255300000],\n [107840000, 1683279240000],\n [107850001, 1683295740000],\n [107860000, 1683320580000],\n [107870000, 1683352800000],\n [107880000, 1683373380000],\n [107890000, 1683388440000],\n [107900000, 1683424500000],\n [107910000, 1683446340000],\n [107920000, 1683462840000],\n [107930000, 1683478140000],\n [107940000, 1683523260000],\n [107950000, 1683549960000],\n [107960000, 1683569880000],\n [107970001, 1683615660000],\n [107980000, 1683638220000],\n [107990000, 1683654120000],\n [108000000, 1683699000000],\n [108010000, 1683723660000],\n [108020000, 1683747360000],\n [108030000, 1683792000000],\n [108040000, 1683813480000],\n [108050000, 1683848640000],\n [108060001, 1683886500000],\n [108070000, 1683905160000],\n [108080000, 1683945900000],\n [108090000, 1683973200000],\n [108100000, 1683990780000],\n [108110000, 1684027440000],\n [108120000, 1684053240000],\n [108130000, 1684070460000],\n [108140000, 1684093260000],\n [108150000, 1684137600000],\n [108160000, 1684159380000],\n [108170000, 1684195680000],\n [108180000, 1684233900000],\n [108190000, 1684252800000],\n [108200000, 1684299720000],\n [108210000, 1684327980000],\n [108220000, 1684357200000],\n [108230002, 1684399740000],\n [108240000, 1684421280000],\n [108250000, 1684463040000],\n [108260000, 1684494900000],\n [108270000, 1684513680000],\n [108280000, 1684555020000],\n [108290001, 1684580760000],\n [108300000, 1684598400000],\n [108310000, 1684637580000],\n [108320000, 1684661940000],\n [108330000, 1684678980000],\n [108340000, 1684712700000],\n [108350000, 1684749840000],\n [108360000, 1684768500000],\n [108370000, 1684811640000],\n [108380000, 1684843200000],\n [108390000, 1684864320000],\n [108400000, 1684911720000],\n [108410000, 1684935720000],\n [108420001, 1684969800000],\n [108430003, 1685009100000],\n [108440000, 1685028480000],\n [108450001, 1685073960000],\n [108460000, 1685102820000],\n [108470000, 1685123760000],\n [108480000, 1685164620000],\n [108490000, 1685188800000],\n [108500000, 1685208300000],\n [108510000, 1685248020000],\n [108520000, 1685271240000],\n [108530001, 1685286360000],\n [108540000, 1685326740000],\n [108550000, 1685358480000],\n [108560000, 1685376480000],\n [108570000, 1685421420000],\n [108580001, 1685449800000],\n [108590000, 1685474580000],\n [108600000, 1685519820000],\n [108610000, 1685540700000],\n [108620000, 1685570040000],\n [108630001, 1685610000000],\n [108640000, 1685630400000],\n [108650000, 1685668560000],\n [108660000, 1685701020000],\n [108670000, 1685719140000],\n [108680000, 1685759160000],\n [108690000, 1685785800000],\n [108700000, 1685803920000],\n [108710000, 1685838180000],\n [108720000, 1685865720000],\n [108730001, 1685883720000],\n [108740001, 1685905860000],\n [108750000, 1685950980000],\n [108760000, 1685972520000],\n [108770000, 1686003060000],\n [108780000, 1686043020000],\n [108790000, 1686063060000],\n [108800000, 1686103740000],\n [108810001, 1686136800000],\n [108820000, 1686156120000],\n [108830000, 1686203460000],\n [108840001, 1686229380000],\n [108850000, 1686259620000],\n [108860002, 1686300720000],\n [108870000, 1686320040000],\n [108880000, 1686353760000],\n [108890000, 1686385260000],\n [108900000, 1686404640000],\n [108910000, 1686434340000],\n [108920000, 1686465900000],\n [108930001, 1686485700000],\n [108940000, 1686503160000],\n [108950000, 1686548640000],\n [108960000, 1686574020000],\n [108970000, 1686598500000],\n [108980000, 1686643500000],\n [108990000, 1686665940000],\n [109000000, 1686704040000],\n [109010001, 1686739320000],\n [109020000, 1686758040000],\n [109030000, 1686805320000],\n [109040000, 1686833400000],\n [109050000, 1686859560000],\n [109060000, 1686903900000],\n [109070000, 1686924660000],\n [109080000, 1686956940000],\n [109090000, 1686988800000],\n [109100000, 1687008840000],\n [109110000, 1687035960000],\n [109120000, 1687068600000],\n [109130000, 1687087860000],\n [109140000, 1687102200000],\n [109150000, 1687143420000],\n [109160000, 1687173180000],\n [109170000, 1687190400000],\n [109180000, 1687234980000],\n [109190000, 1687263180000],\n [109200000, 1687284420000],\n [109210000, 1687330080000],\n [109220000, 1687353060000],\n [109230000, 1687382640000],\n [109240000, 1687423140000],\n [109250000, 1687442400000],\n [109260001, 1687474080000],\n [109270000, 1687511760000],\n [109280000, 1687530360000],\n [109290001, 1687562880000],\n [109300000, 1687593060000],\n [109310000, 1687612500000],\n [109320000, 1687634820000],\n [109330000, 1687671000000],\n [109340001, 1687692600000],\n [109350000, 1687707420000],\n [109360000, 1687749240000],\n [109370001, 1687779900000],\n [109380001, 1687799580000],\n [109390000, 1687846200000],\n [109400000, 1687871760000],\n [109410000, 1687903200000],\n [109420000, 1687943220000],\n [109430000, 1687963260000],\n [109440000, 1688003160000],\n [109450000, 1688036280000],\n [109460000, 1688054820000],\n [109470000, 1688097420000],\n [109480000, 1688125380000],\n [109490000, 1688141160000],\n [109500000, 1688180400000],\n [109510000, 1688205480000],\n [109520000, 1688223120000],\n [109530000, 1688253120000],\n [109540000, 1688273940000],\n [109550000, 1688290980000],\n [109560000, 1688304720000],\n [109570001, 1688323260000],\n [109580000, 1688364780000],\n [109590000, 1688387280000],\n [109600000, 1688405580000],\n [109610000, 1688449320000],\n [109620000, 1688473860000],\n [109630001, 1688494080000],\n [109640000, 1688536800000],\n [109650001, 1688561100000],\n [109660000, 1688584560000],\n [109670000, 1688628540000],\n [109680000, 1688651100000],\n [109690000, 1688680200000],\n [109700000, 1688718480000],\n [109710000, 1688736840000],\n [109720000, 1688764440000],\n [109730000, 1688798940000],\n [109740000, 1688820240000],\n [109750000, 1688840940000],\n [109760000, 1688878380000],\n [109770000, 1688900400000],\n [109780000, 1688915880000],\n [109790000, 1688956680000],\n [109800000, 1688987760000],\n [109810000, 1689006420000],\n [109820001, 1689051540000],\n [109830000, 1689079500000],\n [109840001, 1689106560000],\n [109850000, 1689150600000],\n [109860001, 1689171960000],\n [109870001, 1689209880000],\n [109880000, 1689244800000],\n [109890000, 1689264120000],\n [109900000, 1689309480000],\n [109910000, 1689337560000],\n [109920000, 1689358200000],\n [109930000, 1689398340000],\n [109940000, 1689422700000],\n [109950000, 1689441540000],\n [109960000, 1689480960000],\n [109970000, 1689505500000],\n [109980000, 1689521820000],\n [109990000, 1689560700000],\n [110000000, 1689586440000],\n [110010000, 1689604020000],\n [110020000, 1689639480000],\n [110030000, 1689676320000],\n [110040000, 1689695520000],\n [110050000, 1689741720000],\n [110060000, 1689770400000],\n [110070000, 1689797460000],\n [110080000, 1689840600000],\n [110090000, 1689862500000],\n [110100000, 1689898920000],\n [110110000, 1689934260000],\n [110120000, 1689952680000],\n [110130000, 1689993300000],\n [110140000, 1690020120000],\n [110150000, 1690038720000],\n [110160000, 1690076040000],\n [110170000, 1690102860000],\n [110180000, 1690120800000],\n [110190001, 1690153080000],\n [110200001, 1690190220000],\n [110210000, 1690209420000],\n [110220000, 1690246920000],\n [110230000, 1690281120000],\n [110240000, 1690300080000],\n [110250000, 1690343880000],\n [110260000, 1690372800000],\n [110270000, 1690393500000],\n [110280000, 1690438260000],\n [110290000, 1690462800000],\n [110300000, 1690491420000],\n [110310000, 1690531860000],\n [110320000, 1690552560000],\n [110330000, 1690583820000],\n [110340000, 1690615680000],\n [110350000, 1690636680000],\n [110360000, 1690662060000],\n [110370000, 1690696680000],\n [110380000, 1690718400000],\n [110390000, 1690735020000],\n [110400000, 1690778640000],\n [110410001, 1690805640000],\n [110420000, 1690823580000],\n [110430000, 1690867680000],\n [110440000, 1690893060000],\n [110450000, 1690913940000],\n [110460000, 1690957080000],\n [110470000, 1690980480000],\n [110480001, 1691003760000],\n [110490000, 1691047740000],\n [110500000, 1691070060000],\n [110510000, 1691102940000],\n [110520000, 1691139480000],\n [110530000, 1691158860000],\n [110540000, 1691194080000],\n [110550000, 1691224200000],\n [110560000, 1691244240000],\n [110570000, 1691276220000],\n [110580000, 1691305260000],\n [110590000, 1691324880000],\n [110600000, 1691342400000],\n [110610000, 1691385300000],\n [110620000, 1691410680000],\n [110630000, 1691429760000],\n [110640000, 1691474400000],\n [110650000, 1691498040000],\n [110660000, 1691519820000],\n [110670000, 1691563620000],\n [110680000, 1691586780000],\n [110690000, 1691612940000],\n [110700000, 1691653440000],\n [110710000, 1691674620000],\n [110720002, 1691702460000],\n [110730000, 1691737080000],\n [110740000, 1691758260000],\n [110750000, 1691782980000],\n [110760000, 1691821380000],\n [110770000, 1691845260000],\n [110780000, 1691873280000],\n [110790000, 1691909640000],\n [110800001, 1691931420000],\n [110810000, 1691954460000],\n [110820001, 1691995560000],\n [110830000, 1692017520000],\n [110840000, 1692041220000],\n [110850001, 1692078600000],\n [110860000, 1692100740000],\n [110870001, 1692117240000],\n [110880000, 1692158820000],\n [110890000, 1692185640000],\n [110900000, 1692203760000],\n [110910000, 1692247560000],\n [110920000, 1692274380000],\n [110930000, 1692294960000],\n [110940000, 1692339600000],\n [110950000, 1692363000000],\n [110960002, 1692385260000],\n [110970000, 1692423120000],\n [110980000, 1692446940000],\n [110990000, 1692465420000],\n [111000000, 1692505140000],\n [111010000, 1692529200000],\n [111020000, 1692545340000],\n [111030000, 1692586800000],\n [111040000, 1692616500000],\n [111050000, 1692633840000],\n [111060000, 1692677940000],\n [111070000, 1692706320000],\n [111080000, 1692728040000],\n [111090000, 1692774600000],\n [111100000, 1692797880000],\n [111110000, 1692829320000],\n [111120000, 1692868920000],\n [111130000, 1692889260000],\n [111140000, 1692931440000],\n [111150001, 1692962400000],\n [111160000, 1692981120000],\n [111170000, 1693022520000],\n [111180000, 1693048920000],\n [111190000, 1693066740000],\n [111200000, 1693105920000],\n [111210000, 1693130760000],\n [111220000, 1693146780000],\n [111230000, 1693179900000],\n [111240000, 1693216800000],\n [111250000, 1693236180000],\n [111260000, 1693280100000],\n [111270000, 1693310820000],\n [111280000, 1693332840000],\n [111290001, 1693380180000],\n [111300000, 1693403160000],\n [111310001, 1693428480000],\n [111320000, 1693468260000],\n [111330001, 1693487760000],\n [111340001, 1693510320000],\n [111350003, 1693555260000],\n [111360000, 1693576320000],\n [111370000, 1693607700000],\n [111380000, 1693640520000],\n [111390000, 1693661700000],\n [111400000, 1693689600000],\n [111410000, 1693722780000],\n [111420000, 1693743000000],\n [111430000, 1693762200000],\n [111440000, 1693810800000],\n [111450000, 1693834920000],\n [111460000, 1693869840000],\n [111470000, 1693908840000],\n [111480000, 1693928340000],\n [111490000, 1693974900000],\n [111500000, 1694004240000],\n [111510001, 1694033880000],\n [111520000, 1694077200000],\n [111530000, 1694098500000],\n [111540000, 1694140200000],\n [111550000, 1694171580000],\n [111560000, 1694190360000],\n [111570000, 1694231460000],\n [111580000, 1694257800000],\n [111590000, 1694274960000],\n [111600000, 1694314080000],\n [111610000, 1694338920000],\n [111620000, 1694356740000],\n [111630001, 1694395140000],\n [111640001, 1694430660000],\n [111650001, 1694450520000],\n [111660000, 1694498580000],\n [111670000, 1694524620000],\n [111680000, 1694557200000],\n [111690000, 1694599680000],\n [111700000, 1694619840000],\n [111710000, 1694667060000],\n [111720000, 1694696520000],\n [111730000, 1694729400000],\n [111740000, 1694770620000],\n [111750002, 1694790660000],\n [111760000, 1694830860000],\n [111770000, 1694860260000],\n [111780000, 1694879100000],\n [111790000, 1694919600000],\n [111800000, 1694946540000],\n [111810000, 1694963340000],\n [111820000, 1695001260000],\n [111830000, 1695029700000],\n [111840000, 1695048060000],\n [111850000, 1695086280000],\n [111860000, 1695122160000],\n [111870001, 1695141840000],\n [111880000, 1695189780000],\n [111890000, 1695215700000],\n [111900000, 1695247200000],\n [111910000, 1695287820000],\n [111920001, 1695308880000],\n [111930000, 1695352920000],\n [111940001, 1695384180000],\n [111950000, 1695404580000],\n [111960000, 1695445500000],\n [111970000, 1695469980000],\n [111980000, 1695487140000],\n [111990000, 1695526380000],\n [112000001, 1695552120000],\n [112010001, 1695568200000],\n [112020000, 1695611100000],\n [112030000, 1695643200000],\n [112040000, 1695667740000],\n [112050000, 1695716580000],\n [112060000, 1695739440000],\n [112070000, 1695781680000],\n [112080003, 1695816000000],\n [112090000, 1695842340000],\n [112100000, 1695891420000],\n [112110000, 1695913620000],\n [112120000, 1695959760000],\n [112130000, 1695989580000],\n [112140000, 1696011480000],\n [112150000, 1696053000000],\n [112160000, 1696076160000],\n [112170000, 1696093620000],\n [112180000, 1696132920000],\n [112190000, 1696157040000],\n [112200000, 1696172880000],\n [112210000, 1696214400000],\n [112220000, 1696246920000],\n [112230000, 1696269060000],\n [112240000, 1696318140000],\n [112250000, 1696341900000],\n [112260000, 1696381200000],\n [112270000, 1696417440000],\n [112280000, 1696436820000],\n [112290001, 1696485180000],\n [112300000, 1696511700000],\n [112310000, 1696544580000],\n [112320000, 1696585620000],\n [112330000, 1696605060000],\n [112340000, 1696645920000],\n [112350000, 1696674900000],\n [112360000, 1696694280000],\n [112370000, 1696735020000],\n [112380000, 1696762020000],\n [112390000, 1696779660000],\n [112400000, 1696819440000],\n [112410001, 1696845480000],\n [112420000, 1696863600000],\n [112430001, 1696902060000],\n [112440000, 1696936260000],\n [112450000, 1696956000000],\n [112460000, 1697004720000],\n [112470000, 1697031000000],\n [112480000, 1697066040000],\n [112490000, 1697105940000],\n [112500000, 1697126460000],\n [112510001, 1697174580000],\n [112520000, 1697201940000],\n [112530000, 1697231340000],\n [112540000, 1697268600000],\n [112550001, 1697290320000],\n [112560000, 1697320800000],\n [112570000, 1697353620000],\n [112580000, 1697373720000],\n [112590000, 1697394720000],\n [112600000, 1697443920000],\n [112610001, 1697466600000],\n [112620000, 1697508000000],\n [112630001, 1697543160000],\n [112640000, 1697568480000],\n [112650000, 1697616420000],\n [112660000, 1697639460000],\n [112670000, 1697680920000],\n [112680000, 1697714760000],\n [112690000, 1697737800000],\n [112700000, 1697785200000],\n [112710000, 1697808960000],\n [112720000, 1697841600000],\n [112730000, 1697876220000],\n [112740000, 1697896680000],\n [112750000, 1697930100000],\n [112760000, 1697962140000],\n [112770000, 1697981640000],\n [112780000, 1698013560000],\n [112790000, 1698055200000],\n [112800000, 1698074880000],\n [112810000, 1698120480000],\n [112820000, 1698151260000],\n [112830000, 1698182640000],\n [112840000, 1698225240000],\n [112850000, 1698246300000],\n [112860000, 1698291720000],\n [112870000, 1698323100000],\n [112880000, 1698353100000],\n [112890000, 1698397200000],\n [112900000, 1698418320000],\n [112910000, 1698456120000],\n [112920001, 1698487200000],\n [112930000, 1698505980000],\n [112940000, 1698545760000],\n [112950000, 1698572460000],\n [112960000, 1698590160000],\n [112970000, 1698627840000],\n [112980000, 1698662640000],\n [112990000, 1698678960000],\n [113000000, 1698713040000],\n [113010000, 1698742740000],\n [113020000, 1698756120000],\n [113030000, 1698767160000],\n [113040000, 1698803280000],\n [113050000, 1698834840000],\n [113060000, 1698853620000],\n [113070000, 1698897900000],\n [113080000, 1698928440000],\n [113090000, 1698954900000],\n [113100000, 1698994800000],\n [113110000, 1699017180000],\n [113120000, 1699047600000],\n [113130000, 1699083720000],\n [113140000, 1699104600000],\n [113150000, 1699132740000],\n [113160000, 1699167180000],\n [113170000, 1699187340000],\n [113180000, 1699207560000],\n [113190000, 1699256220000],\n [113200000, 1699279260000],\n [113210000, 1699317360000],\n [113220000, 1699354800000],\n [113230000, 1699374960000],\n [113240000, 1699425120000],\n [113250000, 1699451580000],\n [113260000, 1699491300000],\n [113270000, 1699528980000],\n [113280000, 1699553880000],\n [113290000, 1699604160000],\n [113300000, 1699626360000],\n [113310000, 1699660680000],\n [113320000, 1699692180000],\n [113330000, 1699711260000],\n [113340000, 1699743780000],\n [113350000, 1699775640000],\n [113360001, 1699795200000],\n [113370002, 1699822980000],\n [113380000, 1699867980000],\n [113390000, 1699889100000],\n [113400000, 1699937820000],\n [113410002, 1699968180000],\n [113420000, 1700005080000],\n [113430000, 1700045400000],\n [113440000, 1700067660000],\n [113450000, 1700119380000],\n [113460000, 1700143860000],\n [113470000, 1700185740000],\n [113480000, 1700219880000],\n [113490000, 1700240460000],\n [113500000, 1700283780000],\n [113510000, 1700308380000],\n [113520000, 1700327100000],\n [113530000, 1700368320000],\n [113540001, 1700392500000],\n [113550000, 1700408820000],\n [113560000, 1700455380000],\n [113570000, 1700484180000],\n [113580000, 1700511420000],\n [113590000, 1700557200000],\n [113600000, 1700578380000],\n [113610000, 1700619420000],\n [113620000, 1700652180000],\n [113630000, 1700672280000],\n [113640000, 1700716260000],\n [113650000, 1700742000000],\n [113660000, 1700766360000],\n [113670000, 1700814060000],\n [113680000, 1700836200000],\n [113690000, 1700875140000],\n [113700000, 1700905620000],\n [113710001, 1700924580000],\n [113720001, 1700963580000],\n [113730000, 1700990220000],\n [113740000, 1701008100000],\n [113750000, 1701043740000],\n [113760000, 1701081480000],\n [113770000, 1701101760000],\n [113780001, 1701151440000],\n [113790000, 1701178260000],\n [113800000, 1701213480000],\n [113810000, 1701252000000],\n [113820001, 1701271980000],\n [113830000, 1701317820000],\n [113840000, 1701347040000],\n [113850000, 1701369840000],\n [113860000, 1701416400000],\n [113870000, 1701438960000],\n [113880001, 1701473760000],\n [113890000, 1701505800000],\n [113900000, 1701526920000],\n [113910000, 1701562320000],\n [113920000, 1701592200000],\n [113930001, 1701610800000],\n [113940000, 1701641040000],\n [113950000, 1701683040000],\n [113960000, 1701703200000],\n [113970000, 1701748920000],\n [113980001, 1701780180000],\n [113990000, 1701810000000],\n [114000000, 1701853560000],\n [114010000, 1701874800000],\n [114020000, 1701918000000],\n [114030000, 1701949680000],\n [114040000, 1701973020000],\n [114050000, 1702022100000],\n [114060000, 1702044540000],\n [114070000, 1702081200000],\n [114080000, 1702113060000],\n [114090001, 1702132680000],\n [114100000, 1702169160000],\n [114110001, 1702197000000],\n [114120001, 1702215120000],\n [114130000, 1702242720000],\n [114140000, 1702285200000],\n [114150001, 1702306200000],\n [114160000, 1702347120000],\n [114170000, 1702379820000],\n [114180001, 1702398660000],\n [114190001, 1702446480000],\n [114200000, 1702472340000],\n [114210000, 1702501200000],\n [114220000, 1702544400000],\n [114230000, 1702565340000],\n [114240000, 1702607880000],\n [114250000, 1702639440000],\n [114260000, 1702657500000],\n [114270000, 1702698720000],\n [114280000, 1702724700000],\n [114290001, 1702742760000],\n [114300000, 1702783140000],\n [114310000, 1702809240000],\n [114320000, 1702825980000],\n [114330000, 1702869300000],\n [114340000, 1702901340000],\n [114350000, 1702926840000],\n [114360000, 1702974120000],\n [114370000, 1702995900000],\n [114380000, 1703035800000],\n [114390000, 1703070780000],\n [114400000, 1703091780000],\n [114410000, 1703140500000],\n [114420000, 1703166300000],\n [114430000, 1703202900000],\n [114440000, 1703240040000],\n [114450000, 1703259120000],\n [114460001, 1703301360000],\n [114470000, 1703329200000],\n [114480000, 1703346120000],\n [114490000, 1703381400000],\n [114500000, 1703404620000],\n [114510001, 1703419860000],\n [114520000, 1703431140000],\n [114530000, 1703461560000],\n [114540000, 1703491740000],\n [114550000, 1703508660000],\n [114560000, 1703523180000],\n [114570000, 1703565900000],\n [114580000, 1703593080000],\n [114590001, 1703614620000],\n [114600000, 1703659740000],\n [114610000, 1703683080000],\n [114620000, 1703712300000],\n [114630000, 1703751540000],\n [114640000, 1703772420000],\n [114650000, 1703806260000],\n [114660000, 1703838240000],\n [114670000, 1703857500000],\n [114680000, 1703885400000],\n [114690000, 1703920020000],\n [114700000, 1703940600000],\n [114710000, 1703958720000],\n [114720001, 1703993340000],\n [114730000, 1704013200000],\n [114740000, 1704027600000],\n [114750000, 1704035340000],\n [114760000, 1704046140000],\n [114770000, 1704074640000],\n [114780000, 1704095940000],\n [114790000, 1704116280000],\n [114800000, 1704144600000],\n [114810000, 1704179460000],\n [114820000, 1704201360000],\n [114830000, 1704226440000],\n [114840000, 1704262740000],\n [114850001, 1704283860000],\n [114860000, 1704301440000],\n [114870001, 1704345720000],\n [114880000, 1704370500000],\n [114890000, 1704390660000],\n [114900000, 1704435780000],\n [114910001, 1704458820000],\n [114920001, 1704480240000],\n [114930000, 1704520200000],\n [114940001, 1704542580000],\n [114950000, 1704559860000],\n [114960000, 1704600120000],\n [114970000, 1704624060000],\n [114980000, 1704640260000],\n [114990000, 1704677880000],\n [115000000, 1704705540000],\n [115010000, 1704723840000],\n [115020000, 1704761280000],\n [115030000, 1704797880000],\n [115040000, 1704817080000],\n [115050000, 1704865620000],\n [115060000, 1704892320000],\n [115070000, 1704925380000],\n [115080000, 1704966600000],\n [115090000, 1704987360000],\n [115100000, 1705034040000],\n [115110000, 1705062900000],\n [115120000, 1705088220000],\n [115130000, 1705127400000],\n [115140000, 1705150200000],\n [115150000, 1705174200000],\n [115160000, 1705211340000],\n [115170000, 1705232880000],\n [115180000, 1705249260000],\n [115190000, 1705295640000],\n [115200000, 1705323240000],\n [115210000, 1705351680000],\n [115220000, 1705395660000],\n [115230000, 1705417200000],\n [115240000, 1705458600000],\n [115250000, 1705491540000],\n [115260000, 1705512600000],\n [115270001, 1705560420000],\n [115280000, 1705584840000],\n [115290000, 1705619760000],\n [115300000, 1705658520000],\n [115310000, 1705677420000],\n [115320000, 1705717620000],\n [115330000, 1705745760000],\n [115340000, 1705763580000],\n [115350000, 1705801500000],\n [115360000, 1705827600000],\n [115370001, 1705844940000],\n [115380000, 1705874220000],\n [115390000, 1705914060000],\n [115400000, 1705934700000],\n [115410000, 1705974600000],\n [115420000, 1706008320000],\n [115430001, 1706028060000],\n [115440000, 1706076000000],\n [115450000, 1706101200000],\n [115460000, 1706131260000],\n [115470000, 1706173620000],\n [115480000, 1706194020000],\n [115490000, 1706235000000],\n [115500000, 1706267880000],\n [115510000, 1706287200000],\n [115520000, 1706328960000],\n [115530000, 1706354460000],\n [115540000, 1706372400000],\n [115550000, 1706411160000],\n [115560001, 1706435580000],\n [115570000, 1706452800000],\n [115580000, 1706490120000],\n [115590000, 1706525160000],\n [115600000, 1706544300000],\n [115610000, 1706590440000],\n [115620000, 1706618580000],\n [115630000, 1706644080000],\n [115640002, 1706688540000],\n [115650000, 1706709660000],\n [115660000, 1706742600000],\n [115670000, 1706781120000],\n [115680000, 1706800380000],\n [115690000, 1706843580000],\n [115700000, 1706873700000],\n [115710000, 1706892000000],\n [115720000, 1706932800000],\n [115730000, 1706958180000],\n [115740000, 1706974920000],\n [115750000, 1707013080000],\n [115760000, 1707037980000],\n [115770000, 1707055560000],\n [115780000, 1707087900000],\n [115790000, 1707126300000],\n [115800000, 1707145380000],\n [115810000, 1707187440000],\n [115820002, 1707219360000],\n [115830000, 1707241740000],\n [115840000, 1707289500000],\n [115850001, 1707313260000],\n [115860000, 1707345720000],\n [115870000, 1707385380000],\n [115880000, 1707405120000],\n [115890000, 1707448620000],\n [115900000, 1707478860000],\n [115910000, 1707497040000],\n [115920000, 1707537540000],\n [115930000, 1707562800000],\n [115940000, 1707580200000],\n [115950000, 1707618900000],\n [115960000, 1707645300000],\n [115970000, 1707663600000],\n [115980000, 1707700140000],\n [115990000, 1707728520000],\n [116000000, 1707747540000],\n [116010000, 1707784200000],\n [116020000, 1707821160000],\n [116030001, 1707837840000],\n [116040000, 1707870660000],\n [116050000, 1707899940000],\n [116060000, 1707915180000],\n [116070000, 1707928140000],\n [116080000, 1707968520000],\n [116090000, 1707998040000],\n [116100000, 1708018020000],\n [116110000, 1708065660000],\n [116120001, 1708089000000],\n [116130000, 1708117380000],\n [116140000, 1708153920000],\n [116150000, 1708175340000],\n [116160000, 1708200180000],\n [116170000, 1708235880000],\n [116180000, 1708256460000],\n [116190000, 1708272000000],\n [116200000, 1708315800000],\n [116210000, 1708344360000],\n [116220000, 1708364700000],\n [116230000, 1708411680000],\n [116240000, 1708434960000],\n [116250000, 1708464960000],\n [116260000, 1708505700000],\n [116270000, 1708525800000],\n [116280000, 1708560000000],\n [116290000, 1708594920000],\n [116300000, 1708612320000],\n [116310000, 1708647120000],\n [116320000, 1708677480000],\n [116330000, 1708696140000],\n [116340000, 1708725780000],\n [116350000, 1708759320000],\n [116360000, 1708780620000],\n [116370000, 1708805280000],\n [116380000, 1708841100000],\n [116390000, 1708861560000],\n [116400001, 1708877400000],\n [116410001, 1708921680000],\n [116420001, 1708950000000],\n [116430000, 1708973100000],\n [116440001, 1709021280000],\n [116450000, 1709043360000],\n [116460000, 1709081940000],\n [116470000, 1709116980000],\n [116480000, 1709135400000],\n]\n","// 生成 csv 文件\n// csv 文件结构参考 https://www.jianshu.com/p/54b3afc06126\n\ntype CSVData = any[][]\n\nconst example: CSVData = [\n ['titleA', 'titleB', 'titleC'],\n ['a1', 'b1', 'c1'],\n [[1, 2, 3], false, 456],\n [undefined, 'b,b,b', 'c c c'],\n]\n\n// 每一项数据可以是任何类型(any)。如果它不是 String,它会被自动转换为 String。\n// 自动转换的结果可能不符合你的预期。如果你要完全控制输出的内容,你应该自己把内容全部转换成字符串,再传递到这个类里。\n// 这个类会自动处理需要添加双引号的情况,所以你不用自己添加双引号。\n// 如果某个数据是 Array,它不应该包含:1. 嵌套的数组;2. Symbol 类型的数据。\n\nclass CreateCSV {\n constructor() {\n this.utf8BOM = this.UTF8BOM()\n }\n\n private readonly separate = ',' // 分隔符\n private readonly CRLF = '\\r\\n' // 换行符\n private utf8BOM: ArrayBuffer // 在文件头添加 UTF-8 BOM ,避免中文乱码。因为没有 BOM 的话 Excel 会以 ANSI 编码打开文件,导致中文乱码\n private reg = / |\\\"|,|\\n/ // 判断字符串是否需要添加双引号\n // 需要双引号包裹的情况:含有逗号、换行符、空格、双引号。\n // 全角符号不需要添加双引号。\n\n // 格式化每一行的数据\n private format(arr: any[]) {\n const rowData: string[] = []\n // 格式化这一行里每一列的数据\n for (let i = 0; i < arr.length; i++) {\n let colData: string = ''\n\n const origin = arr[i]\n const type = typeof origin\n\n // 把每一列的数据转换成字符串\n switch (type) {\n case 'string':\n colData = origin\n break\n case 'bigint':\n case 'number':\n case 'boolean':\n case 'function':\n colData = origin.toString()\n break\n case 'undefined':\n colData = ''\n break\n case 'symbol':\n colData = origin.description || ''\n break\n case 'object':\n if (origin === null) {\n colData = ''\n } else if (Array.isArray(origin)) {\n colData = (origin as any[]).join(this.separate)\n }\n break\n default:\n throw new Error('Unkown data type')\n }\n\n // 值原本就有的双引号,要替换成两个双引号\n colData = colData.replace(/\\\"/g, '\"\"')\n // 用双引号包裹这个值\n if (this.reg.test(colData)) {\n colData = this.addQuotation(colData)\n }\n\n rowData.push(colData)\n }\n return rowData\n }\n\n public create(data: CSVData) {\n // 储存结果。每行的结果合并为一个字符串\n const result: string[] = []\n\n // 在顶部添加 utf8BOM\n result.push(this.utf8BOM as unknown as string)\n\n // 添加每一行的数据和换行符\n for (const row of data) {\n result.push(this.format(row).join(this.separate))\n result.push(this.CRLF)\n }\n\n const csvBlob = new Blob(result, {\n type: 'text/csv',\n })\n return csvBlob\n }\n\n private UTF8BOM() {\n const buff = new ArrayBuffer(3)\n const data = new DataView(buff)\n data.setInt8(0, 0xef)\n data.setInt8(1, 0xbb)\n data.setInt8(2, 0xbf)\n return buff\n }\n\n // 在字符串的两端添加双引号\n public addQuotation(str: string) {\n return '\"' + str + '\"'\n }\n}\n\nconst createCSV = new CreateCSV()\n// createCSV.create(example)\nexport { createCSV }\n","// 格式化日期(和时间)\nclass DateFormat {\n // format 参数可以由以下格式组合:\n /*\n YYYY\n YY\n MM\n MMM\n MMMM\n DD\n hh\n mm\n ss\n */\n // 区分大小写;可以添加空格或其他符号;不要使用上面未包含的格式。\n // 参考资料:\n // https://www.w3.org/TR/NOTE-datetime\n // https://en.wikipedia.org/wiki/Date_format_by_country\n public static format(\n date: string | number | Date,\n format: string = 'YYYY-MM-DD'\n ) {\n // 生成年、月、日、时、分、秒\n const _date = new Date(date)\n const YYYY = _date.getFullYear().toString()\n const YY = YYYY.substring(YYYY.length - 2, YYYY.length)\n const MM = (_date.getMonth() + 1).toString().padStart(2, '0')\n const MMM = this.months[_date.getMonth()]\n const MMMM = this.Months[_date.getMonth()]\n const DD = _date.getDate().toString().padStart(2, '0')\n const hh = _date.getHours().toString().padStart(2, '0')\n const mm = _date.getMinutes().toString().padStart(2, '0')\n const ss = _date.getSeconds().toString().padStart(2, '0')\n // 对格式字符串进行替换\n let r = format\n r = r.replace('YYYY', YYYY)\n r = r.replace('YY', YY)\n r = r.replace('MMMM', MMMM)\n r = r.replace('MMM', MMM)\n r = r.replace('MM', MM)\n r = r.replace('DD', DD)\n r = r.replace('hh', hh)\n r = r.replace('mm', mm)\n r = r.replace('ss', ss)\n\n return r\n }\n\n private static readonly months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sept',\n 'Oct',\n 'Nov',\n 'Dec',\n ]\n\n private static readonly Months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ]\n}\n\nexport { DateFormat }\n","// 封装操作 IndexedDB 的一些公共方法,仅满足本程序使用,并不完善\nclass IndexedDB {\n public db: IDBDatabase | undefined\n\n public async open(\n DBName: string,\n DBVer: number,\n onUpgrade?: (db: IDBDatabase) => void\n ) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(DBName, DBVer)\n\n request.onupgradeneeded = (ev) => {\n if (onUpgrade) {\n onUpgrade(request.result)\n }\n }\n\n request.onsuccess = (ev) => {\n this.db = request.result\n resolve(request.result)\n }\n\n request.onerror = (ev) => {\n console.error('open indexDB failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async add(storeNames: string, data: object) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .add(data)\n\n r.onsuccess = (ev) => {\n resolve(ev)\n }\n r.onerror = (ev) => {\n console.error(`add failed in ${storeNames}`, data)\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async put(storeNames: string, data: object) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .put(data)\n r.onsuccess = (ev) => {\n resolve(ev)\n }\n r.onerror = (ev) => {\n console.error('put failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n // 向一个存储库中批量添加数据\n public async batchAddData(storeName: string, dataList: any[], key: any) {\n return new Promise(async (resolve, reject) => {\n if (dataList.length === 0) {\n resolve()\n }\n\n // 获取已存在的 key\n let existedKeys: string[] = (await this.getAllKeys(storeName)) as string[]\n\n // 使用事务\n const tr = this.db?.transaction(storeName, 'readwrite')\n if (!tr) {\n throw new Error(`transaction ${storeName} is undefined`)\n }\n const store = tr.objectStore(storeName)\n\n tr.oncomplete = () => {\n resolve()\n }\n\n tr.onerror = (err) => {\n console.error(err)\n console.trace()\n reject(err)\n }\n\n for (const data of dataList) {\n await insert(data)\n }\n\n async function insert(data: any) {\n return new Promise((resolve, reject) => {\n // 如果 key 已存在,则使用 put\n const type: 'add' | 'put' = existedKeys.includes(data[key])\n ? 'put'\n : 'add'\n\n const request = store[type](data)\n\n request.onsuccess = () => {\n resolve()\n }\n\n request.onerror = (err) => {\n reject(err)\n }\n })\n }\n })\n }\n\n // 如果没有找到对应的记录,则返回 null\n public async get(storeNames: string, key: any, index?: string) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const store = this.db\n .transaction(storeNames, 'readonly')\n .objectStore(storeNames)\n\n let r: IDBRequest\n\n if (index !== undefined) {\n const i = store.index(index)\n r = i.get(key)\n } else {\n r = store.get(key)\n }\n\n r.onsuccess = (ev) => {\n const data = r.result\n resolve(data ? data : null)\n }\n\n r.onerror = (ev) => {\n console.error('get failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async getAll(storeNames: string) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .getAll()\n\n r.onsuccess = (ev) => {\n const data = r.result\n if (data) {\n resolve(data)\n }\n resolve(data ? data : null)\n }\n r.onerror = (ev) => {\n console.error('getAll failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async getAllKeys(storeNames: string) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readonly')\n .objectStore(storeNames)\n .getAllKeys()\n\n r.onsuccess = (ev) => {\n const data = r.result\n resolve(data ? data : null)\n }\n r.onerror = (ev) => {\n console.error('getAllKeys failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async delete(storeNames: string, key: number) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .delete(key)\n\n r.onsuccess = (ev) => {\n resolve(ev)\n }\n r.onerror = (ev) => {\n console.error('delete failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async clear(storeNames: string) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames, 'readwrite')\n .objectStore(storeNames)\n .clear()\n\n r.onsuccess = (ev) => {\n resolve()\n }\n r.onerror = (ev) => {\n console.error('clear failed')\n console.trace()\n reject(ev)\n }\n })\n }\n\n public async openCursor(\n storeNames: string,\n CB: (c: IDBCursorWithValue | null) => void\n ) {\n return new Promise((resolve, reject) => {\n if (this.db === undefined) {\n reject('Database is not defined')\n return\n }\n const r = this.db\n .transaction(storeNames)\n .objectStore(storeNames)\n .openCursor()\n\n r.onsuccess = (ev) => {\n CB(r.result)\n resolve() // 这个 resolve 会在 cb 执行一次之后就触发\n }\n r.onerror = (ev) => {\n console.error('openCursor failed')\n console.trace()\n reject(ev)\n }\n })\n }\n}\n\nexport { IndexedDB }\n","// 可以用字母和数字组成隐藏口令,注册到这个模块,当用户输入隐藏口令时执行回调函数\nclass SecretSignal {\n constructor() {\n this.bindEvents()\n }\n\n private list: {\n code: string\n cb: Function\n }[] = []\n\n // 允许的按键:字母键,数字键,小键盘数字键\n // \"KeyX\"\n // \"Digit9\"\n // \"Numpad1\"\n private codePrefix = ['Key', 'Digit', 'Numpad']\n\n private input = ''\n\n public register(code: string, cb: Function) {\n this.list.push({\n code,\n cb,\n })\n }\n\n private bindEvents() {\n window.addEventListener('keydown', (ev) => {\n // 不保存控制按键,不保存输入状态中的按键\n if (\n !ev.code ||\n ev.altKey ||\n ev.ctrlKey ||\n ev.metaKey ||\n ev.shiftKey ||\n ev.isComposing\n ) {\n return\n }\n\n // 保存字母和数字的按键\n for (const prefix of this.codePrefix) {\n if (\n ev.code.startsWith(prefix) &&\n ev.code.length === prefix.length + 1\n ) {\n // 如果字符串长度超过限制,则移除前面的一部分字符\n if (this.input.length > 99) {\n this.input = this.input.slice(80)\n }\n const key = ev.code[ev.code.length - 1].toLowerCase()\n this.input += key\n this.check()\n }\n }\n })\n }\n\n private check() {\n for (const item of this.list) {\n if (this.input.endsWith(item.code)) {\n item.cb()\n }\n }\n }\n}\n\nconst secretSignal = new SecretSignal()\nexport { secretSignal }\n","class Utils {\n // 不安全的字符,这里多数是控制字符,需要替换掉\n static unsafeStr = new RegExp(\n /[\\u0000\\u0001-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0605\\u061c\\u06dd\\u070f\\u08e2\\u180e\\u200b-\\u200f\\u202a-\\u202e\\u2060-\\u2064\\u2066-\\u206f\\ufdd0-\\ufdef\\ufeff\\ufff9-\\ufffb\\ufffe\\uffff]/g\n )\n\n // 一些需要替换成全角字符的符号,左边是正则表达式的字符\n static readonly fullWidthDict: string[][] = [\n ['\\\\\\\\', '\'],\n ['/', '/'],\n [':', ':'],\n ['\\\\?', '?'],\n ['\"', '"'],\n ['<', '<'],\n ['>', '>'],\n ['\\\\*', '*'],\n ['\\\\|', '|'],\n ['~', '~'],\n ]\n\n // reg 预先创建,而不是运行时创建,因为运行时重复创建太多次了\n\n // 用正则去掉不安全的字符\n static replaceUnsafeStr(str: string) {\n str = str.replace(this.unsafeStr, '')\n // 把一些特殊字符替换成全角字符\n for (let index = 0; index < this.fullWidthDict.length; index++) {\n const rule = this.fullWidthDict[index]\n const reg = new RegExp(rule[0], 'g')\n str = str.replace(reg, rule[1])\n }\n return str\n }\n\n /** Windows 保留文件名,不可单独作为文件名,不区分大小写 */\n static readonly windowsReservedNames = [\n 'CON',\n 'PRN',\n 'AUX',\n 'NUL',\n 'COM1',\n 'LPT1',\n 'LPT2',\n 'LPT3',\n 'COM2',\n 'COM3',\n 'COM4',\n ]\n\n /** 检查并处理 Windows 保留文件名。\n * 如果不传递可选参数,则将其替换为空字符串。\n * 如果传递了可选参数,则在其后添加传递的可选参数的值 */\n static handleWindowsReservedName(str: string, addStr?: string) {\n for (const name of this.windowsReservedNames) {\n if (str.toUpperCase() === name) {\n return addStr ? str + addStr : ''\n }\n if (str.toUpperCase().startsWith(name + '.')) {\n return str.replace(/\\./g, '.')\n }\n }\n\n return str\n }\n\n // 对象深拷贝\n static deepCopy(data: T): T {\n if (data === null || typeof data !== 'object') {\n return data\n }\n\n const result = (Array.isArray(data) ? [] : {}) as any\n\n for (const [key, value] of Object.entries(data)) {\n result[key] =\n data === null || typeof data !== 'object' ? value : this.deepCopy(value)\n }\n\n return result\n }\n\n // 字符串分割成数组\n static string2array(str: string): string[] {\n str = str.replace(/\\n/g, '') // textarea 的值可能会存在换行符\n const temp = str.trim().split(',')\n const result = []\n for (const str of temp) {\n if (str !== '') {\n result.push(str.trim())\n }\n }\n return result\n }\n\n // 依据对象某个属性的值(视为数字)来排序对象数组。默认降序排列\n static sortByProperty(key: string, order: 'desc' | 'asc' = 'desc') {\n return function (a: any, b: any) {\n // 排序的内容有时可能是字符串,需要转换成数字排序\n // 有些空字符串或者特殊字符可能转换后是 NaN,将其替换为 0\n const value1 =\n (typeof a[key] === 'number' ? a[key] : parseFloat(a[key])) || 0\n const value2 =\n (typeof b[key] === 'number' ? b[key] : parseFloat(b[key])) || 0\n\n if (value2 < value1) {\n return order === 'desc' ? -1 : 1\n } else if (value2 > value1) {\n return order === 'desc' ? 1 : -1\n } else {\n return 0\n }\n }\n }\n\n // 创建 input 元素选择 json 文件\n static async loadJSONFile(): Promise {\n return new Promise((resolve, reject) => {\n const i = document.createElement('input')\n i.setAttribute('type', 'file')\n i.setAttribute('accept', 'application/json')\n i.onchange = () => {\n if (i.files && i.files.length > 0) {\n // 读取文件内容\n const file = new FileReader()\n file.readAsText(i.files[0])\n file.onload = () => {\n const str = file.result as string\n let result: T\n try {\n result = JSON.parse(str)\n // if((result as any).constructor !== Object){\n // 允许是对象 {} 或者数组 []\n if (result === null || typeof result !== 'object') {\n const msg = 'Data is not an object!'\n return reject(new Error(msg))\n }\n return resolve(result)\n } catch (error) {\n const msg = 'JSON parse error!'\n return reject(new Error(msg))\n }\n }\n }\n }\n\n i.click()\n })\n }\n\n // 创建 input 元素选择文件\n static async selectFile(accept?: string) {\n return new Promise((resolve, reject) => {\n const i = document.createElement('input')\n i.setAttribute('type', 'file')\n if (accept) {\n i.setAttribute('accept', accept)\n }\n i.onchange = () => {\n if (i.files && i.files.length > 0) {\n return resolve(i.files)\n } else {\n return reject()\n }\n }\n\n i.click()\n })\n }\n\n // 通过创建 a 标签来下载文件\n static downloadFile(url: string, fileName: string) {\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n a.click()\n\n if (url.startsWith('blob')) {\n URL.revokeObjectURL(url)\n }\n }\n\n // 判断当前页面是否属于 pixiv.net\n static isPixiv() {\n return window.location.host.endsWith('.pixiv.net')\n }\n\n // 从 url 中获取指定的查询字段的值\n // 注意:返回值经过 encodeURIComponent 编码!\n static getURLSearchField(url: string, query: string) {\n const result = new URL(url).searchParams.get(query)\n if (result !== null) {\n return encodeURIComponent(result)\n } else {\n return ''\n }\n }\n\n /**获取 URL path 中,某个路径名称后面的字符串。适用于符合 RESTful API 风格的路径\n *\n * 注意:传入的是 path,而不是整个 URL\n */\n // 例如:\n // https://www.pixiv.net/users/27482064/following/%E9%83%A8%E5%88%86%E5%96%9C%E6%AC%A2\n // 查询 'users' 返回 '27482064'\n // 因为 location.pathname 传入的字符串是浏览器自动编码过的,所以返回的字符串也是编码过的\n static getURLPathField(path: string, query: string) {\n const array = path.split('/')\n const index = array.findIndex((str) => str === query)\n if (index === -1) {\n return ''\n }\n return array[index + 1] || ''\n }\n\n // 获取指定元素里,可见的结果\n static getVisibleEl(selector: string) {\n const list: NodeListOf = document.querySelectorAll(selector)\n return Array.from(list).filter((el) => {\n return el.style.display !== 'none'\n })\n }\n\n // 删除 DOM 元素,或者 DOM 元素列表\n static removeEl(el: NodeListOf | HTMLElement) {\n if (!el) {\n return\n }\n if (Reflect.has(el, 'length')) {\n // 如果有 length 属性则循环删除。\n ;(el as NodeListOf).forEach((el) => {\n if (el.parentNode) {\n el.parentNode.removeChild(el)\n }\n })\n } else {\n // 没有 length 属性的直接删除(querySelector 的返回值是 HTMLElement)\n const parent = (el as HTMLElement).parentNode\n if (parent) {\n parent.removeChild(el as HTMLElement)\n }\n }\n }\n\n // 切换 DOM 元素的可见性\n // 第二个参数设置显示时的 display,默认是 block,如果要设置为其他类型,则需要指定第二个参数\n static toggleEl(el: HTMLElement, showDisplay: string = 'block') {\n el.style.display = el.style.display === showDisplay ? 'none' : showDisplay\n }\n\n // 动态添加 css 样式\n static addStyle(css: string) {\n const e = document.createElement('style')\n e.innerHTML = css\n document.body.append(e)\n }\n\n // 加载一个图片,当 onload 事件发生之后返回 img 元素\n static async loadImg(url: string) {\n return new Promise((resolve, reject) => {\n const img = new Image()\n img.src = url\n img.onload = function () {\n resolve(img)\n }\n img.onerror = () => {\n reject(new Error(`Load image error! url: ${url}`))\n }\n })\n }\n\n // 加载图片并在获取到其宽高之后立即返回宽高数值。不需要等待图片加载完毕\n // 请求出错时,返回值的宽高都是 0\n static async getImageSize(url: string): Promise<{\n width: number\n height: number\n }> {\n return new Promise((resolve) => {\n let timer = 0\n const img = new Image()\n\n // 在 Chrome 中图片请求的超时时间是 30 秒\n // 如果请求超时,则直接返回\n img.onerror = () => {\n window.clearInterval(timer)\n return resolve({\n width: 0,\n height: 0,\n })\n }\n\n img.src = url\n timer = window.setInterval(() => {\n if (img.naturalWidth > 0) {\n window.clearInterval(timer)\n const wh = {\n width: img.naturalWidth,\n height: img.naturalHeight,\n }\n img.src = ''\n return resolve(wh)\n }\n }, 50)\n })\n }\n\n /**JSON 转换成 Blob 对象。如果数据量可能比较大,则不应该使用这个方法 */\n static json2Blob(data: any) {\n const str = JSON.stringify(data, null, 2)\n const blob = new Blob([str], { type: 'application/json' })\n return blob\n }\n\n /**把 JSON 转换成 Blob 对象。可以处理更大的数据量,并且导出的单个文件体积不会超过 500 MB */\n static async json2BlobSafe(data: any[]): Promise<\n {\n url: string\n total: number\n }[]\n > {\n return new Promise((resolve) => {\n // 限制单个文件的体积上限为 500 MB\n const fileByteLengthLimit = 524288000\n\n const result: {\n url: string\n total: number\n }[] = []\n\n // 在这个数组里储存数组字面量\n let JSONStringArray: string[] = []\n\n const length = data.length\n\n let index = 0\n let total = 0\n let bytelength = 0\n let startNewFile = true\n const textEncode = new TextEncoder()\n\n while (index < length) {\n // 添加数组的开始符号\n if (startNewFile) {\n startNewFile = false\n JSONStringArray.push('[')\n bytelength = bytelength + 1\n }\n\n // 循环添加每一项数据\n const string = JSON.stringify(data[index])\n JSONStringArray.push(string)\n JSONStringArray.push(',')\n bytelength = bytelength + textEncode.encode(string).length + 1\n\n index++\n total++\n\n // 分割文件\n if (index === length || bytelength >= fileByteLengthLimit) {\n // 删除最后一个分隔符,否则会导致格式错误\n JSONStringArray.pop()\n // 添加数组的结束符号\n JSONStringArray.push(']')\n\n // 生成文件数据\n const blob = new Blob(JSONStringArray, { type: 'application/json' })\n const url = URL.createObjectURL(blob)\n result.push({\n url,\n total,\n })\n\n // 重置变量\n startNewFile = true\n bytelength = 0\n total = 0\n JSONStringArray = []\n }\n }\n\n return resolve(result)\n })\n }\n\n /**防抖 */\n static debounce(func: Function, wait: number) {\n // 默认的定时器 id 不能使用有意义的数字,否则 clearTimeout 可能会错误的清除其他定时器\n let timer: number | undefined = undefined\n const context = this\n return function () {\n const args = arguments\n window.clearTimeout(timer)\n timer = window.setTimeout(func.bind(context, ...args), wait)\n }\n }\n\n /**节流 */\n static throttle(func: Function, delay: number) {\n let time = 0\n const context = this\n return function () {\n const args = arguments\n const now = new Date().getTime()\n if (now - time >= delay) {\n time = now\n return func.apply(context, args)\n }\n }\n }\n\n /**用 URL 里的后缀名替换 originName 的后缀名\n *\n * 例如传入参数 123.txt, https://.../123.jpg\n *\n * 返回 123.jpg\n */\n static replaceSuffix(originName: string, url: string) {\n const nameArray = originName.split('.')\n const urlArray = url.split('.')\n nameArray[nameArray.length - 1] = urlArray[urlArray.length - 1]\n return nameArray.join('.')\n }\n\n /**获取后缀名 */\n static getSuffix(name: string) {\n const nameArray = name.split('.')\n return nameArray[nameArray.length - 1]\n }\n\n /**替换换行标签,移除 html 标签 */\n static htmlToText(str: string) {\n // 这里有两种换行标签:\n //
            这是 Pixiv 的 API 返回的,比如作品简介里的换行\n //
            这是现代标准的换行标签,从元素的 innerHTML 属性获取的换行是这样的\n return str\n .replace(/
            /g, '\\n')\n .replace(/
            /g, '\\n')\n .replace(/<\\/?.+?>/g, '')\n }\n\n /**将 html 代码转换成纯文本(innerText) */\n static htmlToTextWrong(str: string) {\n const div = document.createElement('div')\n div.innerHTML = str\n // 如果使用这个方法,那么必须将创建的这个元素添加到页面上,然后才能获取其 innerText\n // 如果不 append 到页面,而是直接获取 innerText,那么不会有换行标记 \\n\n // 这可能是因为如果一个元素只存在于内存里,而没有添加到页面上进行渲染的话,浏览器会忽略换行标记\n document.body.append(div)\n\n return div.innerText\n }\n\n /**将可能包含有 HTML 转义字符的字符串进行反转义 */\n // 例如输入 \"1,2,3,4'5'6'\"\n // 输出 \"1,2,3,4'5'6'\"\n // 需要注意的是,这里返回的 html 标签是不带闭合标记的(html 5 规范)\n // 如果参数里含有
            ,这是 html 4 规范,经过该方法处理后返回的是
            ,没有了闭合标记\n // 通常这不会导致问题,但是 epub 小说必须有结束标记\n static htmlDecode(str: string) {\n const div = document.createElement('div')\n div.innerHTML = str\n // 注意,输出的是 innerHTML 而非 innerText\n // 原因 1:如果不将生成的元素添加到页面上,而是直接获取 innerText 的话,是没有换行标签的\n // 原因 2:innerHTML 可以保持换行等标签依然是 html 标签
            \n // 但通过 innerText 获取的换行是 \\n ,这会导致输入和输出的类型不一样,所以不使用 innerText\n return div.innerHTML\n }\n\n static sleep(time: number) {\n return new Promise((res) => window.setTimeout(res, time))\n }\n}\n\nexport { Utils }\n","// 把图片转换成 icon 文件\n// icon 文件结构 https://www.cnblogs.com/cswuyg/p/3603707.html\n\ntype SizeNumber = 16 | 32 | 48 | 96 | 128 | 256 | 512\n\ntype ImageURL = string\n\ninterface Opt {\n source: ImageURL | File\n size: SizeNumber[]\n shape: 'square' | 'circle' | 'fillet'\n bleed: boolean\n}\n\ninterface PngData {\n size: SizeNumber\n buffer: ArrayBuffer\n}\n\n// 输入选项\n// source 图片的 url,或者一个图片文件(如果使用了图片 url,请注意跨域策略的影响)\n// size 尺寸,可以同时使用多个尺寸。你也可以使用自定义尺寸。\n// shape 指定图标的形状。square 正方形,circle 圆形,fillet 带有圆角的正方形\n// bleed 留白,仅当形状是圆角正方形时生效,可以使图片周围有一些留白。\n\n// 输出\n// 转换成功后,返回 icon 文件的 Blob 对象\n// 生成的 icon 总是正方形(长和宽相等)。如果图片的长度和宽度不相等,则会以窄边作为基准,从窄边开始裁剪出一个正方形\n// 生成的 icon 可以包含多种尺寸的图标。图标都是 32 位 png 图像。\n\nclass ImageToIcon {\n public async convert(opt: Opt) {\n return new Promise(async (resolve, reject) => {\n // 加载图片\n const img = await this.loadImage(opt.source)\n // 生成各尺寸的 png 图像的数据\n const pngDataArray = await this.createPngBuffer(\n img,\n opt.size,\n opt.shape,\n opt.bleed\n )\n // 创建 ico 文件\n const blob = this.createIcon(pngDataArray)\n\n resolve(blob)\n })\n }\n\n private async convertImageURL(source: Opt['source']) {\n return new Promise(async (resolve, reject) => {\n if (typeof source === 'string') {\n // 请求图片,并为其生成 BlobURL,解决图片跨域导致 canvas 污染的问题\n const res = await fetch(source, {\n method: 'get',\n credentials: 'same-origin',\n })\n const blob = await res.blob()\n resolve(URL.createObjectURL(blob))\n } else if (source instanceof File) {\n resolve(URL.createObjectURL(source))\n } else {\n reject('Unrecognized opt.source')\n }\n })\n }\n\n private async loadImage(source: Opt['source']) {\n return new Promise(async (resolve, reject) => {\n let imgURL = await this.convertImageURL(source)\n\n const i = document.createElement('img')\n i.src = imgURL\n i.onload = function () {\n resolve(i)\n }\n })\n }\n\n private async createPngBuffer(\n img: HTMLImageElement,\n size: SizeNumber[] = [16, 48, 96, 256],\n shape: Opt['shape'] = 'square',\n bleed = true\n ) {\n return new Promise(async (resolve, reject) => {\n const buffer: PngData[] = []\n let length = size.length\n\n while (length > 0) {\n const sizeNumber = size[size.length - length]\n const canvas = this.createCanvas(sizeNumber, img)\n // 绘制图像\n this.drawImage(canvas, img, shape, bleed)\n // 把图像转换为 png 图像\n const pngBlob = await this.getPngBlob(canvas)\n // 获取 png 图像的 buffer\n const buf = await pngBlob.arrayBuffer()\n buffer.push({\n size: sizeNumber,\n buffer: buf,\n })\n\n length--\n\n if (length === 0) {\n resolve(buffer)\n }\n }\n })\n }\n\n private createCanvas(size: number, img: HTMLImageElement) {\n const c = document.createElement('canvas')\n c.width = size\n c.height = size\n return c\n }\n\n private drawImage(\n canvas: HTMLCanvasElement,\n img: HTMLImageElement,\n shape: Opt['shape'],\n bleed = true\n ) {\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n console.error('draw error: ctx is null')\n return\n }\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n // 计算图像被绘制的宽高。比较短的一边占满画布,比较长的一边则根据比例计算绘制的部分\n let dw = 0\n let dh = 0\n // 竖图\n if (img.naturalWidth < img.naturalHeight) {\n dw = canvas.width\n dh = (dw / img.naturalWidth) * img.naturalHeight\n } else {\n // 横图\n dh = canvas.height\n dw = (dh / img.naturalHeight) * img.naturalWidth\n }\n\n // 绘制方形\n if (shape === 'square') {\n ctx.drawImage(img, 0, 0, dw, dh)\n }\n\n // 绘制圆形\n if (shape === 'circle') {\n let circle = {\n x: canvas.width / 2,\n y: canvas.width / 2,\n r: canvas.width / 2,\n }\n ctx.save()\n ctx.beginPath()\n ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, false)\n ctx.clip()\n ctx.drawImage(img, 0, 0, dw, dh)\n ctx.restore()\n }\n\n // 绘制圆角矩形\n if (shape === 'fillet') {\n let x = 0\n let y = 0\n // 当图标尺寸大于 16 时,设置留白距离\n if (bleed && canvas.width > 16) {\n let num = 10 / 256 // 规定留白的比例,即尺寸为 256 时四周留白均为 10 px\n x = Math.ceil(num * canvas.width)\n y = Math.ceil(num * canvas.width)\n }\n // 去掉留白后,最后要保存的图片区域的宽高\n const w = canvas.width - x * 2\n const h = canvas.height - y * 2\n // 圆角的半径,设置为保留区域宽高的 1/8\n const r = Math.floor(w / 8)\n\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.arcTo(x + w, y, x + w, y + h, r)\n ctx.arcTo(x + w, y + h, x, y + h, r)\n ctx.arcTo(x, y + h, x, y, r)\n ctx.arcTo(x, y, x + w, y, r)\n ctx.closePath()\n ctx.clip()\n ctx.drawImage(img, 0, 0, dw, dh)\n }\n\n return ctx\n }\n\n private async getPngBlob(canvas: HTMLCanvasElement) {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (!blob) {\n reject('blob is null')\n } else {\n resolve(blob)\n }\n })\n })\n }\n\n private createIcon(pngData: PngData[]) {\n const fileData: ArrayBuffer[] = []\n\n const fileHeadSize = 6\n\n // icon 文件头\n const fileHead = new ArrayBuffer(fileHeadSize)\n const v1 = new DataView(fileHead)\n v1.setInt16(0, 0, true) // idReserved\n v1.setInt16(2, 1, true) // idType\n v1.setInt16(4, pngData.length, true) // idCount\n fileData.push(fileHead)\n\n // 添加 icon 文件入口\n const entrySize = 16\n const entryTotalSize = entrySize * pngData.length\n let fileOffset = fileHeadSize + entryTotalSize\n let fileLength = 0\n\n for (const d of pngData) {\n fileOffset += fileLength\n\n const entry = new ArrayBuffer(entrySize)\n const v2 = new DataView(entry)\n v2.setInt8(0, d.size) // Width, in pixels, of the image\n v2.setInt8(1, d.size) // Height, in pixels, of the image\n v2.setInt8(2, 0) // Number of colors in image (0 if >=8bpp)\n v2.setInt8(3, 0) // Reserved ( must be 0)\n v2.setInt16(4, 1, true) // Color Planes\n v2.setInt16(6, 32, true) // Bits per pixel\n v2.setInt32(8, d.buffer.byteLength, true) // How many bytes in this resource?\n v2.setInt32(12, fileOffset, true) // Where in the file is this image?\n\n fileData.push(entry)\n\n fileLength = d.buffer.byteLength\n }\n\n // 添加 png 数据\n for (const d of pngData) {\n fileData.push(d.buffer)\n }\n\n // 生成 blob 对象\n return new Blob(fileData, {\n type: 'image/vnd.microsoft.icon',\n })\n }\n}\n\nconst img2ico = new ImageToIcon()\nexport { img2ico }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * project: Powerful Pixiv Downloader\n * author: xuejianxianzun; 雪见仙尊\n * license: GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt\n * Github: https://github.com/xuejianxianzun/PixivBatchDownloader\n * Releases: https://github.com/xuejianxianzun/PixivBatchDownloader/releases\n * Wiki: https://xuejianxianzun.github.io/PBDWiki\n * Website: https://pixiv.download/\n * E-mail: xuejianxianzun@gmail.com\n */\n\nimport './Lang'\nimport './Theme'\nimport './store/States'\nimport './setting/Settings'\nimport './setting/InvisibleSettings'\nimport './ListenPageSwitch'\nimport './CenterPanel'\nimport './setting/Form'\nimport './setting/DoNotDownloadLastFewImages'\nimport './setting/UseDifferentNameRuleIfWorkHasTag'\nimport './ReplaceSquareThumb'\nimport './InitPage'\nimport './crawlMixedPage/QuickCrawl'\nimport './download/DownloadControl'\nimport './download/Resume'\nimport './Tip'\nimport './PreviewWork'\nimport './ShowLargerThumbnails'\nimport './DoubleWidthThumb'\nimport './ShowZoomBtnOnThumb'\nimport './ShowDownloadBtnOnThumb'\nimport './output/OutputPanel'\nimport './output/PreviewFileName'\nimport './output/ShowURLs'\nimport './download/ExportResult2CSV'\nimport './download/ExportResult'\nimport './download/ImportResult'\nimport './download/ExportLST'\nimport './download/MergeNovel'\nimport './download/SaveWorkMeta'\nimport './download/ShowStatusOnTitle'\nimport './download/ShowTotalResultOnTitle'\nimport './download/ShowRemainingDownloadOnTitle'\nimport './download/DownloadOnClickLike'\nimport './HighlightFollowingUsers'\n// import './CheckNewVersion'\nimport './ShowWhatIsNew'\nimport './CheckUnsupportBrowser'\nimport './ShowNotification'\nimport './HiddenBrowserDownloadBar'\nimport './RequestSponsorship'\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/notes/images/20240322_160029.png b/notes/images/20240322_160029.png new file mode 100644 index 00000000..f0397572 Binary files /dev/null and b/notes/images/20240322_160029.png differ diff --git a/notes/images/20240322_161838.jpg b/notes/images/20240322_161838.jpg new file mode 100644 index 00000000..46499a61 Binary files /dev/null and b/notes/images/20240322_161838.jpg differ diff --git a/src/ts/Tools.ts b/src/ts/Tools.ts index d0a04eb1..4aed2f28 100644 --- a/src/ts/Tools.ts +++ b/src/ts/Tools.ts @@ -528,11 +528,15 @@ class Tools { /**替换 EPUB 文本里的特殊字符和换行符 */ // 换行符必须放在最后处理,以免其 < 符号被替换 + // 把所有换行符统一成
            + // 这是因为 epub 是 xhtml 格式,要求必须有闭合标记,所以
            是非法的,会导致小说无法被解析和阅读 static replaceEPUBText(str: string) { return str .replace(/&/g, '&') .replace(//g, '
            ') + .replace(/
            /g, '
            ') .replace(/\n/g, '
            ') } diff --git a/src/ts/utils/Utils.ts b/src/ts/utils/Utils.ts index cea43120..a0a7208a 100644 --- a/src/ts/utils/Utils.ts +++ b/src/ts/utils/Utils.ts @@ -452,6 +452,9 @@ class Utils { /**将可能包含有 HTML 转义字符的字符串进行反转义 */ // 例如输入 "1,2,3,4'5'6'" // 输出 "1,2,3,4'5'6'" + // 需要注意的是,这里返回的 html 标签是不带闭合标记的(html 5 规范) + // 如果参数里含有
            ,这是 html 4 规范,经过该方法处理后返回的是
            ,没有了闭合标记 + // 通常这不会导致问题,但是 epub 小说必须有结束标记 static htmlDecode(str: string) { const div = document.createElement('div') div.innerHTML = str