bytefun-ai-mcp 1.13.102 → 1.13.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/appCodeRule.d.ts +1 -1
- package/build/appCodeRule.d.ts.map +1 -1
- package/build/appCodeRule.js +50 -39
- package/build/uiDesign.d.ts +1 -1
- package/build/uiDesign.d.ts.map +1 -1
- package/build/uiDesign.js +5 -4
- package/package.json +1 -1
package/build/appCodeRule.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const understandingCodeFrameworkTemplate = "\n# **\u5FC5\u987B\u5148\u7406\u89E3\u9879\u76EE\u4EE3\u7801\u6846\u67B611\u4E2A\u77E5\u8BC6\u70B9**\n## 1. **\u7406\u89E3View\u7EC4\u4EF6\u7684\u58F0\u660E\u89C4\u5219**\n - \u8FD9\u4E0D\u662Fhtml\u3001react\u7B49\u5F00\u53D1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u65B0\u7684\u5F00\u53D1\u6846\u67B6\uFF0C\u662F\u57FA\u4E8Esrc/lib/uilib\u6587\u4EF6\u5939\u91CC\u9762\u7684UI\u7EC4\u4EF6\u5E93\u6765\u5F00\u53D1\u7684\n - View\u7EC4\u4EF6\u7684\u57FA\u7C7B\u662FBaseView\uFF0C\u5BB9\u5668\u57FA\u7C7B\u662FBaseContainerView\uFF0C\u6240\u6709View\u7EC4\u4EF6\u90FD\u7EE7\u627F\u81EABaseView\n - \u67E5\u770B'src/lib/uilib/'\u6587\u4EF6\u5939\u4E0B\u9762\u7684\u6587\u4EF6\u540D\u5B57\uFF0C\u7406\u89E3\u603B\u5171\u6709\u591A\u5C11\u79CDUI\u7EC4\u4EF6\n - View\u7EC4\u4EF6\u7684\u58F0\u660E\u5FC5\u987B\u5728\u7C7B\u6587\u4EF6\u5F00\u59CB\u65F6\u5148\u58F0\u660E\uFF0C\u5E76\u4E14\u5FC5\u987B\u8981\u58F0\u660E\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF0C\u4E0D\u5F97\u58F0\u660E\u4E3ABaseView\uFF0C\u4E0D\u5F97\u5728\u4EFB\u4F55\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewById\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF0C\u6BD4\u5982\uFF1A\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ```typescript\n public class HomePage extends Page {\n private nameTextView: TextView = this.findViewById('nameTextView') as TextView\n ....\n }\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u6CA1\u6709\u58F0\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF09\uFF1A\n ```typescript\n private nameTextView = this.findViewById('nameTextView')\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u5728\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewById\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF09\uFF1A\n ```typescript\n private oneFunction() {\n const nameTextView: TextView = this.findViewById('nameTextView') as TextView\n ....\n }\n ```\n - \u6240\u6709View\u7EC4\u4EF6\u7684\u9009\u4E2D\u72B6\u6001\u3001\u805A\u7126\u72B6\u6001\u3001\u7981\u7528\u72B6\u6001\u7684\u53D8\u5316\u90FD\u5FC5\u987B\u901A\u8FC7`setStation(station: ViewStation)`\u51FD\u6570\u6765\u8BBE\u7F6E\uFF0C\u4E0D\u80FD\u76F4\u63A5\u8BBE\u7F6E\u7EC4\u4EF6\u7684UI\u5C5E\u6027\uFF0C\u53EA\u9700\u8981\u8BBE\u7F6E\u7EC4\u4EF6\u7684station\u5C5E\u6027\u5373\u53EF\u81EA\u52A8\u66F4\u65B0\u7EC4\u4EF6\u7684UI\u6837\u5F0F\n - \u6240\u6709View\u7EC4\u4EF6\u7684\u663E\u793A\u3001\u9690\u85CF\u5360\u4F4D\u3001\u9690\u85CF\u4E0D\u5360\u4F4D\u7684\u8BBE\u7F6E\u90FD\u5FC5\u987B\u4F7F\u7528View\u7684`visibility`\u5C5E\u6027\u8FDB\u884C\u8BBE\u7F6E\uFF0C\u4E0D\u5F97\u4F7F\u7528`station`\u5C5E\u6027\u3002\n - \u6240\u6709View\u7EC4\u4EF6\u7684normal\u3001readOnly\u3001focus\u3001selected\u3001disabled\u72B6\u6001\u7684\u8BBE\u7F6E\u90FD\u5FC5\u987B\u4F7F\u7528View\u7684`station`\u5C5E\u6027\u8FDB\u884C\u8BBE\u7F6E\u3002\n\n## 2. **\u7406\u89E3\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\u4EE5\u53CAjson\u76F8\u5173\u4EE3\u7801**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/AllFunction.ts'\u6587\u4EF6\uFF0C\u7406\u89E3\u8BE5\u5DE5\u7A0B\u80FD\u4F7F\u7528\u7684\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5\n - \u8BF7\u4E25\u683C\u6309\u7167\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\uFF0C\u4E0D\u8981\u65B0\u589E\u3001\u5220\u9664\u6216\u4FEE\u6539\u4EFB\u4F55AllFunction\u63A5\u53E3\u58F0\u660E\uFF1B\u4E5F\u4E0D\u8981\u8C03\u7528\u5176\u4ED6\u672A\u5728AllFunction\u4E2D\u51FA\u73B0\u7684\u51FD\u6570\u6216\u6A21\u5757\n \n## 3. **\u7406\u89E3Ref\u3001watch**\n - Ref\u7684\u6570\u636E\u7C7B\u578B\u53EA\u80FD\u662F\u4EE5\u4E0B5\u4E2D\u7C7B\u578B\uFF1A\u6570\u5B57\u4F7F\u7528Ref<number>\uFF0C\u5B57\u7B26\u4E32\u4F7F\u7528Ref<string>\uFF0C\u5E03\u5C14\u91CF\u4F7F\u7528Ref<boolean>\uFF0C\u5BF9\u8C61\u4F7F\u7528Ref<any>\uFF0C\u6570\u7EC4\u4F7F\u7528Ref<Array<any>>\u6216Ref<Array<any> | null>\u6216Ref<any[]>\u6216Ref<any[] | null>\u3002\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/Ref.ts'\u6587\u4EF6\uFF0C\u7406\u89E3Ref\u548Cwatch\u7684\u5B9A\u4E49\u7528\u6CD5\n - watch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684Ref\u6570\u7EC4\uFF0C\u7B2C\u4E8C\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684\u56DE\u8C03\u51FD\u6570\uFF0C\u56DE\u8C03\u51FD\u6570\u4E2D\u53EF\u4EE5\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\u3002\n - Ref\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0Cwatch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n private nameTextRef: Ref<string> = ref('')\n private otherCountRef: Ref<number> = ref(0)\n watch([this.nameTextRef, this.otherCountRef], () => {\n // \u53EF\u4EE5\u5148\u76F8\u5173\u7684UI\u66F4\u65B0\u6216\u4E1A\u52A1\u903B\u8F91\n if (this.otherCountRef.value > 5) {\n this.nameTextView.text = this.nameTextRef.value + '5'\n } else {\n this.nameTextView.text = this.nameTextRef.value + '10'\n }\n })\n ```\n - `src/lib/uilib/Ref.ts`\u91CC\u9762\u7684`watch`\u51FD\u6570\uFF0C\u7B2C\u4E00\u4E2A\u5165\u53C2`refs: Ref<T>[]`\u7EDD\u5BF9\u7981\u6B62\u5148\u58F0\u660E\u5C40ref\u6570\u7EC4\u90E8\u53D8\u91CF\u518D\u4F20\u5165\uFF0C\u6B63\u786E\u7684\u5199\u6CD5\u5E94\u8BE5\u662F\u76F4\u63A5\u5199\u6570\u7EC4\uFF1A`[ref1, ref2]`\u5C31\u884C\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ``` typescript\n const refArray = [ref1, ref2]\n watch(refArray, (newValues: T[]) => {\n // \u76D1\u542Cref1\u548Cref2\u7684\u53D8\u5316\n })\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ``` typescript\n watch([ref1, ref2], (newValues: T[]) => {\n // \u76D1\u542Cref1\u548Cref2\u7684\u53D8\u5316\n })\n ```\n\n## 4. **\u7406\u89E3setDataList\u65B9\u6CD5\u7684\u9759\u6001\u6570\u636E\u4E0E\u52A8\u6001\u6570\u636E\u573A\u666F**\n - \u5BF9\u4E8E\u52A8\u6001\u6570\u636E\u5BB9\u5668ViewPager\u3001ListView\u7684setDataList\u65B9\u6CD5\uFF0C\u5982\u679C\u6570\u636E\u662F\u52A8\u6001\u7684\uFF0C\u6BD4\u5982\uFF1A\u4ECE\u540E\u7AEF\u63A5\u53E3\u83B7\u53D6\u7684\uFF0C\u624D\u80FD\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\u9759\u6001\u6570\u636E\u5DF2\u7ECF\u5728UI\u9875\u9762\u4E0A\u5199\u597D\u4E86\uFF0C\u4F60\u4E0D\u5F97\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\n - \u5224\u65AD\u6807\u51C6\uFF1A\u5982\u679CUI\u9875\u9762\u4E2D\u5DF2\u7ECF\u6709\u5B8C\u6574\u7684\u8F6E\u64AD\u9879\u76EE/\u5217\u8868\u9879\u76EE\uFF0C\u5C31\u662F\u9759\u6001\u6570\u636E\uFF0C\u5982\u679C\u662F\u7F51\u7EDCAPI\u8FD4\u56DE\u7684\u6570\u636E\u5217\u8868\u5C31\u662F\u52A8\u6001\u6570\u636E\u3002\n - \u2705 \u9759\u6001\u6570\u636E\u5BB9\u5668\uFF08UI\u9875\u9762\u4E2D\u5DF2\u5199\u597D\u5185\u5BB9\uFF09\uFF1A\u4E0D\u4F7F\u7528setDataList()\n - \u2705 \u52A8\u6001\u6570\u636E\u5BB9\u5668\uFF08\u9700\u8981\u4ECEAPI\u83B7\u53D6\uFF09\uFF1A\u624D\u4F7F\u7528setDataList()\n\n## 5. **View\u7EC4\u4EF6\uFF0C\u7406\u89E3\u6BCF\u4E2A\u7EC4\u4EF6\u53EF\u80FD\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u5982\u679C\u7EC4\u4EF6\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u90A3\u4E48\u4F60\u4E0D\u5F97\u518D\u81EA\u5DF1\u521B\u5EFAref\u53D8\u91CF\u6216\u8005\u4F7F\u7528onSelectChange\u7B49\u56DE\u8C03\u89E6\u53D1UI\u66F4\u65B0**\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\u3002\n public initView() {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n }\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n public initView() {\n watch([this.viewPager.currentSelectIndexRef], () => {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n })\n ```\n - tab\u7EC4\u4EF6\u548C\u8F6E\u64AD\u7EC4\u4EF6\u7684\u9009\u62E9\u53D8\u5316\u76D1\u542C\uFF0C\u5FC5\u987B\u4F7F\u7528`ViewPager`\u6216`TabContainer`\u7684`onSelectChange(func: (item: any, position: number) => void)`\u51FD\u6570\u6765\u76D1\u542C\u9009\u62E9\u53D8\u5316\n\n## 6. **\u7406\u89E3\u9875\u9762\u8DF3\u8F6C**\n - \u9875\u9762\u8DF3\u8F6C\u5FC5\u987B\u4F7F\u7528AllFunction.startPage\u5B9E\u73B0\uFF0CstartPage\u4F20\u5165Page\u7684\u5B50\u7C7B\u5BF9\u8C61\uFF0C\u5982\uFF1AAllFunction.startPage(new ProductPage(this.productID))\u3002\n - \u274C \u9875\u9762\u8DF3\u8F6C\u4E0D\u9700\u8003\u8651\u6A21\u5757\u5316\u3001\u5FAA\u73AF\u4F9D\u8D56\u3001\u6E10\u8FDB\u5F0F\u5F00\u53D1\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5C4F\u853D\u9875\u9762\u8DF3\u8F6C\u7684\u4EE3\u7801\uFF0C\u6240\u6709\u9875\u9762\u90FD\u5DF2\u7ECF\u5B58\u5728\uFF0C\u4E0D\u4F1A\u51FA\u73B0\u7F16\u8BD1\u51FA\u9519\u7684\uFF0C\u5FC5\u987B\u660E\u786E\u5199\u4E0A\u9875\u9762\u8DF3\u8F6C\u7684\u4EE3\u7801\u548C\u76EE\u6807\u9875\u9762\u6240\u9700\u7684\u8DF3\u8F6C\u53C2\u6570\u3002\n - \u5728Application.ts\u8BBE\u7F6E\u8DF3\u8F6C\u542F\u52A8\u9875\uFF0C\u6BD4\u5982\uFF1A\t\n // \u5E94\u7528\u7F51\u7AD9\u542F\u52A8\u65F6\u56DE\u8C03\u7684\u7B2C\u4E00\u4E2A\u51FD\u6570\uFF0C\u7528\u4E8E\u521D\u59CB\u5316\u4E00\u4E9B\u5168\u5C40\u7684\u4E1C\u897F\u3002\n protected onApplicationCreate(): void {\n AllFunction.startPage(new SplashPage())\n }\n - \u2705 \u5F15\u5165\u5176\u4ED6\u7C7B\u53EA\u5141\u8BB8\u4E00\u79CD\u5199\u6CD5\uFF1A\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u52A8\u6001import\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n // \u4F7F\u7528\u52A8\u6001\u5BFC\u5165\u907F\u514D\u5FAA\u73AF\u4F9D\u8D56\n import('../guidePage/guidePage').then(({ default: GuidePage }) => {\n AllFunction.startPage(new GuidePage())\n })\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528require\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n require('../guidePage/guidePage').default\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\u662F\uFF1AAllFunction.startPage(new GuidePage())\u3002\u7136\u540E\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u5982\u679C\u9875\u9762\u8DF3\u8F6C\u9700\u8981\u4F20\u9012\u53C2\u6570\uFF0C\u90A3\u4E48\u9700\u8981\u4F7F\u7528Page\u7684\u5B50\u7C7B\u6784\u9020\u51FD\u6570\u6765\u4F20\u9012\u53C2\u6570\uFF0C\u6BD4\u5982\uFF1AAllFunction.startPage(new GuidePage(this.productID))\u3002\n - \u5728\u5B9E\u73B0\u9875\u9762\u8DF3\u8F6C\u4EE3\u7801\u7684\u65F6\u5019\uFF0C\u5FC5\u987B\u4E25\u683C\u6309\u7167\u4EE5\u4E0B\u4E09\u6B65\u6765\u5B9E\u73B0\uFF1A\n - **\u7B2C\u4E00\u6B65\uFF1A\u5148\u5206\u6790\u8DF3\u8F6C\u7684\u76EE\u6807\u9875\u9762\u9700\u8981\u4F20\u9012\u54EA\u4E9B\u53C2\u6570**\n - **\u7B2C\u4E8C\u6B65\uFF1A\u4FEE\u6539\u76EE\u6807\u9875\u9762\u6784\u9020\u51FD\u6570**\uFF1A\n ```typescript\n export default class ReadingPage extends Page {\n private bookId: number\n private chapterTitle: string\n \n constructor(bookId: number, chapterTitle: string) {\n super()\n this.bookId = bookId\n this.chapterTitle = chapterTitle\n }\n }\n ```\n - **\u7B2C\u4E09\u6B65\uFF1A\u4FEE\u6539\u8DF3\u8F6C\u4EE3\u7801**\n ```typescript\n const bookData = this.readingHistoryDataRef.value[0]\n AllFunction.startPage(new ReadingPage(bookData.id, bookData.chapterTitle))\n ```\n\n## 7. **\u7406\u89E3\u57FA\u7840\u5F00\u53D1\u89C4\u5219**\n - lib\u6587\u4EF6\u5939\u91CC\u9762\u7684\u4EE3\u7801\u6587\u4EF6\u90FD\u662F\u5185\u7F6E\u6846\u67B6\u4EE3\u7801\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5BF9lib\u6587\u4EF6\u5939\u7684\u4EE3\u7801\u8FDB\u884C\u589E\u5220\u6539\u64CD\u4F5C\n - \u6240\u6709Page\u7684\u5B50\u7C7B\uFF0C\u90FD\u5141\u8BB8\u6DFB\u52A0\u6784\u9020\u51FD\u6570\u548C\u6784\u9020\u51FD\u6570\u7684\u53C2\u6570\uFF0C\u8FD9\u4E9B\u53C2\u6570\u5C31\u7528\u6765\u9875\u9762\u8DF3\u8F6C\u65F6\u9875\u9762\u4E4B\u95F4\u4F20\u9012\u6570\u636E\u4F7F\u7528\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u9875ProjectListPage\u8DF3\u5230\u5546\u54C1\u8BE6\u60C5\u9875ProjectDetailPage\uFF0C\u90A3\u4E48ProjectListPage\u5E94\u8BE5\u8981\u4F20\u7ED9ProjectDetailPage\u4E00\u4E2A\u53C2\u6570\uFF1AproductID\u3002\u6240\u4EE5\uFF0CProjectDetailPage\u7684\u9875\u9762\u53C2\u6570\u58F0\u660E\u548C\u6784\u9020\u51FD\u6570\u5E94\u8BE5\u662F\u8FD9\u6837\u5199\uFF1A\n private productID: string\n constructor(productID: string) {\n super()\n this.productID = productID\n }\u3002\n - \u4EFB\u4F55\u9875\u9762\uFF08\u7279\u522B\u662F\u95EA\u5C4F\u9875\uFF09\u7684\u4E1A\u52A1\u903B\u8F91\u7EDD\u5BF9\u4E0D\u80FD\u653E\u5230Application.ts\u8FDB\u884C\u5904\u7406\uFF0CApplication.ts\u53EA\u8FDB\u884C\u5168\u5C40\u7F51\u7EDC\u62E6\u622A\u5904\u7406\u3001\u5168\u5C40\u9759\u6001\u53D8\u91CF\u3001\u5168\u5C40\u9759\u6001\u65B9\u6CD5\u7684\u5B9A\u4E49\u548C\u5B9E\u73B0\n - \u5982\u679C\u662F\u591A\u4E2A\u9875\u9762\u5171\u7528\u7684\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u8003\u8651\u58F0\u660E\u4E3A\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u5E76\u5728Application.ts\u4E2D\u8FDB\u884C\u58F0\u660E\u3002\n - \u5168\u5C40\u9759\u6001\u53D8\u91CF\u5728\u5173\u95EDAPP\u6216\u8005\u7F51\u9875\u540E\u4F1A\u6E05\u7406\u6389\u7684\uFF0C\u6240\u4EE5\u4F60\u8981\u601D\u8003\u6E05\u695A\u54EA\u4E9B\u6570\u636E\u53D8\u91CF\u9700\u8981\u6301\u4E45\u5316\u50A8\u5B58\uFF0C\u54EA\u4E9B\u662F\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u6301\u4E45\u5316\u63A5\u53E3\uFF1AsaveDatabaseXxx\u548CgetDatabaseDataXxx\uFF0C\u6BD4\u5982\u662F\u5426\u5DF2\u7ECF\u5F39\u51FA\u8FC7\u5E7F\u544A\u5F39\u6846\uFF0C\u8FD9\u4E2A\u5E94\u8BE5\u6301\u4E45\u5316\u50A8\u5B58\u3002\n - \u6240\u6709\u7684\u7F51\u7EDC\u62E6\u622A\u7684\u5168\u5C40\u7EDF\u4E00\u5904\u7406\u9700\u8981\u5728Application\u4E2D\u7684onGlobalNetSuccessIntercept(\u8054\u7F51\u6210\u529F\u540E\uFF0C\u540E\u7AEF\u4E1A\u52A1\u6B63\u786E\u4E0E\u9519\u8BEF\u90FD\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u5728\u8FD9\u91CC\u53EF\u7EDF\u4E00\u5904\u7406\u4E1A\u52A1\u9519\u8BEF\u7801)\u6216onGlobalNetFailIntercept(\u7F51\u7EDC\u4E0D\u901A\uFF0C\u8FDE\u63A5\u5931\u8D25\u60C5\u51B5\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC)\u91CC\u9762\u5904\u7406\u3002\n - \u9875\u9762\u5185\u7684\u7F51\u7EDC\u8BF7\u6C42\u4E1A\u52A1\u5904\u7406\u4E0D\u5F97\u5199\u5728Application\u7684onGlobalNetSuccessIntercept\u91CC\u9762\u3002\n - \u58F0\u660E\u5168\u5C40\u53D8\u91CF\u3001\u5C40\u90E8\u53D8\u91CF\u5FC5\u987B\u8981\u58F0\u660E\u6570\u636E\u7C7B\u578B\uFF0C\u5E76\u4E14\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528any\uFF0C\u8BF7\u4F7F\u7528\u5177\u4F53\u7C7B\u578B\u6765\u58F0\u660E\n - \u5B57\u7B26\u4E32\u4E0D\u5F97\u76F4\u63A5\u8FDB\u884Cboolean\u8FD0\u7B97\u7136\u540E\u8D4B\u503C\u7ED9boolean\u7C7B\u578B\u7684\u53D8\u91CF\uFF0C\u9700\u8981\u5728\u5B57\u7B26\u4E32\u524D\u9762\u6DFB\u52A0\u4E24\u4E2A\u975E\u8FD0\u7B97\uFF1A!!\u3002\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Aconst isAdd = !!this.inputView.text && isNew\n - \u6240\u6709\u7684toast\u63D0\u793A\uFF0C\u5FC5\u987B\u8C03\u7528AllFunction.showToast\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5E76\u4E14\u5982\u7528\u6237\u63CF\u8FF0\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u9700\u8981toast\u63D0\u793A\uFF0C\u4F60\u4E0D\u5F97\u64C5\u81EA\u8FDB\u884CToast\u63D0\u793A\u3002\n - \u5EF6\u65F6\u6267\u884CAllFunction.setTimeout\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u6E05\u7406timeout\uFF0C\u4EE3\u7801\u4E0A\u7EDD\u5BF9\u4E0D\u80FD\u8FDB\u884CcleaTimeout\u7B49\u7C7B\u4F3C\u64CD\u4F5C\uFF0C\u56E0\u6B64setTimeout\u4E5F\u4E0D\u9700\u8981\u58F0\u660E\u53D8\u91CF\u53BB\u63A5\u6536setTimeout\u8FD4\u56DE\u7684\u5F15\u7528\u3002\n - \u8F6E\u64ADViewPager\u5BF9\u5E94\u7684\u7D22\u5F15\u6307\u793A\u5668\u5BB9\u5668\uFF0C\u8FD9\u4E2A\u7D22\u5F15\u6307\u793A\u5668\u4E0D\u9700\u8981\u989D\u5916\u4EE3\u7801\u5B9E\u73B0\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u672C\u8EABViewPager\u4E0EIndicatorContainer\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u4E86\u5207\u6362\u7684UI\u66F4\u65B0\u903B\u8F91\u7684\u4E86\uFF0C\u53EA\u9700\u8981viewPager.bindIndicator(indicatorContainer)\u5373\u53EF\u3002\n - \u79FB\u52A8\u7AEF\u7684ViewPager\u7684canIndicatorClick\u5C5E\u6027\u9ED8\u8BA4\u8BBE\u7F6E\u4E3Afalse\u7684\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u660E\u9700\u8981\u6FC0\u6D3B\u6307\u793A\u5668\u7684\u70B9\u70B9\u51FB\u5207\u6362ViewPager\u3002\n - \u6BCF\u4E00\u4E2A\u9875\u9762(\u5982loginPage)\u5EFA\u8BAE\u5728page\u6587\u4EF6\u5939\u4E0B\u9762\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6587\u4EF6\u5939(\u5982login)\uFF0C\u7136\u540E\u9875\u9762\u7684ts\u6587\u4EF6(\u5982loginPage.ts)\u521B\u5EFA\u5728\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u9762\uFF0C\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u5982\u679C\u9700\u8981\u8FD8\u53EF\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6570\u636Ets\u6587\u4EF6(\u5982loginPageData.ts)\uFF0C\u8FD9\u6837\u5982loginPage\u8D1F\u8D23\u4E1A\u52A1\u903B\u8F91\u548C\u4EA4\u4E92\u903B\u8F91\uFF0C\u5982loginPageData\u8D1F\u8D23\u6570\u636E\u58F0\u660E\u5B9A\u4E49\u3001\u521D\u59CB\u5316\u4E0E\u7BA1\u7406\u7B49\u3002\n\n## 8. **\u7406\u89E3\u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u8BFB\u53D6'src/backendApi/backendApiInfo.md'\u540E\u7AEFAPI\u4F7F\u7528\u8BF4\u660E\u6587\u4EF6\uFF0C\u5FC5\u987B\u7F13\u5B58\u8BB0\u4F4F\u6240\u6709\u53EF\u7528\u7684\u540E\u7AEFAPI\u63A5\u53E3\u5217\u8868\u3002\n - \u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528\uFF0C\u5FC5\u987B\u4F7F\u7528src/backendApi\u6587\u4EF6\u5939\u91CC\u9762\u7684\u5404\u79CDAPI\u7C7B\u4E2D\u5B9A\u4E49\u7684\u65B9\u6CD5\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528\u672A\u5728backendApi\u6587\u4EF6\u5939\u4E2D\u5B9A\u4E49\u7684\u540E\u7AEFAPI\uFF0C\u6BD4\u5982\uFF1AbackendApi/account/getUserInfo.ts\uFF0C\u8FD9\u4E2A\u5C31\u662F\u8D26\u53F7\u6A21\u5757\u4E2D\u7684\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684API\u7C7B\uFF0C\u8FD4\u56DE\u7684res\u5FC5\u987B\u58F0\u660E\u5177\u4F53\u7C7B\u578B\uFF0C\u6BD4\u5982res: getUserInfoResponse\u3002\n - request\u63A5\u53E3\u53EA\u9700\u5B9A\u4E49\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u5B9E\u73B0\uFF0C\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u3002\n - API\u7C7B\u4EE3\u7801\u793A\u4F8B\uFF1A\n ```typescript\n import BaseApi from '../BaseApi'\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8BF7\u6C42\u6570\u636E\n export interface postClientBizAuthLoginRequest {\n username?: string\n password?: string\n key?: string\n captcha?: string\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\n export interface postClientBizAuthLoginResponse {\n code: number\n msg: string\n data: {\n access_token: string\n }\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u5931\u8D25\u8FD4\u56DE\u6570\u636E\n export interface apiFailInfo {\n msg: string\n code: number\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\n export default class postClientBizAuthLogin extends BaseApi {\n\n public static request_ArtuX1d8a6A(\n request: postClientBizAuthLoginRequest,\n success: (res: postClientBizAuthLoginResponse) => void,\n fail: (error: apiFailInfo) => void\n ): void { }\n\n }\n ```\n - API\u7C7B\u7684\u4F7F\u7528\u65B9\u5F0F\uFF1A\u5148import API\u7C7B\uFF0C\u7136\u540E\u8C03\u7528API\u7C7B\u7684request\u65B9\u6CD5\uFF0C\u6BD4\u5982\uFF1A\n import { postClientBizAuthLogin } from '../../backendApi/account/postClientBizAuthLogin'\n ...\n const request: postClientBizAuthLoginRequest = {\n username: 'admin',\n password: '123456',\n key: '123456',\n captcha: '123456'\n }\n postClientBizAuthLogin.request_ArtuX1d8a6A(request, (response: postClientBizAuthLogoutResponse) => {\n // \u8BF7\u6C42\u6210\u529F\u540E\u7684\u5904\u7406\n }, (error: apiFailInfo) => {\n // \u8BF7\u6C42\u5931\u8D25\u540E\u7684\u5904\u7406\n })\n ...\n\n## 9. **\u7406\u89E3\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A**\n - \u5728\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\uFF0C\u9700\u8981\u6839\u636Evtype\u6765\u505A\u4E0D\u540C\u7684\u6570\u636E\u7ED1\u5B9A\uFF0C\u6BD4\u5982\uFF1A\n - vtype=\"verticalListView\"\u3001vtype=\"horizontalListView\"\u3001vtype=\"viewPager\"\u7C7B\u578B\u7684\u8282\u70B9\u7EC4\u4EF6\uFF0C\u9700\u8981\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u7ED1\u5B9A\u6570\u636E\uFF0C\u6BD4\u5982\uFF1A\n this.xxxVerticalListView.setDataList(response.data.list)\u3001this.xxxHorizontalListView.setDataList(response.data.list)\u3001this.xxxViewPager.setDataList(response.data.list)\n - vtype=\"listItemCard\"\u3001vtype=\"oneViewPagerContent\"\u7C7B\u578B\u7684\u8282\u70B9\u7EC4\u4EF6\uFF0C\u9700\u8981\u6DF1\u5EA6\u904D\u5386\u5B83\u7684\u7B2C1\u4E2Aitem\u7684\u5B69\u5B50\uFF0C\u7136\u540E\u7ED3\u5408\u540E\u7AEFapi\u8FD4\u56DE\u7684xxxResponse\u7684\u6570\u636E\u7ED3\u6784\u7ED9\u7B2C1\u4E2Aitem\u8BBE\u7F6E\u6570\u636E\uFF0C\u6CE8\u610F\u53EA\u9700\u7ED9\u7B2C1\u4E2Aitem\u8282\u70B9\u8BBE\u7F6E\u6570\u636E\uFF0C\u800C\u4E0D\u662F\u6240\u6709item\u8282\u70B9\u90FD\u8BBE\u7F6E\u6570\u636E\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n // \u540E\u7AEFxxxApi\u8FD4\u56DE\u7684xxxResponse\u6570\u636E\u7ED3\u6784\n export interface getRecommendBookListResponse {\n code: number\n msg: string\n data: {\n list: [\n {\n id: number // \u4E66\u7C4DID\n title: string // \u4E66\u7C4D\u6807\u9898\n author: string // \u4F5C\u8005\u540D\u79F0\n coverUrl: string // \u5C01\u9762\u56FE\u7247URL\n description: string // \u4E66\u7C4D\u7B80\u4ECB\n categoryName: string // \u5206\u7C7B\u540D\u79F0\n }\n ] // \u4E66\u7C4D\u5217\u8868\n total: number // \u603B\u6570\u91CF\n page: number // \u5F53\u524D\u9875\u7801\n size: number // \u6BCF\u9875\u6570\u91CF\n }\n }\n ...\n // \u8BBE\u7F6E\u4E66\u7C4D\u5217\u8868\u6570\u636E\n this.recommendBookList.setDataList(getRecommendBookListResponse.data.list)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n this.recommendBookCover1.src = getRecommendBookListResponse.data.list[0].coverUrl\n this.recommendBookTitle1.text = getRecommendBookListResponse.data.list[0].title\n this.recommendBookAuthor1.text = getRecommendBookListResponse.data.list[0].author\n ...\n // \u8BBE\u7F6E\u8F6E\u64AD\u6570\u636E\n this.recommendViewPager.setDataList(getRecommendBookListResponse.data.list)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n this.recommendImage1.src = getRecommendBookListResponse.data.list[0].coverUrl\n this.carouselTitle1.text = getRecommendBookListResponse.data.list[0].title\n ...\n ```\n\n## 10. \u8F6E\u64ADViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3AViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\u5DF2\u7ECF\u81EA\u52A8\u5B9E\u73B0\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n\n## 11. \u7981\u7528\u4EE5\u4E0B6\u79CD\u4EE3\u7801\u5199\u6CD5\n- 1\u3001\u7981\u6B62\u5728\u51FD\u6570\u91CC\u9762\u5B9A\u4E49\u5185\u90E8\u51FD\u6570\uFF0C\u5FC5\u987B\u5B9A\u4E49\u51FD\u6570\u4E3A\u5168\u5C40\u51FD\u6570\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ```typescript\n private initView(): void {\n const countCardData: number = () => {\n // xxx\u4EE3\u7801\n }\n const count = countCardData()\n }\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\u662F\uFF1A\n ```typescript\n private initView(): void {\n const count = this.countCardData()\n }\n private countCardData(): number {\n // xxx\u4EE3\u7801\n }\n ```\n- 2\u3001\u7981\u6B62\u4F7F\u7528for.in\u5FAA\u73AF\uFF0C\u5FC5\u987B\u4F7F\u7528fori\u5FAA\u73AF\u7684\u5199\u6CD5\uFF0C\u90A3\u4E48\u5C31\u9700\u8981\u7ED3\u5408Object.keys(xxx)\u6765\u5148\u83B7\u53D6\u5230\u5BF9\u8C61\u7684keys\uFF0C\u518Dfori\u904D\u5386\u5BF9\u8C61\u5C5E\u6027\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ```typescript\n for (const key in hotReviewObj) {\n updatedReview[key] = hotReviewObj[key];\n }\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\u662F\uFF1A\n ```typescript\n const keys = Object.keys(hotReviewsData);\n for (let i = 0; i < keys.length; i++) {\n updatedReview[key] = hotReviewsData[keys[i]];\n }\n ```\n- 3\u3001\u4EFB\u4F55\u65B9\u6CD5\u51FD\u6570\u5B9A\u4E49\uFF0C\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528async\u548CPromise\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528Promise.race\u3001Promise.all\u7B49Promise\u76F8\u5173\u65B9\u6CD5\uFF0C\u6240\u6709\u5F02\u6B65\u64CD\u4F5C\u5FC5\u987B\u4F7F\u7528\u7BAD\u5934\u51FD\u6570\u3002\n- 4\u3001\u7981\u6B62\u4F7F\u7528\u6B63\u5219\uFF0C\u8BF7\u4F7F\u7528\u5B57\u7B26\u4E32\u64CD\u4F5C\u6765\u66FF\u6362\u5B9E\u73B0\n- 5\u3001\u7981\u6B62\u4F7F\u7528lib.dom.d.ts\u6587\u4EF6\u91CC\u9762\u7684\u65B9\u6CD5\uFF0C\u56E0\u4E3Alib.dom.d.ts\u6587\u4EF6\u91CC\u9762\u7684\u65B9\u6CD5\u90FD\u662F\u6D4F\u89C8\u5668\u73AF\u5883\u7684\u65B9\u6CD5\uFF0C\u4E0D\u5141\u8BB8\u5728Node.js\u73AF\u5883\u4E0B\u4F7F\u7528\u3002\n- 6\u3001\u7981\u6B62\u4FEE\u6539\u3001\u65B0\u589E\u3001\u5220\u9664src/lib\u6587\u4EF6\u5939\u53CA\u5176\u6240\u6709\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\u3002\n\n";
|
|
1
|
+
export declare const understandingCodeFrameworkTemplate = "\n# **\u5FC5\u987B\u5148\u7406\u89E3\u9879\u76EE\u4EE3\u7801\u6846\u67B611\u4E2A\u77E5\u8BC6\u70B9**\n## 1. **\u7406\u89E3View\u7EC4\u4EF6\u7684\u58F0\u660E\u89C4\u5219**\n - \u8FD9\u4E0D\u662Fhtml\u3001react\u7B49\u5F00\u53D1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u65B0\u7684\u5F00\u53D1\u6846\u67B6\uFF0C\u662F\u57FA\u4E8Esrc/lib/uilib\u6587\u4EF6\u5939\u91CC\u9762\u7684UI\u7EC4\u4EF6\u5E93\u6765\u5F00\u53D1\u7684\n - View\u7EC4\u4EF6\u7684\u57FA\u7C7B\u662FBaseView\uFF0C\u5BB9\u5668\u57FA\u7C7B\u662FBaseContainerView\uFF0C\u6240\u6709View\u7EC4\u4EF6\u90FD\u7EE7\u627F\u81EABaseView\n - \u67E5\u770B'src/lib/uilib/'\u6587\u4EF6\u5939\u4E0B\u9762\u7684\u6587\u4EF6\u540D\u5B57\uFF0C\u7406\u89E3\u603B\u5171\u6709\u591A\u5C11\u79CDUI\u7EC4\u4EF6\n - View\u7EC4\u4EF6\u7684\u58F0\u660E\u5FC5\u987B\u5728\u7C7B\u6587\u4EF6\u5F00\u59CB\u65F6\u5148\u58F0\u660E\uFF0C\u5E76\u4E14\u5FC5\u987B\u8981\u58F0\u660E\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF0C\u4E0D\u5F97\u58F0\u660E\u4E3ABaseView\uFF0C\u4E0D\u5F97\u5728\u4EFB\u4F55\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewById\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF0C\u6BD4\u5982\uFF1A\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ```typescript\n public class HomePage extends Page {\n private nameTextView: TextView = this.findViewById('nameTextView') as TextView\n ....\n }\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u6CA1\u6709\u58F0\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF09\uFF1A\n ```typescript\n private nameTextView = this.findViewById('nameTextView')\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u5728\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewById\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF09\uFF1A\n ```typescript\n private oneFunction() {\n const nameTextView: TextView = this.findViewById('nameTextView') as TextView\n ....\n }\n ```\n - \u6240\u6709View\u7EC4\u4EF6\u7684\u9009\u4E2D\u72B6\u6001\u3001\u805A\u7126\u72B6\u6001\u3001\u7981\u7528\u72B6\u6001\u7684\u53D8\u5316\u90FD\u5FC5\u987B\u901A\u8FC7`setStation(station: ViewStation)`\u51FD\u6570\u6765\u8BBE\u7F6E\uFF0C\u4E0D\u80FD\u76F4\u63A5\u8BBE\u7F6E\u7EC4\u4EF6\u7684UI\u5C5E\u6027\uFF0C\u53EA\u9700\u8981\u8BBE\u7F6E\u7EC4\u4EF6\u7684station\u5C5E\u6027\u5373\u53EF\u81EA\u52A8\u66F4\u65B0\u7EC4\u4EF6\u7684UI\u6837\u5F0F\n - \u6240\u6709View\u7EC4\u4EF6\u7684\u663E\u793A\u3001\u9690\u85CF\u5360\u4F4D\u3001\u9690\u85CF\u4E0D\u5360\u4F4D\u7684\u8BBE\u7F6E\u90FD\u5FC5\u987B\u4F7F\u7528View\u7684`visibility`\u5C5E\u6027\u8FDB\u884C\u8BBE\u7F6E\uFF0C\u4E0D\u5F97\u4F7F\u7528`station`\u5C5E\u6027\u3002\n - \u6240\u6709View\u7EC4\u4EF6\u7684normal\u3001readOnly\u3001focus\u3001selected\u3001disabled\u72B6\u6001\u7684\u8BBE\u7F6E\u90FD\u5FC5\u987B\u4F7F\u7528View\u7684`station`\u5C5E\u6027\u8FDB\u884C\u8BBE\u7F6E\u3002\n\n## 2. **\u7406\u89E3\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\u4EE5\u53CAjson\u76F8\u5173\u4EE3\u7801**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/AllFunction.ts'\u6587\u4EF6\uFF0C\u7406\u89E3\u8BE5\u5DE5\u7A0B\u80FD\u4F7F\u7528\u7684\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5\n - \u8BF7\u4E25\u683C\u6309\u7167\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\uFF0C\u4E0D\u8981\u65B0\u589E\u3001\u5220\u9664\u6216\u4FEE\u6539\u4EFB\u4F55AllFunction\u63A5\u53E3\u58F0\u660E\uFF1B\u4E5F\u4E0D\u8981\u8C03\u7528\u5176\u4ED6\u672A\u5728AllFunction\u4E2D\u51FA\u73B0\u7684\u51FD\u6570\u6216\u6A21\u5757\n \n## 3. **\u7406\u89E3Ref\u3001watch**\n - Ref\u7684\u6570\u636E\u7C7B\u578B\u53EA\u80FD\u662F\u4EE5\u4E0B5\u4E2D\u7C7B\u578B\uFF1A\u6570\u5B57\u4F7F\u7528Ref<number>\uFF0C\u5B57\u7B26\u4E32\u4F7F\u7528Ref<string>\uFF0C\u5E03\u5C14\u91CF\u4F7F\u7528Ref<boolean>\uFF0C\u5BF9\u8C61\u4F7F\u7528Ref<any>\uFF0C\u6570\u7EC4\u4F7F\u7528Ref<Array<any>>\u6216Ref<Array<any> | null>\u6216Ref<any[]>\u6216Ref<any[] | null>\u3002\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/Ref.ts'\u6587\u4EF6\uFF0C\u7406\u89E3Ref\u548Cwatch\u7684\u5B9A\u4E49\u7528\u6CD5\n - watch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684Ref\u6570\u7EC4\uFF0C\u7B2C\u4E8C\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684\u56DE\u8C03\u51FD\u6570\uFF0C\u56DE\u8C03\u51FD\u6570\u4E2D\u53EF\u4EE5\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\u3002\n - Ref\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0Cwatch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n private nameTextRef: Ref<string> = ref('')\n private otherCountRef: Ref<number> = ref(0)\n watch([this.nameTextRef, this.otherCountRef], () => {\n // \u53EF\u4EE5\u5148\u76F8\u5173\u7684UI\u66F4\u65B0\u6216\u4E1A\u52A1\u903B\u8F91\n if (this.otherCountRef.value > 5) {\n this.nameTextView.text = this.nameTextRef.value + '5'\n } else {\n this.nameTextView.text = this.nameTextRef.value + '10'\n }\n })\n ```\n - `src/lib/uilib/Ref.ts`\u91CC\u9762\u7684`watch`\u51FD\u6570\uFF0C\u7B2C\u4E00\u4E2A\u5165\u53C2`refs: Ref<T>[]`\u7EDD\u5BF9\u7981\u6B62\u5148\u58F0\u660E\u5C40ref\u6570\u7EC4\u90E8\u53D8\u91CF\u518D\u4F20\u5165\uFF0C\u6B63\u786E\u7684\u5199\u6CD5\u5E94\u8BE5\u662F\u76F4\u63A5\u5199\u6570\u7EC4\uFF1A`[ref1, ref2]`\u5C31\u884C\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ``` typescript\n const refArray = [ref1, ref2]\n watch(refArray, (newValues: T[]) => {\n // \u76D1\u542Cref1\u548Cref2\u7684\u53D8\u5316\n })\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ``` typescript\n watch([ref1, ref2], (newValues: T[]) => {\n // \u76D1\u542Cref1\u548Cref2\u7684\u53D8\u5316\n })\n ```\n\n## 4. **\u7406\u89E3setDataList\u65B9\u6CD5\u7684\u9759\u6001\u6570\u636E\u4E0E\u52A8\u6001\u6570\u636E\u573A\u666F**\n - \u5BF9\u4E8E\u52A8\u6001\u6570\u636E\u5BB9\u5668ViewPager\u3001ListView\u7684setDataList\u65B9\u6CD5\uFF0C\u5982\u679C\u6570\u636E\u662F\u52A8\u6001\u7684\uFF0C\u6BD4\u5982\uFF1A\u4ECE\u540E\u7AEF\u63A5\u53E3\u83B7\u53D6\u7684\uFF0C\u624D\u80FD\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\u9759\u6001\u6570\u636E\u5DF2\u7ECF\u5728UI\u9875\u9762\u4E0A\u5199\u597D\u4E86\uFF0C\u4F60\u4E0D\u5F97\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\n - \u5224\u65AD\u6807\u51C6\uFF1A\u5982\u679CUI\u9875\u9762\u4E2D\u5DF2\u7ECF\u6709\u5B8C\u6574\u7684\u8F6E\u64AD\u9879\u76EE/\u5217\u8868\u9879\u76EE\uFF0C\u5C31\u662F\u9759\u6001\u6570\u636E\uFF0C\u5982\u679C\u662F\u7F51\u7EDCAPI\u8FD4\u56DE\u7684\u6570\u636E\u5217\u8868\u5C31\u662F\u52A8\u6001\u6570\u636E\u3002\n - \u2705 \u9759\u6001\u6570\u636E\u5BB9\u5668\uFF08UI\u9875\u9762\u4E2D\u5DF2\u5199\u597D\u5185\u5BB9\uFF09\uFF1A\u4E0D\u4F7F\u7528setDataList()\n - \u2705 \u52A8\u6001\u6570\u636E\u5BB9\u5668\uFF08\u9700\u8981\u4ECEAPI\u83B7\u53D6\uFF09\uFF1A\u624D\u4F7F\u7528setDataList()\n\n## 5. **View\u7EC4\u4EF6\uFF0C\u7406\u89E3\u6BCF\u4E2A\u7EC4\u4EF6\u53EF\u80FD\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u5982\u679C\u7EC4\u4EF6\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u90A3\u4E48\u4F60\u4E0D\u5F97\u518D\u81EA\u5DF1\u521B\u5EFAref\u53D8\u91CF\u6216\u8005\u4F7F\u7528onSelectChange\u7B49\u56DE\u8C03\u89E6\u53D1UI\u66F4\u65B0**\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\u3002\n public initView() {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n }\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n public initView() {\n watch([this.viewPager.currentSelectIndexRef], () => {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n })\n ```\n - tab\u7EC4\u4EF6\u548C\u8F6E\u64AD\u7EC4\u4EF6\u7684\u9009\u62E9\u53D8\u5316\u76D1\u542C\uFF0C\u5FC5\u987B\u4F7F\u7528`ViewPager`\u6216`TabContainer`\u7684`onSelectChange(func: (item: any, position: number) => void)`\u51FD\u6570\u6765\u76D1\u542C\u9009\u62E9\u53D8\u5316\n\n## 6. **\u7406\u89E3\u9875\u9762\u8DF3\u8F6C**\n - \u9875\u9762\u8DF3\u8F6C\u5FC5\u987B\u4F7F\u7528AllFunction.startPage\u5B9E\u73B0\uFF0CstartPage\u4F20\u5165Page\u7684\u5B50\u7C7B\u5BF9\u8C61\uFF0C\u5982\uFF1AAllFunction.startPage(new ProductPage(this.productID))\u3002\n - \u274C \u9875\u9762\u8DF3\u8F6C\u4E0D\u9700\u8003\u8651\u6A21\u5757\u5316\u3001\u5FAA\u73AF\u4F9D\u8D56\u3001\u6E10\u8FDB\u5F0F\u5F00\u53D1\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5C4F\u853D\u9875\u9762\u8DF3\u8F6C\u7684\u4EE3\u7801\uFF0C\u6240\u6709\u9875\u9762\u90FD\u5DF2\u7ECF\u5B58\u5728\uFF0C\u4E0D\u4F1A\u51FA\u73B0\u7F16\u8BD1\u51FA\u9519\u7684\uFF0C\u5FC5\u987B\u660E\u786E\u5199\u4E0A\u9875\u9762\u8DF3\u8F6C\u7684\u4EE3\u7801\u548C\u76EE\u6807\u9875\u9762\u6240\u9700\u7684\u8DF3\u8F6C\u53C2\u6570\u3002\n - \u5728Application.ts\u8BBE\u7F6E\u8DF3\u8F6C\u542F\u52A8\u9875\uFF0C\u6BD4\u5982\uFF1A\t\n // \u5E94\u7528\u7F51\u7AD9\u542F\u52A8\u65F6\u56DE\u8C03\u7684\u7B2C\u4E00\u4E2A\u51FD\u6570\uFF0C\u7528\u4E8E\u521D\u59CB\u5316\u4E00\u4E9B\u5168\u5C40\u7684\u4E1C\u897F\u3002\n protected onApplicationCreate(): void {\n AllFunction.startPage(new SplashPage())\n }\n - \u2705 \u5F15\u5165\u5176\u4ED6\u7C7B\u53EA\u5141\u8BB8\u4E00\u79CD\u5199\u6CD5\uFF1A\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u52A8\u6001import\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n // \u4F7F\u7528\u52A8\u6001\u5BFC\u5165\u907F\u514D\u5FAA\u73AF\u4F9D\u8D56\n import('../guidePage/guidePage').then(({ default: GuidePage }) => {\n AllFunction.startPage(new GuidePage())\n })\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528require\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n require('../guidePage/guidePage').default\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\u662F\uFF1AAllFunction.startPage(new GuidePage())\u3002\u7136\u540E\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u5982\u679C\u9875\u9762\u8DF3\u8F6C\u9700\u8981\u4F20\u9012\u53C2\u6570\uFF0C\u90A3\u4E48\u9700\u8981\u4F7F\u7528Page\u7684\u5B50\u7C7B\u6784\u9020\u51FD\u6570\u6765\u4F20\u9012\u53C2\u6570\uFF0C\u6BD4\u5982\uFF1AAllFunction.startPage(new GuidePage(this.productID))\u3002\n - \u5728\u5B9E\u73B0\u9875\u9762\u8DF3\u8F6C\u4EE3\u7801\u7684\u65F6\u5019\uFF0C\u5FC5\u987B\u4E25\u683C\u6309\u7167\u4EE5\u4E0B\u4E09\u6B65\u6765\u5B9E\u73B0\uFF1A\n - **\u7B2C\u4E00\u6B65\uFF1A\u5148\u5206\u6790\u8DF3\u8F6C\u7684\u76EE\u6807\u9875\u9762\u9700\u8981\u4F20\u9012\u54EA\u4E9B\u53C2\u6570**\n - **\u7B2C\u4E8C\u6B65\uFF1A\u4FEE\u6539\u76EE\u6807\u9875\u9762\u6784\u9020\u51FD\u6570**\uFF1A\n ```typescript\n export default class ReadingPage extends Page {\n private bookId: number\n private chapterTitle: string\n \n constructor(bookId: number, chapterTitle: string) {\n super()\n this.bookId = bookId\n this.chapterTitle = chapterTitle\n }\n }\n ```\n - **\u7B2C\u4E09\u6B65\uFF1A\u4FEE\u6539\u8DF3\u8F6C\u4EE3\u7801**\n ```typescript\n const bookData = this.readingHistoryDataRef.value[0]\n AllFunction.startPage(new ReadingPage(bookData.id, bookData.chapterTitle))\n ```\n\n## 7. **\u7406\u89E3\u57FA\u7840\u5F00\u53D1\u89C4\u5219**\n - lib\u6587\u4EF6\u5939\u91CC\u9762\u7684\u4EE3\u7801\u6587\u4EF6\u90FD\u662F\u5185\u7F6E\u6846\u67B6\u4EE3\u7801\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5BF9lib\u6587\u4EF6\u5939\u7684\u4EE3\u7801\u8FDB\u884C\u589E\u5220\u6539\u64CD\u4F5C\n - \u6240\u6709Page\u7684\u5B50\u7C7B\uFF0C\u90FD\u5141\u8BB8\u6DFB\u52A0\u6784\u9020\u51FD\u6570\u548C\u6784\u9020\u51FD\u6570\u7684\u53C2\u6570\uFF0C\u8FD9\u4E9B\u53C2\u6570\u5C31\u7528\u6765\u9875\u9762\u8DF3\u8F6C\u65F6\u9875\u9762\u4E4B\u95F4\u4F20\u9012\u6570\u636E\u4F7F\u7528\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u9875ProjectListPage\u8DF3\u5230\u5546\u54C1\u8BE6\u60C5\u9875ProjectDetailPage\uFF0C\u90A3\u4E48ProjectListPage\u5E94\u8BE5\u8981\u4F20\u7ED9ProjectDetailPage\u4E00\u4E2A\u53C2\u6570\uFF1AproductID\u3002\u6240\u4EE5\uFF0CProjectDetailPage\u7684\u9875\u9762\u53C2\u6570\u58F0\u660E\u548C\u6784\u9020\u51FD\u6570\u5E94\u8BE5\u662F\u8FD9\u6837\u5199\uFF1A\n private productID: string\n constructor(productID: string) {\n super()\n this.productID = productID\n }\u3002\n - \u4EFB\u4F55\u9875\u9762\uFF08\u7279\u522B\u662F\u95EA\u5C4F\u9875\uFF09\u7684\u4E1A\u52A1\u903B\u8F91\u7EDD\u5BF9\u4E0D\u80FD\u653E\u5230Application.ts\u8FDB\u884C\u5904\u7406\uFF0CApplication.ts\u53EA\u8FDB\u884C\u5168\u5C40\u7F51\u7EDC\u62E6\u622A\u5904\u7406\u3001\u5168\u5C40\u9759\u6001\u53D8\u91CF\u3001\u5168\u5C40\u9759\u6001\u65B9\u6CD5\u7684\u5B9A\u4E49\u548C\u5B9E\u73B0\n - \u5982\u679C\u662F\u591A\u4E2A\u9875\u9762\u5171\u7528\u7684\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u8003\u8651\u58F0\u660E\u4E3A\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u5E76\u5728Application.ts\u4E2D\u8FDB\u884C\u58F0\u660E\u3002\n - \u5168\u5C40\u9759\u6001\u53D8\u91CF\u5728\u5173\u95EDAPP\u6216\u8005\u7F51\u9875\u540E\u4F1A\u6E05\u7406\u6389\u7684\uFF0C\u6240\u4EE5\u4F60\u8981\u601D\u8003\u6E05\u695A\u54EA\u4E9B\u6570\u636E\u53D8\u91CF\u9700\u8981\u6301\u4E45\u5316\u50A8\u5B58\uFF0C\u54EA\u4E9B\u662F\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u6301\u4E45\u5316\u63A5\u53E3\uFF1AsaveDatabaseXxx\u548CgetDatabaseDataXxx\uFF0C\u6BD4\u5982\u662F\u5426\u5DF2\u7ECF\u5F39\u51FA\u8FC7\u5E7F\u544A\u5F39\u6846\uFF0C\u8FD9\u4E2A\u5E94\u8BE5\u6301\u4E45\u5316\u50A8\u5B58\u3002\n - \u6240\u6709\u7684\u7F51\u7EDC\u62E6\u622A\u7684\u5168\u5C40\u7EDF\u4E00\u5904\u7406\u9700\u8981\u5728Application\u4E2D\u7684onGlobalNetSuccessIntercept(\u8054\u7F51\u6210\u529F\u540E\uFF0C\u540E\u7AEF\u4E1A\u52A1\u6B63\u786E\u4E0E\u9519\u8BEF\u90FD\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u5728\u8FD9\u91CC\u53EF\u7EDF\u4E00\u5904\u7406\u4E1A\u52A1\u9519\u8BEF\u7801)\u6216onGlobalNetFailIntercept(\u7F51\u7EDC\u4E0D\u901A\uFF0C\u8FDE\u63A5\u5931\u8D25\u60C5\u51B5\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC)\u91CC\u9762\u5904\u7406\u3002\n - \u9875\u9762\u5185\u7684\u7F51\u7EDC\u8BF7\u6C42\u4E1A\u52A1\u5904\u7406\u4E0D\u5F97\u5199\u5728Application\u7684onGlobalNetSuccessIntercept\u91CC\u9762\u3002\n - \u58F0\u660E\u5168\u5C40\u53D8\u91CF\u3001\u5C40\u90E8\u53D8\u91CF\u5FC5\u987B\u8981\u58F0\u660E\u6570\u636E\u7C7B\u578B\uFF0C\u5E76\u4E14\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528any\uFF0C\u8BF7\u4F7F\u7528\u5177\u4F53\u7C7B\u578B\u6765\u58F0\u660E\n - \u5B57\u7B26\u4E32\u4E0D\u5F97\u76F4\u63A5\u8FDB\u884Cboolean\u8FD0\u7B97\u7136\u540E\u8D4B\u503C\u7ED9boolean\u7C7B\u578B\u7684\u53D8\u91CF\uFF0C\u9700\u8981\u5728\u5B57\u7B26\u4E32\u524D\u9762\u6DFB\u52A0\u4E24\u4E2A\u975E\u8FD0\u7B97\uFF1A!!\u3002\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Aconst isAdd = !!this.inputView.text && isNew\n - \u6240\u6709\u7684toast\u63D0\u793A\uFF0C\u5FC5\u987B\u8C03\u7528AllFunction.showToast\u65B9\u6CD5\u6765\u663E\u793A\uFF0C\u5E76\u4E14\u5982\u7528\u6237\u63CF\u8FF0\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u9700\u8981toast\u63D0\u793A\uFF0C\u4F60\u4E0D\u5F97\u64C5\u81EA\u8FDB\u884CToast\u63D0\u793A\u3002\n - \u5EF6\u65F6\u6267\u884CAllFunction.setTimeout\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u6E05\u7406timeout\uFF0C\u4EE3\u7801\u4E0A\u7EDD\u5BF9\u4E0D\u80FD\u8FDB\u884CcleaTimeout\u7B49\u7C7B\u4F3C\u64CD\u4F5C\uFF0C\u56E0\u6B64setTimeout\u4E5F\u4E0D\u9700\u8981\u58F0\u660E\u53D8\u91CF\u53BB\u63A5\u6536setTimeout\u8FD4\u56DE\u7684\u5F15\u7528\u3002\n - \u8F6E\u64ADViewPager\u5BF9\u5E94\u7684\u7D22\u5F15\u6307\u793A\u5668\u5BB9\u5668\uFF0C\u8FD9\u4E2A\u7D22\u5F15\u6307\u793A\u5668\u4E0D\u9700\u8981\u989D\u5916\u4EE3\u7801\u5B9E\u73B0\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u672C\u8EABViewPager\u4E0EIndicatorContainer\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u4E86\u5207\u6362\u7684UI\u66F4\u65B0\u903B\u8F91\u7684\u4E86\uFF0C\u53EA\u9700\u8981viewPager.bindIndicator(indicatorContainer)\u5373\u53EF\u3002\n - \u79FB\u52A8\u7AEF\u7684ViewPager\u7684canIndicatorClick\u5C5E\u6027\u9ED8\u8BA4\u8BBE\u7F6E\u4E3Afalse\u7684\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u660E\u9700\u8981\u6FC0\u6D3B\u6307\u793A\u5668\u7684\u70B9\u70B9\u51FB\u5207\u6362ViewPager\u3002\n - \u6BCF\u4E00\u4E2A\u9875\u9762(\u5982loginPage)\u5EFA\u8BAE\u5728page\u6587\u4EF6\u5939\u4E0B\u9762\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6587\u4EF6\u5939(\u5982login)\uFF0C\u7136\u540E\u9875\u9762\u7684ts\u6587\u4EF6(\u5982loginPage.ts)\u521B\u5EFA\u5728\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u9762\uFF0C\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u5982\u679C\u9700\u8981\u8FD8\u53EF\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6570\u636Ets\u6587\u4EF6(\u5982loginPageData.ts)\uFF0C\u8FD9\u6837\u5982loginPage\u8D1F\u8D23\u4E1A\u52A1\u903B\u8F91\u548C\u4EA4\u4E92\u903B\u8F91\uFF0C\u5982loginPageData\u8D1F\u8D23\u6570\u636E\u58F0\u660E\u5B9A\u4E49\u3001\u521D\u59CB\u5316\u4E0E\u7BA1\u7406\u7B49\u3002\n\n## 8. **\u7406\u89E3\u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u8BFB\u53D6'src/backendApi/backendApiInfo.md'\u540E\u7AEFAPI\u4F7F\u7528\u8BF4\u660E\u6587\u4EF6\uFF0C\u5FC5\u987B\u7F13\u5B58\u8BB0\u4F4F\u6240\u6709\u53EF\u7528\u7684\u540E\u7AEFAPI\u63A5\u53E3\u5217\u8868\u3002\n - \u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528\uFF0C\u5FC5\u987B\u4F7F\u7528src/backendApi\u6587\u4EF6\u5939\u91CC\u9762\u7684\u5404\u79CDAPI\u7C7B\u4E2D\u5B9A\u4E49\u7684\u65B9\u6CD5\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528\u672A\u5728backendApi\u6587\u4EF6\u5939\u4E2D\u5B9A\u4E49\u7684\u540E\u7AEFAPI\uFF0C\u6BD4\u5982\uFF1AbackendApi/account/getUserInfo.ts\uFF0C\u8FD9\u4E2A\u5C31\u662F\u8D26\u53F7\u6A21\u5757\u4E2D\u7684\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684API\u7C7B\uFF0C\u8FD4\u56DE\u7684res\u5FC5\u987B\u58F0\u660E\u5177\u4F53\u7C7B\u578B\uFF0C\u6BD4\u5982res: getUserInfoResponse\u3002\n - request\u63A5\u53E3\u53EA\u9700\u5B9A\u4E49\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u5B9E\u73B0\uFF0C\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u3002\n - API\u7C7B\u4EE3\u7801\u793A\u4F8B\uFF1A\n ```typescript\n import BaseApi from '../BaseApi'\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8BF7\u6C42\u6570\u636E\n export interface postClientBizAuthLoginRequest {\n username?: string\n password?: string\n key?: string\n captcha?: string\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\n export interface postClientBizAuthLoginResponse {\n code: number\n msg: string\n data: {\n access_token: string\n }\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u5931\u8D25\u8FD4\u56DE\u6570\u636E\n export interface apiFailInfo {\n msg: string\n code: number\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\n export default class postClientBizAuthLogin extends BaseApi {\n\n public static request_ArtuX1d8a6A(\n request: postClientBizAuthLoginRequest,\n success: (res: postClientBizAuthLoginResponse) => void,\n fail: (error: apiFailInfo) => void\n ): void { }\n\n }\n ```\n - API\u7C7B\u7684\u4F7F\u7528\u65B9\u5F0F\uFF1A\u5148import API\u7C7B\uFF0C\u7136\u540E\u8C03\u7528API\u7C7B\u7684request\u65B9\u6CD5\uFF0C\u6BD4\u5982\uFF1A\n import { postClientBizAuthLogin } from '../../backendApi/account/postClientBizAuthLogin'\n ...\n const request: postClientBizAuthLoginRequest = {\n username: 'admin',\n password: '123456',\n key: '123456',\n captcha: '123456'\n }\n postClientBizAuthLogin.request_ArtuX1d8a6A(request, (response: postClientBizAuthLogoutResponse) => {\n // \u8BF7\u6C42\u6210\u529F\u540E\u7684\u5904\u7406\n }, (error: apiFailInfo) => {\n // \u8BF7\u6C42\u5931\u8D25\u540E\u7684\u5904\u7406\n })\n ...\n\n## 9. **\u7406\u89E3\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\u4E0EUI\u6570\u636E\u7ED1\u5B9A**\n - \u5728\u8C03\u7528\u540E\u7AEFapi\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\u540E\uFF0C\u9700\u8981\u6839\u636Evtype\u6765\u505A\u4E0D\u540C\u7684\u6570\u636E\u7ED1\u5B9A\uFF0C\u6BD4\u5982\uFF1A\n - vtype=\"verticalListView\"\u3001vtype=\"horizontalListView\"\u3001vtype=\"viewPager\"\u7C7B\u578B\u7684\u8282\u70B9\u7EC4\u4EF6\uFF0C\u9700\u8981\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u7ED1\u5B9A\u6570\u636E\uFF0C\u6BD4\u5982\uFF1A\n this.xxxVerticalListView.setDataList(response.data.list)\u3001this.xxxHorizontalListView.setDataList(response.data.list)\u3001this.xxxViewPager.setDataList(response.data.list)\n - vtype=\"listItemCard\"\u3001vtype=\"oneViewPagerContent\"\u7C7B\u578B\u7684\u8282\u70B9\u7EC4\u4EF6\uFF0C\u9700\u8981\u6DF1\u5EA6\u904D\u5386\u5B83\u7684\u7B2C1\u4E2Aitem\u7684\u5B69\u5B50\uFF0C\u7136\u540E\u7ED3\u5408\u540E\u7AEFapi\u8FD4\u56DE\u7684xxxResponse\u7684\u6570\u636E\u7ED3\u6784\u7ED9\u7B2C1\u4E2Aitem\u8BBE\u7F6E\u6570\u636E\uFF0C\u6CE8\u610F\u53EA\u9700\u7ED9\u7B2C1\u4E2Aitem\u8282\u70B9\u8BBE\u7F6E\u6570\u636E\uFF0C\u800C\u4E0D\u662F\u6240\u6709item\u8282\u70B9\u90FD\u8BBE\u7F6E\u6570\u636E\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n // \u540E\u7AEFxxxApi\u8FD4\u56DE\u7684xxxResponse\u6570\u636E\u7ED3\u6784\n export interface getRecommendBookListResponse {\n code: number\n msg: string\n data: {\n list: [\n {\n id: number // \u4E66\u7C4DID\n title: string // \u4E66\u7C4D\u6807\u9898\n author: string // \u4F5C\u8005\u540D\u79F0\n coverUrl: string // \u5C01\u9762\u56FE\u7247URL\n description: string // \u4E66\u7C4D\u7B80\u4ECB\n categoryName: string // \u5206\u7C7B\u540D\u79F0\n }\n ] // \u4E66\u7C4D\u5217\u8868\n total: number // \u603B\u6570\u91CF\n page: number // \u5F53\u524D\u9875\u7801\n size: number // \u6BCF\u9875\u6570\u91CF\n }\n }\n ...\n // \u8BBE\u7F6E\u4E66\u7C4D\u5217\u8868\u6570\u636E\n this.recommendBookList.setDataList(getRecommendBookListResponse.data.list)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n this.recommendBookCover1.src = getRecommendBookListResponse.data.list[0].coverUrl\n this.recommendBookTitle1.text = getRecommendBookListResponse.data.list[0].title\n this.recommendBookAuthor1.text = getRecommendBookListResponse.data.list[0].author\n ...\n // \u8BBE\u7F6E\u8F6E\u64AD\u6570\u636E\n this.recommendViewPager.setDataList(getRecommendBookListResponse.data.list)\n // \u8BBE\u7F6E\u7B2C1\u4E2Aitem\u8282\u70B9\u6570\u636E\n this.recommendImage1.src = getRecommendBookListResponse.data.list[0].coverUrl\n this.carouselTitle1.text = getRecommendBookListResponse.data.list[0].title\n ...\n ```\n\n## 10. \u8F6E\u64ADViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3AViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\u5DF2\u7ECF\u81EA\u52A8\u5B9E\u73B0\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n\n## 11. \u4E25\u683C\u9075\u5B88\u4EE3\u7801\u89C4\u8303\u4E0E\u9650\u5236\n - \u3010\u7C7B\u578B\u4E0E\u6CDB\u578B\u3011\n - \u5728\u7EE7\u627F\u81EA`Page`\u7684\u7C7B\u4E2D\uFF0C\u7981\u6B62\u975E\u9759\u6001\u6210\u5458\u4F7F\u7528DOM\u7C7B\u578B\u6216\u5176\u4ED6\u81EA\u5B9A\u4E49\u7981\u6B62\u7C7B\u578B\u3002\n - \u7981\u6B62\u4F7F\u7528UILIB\u7C7B\u578B\u7684\u6570\u7EC4\u4F5C\u4E3A\u6210\u5458\u3001\u5C40\u90E8\u53D8\u91CF\u3001\u65B9\u6CD5\u5165\u53C2\u6216\u8FD4\u56DE\u503C\u3002\n - \u7981\u6B62\u7C7B\u6210\u5458\u4E0E\u5C40\u90E8\u53D8\u91CF\u663E\u5F0F\u58F0\u660E\u4E3A`any`\uFF0C\u4EE5\u53CA\u4F7F\u7528`as any`\u3002\n - `Ref<T>`\u7684`T`\u4EC5\u5141\u8BB8\uFF1A`number`\u3001`string`\u3001`boolean`\u3001`any`\u3001`Array<any>`\u53CA\u5176`| null`\u53D8\u4F53\u3002\n - \u7981\u6B62\u4F7F\u7528`Symbol`\u53CA\u5176\u76F8\u5173API\u3002\n - \u7981\u6B62\u5168\u5C40\u53D8\u91CF\u3001\u5C40\u90E8\u53D8\u91CF\u3001\u65B9\u6CD5\u5165\u53C2\u3001\u8FD4\u56DE\u503C\u7684\u8054\u5408\u7C7B\u578B\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u58F0\u660E`interface`\uFF0C\u4E14\u8BE5\u6587\u4EF6\u4EC5\u5141\u8BB8\u4E00\u4E2A`class`\u58F0\u660E\u3002\n - \u975E`src/lib`\u76EE\u5F55\u7684`ts`\u6587\u4EF6\u4E2D\uFF0C`interface`\u53EA\u5141\u8BB8\u5B9A\u4E49\u5C5E\u6027\uFF1B\u7981\u6B62\u5176\u4ED6\u58F0\u660E\u3002\n - \u7981\u6B62\u4F7F\u7528`Partial<T>`\u3002\n - \u7981\u6B62\u884C\u5185\u51FD\u6570\u7C7B\u578B\u3001\u51FD\u6570\u7C7B\u578B\u522B\u540D\u4E0E\u5185\u8054\u5BF9\u8C61\u7C7B\u578B\u5B57\u9762\u91CF\uFF08\u5C5E\u6027\u9664\u5916\uFF09\u3002\n - \u7981\u6B62\u5B9A\u4E49\u7C7B\u578B\u5C5E\u4E8EUILIB\u7684\u975E\u7C7B\u6210\u5458\u53D8\u91CF\u3002\n - \u7981\u6B62\u5C06UILIB\u7C7B\u578B\u7684\u503C\u8D4B\u7ED9\u975EUILIB\u7C7B\u578B\u7684\u76EE\u6807\u3002\n - \u3010\u5BFC\u5165\u3011\n - \u5F53\u7C7B\u8DEF\u5F84\u5728`src/lib`\u76EE\u5F55\u4E0B\u65F6\uFF0C\u7981\u6B62\u5BF9\u8FD9\u4E2A\u7C7B\u4F7F\u7528\u5BFC\u5165\u91CD\u547D\u540D\u6216\u522B\u540D\u3002\n - \u3010\u5BFC\u51FA\u3011\n - \u5728\u672A\u7EE7\u627F`Page`\u6216`BaseApi`\u7684\u6587\u4EF6\u4E2D\uFF0C\u4E14\u7C7B\u540D\u4E0D\u7B49\u4E8E`src/lib`\u548C`src/lib/uilib`\u76EE\u5F55\u4E0B\u7684\u7C7B\u540D\u3001\u4E14\u4E0D\u4E3A`Application`\u65F6\uFF0C\u4EC5\u5141\u8BB8`export default class`\u3001`export class`\u3001`export interface`\uFF1B\u7981\u6B62\u5176\u4ED6\u5BFC\u51FA\u5F62\u5F0F\u3002\n - \u3010\u65B9\u6CD5\u4E0E\u51FD\u6570\u3011\n - \u7981\u6B62\u4F7F\u7528`setInterval`\u3001`clearInterval`\u3001`setTimeout`\uFF1B\u4F7F\u7528`AllFunction`\u5BF9\u5E94\u65B9\u6CD5\u3002\n - \u7981\u6B62\u4F7F\u7528`localStorage/sessionStorage`\u7684`setItem/getItem`\uFF1B\u4F7F\u7528`AllFunction`\u6570\u636E\u5E93\u65B9\u6CD5\u3002\n - \u7981\u6B62`Date.now()`\u4E0E`new Date()`\uFF1B\u4F7F\u7528`AllFunction`\u65F6\u95F4\u65B9\u6CD5\u3002\n - \u7981\u6B62\u5728\u51FD\u6570\u5185\u5B9A\u4E49\u5185\u90E8\u51FD\u6570\uFF1B\u8BF7\u5B9A\u4E49\u4E3A\u7C7B\u79C1\u6709\u65B9\u6CD5\u3002\n - \u7981\u6B62`JSON.stringify/JSON.parse`\uFF1B\u6309\u4E0A\u4E0B\u6587\u4F7F\u7528`JsonArray.stringify/parse`\u6216`JsonObject.stringify/parse`\u3002\n - `JsonObject.stringify/parse`\u4E0E`JsonArray.stringify/parse`\u7684\u53C2\u6570\u7981\u6B62\u4F20\u5165`class`\u5BF9\u8C61\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u7C7B\u4E2D\u9759\u6001\u8C03\u7528\u7EE7\u627F`BaseApi`\u7684\u7C7B\u65B9\u6CD5\u65F6\uFF1A\u65B9\u6CD5\u540D\u5FC5\u987B\u5339\u914D`request_<10\u4F4D\u5B57\u6BCD\u6570\u5B57>`\uFF0C\u53C2\u6570\u5FC5\u987B\u4E3A3\u4E2A\uFF0C\u4E14\u7B2C2\u30013\u4E2A\u53C2\u6570\u7C7B\u578B\u4E0D\u5F97\u4E3A`any`\u6216\u6CDB\u578B\u3002\n - \u5728\u7EE7\u627F`BaseApi`\u7684\u7C7B\u4E2D\uFF0C`request_`\u5F00\u5934\u7684\u9759\u6001\u65B9\u6CD5\u540C\u6837\u5FC5\u987B\u6EE1\u8DB3\u547D\u540D\u4E0E3\u53C2\u89C4\u5219\u3002\n - \u7981\u6B62\u65B9\u6CD5\u5185\u5C40\u90E8\u53D8\u91CF\u91CD\u540D\u3002\n - `findViewById`\u4EC5\u5141\u8BB8\u7528\u4E8E\u7C7B\u6210\u5458\u53D8\u91CF\u521D\u59CB\u5316\uFF0C\u5982`this.findViewById('xxx') as <\u5177\u4F53\u7C7B\u578B>`\uFF1B\u5176\u4ED6\u4F4D\u7F6E\u7981\u6B62\u8C03\u7528\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u4F7F\u7528`Array.isArray()`\uFF1B\u4F7F\u7528`AllFunction.isArray()`\u3002\n - \u5728\u672A\u7EE7\u627F`Page`\u6216`BaseApi`\u7684\u7C7B\u4E2D\u7981\u6B62\u58F0\u660E\u65B9\u6CD5\uFF08`constructor`\u9664\u5916\uFF09\uFF1B\u82E5\u7C7B\u540D\u7B49\u4E8E`src/lib`\u548C`src/lib/uilib`\u76EE\u5F55\u4E0B\u7684\u7C7B\u540D\u5219\u4E0D\u53D7\u6B64\u9650\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u7C7B\u4E2D\u8C03\u7528`findViewById`\u65F6\uFF0C\u53C2\u6570\u5FC5\u987B\u5B58\u5728\u4E8E\u540C\u76EE\u5F55\u540C\u540D\u58F0\u660E\u5F0FUI\u7684`.id('...')`\u5217\u8868\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u8C03\u7528`watch`\uFF08\u4F4D\u4E8E`Ref.ts`\uFF09\u65F6\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u5FC5\u987B\u662F\u5B57\u9762\u91CF\u6570\u7EC4`[ref1, ref2]`\uFF0C\u7981\u6B62\u53D8\u91CF\u4F20\u9012\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u5B9A\u4E49UILIB\u7C7B\u578B\u6210\u5458\u53D8\u91CF\u65F6\uFF0C\u5FC5\u987B\u4F7F\u7528`this.findViewById('xxx') as Xxx`\u521D\u59CB\u5316\u3002\n - \u3010\u6570\u7EC4\u65B9\u6CD5\u3011\n - \u7981\u6B62\u4F7F\u7528`map`\u3001`filter`\u3001`find`\u3001`findIndex`\u3001`reduce`\u3001`reduceRight`\u3001`every`\u3001`some`\u3001`sort`\u3001`flatMap`\uFF1B\u7EDF\u4E00\u4F7F\u7528`for-i`\u5B9E\u73B0\u3002\n - \u3010\u8BED\u6CD5\u9650\u5236\u3011\n - \u7981\u6B62\u4F7F\u7528`||`\u8FDB\u884C\u8D4B\u503C\u3001\u4F20\u53C2\u6216\u521D\u59CB\u5316\uFF1B\u6539\u7528\u4E09\u5143\u8868\u8FBE\u5F0F\u3002\n - \u7981\u6B62\u5BF9\u8C61\u5C55\u5F00\u8BED\u6CD5`...`\u514B\u9686\u5BF9\u8C61\uFF1B\u6539\u7528\u624B\u52A8\u8D4B\u503C\u3002\n - \u7981\u6B62\u7C7B\u6210\u5458\u53D8\u91CF\u4E0E\u65B9\u6CD5\u5165\u53C2\u540C\u540D\uFF0C\u6216\u4E0E\u65B9\u6CD5\u5185\u5C40\u90E8\u53D8\u91CF\u540C\u540D\u3002\n - \u7981\u6B62\u4F7F\u7528`try/catch/finally`\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\u7981\u6B62\u4F7F\u7528`typeof`\uFF1B\u6539\u7528`AllFunction.isString/isNumber/isBoolean/isObject`\u3002\n - \u7981\u6B62\u5BF9\u8C61\u5C5E\u6027\u7B80\u5199\uFF08`{ a }`\uFF09\uFF1B\u4F7F\u7528\u5B8C\u6574\u5199\u6CD5\uFF08`{ a: a }`\uFF09\u3002\n - \u5728\u7EE7\u627F`Page`\u7684\u6587\u4EF6\u4E2D\uFF0C\u7981\u6B62\u5BF9UILIB\u7C7B\u578B\u53D8\u91CF\u8FDB\u884C\u771F\u503C\u5224\u65AD\u3002\n - \u3010\u8865\u5145\u7684\u9879\u76EE\u89C4\u5219\u3011\n - \u7981\u6B62\u4F7F\u7528`for...in`\uFF1B\u4F7F\u7528`Object.keys`+`for-i`\u3002\n - \u7981\u6B62`async/Promise`\uFF08\u542B`Promise.race/Promise.all`\uFF09\uFF1B\u6240\u6709\u5F02\u6B65\u64CD\u4F5C\u4F7F\u7528\u7BAD\u5934\u51FD\u6570\u3002\n - \u7981\u6B62\u4F7F\u7528\u6D4F\u89C8\u5668\u73AF\u5883\u7684`lib.dom.d.ts`\u65B9\u6CD5\u4E8ENode\u73AF\u5883\u3002\n - \u7981\u6B62\u4FEE\u6539\u3001\u589E\u5220`src/lib`\u53CA\u5176\u5B50\u76EE\u5F55\u4E2D\u7684\u6587\u4EF6\u3002\n\n";
|
|
2
2
|
//# sourceMappingURL=appCodeRule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appCodeRule.d.ts","sourceRoot":"","sources":["../src/appCodeRule.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,
|
|
1
|
+
{"version":3,"file":"appCodeRule.d.ts","sourceRoot":"","sources":["../src/appCodeRule.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,2u+BAyS9C,CAAC"}
|
package/build/appCodeRule.js
CHANGED
|
@@ -245,44 +245,55 @@ export const understandingCodeFrameworkTemplate = `
|
|
|
245
245
|
|
|
246
246
|
## 10. 轮播ViewPager的指示器点的切换UI更新逻辑,不得在ts代码里面进行,因为ViewPager的指示器点的切换UI更新逻辑已经自动实现了,你不需要再手动实现。
|
|
247
247
|
|
|
248
|
-
## 11.
|
|
249
|
-
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
-
|
|
283
|
-
-
|
|
284
|
-
-
|
|
285
|
-
-
|
|
248
|
+
## 11. 严格遵守代码规范与限制
|
|
249
|
+
- 【类型与泛型】
|
|
250
|
+
- 在继承自\`Page\`的类中,禁止非静态成员使用DOM类型或其他自定义禁止类型。
|
|
251
|
+
- 禁止使用UILIB类型的数组作为成员、局部变量、方法入参或返回值。
|
|
252
|
+
- 禁止类成员与局部变量显式声明为\`any\`,以及使用\`as any\`。
|
|
253
|
+
- \`Ref<T>\`的\`T\`仅允许:\`number\`、\`string\`、\`boolean\`、\`any\`、\`Array<any>\`及其\`| null\`变体。
|
|
254
|
+
- 禁止使用\`Symbol\`及其相关API。
|
|
255
|
+
- 禁止全局变量、局部变量、方法入参、返回值的联合类型。
|
|
256
|
+
- 在继承\`Page\`的文件中禁止声明\`interface\`,且该文件仅允许一个\`class\`声明。
|
|
257
|
+
- 非\`src/lib\`目录的\`ts\`文件中,\`interface\`只允许定义属性;禁止其他声明。
|
|
258
|
+
- 禁止使用\`Partial<T>\`。
|
|
259
|
+
- 禁止行内函数类型、函数类型别名与内联对象类型字面量(属性除外)。
|
|
260
|
+
- 禁止定义类型属于UILIB的非类成员变量。
|
|
261
|
+
- 禁止将UILIB类型的值赋给非UILIB类型的目标。
|
|
262
|
+
- 【导入】
|
|
263
|
+
- 当类路径在\`src/lib\`目录下时,禁止对这个类使用导入重命名或别名。
|
|
264
|
+
- 【导出】
|
|
265
|
+
- 在未继承\`Page\`或\`BaseApi\`的文件中,且类名不等于\`src/lib\`和\`src/lib/uilib\`目录下的类名、且不为\`Application\`时,仅允许\`export default class\`、\`export class\`、\`export interface\`;禁止其他导出形式。
|
|
266
|
+
- 【方法与函数】
|
|
267
|
+
- 禁止使用\`setInterval\`、\`clearInterval\`、\`setTimeout\`;使用\`AllFunction\`对应方法。
|
|
268
|
+
- 禁止使用\`localStorage/sessionStorage\`的\`setItem/getItem\`;使用\`AllFunction\`数据库方法。
|
|
269
|
+
- 禁止\`Date.now()\`与\`new Date()\`;使用\`AllFunction\`时间方法。
|
|
270
|
+
- 禁止在函数内定义内部函数;请定义为类私有方法。
|
|
271
|
+
- 禁止\`JSON.stringify/JSON.parse\`;按上下文使用\`JsonArray.stringify/parse\`或\`JsonObject.stringify/parse\`。
|
|
272
|
+
- \`JsonObject.stringify/parse\`与\`JsonArray.stringify/parse\`的参数禁止传入\`class\`对象。
|
|
273
|
+
- 在继承\`Page\`的类中静态调用继承\`BaseApi\`的类方法时:方法名必须匹配\`request_<10位字母数字>\`,参数必须为3个,且第2、3个参数类型不得为\`any\`或泛型。
|
|
274
|
+
- 在继承\`BaseApi\`的类中,\`request_\`开头的静态方法同样必须满足命名与3参规则。
|
|
275
|
+
- 禁止方法内局部变量重名。
|
|
276
|
+
- \`findViewById\`仅允许用于类成员变量初始化,如\`this.findViewById('xxx') as <具体类型>\`;其他位置禁止调用。
|
|
277
|
+
- 在继承\`Page\`的文件中禁止使用\`Array.isArray()\`;使用\`AllFunction.isArray()\`。
|
|
278
|
+
- 在未继承\`Page\`或\`BaseApi\`的类中禁止声明方法(\`constructor\`除外);若类名等于\`src/lib\`和\`src/lib/uilib\`目录下的类名则不受此限。
|
|
279
|
+
- 在继承\`Page\`的类中调用\`findViewById\`时,参数必须存在于同目录同名声明式UI的\`.id('...')\`列表。
|
|
280
|
+
- 在继承\`Page\`的文件中调用\`watch\`(位于\`Ref.ts\`)时,第一个参数必须是字面量数组\`[ref1, ref2]\`,禁止变量传递。
|
|
281
|
+
- 在继承\`Page\`的文件中定义UILIB类型成员变量时,必须使用\`this.findViewById('xxx') as Xxx\`初始化。
|
|
282
|
+
- 【数组方法】
|
|
283
|
+
- 禁止使用\`map\`、\`filter\`、\`find\`、\`findIndex\`、\`reduce\`、\`reduceRight\`、\`every\`、\`some\`、\`sort\`、\`flatMap\`;统一使用\`for-i\`实现。
|
|
284
|
+
- 【语法限制】
|
|
285
|
+
- 禁止使用\`||\`进行赋值、传参或初始化;改用三元表达式。
|
|
286
|
+
- 禁止对象展开语法\`...\`克隆对象;改用手动赋值。
|
|
287
|
+
- 禁止类成员变量与方法入参同名,或与方法内局部变量同名。
|
|
288
|
+
- 禁止使用\`try/catch/finally\`与正则表达式。
|
|
289
|
+
- 在继承\`Page\`的文件中禁止使用\`typeof\`;改用\`AllFunction.isString/isNumber/isBoolean/isObject\`。
|
|
290
|
+
- 禁止对象属性简写(\`{ a }\`);使用完整写法(\`{ a: a }\`)。
|
|
291
|
+
- 在继承\`Page\`的文件中,禁止对UILIB类型变量进行真值判断。
|
|
292
|
+
- 【补充的项目规则】
|
|
293
|
+
- 禁止使用\`for...in\`;使用\`Object.keys\`+\`for-i\`。
|
|
294
|
+
- 禁止\`async/Promise\`(含\`Promise.race/Promise.all\`);所有异步操作使用箭头函数。
|
|
295
|
+
- 禁止使用浏览器环境的\`lib.dom.d.ts\`方法于Node环境。
|
|
296
|
+
- 禁止修改、增删\`src/lib\`及其子目录中的文件。
|
|
286
297
|
|
|
287
298
|
`;
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZVJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwQ29kZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4UmpELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdW5kZXJzdGFuZGluZ0NvZGVGcmFtZXdvcmtUZW1wbGF0ZSA9IGBcbiMgKirlv4XpobvlhYjnkIbop6Ppobnnm67ku6PnoIHmoYbmnrYxMeS4quefpeivhueCuSoqXG4jIyAxLiAqKueQhuino1ZpZXfnu4Tku7bnmoTlo7DmmI7op4TliJkqKlxuICAtIOi/meS4jeaYr2h0bWzjgIFyZWFjdOetieW8gOWPke+8jOi/meaYr+S4gOS4quaWsOeahOW8gOWPkeahhuaetu+8jOaYr+WfuuS6jnNyYy9saWIvdWlsaWLmlofku7blpLnph4zpnaLnmoRVSee7hOS7tuW6k+adpeW8gOWPkeeahFxuICAtIFZpZXfnu4Tku7bnmoTln7rnsbvmmK9CYXNlVmlld++8jOWuueWZqOWfuuexu+aYr0Jhc2VDb250YWluZXJWaWV377yM5omA5pyJVmlld+e7hOS7tumDvee7p+aJv+iHqkJhc2VWaWV3XG4gIC0g5p+l55yLJ3NyYy9saWIvdWlsaWIvJ+aWh+S7tuWkueS4i+mdoueahOaWh+S7tuWQjeWtl++8jOeQhuino+aAu+WFseacieWkmuWwkeenjVVJ57uE5Lu2XG4gIC0gVmlld+e7hOS7tueahOWjsOaYjuW/hemhu+WcqOexu+aWh+S7tuW8gOWni+aXtuWFiOWjsOaYju+8jOW5tuS4lOW/hemhu+imgeWjsOaYjuWFt+S9k+eahFZpZXfnu4Tku7bnsbvlnovvvIzkuI3lvpflo7DmmI7kuLpCYXNlVmlld++8jOS4jeW+l+WcqOS7u+S9leWHveaVsOS9k+mHjOmdoumAmui/h2ZpbmRWaWV3QnlJZOadpeWjsOaYjlZpZXfnu4Tku7bvvIzmr5TlpoLvvJpcbiAgICAtIOKchSDmraPnoa7nmoTlhpnms5XvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgcHVibGljIGNsYXNzIEhvbWVQYWdlIGV4dGVuZHMgUGFnZSB7XG4gICAgICBwcml2YXRlIG5hbWVUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJZCgnbmFtZVRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICAgIC4uLi5cbiAgICB9XG4gICAgXFxgXFxgXFxgXG4gICAgLSDinYwg6ZSZ6K+v55qE5YaZ5rOV77yI5rKh5pyJ5aOw5YW35L2T55qEVmlld+e7hOS7tuexu+Wei++8ie+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwcml2YXRlIG5hbWVUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlkKCduYW1lVGV4dFZpZXcnKVxuICAgIFxcYFxcYFxcYFxuICAgIC0g4p2MIOmUmeivr+eahOWGmeazle+8iOWcqOWHveaVsOS9k+mHjOmdoumAmui/h2ZpbmRWaWV3QnlJZOadpeWjsOaYjlZpZXfnu4Tku7bvvInvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgcHJpdmF0ZSBvbmVGdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IG5hbWVUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJZCgnbmFtZVRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICAgIC4uLi5cbiAgICB9XG4gICAgXFxgXFxgXFxgXG4gIC0g5omA5pyJVmlld+e7hOS7tueahOmAieS4reeKtuaAgeOAgeiBmueEpueKtuaAgeOAgeemgeeUqOeKtuaAgeeahOWPmOWMlumDveW/hemhu+mAmui/h1xcYHNldFN0YXRpb24oc3RhdGlvbjogVmlld1N0YXRpb24pXFxg5Ye95pWw5p2l6K6+572u77yM5LiN6IO955u05o6l6K6+572u57uE5Lu255qEVUnlsZ7mgKfvvIzlj6rpnIDopoHorr7nva7nu4Tku7bnmoRzdGF0aW9u5bGe5oCn5Y2z5Y+v6Ieq5Yqo5pu05paw57uE5Lu255qEVUnmoLflvI9cbiAgLSDmiYDmnIlWaWV357uE5Lu255qE5pi+56S644CB6ZqQ6JeP5Y2g5L2N44CB6ZqQ6JeP5LiN5Y2g5L2N55qE6K6+572u6YO95b+F6aG75L2/55SoVmlld+eahFxcYHZpc2liaWxpdHlcXGDlsZ7mgKfov5vooYzorr7nva7vvIzkuI3lvpfkvb/nlKhcXGBzdGF0aW9uXFxg5bGe5oCn44CCXG4gIC0g5omA5pyJVmlld+e7hOS7tueahG5vcm1hbOOAgXJlYWRPbmx544CBZm9jdXPjgIFzZWxlY3RlZOOAgWRpc2FibGVk54q25oCB55qE6K6+572u6YO95b+F6aG75L2/55SoVmlld+eahFxcYHN0YXRpb25cXGDlsZ7mgKfov5vooYzorr7nva7jgIJcblxuIyMgMi4gKirnkIbop6PllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c+S7peWPimpzb27nm7jlhbPku6PnoIEqKlxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36ZiF6K+75bm255CG6KejJ3NyYy9saWIvQWxsRnVuY3Rpb24udHMn5paH5Lu277yM55CG6Kej6K+l5bel56iL6IO95L2/55So55qE5ZSv5LiA55qE6IO95Yqb5pa55rOVXG4gIC0g6K+35Lil5qC85oyJ54Wn5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPvvIzkuI3opoHmlrDlop7jgIHliKDpmaTmiJbkv67mlLnku7vkvZVBbGxGdW5jdGlvbuaOpeWPo+WjsOaYju+8m+S5n+S4jeimgeiwg+eUqOWFtuS7luacquWcqEFsbEZ1bmN0aW9u5Lit5Ye6546w55qE5Ye95pWw5oiW5qih5Z2XXG4gIFxuIyMgMy4gKirnkIbop6NSZWbjgIF3YXRjaCoqXG4gIC0gUmVm55qE5pWw5o2u57G75Z6L5Y+q6IO95piv5Lul5LiLNeS4reexu+Wei++8muaVsOWtl+S9v+eUqFJlZjxudW1iZXI+77yM5a2X56ym5Liy5L2/55SoUmVmPHN0cmluZz7vvIzluIPlsJTph4/kvb/nlKhSZWY8Ym9vbGVhbj7vvIzlr7nosaHkvb/nlKhSZWY8YW55Pu+8jOaVsOe7hOS9v+eUqFJlZjxBcnJheTxhbnk+PuaIllJlZjxBcnJheTxhbnk+IHwgbnVsbD7miJZSZWY8YW55W10+5oiWUmVmPGFueVtdIHwgbnVsbD7jgIJcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+mYheivu+W5tueQhuinoydzcmMvbGliL1JlZi50cyfmlofku7bvvIznkIbop6NSZWblkox3YXRjaOeahOWumuS5ieeUqOazlVxuICAtIHdhdGNo5piv55uR5ZCsUmVm55qE5Y+Y5YyW77yM54S25ZCO5YGa55u45YWzVUnmm7TmlrDmiJblhbbku5bkuJrliqHpgLvovpHvvIznrKzkuIDkuKrlj4LmlbDmmK/nm5HlkKznmoRSZWbmlbDnu4TvvIznrKzkuozkuKrlj4LmlbDmmK/nm5HlkKznmoTlm57osIPlh73mlbDvvIzlm57osIPlh73mlbDkuK3lj6/ku6XlgZrnm7jlhbNVSeabtOaWsOaIluWFtuS7luS4muWKoemAu+i+keOAglxuICAtIFJlZuaYr+WTjeW6lOW8j+aVsOaNrua6kO+8jHdhdGNo5piv55uR5ZCsUmVm55qE5Y+Y5YyW77yM54S25ZCO5YGa55u45YWzVUnmm7TmlrDmiJblhbbku5bkuJrliqHpgLvovpHvvIzmr5TlpoLvvJpcbiAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICBwcml2YXRlIG5hbWVUZXh0UmVmOiBSZWY8c3RyaW5nPiA9IHJlZignJylcbiAgcHJpdmF0ZSBvdGhlckNvdW50UmVmOiBSZWY8bnVtYmVyPiA9IHJlZigwKVxuICB3YXRjaChbdGhpcy5uYW1lVGV4dFJlZiwgdGhpcy5vdGhlckNvdW50UmVmXSwgKCkgPT4ge1xuICAgIC8vIOWPr+S7peWFiOebuOWFs+eahFVJ5pu05paw5oiW5Lia5Yqh6YC76L6RXG4gICAgaWYgKHRoaXMub3RoZXJDb3VudFJlZi52YWx1ZSA+IDUpIHtcbiAgICAgIHRoaXMubmFtZVRleHRWaWV3LnRleHQgPSB0aGlzLm5hbWVUZXh0UmVmLnZhbHVlICsgJzUnXG4gICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWVUZXh0Vmlldy50ZXh0ID0gdGhpcy5uYW1lVGV4dFJlZi52YWx1ZSArICcxMCdcbiAgICB9XG4gIH0pXG4gIFxcYFxcYFxcYFxuICAtIFxcYHNyYy9saWIvdWlsaWIvUmVmLnRzXFxg6YeM6Z2i55qEXFxgd2F0Y2hcXGDlh73mlbDvvIznrKzkuIDkuKrlhaXlj4JcXGByZWZzOiBSZWY8VD5bXVxcYOe7neWvueemgeatouWFiOWjsOaYjuWxgHJlZuaVsOe7hOmDqOWPmOmHj+WGjeS8oOWFpe+8jOato+ehrueahOWGmeazleW6lOivpeaYr+ebtOaOpeWGmeaVsOe7hO+8mlxcYFtyZWYxLCByZWYyXVxcYOWwseihjFxuICAtIOKdjCDplJnor6/nmoTlhpnms5XvvJpcbiAgICBcXGBcXGBcXGAgdHlwZXNjcmlwdFxuICAgIGNvbnN0IHJlZkFycmF5ID0gW3JlZjEsIHJlZjJdXG4gICAgd2F0Y2gocmVmQXJyYXksIChuZXdWYWx1ZXM6IFRbXSkgPT4ge1xuICAgICAgICAvLyDnm5HlkKxyZWYx5ZKMcmVmMueahOWPmOWMllxuICAgIH0pXG4gICAgXFxgXFxgXFxgXG4gIC0g4pyFIOato+ehrueahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYCB0eXBlc2NyaXB0XG4gICAgd2F0Y2goW3JlZjEsIHJlZjJdLCAobmV3VmFsdWVzOiBUW10pID0+IHtcbiAgICAgICAgLy8g55uR5ZCscmVmMeWSjHJlZjLnmoTlj5jljJZcbiAgICB9KVxuICAgIFxcYFxcYFxcYFxuXG4jIyA0LiAqKueQhuino3NldERhdGFMaXN05pa55rOV55qE6Z2Z5oCB5pWw5o2u5LiO5Yqo5oCB5pWw5o2u5Zy65pmvKipcbiAgLSDlr7nkuo7liqjmgIHmlbDmja7lrrnlmahWaWV3UGFnZXLjgIFMaXN0Vmlld+eahHNldERhdGFMaXN05pa55rOV77yM5aaC5p6c5pWw5o2u5piv5Yqo5oCB55qE77yM5q+U5aaC77ya5LuO5ZCO56uv5o6l5Y+j6I635Y+W55qE77yM5omN6IO95L2/55Soc2V0RGF0YUxpc3Tmlrnms5XmnaXorr7nva7mlbDmja7jgILpnZnmgIHmlbDmja7lt7Lnu4/lnKhVSemhtemdouS4iuWGmeWlveS6hu+8jOS9oOS4jeW+l+S9v+eUqHNldERhdGFMaXN05pa55rOV5p2l6K6+572u5pWw5o2u44CCXG4gIC0g5Yik5pat5qCH5YeG77ya5aaC5p6cVUnpobXpnaLkuK3lt7Lnu4/mnInlrozmlbTnmoTova7mkq3pobnnm64v5YiX6KGo6aG555uu77yM5bCx5piv6Z2Z5oCB5pWw5o2u77yM5aaC5p6c5piv572R57ucQVBJ6L+U5Zue55qE5pWw5o2u5YiX6KGo5bCx5piv5Yqo5oCB5pWw5o2u44CCXG4gIC0g4pyFIOmdmeaAgeaVsOaNruWuueWZqO+8iFVJ6aG16Z2i5Lit5bey5YaZ5aW95YaF5a6577yJ77ya5LiN5L2/55Soc2V0RGF0YUxpc3QoKVxuICAtIOKchSDliqjmgIHmlbDmja7lrrnlmajvvIjpnIDopoHku45BUEnojrflj5bvvInvvJrmiY3kvb/nlKhzZXREYXRhTGlzdCgpXG5cbiMjIDUuICoqVmlld+e7hOS7tu+8jOeQhuino+avj+S4que7hOS7tuWPr+iDvemHjOmdouW3sue7j+acieS6huWTjeW6lOW8j+aVsOaNrua6kO+8jOWmguaenOe7hOS7tumHjOmdouW3sue7j+acieS6huWTjeW6lOW8j+aVsOaNrua6kO+8jOmCo+S5iOS9oOS4jeW+l+WGjeiHquW3seWIm+W7unJlZuWPmOmHj+aIluiAheS9v+eUqG9uU2VsZWN0Q2hhbmdl562J5Zue6LCD6Kem5Y+RVUnmm7TmlrAqKlxuICAtIOS+i+WtkO+8mlZpZXdQYWdlcueahGN1cnJlbnRTZWxlY3RJbmRleOWSjGN1cnJlbnRTZWxlY3RJbmRleFJlZuWxnuaAp+W3sue7j+aYr+WTjeW6lOW8j+aVsOaNrua6kO+8jOWPr+S7peebtOaOpeS9v+eUqGN1cnJlbnRTZWxlY3RJbmRleFJlZuadpee7keWumuiHquWKqOabtOaWsFVJ44CCXG4gICAgcHVibGljIGluaXRWaWV3KCkge1xuICAgICAgdGhpcy5zaG93SW5kZXhUZXh0Vmlldy50ZXh0ID0gdGhpcy52aWV3UGFnZXIuY3VycmVudFNlbGVjdEluZGV4UmVmLnZhbHVlICsgMSArICcvJyArIHRoaXMudmlld1BhZ2VyLmRhdGFMaXN0Lmxlbmd0aFxuICAgIH1cbiAgLSDkvovlrZDvvJpWaWV3UGFnZXLnmoRjdXJyZW50U2VsZWN0SW5kZXjlkoxjdXJyZW50U2VsZWN0SW5kZXhSZWblsZ7mgKflt7Lnu4/mmK/lk43lupTlvI/mlbDmja7mupDvvIzlj6/ku6Xnm7TmjqXkvb/nlKhjdXJyZW50U2VsZWN0SW5kZXhSZWbmnaXnu5Hlrproh6rliqjmm7TmlrBVSe+8jOavlOWmgu+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwdWJsaWMgaW5pdFZpZXcoKSB7XG4gICAgICB3YXRjaChbdGhpcy52aWV3UGFnZXIuY3VycmVudFNlbGVjdEluZGV4UmVmXSwgKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dJbmRleFRleHRWaWV3LnRleHQgPSB0aGlzLnZpZXdQYWdlci5jdXJyZW50U2VsZWN0SW5kZXhSZWYudmFsdWUgKyAxICsgJy8nICsgdGhpcy52aWV3UGFnZXIuZGF0YUxpc3QubGVuZ3RoXG4gICAgICB9KVxuICAgIFxcYFxcYFxcYFxuICAtIHRhYue7hOS7tuWSjOi9ruaSree7hOS7tueahOmAieaLqeWPmOWMluebkeWQrO+8jOW/hemhu+S9v+eUqFxcYFZpZXdQYWdlclxcYOaIllxcYFRhYkNvbnRhaW5lclxcYOeahFxcYG9uU2VsZWN0Q2hhbmdlKGZ1bmM6IChpdGVtOiBhbnksIHBvc2l0aW9uOiBudW1iZXIpID0+IHZvaWQpXFxg5Ye95pWw5p2l55uR5ZCs6YCJ5oup5Y+Y5YyWXG5cbiMjIDYuICoq55CG6Kej6aG16Z2i6Lez6L2sKipcbiAgLSDpobXpnaLot7Povazlv4Xpobvkvb/nlKhBbGxGdW5jdGlvbi5zdGFydFBhZ2Xlrp7njrDvvIxzdGFydFBhZ2XkvKDlhaVQYWdl55qE5a2Q57G75a+56LGh77yM5aaC77yaQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBQcm9kdWN0UGFnZSh0aGlzLnByb2R1Y3RJRCkp44CCXG4gIC0g4p2MIOmhtemdoui3s+i9rOS4jemcgOiAg+iZkeaooeWdl+WMluOAgeW+queOr+S+nei1luOAgea4kOi/m+W8j+W8gOWPke+8jOe7neWvueemgeatouWxj+iUvemhtemdoui3s+i9rOeahOS7o+egge+8jOaJgOaciemhtemdoumDveW3sue7j+WtmOWcqO+8jOS4jeS8muWHuueOsOe8luivkeWHuumUmeeahO+8jOW/hemhu+aYjuehruWGmeS4iumhtemdoui3s+i9rOeahOS7o+eggeWSjOebruagh+mhtemdouaJgOmcgOeahOi3s+i9rOWPguaVsOOAglxuICAtIOWcqEFwcGxpY2F0aW9uLnRz6K6+572u6Lez6L2s5ZCv5Yqo6aG177yM5q+U5aaC77yaXHRcbiAgICAvLyDlupTnlKjnvZHnq5nlkK/liqjml7blm57osIPnmoTnrKzkuIDkuKrlh73mlbDvvIznlKjkuo7liJ3lp4vljJbkuIDkupvlhajlsYDnmoTkuJzopb/jgIJcbiAgICBwcm90ZWN0ZWQgb25BcHBsaWNhdGlvbkNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgIEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgU3BsYXNoUGFnZSgpKVxuICAgIH1cbiAgLSDinIUg5byV5YWl5YW25LuW57G75Y+q5YWB6K645LiA56eN5YaZ5rOV77ya5Zyo57G75paH5Lu26aG26YOo6L+b6KGMaW1wb3J077yaaW1wb3J0IEd1aWRlUGFnZSBmcm9tICcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJ+OAglxuICAtIOKdjCDnu53lr7nnpoHmraLkvb/nlKjliqjmgIFpbXBvcnTnmoTlhpnms5XvvIznqIvluo/lupXlsYLlt7Lnu4/lpITnkIblpb3lvqrnjq/kvp3otZbpl67popjkuobvvIzkvaDkuI3pnIDopoHogIPomZHvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJpcbiAgICAgICAgLy8g5L2/55So5Yqo5oCB5a+85YWl6YG/5YWN5b6q546v5L6d6LWWXG4gICAgICAgIGltcG9ydCgnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZScpLnRoZW4oKHsgZGVmYXVsdDogR3VpZGVQYWdlIH0pID0+IHtcbiAgICAgICAgICAgIEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgR3VpZGVQYWdlKCkpXG4gICAgICAgIH0pXG4gIC0g4p2MIOe7neWvueemgeatouS9v+eUqHJlcXVpcmXnmoTlhpnms5XvvIznqIvluo/lupXlsYLlt7Lnu4/lpITnkIblpb3lvqrnjq/kvp3otZbpl67popjkuobvvIzkvaDkuI3pnIDopoHogIPomZHvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJpcbiAgICAgICAgcmVxdWlyZSgnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZScpLmRlZmF1bHRcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV5piv77yaQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBHdWlkZVBhZ2UoKSnjgILnhLblkI7lnKjnsbvmlofku7bpobbpg6jov5vooYxpbXBvcnTvvJppbXBvcnQgR3VpZGVQYWdlIGZyb20gJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2Un44CCXG4gIC0g5aaC5p6c6aG16Z2i6Lez6L2s6ZyA6KaB5Lyg6YCS5Y+C5pWw77yM6YKj5LmI6ZyA6KaB5L2/55SoUGFnZeeahOWtkOexu+aehOmAoOWHveaVsOadpeS8oOmAkuWPguaVsO+8jOavlOWmgu+8mkFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgR3VpZGVQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcbiAgLSDlnKjlrp7njrDpobXpnaLot7Povazku6PnoIHnmoTml7blgJnvvIzlv4XpobvkuKXmoLzmjInnhafku6XkuIvkuInmraXmnaXlrp7njrDvvJpcbiAgICAgIC0gKirnrKzkuIDmraXvvJrlhYjliIbmnpDot7PovaznmoTnm67moIfpobXpnaLpnIDopoHkvKDpgJLlk6rkupvlj4LmlbAqKlxuICAgICAgLSAqKuesrOS6jOatpe+8muS/ruaUueebruagh+mhtemdouaehOmAoOWHveaVsCoq77yaXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICBleHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkaW5nUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgICAgICAgIHByaXZhdGUgYm9va0lkOiBudW1iZXJcbiAgICAgICAgICBwcml2YXRlIGNoYXB0ZXJUaXRsZTogc3RyaW5nXG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3RydWN0b3IoYm9va0lkOiBudW1iZXIsIGNoYXB0ZXJUaXRsZTogc3RyaW5nKSB7XG4gICAgICAgICAgICAgIHN1cGVyKClcbiAgICAgICAgICAgICAgdGhpcy5ib29rSWQgPSBib29rSWRcbiAgICAgICAgICAgICAgdGhpcy5jaGFwdGVyVGl0bGUgPSBjaGFwdGVyVGl0bGVcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICBcXGBcXGBcXGBcbiAgICAgIC0gKirnrKzkuInmraXvvJrkv67mlLnot7Povazku6PnoIEqKlxuICAgICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgICAgY29uc3QgYm9va0RhdGEgPSB0aGlzLnJlYWRpbmdIaXN0b3J5RGF0YVJlZi52YWx1ZVswXVxuICAgICAgQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBSZWFkaW5nUGFnZShib29rRGF0YS5pZCwgYm9va0RhdGEuY2hhcHRlclRpdGxlKSlcbiAgICAgIFxcYFxcYFxcYFxuXG4jIyA3LiAqKueQhuino+WfuuehgOW8gOWPkeinhOWImSoqXG4gIC0gbGli5paH5Lu25aS56YeM6Z2i55qE5Luj56CB5paH5Lu26YO95piv5YaF572u5qGG5p625Luj56CB77yM57ud5a+556aB5q2i5a+5bGli5paH5Lu25aS555qE5Luj56CB6L+b6KGM5aKe5Yig5pS55pON5L2cXG4gIC0g5omA5pyJUGFnZeeahOWtkOexu++8jOmDveWFgeiuuOa3u+WKoOaehOmAoOWHveaVsOWSjOaehOmAoOWHveaVsOeahOWPguaVsO+8jOi/meS6m+WPguaVsOWwseeUqOadpemhtemdoui3s+i9rOaXtumhtemdouS5i+mXtOS8oOmAkuaVsOaNruS9v+eUqO+8jOavlOWmgu+8muWVhuWTgeWIl+ihqOmhtVByb2plY3RMaXN0UGFnZei3s+WIsOWVhuWTgeivpuaDhemhtVByb2plY3REZXRhaWxQYWdl77yM6YKj5LmIUHJvamVjdExpc3RQYWdl5bqU6K+l6KaB5Lyg57uZUHJvamVjdERldGFpbFBhZ2XkuIDkuKrlj4LmlbDvvJpwcm9kdWN0SUTjgILmiYDku6XvvIxQcm9qZWN0RGV0YWlsUGFnZeeahOmhtemdouWPguaVsOWjsOaYjuWSjOaehOmAoOWHveaVsOW6lOivpeaYr+i/meagt+WGme+8mlxuICAgIHByaXZhdGUgcHJvZHVjdElEOiBzdHJpbmdcbiAgICBjb25zdHJ1Y3Rvcihwcm9kdWN0SUQ6IHN0cmluZykge1xuICAgICAgc3VwZXIoKVxuICAgICAgdGhpcy5wcm9kdWN0SUQgPSBwcm9kdWN0SURcbiAgICB944CCXG4gIC0g5Lu75L2V6aG16Z2i77yI54m55Yir5piv6Zeq5bGP6aG177yJ55qE5Lia5Yqh6YC76L6R57ud5a+55LiN6IO95pS+5YiwQXBwbGljYXRpb24udHPov5vooYzlpITnkIbvvIxBcHBsaWNhdGlvbi50c+WPqui/m+ihjOWFqOWxgOe9kee7nOaLpuaIquWkhOeQhuOAgeWFqOWxgOmdmeaAgeWPmOmHj+OAgeWFqOWxgOmdmeaAgeaWueazleeahOWumuS5ieWSjOWunueOsFxuICAtIOWmguaenOaYr+WkmuS4qumhtemdouWFseeUqOeahOaVsOaNruWPmOmHj++8jOWPr+S7peiAg+iZkeWjsOaYjuS4uuWFqOWxgOmdmeaAgeWPmOmHj++8jOW5tuWcqEFwcGxpY2F0aW9uLnRz5Lit6L+b6KGM5aOw5piO44CCXG4gIC0g5YWo5bGA6Z2Z5oCB5Y+Y6YeP5Zyo5YWz6ZetQVBQ5oiW6ICF572R6aG15ZCO5Lya5riF55CG5o6J55qE77yM5omA5Lul5L2g6KaB5oCd6ICD5riF5qWa5ZOq5Lqb5pWw5o2u5Y+Y6YeP6ZyA6KaB5oyB5LmF5YyW5YKo5a2Y77yM5ZOq5Lqb5piv5YWo5bGA6Z2Z5oCB5Y+Y6YeP77yM5oyB5LmF5YyW5o6l5Y+j77yac2F2ZURhdGFiYXNlWHh45ZKMZ2V0RGF0YWJhc2VEYXRhWHh477yM5q+U5aaC5piv5ZCm5bey57uP5by55Ye66L+H5bm/5ZGK5by55qGG77yM6L+Z5Liq5bqU6K+l5oyB5LmF5YyW5YKo5a2Y44CCXG4gIC0g5omA5pyJ55qE572R57uc5oum5oiq55qE5YWo5bGA57uf5LiA5aSE55CG6ZyA6KaB5ZyoQXBwbGljYXRpb27kuK3nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHQo6IGU572R5oiQ5Yqf5ZCO77yM5ZCO56uv5Lia5Yqh5q2j56Gu5LiO6ZSZ6K+v6YO95Lya5Zue6LCD5Yiw6L+Z6YeM77yM5omA5Lul5Zyo6L+Z6YeM5Y+v57uf5LiA5aSE55CG5Lia5Yqh6ZSZ6K+v56CBKeaIlm9uR2xvYmFsTmV0RmFpbEludGVyY2VwdCjnvZHnu5zkuI3pgJrvvIzov57mjqXlpLHotKXmg4XlhrXkvJrlm57osIPliLDov5nph4wp6YeM6Z2i5aSE55CG44CCXG4gIC0g6aG16Z2i5YaF55qE572R57uc6K+35rGC5Lia5Yqh5aSE55CG5LiN5b6X5YaZ5ZyoQXBwbGljYXRpb27nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHTph4zpnaLjgIJcbiAgLSDlo7DmmI7lhajlsYDlj5jph4/jgIHlsYDpg6jlj5jph4/lv4XpobvopoHlo7DmmI7mlbDmja7nsbvlnovvvIzlubbkuJTnu53lr7nnpoHmraLkvb/nlKhhbnnvvIzor7fkvb/nlKjlhbfkvZPnsbvlnovmnaXlo7DmmI5cbiAgLSDlrZfnrKbkuLLkuI3lvpfnm7TmjqXov5vooYxib29sZWFu6L+Q566X54S25ZCO6LWL5YC857uZYm9vbGVhbuexu+Wei+eahOWPmOmHj++8jOmcgOimgeWcqOWtl+espuS4suWJjemdoua3u+WKoOS4pOS4qumdnui/kOeul++8miEh44CC5q+U5aaC5q2j56Gu55qE5YaZ5rOV77yaY29uc3QgaXNBZGQgPSAhIXRoaXMuaW5wdXRWaWV3LnRleHQgJiYgaXNOZXdcbiAgLSDmiYDmnInnmoR0b2FzdOaPkOekuu+8jOW/hemhu+iwg+eUqEFsbEZ1bmN0aW9uLnNob3dUb2FzdOaWueazleadpeaYvuekuu+8jOW5tuS4lOWmgueUqOaIt+aPj+i/sOayoeacieaYjuehruivtOaYjumcgOimgXRvYXN05o+Q56S677yM5L2g5LiN5b6X5pOF6Ieq6L+b6KGMVG9hc3Tmj5DnpLrjgIJcbiAgLSDlu7bml7bmiafooYxBbGxGdW5jdGlvbi5zZXRUaW1lb3V057O757uf5Lya6Ieq5Yqo5riF55CGdGltZW91dO+8jOS7o+eggeS4iue7neWvueS4jeiDvei/m+ihjGNsZWFUaW1lb3V0562J57G75Ly85pON5L2c77yM5Zug5q2kc2V0VGltZW91dOS5n+S4jemcgOimgeWjsOaYjuWPmOmHj+WOu+aOpeaUtnNldFRpbWVvdXTov5Tlm57nmoTlvJXnlKjjgIJcbiAgLSDova7mkq1WaWV3UGFnZXLlr7nlupTnmoTntKLlvJXmjIfnpLrlmajlrrnlmajvvIzov5nkuKrntKLlvJXmjIfnpLrlmajkuI3pnIDopoHpop3lpJbku6PnoIHlrp7njrDmjIfnpLrlmajngrnnmoTliIfmjaJVSeabtOaWsOmAu+i+ke+8jOacrOi6q1ZpZXdQYWdlcuS4jkluZGljYXRvckNvbnRhaW5lcuW6leWxguW3sue7j+WunueOsOS6huWIh+aNoueahFVJ5pu05paw6YC76L6R55qE5LqG77yM5Y+q6ZyA6KaBdmlld1BhZ2VyLmJpbmRJbmRpY2F0b3IoaW5kaWNhdG9yQ29udGFpbmVyKeWNs+WPr+OAglxuICAtIOenu+WKqOerr+eahFZpZXdQYWdlcueahGNhbkluZGljYXRvckNsaWNr5bGe5oCn6buY6K6k6K6+572u5Li6ZmFsc2XnmoTvvIzpmaTpnZ7nlKjmiLfmmI7noa7or7TmmI7pnIDopoHmv4DmtLvmjIfnpLrlmajnmoTngrnngrnlh7vliIfmjaJWaWV3UGFnZXLjgIJcbiAgLSDmr4/kuIDkuKrpobXpnaIo5aaCbG9naW5QYWdlKeW7uuiuruWcqHBhZ2Xmlofku7blpLnkuIvpnaLliJvlu7rkuIDkuKrpobXpnaLmlofku7blpLko5aaCbG9naW4p77yM54S25ZCO6aG16Z2i55qEdHPmlofku7Yo5aaCbG9naW5QYWdlLnRzKeWIm+W7uuWcqOmhtemdouaWh+S7tuWkueS4i+mdou+8jOmhtemdouaWh+S7tuWkueS4i+WmguaenOmcgOimgei/mOWPr+WIm+W7uuS4gOS4qumhtemdouaVsOaNrnRz5paH5Lu2KOWmgmxvZ2luUGFnZURhdGEudHMp77yM6L+Z5qC35aaCbG9naW5QYWdl6LSf6LSj5Lia5Yqh6YC76L6R5ZKM5Lqk5LqS6YC76L6R77yM5aaCbG9naW5QYWdlRGF0Yei0n+i0o+aVsOaNruWjsOaYjuWumuS5ieOAgeWIneWni+WMluS4jueuoeeQhuetieOAglxuXG4jIyA4LiAqKueQhuino+WQjuerr0FQSeaOpeWPo+eahOWumuS5ieS4juS9v+eUqCoqXG4gIC0g5L2/55SoJ3JlYWRfZmlsZSflt6Xlhbfor7vlj5Ync3JjL2JhY2tlbmRBcGkvYmFja2VuZEFwaUluZm8ubWQn5ZCO56uvQVBJ5L2/55So6K+05piO5paH5Lu277yM5b+F6aG757yT5a2Y6K6w5L2P5omA5pyJ5Y+v55So55qE5ZCO56uvQVBJ5o6l5Y+j5YiX6KGo44CCXG4gIC0g5ZCO56uvQVBJ5o6l5Y+j55qE5a6a5LmJ5LiO5L2/55So77yM5b+F6aG75L2/55Soc3JjL2JhY2tlbmRBcGnmlofku7blpLnph4zpnaLnmoTlkITnp41BUEnnsbvkuK3lrprkuYnnmoTmlrnms5XvvIzkuI3lhYHorrjkvb/nlKjmnKrlnKhiYWNrZW5kQXBp5paH5Lu25aS55Lit5a6a5LmJ55qE5ZCO56uvQVBJ77yM5q+U5aaC77yaYmFja2VuZEFwaS9hY2NvdW50L2dldFVzZXJJbmZvLnRz77yM6L+Z5Liq5bCx5piv6LSm5Y+35qih5Z2X5Lit55qE6I635Y+W55So5oi35L+h5oGv55qEQVBJ57G777yM6L+U5Zue55qEcmVz5b+F6aG75aOw5piO5YW35L2T57G75Z6L77yM5q+U5aaCcmVzOiBnZXRVc2VySW5mb1Jlc3BvbnNl44CCXG4gIC0gcmVxdWVzdOaOpeWPo+WPqumcgOWumuS5ieWNs+WPr++8jOS4jemcgOimgeWunueOsO+8jOW6leWxguW3sue7j+WunueOsOOAglxuICAtIEFQSeexu+S7o+eggeekuuS+i++8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBpbXBvcnQgQmFzZUFwaSBmcm9tICcuLi9CYXNlQXBpJ1xuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo+ivt+axguaVsOaNrlxuICAgIGV4cG9ydCBpbnRlcmZhY2UgcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3Qge1xuICAgICAgICB1c2VybmFtZT86IHN0cmluZ1xuICAgICAgICBwYXNzd29yZD86IHN0cmluZ1xuICAgICAgICBrZXk/OiBzdHJpbmdcbiAgICAgICAgY2FwdGNoYT86IHN0cmluZ1xuICAgIH1cblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6Pov5Tlm57mlbDmja5cbiAgICBleHBvcnQgaW50ZXJmYWNlIHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXNwb25zZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICBtc2c6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgIGFjY2Vzc190b2tlbjogc3RyaW5nXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j5aSx6LSl6L+U5Zue5pWw5o2uXG4gICAgZXhwb3J0IGludGVyZmFjZSBhcGlGYWlsSW5mbyB7XG4gICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgIGNvZGU6IG51bWJlclxuICAgIH1cblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6NcbiAgICBleHBvcnQgZGVmYXVsdCBjbGFzcyBwb3N0Q2xpZW50Qml6QXV0aExvZ2luIGV4dGVuZHMgQmFzZUFwaSAge1xuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVxdWVzdF9BcnR1WDFkOGE2QShcbiAgICAgICAgICAgIHJlcXVlc3Q6IHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXF1ZXN0LFxuICAgICAgICAgICAgc3VjY2VzczogKHJlczogcG9zdENsaWVudEJpekF1dGhMb2dpblJlc3BvbnNlKSA9PiB2b2lkLFxuICAgICAgICAgICAgZmFpbDogKGVycm9yOiBhcGlGYWlsSW5mbykgPT4gdm9pZFxuICAgICAgICApOiB2b2lkIHsgfVxuXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAtIEFQSeexu+eahOS9v+eUqOaWueW8j++8muWFiGltcG9ydCBBUEnnsbvvvIznhLblkI7osIPnlKhBUEnnsbvnmoRyZXF1ZXN05pa55rOV77yM5q+U5aaC77yaXG4gICAgaW1wb3J0IHsgcG9zdENsaWVudEJpekF1dGhMb2dpbiB9IGZyb20gJy4uLy4uL2JhY2tlbmRBcGkvYWNjb3VudC9wb3N0Q2xpZW50Qml6QXV0aExvZ2luJ1xuICAgIC4uLlxuICAgIGNvbnN0IHJlcXVlc3Q6IHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXF1ZXN0ID0ge1xuICAgICAgdXNlcm5hbWU6ICdhZG1pbicsXG4gICAgICBwYXNzd29yZDogJzEyMzQ1NicsXG4gICAgICBrZXk6ICcxMjM0NTYnLFxuICAgICAgY2FwdGNoYTogJzEyMzQ1NidcbiAgICB9XG4gICAgcG9zdENsaWVudEJpekF1dGhMb2dpbi5yZXF1ZXN0X0FydHVYMWQ4YTZBKHJlcXVlc3QsIChyZXNwb25zZTogcG9zdENsaWVudEJpekF1dGhMb2dvdXRSZXNwb25zZSkgPT4ge1xuICAgICAgLy8g6K+35rGC5oiQ5Yqf5ZCO55qE5aSE55CGXG4gICAgfSwgKGVycm9yOiBhcGlGYWlsSW5mbykgPT4ge1xuICAgICAgLy8g6K+35rGC5aSx6LSl5ZCO55qE5aSE55CGXG4gICAgfSlcbiAgICAuLi5cblxuIyMgOS4gKirnkIbop6PosIPnlKjlkI7nq69hcGnmjqXlj6Pov5Tlm57mlbDmja7lkI7kuI5VSeaVsOaNrue7keWumioqXG4gIC0g5Zyo6LCD55So5ZCO56uvYXBp5o6l5Y+j6L+U5Zue5pWw5o2u5ZCO77yM6ZyA6KaB5qC55o2udnR5cGXmnaXlgZrkuI3lkIznmoTmlbDmja7nu5HlrprvvIzmr5TlpoLvvJpcbiAgICAtIHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CBdnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgXZ0eXBlPVwidmlld1BhZ2VyXCLnsbvlnovnmoToioLngrnnu4Tku7bvvIzpnIDopoHkvb/nlKhzZXREYXRhTGlzdOaWueazleadpee7keWumuaVsOaNru+8jOavlOWmgu+8mlxuICAgICAgdGhpcy54eHhWZXJ0aWNhbExpc3RWaWV3LnNldERhdGFMaXN0KHJlc3BvbnNlLmRhdGEubGlzdCnjgIF0aGlzLnh4eEhvcml6b250YWxMaXN0Vmlldy5zZXREYXRhTGlzdChyZXNwb25zZS5kYXRhLmxpc3Qp44CBdGhpcy54eHhWaWV3UGFnZXIuc2V0RGF0YUxpc3QocmVzcG9uc2UuZGF0YS5saXN0KVxuICAgIC0gdnR5cGU9XCJsaXN0SXRlbUNhcmRcIuOAgXZ0eXBlPVwib25lVmlld1BhZ2VyQ29udGVudFwi57G75Z6L55qE6IqC54K557uE5Lu277yM6ZyA6KaB5rex5bqm6YGN5Y6G5a6D55qE56ysMeS4qml0ZW3nmoTlranlrZDvvIznhLblkI7nu5PlkIjlkI7nq69hcGnov5Tlm57nmoR4eHhSZXNwb25zZeeahOaVsOaNrue7k+aehOe7meesrDHkuKppdGVt6K6+572u5pWw5o2u77yM5rOo5oSP5Y+q6ZyA57uZ56ysMeS4qml0ZW3oioLngrnorr7nva7mlbDmja7vvIzogIzkuI3mmK/miYDmnIlpdGVt6IqC54K56YO96K6+572u5pWw5o2u77yM5q+U5aaC77yaXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICAvLyDlkI7nq694eHhBcGnov5Tlm57nmoR4eHhSZXNwb25zZeaVsOaNrue7k+aehFxuICAgICAgZXhwb3J0IGludGVyZmFjZSBnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlIHtcbiAgICAgICAgICBjb2RlOiBudW1iZXJcbiAgICAgICAgICBtc2c6IHN0cmluZ1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgbGlzdDogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBudW1iZXIgLy8g5Lmm57GNSURcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RyaW5nIC8vIOS5puexjeagh+mimFxuICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcjogc3RyaW5nIC8vIOS9nOiAheWQjeensFxuICAgICAgICAgICAgICAgICAgICAgIGNvdmVyVXJsOiBzdHJpbmcgLy8g5bCB6Z2i5Zu+54mHVVJMXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyAvLyDkuabnsY3nroDku4tcbiAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWU6IHN0cmluZyAvLyDliIbnsbvlkI3np7BcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSAvLyDkuabnsY3liJfooahcbiAgICAgICAgICAgICAgdG90YWw6IG51bWJlciAvLyDmgLvmlbDph49cbiAgICAgICAgICAgICAgcGFnZTogbnVtYmVyIC8vIOW9k+WJjemhteeggVxuICAgICAgICAgICAgICBzaXplOiBudW1iZXIgLy8g5q+P6aG15pWw6YePXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgLi4uXG4gICAgICAvLyDorr7nva7kuabnsY3liJfooajmlbDmja5cbiAgICAgIHRoaXMucmVjb21tZW5kQm9va0xpc3Quc2V0RGF0YUxpc3QoZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZS5kYXRhLmxpc3QpXG4gICAgICAvLyDorr7nva7nrKwx5LiqaXRlbeiKgueCueaVsOaNrlxuICAgICAgdGhpcy5yZWNvbW1lbmRCb29rQ292ZXIxLnNyYyA9IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UuZGF0YS5saXN0WzBdLmNvdmVyVXJsXG4gICAgICB0aGlzLnJlY29tbWVuZEJvb2tUaXRsZTEudGV4dCA9IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UuZGF0YS5saXN0WzBdLnRpdGxlXG4gICAgICB0aGlzLnJlY29tbWVuZEJvb2tBdXRob3IxLnRleHQgPSBnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlLmRhdGEubGlzdFswXS5hdXRob3JcbiAgICAgIC4uLlxuICAgICAgLy8g6K6+572u6L2u5pKt5pWw5o2uXG4gICAgICB0aGlzLnJlY29tbWVuZFZpZXdQYWdlci5zZXREYXRhTGlzdChnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlLmRhdGEubGlzdClcbiAgICAgIC8vIOiuvue9ruesrDHkuKppdGVt6IqC54K55pWw5o2uXG4gICAgICB0aGlzLnJlY29tbWVuZEltYWdlMS5zcmMgPSBnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlLmRhdGEubGlzdFswXS5jb3ZlclVybFxuICAgICAgdGhpcy5jYXJvdXNlbFRpdGxlMS50ZXh0ID0gZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZS5kYXRhLmxpc3RbMF0udGl0bGVcbiAgICAgIC4uLlxuICAgICAgXFxgXFxgXFxgXG5cbiMjIDEwLiDova7mkq1WaWV3UGFnZXLnmoTmjIfnpLrlmajngrnnmoTliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS4jeW+l+WcqHRz5Luj56CB6YeM6Z2i6L+b6KGM77yM5Zug5Li6Vmlld1BhZ2Vy55qE5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHlt7Lnu4/oh6rliqjlrp7njrDkuobvvIzkvaDkuI3pnIDopoHlho3miYvliqjlrp7njrDjgIJcblxuIyMgMTEuIOemgeeUqOS7peS4izbnp43ku6PnoIHlhpnms5Vcbi0gMeOAgeemgeatouWcqOWHveaVsOmHjOmdouWumuS5ieWGhemDqOWHveaVsO+8jOW/hemhu+WumuS5ieWHveaVsOS4uuWFqOWxgOWHveaVsFxuICAtIOKdjCDplJnor6/nmoTlhpnms5XvvJpcbiAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICBwcml2YXRlIGluaXRWaWV3KCk6IHZvaWQge1xuICAgICAgY29uc3QgY291bnRDYXJkRGF0YTogbnVtYmVyID0gKCkgPT4ge1xuICAgICAgICAgIC8vIHh4eOS7o+eggVxuICAgICAgfVxuICAgICAgY29uc3QgY291bnQgPSBjb3VudENhcmREYXRhKClcbiAgfVxuICBcXGBcXGBcXGBcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV5piv77yaXG4gIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgcHJpdmF0ZSBpbml0VmlldygpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy5jb3VudENhcmREYXRhKClcbiAgfVxuICBwcml2YXRlIGNvdW50Q2FyZERhdGEoKTogbnVtYmVyIHtcbiAgICAvLyB4eHjku6PnoIFcbiAgfVxuICBcXGBcXGBcXGBcbi0gMuOAgeemgeatouS9v+eUqGZvci5pbuW+queOr++8jOW/hemhu+S9v+eUqGZvcmnlvqrnjq/nmoTlhpnms5XvvIzpgqPkuYjlsLHpnIDopoHnu5PlkIhPYmplY3Qua2V5cyh4eHgp5p2l5YWI6I635Y+W5Yiw5a+56LGh55qEa2V5c++8jOWGjWZvcmnpgY3ljoblr7nosaHlsZ7mgKdcbiAgLSDinYwg6ZSZ6K+v55qE5YaZ5rOV77yaXG4gIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgZm9yIChjb25zdCBrZXkgaW4gaG90UmV2aWV3T2JqKSB7XG4gICAgICB1cGRhdGVkUmV2aWV3W2tleV0gPSBob3RSZXZpZXdPYmpba2V5XTtcbiAgfVxuICBcXGBcXGBcXGBcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV5piv77yaXG4gIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGhvdFJldmlld3NEYXRhKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB1cGRhdGVkUmV2aWV3W2tleV0gPSBob3RSZXZpZXdzRGF0YVtrZXlzW2ldXTtcbiAgfVxuICBcXGBcXGBcXGBcbi0gM+OAgeS7u+S9leaWueazleWHveaVsOWumuS5ie+8jOe7neWvueemgeatouS9v+eUqGFzeW5j5ZKMUHJvbWlzZe+8jOS4jeWFgeiuuOS9v+eUqFByb21pc2UucmFjZeOAgVByb21pc2UuYWxs562JUHJvbWlzZeebuOWFs+aWueazle+8jOaJgOacieW8guatpeaTjeS9nOW/hemhu+S9v+eUqOeureWktOWHveaVsOOAglxuLSA044CB56aB5q2i5L2/55So5q2j5YiZ77yM6K+35L2/55So5a2X56ym5Liy5pON5L2c5p2l5pu/5o2i5a6e546wXG4tIDXjgIHnpoHmraLkvb/nlKhsaWIuZG9tLmQudHPmlofku7bph4zpnaLnmoTmlrnms5XvvIzlm6DkuLpsaWIuZG9tLmQudHPmlofku7bph4zpnaLnmoTmlrnms5Xpg73mmK/mtY/op4jlmajnjq/looPnmoTmlrnms5XvvIzkuI3lhYHorrjlnKhOb2RlLmpz546v5aKD5LiL5L2/55So44CCXG4tIDbjgIHnpoHmraLkv67mlLnjgIHmlrDlop7jgIHliKDpmaRzcmMvbGli5paH5Lu25aS55Y+K5YW25omA5pyJ5a2Q5paH5Lu25aS55Lit55qE5paH5Lu244CCXG5cbmA7XG4iXX0=
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZVJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwQ29kZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlTakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB1bmRlcnN0YW5kaW5nQ29kZUZyYW1ld29ya1RlbXBsYXRlID0gYFxuIyAqKuW/hemhu+WFiOeQhuino+mhueebruS7o+eggeahhuaetjEx5Liq55+l6K+G54K5KipcbiMjIDEuICoq55CG6KejVmlld+e7hOS7tueahOWjsOaYjuinhOWImSoqXG4gIC0g6L+Z5LiN5pivaHRtbOOAgXJlYWN0562J5byA5Y+R77yM6L+Z5piv5LiA5Liq5paw55qE5byA5Y+R5qGG5p6277yM5piv5Z+65LqOc3JjL2xpYi91aWxpYuaWh+S7tuWkuemHjOmdoueahFVJ57uE5Lu25bqT5p2l5byA5Y+R55qEXG4gIC0gVmlld+e7hOS7tueahOWfuuexu+aYr0Jhc2VWaWV377yM5a655Zmo5Z+657G75pivQmFzZUNvbnRhaW5lclZpZXfvvIzmiYDmnIlWaWV357uE5Lu26YO957un5om/6IeqQmFzZVZpZXdcbiAgLSDmn6XnnIsnc3JjL2xpYi91aWxpYi8n5paH5Lu25aS55LiL6Z2i55qE5paH5Lu25ZCN5a2X77yM55CG6Kej5oC75YWx5pyJ5aSa5bCR56eNVUnnu4Tku7ZcbiAgLSBWaWV357uE5Lu255qE5aOw5piO5b+F6aG75Zyo57G75paH5Lu25byA5aeL5pe25YWI5aOw5piO77yM5bm25LiU5b+F6aG76KaB5aOw5piO5YW35L2T55qEVmlld+e7hOS7tuexu+Wei++8jOS4jeW+l+WjsOaYjuS4ukJhc2VWaWV377yM5LiN5b6X5Zyo5Lu75L2V5Ye95pWw5L2T6YeM6Z2i6YCa6L+HZmluZFZpZXdCeUlk5p2l5aOw5piOVmlld+e7hOS7tu+8jOavlOWmgu+8mlxuICAgIC0g4pyFIOato+ehrueahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwdWJsaWMgY2xhc3MgSG9tZVBhZ2UgZXh0ZW5kcyBQYWdlIHtcbiAgICAgIHByaXZhdGUgbmFtZVRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlkKCduYW1lVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgICAgLi4uLlxuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgICAtIOKdjCDplJnor6/nmoTlhpnms5XvvIjmsqHmnInlo7DlhbfkvZPnmoRWaWV357uE5Lu257G75Z6L77yJ77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHByaXZhdGUgbmFtZVRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SWQoJ25hbWVUZXh0VmlldycpXG4gICAgXFxgXFxgXFxgXG4gICAgLSDinYwg6ZSZ6K+v55qE5YaZ5rOV77yI5Zyo5Ye95pWw5L2T6YeM6Z2i6YCa6L+HZmluZFZpZXdCeUlk5p2l5aOw5piOVmlld+e7hOS7tu+8ie+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwcml2YXRlIG9uZUZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgbmFtZVRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlkKCduYW1lVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgICAgLi4uLlxuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgLSDmiYDmnIlWaWV357uE5Lu255qE6YCJ5Lit54q25oCB44CB6IGa54Sm54q25oCB44CB56aB55So54q25oCB55qE5Y+Y5YyW6YO95b+F6aG76YCa6L+HXFxgc2V0U3RhdGlvbihzdGF0aW9uOiBWaWV3U3RhdGlvbilcXGDlh73mlbDmnaXorr7nva7vvIzkuI3og73nm7TmjqXorr7nva7nu4Tku7bnmoRVSeWxnuaAp++8jOWPqumcgOimgeiuvue9rue7hOS7tueahHN0YXRpb27lsZ7mgKfljbPlj6/oh6rliqjmm7TmlrDnu4Tku7bnmoRVSeagt+W8j1xuICAtIOaJgOaciVZpZXfnu4Tku7bnmoTmmL7npLrjgIHpmpDol4/ljaDkvY3jgIHpmpDol4/kuI3ljaDkvY3nmoTorr7nva7pg73lv4Xpobvkvb/nlKhWaWV355qEXFxgdmlzaWJpbGl0eVxcYOWxnuaAp+i/m+ihjOiuvue9ru+8jOS4jeW+l+S9v+eUqFxcYHN0YXRpb25cXGDlsZ7mgKfjgIJcbiAgLSDmiYDmnIlWaWV357uE5Lu255qEbm9ybWFs44CBcmVhZE9ubHnjgIFmb2N1c+OAgXNlbGVjdGVk44CBZGlzYWJsZWTnirbmgIHnmoTorr7nva7pg73lv4Xpobvkvb/nlKhWaWV355qEXFxgc3RhdGlvblxcYOWxnuaAp+i/m+ihjOiuvue9ruOAglxuXG4jIyAyLiAqKueQhuino+WUr+S4gOeahOiDveWKm+aWueazlUFsbEZ1bmN0aW9uLnRz5Lul5Y+KanNvbuebuOWFs+S7o+eggSoqXG4gIC0g5L2/55SoJ3JlYWRfZmlsZSflt6XlhbfpmIXor7vlubbnkIbop6Mnc3JjL2xpYi9BbGxGdW5jdGlvbi50cyfmlofku7bvvIznkIbop6Por6Xlt6XnqIvog73kvb/nlKjnmoTllK/kuIDnmoTog73lipvmlrnms5VcbiAgLSDor7fkuKXmoLzmjInnhafllK/kuIDnmoTog73lipvmlrnms5VBbGxGdW5jdGlvbi50c++8jOS4jeimgeaWsOWinuOAgeWIoOmZpOaIluS/ruaUueS7u+S9lUFsbEZ1bmN0aW9u5o6l5Y+j5aOw5piO77yb5Lmf5LiN6KaB6LCD55So5YW25LuW5pyq5ZyoQWxsRnVuY3Rpb27kuK3lh7rnjrDnmoTlh73mlbDmiJbmqKHlnZdcbiAgXG4jIyAzLiAqKueQhuino1JlZuOAgXdhdGNoKipcbiAgLSBSZWbnmoTmlbDmja7nsbvlnovlj6rog73mmK/ku6XkuIs15Lit57G75Z6L77ya5pWw5a2X5L2/55SoUmVmPG51bWJlcj7vvIzlrZfnrKbkuLLkvb/nlKhSZWY8c3RyaW5nPu+8jOW4g+WwlOmHj+S9v+eUqFJlZjxib29sZWFuPu+8jOWvueixoeS9v+eUqFJlZjxhbnk+77yM5pWw57uE5L2/55SoUmVmPEFycmF5PGFueT4+5oiWUmVmPEFycmF5PGFueT4gfCBudWxsPuaIllJlZjxhbnlbXT7miJZSZWY8YW55W10gfCBudWxsPuOAglxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36ZiF6K+75bm255CG6KejJ3NyYy9saWIvUmVmLnRzJ+aWh+S7tu+8jOeQhuino1JlZuWSjHdhdGNo55qE5a6a5LmJ55So5rOVXG4gIC0gd2F0Y2jmmK/nm5HlkKxSZWbnmoTlj5jljJbvvIznhLblkI7lgZrnm7jlhbNVSeabtOaWsOaIluWFtuS7luS4muWKoemAu+i+ke+8jOesrOS4gOS4quWPguaVsOaYr+ebkeWQrOeahFJlZuaVsOe7hO+8jOesrOS6jOS4quWPguaVsOaYr+ebkeWQrOeahOWbnuiwg+WHveaVsO+8jOWbnuiwg+WHveaVsOS4reWPr+S7peWBmuebuOWFs1VJ5pu05paw5oiW5YW25LuW5Lia5Yqh6YC76L6R44CCXG4gIC0gUmVm5piv5ZON5bqU5byP5pWw5o2u5rqQ77yMd2F0Y2jmmK/nm5HlkKxSZWbnmoTlj5jljJbvvIznhLblkI7lgZrnm7jlhbNVSeabtOaWsOaIluWFtuS7luS4muWKoemAu+i+ke+8jOavlOWmgu+8mlxuICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gIHByaXZhdGUgbmFtZVRleHRSZWY6IFJlZjxzdHJpbmc+ID0gcmVmKCcnKVxuICBwcml2YXRlIG90aGVyQ291bnRSZWY6IFJlZjxudW1iZXI+ID0gcmVmKDApXG4gIHdhdGNoKFt0aGlzLm5hbWVUZXh0UmVmLCB0aGlzLm90aGVyQ291bnRSZWZdLCAoKSA9PiB7XG4gICAgLy8g5Y+v5Lul5YWI55u45YWz55qEVUnmm7TmlrDmiJbkuJrliqHpgLvovpFcbiAgICBpZiAodGhpcy5vdGhlckNvdW50UmVmLnZhbHVlID4gNSkge1xuICAgICAgdGhpcy5uYW1lVGV4dFZpZXcudGV4dCA9IHRoaXMubmFtZVRleHRSZWYudmFsdWUgKyAnNSdcbiAgICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmFtZVRleHRWaWV3LnRleHQgPSB0aGlzLm5hbWVUZXh0UmVmLnZhbHVlICsgJzEwJ1xuICAgIH1cbiAgfSlcbiAgXFxgXFxgXFxgXG4gIC0gXFxgc3JjL2xpYi91aWxpYi9SZWYudHNcXGDph4zpnaLnmoRcXGB3YXRjaFxcYOWHveaVsO+8jOesrOS4gOS4quWFpeWPglxcYHJlZnM6IFJlZjxUPltdXFxg57ud5a+556aB5q2i5YWI5aOw5piO5bGAcmVm5pWw57uE6YOo5Y+Y6YeP5YaN5Lyg5YWl77yM5q2j56Gu55qE5YaZ5rOV5bqU6K+l5piv55u05o6l5YaZ5pWw57uE77yaXFxgW3JlZjEsIHJlZjJdXFxg5bCx6KGMXG4gIC0g4p2MIOmUmeivr+eahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYCB0eXBlc2NyaXB0XG4gICAgY29uc3QgcmVmQXJyYXkgPSBbcmVmMSwgcmVmMl1cbiAgICB3YXRjaChyZWZBcnJheSwgKG5ld1ZhbHVlczogVFtdKSA9PiB7XG4gICAgICAgIC8vIOebkeWQrHJlZjHlkoxyZWYy55qE5Y+Y5YyWXG4gICAgfSlcbiAgICBcXGBcXGBcXGBcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgIHR5cGVzY3JpcHRcbiAgICB3YXRjaChbcmVmMSwgcmVmMl0sIChuZXdWYWx1ZXM6IFRbXSkgPT4ge1xuICAgICAgICAvLyDnm5HlkKxyZWYx5ZKMcmVmMueahOWPmOWMllxuICAgIH0pXG4gICAgXFxgXFxgXFxgXG5cbiMjIDQuICoq55CG6Kejc2V0RGF0YUxpc3Tmlrnms5XnmoTpnZnmgIHmlbDmja7kuI7liqjmgIHmlbDmja7lnLrmma8qKlxuICAtIOWvueS6juWKqOaAgeaVsOaNruWuueWZqFZpZXdQYWdlcuOAgUxpc3RWaWV355qEc2V0RGF0YUxpc3Tmlrnms5XvvIzlpoLmnpzmlbDmja7mmK/liqjmgIHnmoTvvIzmr5TlpoLvvJrku47lkI7nq6/mjqXlj6Pojrflj5bnmoTvvIzmiY3og73kvb/nlKhzZXREYXRhTGlzdOaWueazleadpeiuvue9ruaVsOaNruOAgumdmeaAgeaVsOaNruW3sue7j+WcqFVJ6aG16Z2i5LiK5YaZ5aW95LqG77yM5L2g5LiN5b6X5L2/55Soc2V0RGF0YUxpc3Tmlrnms5XmnaXorr7nva7mlbDmja7jgIJcbiAgLSDliKTmlq3moIflh4bvvJrlpoLmnpxVSemhtemdouS4reW3sue7j+acieWujOaVtOeahOi9ruaSremhueebri/liJfooajpobnnm67vvIzlsLHmmK/pnZnmgIHmlbDmja7vvIzlpoLmnpzmmK/nvZHnu5xBUEnov5Tlm57nmoTmlbDmja7liJfooajlsLHmmK/liqjmgIHmlbDmja7jgIJcbiAgLSDinIUg6Z2Z5oCB5pWw5o2u5a655Zmo77yIVUnpobXpnaLkuK3lt7Llhpnlpb3lhoXlrrnvvInvvJrkuI3kvb/nlKhzZXREYXRhTGlzdCgpXG4gIC0g4pyFIOWKqOaAgeaVsOaNruWuueWZqO+8iOmcgOimgeS7jkFQSeiOt+WPlu+8ie+8muaJjeS9v+eUqHNldERhdGFMaXN0KClcblxuIyMgNS4gKipWaWV357uE5Lu277yM55CG6Kej5q+P5Liq57uE5Lu25Y+v6IO96YeM6Z2i5bey57uP5pyJ5LqG5ZON5bqU5byP5pWw5o2u5rqQ77yM5aaC5p6c57uE5Lu26YeM6Z2i5bey57uP5pyJ5LqG5ZON5bqU5byP5pWw5o2u5rqQ77yM6YKj5LmI5L2g5LiN5b6X5YaN6Ieq5bex5Yib5bu6cmVm5Y+Y6YeP5oiW6ICF5L2/55Sob25TZWxlY3RDaGFuZ2XnrYnlm57osIPop6blj5FVSeabtOaWsCoqXG4gIC0g5L6L5a2Q77yaVmlld1BhZ2Vy55qEY3VycmVudFNlbGVjdEluZGV45ZKMY3VycmVudFNlbGVjdEluZGV4UmVm5bGe5oCn5bey57uP5piv5ZON5bqU5byP5pWw5o2u5rqQ77yM5Y+v5Lul55u05o6l5L2/55SoY3VycmVudFNlbGVjdEluZGV4UmVm5p2l57uR5a6a6Ieq5Yqo5pu05pawVUnjgIJcbiAgICBwdWJsaWMgaW5pdFZpZXcoKSB7XG4gICAgICB0aGlzLnNob3dJbmRleFRleHRWaWV3LnRleHQgPSB0aGlzLnZpZXdQYWdlci5jdXJyZW50U2VsZWN0SW5kZXhSZWYudmFsdWUgKyAxICsgJy8nICsgdGhpcy52aWV3UGFnZXIuZGF0YUxpc3QubGVuZ3RoXG4gICAgfVxuICAtIOS+i+WtkO+8mlZpZXdQYWdlcueahGN1cnJlbnRTZWxlY3RJbmRleOWSjGN1cnJlbnRTZWxlY3RJbmRleFJlZuWxnuaAp+W3sue7j+aYr+WTjeW6lOW8j+aVsOaNrua6kO+8jOWPr+S7peebtOaOpeS9v+eUqGN1cnJlbnRTZWxlY3RJbmRleFJlZuadpee7keWumuiHquWKqOabtOaWsFVJ77yM5q+U5aaC77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHB1YmxpYyBpbml0VmlldygpIHtcbiAgICAgIHdhdGNoKFt0aGlzLnZpZXdQYWdlci5jdXJyZW50U2VsZWN0SW5kZXhSZWZdLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0luZGV4VGV4dFZpZXcudGV4dCA9IHRoaXMudmlld1BhZ2VyLmN1cnJlbnRTZWxlY3RJbmRleFJlZi52YWx1ZSArIDEgKyAnLycgKyB0aGlzLnZpZXdQYWdlci5kYXRhTGlzdC5sZW5ndGhcbiAgICAgIH0pXG4gICAgXFxgXFxgXFxgXG4gIC0gdGFi57uE5Lu25ZKM6L2u5pKt57uE5Lu255qE6YCJ5oup5Y+Y5YyW55uR5ZCs77yM5b+F6aG75L2/55SoXFxgVmlld1BhZ2VyXFxg5oiWXFxgVGFiQ29udGFpbmVyXFxg55qEXFxgb25TZWxlY3RDaGFuZ2UoZnVuYzogKGl0ZW06IGFueSwgcG9zaXRpb246IG51bWJlcikgPT4gdm9pZClcXGDlh73mlbDmnaXnm5HlkKzpgInmi6nlj5jljJZcblxuIyMgNi4gKirnkIbop6PpobXpnaLot7PovawqKlxuICAtIOmhtemdoui3s+i9rOW/hemhu+S9v+eUqEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZeWunueOsO+8jHN0YXJ0UGFnZeS8oOWFpVBhZ2XnmoTlrZDnsbvlr7nosaHvvIzlpoLvvJpBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IFByb2R1Y3RQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcbiAgLSDinYwg6aG16Z2i6Lez6L2s5LiN6ZyA6ICD6JmR5qih5Z2X5YyW44CB5b6q546v5L6d6LWW44CB5riQ6L+b5byP5byA5Y+R77yM57ud5a+556aB5q2i5bGP6JS96aG16Z2i6Lez6L2s55qE5Luj56CB77yM5omA5pyJ6aG16Z2i6YO95bey57uP5a2Y5Zyo77yM5LiN5Lya5Ye6546w57yW6K+R5Ye66ZSZ55qE77yM5b+F6aG75piO56Gu5YaZ5LiK6aG16Z2i6Lez6L2s55qE5Luj56CB5ZKM55uu5qCH6aG16Z2i5omA6ZyA55qE6Lez6L2s5Y+C5pWw44CCXG4gIC0g5ZyoQXBwbGljYXRpb24udHPorr7nva7ot7PovazlkK/liqjpobXvvIzmr5TlpoLvvJpcdFxuICAgIC8vIOW6lOeUqOe9keermeWQr+WKqOaXtuWbnuiwg+eahOesrOS4gOS4quWHveaVsO+8jOeUqOS6juWIneWni+WMluS4gOS6m+WFqOWxgOeahOS4nOilv+OAglxuICAgIHByb3RlY3RlZCBvbkFwcGxpY2F0aW9uQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBTcGxhc2hQYWdlKCkpXG4gICAgfVxuICAtIOKchSDlvJXlhaXlhbbku5bnsbvlj6rlhYHorrjkuIDnp43lhpnms5XvvJrlnKjnsbvmlofku7bpobbpg6jov5vooYxpbXBvcnTvvJppbXBvcnQgR3VpZGVQYWdlIGZyb20gJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2Un44CCXG4gIC0g4p2MIOe7neWvueemgeatouS9v+eUqOWKqOaAgWltcG9ydOeahOWGmeazle+8jOeoi+W6j+W6leWxguW3sue7j+WkhOeQhuWlveW+queOr+S+nei1lumXrumimOS6hu+8jOS9oOS4jemcgOimgeiAg+iZke+8jOavlOWmgue7neWvueemgeatouS7peS4i+WGmeazle+8mlxuICAgICAgICAvLyDkvb/nlKjliqjmgIHlr7zlhaXpgb/lhY3lvqrnjq/kvp3otZZcbiAgICAgICAgaW1wb3J0KCcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJykudGhlbigoeyBkZWZhdWx0OiBHdWlkZVBhZ2UgfSkgPT4ge1xuICAgICAgICAgICAgQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBHdWlkZVBhZ2UoKSlcbiAgICAgICAgfSlcbiAgLSDinYwg57ud5a+556aB5q2i5L2/55SocmVxdWlyZeeahOWGmeazle+8jOeoi+W6j+W6leWxguW3sue7j+WkhOeQhuWlveW+queOr+S+nei1lumXrumimOS6hu+8jOS9oOS4jemcgOimgeiAg+iZke+8jOavlOWmgue7neWvueemgeatouS7peS4i+WGmeazle+8mlxuICAgICAgICByZXF1aXJlKCcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJykuZGVmYXVsdFxuICAtIOKchSDmraPnoa7nmoTlhpnms5XmmK/vvJpBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IEd1aWRlUGFnZSgpKeOAgueEtuWQjuWcqOexu+aWh+S7tumhtumDqOi/m+ihjGltcG9ydO+8mmltcG9ydCBHdWlkZVBhZ2UgZnJvbSAnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZSfjgIJcbiAgLSDlpoLmnpzpobXpnaLot7PovazpnIDopoHkvKDpgJLlj4LmlbDvvIzpgqPkuYjpnIDopoHkvb/nlKhQYWdl55qE5a2Q57G75p6E6YCg5Ye95pWw5p2l5Lyg6YCS5Y+C5pWw77yM5q+U5aaC77yaQWxsRnVuY3Rpb24uc3RhcnRQYWdlKG5ldyBHdWlkZVBhZ2UodGhpcy5wcm9kdWN0SUQpKeOAglxuICAtIOWcqOWunueOsOmhtemdoui3s+i9rOS7o+eggeeahOaXtuWAme+8jOW/hemhu+S4peagvOaMieeFp+S7peS4i+S4ieatpeadpeWunueOsO+8mlxuICAgICAgLSAqKuesrOS4gOatpe+8muWFiOWIhuaekOi3s+i9rOeahOebruagh+mhtemdoumcgOimgeS8oOmAkuWTquS6m+WPguaVsCoqXG4gICAgICAtICoq56ys5LqM5q2l77ya5L+u5pS555uu5qCH6aG16Z2i5p6E6YCg5Ye95pWwKirvvJpcbiAgICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICAgIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRpbmdQYWdlIGV4dGVuZHMgUGFnZSB7XG4gICAgICAgICAgcHJpdmF0ZSBib29rSWQ6IG51bWJlclxuICAgICAgICAgIHByaXZhdGUgY2hhcHRlclRpdGxlOiBzdHJpbmdcbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdHJ1Y3Rvcihib29rSWQ6IG51bWJlciwgY2hhcHRlclRpdGxlOiBzdHJpbmcpIHtcbiAgICAgICAgICAgICAgc3VwZXIoKVxuICAgICAgICAgICAgICB0aGlzLmJvb2tJZCA9IGJvb2tJZFxuICAgICAgICAgICAgICB0aGlzLmNoYXB0ZXJUaXRsZSA9IGNoYXB0ZXJUaXRsZVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxcYFxcYFxcYFxuICAgICAgLSAqKuesrOS4ieatpe+8muS/ruaUuei3s+i9rOS7o+eggSoqXG4gICAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgICBjb25zdCBib29rRGF0YSA9IHRoaXMucmVhZGluZ0hpc3RvcnlEYXRhUmVmLnZhbHVlWzBdXG4gICAgICBBbGxGdW5jdGlvbi5zdGFydFBhZ2UobmV3IFJlYWRpbmdQYWdlKGJvb2tEYXRhLmlkLCBib29rRGF0YS5jaGFwdGVyVGl0bGUpKVxuICAgICAgXFxgXFxgXFxgXG5cbiMjIDcuICoq55CG6Kej5Z+656GA5byA5Y+R6KeE5YiZKipcbiAgLSBsaWLmlofku7blpLnph4zpnaLnmoTku6PnoIHmlofku7bpg73mmK/lhoXnva7moYbmnrbku6PnoIHvvIznu53lr7nnpoHmraLlr7lsaWLmlofku7blpLnnmoTku6PnoIHov5vooYzlop7liKDmlLnmk43kvZxcbiAgLSDmiYDmnIlQYWdl55qE5a2Q57G777yM6YO95YWB6K645re75Yqg5p6E6YCg5Ye95pWw5ZKM5p6E6YCg5Ye95pWw55qE5Y+C5pWw77yM6L+Z5Lqb5Y+C5pWw5bCx55So5p2l6aG16Z2i6Lez6L2s5pe26aG16Z2i5LmL6Ze05Lyg6YCS5pWw5o2u5L2/55So77yM5q+U5aaC77ya5ZWG5ZOB5YiX6KGo6aG1UHJvamVjdExpc3RQYWdl6Lez5Yiw5ZWG5ZOB6K+m5oOF6aG1UHJvamVjdERldGFpbFBhZ2XvvIzpgqPkuYhQcm9qZWN0TGlzdFBhZ2XlupTor6XopoHkvKDnu5lQcm9qZWN0RGV0YWlsUGFnZeS4gOS4quWPguaVsO+8mnByb2R1Y3RJROOAguaJgOS7pe+8jFByb2plY3REZXRhaWxQYWdl55qE6aG16Z2i5Y+C5pWw5aOw5piO5ZKM5p6E6YCg5Ye95pWw5bqU6K+l5piv6L+Z5qC35YaZ77yaXG4gICAgcHJpdmF0ZSBwcm9kdWN0SUQ6IHN0cmluZ1xuICAgIGNvbnN0cnVjdG9yKHByb2R1Y3RJRDogc3RyaW5nKSB7XG4gICAgICBzdXBlcigpXG4gICAgICB0aGlzLnByb2R1Y3RJRCA9IHByb2R1Y3RJRFxuICAgIH3jgIJcbiAgLSDku7vkvZXpobXpnaLvvIjnibnliKvmmK/pl6rlsY/pobXvvInnmoTkuJrliqHpgLvovpHnu53lr7nkuI3og73mlL7liLBBcHBsaWNhdGlvbi50c+i/m+ihjOWkhOeQhu+8jEFwcGxpY2F0aW9uLnRz5Y+q6L+b6KGM5YWo5bGA572R57uc5oum5oiq5aSE55CG44CB5YWo5bGA6Z2Z5oCB5Y+Y6YeP44CB5YWo5bGA6Z2Z5oCB5pa55rOV55qE5a6a5LmJ5ZKM5a6e546wXG4gIC0g5aaC5p6c5piv5aSa5Liq6aG16Z2i5YWx55So55qE5pWw5o2u5Y+Y6YeP77yM5Y+v5Lul6ICD6JmR5aOw5piO5Li65YWo5bGA6Z2Z5oCB5Y+Y6YeP77yM5bm25ZyoQXBwbGljYXRpb24udHPkuK3ov5vooYzlo7DmmI7jgIJcbiAgLSDlhajlsYDpnZnmgIHlj5jph4/lnKjlhbPpl61BUFDmiJbogIXnvZHpobXlkI7kvJrmuIXnkIbmjonnmoTvvIzmiYDku6XkvaDopoHmgJ3ogIPmuIXmpZrlk6rkupvmlbDmja7lj5jph4/pnIDopoHmjIHkuYXljJblgqjlrZjvvIzlk6rkupvmmK/lhajlsYDpnZnmgIHlj5jph4/vvIzmjIHkuYXljJbmjqXlj6PvvJpzYXZlRGF0YWJhc2VYeHjlkoxnZXREYXRhYmFzZURhdGFYeHjvvIzmr5TlpoLmmK/lkKblt7Lnu4/lvLnlh7rov4flub/lkYrlvLnmoYbvvIzov5nkuKrlupTor6XmjIHkuYXljJblgqjlrZjjgIJcbiAgLSDmiYDmnInnmoTnvZHnu5zmi6bmiKrnmoTlhajlsYDnu5/kuIDlpITnkIbpnIDopoHlnKhBcHBsaWNhdGlvbuS4reeahG9uR2xvYmFsTmV0U3VjY2Vzc0ludGVyY2VwdCjogZTnvZHmiJDlip/lkI7vvIzlkI7nq6/kuJrliqHmraPnoa7kuI7plJnor6/pg73kvJrlm57osIPliLDov5nph4zvvIzmiYDku6XlnKjov5nph4zlj6/nu5/kuIDlpITnkIbkuJrliqHplJnor6/noIEp5oiWb25HbG9iYWxOZXRGYWlsSW50ZXJjZXB0KOe9kee7nOS4jemAmu+8jOi/nuaOpeWksei0peaDheWGteS8muWbnuiwg+WIsOi/memHjCnph4zpnaLlpITnkIbjgIJcbiAgLSDpobXpnaLlhoXnmoTnvZHnu5zor7fmsYLkuJrliqHlpITnkIbkuI3lvpflhpnlnKhBcHBsaWNhdGlvbueahG9uR2xvYmFsTmV0U3VjY2Vzc0ludGVyY2VwdOmHjOmdouOAglxuICAtIOWjsOaYjuWFqOWxgOWPmOmHj+OAgeWxgOmDqOWPmOmHj+W/hemhu+imgeWjsOaYjuaVsOaNruexu+Wei++8jOW5tuS4lOe7neWvueemgeatouS9v+eUqGFuee+8jOivt+S9v+eUqOWFt+S9k+exu+Wei+adpeWjsOaYjlxuICAtIOWtl+espuS4suS4jeW+l+ebtOaOpei/m+ihjGJvb2xlYW7ov5DnrpfnhLblkI7otYvlgLznu5lib29sZWFu57G75Z6L55qE5Y+Y6YeP77yM6ZyA6KaB5Zyo5a2X56ym5Liy5YmN6Z2i5re75Yqg5Lik5Liq6Z2e6L+Q566X77yaISHjgILmr5TlpoLmraPnoa7nmoTlhpnms5XvvJpjb25zdCBpc0FkZCA9ICEhdGhpcy5pbnB1dFZpZXcudGV4dCAmJiBpc05ld1xuICAtIOaJgOacieeahHRvYXN05o+Q56S677yM5b+F6aG76LCD55SoQWxsRnVuY3Rpb24uc2hvd1RvYXN05pa55rOV5p2l5pi+56S677yM5bm25LiU5aaC55So5oi35o+P6L+w5rKh5pyJ5piO56Gu6K+05piO6ZyA6KaBdG9hc3Tmj5DnpLrvvIzkvaDkuI3lvpfmk4Xoh6rov5vooYxUb2FzdOaPkOekuuOAglxuICAtIOW7tuaXtuaJp+ihjEFsbEZ1bmN0aW9uLnNldFRpbWVvdXTns7vnu5/kvJroh6rliqjmuIXnkIZ0aW1lb3V077yM5Luj56CB5LiK57ud5a+55LiN6IO96L+b6KGMY2xlYVRpbWVvdXTnrYnnsbvkvLzmk43kvZzvvIzlm6DmraRzZXRUaW1lb3V05Lmf5LiN6ZyA6KaB5aOw5piO5Y+Y6YeP5Y675o6l5pS2c2V0VGltZW91dOi/lOWbnueahOW8leeUqOOAglxuICAtIOi9ruaSrVZpZXdQYWdlcuWvueW6lOeahOe0ouW8leaMh+ekuuWZqOWuueWZqO+8jOi/meS4que0ouW8leaMh+ekuuWZqOS4jemcgOimgemineWkluS7o+eggeWunueOsOaMh+ekuuWZqOeCueeahOWIh+aNolVJ5pu05paw6YC76L6R77yM5pys6LqrVmlld1BhZ2Vy5LiOSW5kaWNhdG9yQ29udGFpbmVy5bqV5bGC5bey57uP5a6e546w5LqG5YiH5o2i55qEVUnmm7TmlrDpgLvovpHnmoTkuobvvIzlj6rpnIDopoF2aWV3UGFnZXIuYmluZEluZGljYXRvcihpbmRpY2F0b3JDb250YWluZXIp5Y2z5Y+v44CCXG4gIC0g56e75Yqo56uv55qEVmlld1BhZ2Vy55qEY2FuSW5kaWNhdG9yQ2xpY2vlsZ7mgKfpu5jorqTorr7nva7kuLpmYWxzZeeahO+8jOmZpOmdnueUqOaIt+aYjuehruivtOaYjumcgOimgea/gOa0u+aMh+ekuuWZqOeahOeCueeCueWHu+WIh+aNolZpZXdQYWdlcuOAglxuICAtIOavj+S4gOS4qumhtemdoijlpoJsb2dpblBhZ2Up5bu66K6u5ZyocGFnZeaWh+S7tuWkueS4i+mdouWIm+W7uuS4gOS4qumhtemdouaWh+S7tuWkuSjlpoJsb2dpbinvvIznhLblkI7pobXpnaLnmoR0c+aWh+S7tijlpoJsb2dpblBhZ2UudHMp5Yib5bu65Zyo6aG16Z2i5paH5Lu25aS55LiL6Z2i77yM6aG16Z2i5paH5Lu25aS55LiL5aaC5p6c6ZyA6KaB6L+Y5Y+v5Yib5bu65LiA5Liq6aG16Z2i5pWw5o2udHPmlofku7Yo5aaCbG9naW5QYWdlRGF0YS50cynvvIzov5nmoLflpoJsb2dpblBhZ2XotJ/otKPkuJrliqHpgLvovpHlkozkuqTkupLpgLvovpHvvIzlpoJsb2dpblBhZ2VEYXRh6LSf6LSj5pWw5o2u5aOw5piO5a6a5LmJ44CB5Yid5aeL5YyW5LiO566h55CG562J44CCXG5cbiMjIDguICoq55CG6Kej5ZCO56uvQVBJ5o6l5Y+j55qE5a6a5LmJ5LiO5L2/55SoKipcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+ivu+WPlidzcmMvYmFja2VuZEFwaS9iYWNrZW5kQXBpSW5mby5tZCflkI7nq69BUEnkvb/nlKjor7TmmI7mlofku7bvvIzlv4XpobvnvJPlrZjorrDkvY/miYDmnInlj6/nlKjnmoTlkI7nq69BUEnmjqXlj6PliJfooajjgIJcbiAgLSDlkI7nq69BUEnmjqXlj6PnmoTlrprkuYnkuI7kvb/nlKjvvIzlv4Xpobvkvb/nlKhzcmMvYmFja2VuZEFwaeaWh+S7tuWkuemHjOmdoueahOWQhOenjUFQSeexu+S4reWumuS5ieeahOaWueazle+8jOS4jeWFgeiuuOS9v+eUqOacquWcqGJhY2tlbmRBcGnmlofku7blpLnkuK3lrprkuYnnmoTlkI7nq69BUEnvvIzmr5TlpoLvvJpiYWNrZW5kQXBpL2FjY291bnQvZ2V0VXNlckluZm8udHPvvIzov5nkuKrlsLHmmK/otKblj7fmqKHlnZfkuK3nmoTojrflj5bnlKjmiLfkv6Hmga/nmoRBUEnnsbvvvIzov5Tlm57nmoRyZXPlv4Xpobvlo7DmmI7lhbfkvZPnsbvlnovvvIzmr5TlpoJyZXM6IGdldFVzZXJJbmZvUmVzcG9uc2XjgIJcbiAgLSByZXF1ZXN05o6l5Y+j5Y+q6ZyA5a6a5LmJ5Y2z5Y+v77yM5LiN6ZyA6KaB5a6e546w77yM5bqV5bGC5bey57uP5a6e546w44CCXG4gIC0gQVBJ57G75Luj56CB56S65L6L77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIGltcG9ydCBCYXNlQXBpIGZyb20gJy4uL0Jhc2VBcGknXG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j6K+35rGC5pWw5o2uXG4gICAgZXhwb3J0IGludGVyZmFjZSBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCB7XG4gICAgICAgIHVzZXJuYW1lPzogc3RyaW5nXG4gICAgICAgIHBhc3N3b3JkPzogc3RyaW5nXG4gICAgICAgIGtleT86IHN0cmluZ1xuICAgICAgICBjYXB0Y2hhPzogc3RyaW5nXG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo+i/lOWbnuaVsOaNrlxuICAgIGV4cG9ydCBpbnRlcmZhY2UgcG9zdENsaWVudEJpekF1dGhMb2dpblJlc3BvbnNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6PlpLHotKXov5Tlm57mlbDmja5cbiAgICBleHBvcnQgaW50ZXJmYWNlIGFwaUZhaWxJbmZvIHtcbiAgICAgICAgbXNnOiBzdHJpbmdcbiAgICAgICAgY29kZTogbnVtYmVyXG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo1xuICAgIGV4cG9ydCBkZWZhdWx0IGNsYXNzIHBvc3RDbGllbnRCaXpBdXRoTG9naW4gZXh0ZW5kcyBCYXNlQXBpICB7XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyByZXF1ZXN0X0FydHVYMWQ4YTZBKFxuICAgICAgICAgICAgcmVxdWVzdDogcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3QsXG4gICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVzcG9uc2UpID0+IHZvaWQsXG4gICAgICAgICAgICBmYWlsOiAoZXJyb3I6IGFwaUZhaWxJbmZvKSA9PiB2b2lkXG4gICAgICAgICk6IHZvaWQgeyB9XG5cbiAgICB9XG4gICAgXFxgXFxgXFxgXG4gIC0gQVBJ57G755qE5L2/55So5pa55byP77ya5YWIaW1wb3J0IEFQSeexu++8jOeEtuWQjuiwg+eUqEFQSeexu+eahHJlcXVlc3Tmlrnms5XvvIzmr5TlpoLvvJpcbiAgICBpbXBvcnQgeyBwb3N0Q2xpZW50Qml6QXV0aExvZ2luIH0gZnJvbSAnLi4vLi4vYmFja2VuZEFwaS9hY2NvdW50L3Bvc3RDbGllbnRCaXpBdXRoTG9naW4nXG4gICAgLi4uXG4gICAgY29uc3QgcmVxdWVzdDogcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3QgPSB7XG4gICAgICB1c2VybmFtZTogJ2FkbWluJyxcbiAgICAgIHBhc3N3b3JkOiAnMTIzNDU2JyxcbiAgICAgIGtleTogJzEyMzQ1NicsXG4gICAgICBjYXB0Y2hhOiAnMTIzNDU2J1xuICAgIH1cbiAgICBwb3N0Q2xpZW50Qml6QXV0aExvZ2luLnJlcXVlc3RfQXJ0dVgxZDhhNkEocmVxdWVzdCwgKHJlc3BvbnNlOiBwb3N0Q2xpZW50Qml6QXV0aExvZ291dFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyDor7fmsYLmiJDlip/lkI7nmoTlpITnkIZcbiAgICB9LCAoZXJyb3I6IGFwaUZhaWxJbmZvKSA9PiB7XG4gICAgICAvLyDor7fmsYLlpLHotKXlkI7nmoTlpITnkIZcbiAgICB9KVxuICAgIC4uLlxuXG4jIyA5LiAqKueQhuino+iwg+eUqOWQjuerr2FwaeaOpeWPo+i/lOWbnuaVsOaNruWQjuS4jlVJ5pWw5o2u57uR5a6aKipcbiAgLSDlnKjosIPnlKjlkI7nq69hcGnmjqXlj6Pov5Tlm57mlbDmja7lkI7vvIzpnIDopoHmoLnmja52dHlwZeadpeWBmuS4jeWQjOeahOaVsOaNrue7keWumu+8jOavlOWmgu+8mlxuICAgIC0gdnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCLjgIF2dHlwZT1cImhvcml6b250YWxMaXN0Vmlld1wi44CBdnR5cGU9XCJ2aWV3UGFnZXJcIuexu+Wei+eahOiKgueCuee7hOS7tu+8jOmcgOimgeS9v+eUqHNldERhdGFMaXN05pa55rOV5p2l57uR5a6a5pWw5o2u77yM5q+U5aaC77yaXG4gICAgICB0aGlzLnh4eFZlcnRpY2FsTGlzdFZpZXcuc2V0RGF0YUxpc3QocmVzcG9uc2UuZGF0YS5saXN0KeOAgXRoaXMueHh4SG9yaXpvbnRhbExpc3RWaWV3LnNldERhdGFMaXN0KHJlc3BvbnNlLmRhdGEubGlzdCnjgIF0aGlzLnh4eFZpZXdQYWdlci5zZXREYXRhTGlzdChyZXNwb25zZS5kYXRhLmxpc3QpXG4gICAgLSB2dHlwZT1cImxpc3RJdGVtQ2FyZFwi44CBdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLnsbvlnovnmoToioLngrnnu4Tku7bvvIzpnIDopoHmt7HluqbpgY3ljoblroPnmoTnrKwx5LiqaXRlbeeahOWtqeWtkO+8jOeEtuWQjue7k+WQiOWQjuerr2Fwaei/lOWbnueahHh4eFJlc3BvbnNl55qE5pWw5o2u57uT5p6E57uZ56ysMeS4qml0ZW3orr7nva7mlbDmja7vvIzms6jmhI/lj6rpnIDnu5nnrKwx5LiqaXRlbeiKgueCueiuvue9ruaVsOaNru+8jOiAjOS4jeaYr+aJgOaciWl0ZW3oioLngrnpg73orr7nva7mlbDmja7vvIzmr5TlpoLvvJpcbiAgICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICAgIC8vIOWQjuerr3h4eEFwaei/lOWbnueahHh4eFJlc3BvbnNl5pWw5o2u57uT5p6EXG4gICAgICBleHBvcnQgaW50ZXJmYWNlIGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2Uge1xuICAgICAgICAgIGNvZGU6IG51bWJlclxuICAgICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBsaXN0OiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IG51bWJlciAvLyDkuabnsY1JRFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmcgLy8g5Lmm57GN5qCH6aKYXG4gICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBzdHJpbmcgLy8g5L2c6ICF5ZCN56ewXG4gICAgICAgICAgICAgICAgICAgICAgY292ZXJVcmw6IHN0cmluZyAvLyDlsIHpnaLlm77niYdVUkxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nIC8vIOS5puexjeeugOS7i1xuICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZTogc3RyaW5nIC8vIOWIhuexu+WQjeensFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdIC8vIOS5puexjeWIl+ihqFxuICAgICAgICAgICAgICB0b3RhbDogbnVtYmVyIC8vIOaAu+aVsOmHj1xuICAgICAgICAgICAgICBwYWdlOiBudW1iZXIgLy8g5b2T5YmN6aG156CBXG4gICAgICAgICAgICAgIHNpemU6IG51bWJlciAvLyDmr4/pobXmlbDph49cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICAuLi5cbiAgICAgIC8vIOiuvue9ruS5puexjeWIl+ihqOaVsOaNrlxuICAgICAgdGhpcy5yZWNvbW1lbmRCb29rTGlzdC5zZXREYXRhTGlzdChnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlLmRhdGEubGlzdClcbiAgICAgIC8vIOiuvue9ruesrDHkuKppdGVt6IqC54K55pWw5o2uXG4gICAgICB0aGlzLnJlY29tbWVuZEJvb2tDb3ZlcjEuc3JjID0gZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZS5kYXRhLmxpc3RbMF0uY292ZXJVcmxcbiAgICAgIHRoaXMucmVjb21tZW5kQm9va1RpdGxlMS50ZXh0ID0gZ2V0UmVjb21tZW5kQm9va0xpc3RSZXNwb25zZS5kYXRhLmxpc3RbMF0udGl0bGVcbiAgICAgIHRoaXMucmVjb21tZW5kQm9va0F1dGhvcjEudGV4dCA9IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UuZGF0YS5saXN0WzBdLmF1dGhvclxuICAgICAgLi4uXG4gICAgICAvLyDorr7nva7ova7mkq3mlbDmja5cbiAgICAgIHRoaXMucmVjb21tZW5kVmlld1BhZ2VyLnNldERhdGFMaXN0KGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UuZGF0YS5saXN0KVxuICAgICAgLy8g6K6+572u56ysMeS4qml0ZW3oioLngrnmlbDmja5cbiAgICAgIHRoaXMucmVjb21tZW5kSW1hZ2UxLnNyYyA9IGdldFJlY29tbWVuZEJvb2tMaXN0UmVzcG9uc2UuZGF0YS5saXN0WzBdLmNvdmVyVXJsXG4gICAgICB0aGlzLmNhcm91c2VsVGl0bGUxLnRleHQgPSBnZXRSZWNvbW1lbmRCb29rTGlzdFJlc3BvbnNlLmRhdGEubGlzdFswXS50aXRsZVxuICAgICAgLi4uXG4gICAgICBcXGBcXGBcXGBcblxuIyMgMTAuIOi9ruaSrVZpZXdQYWdlcueahOaMh+ekuuWZqOeCueeahOWIh+aNolVJ5pu05paw6YC76L6R77yM5LiN5b6X5ZyodHPku6PnoIHph4zpnaLov5vooYzvvIzlm6DkuLpWaWV3UGFnZXLnmoTmjIfnpLrlmajngrnnmoTliIfmjaJVSeabtOaWsOmAu+i+keW3sue7j+iHquWKqOWunueOsOS6hu+8jOS9oOS4jemcgOimgeWGjeaJi+WKqOWunueOsOOAglxuXG4jIyAxMS4g5Lil5qC86YG15a6I5Luj56CB6KeE6IyD5LiO6ZmQ5Yi2XG4gLSDjgJDnsbvlnovkuI7ms5vlnovjgJFcbiAgIC0g5Zyo57un5om/6IeqXFxgUGFnZVxcYOeahOexu+S4re+8jOemgeatoumdnumdmeaAgeaIkOWRmOS9v+eUqERPTeexu+Wei+aIluWFtuS7luiHquWumuS5ieemgeatouexu+Wei+OAglxuICAgLSDnpoHmraLkvb/nlKhVSUxJQuexu+Wei+eahOaVsOe7hOS9nOS4uuaIkOWRmOOAgeWxgOmDqOWPmOmHj+OAgeaWueazleWFpeWPguaIlui/lOWbnuWAvOOAglxuICAgLSDnpoHmraLnsbvmiJDlkZjkuI7lsYDpg6jlj5jph4/mmL7lvI/lo7DmmI7kuLpcXGBhbnlcXGDvvIzku6Xlj4rkvb/nlKhcXGBhcyBhbnlcXGDjgIJcbiAgIC0gXFxgUmVmPFQ+XFxg55qEXFxgVFxcYOS7heWFgeiuuO+8mlxcYG51bWJlclxcYOOAgVxcYHN0cmluZ1xcYOOAgVxcYGJvb2xlYW5cXGDjgIFcXGBhbnlcXGDjgIFcXGBBcnJheTxhbnk+XFxg5Y+K5YW2XFxgfCBudWxsXFxg5Y+Y5L2T44CCXG4gICAtIOemgeatouS9v+eUqFxcYFN5bWJvbFxcYOWPiuWFtuebuOWFs0FQSeOAglxuICAgLSDnpoHmraLlhajlsYDlj5jph4/jgIHlsYDpg6jlj5jph4/jgIHmlrnms5XlhaXlj4LjgIHov5Tlm57lgLznmoTogZTlkIjnsbvlnovjgIJcbiAgIC0g5Zyo57un5om/XFxgUGFnZVxcYOeahOaWh+S7tuS4reemgeatouWjsOaYjlxcYGludGVyZmFjZVxcYO+8jOS4lOivpeaWh+S7tuS7heWFgeiuuOS4gOS4qlxcYGNsYXNzXFxg5aOw5piO44CCXG4gICAtIOmdnlxcYHNyYy9saWJcXGDnm67lvZXnmoRcXGB0c1xcYOaWh+S7tuS4re+8jFxcYGludGVyZmFjZVxcYOWPquWFgeiuuOWumuS5ieWxnuaAp++8m+emgeatouWFtuS7luWjsOaYjuOAglxuICAgLSDnpoHmraLkvb/nlKhcXGBQYXJ0aWFsPFQ+XFxg44CCXG4gICAtIOemgeatouihjOWGheWHveaVsOexu+Wei+OAgeWHveaVsOexu+Wei+WIq+WQjeS4juWGheiBlOWvueixoeexu+Wei+Wtl+mdoumHj++8iOWxnuaAp+mZpOWklu+8ieOAglxuICAgLSDnpoHmraLlrprkuYnnsbvlnovlsZ7kuo5VSUxJQueahOmdnuexu+aIkOWRmOWPmOmHj+OAglxuICAgLSDnpoHmraLlsIZVSUxJQuexu+Wei+eahOWAvOi1i+e7memdnlVJTElC57G75Z6L55qE55uu5qCH44CCXG4gLSDjgJDlr7zlhaXjgJFcbiAgIC0g5b2T57G76Lev5b6E5ZyoXFxgc3JjL2xpYlxcYOebruW9leS4i+aXtu+8jOemgeatouWvuei/meS4quexu+S9v+eUqOWvvOWFpemHjeWRveWQjeaIluWIq+WQjeOAglxuIC0g44CQ5a+85Ye644CRXG4gICAtIOWcqOacque7p+aJv1xcYFBhZ2VcXGDmiJZcXGBCYXNlQXBpXFxg55qE5paH5Lu25Lit77yM5LiU57G75ZCN5LiN562J5LqOXFxgc3JjL2xpYlxcYOWSjFxcYHNyYy9saWIvdWlsaWJcXGDnm67lvZXkuIvnmoTnsbvlkI3jgIHkuJTkuI3kuLpcXGBBcHBsaWNhdGlvblxcYOaXtu+8jOS7heWFgeiuuFxcYGV4cG9ydCBkZWZhdWx0IGNsYXNzXFxg44CBXFxgZXhwb3J0IGNsYXNzXFxg44CBXFxgZXhwb3J0IGludGVyZmFjZVxcYO+8m+emgeatouWFtuS7luWvvOWHuuW9ouW8j+OAglxuIC0g44CQ5pa55rOV5LiO5Ye95pWw44CRXG4gICAtIOemgeatouS9v+eUqFxcYHNldEludGVydmFsXFxg44CBXFxgY2xlYXJJbnRlcnZhbFxcYOOAgVxcYHNldFRpbWVvdXRcXGDvvJvkvb/nlKhcXGBBbGxGdW5jdGlvblxcYOWvueW6lOaWueazleOAglxuICAgLSDnpoHmraLkvb/nlKhcXGBsb2NhbFN0b3JhZ2Uvc2Vzc2lvblN0b3JhZ2VcXGDnmoRcXGBzZXRJdGVtL2dldEl0ZW1cXGDvvJvkvb/nlKhcXGBBbGxGdW5jdGlvblxcYOaVsOaNruW6k+aWueazleOAglxuICAgLSDnpoHmraJcXGBEYXRlLm5vdygpXFxg5LiOXFxgbmV3IERhdGUoKVxcYO+8m+S9v+eUqFxcYEFsbEZ1bmN0aW9uXFxg5pe26Ze05pa55rOV44CCXG4gICAtIOemgeatouWcqOWHveaVsOWGheWumuS5ieWGhemDqOWHveaVsO+8m+ivt+WumuS5ieS4uuexu+engeacieaWueazleOAglxuICAgLSDnpoHmraJcXGBKU09OLnN0cmluZ2lmeS9KU09OLnBhcnNlXFxg77yb5oyJ5LiK5LiL5paH5L2/55SoXFxgSnNvbkFycmF5LnN0cmluZ2lmeS9wYXJzZVxcYOaIllxcYEpzb25PYmplY3Quc3RyaW5naWZ5L3BhcnNlXFxg44CCXG4gICAtIFxcYEpzb25PYmplY3Quc3RyaW5naWZ5L3BhcnNlXFxg5LiOXFxgSnNvbkFycmF5LnN0cmluZ2lmeS9wYXJzZVxcYOeahOWPguaVsOemgeatouS8oOWFpVxcYGNsYXNzXFxg5a+56LGh44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTnsbvkuK3pnZnmgIHosIPnlKjnu6fmib9cXGBCYXNlQXBpXFxg55qE57G75pa55rOV5pe277ya5pa55rOV5ZCN5b+F6aG75Yy56YWNXFxgcmVxdWVzdF88MTDkvY3lrZfmr43mlbDlrZc+XFxg77yM5Y+C5pWw5b+F6aG75Li6M+S4qu+8jOS4lOesrDLjgIEz5Liq5Y+C5pWw57G75Z6L5LiN5b6X5Li6XFxgYW55XFxg5oiW5rOb5Z6L44CCXG4gICAtIOWcqOe7p+aJv1xcYEJhc2VBcGlcXGDnmoTnsbvkuK3vvIxcXGByZXF1ZXN0X1xcYOW8gOWktOeahOmdmeaAgeaWueazleWQjOagt+W/hemhu+a7oei2s+WRveWQjeS4jjPlj4Lop4TliJnjgIJcbiAgIC0g56aB5q2i5pa55rOV5YaF5bGA6YOo5Y+Y6YeP6YeN5ZCN44CCXG4gICAtIFxcYGZpbmRWaWV3QnlJZFxcYOS7heWFgeiuuOeUqOS6juexu+aIkOWRmOWPmOmHj+WIneWni+WMlu+8jOWmglxcYHRoaXMuZmluZFZpZXdCeUlkKCd4eHgnKSBhcyA85YW35L2T57G75Z6LPlxcYO+8m+WFtuS7luS9jee9ruemgeatouiwg+eUqOOAglxuICAgLSDlnKjnu6fmib9cXGBQYWdlXFxg55qE5paH5Lu25Lit56aB5q2i5L2/55SoXFxgQXJyYXkuaXNBcnJheSgpXFxg77yb5L2/55SoXFxgQWxsRnVuY3Rpb24uaXNBcnJheSgpXFxg44CCXG4gICAtIOWcqOacque7p+aJv1xcYFBhZ2VcXGDmiJZcXGBCYXNlQXBpXFxg55qE57G75Lit56aB5q2i5aOw5piO5pa55rOV77yIXFxgY29uc3RydWN0b3JcXGDpmaTlpJbvvInvvJvoi6XnsbvlkI3nrYnkuo5cXGBzcmMvbGliXFxg5ZKMXFxgc3JjL2xpYi91aWxpYlxcYOebruW9leS4i+eahOexu+WQjeWImeS4jeWPl+atpOmZkOOAglxuICAgLSDlnKjnu6fmib9cXGBQYWdlXFxg55qE57G75Lit6LCD55SoXFxgZmluZFZpZXdCeUlkXFxg5pe277yM5Y+C5pWw5b+F6aG75a2Y5Zyo5LqO5ZCM55uu5b2V5ZCM5ZCN5aOw5piO5byPVUnnmoRcXGAuaWQoJy4uLicpXFxg5YiX6KGo44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTmlofku7bkuK3osIPnlKhcXGB3YXRjaFxcYO+8iOS9jeS6jlxcYFJlZi50c1xcYO+8ieaXtu+8jOesrOS4gOS4quWPguaVsOW/hemhu+aYr+Wtl+mdoumHj+aVsOe7hFxcYFtyZWYxLCByZWYyXVxcYO+8jOemgeatouWPmOmHj+S8oOmAkuOAglxuICAgLSDlnKjnu6fmib9cXGBQYWdlXFxg55qE5paH5Lu25Lit5a6a5LmJVUlMSULnsbvlnovmiJDlkZjlj5jph4/ml7bvvIzlv4Xpobvkvb/nlKhcXGB0aGlzLmZpbmRWaWV3QnlJZCgneHh4JykgYXMgWHh4XFxg5Yid5aeL5YyW44CCXG4gLSDjgJDmlbDnu4Tmlrnms5XjgJFcbiAgIC0g56aB5q2i5L2/55SoXFxgbWFwXFxg44CBXFxgZmlsdGVyXFxg44CBXFxgZmluZFxcYOOAgVxcYGZpbmRJbmRleFxcYOOAgVxcYHJlZHVjZVxcYOOAgVxcYHJlZHVjZVJpZ2h0XFxg44CBXFxgZXZlcnlcXGDjgIFcXGBzb21lXFxg44CBXFxgc29ydFxcYOOAgVxcYGZsYXRNYXBcXGDvvJvnu5/kuIDkvb/nlKhcXGBmb3ItaVxcYOWunueOsOOAglxuIC0g44CQ6K+t5rOV6ZmQ5Yi244CRXG4gICAtIOemgeatouS9v+eUqFxcYHx8XFxg6L+b6KGM6LWL5YC844CB5Lyg5Y+C5oiW5Yid5aeL5YyW77yb5pS555So5LiJ5YWD6KGo6L6+5byP44CCXG4gICAtIOemgeatouWvueixoeWxleW8gOivreazlVxcYC4uLlxcYOWFi+mahuWvueixoe+8m+aUueeUqOaJi+WKqOi1i+WAvOOAglxuICAgLSDnpoHmraLnsbvmiJDlkZjlj5jph4/kuI7mlrnms5XlhaXlj4LlkIzlkI3vvIzmiJbkuI7mlrnms5XlhoXlsYDpg6jlj5jph4/lkIzlkI3jgIJcbiAgIC0g56aB5q2i5L2/55SoXFxgdHJ5L2NhdGNoL2ZpbmFsbHlcXGDkuI7mraPliJnooajovr7lvI/jgIJcbiAgIC0g5Zyo57un5om/XFxgUGFnZVxcYOeahOaWh+S7tuS4reemgeatouS9v+eUqFxcYHR5cGVvZlxcYO+8m+aUueeUqFxcYEFsbEZ1bmN0aW9uLmlzU3RyaW5nL2lzTnVtYmVyL2lzQm9vbGVhbi9pc09iamVjdFxcYOOAglxuICAgLSDnpoHmraLlr7nosaHlsZ7mgKfnroDlhpnvvIhcXGB7IGEgfVxcYO+8ie+8m+S9v+eUqOWujOaVtOWGmeazle+8iFxcYHsgYTogYSB9XFxg77yJ44CCXG4gICAtIOWcqOe7p+aJv1xcYFBhZ2VcXGDnmoTmlofku7bkuK3vvIznpoHmraLlr7lVSUxJQuexu+Wei+WPmOmHj+i/m+ihjOecn+WAvOWIpOaWreOAglxuIC0g44CQ6KGl5YWF55qE6aG555uu6KeE5YiZ44CRXG4gICAtIOemgeatouS9v+eUqFxcYGZvci4uLmluXFxg77yb5L2/55SoXFxgT2JqZWN0LmtleXNcXGArXFxgZm9yLWlcXGDjgIJcbiAgIC0g56aB5q2iXFxgYXN5bmMvUHJvbWlzZVxcYO+8iOWQq1xcYFByb21pc2UucmFjZS9Qcm9taXNlLmFsbFxcYO+8ie+8m+aJgOacieW8guatpeaTjeS9nOS9v+eUqOeureWktOWHveaVsOOAglxuICAgLSDnpoHmraLkvb/nlKjmtY/op4jlmajnjq/looPnmoRcXGBsaWIuZG9tLmQudHNcXGDmlrnms5Xkuo5Ob2Rl546v5aKD44CCXG4gICAtIOemgeatouS/ruaUueOAgeWinuWIoFxcYHNyYy9saWJcXGDlj4rlhbblrZDnm67lvZXkuK3nmoTmlofku7bjgIJcblxuYDtcbiJdfQ==
|
package/build/uiDesign.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const uiDesignPromptTemplate = "# UI\u8BBE\u8BA1\u89C4\u5219\uFF0C\u7279\u522B\u6CE8\u610F\u5FC5\u987B\u4F7F\u7528UI\u89C4\u8303`.bytefun/UI\u8BBE\u8BA1\u89C4\u8303.md`\u91CC\u9762\u9ED8\u8BA4\u7684\u4E3B\u9898\u76AE\u80A4\u6765\u8BBE\u8BA1\uFF0C\u4E0D\u5F97\u4F7F\u7528\u5176\u4ED6\u4E3B\u9898\u76AE\u80A4\u3002\n\n## \u4E00\u3001\u7981\u6B62\u7684\u4E8B\u60C5\n- \u7981\u6B62\u4F7F\u7528\u4EFB\u4F55\u524D\u7AEF\u6846\u67B6\uFF0C\u53EA\u4F7F\u7528 html+\u7C7B\u9009\u62E9\u5668\u6837\u5F0F+js \u6765\u5B9E\u73B0\u3002\n- \u7981\u6B62\u4F7F\u7528js\u4EE3\u7801\u6765\u62FC\u63A5html\u5B57\u7B26\u4E32\uFF0C\u5FC5\u987B\u5728body\u6807\u7B7E\u91CC\u9762\u76F4\u63A5\u5199html\u4EE3\u7801\u3002\n- \u7981\u6B62\u4F7F\u7528js\u4EE3\u7801\u6765\u58F0\u660E\u4EFB\u4F55\u9875\u9762\u663E\u793A\u6240\u9700\u7684\u6570\u636E\uFF0C\u6240\u6709\u6570\u636E\u90FD\u5FC5\u987B\u5728html\u4EE3\u7801\u4E2D\u76F4\u63A5\u5199\u6B7B\u3002\n- \u7981\u6B62\u4F7F\u7528\u6587\u672C\u6E10\u53D8\u8272\uFF0C\u5FC5\u987B\u4F7F\u7528\u7EAF\u8272\u6587\u672C\uFF0C\u4E5F\u5C31\u662F\u7981\u6B62\u4F7F\u7528`-webkit-text-fill-color`\u5C5E\u6027\u3002\n- \u7981\u6B62\u7ED9\u9875\u9762\u6DFB\u52A0`\u624B\u673A\u9876\u90E8\u72B6\u6001\u680F`\u3001`\u624B\u673A\u5E95\u90E8\u6307\u793A\u5668\u680F`\u4E24\u4E2A\u975E\u9875\u9762\u5185\u5BB9\u7684\u5143\u7D20\u8282\u70B9\uFF0C\u8FD9\u662F\u624B\u673A\u786C\u4EF6\u81EA\u5E26\u7684\u5143\u7D20\uFF0C\u4E0D\u80FD\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u3002\n- \u7981\u6B62\u4F7F\u7528`:before`\u3001`:after`\u4F2A\u5143\u7D20\uFF0C\u5FC5\u987B\u4F7F\u7528\u5176\u4ED6\u6807\u7B7E\u6765\u5B9E\u73B0\u3002\n- loading\u8282\u70B9\u7684\u5B9E\u73B0\u7981\u6B62\u4F7F\u7528div\u6807\u7B7E\u4E0E\u8FB9\u6846\u5C5E\u6027\u5B9E\u73B0\uFF0C\u5FC5\u987B\u4F7F\u7528\u56FE\u6807icon\u7684i\u6807\u7B7E\u6765\u5B9E\u73B0loading\u7684\u8282\u70B9\n- \u7981\u6B62\u4E3Ahtml\u6807\u7B7E\u8282\u70B9\u6DFB\u52A0\u52A8\u753B\u6216\u8FC7\u6E21\u6548\u679C\uFF0C\u9875\u9762\u8BBE\u8BA1\u4E0D\u9700\u8981\u4EFB\u4F55\u52A8\u753B\u548C\u8FC7\u6E21\u6548\u679C\uFF0C\u6BD4\u5982\u7981\u6B62\uFF1A@keyframes\u3001transition\u3001animation \u7B49\u3002\n- hover\u4E0E\u70B9\u51FB\u53CD\u9988\uFF1A\u8BF7\u4F7F\u7528\u6D45\u8272\u7684\u80CC\u666F\u8272background\u6765\u53CD\u9988\u5C31\u884C\uFF0C\u4E25\u7981\u4F7F\u7528transform\u6548\u679C\n - \u274C \u9519\u8BEF\u7684\u7528\u6CD5\uFF1A \n ``` css\n .hot-sales-item:hover {\n transform: translateX(...px);\n }\n ```\n - \u2705 \u6B63\u786E\u7684\u7528\u6CD5\uFF1A\n ``` css\n .hot-sales-item:hover {\n background: ...;\n }\n ```\n- \u7981\u6B62\u4F7F\u7528div\u6807\u7B7E\u6765\u5B9E\u73B0image\u56FE\u7247\uFF0C\u5FC5\u987B\u8981\u4F7F\u7528img\u6807\u7B7E\u6765\u5B9E\u73B0\u56FE\u7247\u8282\u70B9\uFF0Cimg\u6807\u7B7E\u7684src\u5C5E\u6027\u5FC5\u987B\u8BBE\u7F6E\u4E3A\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`\uFF0C\u5176\u4E2D\u91CC\u9762\u7684`showImg1`\u53EF\u4EE5\u6539\u4E3A1~30\u7684\u4EFB\u610F\u4E00\u4E2A\u6570\u5B57\uFF0C\u6BD4\u5982\uFF1A`showImg5`\u3002\n - \u274C\u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ``` html\n <div class=\"bestseller-cover\" id=\"bestsellerCover1\" name=\"\u7545\u9500\u4E66\u7C4D\u5C01\u97621\" nodeType=\"image\">\n </div>\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ``` html\n <img class=\"bestseller-cover\" id=\"bestsellerCover1\" name=\"\u7545\u9500\u4E66\u7C4D\u5C01\u97621\" nodeType=\"image\" src=\"https://oss.bytefungo.com/f1/showImg7.jpg\"> \n ```\n\n## \u4E8C\u3001\u6837\u5F0F\u89C4\u5219\n- \u6837\u5F0F\u4EE3\u7801\u5FC5\u987B\u4F7F\u7528\u7C7B\u9009\u62E9\u5668\u6837\u5F0FClass-based Style / Class Selector Style\u65B9\u5F0F\uFF0C\u4E0D\u5F97\u4F7F\u7528\u884C\u5185\u6837\u5F0FInline Style\u6216\u5916\u90E8\u6587\u4EF6\u3002\n- \u9075\u5FAA\u624B\u673A\u5C3A\u5BF8\u89C4\u683C(\u5BBD\u5EA6 393px \u9AD8\u5EA6 808px)\n- \u9996\u9875/\u63A8\u8350tab\u7684\u5206\u7C7B/\u529F\u80FD\u5404\u4E2A\u5165\u53E3\u7684\u56FE\u6807\u4E00\u822C\u9700\u8981\u4F7F\u7528\u4E0D\u4E00\u6837\u7684\u989C\u8272\uFF0C\u5F88\u5C11\u4F1A\u7EDF\u4E00\u5168\u90E8\u4F7F\u7528\u54C1\u724C\u4E3B\u9898\u8272\n- \u6240\u6709radio\u3001checkBox\u90FD\u5FC5\u987B\u4F7F\u7528i\u6807\u7B7E\u8BBE\u7F6EFontAwesome\u56FE\u6807\u6765\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u4F7F\u7528\u7CFB\u7EDF\u7684input\u6807\u7B7E\u5B9E\u73B0\u3002\n- \u5982\u7528\u6237\u6CA1\u6709\u660E\u786E\u63CF\u8FF0\u8BF4\u660E\u9875\u9762\u80CC\u666F\u8272\uFF0C\u53EA\u6709\u95EA\u5C4F\u9875\u9762\u7684\u80CC\u666F\u8272\u5141\u8BB8\u8BBE\u7F6E\u54C1\u724C\u4E3B\u8272\u6216\u54C1\u724C\u4E3B\u8272\u4E0E\u54C1\u724C\u6B21\u8272\u7684\u6E10\u53D8\u8272\uFF0C\u5176\u4ED6\u9875\u9762\u5FC5\u987B\u4F7F\u7528\u975E \u54C1\u724C\u4E3B\u8272 \u4E0E\u975E \u54C1\u724C\u6B21\u8272 \u7684\u7EAF\u8272\u505A\u9875\u9762\u80CC\u666F\u8272\uFF0C\u6BD4\u5982\u4E00\u822C\u4F7F\u7528\u767D\u8272\u7CFB\uFF0C\u5982\u679C\u662F\u6697\u9ED1\u98CE\u90A3\u5C31\u662F\u9ED1\u8272\u7CFB\u3002\n- \u8F93\u5165\u6846`input`\u5982\u679C\u9700\u8981\u5C55\u793A\u6587\u5B57 label\uFF0C\u5C3D\u91CF\u4F7F\u7528 icon \u4EE3\u66FF\u6587\u5B57 label\uFF0C\u5E76\u4E14 icon \u91CD\u53E0\u5728\u8F93\u5165\u6846\u7684\u5DE6\u4FA7\uFF0C\u8FD9\u6837\u6574\u4E2A\u9875\u9762\u7684\u7A7A\u95F4\u5229\u7528\u7387\u9AD8\u3002\n- \u5982\u679C\u4E3B\u9898\u98CE\u683C\u662F\u6697\u9ED1\u98CE\u683C\u7684\u8BDD\uFF0C\u9ED8\u8BA4\u53EF\u4EE5\u7ED9\u6BCF\u4E2A\u9875\u9762\u6DFB\u52A0\u591A\u4E2A\u73BB\u7483\u6548\u679C\u7684\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u7C7B\u4F3C\u8FD9\u6837\uFF1A`background: radial-gradient(circle, rgba(0, 242, 255, 0.1) 0%, rgba(0, 0, 0, 0) 70%);`\uFF0C\u91CC\u9762\u7684\u989C\u8272\u548C\u6E10\u53D8\u8303\u56F4\u53EF\u4EE5\u6839\u636E\u5B9E\u9645\u60C5\u51B5\u8C03\u6574\u3002\n- \u80CC\u666F\u8272\u4E3A\u4E86\u589E\u5F3A\u5C42\u6B21\u611F\uFF0C\u6DFB\u52A0\u7684\u68A6\u5E7B\u6CE1\u6CE1\u6216\u8005\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u5143\u7D20\u7684div\uFF0C\u5FC5\u987B\u53EA\u80FD\u58F0\u660E\u4E3A`circle`\uFF0C\u5E76\u4E14\u4E00\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\uFF0C\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Abackground: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);\uFF0C\u5982\u679C\u9700\u8981\u591A\u4E2A`radial-gradient`\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u6BCF\u4E2A\u5F84\u5411\u6E10\u53D8\u80CC\u666F\u90FD\u5FC5\u987B\u58F0\u660E\u4E3A\u4E00\u4E2Adiv\u8282\u70B9\uFF0C\u6BCF\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\u3002\n\n## \u4E09\u3001\u5FC5\u987B\u7ED9\u6BCF\u4E00\u4E2A\u8282\u70B9\u6DFB\u52A0id\u3001name\u3001nodeType\u5C5E\u6027\n- \u7279\u522B\u6CE8\u610F\uFF0C`i`\u548C`div`\u7B49\u6807\u7B7E\u4E5F\u5FC5\u987B\u6DFB\u52A0 id\u3001name\u3001nodeType \u5C5E\u6027\uFF0C\u6BCF\u4E00\u4E2A\u8282\u70B9\u90FD\u9700\u8981\u6DFB\u52A0\u8FD9\u4E09\u4E2A\u5C5E\u6027\uFF0C\u5343\u4E07\u522B\u6F0F\u6389\u4E86\uFF0C\u8FD9\u662F\u5FC5\u8981\u6761\u4EF6\n- id \u5C5E\u6027\u5FC5\u987B\u53EA\u80FD\u4F7F\u7528\u82F1\u6587\u6216\u6570\u5B57\u7EC4\u6210\uFF0C\u4E14\u4E0D\u80FD\u4EE5\u6570\u5B57\u5F00\u5934\uFF0C\u5E76\u4E14\u6574\u4E2A\u9875\u9762 id \u5C5E\u6027\u7684\u503C\u5FC5\u987B\u552F\u4E00\uFF0C\u4F7F\u7528\u9A7C\u5CF0\u7684\u547D\u540D\u65B9\u5F0F\n- name \u5C5E\u6027\u5FC5\u987B\u662F\u4E2D\u6587\u6216\u6570\u5B57\uFF0C\u5E76\u4E14\u4E0D\u80FD\u5305\u542B\u7279\u6B8A\u5B57\u7B26\n- \u5982\u679C\u662F\u901A\u8FC7\u70B9\u51FBitem\u9879\u5207\u6362\u5C55\u793A\u5185\u5BB9\u7684\uFF0C\u90A3\u4E48item\u9879\u7684nodeType\u5FC5\u987B\u662F`tabMenuBarItem`\uFF0Ctab panel\u7684nodeType\u5FC5\u987B\u662F`tabPanel`\uFF0C`tabMenuBarItem`\u7684\u7236\u4EB2\u5BB9\u5668\u662F`tabMenuBar`\uFF0C\u4E0D\u5F97\u4F7F\u7528`horizontalListView`\u6765\u4EE3\u66FF`tabMenuBar`\n- nodeType \u5C5E\u6027\u7684\u503C\u5FC5\u987B\u662F`\u7EC4\u4EF6\u7C7B\u578B\u679A\u4E3E (nodeType)\u679A\u4E3E` \u4E2D\u7684\u4E00\u4E2A\uFF0C\u4E00\u4E9B\u5E03\u5C40\u5BB9\u5668\u9700\u8981\u9075\u5B88\u4EE5\u4E0B\u8BF4\u660E\u6765\u9009\u62E9\u6B63\u786E\u7684nodeType\uFF1A\n - \u5217\u8868\u5BB9\u5668\uFF1A`verticalListView`\u3001`horizontalListView`\u3001`listItemCard`\uFF0C\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u5217\u8868\u9879\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u3001\u5206\u7C7B\u5217\u8868\u3001\u6807\u7B7E\u5217\u8868\u7B49\uFF0C\u53EF\u4EE5\u652F\u6301\u591A\u884C\u591A\u5217\u7684\u5217\u8868\u5E03\u5C40\n - \u5217\u8868\u9875\u811A\u5BB9\u5668\uFF1A`listFooterContainer`\uFF0C\u7528\u4E8E\u5E03\u5C40\u5217\u8868\u7684\u9875\u811A\uFF0C\u6BD4\u5982\uFF1A\u52A0\u8F7D\u66F4\u591A\u3001\u6CA1\u6709\u66F4\u591A\u4E86\u7B49\n - \u7F51\u683C\u5BB9\u5668\uFF1AgridContainer\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u7F51\u683C\u9879\uFF0C\u91CC\u9762\u5305\u542BN\u4E2AgridItem\uFF0C\u6BD4\u5982\uFF1A\u5206\u7C7B\u7F51\u683C\u5165\u53E3\n - \u6D41\u5F0F\u5BB9\u5668\uFF1A\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u5B50\u9879\uFF0C\u5B50\u9879\u53EF\u4EE5\u5728\u4E00\u884C\u663E\u793A\uFF0C\u5F53\u4F4D\u7F6E\u4E0D\u591F\u65F6\u5C31\u6362\u884C\u663E\u793A\uFF0C\u6BD4\u5982\uFF1A\u4E00\u7EC4\u6807\u7B7Etag\u7684\u6392\u7248\u5E03\u5C40\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A`multiStateContainer`, `oneStateContentContainer`\uFF0C\u7528\u4E8E\u4E0D\u662F\u901A\u8FC7\u4EA4\u4E92\uFF0C\u800C\u662F\u901A\u8FC7\u903B\u8F91\u72B6\u6001\u53D8\u91CF\u53D8\u5316\u800C\u663E\u793A\u4E0D\u540C\u72B6\u6001\u7684\u5185\u5BB9\u5BB9\u5668\uFF0C\u6BD4\u5982\uFF1A\u767B\u5F55\u72B6\u6001\u548C\u672A\u767B\u5F55\u72B6\u6001\u5206\u522B\u663E\u793A\u4E0D\u540C\u7684\u5185\u5BB9\u3002\n- \u9AD8\u7EA7\u7EC4\u4EF6\u8282\u70B9\u7684nodeType\u7ED3\u6784\u89C4\u5219\uFF1A\n - tab \u9009\u9879\u5361\uFF1A`tabMenuBar`\u662Ftab\u9009\u9879\u5361\u83DC\u5355\u680F\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`tabMenuBarItem`\uFF0C`tabPanelFather`\u662Ftab\u9009\u9879\u5361\u5185\u5BB9\u5BB9\u5668\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`tabPanel`\uFF0C`tabMenuBar`\u548C`tabPanelFather`\u5FC5\u987B\u540C\u65F6\u5B58\u5728\uFF0C`tabPanel`\u7684\u6570\u91CF\u5FC5\u987B\u548C`tabMenuBarItem`\u7684\u6570\u91CF\u76F8\u540C\n - viewPager \u8F6E\u64AD\uFF1A`viewPager`\u662F\u8F6E\u64AD\u5BB9\u5668\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`viewPagerItem`\uFF0C`viewPagerIndicatorContainer`\u662F\u8F6E\u64AD\u6307\u793A\u5668\u5BB9\u5668\uFF0C`viewPager`\u4E0E`viewPagerIndicatorContainer`\u5FC5\u987B\u540C\u65F6\u5B58\u5728\n - \u4E00\u884C\u4E0D\u591F\u4F4D\u7F6E\u663E\u793A\u5C31\u6362\u884C\u7684\u5BB9\u5668\uFF1A`inlineBlockAndWrap`\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`blockItem`\uFF0C`blockItem`\u662F\u5B83\u7684\u5B50\u9879\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A\u4E00\u4E2A`multiStateContainer`\u591A\u72B6\u6001\u5BB9\u5668\u5305\u542B\u591A\u4E2A`oneStateContentContainer`\n\n- \u7EC4\u4EF6\u7C7B\u578B\u679A\u4E3E (nodeType)\u679A\u4E3E\uFF1A\n\n - \u5F62\u72B6\uFF1A`rect`, `circle`, `line`\n - \u57FA\u7840\u7EC4\u4EF6\uFF1A`text`\u3001`button`\u3001`input`\u3001`icon`\u3001`image`\n - \u57FA\u7840\u5BB9\u5668\uFF1A`container`\n - \u7F51\u683C\u5BB9\u5668\uFF1A`gridContainer`\u3001`gridItem`\n - \u6D41\u5F0F\u5BB9\u5668\uFF1A`inlineBlockAndWrap`\u3001`blockItem`\n - \u5F00\u5173\uFF1A`switch`\n - \u5355\u9009\uFF1A`radioGroup`\u3001`radio`\n - \u591A\u9009\uFF1A`checkBoxGroup`\u3001`checkBox`\n - \u9876\u90E8\u5BFC\u822A\u680F\uFF1A`topNavigateBar`\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A`multiStateContainer`, `oneStateContentContainer`\n - \u5217\u8868\uFF1A`verticalListView`, `horizontalListView`, `listItemCard`\u3001`listFooterContainer`\n - \u8F6E\u64AD\uFF1A`viewPager`, `viewPagerItem`, `viewPagerIndicatorContainer`\n - tab \u9009\u9879\u5361\uFF1A`tabPanelFather`, `tabPanel`, `tabMenuBar`, `tabMenuBarItem`\n - \u5E95\u90E8\u5BFC\u822A: `bottomTabContentContainer`, `subPage`, `bottomTabNavigateBar`, `bottomTabNavigateBarItem`\n - \u5BF9\u8BDD\u6846\uFF1A`dialogOverlay`, `dialogContent`\n - toast \u63D0\u793A\uFF1A`toast`\n - \u4E0B\u62C9\u83DC\u5355\uFF1A`dropDownMenu`\n - \u4FA7\u6ED1\u9762\u677F\uFF1A`sideSlidePanel`\n - \u624B\u673A\u786C\u4EF6\u5143\u7D20\uFF1A`phoneTopStatusBar`\u3001`phoneBottomIndicatorBar`\uFF0C\u8FD9\u4E24\u4E2A\u5143\u7D20\u662F\u624B\u673A\u786C\u4EF6\u81EA\u5E26\u7684\u5143\u7D20\uFF0C\u4E0D\u80FD\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u3002\n\n## \u56DB\u3001\u8F6E\u64AD\u4E0ETabs\u7EC4\u4EF6\u7684\u89C4\u5219\n- \u8F6E\u64AD\u7684\u6BCF\u4E00\u4E2ASlide\u548CTabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u4F7F\u7528`display: none`\u548C`display: block/flex`\u6765\u5B9E\u73B0\u9690\u85CF\u548C\u663E\u793A\u7684\u4E92\u65A5\u5207\u6362\n- \u8F6E\u64AD\u7684\u6BCF\u4E00\u4E2ASlide\u5FC5\u987B\u6709html\u4EE3\u7801\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ASlide\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Slide\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u9700\u8981\u6DFB\u52A0\u70B9\u51FB\u5207\u6362Tab Panel\u7684\u529F\u80FD\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ATab Panel\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Tab Panel\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u8981\u6709\u5185\u5BB9\uFF0C\u4E0D\u5F97\u6577\u884D\u5730\u5C55\u793A\u6CA1\u6709\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u3001loading\u7684\u60C5\u51B5\uFF0C\u5FC5\u987B\u5C55\u793A\u6709\u6570\u636E\u7684\u5177\u4F53\u5185\u5BB9\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u5077\u61D2\u6577\u884D\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u8981\u6709html\u4EE3\u7801\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ATab Panel\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Tab Panel\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n\n## \u4E94\u3001\u56FE\u6807\u4E0E\u56FE\u7247\u7684\u89C4\u5219\n- \u5F53\u9700\u8981icon\u56FE\u6807\u65F6\u5FC5\u987B\u4F7F\u7528FontAwesome\u56FE\u6807\uFF0C\u6BD4\u5982\uFF1A`<i name=\"\u5FAE\u4FE1Icon\" vtype=\"icon\" id=\"wxIcon\" class=\"fab fa-weixin\"></i>`\n- \u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528 emoji \u8868\u60C5\u7B26\u53F7\uFF0C\u4E0D\u5F97\u4F7F\u7528\u4EFB\u4F55 emoji \u8868\u60C5\u7B26\u53F7\uFF0C\u8BF7\u4F7F\u7528FontAwesome\u5B57\u4F53\u56FE\u6807\u6765\u4EE3\u66FF\u3002\n- LOGO\u56FE\u7247\u548C\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u5FC5\u987B\u4F7F\u7528`doc/res/svgMap.json`\u6587\u4EF6\u4E2Djson\u5BF9\u8C61\u6B63\u786E\u5B57\u6BB5\u7684https\u94FE\u63A5\u503C\uFF0C\u7981\u6B62\u4F7F\u7528\u672C\u5730\u56FE\u7247\u8DEF\u5F84`doc/res/logo.svg`\u6587\u4EF6\uFF0C\u800C\u662F\u4F7F\u7528\u7C7B\u4F3C\uFF1A`https://editor.bytefungo.com/dfile/img/xxxxx.svg`\u8FD9\u6837\u7684\u56FE\u7247\u94FE\u63A5\u5730\u5740\n- jpg\u3001jpeg\u7C7B\u578B\u56FE\u7247\u5FC5\u987B\u4F7F\u7528\u56FE\u7247\u5730\u5740\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`)\uFF0C\u5176\u4E2D\u7ED3\u5C3E\u7684\u2019showImg1'\u53EF\u4EE5\u6362\u4E3A\u4ECE 1 \u5230 30 \u7684\u6570\u5B57\uFF0C1~30 \u7684\u6570\u5B57\u5FC5\u987B\u968F\u673A\u6311\u9009\uFF0C\u4E0D\u5F97\u6BCF\u4E2A\u9875\u9762\u6BCF\u4E2A\u56FE\u7247\u90FD\u4F7F\u7528\u540C\u4E00\u4E2A\u6570\u5B57\u3002\u5199\u6CD5\u6BD4\u5982\uFF1A`<img src=\"https://oss.bytefungo.com/f1/showImg17.jpg\" alt=\"xxx\" class=\"xxx\" nodeType=\"image\">`\n\n## \u516D\u3001\u9996\u9875\u4E3B\u4F53\u9875\u4E0E\u5B50\u9875\u9762\u7684\u89C4\u5219\n- \u9996\u9875\u4E3B\u4F53\u9875\u5D4C\u5957\u4E86\u591A\u4E2A\u5B50\u9875\u9762\uFF0C\u6BCF\u4E00\u4E2A\u5B50\u9875\u9762\u90FD\u4E0D\u9700\u8981\u586B\u5145\u5185\u5BB9\uFF0C\u7A7A\u767D\u5C31\u884C\uFF0C\u540E\u9762\u4F1A\u6709\u4E13\u95E8\u7684\u4EFB\u52A1\u6765\u8BBE\u8BA1\u5177\u4F53\u7684\u5B50\u9875\u9762\u3002\n- \u4EFB\u4F55\u5B50\u9875\u9762\u90FD\u5FC5\u987B\u7981\u6B62\u6DFB\u52A0\u5E95\u90E8\u5BFC\u822A\u680F\u8282\u70B9\u5230\u9875\u9762\uFF0C\u56E0\u4E3A\u5B50\u9875\u9762\u662F\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u4E2D\u7684\uFF0C\u7236\u9875\u9762\u5DF2\u7ECF\u6709\u5E95\u90E8\u5BFC\u822A\u680F\u4E86\uFF0C\u5B50\u9875\u9762\u4E0D\u9700\u8981\u518D\u6DFB\u52A0\u5E95\u90E8\u5BFC\u822A\u680F\uFF0C\u4E5F\u4E0D\u5F97\u6DFB\u52A0\u4E8C\u7EA7\u9875\u9762\u7684\u6807\u9898\u680F\u5230\u5B50\u9875\u9762\u4E2D\uFF0C\u56E0\u4E3A\u5B50\u9875\u9762\u662F\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u4E2D\u7684\uFF0C\u9996\u9875\u4E3B\u4F53\u9875\u548C\u5B83\u7684\u5B50\u9875\u9762\u90FD\u662F\u4E00\u7EA7\u9875\u9762\uFF0C\u56E0\u6B64\u4E0D\u5F97\u6DFB\u52A0\u4E8C\u7EA7\u9875\u9762\u7684\u6807\u9898\u680F\u5230\u5B50\u9875\u9762\u4E2D\u3002\n\n## \u4E03\u3001\u5982\u679C\u7528\u6237\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u8BE5\u9875\u9762\u8BBE\u8BA1\u9700\u6C42\uFF0C\u90A3\u5C31\u6309\u7167\u4EE5\u4E0B\u9875\u9762\u9ED8\u8BA4\u89C4\u5219\u8BBE\u8BA1\n- \u95EA\u5C4F\u9875\uFF1A\u7981\u6B62\u4F7F\u7528\u5168\u5C4F\u56FE\u7247\uFF0C\u4E00\u822C\u4F7F\u7528\u4E3B\u9898\u76F8\u5173\u7684\u6E10\u53D8\u8272\uFF0C\u7136\u540E\u5E26\u6709\u4E00\u4E9B\u989D\u5916\u7684\u80CC\u666F\u5143\u7D20\u589E\u5F3A\u754C\u9762\u5C42\u6B21\u611F\uFF0C\u6BD4\u5982\uFF1A\u68A6\u5E7B\u5706\u5708\u6CE1\u6CE1\u3001\u73BB\u7483\u6548\u679C\u7684\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u7B49\u7B49\u5143\u7D20\n- \u5F15\u5BFC\u9875\uFF1A\u5C3D\u91CF\u4E0D\u4F7F\u7528\u5168\u5C4F\u56FE\u7247\uFF0C\u4E00\u822C\u6BCF\u4E00\u9875\u5F15\u5BFC\u9875\u80CC\u666F\u8272\u4E5F\u53EF\u4EE5\u6E10\u53D8\uFF0C\u7136\u540E\u6BCF\u4E00\u9875\u529F\u80FD\u8BF4\u660E\u4E00\u822C\u6709\u975E\u5168\u5C4F\u56FE\u7247\u3001\u6807\u9898\u3001\u526F\u6807\u9898\u7B49\u7B49\uFF0C\u4F60\u53EF\u4EE5\u5E26\u5165\u5176\u4ED6\u5143\u7D20\uFF0C\u8BA9\u9875\u9762\u66F4\u52A0\u7F8E\u89C2\uFF0C\u5E76\u4E14\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u9700\u8981\u81EA\u5DF1\u7ED8\u5236svg\u56FE\u7247\uFF0C\u5E76\u5B58\u653E\u5728`doc/res`\u6587\u4EF6\u5939\u4E0B\u9762\uFF0C\u5E76\u5728html\u4E2D\u4F7F\u7528\n- \u80CC\u666F\u8272\u4E3A\u4E86\u589E\u5F3A\u5C42\u6B21\u611F\uFF0C\u6DFB\u52A0\u7684\u68A6\u5E7B\u6CE1\u6CE1\u6216\u8005\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u5143\u7D20\u7684div\uFF0C\u5FC5\u987B\u53EA\u80FD\u58F0\u660E\u4E3A`circle`\uFF0C\u5E76\u4E14\u4E00\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\uFF0C\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Abackground: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);\uFF0C\u5982\u679C\u9700\u8981\u591A\u4E2A`radial-gradient`\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u6BCF\u4E2A\u5F84\u5411\u6E10\u53D8\u80CC\u666F\u90FD\u5FC5\u987B\u58F0\u660E\u4E3A\u4E00\u4E2Adiv\u8282\u70B9\uFF0C\u6BCF\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\u3002\n";
|
|
1
|
+
export declare const uiDesignPromptTemplate = "# UI\u8BBE\u8BA1\u89C4\u5219\uFF0C\u7279\u522B\u6CE8\u610F\u5FC5\u987B\u4F7F\u7528UI\u89C4\u8303`.bytefun/UI\u8BBE\u8BA1\u89C4\u8303.md`\u91CC\u9762\u9ED8\u8BA4\u7684\u4E3B\u9898\u76AE\u80A4\u6765\u8BBE\u8BA1\uFF0C\u4E0D\u5F97\u4F7F\u7528\u5176\u4ED6\u4E3B\u9898\u76AE\u80A4\u3002\n\n## \u4E00\u3001\u7981\u6B62\u7684\u4E8B\u60C5\n- \u7981\u6B62\u4F7F\u7528\u4EFB\u4F55\u524D\u7AEF\u6846\u67B6\uFF0C\u53EA\u4F7F\u7528 html+\u7C7B\u9009\u62E9\u5668\u6837\u5F0F+js \u6765\u5B9E\u73B0\u3002\n- \u7981\u6B62\u4F7F\u7528js\u4EE3\u7801\u6765\u62FC\u63A5html\u5B57\u7B26\u4E32\uFF0C\u5FC5\u987B\u5728body\u6807\u7B7E\u91CC\u9762\u76F4\u63A5\u5199html\u4EE3\u7801\u3002\n- \u7981\u6B62\u4F7F\u7528js\u4EE3\u7801\u6765\u58F0\u660E\u4EFB\u4F55\u9875\u9762\u663E\u793A\u6240\u9700\u7684\u6570\u636E\uFF0C\u6240\u6709\u6570\u636E\u90FD\u5FC5\u987B\u5728html\u4EE3\u7801\u4E2D\u76F4\u63A5\u5199\u6B7B\u3002\n- \u7981\u6B62\u4F7F\u7528\u6587\u672C\u6E10\u53D8\u8272\uFF0C\u5FC5\u987B\u4F7F\u7528\u7EAF\u8272\u6587\u672C\uFF0C\u4E5F\u5C31\u662F\u7981\u6B62\u4F7F\u7528`-webkit-text-fill-color`\u5C5E\u6027\u3002\n- \u7981\u6B62\u7ED9\u9875\u9762\u6DFB\u52A0`\u624B\u673A\u9876\u90E8\u72B6\u6001\u680F`\u3001`\u624B\u673A\u5E95\u90E8\u6307\u793A\u5668\u680F`\u4E24\u4E2A\u975E\u9875\u9762\u5185\u5BB9\u7684\u5143\u7D20\u8282\u70B9\uFF0C\u8FD9\u662F\u624B\u673A\u786C\u4EF6\u81EA\u5E26\u7684\u5143\u7D20\uFF0C\u4E0D\u80FD\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u3002\n- \u7981\u6B62\u4F7F\u7528`:before`\u3001`:after`\u4F2A\u5143\u7D20\uFF0C\u5FC5\u987B\u4F7F\u7528\u5176\u4ED6\u6807\u7B7E\u6765\u5B9E\u73B0\u3002\n- loading\u8282\u70B9\u7684\u5B9E\u73B0\u7981\u6B62\u4F7F\u7528div\u6807\u7B7E\u4E0E\u8FB9\u6846\u5C5E\u6027\u5B9E\u73B0\uFF0C\u5FC5\u987B\u4F7F\u7528\u56FE\u6807icon\u7684i\u6807\u7B7E\u6765\u5B9E\u73B0loading\u7684\u8282\u70B9\n- \u7981\u6B62\u4E3Ahtml\u6807\u7B7E\u8282\u70B9\u6DFB\u52A0\u52A8\u753B\u6216\u8FC7\u6E21\u6548\u679C\uFF0C\u9875\u9762\u8BBE\u8BA1\u4E0D\u9700\u8981\u4EFB\u4F55\u52A8\u753B\u548C\u8FC7\u6E21\u6548\u679C\uFF0C\u6BD4\u5982\u7981\u6B62\uFF1A@keyframes\u3001transition\u3001animation \u7B49\u3002\n- \u5361\u7247\u3001item\u9879\u7B49\u5143\u7D20\u5FC5\u987B\u8981\u6709hover\u4E0E\u70B9\u51FB\u53CD\u9988\uFF0C\u70B9\u51FB\u53CD\u9988\u5FC5\u987B\u4F7F\u7528\u6D45\u8272\u7684\u80CC\u666F\u8272background\u6765\u53CD\u9988\u5C31\u884C\uFF0C\u4E25\u7981\u4F7F\u7528transform\u6548\u679C\n - \u274C \u9519\u8BEF\u7684\u7528\u6CD5\uFF1A \n ``` css\n .hot-sales-item:hover {\n transform: translateX(...px);\n }\n ```\n - \u2705 \u6B63\u786E\u7684\u7528\u6CD5\uFF1A\n ``` css\n .hot-sales-item:hover {\n background: ...;\n }\n ```\n- \u7981\u6B62\u4F7F\u7528div\u6807\u7B7E\u6765\u5B9E\u73B0image\u56FE\u7247\uFF0C\u5FC5\u987B\u8981\u4F7F\u7528img\u6807\u7B7E\u6765\u5B9E\u73B0\u56FE\u7247\u8282\u70B9\uFF0Cimg\u6807\u7B7E\u7684src\u5C5E\u6027\u5FC5\u987B\u8BBE\u7F6E\u4E3A\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`\uFF0C\u5176\u4E2D\u91CC\u9762\u7684`showImg1`\u53EF\u4EE5\u6539\u4E3A1~30\u7684\u4EFB\u610F\u4E00\u4E2A\u6570\u5B57\uFF0C\u6BD4\u5982\uFF1A`showImg5`\u3002\n - \u274C\u9519\u8BEF\u7684\u5199\u6CD5\uFF1A\n ``` html\n <div class=\"bestseller-cover\" id=\"bestsellerCover1\" name=\"\u7545\u9500\u4E66\u7C4D\u5C01\u97621\" nodeType=\"image\">\n </div>\n ```\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ``` html\n <img class=\"bestseller-cover\" id=\"bestsellerCover1\" name=\"\u7545\u9500\u4E66\u7C4D\u5C01\u97621\" nodeType=\"image\" src=\"https://oss.bytefungo.com/f1/showImg7.jpg\"> \n ```\n\n## \u4E8C\u3001\u6837\u5F0F\u89C4\u5219\n- \u6837\u5F0F\u4EE3\u7801\u5FC5\u987B\u4F7F\u7528\u7C7B\u9009\u62E9\u5668\u6837\u5F0FClass-based Style / Class Selector Style\u65B9\u5F0F\uFF0C\u4E0D\u5F97\u4F7F\u7528\u884C\u5185\u6837\u5F0FInline Style\u6216\u5916\u90E8\u6587\u4EF6\u3002\n- \u9075\u5FAA\u624B\u673A\u5C3A\u5BF8\u89C4\u683C(\u5BBD\u5EA6 393px \u9AD8\u5EA6 808px)\n- \u9996\u9875/\u63A8\u8350tab\u7684\u5206\u7C7B/\u529F\u80FD\u5404\u4E2A\u5165\u53E3\u7684\u56FE\u6807\u4E00\u822C\u9700\u8981\u4F7F\u7528\u4E0D\u4E00\u6837\u7684\u989C\u8272\uFF0C\u5F88\u5C11\u4F1A\u7EDF\u4E00\u5168\u90E8\u4F7F\u7528\u54C1\u724C\u4E3B\u9898\u8272\n- \u6240\u6709radio\u3001checkBox\u90FD\u5FC5\u987B\u4F7F\u7528i\u6807\u7B7E\u8BBE\u7F6EFontAwesome\u56FE\u6807\u6765\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u4F7F\u7528\u7CFB\u7EDF\u7684input\u6807\u7B7E\u5B9E\u73B0\u3002\n- \u5982\u7528\u6237\u6CA1\u6709\u660E\u786E\u63CF\u8FF0\u8BF4\u660E\u9875\u9762\u80CC\u666F\u8272\uFF0C\u53EA\u6709\u95EA\u5C4F\u9875\u9762\u7684\u80CC\u666F\u8272\u5141\u8BB8\u8BBE\u7F6E\u54C1\u724C\u4E3B\u8272\u6216\u54C1\u724C\u4E3B\u8272\u4E0E\u54C1\u724C\u6B21\u8272\u7684\u6E10\u53D8\u8272\uFF0C\u5176\u4ED6\u9875\u9762\u5FC5\u987B\u4F7F\u7528\u975E \u54C1\u724C\u4E3B\u8272 \u4E0E\u975E \u54C1\u724C\u6B21\u8272 \u7684\u7EAF\u8272\u505A\u9875\u9762\u80CC\u666F\u8272\uFF0C\u6BD4\u5982\u4E00\u822C\u4F7F\u7528\u767D\u8272\u7CFB\uFF0C\u5982\u679C\u662F\u6697\u9ED1\u98CE\u90A3\u5C31\u662F\u9ED1\u8272\u7CFB\u3002\n- \u8F93\u5165\u6846`input`\u5982\u679C\u9700\u8981\u5C55\u793A\u6587\u5B57 label\uFF0C\u5C3D\u91CF\u4F7F\u7528 icon \u4EE3\u66FF\u6587\u5B57 label\uFF0C\u5E76\u4E14 icon \u91CD\u53E0\u5728\u8F93\u5165\u6846\u7684\u5DE6\u4FA7\uFF0C\u8FD9\u6837\u6574\u4E2A\u9875\u9762\u7684\u7A7A\u95F4\u5229\u7528\u7387\u9AD8\u3002\n- \u5982\u679C\u4E3B\u9898\u98CE\u683C\u662F\u6697\u9ED1\u98CE\u683C\u7684\u8BDD\uFF0C\u9ED8\u8BA4\u53EF\u4EE5\u7ED9\u6BCF\u4E2A\u9875\u9762\u6DFB\u52A0\u591A\u4E2A\u73BB\u7483\u6548\u679C\u7684\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u7C7B\u4F3C\u8FD9\u6837\uFF1A`background: radial-gradient(circle, rgba(0, 242, 255, 0.1) 0%, rgba(0, 0, 0, 0) 70%);`\uFF0C\u91CC\u9762\u7684\u989C\u8272\u548C\u6E10\u53D8\u8303\u56F4\u53EF\u4EE5\u6839\u636E\u5B9E\u9645\u60C5\u51B5\u8C03\u6574\u3002\n- \u80CC\u666F\u8272\u4E3A\u4E86\u589E\u5F3A\u5C42\u6B21\u611F\uFF0C\u6DFB\u52A0\u7684\u68A6\u5E7B\u6CE1\u6CE1\u6216\u8005\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u5143\u7D20\u7684div\uFF0C\u5FC5\u987B\u53EA\u80FD\u58F0\u660E\u4E3A`circle`\uFF0C\u5E76\u4E14\u4E00\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\uFF0C\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Abackground: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);\uFF0C\u5982\u679C\u9700\u8981\u591A\u4E2A`radial-gradient`\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u6BCF\u4E2A\u5F84\u5411\u6E10\u53D8\u80CC\u666F\u90FD\u5FC5\u987B\u58F0\u660E\u4E3A\u4E00\u4E2Adiv\u8282\u70B9\uFF0C\u6BCF\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\u3002\n- \u5361\u7247\u3001item\u9879\u7B49\u5143\u7D20\u5FC5\u987B\u8981\u6709\u4E00\u4E2Ahover\u540E\u6539\u53D8\u80CC\u666F\u8272\u7684\u53CD\u9988\u6548\u679C\uFF0C\u4E0D\u80FD\u4F7F\u7528transform\u6548\u679C\uFF0C\u53EA\u80FD\u4F7F\u7528\u80CC\u666F\u8272\u6548\u679C\u3002\n\n## \u4E09\u3001\u5FC5\u987B\u7ED9\u6BCF\u4E00\u4E2A\u8282\u70B9\u6DFB\u52A0id\u3001name\u3001nodeType\u5C5E\u6027\n- \u7279\u522B\u6CE8\u610F\uFF0C`i`\u548C`div`\u7B49\u6807\u7B7E\u4E5F\u5FC5\u987B\u6DFB\u52A0 id\u3001name\u3001nodeType \u5C5E\u6027\uFF0C\u6BCF\u4E00\u4E2A\u8282\u70B9\u90FD\u9700\u8981\u6DFB\u52A0\u8FD9\u4E09\u4E2A\u5C5E\u6027\uFF0C\u5343\u4E07\u522B\u6F0F\u6389\u4E86\uFF0C\u8FD9\u662F\u5FC5\u8981\u6761\u4EF6\n- id \u5C5E\u6027\u5FC5\u987B\u53EA\u80FD\u4F7F\u7528\u82F1\u6587\u6216\u6570\u5B57\u7EC4\u6210\uFF0C\u4E14\u4E0D\u80FD\u4EE5\u6570\u5B57\u5F00\u5934\uFF0C\u5E76\u4E14\u6574\u4E2A\u9875\u9762 id \u5C5E\u6027\u7684\u503C\u5FC5\u987B\u552F\u4E00\uFF0C\u4F7F\u7528\u9A7C\u5CF0\u7684\u547D\u540D\u65B9\u5F0F\n- name \u5C5E\u6027\u5FC5\u987B\u662F\u4E2D\u6587\u6216\u6570\u5B57\uFF0C\u5E76\u4E14\u4E0D\u80FD\u5305\u542B\u7279\u6B8A\u5B57\u7B26\n- \u5982\u679C\u662F\u901A\u8FC7\u70B9\u51FBitem\u9879\u5207\u6362\u5C55\u793A\u5185\u5BB9\u7684\uFF0C\u90A3\u4E48item\u9879\u7684nodeType\u5FC5\u987B\u662F`tabMenuBarItem`\uFF0Ctab panel\u7684nodeType\u5FC5\u987B\u662F`tabPanel`\uFF0C`tabMenuBarItem`\u7684\u7236\u4EB2\u5BB9\u5668\u662F`tabMenuBar`\uFF0C\u4E0D\u5F97\u4F7F\u7528`horizontalListView`\u6765\u4EE3\u66FF`tabMenuBar`\n- nodeType \u5C5E\u6027\u7684\u503C\u5FC5\u987B\u662F`\u7EC4\u4EF6\u7C7B\u578B\u679A\u4E3E (nodeType)\u679A\u4E3E` \u4E2D\u7684\u4E00\u4E2A\uFF0C\u4E00\u4E9B\u5E03\u5C40\u5BB9\u5668\u9700\u8981\u9075\u5B88\u4EE5\u4E0B\u8BF4\u660E\u6765\u9009\u62E9\u6B63\u786E\u7684nodeType\uFF1A\n - \u5217\u8868\u5BB9\u5668\uFF1A`verticalListView`\u3001`horizontalListView`\u3001`listItemCard`\uFF0C\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u5217\u8868\u9879\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u3001\u5206\u7C7B\u5217\u8868\u3001\u6807\u7B7E\u5217\u8868\u7B49\uFF0C\u53EF\u4EE5\u652F\u6301\u591A\u884C\u591A\u5217\u7684\u5217\u8868\u5E03\u5C40\n - \u5217\u8868\u9875\u811A\u5BB9\u5668\uFF1A`listFooterContainer`\uFF0C\u7528\u4E8E\u5E03\u5C40\u5217\u8868\u7684\u9875\u811A\uFF0C\u6BD4\u5982\uFF1A\u52A0\u8F7D\u66F4\u591A\u3001\u6CA1\u6709\u66F4\u591A\u4E86\u7B49\n - \u7F51\u683C\u5BB9\u5668\uFF1AgridContainer\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u7F51\u683C\u9879\uFF0C\u91CC\u9762\u5305\u542BN\u4E2AgridItem\uFF0C\u6BD4\u5982\uFF1A\u5206\u7C7B\u7F51\u683C\u5165\u53E3\n - \u6D41\u5F0F\u5BB9\u5668\uFF1A\u7528\u4E8E\u5E03\u5C40\u591A\u4E2A\u5B50\u9879\uFF0C\u5B50\u9879\u53EF\u4EE5\u5728\u4E00\u884C\u663E\u793A\uFF0C\u5F53\u4F4D\u7F6E\u4E0D\u591F\u65F6\u5C31\u6362\u884C\u663E\u793A\uFF0C\u6BD4\u5982\uFF1A\u4E00\u7EC4\u6807\u7B7Etag\u7684\u6392\u7248\u5E03\u5C40\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A`multiStateContainer`, `oneStateContentContainer`\uFF0C\u7528\u4E8E\u4E0D\u662F\u901A\u8FC7\u4EA4\u4E92\uFF0C\u800C\u662F\u901A\u8FC7\u903B\u8F91\u72B6\u6001\u53D8\u91CF\u53D8\u5316\u800C\u663E\u793A\u4E0D\u540C\u72B6\u6001\u7684\u5185\u5BB9\u5BB9\u5668\uFF0C\u6BD4\u5982\uFF1A\u767B\u5F55\u72B6\u6001\u548C\u672A\u767B\u5F55\u72B6\u6001\u5206\u522B\u663E\u793A\u4E0D\u540C\u7684\u5185\u5BB9\u3002\n- \u9AD8\u7EA7\u7EC4\u4EF6\u8282\u70B9\u7684nodeType\u7ED3\u6784\u89C4\u5219\uFF1A\n - tab \u9009\u9879\u5361\uFF1A`tabMenuBar`\u662Ftab\u9009\u9879\u5361\u83DC\u5355\u680F\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`tabMenuBarItem`\uFF0C`tabPanelFather`\u662Ftab\u9009\u9879\u5361\u5185\u5BB9\u5BB9\u5668\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`tabPanel`\uFF0C`tabMenuBar`\u548C`tabPanelFather`\u5FC5\u987B\u540C\u65F6\u5B58\u5728\uFF0C`tabPanel`\u7684\u6570\u91CF\u5FC5\u987B\u548C`tabMenuBarItem`\u7684\u6570\u91CF\u76F8\u540C\n - viewPager \u8F6E\u64AD\uFF1A`viewPager`\u662F\u8F6E\u64AD\u5BB9\u5668\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`viewPagerItem`\uFF0C`viewPagerIndicatorContainer`\u662F\u8F6E\u64AD\u6307\u793A\u5668\u5BB9\u5668\uFF0C`viewPager`\u4E0E`viewPagerIndicatorContainer`\u5FC5\u987B\u540C\u65F6\u5B58\u5728\n - \u4E00\u884C\u4E0D\u591F\u4F4D\u7F6E\u663E\u793A\u5C31\u6362\u884C\u7684\u5BB9\u5668\uFF1A`inlineBlockAndWrap`\uFF0C\u91CC\u9762\u5305\u542BN\u4E2A`blockItem`\uFF0C`blockItem`\u662F\u5B83\u7684\u5B50\u9879\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A\u4E00\u4E2A`multiStateContainer`\u591A\u72B6\u6001\u5BB9\u5668\u5305\u542B\u591A\u4E2A`oneStateContentContainer`\n\n- \u7EC4\u4EF6\u7C7B\u578B\u679A\u4E3E (nodeType)\u679A\u4E3E\uFF1A\n\n - \u5F62\u72B6\uFF1A`rect`, `circle`, `line`\n - \u57FA\u7840\u7EC4\u4EF6\uFF1A`text`\u3001`button`\u3001`input`\u3001`icon`\u3001`image`\n - \u57FA\u7840\u5BB9\u5668\uFF1A`container`\n - \u7F51\u683C\u5BB9\u5668\uFF1A`gridContainer`\u3001`gridItem`\n - \u6D41\u5F0F\u5BB9\u5668\uFF1A`inlineBlockAndWrap`\u3001`blockItem`\n - \u5F00\u5173\uFF1A`switch`\n - \u5355\u9009\uFF1A`radioGroup`\u3001`radio`\n - \u591A\u9009\uFF1A`checkBoxGroup`\u3001`checkBox`\n - \u9876\u90E8\u5BFC\u822A\u680F\uFF1A`topNavigateBar`\n - \u591A\u72B6\u6001\u5BB9\u5668\uFF1A`multiStateContainer`, `oneStateContentContainer`\n - \u5217\u8868\uFF1A`verticalListView`, `horizontalListView`, `listItemCard`\u3001`listFooterContainer`\n - \u8F6E\u64AD\uFF1A`viewPager`, `viewPagerItem`, `viewPagerIndicatorContainer`\n - tab \u9009\u9879\u5361\uFF1A`tabPanelFather`, `tabPanel`, `tabMenuBar`, `tabMenuBarItem`\n - \u5E95\u90E8\u5BFC\u822A: `bottomTabContentContainer`, `subPage`, `bottomTabNavigateBar`, `bottomTabNavigateBarItem`\n - \u5BF9\u8BDD\u6846\uFF1A`dialogOverlay`, `dialogContent`\n - toast \u63D0\u793A\uFF1A`toast`\n - \u4E0B\u62C9\u83DC\u5355\uFF1A`dropDownMenu`\n - \u4FA7\u6ED1\u9762\u677F\uFF1A`sideSlidePanel`\n - \u624B\u673A\u786C\u4EF6\u5143\u7D20\uFF1A`phoneTopStatusBar`\u3001`phoneBottomIndicatorBar`\uFF0C\u8FD9\u4E24\u4E2A\u5143\u7D20\u662F\u624B\u673A\u786C\u4EF6\u81EA\u5E26\u7684\u5143\u7D20\uFF0C\u4E0D\u80FD\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u3002\n\n## \u56DB\u3001\u8F6E\u64AD\u4E0ETabs\u7EC4\u4EF6\u7684\u89C4\u5219\n- \u8F6E\u64AD\u7684\u6BCF\u4E00\u4E2ASlide\u548CTabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u4F7F\u7528`display: none`\u548C`display: block/flex`\u6765\u5B9E\u73B0\u9690\u85CF\u548C\u663E\u793A\u7684\u4E92\u65A5\u5207\u6362\n- \u8F6E\u64AD\u7684\u6BCF\u4E00\u4E2ASlide\u5FC5\u987B\u6709html\u4EE3\u7801\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ASlide\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Slide\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u9700\u8981\u6DFB\u52A0\u70B9\u51FB\u5207\u6362Tab Panel\u7684\u529F\u80FD\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ATab Panel\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Tab Panel\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u8981\u6709\u5185\u5BB9\uFF0C\u4E0D\u5F97\u6577\u884D\u5730\u5C55\u793A\u6CA1\u6709\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u3001loading\u7684\u60C5\u51B5\uFF0C\u5FC5\u987B\u5C55\u793A\u6709\u6570\u636E\u7684\u5177\u4F53\u5185\u5BB9\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u5077\u61D2\u6577\u884D\u3002\n- Tabs\u9009\u9879\u5361\u7EC4\u4EF6\u6BCF\u4E00\u4E2ATab Panel\u90FD\u5FC5\u987B\u8981\u6709html\u4EE3\u7801\u5B9E\u73B0\uFF0C\u4E0D\u5F97\u53EA\u5199\u7B2C1\u4E2ATab Panel\u7684html\u4EE3\u7801\uFF0C\u5176\u4ED6Tab Panel\u7684html\u4EE3\u7801\u4E5F\u5FC5\u987B\u8981\u5199\u3002\n\n## \u4E94\u3001\u56FE\u6807\u4E0E\u56FE\u7247\u7684\u89C4\u5219\n- \u5F53\u9700\u8981icon\u56FE\u6807\u65F6\u5FC5\u987B\u4F7F\u7528FontAwesome\u56FE\u6807\uFF0C\u6BD4\u5982\uFF1A`<i name=\"\u5FAE\u4FE1Icon\" vtype=\"icon\" id=\"wxIcon\" class=\"fab fa-weixin\"></i>`\uFF0C\u5E76\u4E14\u6CE8\u610F\u56FE\u6807\u7684\u989C\u8272\uFF0C\u6BD4\u5982\u5FAE\u4FE1\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u7EFF\u8272\u7CFB\uFF0CQQ\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u84DD\u8272\u7CFB\uFF0C\u5FAE\u535A\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u7EA2\u8272\u7CFB\uFF0C\u652F\u4ED8\u5B9D\u56FE\u6807\u4E00\u822C\u4F7F\u7528\u6D45\u84DD\u8272\u7CFB\u7B49\u7B49\n- \u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528 emoji \u8868\u60C5\u7B26\u53F7\uFF0C\u4E0D\u5F97\u4F7F\u7528\u4EFB\u4F55 emoji \u8868\u60C5\u7B26\u53F7\uFF0C\u8BF7\u4F7F\u7528FontAwesome\u5B57\u4F53\u56FE\u6807\u6765\u4EE3\u66FF\u3002\n- LOGO\u56FE\u7247\u548C\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u5FC5\u987B\u4F7F\u7528`doc/res/svgMap.json`\u6587\u4EF6\u4E2Djson\u5BF9\u8C61\u6B63\u786E\u5B57\u6BB5\u7684https\u94FE\u63A5\u503C\uFF0C\u7981\u6B62\u4F7F\u7528\u672C\u5730\u56FE\u7247\u8DEF\u5F84`doc/res/logo.svg`\u6587\u4EF6\uFF0C\u800C\u662F\u4F7F\u7528\u7C7B\u4F3C\uFF1A`https://editor.bytefungo.com/dfile/img/xxxxx.svg`\u8FD9\u6837\u7684\u56FE\u7247\u94FE\u63A5\u5730\u5740\uFF0C\u6BD4\u5982\u95EA\u5C4F\u9875\u3001\u767B\u5F55\u9875\u3001\u6CE8\u518C\u9875\u7528\u5230\u7684LOGO\u56FE\u7247\uFF0C\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u7B49\u3002\n- jpg\u3001jpeg\u7C7B\u578B\u56FE\u7247\u5FC5\u987B\u4F7F\u7528\u56FE\u7247\u5730\u5740\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`)\uFF0C\u5176\u4E2D\u7ED3\u5C3E\u7684\u2019showImg1'\u53EF\u4EE5\u6362\u4E3A\u4ECE 1 \u5230 30 \u7684\u6570\u5B57\uFF0C1~30 \u7684\u6570\u5B57\u5FC5\u987B\u968F\u673A\u6311\u9009\uFF0C\u4E0D\u5F97\u6BCF\u4E2A\u9875\u9762\u6BCF\u4E2A\u56FE\u7247\u90FD\u4F7F\u7528\u540C\u4E00\u4E2A\u6570\u5B57\u3002\u5199\u6CD5\u6BD4\u5982\uFF1A`<img src=\"https://oss.bytefungo.com/f1/showImg17.jpg\" alt=\"xxx\" class=\"xxx\" nodeType=\"image\">`\n\n## \u516D\u3001\u9996\u9875\u4E3B\u4F53\u9875\u4E0E\u5B50\u9875\u9762\u7684\u89C4\u5219\n- \u9996\u9875\u4E3B\u4F53\u9875\u5D4C\u5957\u4E86\u591A\u4E2A\u5B50\u9875\u9762\uFF0C\u6BCF\u4E00\u4E2A\u5B50\u9875\u9762\u90FD\u4E0D\u9700\u8981\u586B\u5145\u5185\u5BB9\uFF0C\u7A7A\u767D\u5C31\u884C\uFF0C\u540E\u9762\u4F1A\u6709\u4E13\u95E8\u7684\u4EFB\u52A1\u6765\u8BBE\u8BA1\u5177\u4F53\u7684\u5B50\u9875\u9762\u3002\n- \u4EFB\u4F55\u5B50\u9875\u9762\u90FD\u5FC5\u987B\u7981\u6B62\u6DFB\u52A0\u5E95\u90E8\u5BFC\u822A\u680F\u8282\u70B9\u5230\u9875\u9762\uFF0C\u56E0\u4E3A\u5B50\u9875\u9762\u662F\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u4E2D\u7684\uFF0C\u7236\u9875\u9762\u5DF2\u7ECF\u6709\u5E95\u90E8\u5BFC\u822A\u680F\u4E86\uFF0C\u5B50\u9875\u9762\u4E0D\u9700\u8981\u518D\u6DFB\u52A0\u5E95\u90E8\u5BFC\u822A\u680F\uFF0C\u4E5F\u4E0D\u5F97\u6DFB\u52A0\u4E8C\u7EA7\u9875\u9762\u7684\u6807\u9898\u680F\u5230\u5B50\u9875\u9762\u4E2D\uFF0C\u56E0\u4E3A\u5B50\u9875\u9762\u662F\u5D4C\u5957\u5728\u9996\u9875\u4E3B\u4F53\u9875\u4E2D\u7684\uFF0C\u9996\u9875\u4E3B\u4F53\u9875\u548C\u5B83\u7684\u5B50\u9875\u9762\u90FD\u662F\u4E00\u7EA7\u9875\u9762\uFF0C\u56E0\u6B64\u4E0D\u5F97\u6DFB\u52A0\u4E8C\u7EA7\u9875\u9762\u7684\u6807\u9898\u680F\u5230\u5B50\u9875\u9762\u4E2D\u3002\n\n## \u4E03\u3001\u5982\u679C\u7528\u6237\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u8BE5\u9875\u9762\u8BBE\u8BA1\u9700\u6C42\uFF0C\u90A3\u5C31\u6309\u7167\u4EE5\u4E0B\u9875\u9762\u9ED8\u8BA4\u89C4\u5219\u8BBE\u8BA1\n- \u95EA\u5C4F\u9875\uFF1A\u7981\u6B62\u4F7F\u7528\u5168\u5C4F\u56FE\u7247\uFF0C\u4E00\u822C\u4F7F\u7528\u4E3B\u9898\u76F8\u5173\u7684\u6E10\u53D8\u8272\uFF0C\u7136\u540E\u5E26\u6709\u4E00\u4E9B\u989D\u5916\u7684\u80CC\u666F\u5143\u7D20\u589E\u5F3A\u754C\u9762\u5C42\u6B21\u611F\uFF0C\u6BD4\u5982\uFF1A\u68A6\u5E7B\u5706\u5708\u6CE1\u6CE1\u3001\u73BB\u7483\u6548\u679C\u7684\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u7B49\u7B49\u5143\u7D20\n- \u5F15\u5BFC\u9875\uFF1A\u5C3D\u91CF\u4E0D\u4F7F\u7528\u5168\u5C4F\u56FE\u7247\uFF0C\u4E00\u822C\u6BCF\u4E00\u9875\u5F15\u5BFC\u9875\u80CC\u666F\u8272\u4E5F\u53EF\u4EE5\u6E10\u53D8\uFF0C\u7136\u540E\u6BCF\u4E00\u9875\u529F\u80FD\u8BF4\u660E\u4E00\u822C\u6709\u975E\u5168\u5C4F\u56FE\u7247\u3001\u6807\u9898\u3001\u526F\u6807\u9898\u7B49\u7B49\uFF0C\u4F60\u53EF\u4EE5\u5E26\u5165\u5176\u4ED6\u5143\u7D20\uFF0C\u8BA9\u9875\u9762\u66F4\u52A0\u7F8E\u89C2\uFF0C\u5E76\u4E14\u5F15\u5BFC\u9875\u7684\u5F15\u5BFC\u56FE\u7247\u9700\u8981\u81EA\u5DF1\u7ED8\u5236svg\u56FE\u7247\uFF0C\u5E76\u5B58\u653E\u5728`doc/res`\u6587\u4EF6\u5939\u4E0B\u9762\uFF0C\u5E76\u5728html\u4E2D\u4F7F\u7528\n- \u80CC\u666F\u8272\u4E3A\u4E86\u589E\u5F3A\u5C42\u6B21\u611F\uFF0C\u6DFB\u52A0\u7684\u68A6\u5E7B\u6CE1\u6CE1\u6216\u8005\u5706\u5F62\u5F84\u5411\u6E10\u53D8\u5143\u7D20\u7684div\uFF0C\u5FC5\u987B\u53EA\u80FD\u58F0\u660E\u4E3A`circle`\uFF0C\u5E76\u4E14\u4E00\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\uFF0C\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Abackground: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);\uFF0C\u5982\u679C\u9700\u8981\u591A\u4E2A`radial-gradient`\u5F84\u5411\u6E10\u53D8\u80CC\u666F\uFF0C\u6BCF\u4E2A\u5F84\u5411\u6E10\u53D8\u80CC\u666F\u90FD\u5FC5\u987B\u58F0\u660E\u4E3A\u4E00\u4E2Adiv\u8282\u70B9\uFF0C\u6BCF\u4E2Adiv\u7684`background:`\u53EA\u80FD\u58F0\u660E\u4E00\u4E2A`radial-gradient`\u3002\n";
|
|
2
2
|
//# sourceMappingURL=uiDesign.d.ts.map
|
package/build/uiDesign.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiDesign.d.ts","sourceRoot":"","sources":["../src/uiDesign.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"uiDesign.d.ts","sourceRoot":"","sources":["../src/uiDesign.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,uxmBA0GlC,CAAA"}
|
package/build/uiDesign.js
CHANGED
|
@@ -9,7 +9,7 @@ export const uiDesignPromptTemplate = `# UI设计规则,特别注意必须使
|
|
|
9
9
|
- 禁止使用\`:before\`、\`:after\`伪元素,必须使用其他标签来实现。
|
|
10
10
|
- loading节点的实现禁止使用div标签与边框属性实现,必须使用图标icon的i标签来实现loading的节点
|
|
11
11
|
- 禁止为html标签节点添加动画或过渡效果,页面设计不需要任何动画和过渡效果,比如禁止:@keyframes、transition、animation 等。
|
|
12
|
-
- hover
|
|
12
|
+
- 卡片、item项等元素必须要有hover与点击反馈,点击反馈必须使用浅色的背景色background来反馈就行,严禁使用transform效果
|
|
13
13
|
- ❌ 错误的用法:
|
|
14
14
|
\`\`\` css
|
|
15
15
|
.hot-sales-item:hover {
|
|
@@ -42,6 +42,7 @@ export const uiDesignPromptTemplate = `# UI设计规则,特别注意必须使
|
|
|
42
42
|
- 输入框\`input\`如果需要展示文字 label,尽量使用 icon 代替文字 label,并且 icon 重叠在输入框的左侧,这样整个页面的空间利用率高。
|
|
43
43
|
- 如果主题风格是暗黑风格的话,默认可以给每个页面添加多个玻璃效果的圆形径向渐变背景,类似这样:\`background: radial-gradient(circle, rgba(0, 242, 255, 0.1) 0%, rgba(0, 0, 0, 0) 70%);\`,里面的颜色和渐变范围可以根据实际情况调整。
|
|
44
44
|
- 背景色为了增强层次感,添加的梦幻泡泡或者圆形径向渐变元素的div,必须只能声明为\`circle\`,并且一个div的\`background:\`只能声明一个\`radial-gradient\`,比如正确的写法:background: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);,如果需要多个\`radial-gradient\`径向渐变背景,每个径向渐变背景都必须声明为一个div节点,每个div的\`background:\`只能声明一个\`radial-gradient\`。
|
|
45
|
+
- 卡片、item项等元素必须要有一个hover后改变背景色的反馈效果,不能使用transform效果,只能使用背景色效果。
|
|
45
46
|
|
|
46
47
|
## 三、必须给每一个节点添加id、name、nodeType属性
|
|
47
48
|
- 特别注意,\`i\`和\`div\`等标签也必须添加 id、name、nodeType 属性,每一个节点都需要添加这三个属性,千万别漏掉了,这是必要条件
|
|
@@ -90,9 +91,9 @@ export const uiDesignPromptTemplate = `# UI设计规则,特别注意必须使
|
|
|
90
91
|
- Tabs选项卡组件每一个Tab Panel都必须要有html代码实现,不得只写第1个Tab Panel的html代码,其他Tab Panel的html代码也必须要写。
|
|
91
92
|
|
|
92
93
|
## 五、图标与图片的规则
|
|
93
|
-
- 当需要icon图标时必须使用FontAwesome图标,比如:\`<i name="微信Icon" vtype="icon" id="wxIcon" class="fab fa-weixin"></i
|
|
94
|
+
- 当需要icon图标时必须使用FontAwesome图标,比如:\`<i name="微信Icon" vtype="icon" id="wxIcon" class="fab fa-weixin"></i>\`,并且注意图标的颜色,比如微信图标一般使用绿色系,QQ图标一般使用蓝色系,微博图标一般使用红色系,支付宝图标一般使用浅蓝色系等等
|
|
94
95
|
- 绝对不能使用 emoji 表情符号,不得使用任何 emoji 表情符号,请使用FontAwesome字体图标来代替。
|
|
95
|
-
- LOGO图片和引导页的引导图片必须使用\`doc/res/svgMap.json\`文件中json对象正确字段的https链接值,禁止使用本地图片路径\`doc/res/logo.svg\`文件,而是使用类似:\`https://editor.bytefungo.com/dfile/img/xxxxx.svg
|
|
96
|
+
- LOGO图片和引导页的引导图片必须使用\`doc/res/svgMap.json\`文件中json对象正确字段的https链接值,禁止使用本地图片路径\`doc/res/logo.svg\`文件,而是使用类似:\`https://editor.bytefungo.com/dfile/img/xxxxx.svg\`这样的图片链接地址,比如闪屏页、登录页、注册页用到的LOGO图片,引导页的引导图片等。
|
|
96
97
|
- jpg、jpeg类型图片必须使用图片地址:\`https://oss.bytefungo.com/f1/showImg1.jpg\`),其中结尾的’showImg1'可以换为从 1 到 30 的数字,1~30 的数字必须随机挑选,不得每个页面每个图片都使用同一个数字。写法比如:\`<img src="https://oss.bytefungo.com/f1/showImg17.jpg" alt="xxx" class="xxx" nodeType="image">\`
|
|
97
98
|
|
|
98
99
|
## 六、首页主体页与子页面的规则
|
|
@@ -104,4 +105,4 @@ export const uiDesignPromptTemplate = `# UI设计规则,特别注意必须使
|
|
|
104
105
|
- 引导页:尽量不使用全屏图片,一般每一页引导页背景色也可以渐变,然后每一页功能说明一般有非全屏图片、标题、副标题等等,你可以带入其他元素,让页面更加美观,并且引导页的引导图片需要自己绘制svg图片,并存放在\`doc/res\`文件夹下面,并在html中使用
|
|
105
106
|
- 背景色为了增强层次感,添加的梦幻泡泡或者圆形径向渐变元素的div,必须只能声明为\`circle\`,并且一个div的\`background:\`只能声明一个\`radial-gradient\`,比如正确的写法:background: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);,如果需要多个\`radial-gradient\`径向渐变背景,每个径向渐变背景都必须声明为一个div节点,每个div的\`background:\`只能声明一个\`radial-gradient\`。
|
|
106
107
|
`;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdWlEZXNpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlHckMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB1aURlc2lnblByb21wdFRlbXBsYXRlID0gYCMgVUnorr7orqHop4TliJnvvIznibnliKvms6jmhI/lv4Xpobvkvb/nlKhVSeinhOiMg1xcYC5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kXFxg6YeM6Z2i6buY6K6k55qE5Li76aKY55qu6IKk5p2l6K6+6K6h77yM5LiN5b6X5L2/55So5YW25LuW5Li76aKY55qu6IKk44CCXG5cbiMjIOS4gOOAgeemgeatoueahOS6i+aDhVxuLSDnpoHmraLkvb/nlKjku7vkvZXliY3nq6/moYbmnrbvvIzlj6rkvb/nlKggaHRtbCvnsbvpgInmi6nlmajmoLflvI8ranMg5p2l5a6e546w44CCXG4tIOemgeatouS9v+eUqGpz5Luj56CB5p2l5ou85o6laHRtbOWtl+espuS4su+8jOW/hemhu+WcqGJvZHnmoIfnrb7ph4zpnaLnm7TmjqXlhplodG1s5Luj56CB44CCXG4tIOemgeatouS9v+eUqGpz5Luj56CB5p2l5aOw5piO5Lu75L2V6aG16Z2i5pi+56S65omA6ZyA55qE5pWw5o2u77yM5omA5pyJ5pWw5o2u6YO95b+F6aG75ZyoaHRtbOS7o+eggeS4reebtOaOpeWGmeatu+OAglxuLSDnpoHmraLkvb/nlKjmlofmnKzmuJDlj5joibLvvIzlv4Xpobvkvb/nlKjnuq/oibLmlofmnKzvvIzkuZ/lsLHmmK/npoHmraLkvb/nlKhcXGAtd2Via2l0LXRleHQtZmlsbC1jb2xvclxcYOWxnuaAp+OAglxuLSDnpoHmraLnu5npobXpnaLmt7vliqBcXGDmiYvmnLrpobbpg6jnirbmgIHmoI9cXGDjgIFcXGDmiYvmnLrlupXpg6jmjIfnpLrlmajmoI9cXGDkuKTkuKrpnZ7pobXpnaLlhoXlrrnnmoTlhYPntKDoioLngrnvvIzov5nmmK/miYvmnLrnoazku7boh6rluKbnmoTlhYPntKDvvIzkuI3og73lnKjpobXpnaLkuK3mt7vliqDjgIJcbi0g56aB5q2i5L2/55SoXFxgOmJlZm9yZVxcYOOAgVxcYDphZnRlclxcYOS8quWFg+e0oO+8jOW/hemhu+S9v+eUqOWFtuS7luagh+etvuadpeWunueOsOOAglxuLSBsb2FkaW5n6IqC54K555qE5a6e546w56aB5q2i5L2/55SoZGl25qCH562+5LiO6L655qGG5bGe5oCn5a6e546w77yM5b+F6aG75L2/55So5Zu+5qCHaWNvbueahGnmoIfnrb7mnaXlrp7njrBsb2FkaW5n55qE6IqC54K5XG4tIOemgeatouS4umh0bWzmoIfnrb7oioLngrnmt7vliqDliqjnlLvmiJbov4fmuKHmlYjmnpzvvIzpobXpnaLorr7orqHkuI3pnIDopoHku7vkvZXliqjnlLvlkozov4fmuKHmlYjmnpzvvIzmr5TlpoLnpoHmraLvvJpAa2V5ZnJhbWVz44CBdHJhbnNpdGlvbuOAgWFuaW1hdGlvbiDnrYnjgIJcbi0gaG92ZXLkuI7ngrnlh7vlj43ppojvvJror7fkvb/nlKjmtYXoibLnmoTog4zmma/oibJiYWNrZ3JvdW5k5p2l5Y+N6aaI5bCx6KGM77yM5Lil56aB5L2/55SodHJhbnNmb3Jt5pWI5p6cXG4gICAgLSDinYwg6ZSZ6K+v55qE55So5rOV77yaIFxuICAgIFxcYFxcYFxcYCBjc3NcbiAgICAuaG90LXNhbGVzLWl0ZW06aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLi4ucHgpO1xuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgICAtIOKchSDmraPnoa7nmoTnlKjms5XvvJpcbiAgICBcXGBcXGBcXGAgY3NzXG4gICAgLmhvdC1zYWxlcy1pdGVtOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogLi4uO1xuICAgIH1cbiAgICBcXGBcXGBcXGBcbi0g56aB5q2i5L2/55SoZGl25qCH562+5p2l5a6e546waW1hZ2Xlm77niYfvvIzlv4XpobvopoHkvb/nlKhpbWfmoIfnrb7mnaXlrp7njrDlm77niYfoioLngrnvvIxpbWfmoIfnrb7nmoRzcmPlsZ7mgKflv4Xpobvorr7nva7kuLrvvJpcXGBodHRwczovL29zcy5ieXRlZnVuZ28uY29tL2YxL3Nob3dJbWcxLmpwZ1xcYO+8jOWFtuS4remHjOmdoueahFxcYHNob3dJbWcxXFxg5Y+v5Lul5pS55Li6MX4zMOeahOS7u+aEj+S4gOS4quaVsOWtl++8jOavlOWmgu+8mlxcYHNob3dJbWc1XFxg44CCXG4gIC0g4p2M6ZSZ6K+v55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgIGh0bWxcbiAgICA8ZGl2IGNsYXNzPVwiYmVzdHNlbGxlci1jb3ZlclwiIGlkPVwiYmVzdHNlbGxlckNvdmVyMVwiIG5hbWU9XCLnlYXplIDkuabnsY3lsIHpnaIxXCIgbm9kZVR5cGU9XCJpbWFnZVwiPlxuICAgIDwvZGl2PlxuICAgIFxcYFxcYFxcYFxuICAtIOKchSDmraPnoa7nmoTlhpnms5XvvJpcbiAgICBcXGBcXGBcXGAgaHRtbFxuICAgIDxpbWcgY2xhc3M9XCJiZXN0c2VsbGVyLWNvdmVyXCIgaWQ9XCJiZXN0c2VsbGVyQ292ZXIxXCIgbmFtZT1cIueVhemUgOS5puexjeWwgemdojFcIiBub2RlVHlwZT1cImltYWdlXCIgc3JjPVwiaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nNy5qcGdcIj4gIFxuICAgIFxcYFxcYFxcYFxuXG4jIyDkuozjgIHmoLflvI/op4TliJlcbi0g5qC35byP5Luj56CB5b+F6aG75L2/55So57G76YCJ5oup5Zmo5qC35byPQ2xhc3MtYmFzZWQgU3R5bGUgLyBDbGFzcyBTZWxlY3RvciBTdHlsZeaWueW8j++8jOS4jeW+l+S9v+eUqOihjOWGheagt+W8j0lubGluZSBTdHlsZeaIluWklumDqOaWh+S7tuOAglxuLSDpgbXlvqrmiYvmnLrlsLrlr7jop4TmoLwo5a695bqmIDM5M3B4IOmrmOW6piA4MDhweClcbi0g6aaW6aG1L+aOqOiNkHRhYueahOWIhuexuy/lip/og73lkITkuKrlhaXlj6PnmoTlm77moIfkuIDoiKzpnIDopoHkvb/nlKjkuI3kuIDmoLfnmoTpopzoibLvvIzlvojlsJHkvJrnu5/kuIDlhajpg6jkvb/nlKjlk4HniYzkuLvpopjoibJcbi0g5omA5pyJcmFkaW/jgIFjaGVja0JveOmDveW/hemhu+S9v+eUqGnmoIfnrb7orr7nva5Gb250QXdlc29tZeWbvuagh+adpeWunueOsO+8jOS4jeW+l+S9v+eUqOezu+e7n+eahGlucHV05qCH562+5a6e546w44CCXG4tIOWmgueUqOaIt+ayoeacieaYjuehruaPj+i/sOivtOaYjumhtemdouiDjOaZr+iJsu+8jOWPquaciemXquWxj+mhtemdoueahOiDjOaZr+iJsuWFgeiuuOiuvue9ruWTgeeJjOS4u+iJsuaIluWTgeeJjOS4u+iJsuS4juWTgeeJjOasoeiJsueahOa4kOWPmOiJsu+8jOWFtuS7lumhtemdouW/hemhu+S9v+eUqOmdniDlk4HniYzkuLvoibIg5LiO6Z2eIOWTgeeJjOasoeiJsiDnmoTnuq/oibLlgZrpobXpnaLog4zmma/oibLvvIzmr5TlpoLkuIDoiKzkvb/nlKjnmb3oibLns7vvvIzlpoLmnpzmmK/mmpfpu5Hpo47pgqPlsLHmmK/pu5HoibLns7vjgIJcbi0g6L6T5YWl5qGGXFxgaW5wdXRcXGDlpoLmnpzpnIDopoHlsZXnpLrmloflrZcgbGFiZWzvvIzlsL3ph4/kvb/nlKggaWNvbiDku6Pmm7/mloflrZcgbGFiZWzvvIzlubbkuJQgaWNvbiDph43lj6DlnKjovpPlhaXmoYbnmoTlt6bkvqfvvIzov5nmoLfmlbTkuKrpobXpnaLnmoTnqbrpl7TliKnnlKjnjofpq5jjgIJcbi0g5aaC5p6c5Li76aKY6aOO5qC85piv5pqX6buR6aOO5qC855qE6K+d77yM6buY6K6k5Y+v5Lul57uZ5q+P5Liq6aG16Z2i5re75Yqg5aSa5Liq546755KD5pWI5p6c55qE5ZyG5b2i5b6E5ZCR5riQ5Y+Y6IOM5pmv77yM57G75Ly86L+Z5qC377yaXFxgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgwLCAyNDIsIDI1NSwgMC4xKSAwJSwgcmdiYSgwLCAwLCAwLCAwKSA3MCUpO1xcYO+8jOmHjOmdoueahOminOiJsuWSjOa4kOWPmOiMg+WbtOWPr+S7peagueaNruWunumZheaDheWGteiwg+aVtOOAglxuLSDog4zmma/oibLkuLrkuoblop7lvLrlsYLmrKHmhJ/vvIzmt7vliqDnmoTmoqblubvms6Hms6HmiJbogIXlnIblvaLlvoTlkJHmuJDlj5jlhYPntKDnmoRkaXbvvIzlv4Xpobvlj6rog73lo7DmmI7kuLpcXGBjaXJjbGVcXGDvvIzlubbkuJTkuIDkuKpkaXbnmoRcXGBiYWNrZ3JvdW5kOlxcYOWPquiDveWjsOaYjuS4gOS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYO+8jOavlOWmguato+ehrueahOWGmeazle+8mmJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMCwgMjI5LCAyNTUsIDAuMTUpIDAlLCByZ2JhKDAsIDAsIDAsIDApIDcwJSk777yM5aaC5p6c6ZyA6KaB5aSa5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg5b6E5ZCR5riQ5Y+Y6IOM5pmv77yM5q+P5Liq5b6E5ZCR5riQ5Y+Y6IOM5pmv6YO95b+F6aG75aOw5piO5Li65LiA5LiqZGl26IqC54K577yM5q+P5LiqZGl255qEXFxgYmFja2dyb3VuZDpcXGDlj6rog73lo7DmmI7kuIDkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDjgIJcblxuIyMg5LiJ44CB5b+F6aG757uZ5q+P5LiA5Liq6IqC54K55re75YqgaWTjgIFuYW1l44CBbm9kZVR5cGXlsZ7mgKdcbi0g54m55Yir5rOo5oSP77yMXFxgaVxcYOWSjFxcYGRpdlxcYOetieagh+etvuS5n+W/hemhu+a3u+WKoCBpZOOAgW5hbWXjgIFub2RlVHlwZSDlsZ7mgKfvvIzmr4/kuIDkuKroioLngrnpg73pnIDopoHmt7vliqDov5nkuInkuKrlsZ7mgKfvvIzljYPkuIfliKvmvI/mjonkuobvvIzov5nmmK/lv4XopoHmnaHku7Zcbi0gaWQg5bGe5oCn5b+F6aG75Y+q6IO95L2/55So6Iux5paH5oiW5pWw5a2X57uE5oiQ77yM5LiU5LiN6IO95Lul5pWw5a2X5byA5aS077yM5bm25LiU5pW05Liq6aG16Z2iIGlkIOWxnuaAp+eahOWAvOW/hemhu+WUr+S4gO+8jOS9v+eUqOmpvOWzsOeahOWRveWQjeaWueW8j1xuLSBuYW1lIOWxnuaAp+W/hemhu+aYr+S4reaWh+aIluaVsOWtl++8jOW5tuS4lOS4jeiDveWMheWQq+eJueauiuWtl+esplxuLSDlpoLmnpzmmK/pgJrov4fngrnlh7tpdGVt6aG55YiH5o2i5bGV56S65YaF5a6555qE77yM6YKj5LmIaXRlbemhueeahG5vZGVUeXBl5b+F6aG75pivXFxgdGFiTWVudUJhckl0ZW1cXGDvvIx0YWIgcGFuZWznmoRub2RlVHlwZeW/hemhu+aYr1xcYHRhYlBhbmVsXFxg77yMXFxgdGFiTWVudUJhckl0ZW1cXGDnmoTniLbkurLlrrnlmajmmK9cXGB0YWJNZW51QmFyXFxg77yM5LiN5b6X5L2/55SoXFxgaG9yaXpvbnRhbExpc3RWaWV3XFxg5p2l5Luj5pu/XFxgdGFiTWVudUJhclxcYFxuLSBub2RlVHlwZSDlsZ7mgKfnmoTlgLzlv4XpobvmmK9cXGDnu4Tku7bnsbvlnovmnprkuL4gKG5vZGVUeXBlKeaemuS4vlxcYCDkuK3nmoTkuIDkuKrvvIzkuIDkupvluIPlsYDlrrnlmajpnIDopoHpgbXlrojku6XkuIvor7TmmI7mnaXpgInmi6nmraPnoa7nmoRub2RlVHlwZe+8mlxuICAtIOWIl+ihqOWuueWZqO+8mlxcYHZlcnRpY2FsTGlzdFZpZXdcXGDjgIFcXGBob3Jpem9udGFsTGlzdFZpZXdcXGDjgIFcXGBsaXN0SXRlbUNhcmRcXGDvvIznlKjkuo7luIPlsYDlpJrkuKrliJfooajpobnvvIzmr5TlpoLvvJrllYblk4HliJfooajjgIHliIbnsbvliJfooajjgIHmoIfnrb7liJfooajnrYnvvIzlj6/ku6XmlK/mjIHlpJrooYzlpJrliJfnmoTliJfooajluIPlsYBcbiAgLSDliJfooajpobXohJrlrrnlmajvvJpcXGBsaXN0Rm9vdGVyQ29udGFpbmVyXFxg77yM55So5LqO5biD5bGA5YiX6KGo55qE6aG16ISa77yM5q+U5aaC77ya5Yqg6L295pu05aSa44CB5rKh5pyJ5pu05aSa5LqG562JXG4gIC0g572R5qC85a655Zmo77yaZ3JpZENvbnRhaW5lcueUqOS6juW4g+WxgOWkmuS4que9keagvOmhue+8jOmHjOmdouWMheWQq07kuKpncmlkSXRlbe+8jOavlOWmgu+8muWIhuexu+e9keagvOWFpeWPo1xuICAtIOa1geW8j+WuueWZqO+8mueUqOS6juW4g+WxgOWkmuS4quWtkOmhue+8jOWtkOmhueWPr+S7peWcqOS4gOihjOaYvuekuu+8jOW9k+S9jee9ruS4jeWkn+aXtuWwseaNouihjOaYvuekuu+8jOavlOWmgu+8muS4gOe7hOagh+etvnRhZ+eahOaOkueJiOW4g+WxgFxuICAtIOWkmueKtuaAgeWuueWZqO+8mlxcYG11bHRpU3RhdGVDb250YWluZXJcXGAsIFxcYG9uZVN0YXRlQ29udGVudENvbnRhaW5lclxcYO+8jOeUqOS6juS4jeaYr+mAmui/h+S6pOS6ku+8jOiAjOaYr+mAmui/h+mAu+i+keeKtuaAgeWPmOmHj+WPmOWMluiAjOaYvuekuuS4jeWQjOeKtuaAgeeahOWGheWuueWuueWZqO+8jOavlOWmgu+8mueZu+W9leeKtuaAgeWSjOacqueZu+W9leeKtuaAgeWIhuWIq+aYvuekuuS4jeWQjOeahOWGheWuueOAglxuLSDpq5jnuqfnu4Tku7boioLngrnnmoRub2RlVHlwZee7k+aehOinhOWIme+8mlxuICAtIHRhYiDpgInpobnljaHvvJpcXGB0YWJNZW51QmFyXFxg5pivdGFi6YCJ6aG55Y2h6I+c5Y2V5qCP77yM6YeM6Z2i5YyF5ZCrTuS4qlxcYHRhYk1lbnVCYXJJdGVtXFxg77yMXFxgdGFiUGFuZWxGYXRoZXJcXGDmmK90YWLpgInpobnljaHlhoXlrrnlrrnlmajvvIzph4zpnaLljIXlkKtO5LiqXFxgdGFiUGFuZWxcXGDvvIxcXGB0YWJNZW51QmFyXFxg5ZKMXFxgdGFiUGFuZWxGYXRoZXJcXGDlv4XpobvlkIzml7blrZjlnKjvvIxcXGB0YWJQYW5lbFxcYOeahOaVsOmHj+W/hemhu+WSjFxcYHRhYk1lbnVCYXJJdGVtXFxg55qE5pWw6YeP55u45ZCMXG4gIC0gdmlld1BhZ2VyIOi9ruaSre+8mlxcYHZpZXdQYWdlclxcYOaYr+i9ruaSreWuueWZqO+8jOmHjOmdouWMheWQq07kuKpcXGB2aWV3UGFnZXJJdGVtXFxg77yMXFxgdmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXFxg5piv6L2u5pKt5oyH56S65Zmo5a655Zmo77yMXFxgdmlld1BhZ2VyXFxg5LiOXFxgdmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXFxg5b+F6aG75ZCM5pe25a2Y5ZyoXG4gIC0g5LiA6KGM5LiN5aSf5L2N572u5pi+56S65bCx5o2i6KGM55qE5a655Zmo77yaXFxgaW5saW5lQmxvY2tBbmRXcmFwXFxg77yM6YeM6Z2i5YyF5ZCrTuS4qlxcYGJsb2NrSXRlbVxcYO+8jFxcYGJsb2NrSXRlbVxcYOaYr+Wug+eahOWtkOmhuVxuICAtIOWkmueKtuaAgeWuueWZqO+8muS4gOS4qlxcYG11bHRpU3RhdGVDb250YWluZXJcXGDlpJrnirbmgIHlrrnlmajljIXlkKvlpJrkuKpcXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGBcblxuLSDnu4Tku7bnsbvlnovmnprkuL4gKG5vZGVUeXBlKeaemuS4vu+8mlxuXG4gIC0g5b2i54q277yaXFxgcmVjdFxcYCwgXFxgY2lyY2xlXFxgLCBcXGBsaW5lXFxgXG4gIC0g5Z+656GA57uE5Lu277yaXFxgdGV4dFxcYOOAgVxcYGJ1dHRvblxcYOOAgVxcYGlucHV0XFxg44CBXFxgaWNvblxcYOOAgVxcYGltYWdlXFxgXG4gIC0g5Z+656GA5a655Zmo77yaXFxgY29udGFpbmVyXFxgXG4gIC0g572R5qC85a655Zmo77yaXFxgZ3JpZENvbnRhaW5lclxcYOOAgVxcYGdyaWRJdGVtXFxgXG4gIC0g5rWB5byP5a655Zmo77yaXFxgaW5saW5lQmxvY2tBbmRXcmFwXFxg44CBXFxgYmxvY2tJdGVtXFxgXG4gIC0g5byA5YWz77yaXFxgc3dpdGNoXFxgXG4gIC0g5Y2V6YCJ77yaXFxgcmFkaW9Hcm91cFxcYOOAgVxcYHJhZGlvXFxgXG4gIC0g5aSa6YCJ77yaXFxgY2hlY2tCb3hHcm91cFxcYOOAgVxcYGNoZWNrQm94XFxgXG4gIC0g6aG26YOo5a+86Iiq5qCP77yaXFxgdG9wTmF2aWdhdGVCYXJcXGBcbiAgLSDlpJrnirbmgIHlrrnlmajvvJpcXGBtdWx0aVN0YXRlQ29udGFpbmVyXFxgLCBcXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGBcbiAgLSDliJfooajvvJpcXGB2ZXJ0aWNhbExpc3RWaWV3XFxgLCBcXGBob3Jpem9udGFsTGlzdFZpZXdcXGAsIFxcYGxpc3RJdGVtQ2FyZFxcYOOAgVxcYGxpc3RGb290ZXJDb250YWluZXJcXGBcbiAgLSDova7mkq3vvJpcXGB2aWV3UGFnZXJcXGAsIFxcYHZpZXdQYWdlckl0ZW1cXGAsIFxcYHZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclxcYFxuICAtIHRhYiDpgInpobnljaHvvJpcXGB0YWJQYW5lbEZhdGhlclxcYCwgXFxgdGFiUGFuZWxcXGAsIFxcYHRhYk1lbnVCYXJcXGAsIFxcYHRhYk1lbnVCYXJJdGVtXFxgXG4gIC0g5bqV6YOo5a+86IiqOiBcXGBib3R0b21UYWJDb250ZW50Q29udGFpbmVyXFxgLCBcXGBzdWJQYWdlXFxgLCBcXGBib3R0b21UYWJOYXZpZ2F0ZUJhclxcYCwgXFxgYm90dG9tVGFiTmF2aWdhdGVCYXJJdGVtXFxgXG4gIC0g5a+56K+d5qGG77yaXFxgZGlhbG9nT3ZlcmxheVxcYCwgXFxgZGlhbG9nQ29udGVudFxcYFxuICAtIHRvYXN0IOaPkOekuu+8mlxcYHRvYXN0XFxgXG4gIC0g5LiL5ouJ6I+c5Y2V77yaXFxgZHJvcERvd25NZW51XFxgXG4gIC0g5L6n5ruR6Z2i5p2/77yaXFxgc2lkZVNsaWRlUGFuZWxcXGBcbiAgLSDmiYvmnLrnoazku7blhYPntKDvvJpcXGBwaG9uZVRvcFN0YXR1c0JhclxcYOOAgVxcYHBob25lQm90dG9tSW5kaWNhdG9yQmFyXFxg77yM6L+Z5Lik5Liq5YWD57Sg5piv5omL5py656Gs5Lu26Ieq5bim55qE5YWD57Sg77yM5LiN6IO95Zyo6aG16Z2i5Lit5re75Yqg44CCXG5cbiMjIOWbm+OAgei9ruaSreS4jlRhYnPnu4Tku7bnmoTop4TliJlcbi0g6L2u5pKt55qE5q+P5LiA5LiqU2xpZGXlkoxUYWJz6YCJ6aG55Y2h57uE5Lu25q+P5LiA5LiqVGFiIFBhbmVs6YO95b+F6aG75L2/55SoXFxgZGlzcGxheTogbm9uZVxcYOWSjFxcYGRpc3BsYXk6IGJsb2NrL2ZsZXhcXGDmnaXlrp7njrDpmpDol4/lkozmmL7npLrnmoTkupLmlqXliIfmjaJcbi0g6L2u5pKt55qE5q+P5LiA5LiqU2xpZGXlv4XpobvmnIlodG1s5Luj56CB5a6e546w77yM5LiN5b6X5Y+q5YaZ56ysMeS4qlNsaWRl55qEaHRtbOS7o+egge+8jOWFtuS7llNsaWRl55qEaHRtbOS7o+eggeS5n+W/hemhu+imgeWGmeOAglxuLSBUYWJz6YCJ6aG55Y2h57uE5Lu26ZyA6KaB5re75Yqg54K55Ye75YiH5o2iVGFiIFBhbmVs55qE5Yqf6IO977yM5LiN5b6X5Y+q5YaZ56ysMeS4qlRhYiBQYW5lbOeahGh0bWzku6PnoIHvvIzlhbbku5ZUYWIgUGFuZWznmoRodG1s5Luj56CB5Lmf5b+F6aG76KaB5YaZ44CCXG4tIFRhYnPpgInpobnljaHnu4Tku7bmr4/kuIDkuKpUYWIgUGFuZWzpg73lv4XpobvopoHmnInlhoXlrrnvvIzkuI3lvpfmlbfooY3lnLDlsZXnpLrmsqHmnInmlbDmja7jgIHogZTnvZHlpLHotKXjgIFsb2FkaW5n55qE5oOF5Ya177yM5b+F6aG75bGV56S65pyJ5pWw5o2u55qE5YW35L2T5YaF5a6577yM57ud5a+55LiN6IO95YG35oeS5pW36KGN44CCXG4tIFRhYnPpgInpobnljaHnu4Tku7bmr4/kuIDkuKpUYWIgUGFuZWzpg73lv4XpobvopoHmnIlodG1s5Luj56CB5a6e546w77yM5LiN5b6X5Y+q5YaZ56ysMeS4qlRhYiBQYW5lbOeahGh0bWzku6PnoIHvvIzlhbbku5ZUYWIgUGFuZWznmoRodG1s5Luj56CB5Lmf5b+F6aG76KaB5YaZ44CCXG5cbiMjIOS6lOOAgeWbvuagh+S4juWbvueJh+eahOinhOWImVxuLSDlvZPpnIDopoFpY29u5Zu+5qCH5pe25b+F6aG75L2/55SoRm9udEF3ZXNvbWXlm77moIfvvIzmr5TlpoLvvJpcXGA8aSBuYW1lPVwi5b6u5L+hSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwid3hJY29uXCIgY2xhc3M9XCJmYWIgZmEtd2VpeGluXCI+PC9pPlxcYFxuLSDnu53lr7nkuI3og73kvb/nlKggZW1vamkg6KGo5oOF56ym5Y+377yM5LiN5b6X5L2/55So5Lu75L2VIGVtb2ppIOihqOaDheespuWPt++8jOivt+S9v+eUqEZvbnRBd2Vzb21l5a2X5L2T5Zu+5qCH5p2l5Luj5pu/44CCXG4tIExPR0/lm77niYflkozlvJXlr7zpobXnmoTlvJXlr7zlm77niYflv4Xpobvkvb/nlKhcXGBkb2MvcmVzL3N2Z01hcC5qc29uXFxg5paH5Lu25LitanNvbuWvueixoeato+ehruWtl+auteeahGh0dHBz6ZO+5o6l5YC877yM56aB5q2i5L2/55So5pys5Zyw5Zu+54mH6Lev5b6EXFxgZG9jL3Jlcy9sb2dvLnN2Z1xcYOaWh+S7tu+8jOiAjOaYr+S9v+eUqOexu+S8vO+8mlxcYGh0dHBzOi8vZWRpdG9yLmJ5dGVmdW5nby5jb20vZGZpbGUvaW1nL3h4eHh4LnN2Z1xcYOi/meagt+eahOWbvueJh+mTvuaOpeWcsOWdgFxuLSBqcGfjgIFqcGVn57G75Z6L5Zu+54mH5b+F6aG75L2/55So5Zu+54mH5Zyw5Z2A77yaXFxgaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMS5qcGdcXGAp77yM5YW25Lit57uT5bC+55qE4oCZc2hvd0ltZzEn5Y+v5Lul5o2i5Li65LuOIDEg5YiwIDMwIOeahOaVsOWtl++8jDF+MzAg55qE5pWw5a2X5b+F6aG76ZqP5py65oyR6YCJ77yM5LiN5b6X5q+P5Liq6aG16Z2i5q+P5Liq5Zu+54mH6YO95L2/55So5ZCM5LiA5Liq5pWw5a2X44CC5YaZ5rOV5q+U5aaC77yaXFxgPGltZyBzcmM9XCJodHRwczovL29zcy5ieXRlZnVuZ28uY29tL2YxL3Nob3dJbWcxNy5qcGdcIiBhbHQ9XCJ4eHhcIiBjbGFzcz1cInh4eFwiIG5vZGVUeXBlPVwiaW1hZ2VcIj5cXGBcblxuIyMg5YWt44CB6aaW6aG15Li75L2T6aG15LiO5a2Q6aG16Z2i55qE6KeE5YiZXG4tIOmmlumhteS4u+S9k+mhteW1jOWll+S6huWkmuS4quWtkOmhtemdou+8jOavj+S4gOS4quWtkOmhtemdoumDveS4jemcgOimgeWhq+WFheWGheWuue+8jOepuueZveWwseihjO+8jOWQjumdouS8muacieS4k+mXqOeahOS7u+WKoeadpeiuvuiuoeWFt+S9k+eahOWtkOmhtemdouOAglxuLSDku7vkvZXlrZDpobXpnaLpg73lv4XpobvnpoHmraLmt7vliqDlupXpg6jlr7zoiKrmoI/oioLngrnliLDpobXpnaLvvIzlm6DkuLrlrZDpobXpnaLmmK/ltYzlpZflnKjpppbpobXkuLvkvZPpobXkuK3nmoTvvIzniLbpobXpnaLlt7Lnu4/mnInlupXpg6jlr7zoiKrmoI/kuobvvIzlrZDpobXpnaLkuI3pnIDopoHlho3mt7vliqDlupXpg6jlr7zoiKrmoI/vvIzkuZ/kuI3lvpfmt7vliqDkuoznuqfpobXpnaLnmoTmoIfpopjmoI/liLDlrZDpobXpnaLkuK3vvIzlm6DkuLrlrZDpobXpnaLmmK/ltYzlpZflnKjpppbpobXkuLvkvZPpobXkuK3nmoTvvIzpppbpobXkuLvkvZPpobXlkozlroPnmoTlrZDpobXpnaLpg73mmK/kuIDnuqfpobXpnaLvvIzlm6DmraTkuI3lvpfmt7vliqDkuoznuqfpobXpnaLnmoTmoIfpopjmoI/liLDlrZDpobXpnaLkuK3jgIJcblxuIyMg5LiD44CB5aaC5p6c55So5oi35rKh5pyJ5piO56Gu6K+05piO6K+l6aG16Z2i6K6+6K6h6ZyA5rGC77yM6YKj5bCx5oyJ54Wn5Lul5LiL6aG16Z2i6buY6K6k6KeE5YiZ6K6+6K6hXG4tIOmXquWxj+mhte+8muemgeatouS9v+eUqOWFqOWxj+WbvueJh++8jOS4gOiIrOS9v+eUqOS4u+mimOebuOWFs+eahOa4kOWPmOiJsu+8jOeEtuWQjuW4puacieS4gOS6m+mineWklueahOiDjOaZr+WFg+e0oOWinuW8uueVjOmdouWxguasoeaEn++8jOavlOWmgu+8muaipuW5u+WchuWciOazoeazoeOAgeeOu+eSg+aViOaenOeahOWchuW9ouW+hOWQkea4kOWPmOetieetieWFg+e0oFxuLSDlvJXlr7zpobXvvJrlsL3ph4/kuI3kvb/nlKjlhajlsY/lm77niYfvvIzkuIDoiKzmr4/kuIDpobXlvJXlr7zpobXog4zmma/oibLkuZ/lj6/ku6XmuJDlj5jvvIznhLblkI7mr4/kuIDpobXlip/og73or7TmmI7kuIDoiKzmnInpnZ7lhajlsY/lm77niYfjgIHmoIfpopjjgIHlia/moIfpopjnrYnnrYnvvIzkvaDlj6/ku6XluKblhaXlhbbku5blhYPntKDvvIzorqnpobXpnaLmm7TliqDnvo7op4LvvIzlubbkuJTlvJXlr7zpobXnmoTlvJXlr7zlm77niYfpnIDopoHoh6rlt7Hnu5jliLZzdmflm77niYfvvIzlubblrZjmlL7lnKhcXGBkb2MvcmVzXFxg5paH5Lu25aS55LiL6Z2i77yM5bm25ZyoaHRtbOS4reS9v+eUqFxuLSDog4zmma/oibLkuLrkuoblop7lvLrlsYLmrKHmhJ/vvIzmt7vliqDnmoTmoqblubvms6Hms6HmiJbogIXlnIblvaLlvoTlkJHmuJDlj5jlhYPntKDnmoRkaXbvvIzlv4Xpobvlj6rog73lo7DmmI7kuLpcXGBjaXJjbGVcXGDvvIzlubbkuJTkuIDkuKpkaXbnmoRcXGBiYWNrZ3JvdW5kOlxcYOWPquiDveWjsOaYjuS4gOS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYO+8jOavlOWmguato+ehrueahOWGmeazle+8mmJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMCwgMjI5LCAyNTUsIDAuMTUpIDAlLCByZ2JhKDAsIDAsIDAsIDApIDcwJSk777yM5aaC5p6c6ZyA6KaB5aSa5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg5b6E5ZCR5riQ5Y+Y6IOM5pmv77yM5q+P5Liq5b6E5ZCR5riQ5Y+Y6IOM5pmv6YO95b+F6aG75aOw5piO5Li65LiA5LiqZGl26IqC54K577yM5q+P5LiqZGl255qEXFxgYmFja2dyb3VuZDpcXGDlj6rog73lo7DmmI7kuIDkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDjgIJcbmAiXX0=
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdWlEZXNpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwR3JDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdWlEZXNpZ25Qcm9tcHRUZW1wbGF0ZSA9IGAjIFVJ6K6+6K6h6KeE5YiZ77yM54m55Yir5rOo5oSP5b+F6aG75L2/55SoVUnop4TojINcXGAuYnl0ZWZ1bi9VSeiuvuiuoeinhOiMgy5tZFxcYOmHjOmdoum7mOiupOeahOS4u+mimOearuiCpOadpeiuvuiuoe+8jOS4jeW+l+S9v+eUqOWFtuS7luS4u+mimOearuiCpOOAglxuXG4jIyDkuIDjgIHnpoHmraLnmoTkuovmg4Vcbi0g56aB5q2i5L2/55So5Lu75L2V5YmN56uv5qGG5p6277yM5Y+q5L2/55SoIGh0bWwr57G76YCJ5oup5Zmo5qC35byPK2pzIOadpeWunueOsOOAglxuLSDnpoHmraLkvb/nlKhqc+S7o+eggeadpeaLvOaOpWh0bWzlrZfnrKbkuLLvvIzlv4XpobvlnKhib2R55qCH562+6YeM6Z2i55u05o6l5YaZaHRtbOS7o+eggeOAglxuLSDnpoHmraLkvb/nlKhqc+S7o+eggeadpeWjsOaYjuS7u+S9lemhtemdouaYvuekuuaJgOmcgOeahOaVsOaNru+8jOaJgOacieaVsOaNrumDveW/hemhu+WcqGh0bWzku6PnoIHkuK3nm7TmjqXlhpnmrbvjgIJcbi0g56aB5q2i5L2/55So5paH5pys5riQ5Y+Y6Imy77yM5b+F6aG75L2/55So57qv6Imy5paH5pys77yM5Lmf5bCx5piv56aB5q2i5L2/55SoXFxgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3JcXGDlsZ7mgKfjgIJcbi0g56aB5q2i57uZ6aG16Z2i5re75YqgXFxg5omL5py66aG26YOo54q25oCB5qCPXFxg44CBXFxg5omL5py65bqV6YOo5oyH56S65Zmo5qCPXFxg5Lik5Liq6Z2e6aG16Z2i5YaF5a6555qE5YWD57Sg6IqC54K577yM6L+Z5piv5omL5py656Gs5Lu26Ieq5bim55qE5YWD57Sg77yM5LiN6IO95Zyo6aG16Z2i5Lit5re75Yqg44CCXG4tIOemgeatouS9v+eUqFxcYDpiZWZvcmVcXGDjgIFcXGA6YWZ0ZXJcXGDkvKrlhYPntKDvvIzlv4Xpobvkvb/nlKjlhbbku5bmoIfnrb7mnaXlrp7njrDjgIJcbi0gbG9hZGluZ+iKgueCueeahOWunueOsOemgeatouS9v+eUqGRpduagh+etvuS4jui+ueahhuWxnuaAp+WunueOsO+8jOW/hemhu+S9v+eUqOWbvuagh2ljb27nmoRp5qCH562+5p2l5a6e546wbG9hZGluZ+eahOiKgueCuVxuLSDnpoHmraLkuLpodG1s5qCH562+6IqC54K55re75Yqg5Yqo55S75oiW6L+H5rih5pWI5p6c77yM6aG16Z2i6K6+6K6h5LiN6ZyA6KaB5Lu75L2V5Yqo55S75ZKM6L+H5rih5pWI5p6c77yM5q+U5aaC56aB5q2i77yaQGtleWZyYW1lc+OAgXRyYW5zaXRpb27jgIFhbmltYXRpb24g562J44CCXG4tIOWNoeeJh+OAgWl0ZW3pobnnrYnlhYPntKDlv4XpobvopoHmnIlob3ZlcuS4jueCueWHu+WPjemmiO+8jOeCueWHu+WPjemmiOW/hemhu+S9v+eUqOa1heiJsueahOiDjOaZr+iJsmJhY2tncm91bmTmnaXlj43ppojlsLHooYzvvIzkuKXnpoHkvb/nlKh0cmFuc2Zvcm3mlYjmnpxcbiAgICAtIOKdjCDplJnor6/nmoTnlKjms5XvvJogXG4gICAgXFxgXFxgXFxgIGNzc1xuICAgIC5ob3Qtc2FsZXMtaXRlbTpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCguLi5weCk7XG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAgIC0g4pyFIOato+ehrueahOeUqOazle+8mlxuICAgIFxcYFxcYFxcYCBjc3NcbiAgICAuaG90LXNhbGVzLWl0ZW06aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAuLi47XG4gICAgfVxuICAgIFxcYFxcYFxcYFxuLSDnpoHmraLkvb/nlKhkaXbmoIfnrb7mnaXlrp7njrBpbWFnZeWbvueJh++8jOW/hemhu+imgeS9v+eUqGltZ+agh+etvuadpeWunueOsOWbvueJh+iKgueCue+8jGltZ+agh+etvueahHNyY+WxnuaAp+W/hemhu+iuvue9ruS4uu+8mlxcYGh0dHBzOi8vb3NzLmJ5dGVmdW5nby5jb20vZjEvc2hvd0ltZzEuanBnXFxg77yM5YW25Lit6YeM6Z2i55qEXFxgc2hvd0ltZzFcXGDlj6/ku6XmlLnkuLoxfjMw55qE5Lu75oSP5LiA5Liq5pWw5a2X77yM5q+U5aaC77yaXFxgc2hvd0ltZzVcXGDjgIJcbiAgLSDinYzplJnor6/nmoTlhpnms5XvvJpcbiAgICBcXGBcXGBcXGAgaHRtbFxuICAgIDxkaXYgY2xhc3M9XCJiZXN0c2VsbGVyLWNvdmVyXCIgaWQ9XCJiZXN0c2VsbGVyQ292ZXIxXCIgbmFtZT1cIueVhemUgOS5puexjeWwgemdojFcIiBub2RlVHlwZT1cImltYWdlXCI+XG4gICAgPC9kaXY+XG4gICAgXFxgXFxgXFxgXG4gIC0g4pyFIOato+ehrueahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYCBodG1sXG4gICAgPGltZyBjbGFzcz1cImJlc3RzZWxsZXItY292ZXJcIiBpZD1cImJlc3RzZWxsZXJDb3ZlcjFcIiBuYW1lPVwi55WF6ZSA5Lmm57GN5bCB6Z2iMVwiIG5vZGVUeXBlPVwiaW1hZ2VcIiBzcmM9XCJodHRwczovL29zcy5ieXRlZnVuZ28uY29tL2YxL3Nob3dJbWc3LmpwZ1wiPiAgXG4gICAgXFxgXFxgXFxgXG5cbiMjIOS6jOOAgeagt+W8j+inhOWImVxuLSDmoLflvI/ku6PnoIHlv4Xpobvkvb/nlKjnsbvpgInmi6nlmajmoLflvI9DbGFzcy1iYXNlZCBTdHlsZSAvIENsYXNzIFNlbGVjdG9yIFN0eWxl5pa55byP77yM5LiN5b6X5L2/55So6KGM5YaF5qC35byPSW5saW5lIFN0eWxl5oiW5aSW6YOo5paH5Lu244CCXG4tIOmBteW+quaJi+acuuWwuuWvuOinhOagvCjlrr3luqYgMzkzcHgg6auY5bqmIDgwOHB4KVxuLSDpppbpobUv5o6o6I2QdGFi55qE5YiG57G7L+WKn+iDveWQhOS4quWFpeWPo+eahOWbvuagh+S4gOiIrOmcgOimgeS9v+eUqOS4jeS4gOagt+eahOminOiJsu+8jOW+iOWwkeS8mue7n+S4gOWFqOmDqOS9v+eUqOWTgeeJjOS4u+mimOiJslxuLSDmiYDmnIlyYWRpb+OAgWNoZWNrQm946YO95b+F6aG75L2/55Soaeagh+etvuiuvue9rkZvbnRBd2Vzb21l5Zu+5qCH5p2l5a6e546w77yM5LiN5b6X5L2/55So57O757uf55qEaW5wdXTmoIfnrb7lrp7njrDjgIJcbi0g5aaC55So5oi35rKh5pyJ5piO56Gu5o+P6L+w6K+05piO6aG16Z2i6IOM5pmv6Imy77yM5Y+q5pyJ6Zeq5bGP6aG16Z2i55qE6IOM5pmv6Imy5YWB6K646K6+572u5ZOB54mM5Li76Imy5oiW5ZOB54mM5Li76Imy5LiO5ZOB54mM5qyh6Imy55qE5riQ5Y+Y6Imy77yM5YW25LuW6aG16Z2i5b+F6aG75L2/55So6Z2eIOWTgeeJjOS4u+iJsiDkuI7pnZ4g5ZOB54mM5qyh6ImyIOeahOe6r+iJsuWBmumhtemdouiDjOaZr+iJsu+8jOavlOWmguS4gOiIrOS9v+eUqOeZveiJsuezu++8jOWmguaenOaYr+aal+m7kemjjumCo+WwseaYr+m7keiJsuezu+OAglxuLSDovpPlhaXmoYZcXGBpbnB1dFxcYOWmguaenOmcgOimgeWxleekuuaWh+WtlyBsYWJlbO+8jOWwvemHj+S9v+eUqCBpY29uIOS7o+abv+aWh+WtlyBsYWJlbO+8jOW5tuS4lCBpY29uIOmHjeWPoOWcqOi+k+WFpeahhueahOW3puS+p++8jOi/meagt+aVtOS4qumhtemdoueahOepuumXtOWIqeeUqOeOh+mrmOOAglxuLSDlpoLmnpzkuLvpopjpo47moLzmmK/mmpfpu5Hpo47moLznmoTor53vvIzpu5jorqTlj6/ku6Xnu5nmr4/kuKrpobXpnaLmt7vliqDlpJrkuKrnjrvnkoPmlYjmnpznmoTlnIblvaLlvoTlkJHmuJDlj5jog4zmma/vvIznsbvkvLzov5nmoLfvvJpcXGBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDAsIDI0MiwgMjU1LCAwLjEpIDAlLCByZ2JhKDAsIDAsIDAsIDApIDcwJSk7XFxg77yM6YeM6Z2i55qE6aKc6Imy5ZKM5riQ5Y+Y6IyD5Zu05Y+v5Lul5qC55o2u5a6e6ZmF5oOF5Ya16LCD5pW044CCXG4tIOiDjOaZr+iJsuS4uuS6huWinuW8uuWxguasoeaEn++8jOa3u+WKoOeahOaipuW5u+azoeazoeaIluiAheWchuW9ouW+hOWQkea4kOWPmOWFg+e0oOeahGRpdu+8jOW/hemhu+WPquiDveWjsOaYjuS4ulxcYGNpcmNsZVxcYO+8jOW5tuS4lOS4gOS4qmRpdueahFxcYGJhY2tncm91bmQ6XFxg5Y+q6IO95aOw5piO5LiA5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg77yM5q+U5aaC5q2j56Gu55qE5YaZ5rOV77yaYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgwLCAyMjksIDI1NSwgMC4xNSkgMCUsIHJnYmEoMCwgMCwgMCwgMCkgNzAlKTvvvIzlpoLmnpzpnIDopoHlpJrkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDlvoTlkJHmuJDlj5jog4zmma/vvIzmr4/kuKrlvoTlkJHmuJDlj5jog4zmma/pg73lv4Xpobvlo7DmmI7kuLrkuIDkuKpkaXboioLngrnvvIzmr4/kuKpkaXbnmoRcXGBiYWNrZ3JvdW5kOlxcYOWPquiDveWjsOaYjuS4gOS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYOOAglxuLSDljaHniYfjgIFpdGVt6aG5562J5YWD57Sg5b+F6aG76KaB5pyJ5LiA5LiqaG92ZXLlkI7mlLnlj5jog4zmma/oibLnmoTlj43ppojmlYjmnpzvvIzkuI3og73kvb/nlKh0cmFuc2Zvcm3mlYjmnpzvvIzlj6rog73kvb/nlKjog4zmma/oibLmlYjmnpzjgIJcblxuIyMg5LiJ44CB5b+F6aG757uZ5q+P5LiA5Liq6IqC54K55re75YqgaWTjgIFuYW1l44CBbm9kZVR5cGXlsZ7mgKdcbi0g54m55Yir5rOo5oSP77yMXFxgaVxcYOWSjFxcYGRpdlxcYOetieagh+etvuS5n+W/hemhu+a3u+WKoCBpZOOAgW5hbWXjgIFub2RlVHlwZSDlsZ7mgKfvvIzmr4/kuIDkuKroioLngrnpg73pnIDopoHmt7vliqDov5nkuInkuKrlsZ7mgKfvvIzljYPkuIfliKvmvI/mjonkuobvvIzov5nmmK/lv4XopoHmnaHku7Zcbi0gaWQg5bGe5oCn5b+F6aG75Y+q6IO95L2/55So6Iux5paH5oiW5pWw5a2X57uE5oiQ77yM5LiU5LiN6IO95Lul5pWw5a2X5byA5aS077yM5bm25LiU5pW05Liq6aG16Z2iIGlkIOWxnuaAp+eahOWAvOW/hemhu+WUr+S4gO+8jOS9v+eUqOmpvOWzsOeahOWRveWQjeaWueW8j1xuLSBuYW1lIOWxnuaAp+W/hemhu+aYr+S4reaWh+aIluaVsOWtl++8jOW5tuS4lOS4jeiDveWMheWQq+eJueauiuWtl+esplxuLSDlpoLmnpzmmK/pgJrov4fngrnlh7tpdGVt6aG55YiH5o2i5bGV56S65YaF5a6555qE77yM6YKj5LmIaXRlbemhueeahG5vZGVUeXBl5b+F6aG75pivXFxgdGFiTWVudUJhckl0ZW1cXGDvvIx0YWIgcGFuZWznmoRub2RlVHlwZeW/hemhu+aYr1xcYHRhYlBhbmVsXFxg77yMXFxgdGFiTWVudUJhckl0ZW1cXGDnmoTniLbkurLlrrnlmajmmK9cXGB0YWJNZW51QmFyXFxg77yM5LiN5b6X5L2/55SoXFxgaG9yaXpvbnRhbExpc3RWaWV3XFxg5p2l5Luj5pu/XFxgdGFiTWVudUJhclxcYFxuLSBub2RlVHlwZSDlsZ7mgKfnmoTlgLzlv4XpobvmmK9cXGDnu4Tku7bnsbvlnovmnprkuL4gKG5vZGVUeXBlKeaemuS4vlxcYCDkuK3nmoTkuIDkuKrvvIzkuIDkupvluIPlsYDlrrnlmajpnIDopoHpgbXlrojku6XkuIvor7TmmI7mnaXpgInmi6nmraPnoa7nmoRub2RlVHlwZe+8mlxuICAtIOWIl+ihqOWuueWZqO+8mlxcYHZlcnRpY2FsTGlzdFZpZXdcXGDjgIFcXGBob3Jpem9udGFsTGlzdFZpZXdcXGDjgIFcXGBsaXN0SXRlbUNhcmRcXGDvvIznlKjkuo7luIPlsYDlpJrkuKrliJfooajpobnvvIzmr5TlpoLvvJrllYblk4HliJfooajjgIHliIbnsbvliJfooajjgIHmoIfnrb7liJfooajnrYnvvIzlj6/ku6XmlK/mjIHlpJrooYzlpJrliJfnmoTliJfooajluIPlsYBcbiAgLSDliJfooajpobXohJrlrrnlmajvvJpcXGBsaXN0Rm9vdGVyQ29udGFpbmVyXFxg77yM55So5LqO5biD5bGA5YiX6KGo55qE6aG16ISa77yM5q+U5aaC77ya5Yqg6L295pu05aSa44CB5rKh5pyJ5pu05aSa5LqG562JXG4gIC0g572R5qC85a655Zmo77yaZ3JpZENvbnRhaW5lcueUqOS6juW4g+WxgOWkmuS4que9keagvOmhue+8jOmHjOmdouWMheWQq07kuKpncmlkSXRlbe+8jOavlOWmgu+8muWIhuexu+e9keagvOWFpeWPo1xuICAtIOa1geW8j+WuueWZqO+8mueUqOS6juW4g+WxgOWkmuS4quWtkOmhue+8jOWtkOmhueWPr+S7peWcqOS4gOihjOaYvuekuu+8jOW9k+S9jee9ruS4jeWkn+aXtuWwseaNouihjOaYvuekuu+8jOavlOWmgu+8muS4gOe7hOagh+etvnRhZ+eahOaOkueJiOW4g+WxgFxuICAtIOWkmueKtuaAgeWuueWZqO+8mlxcYG11bHRpU3RhdGVDb250YWluZXJcXGAsIFxcYG9uZVN0YXRlQ29udGVudENvbnRhaW5lclxcYO+8jOeUqOS6juS4jeaYr+mAmui/h+S6pOS6ku+8jOiAjOaYr+mAmui/h+mAu+i+keeKtuaAgeWPmOmHj+WPmOWMluiAjOaYvuekuuS4jeWQjOeKtuaAgeeahOWGheWuueWuueWZqO+8jOavlOWmgu+8mueZu+W9leeKtuaAgeWSjOacqueZu+W9leeKtuaAgeWIhuWIq+aYvuekuuS4jeWQjOeahOWGheWuueOAglxuLSDpq5jnuqfnu4Tku7boioLngrnnmoRub2RlVHlwZee7k+aehOinhOWIme+8mlxuICAtIHRhYiDpgInpobnljaHvvJpcXGB0YWJNZW51QmFyXFxg5pivdGFi6YCJ6aG55Y2h6I+c5Y2V5qCP77yM6YeM6Z2i5YyF5ZCrTuS4qlxcYHRhYk1lbnVCYXJJdGVtXFxg77yMXFxgdGFiUGFuZWxGYXRoZXJcXGDmmK90YWLpgInpobnljaHlhoXlrrnlrrnlmajvvIzph4zpnaLljIXlkKtO5LiqXFxgdGFiUGFuZWxcXGDvvIxcXGB0YWJNZW51QmFyXFxg5ZKMXFxgdGFiUGFuZWxGYXRoZXJcXGDlv4XpobvlkIzml7blrZjlnKjvvIxcXGB0YWJQYW5lbFxcYOeahOaVsOmHj+W/hemhu+WSjFxcYHRhYk1lbnVCYXJJdGVtXFxg55qE5pWw6YeP55u45ZCMXG4gIC0gdmlld1BhZ2VyIOi9ruaSre+8mlxcYHZpZXdQYWdlclxcYOaYr+i9ruaSreWuueWZqO+8jOmHjOmdouWMheWQq07kuKpcXGB2aWV3UGFnZXJJdGVtXFxg77yMXFxgdmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXFxg5piv6L2u5pKt5oyH56S65Zmo5a655Zmo77yMXFxgdmlld1BhZ2VyXFxg5LiOXFxgdmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXFxg5b+F6aG75ZCM5pe25a2Y5ZyoXG4gIC0g5LiA6KGM5LiN5aSf5L2N572u5pi+56S65bCx5o2i6KGM55qE5a655Zmo77yaXFxgaW5saW5lQmxvY2tBbmRXcmFwXFxg77yM6YeM6Z2i5YyF5ZCrTuS4qlxcYGJsb2NrSXRlbVxcYO+8jFxcYGJsb2NrSXRlbVxcYOaYr+Wug+eahOWtkOmhuVxuICAtIOWkmueKtuaAgeWuueWZqO+8muS4gOS4qlxcYG11bHRpU3RhdGVDb250YWluZXJcXGDlpJrnirbmgIHlrrnlmajljIXlkKvlpJrkuKpcXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGBcblxuLSDnu4Tku7bnsbvlnovmnprkuL4gKG5vZGVUeXBlKeaemuS4vu+8mlxuXG4gIC0g5b2i54q277yaXFxgcmVjdFxcYCwgXFxgY2lyY2xlXFxgLCBcXGBsaW5lXFxgXG4gIC0g5Z+656GA57uE5Lu277yaXFxgdGV4dFxcYOOAgVxcYGJ1dHRvblxcYOOAgVxcYGlucHV0XFxg44CBXFxgaWNvblxcYOOAgVxcYGltYWdlXFxgXG4gIC0g5Z+656GA5a655Zmo77yaXFxgY29udGFpbmVyXFxgXG4gIC0g572R5qC85a655Zmo77yaXFxgZ3JpZENvbnRhaW5lclxcYOOAgVxcYGdyaWRJdGVtXFxgXG4gIC0g5rWB5byP5a655Zmo77yaXFxgaW5saW5lQmxvY2tBbmRXcmFwXFxg44CBXFxgYmxvY2tJdGVtXFxgXG4gIC0g5byA5YWz77yaXFxgc3dpdGNoXFxgXG4gIC0g5Y2V6YCJ77yaXFxgcmFkaW9Hcm91cFxcYOOAgVxcYHJhZGlvXFxgXG4gIC0g5aSa6YCJ77yaXFxgY2hlY2tCb3hHcm91cFxcYOOAgVxcYGNoZWNrQm94XFxgXG4gIC0g6aG26YOo5a+86Iiq5qCP77yaXFxgdG9wTmF2aWdhdGVCYXJcXGBcbiAgLSDlpJrnirbmgIHlrrnlmajvvJpcXGBtdWx0aVN0YXRlQ29udGFpbmVyXFxgLCBcXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGBcbiAgLSDliJfooajvvJpcXGB2ZXJ0aWNhbExpc3RWaWV3XFxgLCBcXGBob3Jpem9udGFsTGlzdFZpZXdcXGAsIFxcYGxpc3RJdGVtQ2FyZFxcYOOAgVxcYGxpc3RGb290ZXJDb250YWluZXJcXGBcbiAgLSDova7mkq3vvJpcXGB2aWV3UGFnZXJcXGAsIFxcYHZpZXdQYWdlckl0ZW1cXGAsIFxcYHZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclxcYFxuICAtIHRhYiDpgInpobnljaHvvJpcXGB0YWJQYW5lbEZhdGhlclxcYCwgXFxgdGFiUGFuZWxcXGAsIFxcYHRhYk1lbnVCYXJcXGAsIFxcYHRhYk1lbnVCYXJJdGVtXFxgXG4gIC0g5bqV6YOo5a+86IiqOiBcXGBib3R0b21UYWJDb250ZW50Q29udGFpbmVyXFxgLCBcXGBzdWJQYWdlXFxgLCBcXGBib3R0b21UYWJOYXZpZ2F0ZUJhclxcYCwgXFxgYm90dG9tVGFiTmF2aWdhdGVCYXJJdGVtXFxgXG4gIC0g5a+56K+d5qGG77yaXFxgZGlhbG9nT3ZlcmxheVxcYCwgXFxgZGlhbG9nQ29udGVudFxcYFxuICAtIHRvYXN0IOaPkOekuu+8mlxcYHRvYXN0XFxgXG4gIC0g5LiL5ouJ6I+c5Y2V77yaXFxgZHJvcERvd25NZW51XFxgXG4gIC0g5L6n5ruR6Z2i5p2/77yaXFxgc2lkZVNsaWRlUGFuZWxcXGBcbiAgLSDmiYvmnLrnoazku7blhYPntKDvvJpcXGBwaG9uZVRvcFN0YXR1c0JhclxcYOOAgVxcYHBob25lQm90dG9tSW5kaWNhdG9yQmFyXFxg77yM6L+Z5Lik5Liq5YWD57Sg5piv5omL5py656Gs5Lu26Ieq5bim55qE5YWD57Sg77yM5LiN6IO95Zyo6aG16Z2i5Lit5re75Yqg44CCXG5cbiMjIOWbm+OAgei9ruaSreS4jlRhYnPnu4Tku7bnmoTop4TliJlcbi0g6L2u5pKt55qE5q+P5LiA5LiqU2xpZGXlkoxUYWJz6YCJ6aG55Y2h57uE5Lu25q+P5LiA5LiqVGFiIFBhbmVs6YO95b+F6aG75L2/55SoXFxgZGlzcGxheTogbm9uZVxcYOWSjFxcYGRpc3BsYXk6IGJsb2NrL2ZsZXhcXGDmnaXlrp7njrDpmpDol4/lkozmmL7npLrnmoTkupLmlqXliIfmjaJcbi0g6L2u5pKt55qE5q+P5LiA5LiqU2xpZGXlv4XpobvmnIlodG1s5Luj56CB5a6e546w77yM5LiN5b6X5Y+q5YaZ56ysMeS4qlNsaWRl55qEaHRtbOS7o+egge+8jOWFtuS7llNsaWRl55qEaHRtbOS7o+eggeS5n+W/hemhu+imgeWGmeOAglxuLSBUYWJz6YCJ6aG55Y2h57uE5Lu26ZyA6KaB5re75Yqg54K55Ye75YiH5o2iVGFiIFBhbmVs55qE5Yqf6IO977yM5LiN5b6X5Y+q5YaZ56ysMeS4qlRhYiBQYW5lbOeahGh0bWzku6PnoIHvvIzlhbbku5ZUYWIgUGFuZWznmoRodG1s5Luj56CB5Lmf5b+F6aG76KaB5YaZ44CCXG4tIFRhYnPpgInpobnljaHnu4Tku7bmr4/kuIDkuKpUYWIgUGFuZWzpg73lv4XpobvopoHmnInlhoXlrrnvvIzkuI3lvpfmlbfooY3lnLDlsZXnpLrmsqHmnInmlbDmja7jgIHogZTnvZHlpLHotKXjgIFsb2FkaW5n55qE5oOF5Ya177yM5b+F6aG75bGV56S65pyJ5pWw5o2u55qE5YW35L2T5YaF5a6577yM57ud5a+55LiN6IO95YG35oeS5pW36KGN44CCXG4tIFRhYnPpgInpobnljaHnu4Tku7bmr4/kuIDkuKpUYWIgUGFuZWzpg73lv4XpobvopoHmnIlodG1s5Luj56CB5a6e546w77yM5LiN5b6X5Y+q5YaZ56ysMeS4qlRhYiBQYW5lbOeahGh0bWzku6PnoIHvvIzlhbbku5ZUYWIgUGFuZWznmoRodG1s5Luj56CB5Lmf5b+F6aG76KaB5YaZ44CCXG5cbiMjIOS6lOOAgeWbvuagh+S4juWbvueJh+eahOinhOWImVxuLSDlvZPpnIDopoFpY29u5Zu+5qCH5pe25b+F6aG75L2/55SoRm9udEF3ZXNvbWXlm77moIfvvIzmr5TlpoLvvJpcXGA8aSBuYW1lPVwi5b6u5L+hSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwid3hJY29uXCIgY2xhc3M9XCJmYWIgZmEtd2VpeGluXCI+PC9pPlxcYO+8jOW5tuS4lOazqOaEj+Wbvuagh+eahOminOiJsu+8jOavlOWmguW+ruS/oeWbvuagh+S4gOiIrOS9v+eUqOe7v+iJsuezu++8jFFR5Zu+5qCH5LiA6Iis5L2/55So6JOd6Imy57O777yM5b6u5Y2a5Zu+5qCH5LiA6Iis5L2/55So57qi6Imy57O777yM5pSv5LuY5a6d5Zu+5qCH5LiA6Iis5L2/55So5rWF6JOd6Imy57O7562J562JXG4tIOe7neWvueS4jeiDveS9v+eUqCBlbW9qaSDooajmg4XnrKblj7fvvIzkuI3lvpfkvb/nlKjku7vkvZUgZW1vamkg6KGo5oOF56ym5Y+377yM6K+35L2/55SoRm9udEF3ZXNvbWXlrZfkvZPlm77moIfmnaXku6Pmm7/jgIJcbi0gTE9HT+WbvueJh+WSjOW8leWvvOmhteeahOW8leWvvOWbvueJh+W/hemhu+S9v+eUqFxcYGRvYy9yZXMvc3ZnTWFwLmpzb25cXGDmlofku7bkuK1qc29u5a+56LGh5q2j56Gu5a2X5q6155qEaHR0cHPpk77mjqXlgLzvvIznpoHmraLkvb/nlKjmnKzlnLDlm77niYfot6/lvoRcXGBkb2MvcmVzL2xvZ28uc3ZnXFxg5paH5Lu277yM6ICM5piv5L2/55So57G75Ly877yaXFxgaHR0cHM6Ly9lZGl0b3IuYnl0ZWZ1bmdvLmNvbS9kZmlsZS9pbWcveHh4eHguc3ZnXFxg6L+Z5qC355qE5Zu+54mH6ZO+5o6l5Zyw5Z2A77yM5q+U5aaC6Zeq5bGP6aG144CB55m75b2V6aG144CB5rOo5YaM6aG155So5Yiw55qETE9HT+WbvueJh++8jOW8leWvvOmhteeahOW8leWvvOWbvueJh+etieOAglxuLSBqcGfjgIFqcGVn57G75Z6L5Zu+54mH5b+F6aG75L2/55So5Zu+54mH5Zyw5Z2A77yaXFxgaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMS5qcGdcXGAp77yM5YW25Lit57uT5bC+55qE4oCZc2hvd0ltZzEn5Y+v5Lul5o2i5Li65LuOIDEg5YiwIDMwIOeahOaVsOWtl++8jDF+MzAg55qE5pWw5a2X5b+F6aG76ZqP5py65oyR6YCJ77yM5LiN5b6X5q+P5Liq6aG16Z2i5q+P5Liq5Zu+54mH6YO95L2/55So5ZCM5LiA5Liq5pWw5a2X44CC5YaZ5rOV5q+U5aaC77yaXFxgPGltZyBzcmM9XCJodHRwczovL29zcy5ieXRlZnVuZ28uY29tL2YxL3Nob3dJbWcxNy5qcGdcIiBhbHQ9XCJ4eHhcIiBjbGFzcz1cInh4eFwiIG5vZGVUeXBlPVwiaW1hZ2VcIj5cXGBcblxuIyMg5YWt44CB6aaW6aG15Li75L2T6aG15LiO5a2Q6aG16Z2i55qE6KeE5YiZXG4tIOmmlumhteS4u+S9k+mhteW1jOWll+S6huWkmuS4quWtkOmhtemdou+8jOavj+S4gOS4quWtkOmhtemdoumDveS4jemcgOimgeWhq+WFheWGheWuue+8jOepuueZveWwseihjO+8jOWQjumdouS8muacieS4k+mXqOeahOS7u+WKoeadpeiuvuiuoeWFt+S9k+eahOWtkOmhtemdouOAglxuLSDku7vkvZXlrZDpobXpnaLpg73lv4XpobvnpoHmraLmt7vliqDlupXpg6jlr7zoiKrmoI/oioLngrnliLDpobXpnaLvvIzlm6DkuLrlrZDpobXpnaLmmK/ltYzlpZflnKjpppbpobXkuLvkvZPpobXkuK3nmoTvvIzniLbpobXpnaLlt7Lnu4/mnInlupXpg6jlr7zoiKrmoI/kuobvvIzlrZDpobXpnaLkuI3pnIDopoHlho3mt7vliqDlupXpg6jlr7zoiKrmoI/vvIzkuZ/kuI3lvpfmt7vliqDkuoznuqfpobXpnaLnmoTmoIfpopjmoI/liLDlrZDpobXpnaLkuK3vvIzlm6DkuLrlrZDpobXpnaLmmK/ltYzlpZflnKjpppbpobXkuLvkvZPpobXkuK3nmoTvvIzpppbpobXkuLvkvZPpobXlkozlroPnmoTlrZDpobXpnaLpg73mmK/kuIDnuqfpobXpnaLvvIzlm6DmraTkuI3lvpfmt7vliqDkuoznuqfpobXpnaLnmoTmoIfpopjmoI/liLDlrZDpobXpnaLkuK3jgIJcblxuIyMg5LiD44CB5aaC5p6c55So5oi35rKh5pyJ5piO56Gu6K+05piO6K+l6aG16Z2i6K6+6K6h6ZyA5rGC77yM6YKj5bCx5oyJ54Wn5Lul5LiL6aG16Z2i6buY6K6k6KeE5YiZ6K6+6K6hXG4tIOmXquWxj+mhte+8muemgeatouS9v+eUqOWFqOWxj+WbvueJh++8jOS4gOiIrOS9v+eUqOS4u+mimOebuOWFs+eahOa4kOWPmOiJsu+8jOeEtuWQjuW4puacieS4gOS6m+mineWklueahOiDjOaZr+WFg+e0oOWinuW8uueVjOmdouWxguasoeaEn++8jOavlOWmgu+8muaipuW5u+WchuWciOazoeazoeOAgeeOu+eSg+aViOaenOeahOWchuW9ouW+hOWQkea4kOWPmOetieetieWFg+e0oFxuLSDlvJXlr7zpobXvvJrlsL3ph4/kuI3kvb/nlKjlhajlsY/lm77niYfvvIzkuIDoiKzmr4/kuIDpobXlvJXlr7zpobXog4zmma/oibLkuZ/lj6/ku6XmuJDlj5jvvIznhLblkI7mr4/kuIDpobXlip/og73or7TmmI7kuIDoiKzmnInpnZ7lhajlsY/lm77niYfjgIHmoIfpopjjgIHlia/moIfpopjnrYnnrYnvvIzkvaDlj6/ku6XluKblhaXlhbbku5blhYPntKDvvIzorqnpobXpnaLmm7TliqDnvo7op4LvvIzlubbkuJTlvJXlr7zpobXnmoTlvJXlr7zlm77niYfpnIDopoHoh6rlt7Hnu5jliLZzdmflm77niYfvvIzlubblrZjmlL7lnKhcXGBkb2MvcmVzXFxg5paH5Lu25aS55LiL6Z2i77yM5bm25ZyoaHRtbOS4reS9v+eUqFxuLSDog4zmma/oibLkuLrkuoblop7lvLrlsYLmrKHmhJ/vvIzmt7vliqDnmoTmoqblubvms6Hms6HmiJbogIXlnIblvaLlvoTlkJHmuJDlj5jlhYPntKDnmoRkaXbvvIzlv4Xpobvlj6rog73lo7DmmI7kuLpcXGBjaXJjbGVcXGDvvIzlubbkuJTkuIDkuKpkaXbnmoRcXGBiYWNrZ3JvdW5kOlxcYOWPquiDveWjsOaYjuS4gOS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYO+8jOavlOWmguato+ehrueahOWGmeazle+8mmJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMCwgMjI5LCAyNTUsIDAuMTUpIDAlLCByZ2JhKDAsIDAsIDAsIDApIDcwJSk777yM5aaC5p6c6ZyA6KaB5aSa5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg5b6E5ZCR5riQ5Y+Y6IOM5pmv77yM5q+P5Liq5b6E5ZCR5riQ5Y+Y6IOM5pmv6YO95b+F6aG75aOw5piO5Li65LiA5LiqZGl26IqC54K577yM5q+P5LiqZGl255qEXFxgYmFja2dyb3VuZDpcXGDlj6rog73lo7DmmI7kuIDkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDjgIJcbmAiXX0=
|