UNPKG

bytefun-ai-mcp

Version:

ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发

104 lines (96 loc) 21 kB
export const uiDesignThinkingPromptTemplate = `# 你是一名资深UI/UX设计专家和前端开发专家,拥有丰富的应用设计经验,你的任务是按照\`编写步骤\`和\`文档格式例子\`完善该页面的UI设计之前的文档编写,完成\`uiDesignThinking.md\`文档。 ## 页面默认业务逻辑 - **如用户没在描述中明确指明页面的业务逻辑,需要严格遵守以下默认的页面业务逻辑说明** - 不存在权限请求页面,所有权限请求必须使用弹框的交互方式,而且是遵循"即用即取"(Just-in-Time)的原则 - 绝对不会有任何关于隐私协议/服务条款页的逻辑 - 闪屏页 - 闪屏页不做任何业务逻辑,不请求任何网络接口,只需判断是否首次启动,如果首次启动就x秒后跳到引导页,如果不是首次启动就跳到首页 - 如果用户没有明确说明,闪屏页是不允许出现转圈等loading元素的 - 一般底部会显示copyright和版本号 - ❌ 闪屏页绝对禁止做的事情: - 请求任何网络接口 - 请求版本更新API接口 - 跳到隐私协议/服务条款页 - 弹出任何其他弹框 - 任何权限请求 - 引导页 = 引导页告页不会有跳到登录页的路径,只有跳到首页的路径 - 不会有任何网络请求、业务逻辑,引导页仅仅是一个展示静态数据的页面 - 不需要自动轮播 - 一般整个页面只有一个轮播组件、轮播指示器和底部一个按钮,底部按钮在非第一页时显示下一步,在最后一页时显示立即体验 - 广告页(如果有广告页) - 如果用户没有明确说明,默认都是显示第三方的广告,一般为一个全屏图片,然后一个倒数5秒自动跳过的按钮,当然点击可以马上跳过广告到首页 - 广告页不会有跳到登录页的路径,只有跳到首页的路径 - 广告页的数据不允许在闪屏页请求,应该在进入首页后请求,并且使用本地持久化将广告API接口的数据储存起来,等下一次启动闪屏页时跳到广告页面后,才从本地持久化中获取数据并初始化广告页显示和交互 - 广告页的数据必须是在进入首页后才发起请求,绝对不能在闪屏页发起请求,并且广告页的数据只显示一次,绝对不能重复显示,如果本地持久化根本没有广告页的数据,那不需要跳转和显示广告页 - 首页 - 进入首页一般需要请求app版本更新API接口,判断是否需要更新,如果需要更新就弹出更新弹框,如果不需要那就不做任何事情 - 进入首页还要读取本地数据:全局配置数据。一般用于功能开关、ABTest配置、广告配置(如果有广告的话)等,读取完毕后,还要网络请求一次全局配置API,将全局配置数据更新到本地数据中 - 首页是各个功能的入口,因此首页需设置为由多个子页面组成的主体页面,比如:购物APP首页一般底部有一个底部功能导航栏(比如:首页、活动、购物车、消息、我的),点击底部功能导航栏的图标会切换到对应的tab子页面,每个tab子页面负责自己的独立的业务逻辑,比如购物车tab就负责购物车相关业务逻辑。 - 首页主体页只负责功能tab切换不负责每一个tab具体的业务逻辑,因此只有一个底部tab功能导航栏节点组件,没有任何数据加载逻辑,如果有广告页只有一个广告页数据API拉取的网络请求,请求后放到本地持久化。 - 如果用户输入的需求描述没有明确指定首页底部功能导航栏有哪些功能,那么你必须思考首页底部功能导航栏有哪些功能item项 - 登录页 - 页面布局: - 顶部导航栏:左边返回、右边帮助 - header:一个logo - 登录方式切换区 (vtype="multiStateContainer") - 账号密码登录状态 (vtype="oneStateContentContainer") - 手机号/邮箱输入框 (vtype="input") - 密码输入框 (vtype="input") - 验证码登录状态 (vtype="oneStateContentContainer") - 手机号输入框 (vtype="input") - 验证码输入区 (vtype="container"): 验证码输入框 (vtype="input"), 获取验证码按钮 (vtype="button") - 用户协议区域 (vtype="container") - 登录按钮 (vtype="button") - 功能按钮区 (vtype="container") - 新用户注册 (vtype="button") - 验证码/账号密码切换按钮 (vtype="button") - 忘记密码 (vtype="button") - 其他登录方式(居底部间距30px):微信登录、QQ登录、微博登录 ## 编写步骤: 1、调用MCP工具\`optimize_ui_design_prompt\`,获取到UI设计的提示词,理解里面各种组件的结构、组件类型vtype固定枚举等等 2、再根据该页面设计经验,再结合上一步理解的各种组件的结构、组件类型vtype固定枚举等等,编写\`一、页面元素组成\`,其中组件元素必须要使用\`组件类型vtype固定枚举\`,不得使用其他组件类型。 3、最后根据\`业务逻辑思考\`和该页面设计经验思考会有哪些对话框、toast、下拉菜单、侧滑面板,编写\`二、触发的对话框、toast、下拉菜单、侧滑面板\` ## 注意:在第一点页面元素组成中,必须思考会触发哪些对话框、toast、下拉菜单、侧滑面板,然后编写\`二、触发的对话框、toast、下拉菜单、侧滑面板\` ## 文档格式例子: \`\`\` # 商品详情页—页面组成 ## 一、页面元素组成 - 整个页面 (vtype="container") - 页面头部 (vtype="container") - Logo (vtype="image") - 全局导航 (vtype="container"): 搜索框 (vtype="input"), 登录 (vtype="button"), 注册 (vtype="button"), 购物车图标 (vtype="icon") - 面包屑导航 (vtype="container"): 文本 (vtype="text"), 图标 (vtype="icon"), 文本 (vtype="text"), 图标 (vtype="icon"), 文本 (vtype="text") - 主体内容区 (vtype="container") - 商品展示区 (vtype="container") - 商品主图轮播 (vtype="viewPager") - 图1 (vtype="oneViewPagerContent") - 图2 (vtype="oneViewPagerContent") - 轮播指示器容器 (vtype="viewPagerIndicatorContainer") - 放大镜预览组件 (vtype="container"): 放大预览图 (vtype="image") - 商品信息区 (vtype="container") - 商品标题 (vtype="text") - 价格信息 (vtype="container"): 现价 (vtype="text"), 原价 (vtype="text"), 优惠标签 (vtype="text") - 规格选择 (vtype="dropDownMenu") - 数量选择控件 (vtype="container"): 减号按钮 (vtype="button"), 数量输入框 (vtype="input"), 加号按钮 (vtype="button") - 加入购物车 (vtype="button") - 立即购买 (vtype="button") - 店铺&服务区 (vtype="container") - 店铺信息 (vtype="container"): 店铺Logo (vtype="image"), 店铺名称 (vtype="text"), 进入店铺链接 (vtype="button") - 配送说明 (vtype="container"): 满多少免邮 (vtype="text"), 预计发货时间 (vtype="text") - 售后保障 (vtype="container"): 保障图标1 (vtype="icon"), 保障说明1 (vtype="text"), 保障图标2 (vtype="icon"), 保障说明2 (vtype="text") - 加入购物车toast (vtype="toast") - 立即购买二次确认对话框 (vtype="dialog") - 评价侧滑面板 (vtype="sideSlidePanel") - 分享下拉菜单 (vtype="dropDownMenu") ... ## 二、触发的对话框、toast、下拉菜单、侧滑面板 | 触发动作 | 类型 | 位置/样式 | 内容示例 | |----------------------|------------|------------------------|-----------------------------------------------| | 点击 “加入购物车” | Toast | 页面右上角(3s 自动消失) | 文案:\`已成功加入购物车\`;icon:✅ | | 点击 “立即购买” | 二次确认对话框 | 屏幕中心遮罩弹窗(modal) | 文案:\`确认购买 Apple iPhone 14 Pro Max?\` 按钮:确定/取消 | | 点击 “评价” 页的 “查看全部” | 侧滑面板 | 侧边从右滑出(宽度30%) | 全量评论列表 + 过滤选项 | | 点击 “分享” 图标(可选) | 弹出下拉菜单 | 图标下方 Dropdown | 下拉多个分享渠道:微信、朋友圈、微博、QQ | \`\`\` `; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ25UaGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91aURlc2lnblRoaW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzRzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdWlEZXNpZ25UaGlua2luZ1Byb21wdFRlbXBsYXRlID0gYCMg5L2g5piv5LiA5ZCN6LWE5rexVUkvVVjorr7orqHkuJPlrrblkozliY3nq6/lvIDlj5HkuJPlrrbvvIzmi6XmnInkuLDlr4znmoTlupTnlKjorr7orqHnu4/pqozvvIzkvaDnmoTku7vliqHmmK/mjInnhadcXGDnvJblhpnmraXpqqRcXGDlkoxcXGDmlofmoaPmoLzlvI/kvovlrZBcXGDlrozlloTor6XpobXpnaLnmoRVSeiuvuiuoeS5i+WJjeeahOaWh+aho+e8luWGme+8jOWujOaIkFxcYHVpRGVzaWduVGhpbmtpbmcubWRcXGDmlofmoaPjgIJcblxuIyMg6aG16Z2i6buY6K6k5Lia5Yqh6YC76L6RXG4tICoq5aaC55So5oi35rKh5Zyo5o+P6L+w5Lit5piO56Gu5oyH5piO6aG16Z2i55qE5Lia5Yqh6YC76L6R77yM6ZyA6KaB5Lil5qC86YG15a6I5Lul5LiL6buY6K6k55qE6aG16Z2i5Lia5Yqh6YC76L6R6K+05piOKipcbiAgLSDkuI3lrZjlnKjmnYPpmZDor7fmsYLpobXpnaLvvIzmiYDmnInmnYPpmZDor7fmsYLlv4Xpobvkvb/nlKjlvLnmoYbnmoTkuqTkupLmlrnlvI/vvIzogIzkuJTmmK/pgbXlvqpcIuWNs+eUqOWNs+WPllwi77yISnVzdC1pbi1UaW1l77yJ55qE5Y6f5YiZXG4gIC0g57ud5a+55LiN5Lya5pyJ5Lu75L2V5YWz5LqO6ZqQ56eB5Y2P6K6uL+acjeWKoeadoeasvumhteeahOmAu+i+kVxuICAtIOmXquWxj+mhtVxuICAgIC0g6Zeq5bGP6aG15LiN5YGa5Lu75L2V5Lia5Yqh6YC76L6R77yM5LiN6K+35rGC5Lu75L2V572R57uc5o6l5Y+j77yM5Y+q6ZyA5Yik5pat5piv5ZCm6aaW5qyh5ZCv5Yqo77yM5aaC5p6c6aaW5qyh5ZCv5Yqo5bCxeOenkuWQjui3s+WIsOW8leWvvOmhte+8jOWmguaenOS4jeaYr+mmluasoeWQr+WKqOWwsei3s+WIsOmmlumhtVxuICAgIC0g5aaC5p6c55So5oi35rKh5pyJ5piO56Gu6K+05piO77yM6Zeq5bGP6aG15piv5LiN5YWB6K645Ye6546w6L2s5ZyI562JbG9hZGluZ+WFg+e0oOeahFxuICAgIC0g5LiA6Iis5bqV6YOo5Lya5pi+56S6Y29weXJpZ2h05ZKM54mI5pys5Y+3XG4gICAgLSDinYwg6Zeq5bGP6aG157ud5a+556aB5q2i5YGa55qE5LqL5oOF77yaXG4gICAgICAtIOivt+axguS7u+S9lee9kee7nOaOpeWPo1xuICAgICAgLSDor7fmsYLniYjmnKzmm7TmlrBBUEnmjqXlj6NcbiAgICAgIC0g6Lez5Yiw6ZqQ56eB5Y2P6K6uL+acjeWKoeadoeasvumhtVxuICAgICAgLSDlvLnlh7rku7vkvZXlhbbku5blvLnmoYZcbiAgICAgIC0g5Lu75L2V5p2D6ZmQ6K+35rGCXG4gIC0g5byV5a+86aG1XG4gICAgPSDlvJXlr7zpobXlkYrpobXkuI3kvJrmnInot7PliLDnmbvlvZXpobXnmoTot6/lvoTvvIzlj6rmnInot7PliLDpppbpobXnmoTot6/lvoRcbiAgICAtIOS4jeS8muacieS7u+S9lee9kee7nOivt+axguOAgeS4muWKoemAu+i+ke+8jOW8leWvvOmhteS7heS7heaYr+S4gOS4quWxleekuumdmeaAgeaVsOaNrueahOmhtemdolxuICAgIC0g5LiN6ZyA6KaB6Ieq5Yqo6L2u5pKtXG4gICAgLSDkuIDoiKzmlbTkuKrpobXpnaLlj6rmnInkuIDkuKrova7mkq3nu4Tku7bjgIHova7mkq3mjIfnpLrlmajlkozlupXpg6jkuIDkuKrmjInpkq7vvIzlupXpg6jmjInpkq7lnKjpnZ7nrKzkuIDpobXml7bmmL7npLrkuIvkuIDmraXvvIzlnKjmnIDlkI7kuIDpobXml7bmmL7npLrnq4vljbPkvZPpqoxcbiAgLSDlub/lkYrpobXvvIjlpoLmnpzmnInlub/lkYrpobXvvIlcbiAgICAtIOWmguaenOeUqOaIt+ayoeacieaYjuehruivtOaYju+8jOm7mOiupOmDveaYr+aYvuekuuesrOS4ieaWueeahOW5v+WRiu+8jOS4gOiIrOS4uuS4gOS4quWFqOWxj+WbvueJh++8jOeEtuWQjuS4gOS4quWAkuaVsDXnp5Loh6rliqjot7Pov4fnmoTmjInpkq7vvIzlvZPnhLbngrnlh7vlj6/ku6XpqazkuIrot7Pov4flub/lkYrliLDpppbpobVcbiAgICAtIOW5v+WRiumhteS4jeS8muaciei3s+WIsOeZu+W9lemhteeahOi3r+W+hO+8jOWPquaciei3s+WIsOmmlumhteeahOi3r+W+hFxuICAgIC0g5bm/5ZGK6aG155qE5pWw5o2u5LiN5YWB6K645Zyo6Zeq5bGP6aG16K+35rGC77yM5bqU6K+l5Zyo6L+b5YWl6aaW6aG15ZCO6K+35rGC77yM5bm25LiU5L2/55So5pys5Zyw5oyB5LmF5YyW5bCG5bm/5ZGKQVBJ5o6l5Y+j55qE5pWw5o2u5YKo5a2Y6LW35p2l77yM562J5LiL5LiA5qyh5ZCv5Yqo6Zeq5bGP6aG15pe26Lez5Yiw5bm/5ZGK6aG16Z2i5ZCO77yM5omN5LuO5pys5Zyw5oyB5LmF5YyW5Lit6I635Y+W5pWw5o2u5bm25Yid5aeL5YyW5bm/5ZGK6aG15pi+56S65ZKM5Lqk5LqSXG4gICAgLSDlub/lkYrpobXnmoTmlbDmja7lv4XpobvmmK/lnKjov5vlhaXpppbpobXlkI7miY3lj5Hotbfor7fmsYLvvIznu53lr7nkuI3og73lnKjpl6rlsY/pobXlj5Hotbfor7fmsYLvvIzlubbkuJTlub/lkYrpobXnmoTmlbDmja7lj6rmmL7npLrkuIDmrKHvvIznu53lr7nkuI3og73ph43lpI3mmL7npLrvvIzlpoLmnpzmnKzlnLDmjIHkuYXljJbmoLnmnKzmsqHmnInlub/lkYrpobXnmoTmlbDmja7vvIzpgqPkuI3pnIDopoHot7PovazlkozmmL7npLrlub/lkYrpobVcbiAgLSDpppbpobVcbiAgICAtIOi/m+WFpemmlumhteS4gOiIrOmcgOimgeivt+axgmFwcOeJiOacrOabtOaWsEFQSeaOpeWPo++8jOWIpOaWreaYr+WQpumcgOimgeabtOaWsO+8jOWmguaenOmcgOimgeabtOaWsOWwseW8ueWHuuabtOaWsOW8ueahhu+8jOWmguaenOS4jemcgOimgemCo+WwseS4jeWBmuS7u+S9leS6i+aDhVxuICAgIC0g6L+b5YWl6aaW6aG16L+Y6KaB6K+75Y+W5pys5Zyw5pWw5o2u77ya5YWo5bGA6YWN572u5pWw5o2u44CC5LiA6Iis55So5LqO5Yqf6IO95byA5YWz44CBQUJUZXN06YWN572u44CB5bm/5ZGK6YWN572u77yI5aaC5p6c5pyJ5bm/5ZGK55qE6K+d77yJ562J77yM6K+75Y+W5a6M5q+V5ZCO77yM6L+Y6KaB572R57uc6K+35rGC5LiA5qyh5YWo5bGA6YWN572uQVBJ77yM5bCG5YWo5bGA6YWN572u5pWw5o2u5pu05paw5Yiw5pys5Zyw5pWw5o2u5LitXG4gICAgLSDpppbpobXmmK/lkITkuKrlip/og73nmoTlhaXlj6PvvIzlm6DmraTpppbpobXpnIDorr7nva7kuLrnlLHlpJrkuKrlrZDpobXpnaLnu4TmiJDnmoTkuLvkvZPpobXpnaLvvIzmr5TlpoLvvJrotK3nialBUFDpppbpobXkuIDoiKzlupXpg6jmnInkuIDkuKrlupXpg6jlip/og73lr7zoiKrmoI/vvIjmr5TlpoLvvJrpppbpobXjgIHmtLvliqjjgIHotK3nianovabjgIHmtojmga/jgIHmiJHnmoTvvInvvIzngrnlh7vlupXpg6jlip/og73lr7zoiKrmoI/nmoTlm77moIfkvJrliIfmjaLliLDlr7nlupTnmoR0YWLlrZDpobXpnaLvvIzmr4/kuKp0YWLlrZDpobXpnaLotJ/otKPoh6rlt7HnmoTni6znq4vnmoTkuJrliqHpgLvovpHvvIzmr5TlpoLotK3nianovaZ0YWLlsLHotJ/otKPotK3nianovabnm7jlhbPkuJrliqHpgLvovpHjgIJcbiAgICAtIOmmlumhteS4u+S9k+mhteWPqui0n+i0o+WKn+iDvXRhYuWIh+aNouS4jei0n+i0o+avj+S4gOS4qnRhYuWFt+S9k+eahOS4muWKoemAu+i+ke+8jOWboOatpOWPquacieS4gOS4quW6lemDqHRhYuWKn+iDveWvvOiIquagj+iKgueCuee7hOS7tu+8jOayoeacieS7u+S9leaVsOaNruWKoOi9vemAu+i+ke+8jOWmguaenOacieW5v+WRiumhteWPquacieS4gOS4quW5v+WRiumhteaVsOaNrkFQSeaLieWPlueahOe9kee7nOivt+axgu+8jOivt+axguWQjuaUvuWIsOacrOWcsOaMgeS5heWMluOAglxuICAgIC0g5aaC5p6c55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w5rKh5pyJ5piO56Gu5oyH5a6a6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ5ZOq5Lqb5Yqf6IO977yM6YKj5LmI5L2g5b+F6aG75oCd6ICD6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ5ZOq5Lqb5Yqf6IO9aXRlbemhuVxuICAtIOeZu+W9lemhtVxuICAgIC0g6aG16Z2i5biD5bGA77yaXG4gICAgICAtIOmhtumDqOWvvOiIquagj++8muW3pui+uei/lOWbnuOAgeWPs+i+ueW4ruWKqVxuICAgICAgLSBoZWFkZXLvvJrkuIDkuKpsb2dvXG4gICAgICAtIOeZu+W9leaWueW8j+WIh+aNouWMuiAodnR5cGU9XCJtdWx0aVN0YXRlQ29udGFpbmVyXCIpXG4gICAgICAgIC0g6LSm5Y+35a+G56CB55m75b2V54q25oCBICh2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwiKVxuICAgICAgICAgIC0g5omL5py65Y+3L+mCrueusei+k+WFpeahhiAodnR5cGU9XCJpbnB1dFwiKVxuICAgICAgICAgIC0g5a+G56CB6L6T5YWl5qGGICh2dHlwZT1cImlucHV0XCIpXG4gICAgICAgIC0g6aqM6K+B56CB55m75b2V54q25oCBICh2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwiKVxuICAgICAgICAgIC0g5omL5py65Y+36L6T5YWl5qGGICh2dHlwZT1cImlucHV0XCIpXG4gICAgICAgICAgLSDpqozor4HnoIHovpPlhaXljLogKHZ0eXBlPVwiY29udGFpbmVyXCIpOiDpqozor4HnoIHovpPlhaXmoYYgKHZ0eXBlPVwiaW5wdXRcIiksIOiOt+WPlumqjOivgeeggeaMiemSriAodnR5cGU9XCJidXR0b25cIilcbiAgICAgIC0g55So5oi35Y2P6K6u5Yy65Z+fICh2dHlwZT1cImNvbnRhaW5lclwiKVxuICAgICAgLSDnmbvlvZXmjInpkq4gKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAtIOWKn+iDveaMiemSruWMuiAodnR5cGU9XCJjb250YWluZXJcIilcbiAgICAgICAgICAtIOaWsOeUqOaIt+azqOWGjCAodnR5cGU9XCJidXR0b25cIilcbiAgICAgICAgICAtIOmqjOivgeeggS/otKblj7flr4bnoIHliIfmjaLmjInpkq4gKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAgICAgLSDlv5jorrDlr4bnoIEgKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAtIOWFtuS7lueZu+W9leaWueW8j++8iOWxheW6lemDqOmXtOi3nTMwcHjvvInvvJrlvq7kv6HnmbvlvZXjgIFRUeeZu+W9leOAgeW+ruWNmueZu+W9lVxuXG4jIyDnvJblhpnmraXpqqTvvJpcbjHjgIHosIPnlKhNQ1Dlt6XlhbdcXGBvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0XFxg77yM6I635Y+W5YiwVUnorr7orqHnmoTmj5DnpLror43vvIznkIbop6Pph4zpnaLlkITnp43nu4Tku7bnmoTnu5PmnoTjgIHnu4Tku7bnsbvlnot2dHlwZeWbuuWumuaemuS4vuetieetiVxuMuOAgeWGjeagueaNruivpemhtemdouiuvuiuoee7j+mqjO+8jOWGjee7k+WQiOS4iuS4gOatpeeQhuino+eahOWQhOenjee7hOS7tueahOe7k+aehOOAgee7hOS7tuexu+Wei3Z0eXBl5Zu65a6a5p6a5Li+562J562J77yM57yW5YaZXFxg5LiA44CB6aG16Z2i5YWD57Sg57uE5oiQXFxg77yM5YW25Lit57uE5Lu25YWD57Sg5b+F6aG76KaB5L2/55SoXFxg57uE5Lu257G75Z6LdnR5cGXlm7rlrprmnprkuL5cXGDvvIzkuI3lvpfkvb/nlKjlhbbku5bnu4Tku7bnsbvlnovjgIJcbjPjgIHmnIDlkI7moLnmja5cXGDkuJrliqHpgLvovpHmgJ3ogINcXGDlkozor6XpobXpnaLorr7orqHnu4/pqozmgJ3ogIPkvJrmnInlk6rkupvlr7nor53moYbjgIF0b2FzdOOAgeS4i+aLieiPnOWNleOAgeS+p+a7kemdouadv++8jOe8luWGmVxcYOS6jOOAgeinpuWPkeeahOWvueivneahhuOAgXRvYXN044CB5LiL5ouJ6I+c5Y2V44CB5L6n5ruR6Z2i5p2/XFxgXG5cbiMjIOazqOaEj++8muWcqOesrOS4gOeCuemhtemdouWFg+e0oOe7hOaIkOS4re+8jOW/hemhu+aAneiAg+S8muinpuWPkeWTquS6m+WvueivneahhuOAgXRvYXN044CB5LiL5ouJ6I+c5Y2V44CB5L6n5ruR6Z2i5p2/77yM54S25ZCO57yW5YaZXFxg5LqM44CB6Kem5Y+R55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb9cXGBcblxuIyMg5paH5qGj5qC85byP5L6L5a2Q77yaXG5cXGBcXGBcXGBcbiMg5ZWG5ZOB6K+m5oOF6aG14oCU6aG16Z2i57uE5oiQXG5cbiMjIOS4gOOAgemhtemdouWFg+e0oOe7hOaIkFxuLSDmlbTkuKrpobXpnaIgKHZ0eXBlPVwiY29udGFpbmVyXCIpXG4gIC0g6aG16Z2i5aS06YOoICh2dHlwZT1cImNvbnRhaW5lclwiKVxuICAgIC0gTG9nbyAodnR5cGU9XCJpbWFnZVwiKVxuICAgIC0g5YWo5bGA5a+86IiqICh2dHlwZT1cImNvbnRhaW5lclwiKTog5pCc57Si5qGGICh2dHlwZT1cImlucHV0XCIpLCDnmbvlvZUgKHZ0eXBlPVwiYnV0dG9uXCIpLCDms6jlhowgKHZ0eXBlPVwiYnV0dG9uXCIpLCDotK3nianovablm77moIcgKHZ0eXBlPVwiaWNvblwiKVxuICAgIC0g6Z2i5YyF5bGR5a+86IiqICh2dHlwZT1cImNvbnRhaW5lclwiKTog5paH5pysICh2dHlwZT1cInRleHRcIiksIOWbvuaghyAodnR5cGU9XCJpY29uXCIpLCDmlofmnKwgKHZ0eXBlPVwidGV4dFwiKSwg5Zu+5qCHICh2dHlwZT1cImljb25cIiksIOaWh+acrCAodnR5cGU9XCJ0ZXh0XCIpXG4gIC0g5Li75L2T5YaF5a655Yy6ICh2dHlwZT1cImNvbnRhaW5lclwiKVxuICAgIC0g5ZWG5ZOB5bGV56S65Yy6ICh2dHlwZT1cImNvbnRhaW5lclwiKVxuICAgICAgLSDllYblk4HkuLvlm77ova7mkq0gKHZ0eXBlPVwidmlld1BhZ2VyXCIpXG4gICAgICAgIC0g5Zu+MSAodnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCIpXG4gICAgICAgIC0g5Zu+MiAodnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCIpXG4gICAgICAgIC0g6L2u5pKt5oyH56S65Zmo5a655ZmoICh2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclwiKVxuICAgICAgLSDmlL7lpKfplZzpooTop4jnu4Tku7YgKHZ0eXBlPVwiY29udGFpbmVyXCIpOiDmlL7lpKfpooTop4jlm74gKHZ0eXBlPVwiaW1hZ2VcIilcbiAgICAtIOWVhuWTgeS/oeaBr+WMuiAodnR5cGU9XCJjb250YWluZXJcIilcbiAgICAgIC0g5ZWG5ZOB5qCH6aKYICh2dHlwZT1cInRleHRcIilcbiAgICAgIC0g5Lu35qC85L+h5oGvICh2dHlwZT1cImNvbnRhaW5lclwiKTog546w5Lu3ICh2dHlwZT1cInRleHRcIiksIOWOn+S7tyAodnR5cGU9XCJ0ZXh0XCIpLCDkvJjmg6DmoIfnrb4gKHZ0eXBlPVwidGV4dFwiKVxuICAgICAgLSDop4TmoLzpgInmi6kgKHZ0eXBlPVwiZHJvcERvd25NZW51XCIpXG4gICAgICAtIOaVsOmHj+mAieaLqeaOp+S7tiAodnR5cGU9XCJjb250YWluZXJcIik6IOWHj+WPt+aMiemSriAodnR5cGU9XCJidXR0b25cIiksIOaVsOmHj+i+k+WFpeahhiAodnR5cGU9XCJpbnB1dFwiKSwg5Yqg5Y+35oyJ6ZKuICh2dHlwZT1cImJ1dHRvblwiKVxuICAgICAgLSDliqDlhaXotK3nianovaYgKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAtIOeri+WNs+i0reS5sCAodnR5cGU9XCJidXR0b25cIilcbiAgICAtIOW6l+mTuibmnI3liqHljLogKHZ0eXBlPVwiY29udGFpbmVyXCIpXG4gICAgICAtIOW6l+mTuuS/oeaBryAodnR5cGU9XCJjb250YWluZXJcIik6IOW6l+mTukxvZ28gKHZ0eXBlPVwiaW1hZ2VcIiksIOW6l+mTuuWQjeensCAodnR5cGU9XCJ0ZXh0XCIpLCDov5vlhaXlupfpk7rpk77mjqUgKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAtIOmFjemAgeivtOaYjiAodnR5cGU9XCJjb250YWluZXJcIik6IOa7oeWkmuWwkeWFjemCriAodnR5cGU9XCJ0ZXh0XCIpLCDpooTorqHlj5HotKfml7bpl7QgKHZ0eXBlPVwidGV4dFwiKVxuICAgICAgLSDllK7lkI7kv53pmpwgKHZ0eXBlPVwiY29udGFpbmVyXCIpOiDkv53pmpzlm77moIcxICh2dHlwZT1cImljb25cIiksIOS/nemanOivtOaYjjEgKHZ0eXBlPVwidGV4dFwiKSwg5L+d6Zqc5Zu+5qCHMiAodnR5cGU9XCJpY29uXCIpLCDkv53pmpzor7TmmI4yICh2dHlwZT1cInRleHRcIilcbiAgLSDliqDlhaXotK3nianovaZ0b2FzdCAodnR5cGU9XCJ0b2FzdFwiKVxuICAtIOeri+WNs+i0reS5sOS6jOasoeehruiupOWvueivneahhiAodnR5cGU9XCJkaWFsb2dcIilcbiAgLSDor4Tku7fkvqfmu5HpnaLmnb8gKHZ0eXBlPVwic2lkZVNsaWRlUGFuZWxcIilcbiAgLSDliIbkuqvkuIvmi4noj5zljZUgKHZ0eXBlPVwiZHJvcERvd25NZW51XCIpXG4uLi5cblxuIyMg5LqM44CB6Kem5Y+R55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb9cblxufCDop6blj5HliqjkvZwgICAgICAgICAgICAgICB8IOexu+WeiyAgICAgICAgIHwg5L2N572uL+agt+W8jyAgICAgICAgICAgICAgICAgIHwg5YaF5a6556S65L6LICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG58IOeCueWHuyDigJzliqDlhaXotK3nianovabigJ0gICAgICAgfCBUb2FzdCAgICAgIHwg6aG16Z2i5Y+z5LiK6KeS77yIM3Mg6Ieq5Yqo5raI5aSx77yJICAgICB8IOaWh+ahiO+8mlxcYOW3suaIkOWKn+WKoOWFpei0reeJqei9plxcYO+8m2ljb27vvJrinIUgICAgICAgICAgICAgICAgICB8XG58IOeCueWHuyDigJznq4vljbPotK3kubDigJ0gICAgICAgIHwg5LqM5qyh56Gu6K6k5a+56K+d5qGGIHwg5bGP5bmV5Lit5b+D6YGu572p5by556qX77yIbW9kYWzvvIkgICAgICAgIHwg5paH5qGI77yaXFxg56Gu6K6k6LSt5LmwIEFwcGxlIGlQaG9uZSAxNCBQcm8gTWF477yfXFxgIOaMiemSru+8muehruWumi/lj5bmtoggfFxufCDngrnlh7sg4oCc6K+E5Lu34oCdIOmhteeahCDigJzmn6XnnIvlhajpg6jigJ0gfCDkvqfmu5HpnaLmnb8gICAgICAgfCDkvqfovrnku47lj7Pmu5Hlh7rvvIjlrr3luqYzMCXvvIkgICAgICAgICB8IOWFqOmHj+ivhOiuuuWIl+ihqCArIOi/h+a7pOmAiemhuSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IOeCueWHuyDigJzliIbkuqvigJ0g5Zu+5qCH77yI5Y+v6YCJ77yJICB8IOW8ueWHuuS4i+aLieiPnOWNlSAgICAgICB8IOWbvuagh+S4i+aWuSBEcm9wZG93biAgICAgICAgICAgfCDkuIvmi4nlpJrkuKrliIbkuqvmuKDpgZPvvJrlvq7kv6HjgIHmnIvlj4vlnIjjgIHlvq7ljZrjgIFRUSAgICAgICAgICAgICAgICAgICAgICAgIHxcblxuXFxgXFxgXFxgXG5gOyJdfQ==