@wycm9527/morganite 0.0.0-stage → 0.3.4
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/CHANGELOG.md +171 -0
- package/LICENSE +33 -0
- package/README.md +62 -2
- package/bridge/base.css +138 -0
- package/bridge/echarts.d.ts +44 -0
- package/bridge/echarts.js +217 -0
- package/bridge/element-plus.css +785 -0
- package/bridge/fonts.css +124 -0
- package/bridge/icon-merge.d.ts +5 -0
- package/bridge/icon-merge.js +103 -0
- package/bridge/iconpark.config.ts +75 -0
- package/bridge/iconpark.css +29 -0
- package/bridge/react/ConfirmBar.tsx +43 -0
- package/bridge/react/EChart.tsx +45 -0
- package/bridge/react/PageHeader.tsx +24 -0
- package/bridge/react/SectionHeader.tsx +17 -0
- package/bridge/react/StatCard.tsx +33 -0
- package/bridge/react/TableSkeleton.tsx +11 -0
- package/bridge/react/TrendChart.tsx +8 -0
- package/bridge/recipes.css +444 -0
- package/bridge/shadcn-globals.css +6 -0
- package/bridge/shadcn.css +238 -0
- package/bridge/vue/ConfirmBar.vue +23 -0
- package/bridge/vue/EChart.vue +43 -0
- package/bridge/vue/KitchenSink.vue +507 -0
- package/bridge/vue/PageHeader.vue +23 -0
- package/bridge/vue/SectionHeader.vue +15 -0
- package/bridge/vue/StatCard.vue +33 -0
- package/bridge/vue/TableSkeleton.vue +14 -0
- package/bridge/vue/TrendChart.vue +11 -0
- package/bridge/vue/confirm.js +18 -0
- package/bridge/vue/inlineConfirm.js +21 -0
- package/design-system/AUDIT.md +277 -0
- package/design-system/DESIGN.md +176 -0
- package/design-system/contrast.md +71 -0
- package/design-system/preview/drawer.html +38 -0
- package/design-system/preview/form.html +40 -0
- package/design-system/preview/index.html +21 -0
- package/design-system/preview/preview.css +190 -0
- package/design-system/preview/preview.local.css +17 -0
- package/design-system/preview/shell.html +50 -0
- package/design-system/scope-map.json +4 -0
- package/design-system/style-dictionary.config.mjs +172 -0
- package/design-system/theme-map.json +16 -0
- package/design-system/themes/dark/THEME.md +29 -0
- package/design-system/themes/dark/tokens/semantic.tokens.json +354 -0
- package/design-system/token-board.html +137 -0
- package/design-system/tokens/primitives.tokens.json +1898 -0
- package/design-system/tokens/semantic.tokens.json +1080 -0
- package/design-system.json +217 -0
- package/migration/roles.json +743 -0
- package/package.json +82 -4
- package/templates/AGENTS.md +13 -0
- package/templates/KitchenSink.tsx +179 -0
- package/templates/accept.config.mjs +28 -0
- package/templates/entry-css.css +6 -0
- package/templates/entry-element-plus.css +9 -0
- package/templates/entry-shadcn.css +7 -0
- package/templates/notes-css.md +4 -0
- package/templates/notes-element-plus.md +7 -0
- package/templates/notes-shadcn.md +7 -0
package/bridge/fonts.css
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/*! D-DIN 1.0 · Copyright (C) 2017 Datto Inc. https://www.datto.com/fonts/d-din · Reserved Font Names "D-DIN", "D-DIN Condensed", "D-DIN Expanded" · SIL Open Font License 1.1(全文在本文件末尾) */
|
|
2
|
+
/* Morganite 玫瑰金 · 数字字体 D-DIN:数据大字(text.display.family)在没装 D-DIN-PRO 的电脑上用它。
|
|
3
|
+
- 原版 WOFF,未做任何改动,因此沿用 D-DIN 这个名字;子集化或转换格式就成了修改版,按 OFL 必须改名。
|
|
4
|
+
- 用 base64 内嵌:npm 包、文件夹快照、ds.mjs export / scope 只搬 CSS 文本,不带字体文件。
|
|
5
|
+
- 项目设了 CSP 时,font-src 要允许 data:。
|
|
6
|
+
- 只有 400 / 700 两档字重:text.display.weight(600)实际显示 Bold。 */
|
|
7
|
+
|
|
8
|
+
@font-face {
|
|
9
|
+
font-family: "D-DIN";
|
|
10
|
+
font-style: normal;
|
|
11
|
+
font-weight: 400;
|
|
12
|
+
font-display: swap;
|
|
13
|
+
src: url("data:font/woff;base64,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") format("woff");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@font-face {
|
|
17
|
+
font-family: "D-DIN";
|
|
18
|
+
font-style: normal;
|
|
19
|
+
font-weight: 700;
|
|
20
|
+
font-display: swap;
|
|
21
|
+
src: url("data:font/woff;base64,d09GRgABAAAAAGwMABIAAAAAy+wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABlAAAABwAAAAcdbbPAEdERUYAAAGwAAAASAAAAFgHpQaqR1BPUwAAAfgAAAg+AAARAK4K5BRHU1VCAAAKOAAAARAAAAHGyLHRaE9TLzIAAAtIAAAAWgAAAGBnXT6cY21hcAAAC6QAAAGvAAACAqTSfBZjdnQgAAANVAAAAGoAAADoC/IUSGZwZ20AAA3AAAAEkwAAB+BzHQRwZ2FzcAAAElQAAAAMAAAADAAHABtnbHlmAAASYAAAPaUAAGg4njyJBGhlYWQAAFAIAAAAMwAAADYPksiNaGhlYQAAUDwAAAAgAAAAJAe0BJlobXR4AABQXAAAAiwAAAPs0KEjnmxvY2EAAFKIAAAB+AAAAfic+bhCbWF4cAAAVIAAAAAgAAAAIAPAAdduYW1lAABUoAAAEqEAADc7fQfIKXBvc3QAAGdEAAACMAAAAyg5gaHIcHJlcAAAaXQAAAKWAAADTi0qucgAAAABAAAAAMw9os8AAAAA01fqyQAAAADWIUFneJwli0EOQEAQBGuWi4t3OfrQCi/kwhOw/MBJhXSqUzNJE0ArHb2daAiyDIxeE7O+sFKxsesHp/9igsskbh69/tYQPy9Tyw5QeJx9WGuMVVcV/ta+j3PnnnuHyyN0GLCiQlvKS6APnrUmwxSnU+RVpJWaSGpC0tgfTWOMvwxqrY1W+pS0TalYLcWWgi1IgPIq5aENIVh1gJ6KFB01V2XQjKRt2H77u5eZC3MvrKx19uxz9t5rre/ba+8LDEAeozEb1tbeuQQ5pNkD7+H4MLj7vvbA/Wj++lcfuA/D2VPp1Ruk+HULxqgvgzGuJduVeyS+V3+nCqsKR4slzWbFeTDbqXYrbkEblmK5ZIXsSqywqfacreO7ftEX9gp1K1fr8Kc5fob/D2b7/2It9SDV0Ok/pL3Jf0S7zCeYijZ/FnN9L9p9N26jzqN2UG9nXyd1PvWL1AXUhdRFfLeYzyV83snnMupd/jzupi6nruN8P6O+SP059RfUl6jrqS9zzAbqL6mvUF+lbuT416ibqJupr1PfYP8W6lbqr6nbqDvYv5P6JnUXdTfX2sPnXj73830rIykzioRRJIwiYRQJvU3oaUIvy/SsTM/K9KxMz8r0rEzPyvSsTM8SepbQs4SeJfQsoRcJvUjoRUIvEnqRcKWEmbsDw4jaca7+HtUpn4/hXr7ZjG/QthLlsRiH8ZiAiZiEz2IKbsQszOHIhViF7+C7+B4ewvfxKH6M1Rz7BEe69IMBc7fS9WIQV4Dv9vt8jz/su/wmmC/7I1y94T9/gV70/9Vb54ty49GNvvOJ/yPth77Xv+WP+dX+ZN0RPXX6PrrY64/U9J73Z2iPq33ushEn/NOM9ad+j3+K0Z716/xr9WKpFxt7j/r/+dWN4rjSWO6V/vZv/Ju0f6buY+a3+APqPeV31FtT7/5yMZ6+nu6a9il/rNo67N/1W6vtnjCiNmvM8N+rrS7i/tta3/zvLpm9qzLDpetcvm5N76bLOhyuIjvHkqfXURx5Oo61aTyZmiZXJ7E2TaZkxdo0plEisvdGVq+bKU2YTsljBiXGTEqBzJ6FImviHDTjYYrDI/gR7aNkdprcfoL2WTzPUWspzXiL4nAQh9h2+BzZPoitEmUoBlOa8QlcjSHcRWM4e/A1xjUUw7X0Ncb1FNPuiunvFNqpFJOvMW6gmDyOcROlJL+d/E7J77T8zsjvwfR7NqNtoxQxlxKhHfMYbQclh9vRyZ753LcRFlFyWEyJsASh+t9JiViflzKCZZQId+FuxhmqcZ47/WH6/wOKMSOP0Z+QixhPYg17nqGY8pJSXrJ4gRJjHdbTk5fxKuffyLoQ4XVKhDewjT07sIvt3ZQ89lAi7KXklVPDfkoOb1NKOEAZxCwf5MzHKU04QWnGe5QmJJSQ/YJqFciEcfxrfB/msTJYYObm0JsQyTDFMFIxfIZ+r+XIsOo4IXk9nD2pM2s6bqUnoX6dZtUo03bz2eVPst1DCfYDPYP0Vs9HCKEKEyocCOib0HfC3QlxR55OZMYC7k6eOnnqhHJa+GaEb1b4RsI3xyjmMOqAcl4oF4RyEV+gxMK6KKwLwrogrIvCuiCsi8K6UMX6S5ShQrwgxEv4MmWwcC/hHsoQ5ayCu1POnFDOCWUnlPNCuSiUC0K5IJSLQrkglEtCuSCUS8K3WINsjpk/xLgOU4ZU8a0g242/MS7j1ynunGuJz1Ty8HFy7yk8jZ+Qgc/AuRcCYgbbRV8KqkunWZk+2aDSXSCOrOq158zFeqaxAWvVNOG+t/4stWP62/x+P/0dWOv/VX9s/bOMTOvqa1dnCl/SnwEnFKNwjDQwwsiHdv51G8XIinlsd/CsNnJhPnO8gIww8mEx+wMXTFxIiQtpcaFJXDBxISMuZMWFjLgQEe2X+HY90XZC24S2CW2H7RQnzE2YZ4S5E+YZYe6EeVo4R8S2WzfKsdovKe2XVF8kc5nHdsUQuJ0Rt524HYvbsbjtxO1Y8TjFEyuerOLJKZ5Y8USKp0nxRIonL/aa2FuJJ1Y8cTWeEEmsSCJFEiuSqCaSrCLJqy6lxduU6lJa7E2JvRl+G3bsfIK1gKuGyrgZI7jONlaD7Zxxsma8WTNO14wzlJuZrEWjVYsW8c6cEq92+ONk5/YGXDzitzSgqfl3/CnuJ0MXPbKL93xxJ1SojCpUpAoVqUJFqlBZVaio5vyMVKFMFcqpQqVUm9KXnDeVM6ZyugQ8mgacKBnVlEg1JVJNSaumRNUzo3JOVE6IytlQORVClppUNdL0IsNq0sXsn2TWTV6AM7RIrmZcLTw5eZNVfW71f+D74Wxfxd00gntsZLX/NG3ESjicd4oRvPeOxKhwH9ZsLfydZKHlzzDz/66p8ymeDuEG3UpJccSoUILYGkQen2D/7L7xIc/w71P/pHu1Kfdp8d7EexN7TLypvG0N86VKjjfxVCur2h14TnzdyMxsJxsP4B0cY+zv4wz+gbPoxcfmLGfNNsxabbRdYxP4+2q63WJt1mELbKkttxW20u63B+1b9m17yH5oj9sae95etA22ybbaTttnh+yIvWsn7JT91cp2zs7bBZd2eVdyw90o92l3nZvkbnAz3a2u3XW6RW6Z+4rjLwab7H5FWwgWq9SeIzuhxpZkp8k268uPZc+5HHtcsPim2mlZqOef/T3okf1APZUVr2wL9W3Fw4G2js+N7LQGtrk/oivbSrwDbSUDA21tThradH1bzVtPzWzCoprbWixCbh33QKgJ0M3aWAvCfWUKT96UbqUZ3UezuolGui/nqjeScObErNDh/rFQN4/+O2WJO/8eMn0Vfy8O1d4fwZ2/Bp/iCb6WdSecLROxgbVxmmrjLNbf3fg8d/4+Vpa3WRXDWWA4it/TsyzC/yqAewu8F4Aegv6FWxv3puK8gv0/CduWyAAAeJxtkL1KA1EQhb+72awhhCAxRhELiyAWqbYSCwtZBCEgiBDbxRARFpVNUinqM/gwPoePYKf4BHbx3NkbbSzm586ZM2fm4oAme5S47Hh4ToNYFRYLEgVHRE2VOkmeFzN2x8X1FYNJmV+SKs3Zvy3HNxxO53dTMmNgPg5s7+vma+YdK6yyyY40Uw44MoZTVsWLwJyYfsQLr6HyFuJ76PwW2tW0e2bMKXgw8/O7rNOjr/kZZ+pqSbvq8ltUqGMgpKk9Iim1eRLSEfJoccMueP7NvVJPL8eWrBPuTAzpSyVStsa2av/3pLbHssejTj/tNb5UH9m/jAKzYRu1+FQ85UN+aPiJsrYYf5fGyxt/ALhvJ5F4nGNgZvzItIeBlYGFqYspgoGBwRtCM8YxGDFaMDAwcXOwMDMxMTOxNDAw5DswMHAxQIGvv58/gwID728mZvv/4QxhzG0MOxSAGkFyTBxMm4CUAgMzAGlODJQAAHicY2BgYGaAYBkGRgYQ+APkMYL5LAwPgLQJgwKQJcLAy1DH8J/RkDGYMZGxgrGOcRLTcaZbTHeYmZk5mLkURBSkFOQUlBTUFAwUrBTWKCr9Zvr/H6ibF6h7AVBXEGMCUFctUNcxpptAXQxgXcIKEgoyCgpgXZZgXYz/////+v/x/0P/J/4v/J/63/+/93+Lf6x/v/z9/PfC3zN/Tz84/ODAg/0P9j3Y/WDTg1UPLO8fYX0GdTnJgJGNAa6VkQlIMKErAAYNCysbOwcnFzcPLx+/gKCQsIiomLiEpJS0jKycvIKikrKKqpq6hqaWto6unr6BoZGxiamZuYWllbWNrZ29g6OTs4urm7uHp5e3j6+ff0BgUHBIaFh4RGRUdExsXHxCIkNbe2f35BnzFi9asmzp8pWrV61Zu37dho2bt27ZtmP7nt17990rSknNfFCxsCD7WVkWQ8cshmIGhvRysOtyahhW7GpMzmM4xcCQW/swqal1+uEj167fvnPj5k6Gg8cZnj5+8vzF/cpbdx+19DT3dvVPmNg3dRrDlDlzZx86fb6Q4ey5KgaGMwDvSJqUAHicY9rEwMXAwAQidZk2Me1hQAFMHEBxIwaG/99APAT5PwVEMvszsP+L//+TgR2IjRgoABwQKo8hhSGcIRlFqggohg6KGDIYYhgCUcQiGPwYXBh0GGwY+hiagCbFMZiD9RaDJBm1AbLlG0MAAHicjVXNc9tEFF8pTmLyhRxCxoMOXbG1ScY2LtMCSTCJsCTHxhT81ZlVwkFK7IzTU049dGDGnMhswv/yVC4Op1458D/0ADdybK/h7UpOk/IxaCTrvd/72v29t7K9u7/n80e9bqfd+ubrh181v2zUd2ue61S/sHe2P698trW58eknH390r/xhqbj2QT53l71v3cmuZIy3lxbn595Kz85Mp6Z0jRQpaIEHUzmaqYXMY2G9VKReduiWih6rBUBDCvhK5Vm9riAWAg0o5PEV3oADsNHz6A1PO/a0rz01g1ZIRZZgFH5zGR1re22O8k8u8ylcKvmhklN5pSyiYlkYoVYlV0s9qD0ZCi/ANWrR/JzDnMFcqUiiuXkU51GCNXYSaWvbmhL0NW8r0kl6UZbFnXphH1pt7rmmZfmlYgOWmKtMxFEpYcaBWZWSHsulkzMaFZ+L87FBDoLCQp/1w285TIUYK6Y8IX6ETAHWmQvrT3/P4s4HUGSuBwWZtdm5rtN8XVKD6ZzBqHhJcDvs8s/bSJggMznjJZEi6A5oHW7Jy6wh10LUGK2JQITjq9EBowYT0cKCOPGQbtLimGJ89cuZCbVzH4xgqG35ydZrnSa8097noOdqdBgigvcOszZMK3Pt0/o3M0FakBxkmEoaW1xQT5y5lml5LpotGLW5pOdsTMmB+YzY5YIPeiAtzyeWdx9Jy2hiiUEbiWXY42aXC0jlGn3mIfNnIYwOcMoeywYxA5ZemRYTyxm6WfaVr1xFo39MYTqPZGHUzQCcHxkiDKUsvYpflyYWyGeW6SbDNDKPx7wguZ8Ms5iAIuH1QjwQPQ62i4IdJp3zontljAgDbNyxq5oKZXYCK6x63WVFznGXq5AkDFYcIMFhEgVlT50vpE9O3P9t6Qhb+sO5P9zCMqzNL8j9qxfRA2r+fJ88IL4rE686OJl5T/D+EdwJzD6e1SPKTQtsH1P4jA98OarI5voLUw2Ur+arx5td1mzv8Y1k0bFBpkvlvDfSMG7GaXBoIZ1LU66bUz46GgjQGgqsWsFfmM2l8TGwOQqVw16tUK6ZZOKNy4B16g3cxE/qt5JOyxF06pNsM1LFPE7dtHwrvkpFHc00KYwRadmA+sSEnzY0pHGmnbqCJO9ZySrlbMB8NqRgt7jcm6RHdSQhQ/Un6WvvlnaDLKSJWGieKJJMqBXMm+TCrtLlEQO9x3Cw8AyO0NQCTTrsq8Nt4tz55m0coTjTf8ea0Ph7aCMuKiNFmjW7Qq6ZJeskSEgGn8ZjpKKLcx78kwHH2w4TAxWs0Resyyum4qDDvzefyh0uk6bW7FVLxUjXqhHTTtuRrZ129zh+dasXBiH0tMef6ZruBFU/uot2fkEJsRWqS1SCUqFSkdk6qKSVv3lhEzJS1pQClH441ojC0hNMI4djPcaMuFBeFbKJjpZUbLEn3inE0jE2Upi6IiKbJXchz2x2iE3GvyCP9uWAfOcPReDLQ0ZWkR68NdDYNtLFtiNNn1mAOTaowjyrSnxH4jsxPiPxWRxNbVXD8Nu9w6NI3/vVFMalpNLHD48w/ij9BZKhOXQAAAEAAgAHAAr//wAPeJzdvXlgW1edL37OuVf3SrqSrvarfbdkW5YlW97tRDebbWV19lwnjrM4zZ40cdKmbegSU6D00XaAshXaAjMDdGBoQ2jL2vIo20xLm5KBDltbCp0FmDKspdPIv+85V5LlJGVgfu/985JIlnW/99zvOee7n885QQTtQQj/mpxFHBJRVLWKHOE53mgSOQG+KnXmiw4n7u93FB3FjoIr7og3OeKOPfgdlWl8sPIIOXtxdYIcufhOBH8I6oH3r1bbKqkJLAhIFI0mxNm5MY6TOY4TEc9juyDyBzTRSR9QyqLJ7RMOZ78vz35ieJT+rCKXFIueZM87fBOumRlyttI1dQaekcZvw5vn+CWcIHIi5Zdn/D7V2chv0ZGkr/TJk186cQKa+C5urXxX59UJbyZoJ4ii6Iy6zOcXRLfHbLcYpYgtLHucOOr3cnwQId4biopO2SaZY3EUtjvs2zS/x+Ewu3ijxWrZpuGI1WpWXIJg9qFSsVR09ueLxawDQTdor+qfscK4avxbLFY/dBQw7auY7GWv7iJ7FUX28mThIv60bc3W4L7ggeDe4PJN8sot/r3+A/Ba/ZUD8gH8niPbnoQ/245sexz+bDsC/QvPPoGfID9FbSiHbla7m4yeIMf5+Ehbm83Ge7j2fKvFZ7Bs1aLGqDFIiMxFOeLgOIPqShh8ia1aMOAzPDr7uGqVnaOf9mGDz+Brzwmo5Ozvz+cnsvanoF9O1B/w2Z+CiaN9he/ZVw1d1d86CilB9CS723GmGMHFzu6udB634+6unt7uoieClWQ7TiYEj9sbxRHswfiJdeW9Kzbx00I+vymR7tiwdmx476KVhmv45uam5nS2f8WKyuN37bBt3ybtWd/ZsjrZJJrkjSuW77CtGbNNLM9mMqlYyijZNq3Az8JcG1Dz7GvcJHkUWZEDZjuHBtF6NR8iZndforVQkBMONxGGFlijU1q6a0qzpq3pnJAbnNJySYfPlhB8U5qQQCCpvhLIK+0izGs+m503px0FZ3oB7uopdnrD2C0kcREnSQ98k4auwTfeIpp3fSFuvLZ/0bLFyxYtWob/enflxl02s+R2WyQP/mn1a0/tC+OK5XcMjwyP3LF8Bf70xTLeGcicTodC6dNNocr7565pc18jUIvc7O9IC/kSSqECGkCfUid7bRl3qyPaFcoliwmOi8WKuS6H2yYODtl6e7uKAzGjlIwlo9gRbe3qkkI5dyaXKbTKBWwx+AprtVbfQEKO5+Ol+NE4b+XiccnHSwNrNcnF47Ua79THir5AGarSUdNzfcD62Sf9Rf/Rb6+kISA6g9iTTIDA2EBG0lRmqOQsBDECUXELotKriAqhwqMshAtpGPTejA0ueYv4osdbSLYG+aax4uYdfUtaYm2rCh2rWjtLm5etXu96NeIINfkjCmkN7UlHm5MHDwZShtbU1Lr+Xb39S1Lt5ZbWclv7WPfJTcv2BfBzsaArnYm2+ALxCuePvz3eFczkEKb2CN3D7JH7EcJxvIGjdugp3ZLpJgjMD7U91O5gmItPYhPopYTCqoU3m0URY4tV4lKolNdv0vvd093VW2T9UJK5M+OFjs781oM/evELk985sP/C5KVtBVXJIElGQqApw1xTrCU2LJmi1+MWk9s6OwrjZ27ZKl3Yf+A7k1948UePsXbwrXgl9MGBnA87XA6HU+SooucduB96IGZ6M70KaCodaTHjSX5gdXRsLLp62erI2NrYqmX45VxPe3tP28R2/ecOxlsBDeIX8S+Btx41KpjNnGSUMGexmjDBRzRhluCj5CbyNHme8ATlJ44xM1mVAcY2NYHwUDCLnuQz999//L77jv/gOPy8X+97enY7ugfdBoPtV62Im97Ko/1b2QRQeSqibBaaKHpEGPzbvrm7Ol44hlX8LrgnqNrA0RkQd7U2hp4BcwksZJnnoF7OE89hV+WX+F3T1WfB+0PoDrjPp0rVSd6vcVTOa/MMj0qmb7/9jjv0efk93kceAXrXIxyGx/CcC1xdtX0Mng2jfRf2kkculpgv6pz9Hf426KcVvFGz6vYRs53YQ2HBPa4JojU4rln9VZVqcG7eP2FO3rtnP/zds78tGm1ri0Sz0rXX/vbYyRPHf3vNqeMLln93+dAQvC1gfUvBWxDmXkAx1WYAly0aEcac4IMAoESFoL8qSlQSuntBnN934gT44/iGOzZfXF0dV3h7HPgPoxE1GZCksCXk9XIWLhIlDhQIB8Y1nxi2WBxhn0Mc1xwiqtkGahdg2p399X7VJt81ZzqTNXWnHZVx0RMv/CydicfTN3VsWzi0tSMW/eTPK1fvwy3FdluqtS1j9/VsKHRuKDpyK5ufn9bn43f468BfB7peHQ7bDYYISXtyLZLkIVxnscUBTn1c+7IDCw5PpOxIKuW/d2DDQgfmbQ5sFjhHJAKesSPRYRzXOvwJ/7iWEOvzgRTqDKiVm4S/2ezksUYnWOtRdb6K1Cx1sq5lcXf1U62TtbkUWU/B3L3v4PUtmaZsexsYvtZMIpk+tX9i677WTC7ftX1QmtjokVNNhRZnrnC0LSOns5mEw7F55+71cm7E41o34Fow3gF9T8IAvAzza0Mr1bTJYEWEmI2cgZPtkiRaQR0NJgOIGW9qUcomEycKnE+f96weuTj0MKY6QcXaBDWBVnbHuyFKY0qKX+6bqbz6tZmv3TrTd+TIkWl8vpL/yEfo2FPZfgyeH0Oa2q4QpycclpxSPMECDoVzwt9ALOD3y+Oa3x9zxWCMY36Xd1xzCXNjDAzo5oF53mqgWJOXy4Y2mRCTDlBiT1077tl/qjmZbmrKdHqO4ZOV15sHNmsHJ6XxMVmIpTryXR35PL7t6g/G9u5YNHlAjw+pzHwP+HYC56NqsykcJrLRQzzxhOTfqhlMshSV7pTuk/gYJ0lO0Rkb15x+kepMlWHgsr+/prDFRp3thVF7A8W995jivfftd3pDa3ee3JFua0uns9m0dGhHtGV5Gy5W/s28V4vtOnK0kI1m8/nWeGuB6V8E3v6O6XBKdWKeh+kVjdgg0InV57PBuIIB8nBJV7wb/92zb/5u5Tfk7PGLjxP1OFgrOlc/AD3RY6QdapfY18e1mt2JoFIoJMwcP7RAEcVcV65rq2bJYbchF7CWc7moHB0c16J+OT2uyeL8WYNR0PWh2KgR1dFox2w42I85Fa/Lv3Ne+DT/t2/t6G1rjmU6xhcs2FpojjZne3cuSDa3xOMtzYlMPp9JF9qbpY5tQ0p+jeJalnMWNxXhn7Nt2OVbk1MWbOvAn8jBILS1xV2ptsrXO1t9zZ2dzb6WIpt7GM/vwTjQuR9WM85wGPTGY4C5J7GtmgwkdnIzuYvA3BNicvpMYBJMc1btSjOPBVDiBoMtcpd0Dzv0SZ9iEvC3MO10+rGizzhIQPOKtspT+Ho262z+qZxyum8iRpYPGVFe9YkImcy8uF9DPJY4EAajzLwVys+xN89tOeDVC77r9tuH77gDv3DHw3q74F/n2m1T/dAUbXd6q4nfvxVx+7UYSB4yGWUWKoDly87FPJ6kAq7XBY26T55shza/9c3d5IFqXNCNX8CvgKwmVQfkbAICj3M/jyf5p3nCI39+YqLByfV2N3ms2FPAD1b+HXuf3/uJ6QP7TzD9LKBpaOezjL9VaooTiSAKRhMvHtFkPsoTD/ALjHNHNIR2IPI0PPrR2R8/bC0jxVIGd5/NThyb09TsvCzXw/7Sh46x12eP7Th2Ge9EAG+JgXeMJ/HTENVcxnsOdxs8hgL2Au/QzCf2H5j+xN4HgHfIKvGHyRdBbxPosBoLx+ORhEcUEzYumbLZwo6wYjY45Ai2cpFIwhF9dPaVs84y/PjDWQf98aJqs5QT0QNawukwj2kwitV4m82B3iFnv7Of2st8PazWeerqKWE9Tk4IYrIeRssQXoMToknoh+RAr9ueTKXi+DoyNTGgFXzBAbt0mp+Z+W2mPTESaPLEmjLN23e1ry2mFiRXe6L+1iU3Vm3mKW6IfB5sxwi6S11b4JYq8ciCPmsms0Dh+NFyLBa021Mjmt3jGRnRguqI5ooEZQ++4cEg5jxBT9DYN4i6IMkY7BrR5MHoIJG4QbkNvjC2jWhGjPRqgT5jLJ8oVj3CBO1xf5aaueqkzpmbqgbyl5gZ0McMvFV1EuJbR82BsGwUSGiu2tOrUEsE39YVdfHZ3bvPTh87O7WjnFMdsR3vHSmneq2Hg95QaMmbNs/cveTGzUM7im0Dp8qlxcl4LPW2HZ86NnzsUzsmP3lkeMeeRHTRZ7ds2hFSmisvxaIdvcMb37T0PWdGNt487A9sTMRwaHyDlm9ZlyvAePIwqONg10VkhrjQIxjBBEsWMx7TTJA5cDwn0hi0SPXP2a+no9Qzi0lX0ZXMSBj/zS9b3/67g7+/fdWG9W95Cy3W/AabKn9g+j0IbadYXKCAlbtaXWyPRgXJbSOBgFvg4gmbPWKPjGkH7fg/7NhgD0bKFjtWOLvTXbZHrWW7yVy22wVRlMc0kROiY5rgnG/5s8z2T05cHg/R2UCQjgjJuCPeST+ITR4YaiqVTvqexRBR/Kbj6qnKz7F5z7H2lsprb8rl87leCLRuvRWvHuvbvo+cndrWvsr9o49nM61tlc6Otpb2c3q88SpJg26FUZ8adGBjAAciUZOJ9/nCPG8d03g+7B7Twq55zDr6842RtaPbzsx0snvOPlPJKFKeOy8ee8vMgr5S/2Cpb/CWN08bsete7Dp1WBS6F67W7t6wcqjLKB69luoDHeM0jLEJuWhc74Lwy2R1e5BzTEOcyQXT6Lw8rndVPUQW99YiRcfgb6ZvfduJV349ODgwdJScvfmd73jnLcdXb7h1y5pKJ/QZnoP/E54jodPqGDYYjJIockZItjA/pmElXz6IMc62lHGqufwfGBswnU0Ms4lhNnG3vYxzchnDrGKYVYyNJhMC3jijYUwzXjartXnNZo/NK4EA556q5YTg68tYqLwGEcty/DBR/+74Q8chzGD2v8arCR1TlwOvgokTOLNEOaWsPQ+cdsTLuCVWplziHv+f4hTkDzH5c87FXXUW4Q+NyOssVhl0JBl7YuWPM5S3h45XXqrxVpOdCCqrKWPI73DgkIKVaMxkivAB/5gWCESqQhQBIYq4LolQa4anv78hyHkjYYL01mOfk6YF6lDv9a/9UZema/eLYp5K08YVC0vxQ9cwncV1eZLQIXXYBGNnxkSAlN8Eg2eCaV5hwiaYZhNM87dpYA8D+Av4CobOBENngqEzwdCZYOhMJkESOSI4ayVLNmoTNHvJHs9eGrvAkNG/9FeSnvnZzMzPqC3BqcoPydnKT3GI8rYIOHyC1UG8qknPkfUCb2MlZBEt5NKsESMfvJlZX6KqTRJ53mI1cBLMplSVuHra2UtNAzyaqoSvJ+p/8/oVG6bDKVy5+IuV6+rjso211aK6BUI4s9HEQYNI4ESek7haL/sbZAGLNPJxQCjuSmL/1pmZVz70o1feh4vHvwJ9+jJeXPl5ZXdNXn8BbRson8Rg4AURcQYyphka+Kx1EMRrcAa3V9ZALx+vyzv5MNxvQQXVC1E5MRKrjRMkAebPaDFxxFifA704NmcJ6LhzSY6OfBCTD8/MbLl1ZuahT7Oxf3/lF1ipTAGvM/hNteeUmF6lIa4yYKPBaJYg0TMJHDE0DkBD66xpl4OUZiozMxXW7qcra6FNCHv0uoSuDxLyU/vlxUYbtgWCvJNqgAT6ILmuUJeoCfxlyU3nf02/5bYT6sDAUKmvr6RL+i3vvPedt5xctf7uLWtWjYO4o5rdjEJfzGA3O1W/UxRh0IxgOZ3CmOZ0moxOk4MaqHrEnW1QuqpvydLRi8+5k7+97rr9N81g0tLTXbjuOnL2xJ4d05XXoK/f6Gzv7P5GtQ5zFeuvDN5jQA2HjUSWscfoiUQxLwmsw7wAnRdcXJAtXVR1v3++vqRomQxCi9pA8N7GTJ+kt5en1vqCf4DRqNzVVxpi47Fn8Vt67+ZqQ7J+RW1E6uMxAONhRV60RI3bQMItRqMEubPik3gI3cY0mw3iXS/MC2fVxb3RKDWyx6aeanPV87qSnO56sxjHds1gYc+p0uB73vuz0+3Frtxp7Kv8Kzl7dHLpdm/lAr61o72V+hv/7GsEwzil0GY1HyQ2dzxutBmb0lazLxWOOYQUTBPNkVQyRngHRyBtdqRcDt9crMpWC2q5YbUQPD+jb1gqSOu1kcZlAhY9fPC0eFocHDjaVlj0hZv2X3Wt8Uauq7PY1d5RPnvrMeHo/v781pasUYp+eMfVh3Z1tudbUq0ma+wj+45QfRHg7d9ZbNWkOgkHOs2B0XDSrBkmmIoWxJJMu6tJM7OB3XH87w+++UH8U6LqSbOu4zAeWWjLBW05BE62cBa3x8pzLtOY5qqqSKNiQ+LLDJq3ZtkgxPzFMXVmYU9P6c2Ljo0IgweX4m9XegYXLRrE/1DpXHpwkD2Hr9p/AflUM+JBKwQnKzd3lvprxUswFUUuyd/2trfd9qP9IN5J/CMwuOxebgGzQynVLiCrTTKCdbA0mIfinP2B7nJJCYNoQGsQmy/4m1M3vunaB2b27fnogV3MTsxWMDTux/9CXzXeVjEb3KH6IPEEDyMg0YAksMMmDoO08pi7zA5X/TJXVHqpIebE5A++cc/1p+7+6vc/ePs77sZ78YoXXqh8vvJuNDtbfYYfnmEEa+SilpTnTGbEcYJAwM4TGgTQWmLR0VDroDaU9gKPzXzrzhtuuAuHwGMF8Xsr/4p9tdrJj5nd7FWDJgPBRiPkoWA6q4LAmQjMInHWBKJaSWmQ1SZPvBvHu+MejH9cUXFL5Uf4ocpz09PT+KnjxytFJh+fxDbyM5A18E9EEHieLouK4LXBl4CqpJiI5LON9X9XNTMf/M7mzd8hP5u++KlpdGltGZFLa8s08M/trZeWq2sEmLwIz86oLk4UBRrfsaiJh0fz8x+t54jgqCEbSua2bLlwIUrGjr/+j9BOK5bxy/BcAflVs0CMMOgiT9d5O+mCp6P+dJCaC/se2HvttcBDZQsuVJ7R+UCzb8W/nX0O+PZAfGCgy7UTGs3DHZg9lYZm+LcVS/Nanf4mshKfIOeBvqAmCKQokBBFUZ6W6rkYp3Jj3P3c45zwIPcM9wLHcXQJ4amJYzj/FGVDSd5026GD5Pytei0vNfsafozYIO9OoftVd8InRWTIpPim9JiCH1QeV4hClzpXh6KjihKUZZs/hjk5tiY2GeOsgi22RjMctd1kI3lbyfa07Xkb/4pt1kY4W6+3bCt6yjabMSg7sUUIOiGrtRshwzV6eU/NQ9QXuLM0Gzqur4RNTlQLq9ljxxtrq8x7wfjXVrsGIVefKxDTklEy4XEX8cYDpwK9rWNbtm84sj7ZMr1vSyY7vnolsU1srTyQC/o2rRxe27I+Geb48sbKWK69qbSIrs/DOHwXZF1GIbRAjfppqGRxcI5wBAuyUQ4Na7LX6BnWjHaYHcr/5S6uZp8zTDrrVcx5pawftF13OltevWvX8kIu3dyebxV6CuTs84MHDu09dPDI4e0Dxb7u7d19Nfl8DT8JcxOh+ZqTmIMkGI1JkuD3RwRBHtYEewQ4inj/VL42V1jTg+z5Cdu9x47t2nHomlxmPJ/N5K45tEM4cPXOowd2bTYLTa2Htw92NqcEcdNuVr+gvNDxCaJBNeInTsloIZZQ2GqUBTkIw+ORPCYkeClb8xeEG+ZwjiFaVEh2z4VBwFfxjp2TK1dnb7guu2Z5e655/ZhwEEblwODzF1cXeo6wcTm8/XCVl+dgXHwg+u9Ut4Qwtpshh7WH4wlktBsJpGdGazgcGkQ4jLDBhrBVCKE12tOh50Mk1BIth5KR8iuh2RDhQlFneXsIh0JWtyWGLbw7Nqy57VZ+WLPWhrUuo7XMTpfRmpDOr7gzI6GX20v6EDeUNlMgA0WQ2Y93FZpaCb7myOTUNcendk1XZvPntOdtA53REGdYPj59qnTy5DUnln2tc5Cz7q6uQxWZDy2pUafBIJqNYK0gzHFDAGZ3jWp2JJgl86jGSTK4kaoxnssTGtbhKQce3V0XmQp5kq/4JyZu6O1dsWy0hWz3+1ObK2vwQ5uji8sb9LrVNiaDAZSGzCqUIraw4oaIJtNM1HB8lBApIKWHNZPbKVE7EbY6RyUp47QLkH5hiyEgjGiBkFd2xoc1Z00u2AhW9d7JysHVcKxR12thzoKG8jCrRAn16jCVmXv3GK41ZJMbs2tW6NJz9e5WJjx/PTbiC+9Qew4e6gcZ6q5EJg7jgb7uAghR4bCuXz3w9iwb14KqEKfTZTK7zG4PMZhdHoNtWDPYgUxX9PnrcMwF0XIZtUcOpt3woee0sjA5tuV0W1Mqf5qcfS4Q2L2l8im8NJcvtFW+CGPZD809UsXnRFRZ5DhalC1rzKLISFeYuYyQoy7uhhvIjTcS48VXyVnIucjs87NT6GHWhozyqiITSQJptztMMuLK4DRkEF05OIcyqItAp+43uYaMse/GG7XWgO+GdSsggt598eZQFBLH12jiqI/NayxmaVU9l+SNMo8kagOLdDGsMXHs1RPH3iKEzv/We/r0x9919rH3fF/9AIRDNz73dOUb1XatrN24KpsNBroszyHJOKxJnsbkljbXmdZDQSqlt60/rQRa+9etJO6Lv40FD1Z5JL8G2YyhxWqcRKMxr2K12ZQYF0+IhBgUW8zjDBrANplgJun4VlWjqEdClwRa+owqPZfM6tz0XqcsSm5uH9q8fuJ0LpXOwVtT+2lizPtDixZNbdZnuqO58rn6jM/JmO1PyZj8l8gYZaIuY8Z8IKg/ua1QlTFqG8/D86xIoXmph5hlIvv8gpPaZavSYNfecL28h1V0mXKBe9h59dU7N23askX3DAeO7rz6APipw9QSM1zb7BT4TRvzmwvBbxKbTTY6ZPCbctBKJF4CzymBxx/W+LmeVoFCpfmO09XgNBPgRFGj4+y5rp25zVXZ0zilu05i7Nb9Zvc/Yn7OddIxmGI2i/qqIfBVBqdNkg1yKCwHLTKSiMkEXspkJyAZpNF5Akelec6qab7pqYOW6NjgtdlVK3buXL2i7bob2pnFyXfr/qr74jbM191VVQY2EBfw0woxLgyQDApLDLLHYJ4nAM7GGkRNHj31mXepzYorGcz1wsT3xGP8Cam/u/JN6h9gzj8P/W1DB9VSgnMGWlokp5Rrl+3YHm1DGawIGaOnzTiiUbghMaGgPbgjeHXwheCvgkKI44Jc0NPm9URHNI99fg5azUJ1D/jGK8tzqDV9BaFaz6uh1mA+7zp0Ip9uaU80965efnjjgNYxnU2nm6PJBatXn5gQNpd5Eo6Hw76AYLIOL1q+ObMsK3DBSMSvBAwmafmisc10HP3wppL3IydSmR/EksmOsdVkcrllC5IsEnhCiyxwI5pQtSW6wtufuMwRuhxuHTzVzTxhr6fo+WExMziyfnT0hinIUX7ZvX/tMhzcfFX2rzbregxj/CwxIjvNY3lsNWOzwykR2S4Oa3bvFfLY+VksaNXpeEdH/PRV+4TncE/lmd7+ngHIAP7h0CHdF5ng7TlovyF/9VAbf3n+aprZMzXz2auIsfIwXn7xVf1e8j2414ISqoxEqw2sqtlk8Qh6A52lYkP26tLz1iJLYk0za6cmpta++f37r9qzX29RbxWvrXy6ztf/hrYl1KZ6DJyZN0kSz9H6ucgZDTLS/cAliWtHIZ4Rk64MTV1FF160Y9OZD77rzKZVZ+6+96//Gltef/e7X638qtrv2avwP0P7MrVWSDJYeLvDJkgG2SIbBNCOqisr0kW76ioO5mxYh4iUMM1f8T9/zb1iYTYTCZvIgzNX7QNv+Y/9XUc9YRG/BtZ4pI7D+QA8h+WyIuY5hAQeoiYkGkXISWQD5vGIRjOTN8pl4VmQzbponeMDL79cedfLL+PD+P7KN/ftw3376vnkIPkp+KNxtaAI9mjUHQyaiUDiCUURBRFiIVmMineKnxZ5GSI4WywWHtFiNseIZptLNueWXVG/vw4umY+TSCe7WdmMBXCJOWQA/fVzaqK1NaEODSdbo83N0dbk8IbS0L2t6QPp1nsGS1Ntt/f3W219/Xe2TVGex2c/iZ4CnhswenMYOT0OGZ+eJj99/Zvokj5uUzugA5w7FDJzPpETwemKik/xQSeVqHKn8mkFOqkociyGoJOyDb7/bzrZUIbrpYFfDf/AJtvL3ICHuQOIXXLJLO1dNjkyVEq2tCRLQyP2tjv7+2zW/v7b26ZKg/ewHt87VM31M+ir+Od4F9iQo2qzyRsImpx+v/OoZjRe7b/Zf5f/V34esnf/mH+H/37/g/7H/aKJ89OINqqERv0W1WsxWAxHNU/UgmXLpOWo5THL05ZXLIKlCtCr4n3p6sqxzobSYkchlc6w4pyYYd5cmVs6xYuyQV/A5onax3zLc4HWkDcke6PymLKi/asOu1UKRDq6++x2i4V+6Ec1f4u+WsUeDKpRIkA8JhpNbF1fpuv6YlDisF1A3AGNar++KlzFNszDkFMggis5cOut7gnfO4hxZndlMZvfD4LvvAGE4JA6IPpjbnfYk7LbPX6uKe3yyrFUWE7JKS+K2qOxKGfjomE1zI9rYbvsxnbO7VW95nHNyzB5Vfzz3CfmVaqo1oald1aLujw51WHRTAoYFDqM8aZaojo2Ojh5+PDkYHkNXtGQqZYnrbu2kwNHdh4+QA4fs25fbkY1v/E58kUURRvVnJnHRhfHhY08H4tHIG0a14JWCVI/yS25ebtdGdfsIrUG4xrvm7MGVWQzRew2AIaqeFSRWgaayepZFY3ZktXQhWI0vx+tVI773AsXbt88NnF9QPEHz5x5V+LYIam1ecXx68d3bRoLgPe77fhCtk9gOQmTdohcMrSSlzJFFJPS3BK3H9XimQw5qmUYWMX+9cb4jcYpGTHTm+7uonhUGq70KiJFtSpiuqfujIv4nfmBgfyi8uJAcEl5caGvr7BkdHEwsLh848BArm1goO1/hUJwtW2gpwDXg8HF5SWFnv72xeW3LcjlhoZyOR0XKVbrw150q9ppwA6Pxyu7XFar2WLmvCI2ghlwY4K3aQ5a6SYOjhCr1yrYDYJhm2YWHp39/ll7GX5cUJ1yWZBt5ZUCNgiC0euTjEJ10Z6m2tn+BpTdFUa+bizosMOLFTNp1qQjYx+55ZZbDt3z1sP733LPIfg4c3JL7xa8qfJz7Kk8AB9PMn2as38iSqpyTZ94iiBgllCX2Qa9cUDzzChSs1i5/5rKvQwzMLsFP0GeRAU0hBagXWq3o7/fFifuYC5nbM0Ui0a3jV9Yah1qSvI+g6PHYuYLEV9kRAuSICn4FvAFw4hWCOnO7glHbcMA9NSpXAIQqPuB7qJbj70y+oaBGvibCp8+4YqOA9dDMGeDIHB/s+2YGo3lFq4YbW9JRtrGujdrVy8MxXJDK0YLzenIrnXNzc2pppaWpl0fH183HAummh2eiRVdY163ms2VW7etWRYLJpvYd+tc3lLHMg1P5Vta8u2tre1EhHGdIivwneQxHYP0iCiohOMRenT2P9RmqcwhbAZHc5DWeCEgbaxavsCJjXXL40VmwLKOIvbli4Enq1ksxWZNHTz4+MGD5LETJ04wfN4fyI/JZ1nMP4Am1A4f1x5J90pOZ2+E4weHBjr2aD3pnvRAMplIZPdoA4mBhCzKwT2a7Bc9ezRRmJcI5BtBlZfuZuAbYfZgx2ugITqyusV6w4Ibjt+zYcM9e/ey9+tvv/16+lq2bt3I8JpN8dDiRCwc2zS2zLTlvn3779sM7/vu27LqXTfd9O5333TTu8ZWrRteu3q0JPLB6NjStlQ4yBsWlqHvKfwAbuPWQM+bUBp9Uj1cr+JmmhXV4qSVW8iFveWYw1POxbAhZnKVLTHsFGyxfZpBtkVteRs3yNlaJVqwRSgYdF6lrQlOBokcxHLwleBskLNwQTXRNBpUZfdoMGhMR4xNV2nGOB+rJy95hi04drw6cjrCUS/pssqZ/t38Ko+TjdOVK7reakXXW3T969JNjpivo2+oe2Gb07N+cb9bKbS43Tz5RX//k367tbe9tdPd4rARku/6o1eRwzYH3lbdy9SEv4d/jgwQwWZVJzEYQLCMkmQyCUigyy/In28M9OoJQq9HVDzd7N35k8nJl3bswMaXZnbsmHmJvTNMBDqFf4wPQ9u9aow3gA0TDQYiUhB/lOASmSRHyZ2EJ6pbGSVgtuuouvq6eBNdG0ni3ZWn8SdvqBz9HbA8O1vD4jsFRAtQPBrEXfgc+QyT7WaUR+9USz4un8k0J2OxLEh4tpnjCx1ycK8Wat+rJdKhfHqvls+nQqlmOYTlZmwNNYeaoSnZLsdkrpmTIbD5TCA8KrNdTBbXqCyLBdGzV9eCGlaE7U6hlmh7tdiphzWXbO6pFhb/hEpw1CSBK0pmwCj3dnZDPOf5ysaOjk3dPZvgvWfR2nWqum6dumpLU3NTa1+Tv2tjKBTHXZ1beno2d3Zu6e7Z0tm8ccmSDRuWLNmIuUSs1blp9errFaUd5uAwWY3fCr6drvkQlaNGhcI5wVoEntLxiodxoPIy+eIRPX7qxO/FW8iXEK1oltSUQswO4giGbIE92pgN32f7tI08ZsPIhmOcTRDcezRBB6/an6A1Syrcc27XmX7DPr9lQ3ppS8uSTGZJSySTiUTT6Sh+74aS/k3L0vSKlmi0pTkWa2Z4zdkf4hdJFiRUhsyhC8v6nhCbTZI5u8MiH9FkS9QC4Z3FYidSdZcI/zR5hcwSjqiyU5euxq11VdzmvBjL1bBrRISBqe4cuR/S3TXYz/aPZI9T+WvBf487uS0gf39g8tiEP4Zz7PdXL19/wtxftv4kJn9+29tr60+Y1Y9oXu1C/WqI1scko8VlcXtcQYdVRrKBrrtYPCY9E760cFQvlM1l2nRNgRaPevQS2XWZRcnwDZDZfpFWyPDSi6/mu+1/y9Ydp9i6tIxyqtcmmyVJ5mGwEdgGOWi0rtWMXD3znAOKgsa2EzbpcR34g9GA1tl71TC2Hlx35CI/sHNowVT/62fJv1/06rqcRs+gh/B2p4igbfQM6/MHoc9LkBXGz3YOc1wQoXyJjQ5ky8kXd3Uft36C3RvGf4++ya2Fcf89wyVmwc73gZ2ntT0fGlM79eqePyA492hrhEmByAIIzyvCrADmWqDmWqDmWhCsvohV2aNZ4+gyW90ozleuAnLTo6Ol0shIqS2Xy0n4gcVL+pcsWgRvi8e6+7rhH95Y2+PahP+ramszqp0igjCYWrOIRYtVxA2WthbIdBRKONOtiPp7z44dL7300uTkT37y8bqdfeklfRzDMAASecSeoWMxuxN+/hF/q7LOIaLXmFRaPovNTgTCVuoudev05L/m0f/hUvpEI30TtL+bfA7oXq21T+I6PR7T6fNOFEkweuhrYnYcf5zlYQm0V+33iVHicHA20ZZMmeRgIjimRaN2uzfxuIw5WUaJEOd1liMcNsg0O+OilvJchpZlC0pZPUuboODk/kvBKfWcjRlaBlTWIwqKTtaLcHRLXPJjZ87wWsEfbVOspx2xvNueSlbBysR45uKF3Fhni5oqBlORcDrb2dTrS3tj6ebm7bvYGDNMLXeDM01XnKDnz+A8egB5zhGbIU0enf3hOcnKCU04243g3xXozzN6lyqxG8I2yxx1Q/tn6vTP1ukdQI8c1ivSX1un/06dPkHpE8oV6ffX6S8w+rDq5IhTNUujTkMagk2bQ78N7qNvcJd+33GIFSIoDvN5ixqOe0Q7H7Vag44gL3KGZCrhO6yhhD1B/FyCes1gKDaa4ON4TIvx8TjHmyNw3Ww332XmzPS6vTk7WjJjsx3xmKdbeWheM1F8YiJbCwLovk+f/WvZeaa6hpugQOVqQbUKRWL7OKtIYJeEXTqA2RsYbGsbDCq/u/0zgaDLHQy6121Yv4ECmm3todzgYC6ct10c4wZDHnco5PaELj5KUc4UwqZjqLkxZgOd6C51AhsMdqNM4bFOi8HldprHtP8JSNaJndjosIKVGtOsnMXZCJXVDbijukl4Pl52nr+iO3GoowI31Q1jgeMeDGlk5vXXcUtl/bNL3o434Fcr6z+k42ff8Q5y9njl87hceaSKVZ1iWLUYWqTGFK/R6I85/I54wg0OBSmhEHQqxCvSmKa4vPPBasDWJav5+Ao4Zxkne9M1BBv+aB3wvH1j4fiC71889hb8TCPgeftx+wfudqFZHQoNcspwvkxvmqt6ZmF6hmVDGj86++w5i80kNejZpfTnGT3oAbvBJVvnqNEc/Zk6/bO19p2s/d+fc16p/f11+guMPqZaCHZRvXGBtrH7ZKd+X011ZmdnqXl+jvHWpvcFndGfJbJn/eAcL3Ck4VlgZ3Gggf48o6d9oTeERcMcNWv/RaBPsL7o9M/W2jez9mfPmee1P/sLoFdYX3T6C4ye9UVSJWlU0vsye0406/fV+qLvPSHDDEsYRCfVZS5FkUyihwuKwVDYazJTxJpZypU/Z8acORwpR8xYMLcoZbPLXTaD8FtA3Q1ms2ixOMc0CycqY/Qgh0Zshg69njxG/xUbKszF2oITqsLbGcqo6NLxmbSeAXqPv0Jx7qr6m5MDQ0evuebo4GAV7Y7T09hf+Zctaz42fW71Bn0+SYnZzY6q3VxQHeM4DBqKewU8T14YlpXNSWdVHtt0ux+u2v1AiBgb5vBS+vOMntplekM4HJyjbmj/TJ3+2Tp9jNrxWOiK9NfW6b9Tp++g9B3pK9Lvr9NfYPTM7sep/MaZ3Q/H9NtqE47RMjSGn8TPQbSSUxUwh2aYUKMRI85ivWznUmP+D9FKr6Lv+BaXXXvtylPXroT3a0996NpT8GEV/Dt1CrGaxC/ADv0jckM0kkbr1VzY67UapSjXhJzOJkWymoVMc9TrT9j9Y5oTSUZecKl2XkiMaWbBhUpPUtEJfNup9NeBNMr8MjmurZaKYJEWYDst/BWR4tJNVk+G040WfqX3thPaQGi0u/u/xgciI5W7+K+Hekt9vzR8I9I3NEAOL7353nfekipsXXILGKmmrkrUgzfEVo3f/dlY5YHoqvV3V+0KxXKyee+ryklR10WF6eIPz7m9vNxoVy6hP8/oqRzSG8KKZ466of0zdfpn6/QBKrcB7xXp99fpLzB6mHeCg3Teg1TXkRLQb6vOezVO8DO+hqp82arPsVC+LGa+Qb4aMNcW5EEjqtstUdC1bJS9ilugQO8xzf3o7MtnbWXp0dnnVcladktuyWjiqNfTl1Kz2Wx2vl+pArEZVKx4KRR75qYqFFs9sWfH8bupd6tDsVnO9Dp+HvxbK1qjtphbW71eJSI3xQ0GWeGyba1oRGuNS2bJPKJJkhIMOoe1IFY8DdtA5gA3l2w77S120iy2vbq+1j0HgqgFIhFCc90srsTiEdGUSCnReLi5Ndd6eurIrkPBSDhkCq9e1TLlL8LNwb2xWCLa0lbh8K937920prnfbc8tGxrfmdPnT8cenod5WFr1Hb+GC2B3mh263WnKSFyDPF1Kf57RU7tAb4g0p+eoG9p/rk7/bJ0+C/Qom7ki/VN1+u/U6Yco/VDHFekfq9NfYPSKauVIm4OanOasfge9Zd49v67f80/o17M/Af/k4UhBNdlGk4VCMLgQ7s3k6vfqN3P0XvIfxIbaIdNaiDPq1FDCk5FlMHr+PlMuVyz2ebiSWofAdVo7i4PtONyODbZ2bBWK7Wu0p4vPF0mxJVouUghccbZIuCKFwBVxsdhitfRgC9/SM6y12Mfi+MH443ESp8HshlB0NB5v8vt9/gFIZwbWDEwOcFbBN7BGO+q7yUfyvpLvad/zPv4V36yPcL5eb9lX9JR9PmdGbrLKIWwRmkIjWpPdyg1rVqdz4Yjm9OprK40QOwgMa0jQy4CgfyYOr+F0nXosrWdH3UVWpElkrlxs1IE/YRzvqYL0SA1O+lixkMpy1+S2lPYNhdd3bdxTx5Xu7O3bsnO6cj6fP6d9d3z1yvM6gi+3oq0UiW9eMQcz7eysw/kqn98RKy2qraXqOJU4jVO9HlH0x+1+eyLpsiEbRAJhflgL273mYc3r9fx5ceplYWpDOXpu9ay8uOP4wnUTFPo5b/lseJv9Q+8zHdijI0CrtUiGtaQ6N1q1+UTX0RTT0R+ciycdvgYdvZT+PKOnOkRvCKcSc9QN7T9Xp3+21n6GtT97LnOl9h+r019g9P6HOWoDOHZHKqPfoWsdxIT/DBTfZjz9b7hHQM+cQixCdVweoTKe6B5kewP9+VNIj1Adl0So0Pb3gNbH+Ndpn9XbNjsuj05ZPPsThn97rE5/4RTlHoJTx+VxaXf33HkLz5BHUADy2t1qf8zkdvrtPtnLpVJeu8tpEprS1vCIJiPBBPJDTF6/l1jsXjeyYhtntQpuLCSGNcHbuAsftG37xISOvrw0qkDVqKIGfaJLixTLAREPV60JdXbjDxWP7Jk6tG1dc3hor3/NgpszO/wjPmlicnIC/8PNIy1Hrj25t23ntG1TbI1vc29kjTdR+dcjh9qPT+tjrOPiqK1dW43xeF1OMNhmjLIxl+kyOTnP5mRdVQ6RLidBJic/OucLcOZL5KSR/jyjp3JIb4gE/XPUDe0/V6d/tk4fobY/Ergi/VN1+u/U6fOUPp+6Iv1jdfoLjJ75iijzFcGIfkd93jlUQFn8Iq6wunAQPaZ2GH0+4rQ5ZS4UDl7tedzzjIfLe0oewnn6w+WPefDdHjzjwXzBo8J3KQ/20O3x1jL8+JeHLWWPx0w/PqWqJvhsMUgJqSxlzWWpaCpLkqUk47Cckwl9+5TMGWQZy/J9MrEItAI9a8FHLTdZnrY8b+EZ5oGZ32Ngq485imxnKYhOvrqxFKwy3S95bN6hRc50vZzBys/eht9/kU6HQplM6Dlai/4i+yUdxqcy7MtQJnv8wdpH/cyul2AsExCNhSGfPKiWworC4uoUcrlSPhpXpzNKNBGQA9FAPsBZBEdgWHOxANutOuy0jhNLwNdULcxUL56swiT0YLvujv67eJtpBw24e5nt7cmIXopbwfd1Xr1zuBBdWCwe27WsI7yw8j3uf3kSW/6eu92T3ISf7b1q59UHAh3r+vaCpQ3mKx9yvOA8vH3a/rzj8HamGwxrRmV3S1XWeSbr2O3Q42yHi1gbZP1S+vN1XaI3hN3OOWo0R/9cnf7ZOr1CdU9xXZH+sTr9BUYPskuwj5ot5Fb0OxriHB3XRXnaVo3V/rP6DBflyeWwoHkxto4jPfvn4UjR/w8caXX7xZq26+o40tr+i54nG3Ck9T48Vu/DBdYH1m+F9dvl1XtR11m21xQ9zOrCtb2+SGb7RRoRVRTVbbz4anUfKbcUYnkFJPnD6p6oDRsMTW6jQstwNj6d+Z9tU/cYPWhM83Amt+R0BiG55KUE3T48b9t6wwD+d1vY6zCdelGuERkb9xgai2TdJP2f/4kjlf1Daw+dufXA2BB+b2VS39gKuSar2EUzZ/7q3rtmmiPH761ubl21Xrd5YCc5xDDdzZDNf1Y93O7y22xxhDpN0Wgi0eniil1KdlirR7kJSyI+GMPhGES5MYhy4zGIcuPPQ+QKUW6cRrnx2Tjh4jTKjeN43BK0NEGUG2yCrMjmtyt2C8SkFru9UMVxVmNSUP/inxFyXlK5ra4RzUWcVAIbhqoaY1KUEE2sxDlvel6PMg/v2Nnbs3MXxV339E3Q4PKc1pa/YdOWLZvO1/aHFIsMil0sQlC50bq7c5CnaOzDut6x/acst+1hMvsk8lZz2yzktqSphcQvy2E+z/R0E4tHnvwNszRFZmkq53IdXMtlNXY/y7mHqrbAVquv2WnOba/V1ywyP6/cAvey/YSMtwVV3oheP7Ab9KeZbRxu9OEMs0l5m9B5+zfGm70WW9mMDTECw5JOAT09t7SspgWDy2jzeLxeoyHIh8JeQRTGNZcoWoJBNK4FgxZ5XLPMP0frcnxRR0GhM0lXTnsXYga2ZMesJRkE1RRORIXs6u1267qxYiIaN9imTrTb1q7LZQJNOH5k/8ZVx0PxbUcqz2grGX8aWQT8PYcENKz6iPA2HvN30e1/dvQ45L78zehXMCA03/Jk20dBFwQcE1ThBYF7UHhGIIKOh3kqSzfKTeD8k/puPnBFT26d3lkq7SLPvXf1av05A3Tc4DlLVT+P3kIw4a78IAd9EDxHFfAzAl4jYPoQaJ89pHPuKXRhUttVKu2c3krOr179Xn28v0A24H6239LxMJg6dKi29F5dq/rCjTeSR3br9v2voO+TnB1iGQWyHafNqLqJwXFYe8HwKwP5lQGzA1XtC9RR2YAtnEFSJeWwJlGsW8Bnf5JqGoQcdQxQYyzRuOz+5CBdDhlsowsh7kDQRRYNttFVkLbBXrr6QVdBgO9DZBi/lTwFnDytei2qgozyT4z4O0bMP2z8upF8zIiNj87+RD1pd4x2GzEXM2KnERuQEdJY2XhIs3DuX7rxD92Y/5z7W27ycTd2R4B0wI25vBvcLTbIbiDl3Ic0mZO5o9JN0isShySsn4vGmWEM8ABSblZ+pXBIiSmq8rjygmJ4UHlGIQqb5e0TT0JwdYyVjqo2BwzQBLM9zv4rfEXxDnSqdIgpMz8eluhm2GlGh5Sk4o54YvAWgI8u/WOQ3K+4zZLD7tuq/1TYvM7uJCvRpv/Z/lIOJPK+uf2lePaj0Nb7/udYAbkBKzA7SRah+/9P6g+n60/7fP2ZPU6G0Tv+n5QP7g3k446/QD7I7AGyAt39fwXbx1Wxfe9pwPaR2ffDvO/9P2Y7yBvYjrY/y3YgHMMfrp2Tqu/VnndOqr5jm552gj9cmaTHpLJ7uEV/1j3cotcfo/fQs7wfQveQH8I9PEqqZgQxn8Dh6a0c9PWzFvsox3Oo9PWGg+WS3b3iPSdPjuCHvrm7VbfPafzW2vm7qolGotz0VsRVT2ZlJlpk5++yM2ApVkU/N9YpQBTOzrnDD2GN8SCycwUs2GAy85iyIdb5MDI+OuurWTorNXa+fPLkXZSjyj8xrmi/3gpt6nsgm1TH3Bnl+jm19MCGeVsvdDarrH5Z5xZngWOdX7wF3WbPAL9fAjOg861jin7O9hh2qn4zISI7wsJipQdY0IRP4CA+D+pHeV52ti6u7Y6lR3f+/H0zH/jAzPvwvouvE/74c8+hee270Hq11WJ0QMhuMwsujhOMnNuDLFbLsOawWgWIgEzGYQ2bTIKMhPkPvCzcqKM89Bg72V0FNTPEFl7/PsoJ4+XoV6f/6Z+mvzr9zDNUttaij+AT+Otsn2aAGC3WqJSXJqWjYEgMOyRckrB0H2gIyoNZnThWnaGeBhX46Lp1amndutJHdBCeuq6GW0LkeXSHPU1xSzDCDtIOP0XkwNQIiPTccP5L884NL6PN6IA6SM8OH060LtxQ6Fu5srCQnSBu3KJtLufKU9rY4vTiKa0rzc4Tt6atwuCVzhEvVg9MR8Xa60qIw7/oSPHYvN9S8yhj8377b44bx77qh8ojtUvTf+EJ5Fc8i7zxVHIqY07IB3/LsFRB1ayjVhGoCvLPOwnbVcenVsGpunxCUupn9/rpeRIGnp4Ghuu3NuCuGOJKB1vBfcHZ3+HfQC7agr6onggq0Sgx8rxZII502hcifGs2whv4CS2IDHbDzYa7DLyJMxiUFsUUADmf0O4z4TtN95meNnGcyWUvr6bHbJlsZdkUNRFJduaddzo5C9dkcjpNTVyLrSWxVWvxy+68m1gMNvdWzSbWt6vMOzxYz0fZaXlvvBugjo7Xd0jVlKd6Og4rz0A44aGvObTUY0d64M/Rvdoh4Wrbiu1fsX3mk7Z72zsyOeNh49FN0g0HvWs71/r2nprcUL5GgY/KwKKmJm0rtWMR3ExeYWfkKGi52iSIXsUmywovYoPP7/BIHpdLUWRRJD4DJniPZjESurWhQfspyqt//j5kZjvjdH8+xNxFdthIUmSw2bcdwPkDWy9u2MlNrt/AlRaoZCPZuXZt5Rv47S+9VLnm23ff/e1qPgfMGchZ0Nsy09eVeHX9+60N36+h3+t7Y8gt5P0ojrapubjBgO0WrztosfjcUYxDJrcpkYSQAEkQNIxq0aAiczaHbUQTHB40t52a4U599ic6L4H3zWkrbthvednWS7b9koTZ/suv13Zhfr1xH2bjfszqlkzoU/PsH3E3/oRLRL9DqLIOmT6DkTWJSrUaVBh+fBN/FK7/nl0XzyLBB5cZxhU634kfgGt/qF0L1q41Qbs5du3V2rVssnqN5rCLWZt/rF3javc1YyPuJo/q/MzuZPxQq1bnB8vom+Sszg9cp/dyNX6wjDvJ53R+9Gv2RI0faDfHrr1auxapXYvAfYtZm3+sXTOyNkFGm/HHcDe3+fKz08HYRq3BqToe9I1RoFf+rxjq/+fCx97g/1XANewqxOpp1VU7O51ClekB6jEuUj1I+7IT1HcuXXbVXvJi4UhnZYK2U8UiQw/WqC0+SzDgdvM0nyd25AsGwW14xSCy2C3ERdHRwZhdnNLs0caVDnaQOkOdXVIm7L3iEePsFPW229x22WbfPbpwcNTt3vbmymu48nd+r2h3uR0muWvR0oIUyvmOabqtruKjURZ9S73ZbzAESMqWcDdL9MhQvi2Xkm22qLO82oZ5m2Iv25xyOWKDJMCGIUSw7dHkaEtZDjSDoWwqf0HGwoCM5V5vWe7ylGU5KhMTLWNDfi0HAjLHZSMOsDFIhJuz0NdsPOKFtrzwa8Q7pUWiVRs6OeGrfaBbiJgppZY0e4yeY5itXqKLrdnG7Xh1+J1T392tn85WP5CdmtG5sRKrp8UeWDbRZHdlPW6nKxrftnTB4JL2QHB5P/7YQK9sjntcptxGt9PYFJXMfQsXdpl6AubOhNS/lI1dBOZ3MciJDR1VF5sMViMhZnYEO02GSICTVHaiSO04dpBck+rxj5qoKE2a8Er4ljkYej57hIvpYkWTnmy28Yz27NwxLfU4Sw+y6se0Lw7u/cj03unBvUH8L/39GnZUXtmyheWd18HbRPVcKUzDd5EdHF6N210QerxGYwXyyEWwrf8fFpadqwAAAHicY2BkYGAA4sv7rQPj+W2+MsgzvwCKMFxTdEqH0f/j/0ew7GVuAqrjYGACiQIAUy0MEAB4nGNgZGBgtv8fzhDG8ux//P8Elr0MQBEU8BsAnZMHVHicjZPPa5NBEIbf2S9RAxZt6cESUtGkaYwEJEhEIkgPngShiBKrVKu1/sBc9GJF7cWDePPgQfBS+md4kiIievJSFEFb0ZOigSjm0MZnN19KKD34wcPszs7sNzvvrqvpsvz3Naalit1T3qU1YH+UiR6q4E6rpBfKW0WlwKxKrl8Hgq/O2hL2CT6pbOeUsx/E/GWeUtYaKrsE89cadn2dsY/3+D262KLS0TVyJpXgf1VXI7aGHYQd8XxKVUtqzI5rl7uILwEf4U68fqgnL6ch+6UtboZxUYlojH3HIaOEtTRsVfaiZjsSzlK0pgRz9ls5F9GDFn4HSWJO4PPjbaqoocNqtD/5se1WJSqoEsZrrJPn42yG+Qf6cEFDYW1ZKfdZKXsDK/CKmKswqglv+f9ot/cui/8deSfJa2hriGlTa1PT0U76O0UtfRogp+x7bz/DWt0ecW7fxwnts1Ma8Wfx/3YPVA36NPVMq8rYJe0nvxLl0DYLd4ld1N7Q902IbmF9TwdjLWIs2f6CFiPYZfjubiu9rsNG+nUsWK9FL2gRNNvOWen7ZkRpbKujQy9o8B4t0tglWLHVjj5eh42Evqx11nvxWgStsexVja6oHJWI83cH/dbvitdrAd2aOhPzHB7DDak9BQtwHm7CdXhq8xJ3Tv6NdLG5mPvc/T3UAPZS41FS+cQ3FazImzuIf4S3UOS9HKWGOtQkN09NkyoEDbsan6W2//TpbXv2H1ZxsYQAAAAmACYAJgAmAFgAfADsAXIB8gKgArgC3gMCAywDXAN2A5IDqgPCBAAEIgRyBPAFMAWMBeIGBgaKBuAHDAc4B1wHlge6CCYIzgj8CWgJrgniCjgKhgrWCyQLPAtiC5ALsAvkDA4MSgyGDNINGg18DaIN1g30DiQOVg6ADrIO2A7wDxQPNA9MD3IP9hBAEIYQzBFEEYIR8BIoEkoSfhKqEtATIhNaE5IT3BQkFFQUyBUGFTYVVBWCFbIV5hYYFnIWihbmF0oXShd6F+QYOhiMGPIZFhmeGdYaVBriGxAbPBtEG9Ib6hw0HHwchByMHLIc7h0iHSwdQB1IHZgdxh3eHfYeDh54HpAeqB7AHtge9B9wH9wgLCBEIFwgdCCSIKogwiDaIPghXCF0IYwhpCG8IdQh8CIgIogioCK4ItAi7CMEI0wjsCPII+Aj+CQQJCokSCUwJYIlmiWyJcol5CX8JhImKiZEJq4mxibeJvYnDicmJ0AnzCg8KFQobCiEKJ4otikAKRopMim6KloqciqKKqgqwCrYKygrXCuQK6Yr7Cx8LKIsyCz8LYwtxC4KLiQuPi5gLngugC6qLtAu3C8ML1Ivfi+OMD4wXDB4MQ4xWjFmMXIxcjHQMeAx7jH8MgoyGDIoMjYyRDJSMmAynjLCMxQzsjQENBwAAQAAAPsAWAAHAD8ABAABAAAAFwBcAAACWgEnAAMAAXicxVtNbyPJeS6Nd+3d2qwRAwsj8CUFJTBGQEvz4V0vMAEMc0hqRCxFakhqZifIpdUsiu0hu+nupjT8BbnkllPuuRjJMT8ivyKH3HLOH8jzvm9Vf5DUSN4k8GolVldXvR/P+1ndHKXULw5+ow6U/Beov3XjA/Wp+kc3fqQ+U//ixj9SX6n/cONPlD743I0/VX92cOLGP8b8azf+ifqrg392488w7/d+rr54dODGX6ivHn3rxl/+7C//+h/c+KfqF9/8JzgefPI5rr5n7jQ+UFr9vRs/Un+u/smNf6Qeq39z408g53+78afqLw6+cuMfq68O/saNf6JOD/7OjT/D/L+78efq5wf/5cZfqMePvnTjLw9/86jvxj9VX3/zr6qtUrVSG5WpWF2ruSqUUX/Ab0eFGBe4G+CqpxIVqROMWmqBH1Nbn/OVxafF5w3+TrFStdPVJouv54X5g+mERZEGppdEJ6a1WBiez01mc5vd2ClWd9QxfntqgOFxp0cffHWsXkKEBUgqzB6/TBfT+mJT3qbRGjLJ+Jl6ih8hZWiTebmO8ffZ06f7t9eWKvWGNclBLYXeRO1E6L2xWR6niXl20qRzvEWnlNNjaECLcArxW4B2iKVWLfGZqfeYS9XsTswVo2fi3ISmyMKpXYbZe5PO6qg2eW3tlAVtGIvYLdhUBlLH6gOm52G2sLkZxLiYM4mVeqGe4OeWf04gqid9ArIpxFbzoli9ePLk9vb2ZEo8TqJ0qfb60mNsOcLnc+D3TH3Lmu2TlVbOGG/yqN/uYXqEvRoCxZidY/1oy+eMOnX7SbkQOyzz8kY6wW6tJtgrtqhWjxn/ArRD9mRvrQU+I1wnzIc4rDGeMk/DUlje3VN9fA6hu2V/qSj3GxRI932+9YxlqyRr8vXSRIxu7CS5wucCM7dMNWS5Ki9b4DPl0Q1+KSpC7FgwtQrBkGVtqdc8LmB2veUCObiSNVdslROWe4HPFLPXuD/E/j7jqoHzn+JH1/C/UF0O6lOMB8CT8O/BK2l2jL93oW9Ahzz017zXAqkMliZf2DjPfQrP/dNpqKHZCPK31DkSTR8j8Ray5jU0EXv7LOL98n5/pJgTCx6xB4jvS1zm+IwRQ2v2ncJ5TsoJZMo+RHGg+e+N88UVx5xwElkiTovifSnnPaJ6w9RmpVQr3EnV7zAbsZ8FNSnWuLvivUVNt2pvxFILXZrTuJrx/czVJpEkxEqfdQmDKmYo2hLguOboKdxdyTlLjviYZ62TzO8TCUX2G4eHxNSMZbLlWs3YiC1mjALhJGi+56hNGN05857X9CP5qUpsXMQTInNnqWkj7pelJNbNJCxdyDgkzu/nHMv1LJo6TDOOb13zLPEMySaSafKaBXZzY11mwUYkXrsVgfOqNcZxObPESrqelZnNYyY6ik0oB11hZ1HyEoQXjEzosmbKdvTXIumm5tkJa2s4Ny5cFt2UK5cs54IRzLkiCRK6plngkI2wTvTwHBOmJLUh5qxbebq3tOyPeLVH58rVlEWJCElyxVfTcu7jaAhiT5hLXbt6phf58p1K1/TfqUMjZJz8ru3uTmNefDjfg+669IirB2FSId30Ie/b+/bn3AvM2Ssl/2Q1bL0kgnDGVrXsFbtV3OtYxQEhsOF49bmj6et1zyDav+fMkbHdfPabOVvsxkTm+j6Jz+1+Yn/9n2KnYO01CzkrkvdrR7fywBR71zVZqgzptc9Lv93Op5Ivq+4m5vF+C0i26KAanXJ/1QMqPa68Y8wffqS/OnQ4zFze8dh4aUjrqobMuOew5Tmjact6BJs9HahWZy4eiNdj7Dt6MO7eAyPHM3P5xvftPvpyV6kod3vviGu5WzdyhnVxuAaNyKHvNQxcRvDnmGb/VY+JppWr+idWOXxQd3yXHbwv1aM854iItjJ1XXO6nrGXVf6jXdfaPBPkTuIqYsQuXvahWx2zBHTabPZt9/mP7zqkn/C9nnjTx7p+qfkrXmFreSjnPmd/7r3P/8we//N6nu/Uvofp+fFqs3R9jpct5EpSRbycLqcukgp3J+AuJXP2vHKdUMGa+r3H3Cc3OwufL6oeJnXnDFld5dfZloV2ka6v0fd6QVBqGHHFStza6zL/LhmXKqfJat9NbufAj3mGx12zvLfKsNQ3nB9pl/djb9kW4zZnTg+xYs6aJmUds6U2tpyTSn3t+sdlOV+wn8+5T40YKervMraexGLq/lYVbuVkSWtWE6ske3y8GV1343TizipdZJ9z1IIxn82GfCb7JUcHjTtbleKCZVlyfFUnM8mfIq91lhPdEydXoOqdtj9vSHd8rWztFOGRbmqdgmrhKrH4gubu3WesbZ+9W++K07o85/tOd+P6EqEpHa+tSVh1e81ueMMReVfXVz+HSNe6UHf30lLvdu9WTxR2T49eW71XW8kR/sS27SEzl39T7kAlysS3pu4slXKNfcH+8owr8oC7jXoPdn9UJs6zmzkmdjEfO37S265dDtmXeQJXoc2enCMc7svUubNe86TWPGWIXGSrmYuU56z5D+f5cA/dlm371PH/db6o8tb+E4blc/m8FiG6zEISmfUzpzxFuCkryHalle44dl1VdU7f399VfXzuKFbnsu2Obcqy1v3T9z6F43PMthOvkpz8wZ0E6r3dnHs22nHsuvJp7cnc3M34OkF4e8+sMFg5RFesu382s3RISs3YR33J1T50T1ZDJ5tlW+Y1a3p+XgOR4sr5pzwTq/fkd5++U4dsk0/z/Cu9fOw66xteebu3t1q7flZi51cua6QPiJQfEidrJ7vfc3c/rct+un66EHRy1vADn9Vi7p4LRlqqc6Gs66XuroDNmreNScTWkfP5qsywUsvu60WbJxWhIbHf7JqT8inLyulh9/Tc4o3Lmod4jP0pwnfSq/J5QqVVk5a3tD9jfs2o+mcEyRbaTds+rANvnnJNo1/bT/fueuifyUkNbj57qJ6F1J8WLnmNLTu9KfPNXR8j2WXqnmoUbB+fzyg/3uftgfM5ynSrWnWm/PCe5bt1ef+64eG73Z/Q24fH/d7ld9Wz8N1IZ41qUn/2cF/06L3RI37zTcNvPt6/7XZHItW+zsk/Bbz/FESVdcleUPnEXVVW4iF2zzg26mFPKeqdYMWp7oV3n13vew52V72UbPHHPPfS6v/6udfuKerjz7303ude951lJuVZZgDP9aeWj72rI8Slx/SSr11m8Fa6wd1YyTP6mbrrhLzd62z3zv65qy6xkfrun8rR6aut+pC6B/lJC5L6jN+CVe/HxvyUf6LeYt2I79E+w++bhsgrPX6+18EMnWnH7v4he91bPsedYd0l0xIaI/wl2u+UvEEwfE1X3zGKHY6JrvrevdMaM9UhxoYlveB3dl1eZ3gHaXHp3uG+UvTKXvgNsMu/4ztnWUTSCeYrrk2pesxRJNMOlzZ0kLst0O4xPZI/YKRoPCjlPHWSthgjojzhN4yXjPSIZy/xeYF18saxxTqLtAPW4RT3RZcuS0CctcOqzW8x3/GKV5BrwlJcsO/JyoA1JH06vJ+4fsezItnQWZnGFZUTh6XIYXD/jaNHPkD69/ldj+zVe+QwbOk+cx2xFboO+5Z7J1lHR7Cv/E/e+rdY3lelDbbl9dTqNtB7fcBzeMVadBmPPnMZ8/OHNlPqlz5EO0c8P6n5lXi3WL5fw7Dtnk101Wtw7TrPafGb7qYWEgckf6WF4Nxyf9tl1jA1Gw+cDdulRYfsS7uovOWI6/KqFttj7FDQ7ElDh66PQuHhI/3SeeGwlKyJr48Wv+4hGUJoed66YcEOv6XuOwnHJRr30218Y+hxdGSeP332bWCqb7CYx7M0KfLflt83OQr0bVzMzch9i8ic4r4ZhEtr+Es4J1pP5nEu0+N0VtyGmaWv0SziyCY5NqyTqc1MMbdm3Oub4comsrgvCwJTfd/n2YkQc3uJTJSuYhC5sov0NjBhMuWv6Czy1IQ3YbwIrxbWsIChOW29NmHxQruvzeRRFq+K/CSPFydpdv1keNrXWh//8P80y3/RHZjT4WBi+r12dzDu1sU3x+b5r82pvcrWYbYBuE+//V8x1Bejbuv8Zb8LWKy5TqE3fSWJsNzB0TyGgkeG0Ict8yJerhdhAXDSbDG9jadWT+0NUFwtLTaBSpQuAF+ahUV8Yw2Z3ayy9Hc2KvKASaxXqzQrmBvfjTKLtWmi7WyGGyxKGNFXpeKILbOIk+t1DNYRiC+X6yQuYpuL1UAQ1G8gByw1y6ylWZ2SFrMM3gQx35s4MbfzOJozv9wsww0Mb/I5lJqK7ZdEBBdYuQqzIgH283glLppC0ixnhwQ+p324CZwmZwVKbxTKkAaE15gIANV6GtNgmU7jWSycNDhCkyy+Whe0CwIvNiaEa6bJNX2C6IbBTtLC5PTdt6sNTS5zu7ix+YmBEJqZBRA2WoAHbUw2BtEQ3wjopDTuR2FC4lwhUhYkiF1e2emURltiQLAnaSbsxOlBL/dB5/AF1vOw4Fv+q386AcJ5KS7pTeJuS8JCO4QI7ep+Huh5egv/yVhaIgKBM7uwYRXixJFtYIrNypJ3ONQFjMz+fh1nlt0P/lNZAnMh7OnzRC3+pymkJmbharXYaKxlANNozVTYIYl9TtgWpewpp5s4qysAt+h0T3uD3qQ3HIz1YSNfHUKGGXyHpCEyueUImcX0nb1SSzGwKROoPoMdbPY4P9onOwEYYWcGv6HvEpL5cgRVNCc4YvZuLZ4Bhuk6i6wwDOAI9C1Kl7/EEk5ljj+ocribjus6EEpi8nxlI+fUwtyEs0LSsY7KSpCDMBsGuhD1IabjJFz43LaND6UO5AnKeoCpmfoR+as0sexDua577zZ+psSPeJ776NvDcytslsg5RC2cclDR1zOnMFKBi0BTfKyvkISKNU2Y42OfLMgvOMOkqBmYZn+dOYVKoWVGb0MQEMNoHibXRBT+uwzF0zBNadJ7YBMMkl0n9tbY5CbO0oQwJmVb62KeZrsq5vF1QjFmiY2lEYL6GvlxSePCRvMkjsKFvs1isiLYS8CtQCVl1aBKUiLuzNWQCewvuqPz3niMQDC/NO3hoOOC4sJmyzjnYgb/BF0L5cA9KSgXcdKmuoF0fG0DL7RjnV4VCGKgoEOq2SWyDd68aU01n5LuJuCVSLyWCXLac2l4EzRSn9QQpNZFI0sj7spLbhTyOltdsYVHUGHzgMxSqgxkMqA1jcmR8xdaPzsyAxtLBtsxZZJm3mNiWD7GPmTbNTykcp4AAW1Kz8GGbadGcPui5koGaNnFDEZ5fvTxnXsB9dR86fhj6kWwVTBsiOxABtHkQjCmVE60CDfWVLkC6RgZTmp6Ld9xjkfak1rmE9vUODwp+xTYcxyigCIu7IfCZ7v5ehkmx0jlU27m5hhQTKQZgckSrCDoKoupm1lCSERGtXxpC4wK9BSxXUxzVpP2EQOQuAKe6MQkkzfKd5pbv8fVX2T5GMn6Jra3VbaCt2awzq/gGumOUe62CbbxnUae1pSnpVxAnNzYDyugFxeGwrlAJ7RqBKCLPC9JlGao5ytyWETZdhZ1RQUrYH2XmhNqWVA5KS6c5wPGJQNCElOJoCS9oj4hqSUMUpoq5tdH3BEkTmyn7Z4E7kqukbxWW9uIQ+rkEMGue+AuRNrCZUohbpNpmgE3CrQpWo0i5jK60duwY+mHyK44nMPofZLewvevrUPJpT+sq+TYgYtuiQs3hM4kTKR72DaPrswDbL4RbLbyW5mOQKpKTsG+EhTo5TpnJOohCzugSYLhdlsKSYK8SSBsVNftHqwel+au3ks/tPcyd/Reuuq9tqvMhKrMoEWlpXmqu7LImER8DWcglW7SGB39rF6Qfdbx2Zl6V03SIN6pleuN2/1W77w70pOzrpzHxsPTydvWqGt6Y3MxGr7pdbodc9ga4/owMG97k7Ph5cRgxag1mLzDAcG0Bu/Md71BJ9Dd73HSGo/NcGR65xf9XrcTmN6g3b/ECfeVeYl9gyGd+M57ExCdDHmrI9XrYt+phiztM1y2Xvb6vcm7wJz2JgOieQqiLXPRGk167ct+a2QuLkcXQxwcW4MOyA56g9MRuHTPu4OJhlTt4cW7Ue/V2STApgkmAzMZtTrd89bou4AkHELlkeElJ5ASNEz3TZcQOGv1+wZ3dUnDnA37Hax+2YX0LZwkRRxIz/jh6N86b73qjiu6tEw00BUCtOFVd9AdtfqBGV902z0aALreqNueMFaAG8r3WUL0FOPu60tMYJ12LGCDsy6zgMwt/N8m1zCs8QAaEp3JcDQpRXnbG3cD0xr1xhBBn46GEJdMiB1k9EtASPYaOHnJLDS36xBYRbu1KNjptvogOCYxdtaebP/znIf92wx19zMH9T98ty6FAAAAeJxtjUdMVFEUQM+FQfj03pu94ziAgh0EK2LFrkgZijIzOMwHwS72Fo2JO40tJmrsNRp77xq7URMTe4sLdeNCmf//woU3eTkn9+bk4YE2fxqx8L/53fQEDzwx4UUzvPFBwRc//AkgkCCCCSGUMMKJIJIoookhljjiSSCRJJJpTgta0orWtKEt7WhPBzrSic6k0AUzXZv+TiWNdLrRnQwy6UFPetGbPvSlH1lk058cchnAQAYxmCEMJY9h5DOcEYxkFKMZQwFjGcd4JjCRSUxmClMpZBpF4sF2FrOE02zkA0tZyyo2sYsd4slKntPIBjGJF2ukGcu5yCvxZjO7+ckPfrGNvVznKvsopoR1lHITK9e4wV1ucZs7fKSMB9zjPvsp5zvrecxDHlHBZ76ygulUMgMbVdjZgoOZVOOkBhUXtdTxiVk0UM9s5jKHE2xlPvNYwEK+8I2TPOEAB3nDW07xjvfs5CmvecFLnomPKOIrfuIvARziMMc4ziWOcJTLLOICy9jDFc5wVgJZzTnOS5AES4iESpiES4RESpRES4zESpzES4IkSpIke6v2SrM5y2wwR2e2xWCqwXSDmUq5s6jWWuKwFStFJapLM+2WarYorsqq0n83GQazTLmq02HKL8jL83QVupQGq9ORUmp32Hwcdqsurjp94+uqcFr1nVLmUJ26aYFdtTm1QBN34BYjcKseaKYFNWp1jRZo4g7cYgRu1QPtWl5VX11hScv8C9SYw3d4nE2QzW7aQBDHd3YhCPVjnaQliQjezdeJqGmLqqrKAStSHDsccEotJcGhHAzUFAqS4YwvlXJJyxvAuZc4txzzBkmfAN4gvIG7Njl0Jf/nt/+ZHe+OspHsGgHrHAXsh4iKa7hVl3RdQCKOXd+NSbfBnfLBffNO9ZoQNEHosAm0CZtNZ515ztDB1IH9seM7GDl3oXSdqTNzYs/Ck38dcVLZTmXUbSDmt/YuGzbGDUwbrIF5t+7Vcac+qOO6vcNGtesantaA1mC3ZnOGbDie2jMbM3vPxsiW7Dv7wZ7a8cWt0pK5WSLmRombeQ73HBQOVKjPYY8P+IgTxN9yg8947CsHxDnHLzjIJivJ5rUMVJ7I+NCQx7IvEyRLcld+kKdyHMmKXBUbT2RmcuK51IZJ+7GNOy2QWryFuy2vhcNX/Wmlmdqyltl3NWDGBfy+AHQBjFrMwofXFiALDKtqYWRJFl6UyoDKoJfVPDsXQ17LrZqJWMAWSMBOxOAN9ZAt55ZMFJfiPE6ScTGoWI6YeQKUwKc86ZABIZQwMscRmZAEFXhPSJLqTMfHE/1RD3QSbV4qOttSFf3VmoqKsBJe1yvSJbUImok0UPJaUcMjDajGtD2NUEVbWVeP1I+MqrAfqGCosJ5Lm8P0OI1R2khX0ySZyr02F4GaUo6aPgVKYRVyyMwjoEjcEHXQABGKGJrjCE1Qggq8R8RLQRxuYXjzpZTNFm4TweeCnzTKPlz6O6VQlZNzf+HSR+Z5+fQG4NfZz6srdJAp+O9Lp341c1bwbQFKCJ4AKXOTQgdnbq9fcXvZ8MtG6vYqbkT9eYy44laeCiNnvipu5PbnSWEIdfv/Fc6T7lPrkCMz+kVv3iGsnbuiw1Ob1co/w6LwJgAA") format("woff");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
Copyright (C) 2017 Datto Inc. https://www.datto.com/fonts/d-din,
|
|
26
|
+
with Reserved Font Names "D-DIN".
|
|
27
|
+
|
|
28
|
+
Copyright (C) 2017 Datto Inc. https://www.datto.com/fonts/d-din,
|
|
29
|
+
with Reserved Font Names "D-DIN Condensed".
|
|
30
|
+
|
|
31
|
+
Copyright (C) 2017 Datto Inc. https://www.datto.com/fonts/d-din,
|
|
32
|
+
with Reserved Font Names "D-DIN Expanded".
|
|
33
|
+
|
|
34
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
35
|
+
This license is copied below, and is also available with a FAQ at:
|
|
36
|
+
http://scripts.sil.org/OFL
|
|
37
|
+
|
|
38
|
+
-----------------------------------------------------------
|
|
39
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
40
|
+
-----------------------------------------------------------
|
|
41
|
+
|
|
42
|
+
PREAMBLE
|
|
43
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
44
|
+
development of collaborative font projects, to support the font creation
|
|
45
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
46
|
+
open framework in which fonts may be shared and improved in partnership
|
|
47
|
+
with others.
|
|
48
|
+
|
|
49
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
50
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
51
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
52
|
+
redistributed and/or sold with any software provided that any reserved
|
|
53
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
54
|
+
however, cannot be released under any other type of license. The
|
|
55
|
+
requirement for fonts to remain under this license does not apply
|
|
56
|
+
to any document created using the fonts or their derivatives.
|
|
57
|
+
|
|
58
|
+
DEFINITIONS
|
|
59
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
60
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
61
|
+
include source files, build scripts and documentation.
|
|
62
|
+
|
|
63
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
64
|
+
copyright statement(s).
|
|
65
|
+
|
|
66
|
+
"Original Version" refers to the collection of Font Software components as
|
|
67
|
+
distributed by the Copyright Holder(s).
|
|
68
|
+
|
|
69
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
70
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
71
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
72
|
+
new environment.
|
|
73
|
+
|
|
74
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
75
|
+
writer or other person who contributed to the Font Software.
|
|
76
|
+
|
|
77
|
+
PERMISSION & CONDITIONS
|
|
78
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
79
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
80
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
81
|
+
Software, subject to the following conditions:
|
|
82
|
+
|
|
83
|
+
1) Neither the Font Software nor any of its individual components,
|
|
84
|
+
in Original or Modified Versions, may be sold by itself.
|
|
85
|
+
|
|
86
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
87
|
+
redistributed and/or sold with any software, provided that each copy
|
|
88
|
+
contains the above copyright notice and this license. These can be
|
|
89
|
+
included either as stand-alone text files, human-readable headers or
|
|
90
|
+
in the appropriate machine-readable metadata fields within text or
|
|
91
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
92
|
+
|
|
93
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
94
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
95
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
96
|
+
presented to the users.
|
|
97
|
+
|
|
98
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
99
|
+
Software shall not be used to promote, endorse or advertise any
|
|
100
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
101
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
102
|
+
permission.
|
|
103
|
+
|
|
104
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
105
|
+
must be distributed entirely under this license, and must not be
|
|
106
|
+
distributed under any other license. The requirement for fonts to
|
|
107
|
+
remain under this license does not apply to any document created
|
|
108
|
+
using the Font Software.
|
|
109
|
+
|
|
110
|
+
TERMINATION
|
|
111
|
+
This license becomes null and void if any of the above conditions are
|
|
112
|
+
not met.
|
|
113
|
+
|
|
114
|
+
DISCLAIMER
|
|
115
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
116
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
117
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
118
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
119
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
120
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
121
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
122
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
123
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
124
|
+
*/
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// bridge/icon-merge.js 的类型声明(给 TypeScript / React 项目)。实现见 icon-merge.js。
|
|
2
|
+
/** 合并一只图标(`.i-icon > svg` 或 `svg.lucide`);已合并且各段没变时什么都不做 */
|
|
3
|
+
export function mergeIcon(svg: SVGSVGElement): void
|
|
4
|
+
/** 合并 root 里现有的图标,并持续处理之后加进来或被改动的图标;返回停止监听的函数 */
|
|
5
|
+
export function mergeIcons(root?: ParentNode & Node): () => void
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// 线性图标合并上色。IconPark、lucide 的图标都由多段描边拼成,图标色又多是半透明(color.icon.default 65% 黑、color.icon.muted 45% 黑),
|
|
2
|
+
// 各段各自上色时,交叠处会叠出更深的一块。这里把每只单色图标的各段复制进同一个 <mask>,再用一块 currentColor 的矩形透过它画一次:
|
|
3
|
+
// 相当于把图标轮廓化、合并成一个形状再上色,整只图标只上一次色。原来的各段由 iconpark.css / shadcn.css 设为透明,仍留在原处。
|
|
4
|
+
// 描边粗细不在这里定:样式表让描边按屏幕上的 icon.stroke.width 画,蒙版里的副本同样适用。
|
|
5
|
+
//
|
|
6
|
+
// 用法:入口里调一次,之后新渲染、更新的图标自动处理;双色 / 多色、或样式表另给了填充 / 描边色的图标不处理。
|
|
7
|
+
// import { mergeIcons } from '@wycm9527/morganite/icon-merge'
|
|
8
|
+
// mergeIcons() // Vue:main.js 里 app.mount() 之后;React:main.tsx 里 render() 之后
|
|
9
|
+
// 服务端渲染的项目在客户端水合完成后再调,免得改动 DOM 引起水合不一致。
|
|
10
|
+
|
|
11
|
+
const NS = 'http://www.w3.org/2000/svg';
|
|
12
|
+
const ICONS = '.i-icon > svg, svg.lucide';
|
|
13
|
+
const MARK = 'data-icon-merge';
|
|
14
|
+
const MERGED = 'data-icon-merged';
|
|
15
|
+
const NOT_PARTS = new Set(['defs', 'mask', 'clipPath', 'pattern', 'symbol', 'linearGradient', 'radialGradient', 'filter', 'title', 'desc', 'style', 'metadata']);
|
|
16
|
+
const NOT_PAINTED = 'defs, mask, clipPath, pattern, symbol, linearGradient, radialGradient, filter';
|
|
17
|
+
const WATCHED = ['d', 'points', 'cx', 'cy', 'r', 'rx', 'ry', 'x', 'y', 'width', 'height', 'x1', 'y1', 'x2', 'y2', 'transform', 'stroke', 'fill', 'viewBox'];
|
|
18
|
+
const snapshots = new WeakMap();
|
|
19
|
+
let seq = 0;
|
|
20
|
+
|
|
21
|
+
const parts = (svg) => [...svg.children].filter((el) => !el.hasAttribute(MARK) && !NOT_PARTS.has(el.localName));
|
|
22
|
+
const node = (name, attrs) => {
|
|
23
|
+
const el = document.createElementNS(NS, name);
|
|
24
|
+
for (const [k, v] of Object.entries(attrs)) el.setAttribute(k, String(v));
|
|
25
|
+
return el;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// 单色:每一段(连同子元素)的填充、描边要么没有,要么就是文字色。读计算样式,样式表用类名另给的颜色也算在内
|
|
29
|
+
const isMono = (nodes) => nodes.every((n) => [n, ...n.querySelectorAll('*')].every((el) => {
|
|
30
|
+
if (el.closest(NOT_PAINTED)) return true;
|
|
31
|
+
const s = getComputedStyle(el);
|
|
32
|
+
return [s.fill, s.stroke].every((v) => v === 'none' || v === s.color);
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
// 只读不写:图标各段没变时返回 null,否则返回要做的事
|
|
36
|
+
function plan(svg) {
|
|
37
|
+
const nodes = parts(svg);
|
|
38
|
+
const snapshot = ['viewBox', 'stroke', 'fill'].map((a) => svg.getAttribute(a)).join('|') + nodes.map((n) => n.outerHTML).join('');
|
|
39
|
+
if (snapshots.get(svg) === snapshot) return null;
|
|
40
|
+
snapshots.set(svg, snapshot);
|
|
41
|
+
const box = svg.viewBox.baseVal;
|
|
42
|
+
return { svg, nodes, box, ok: nodes.length > 0 && !!box && box.width > 0 && isMono(nodes) };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function apply({ svg, nodes, box, ok }) {
|
|
46
|
+
svg.querySelector(`:scope > [${MARK}]`)?.remove();
|
|
47
|
+
if (!ok) { svg.removeAttribute(MERGED); return; }
|
|
48
|
+
// 描边按屏幕粗细画,小图标上会伸出视框一点,蒙版四周留出余量
|
|
49
|
+
const pad = Math.max(box.width, box.height) / 4;
|
|
50
|
+
const area = { x: box.x - pad, y: box.y - pad, width: box.width + pad * 2, height: box.height + pad * 2 };
|
|
51
|
+
const id = `icon-merge-${++seq}`;
|
|
52
|
+
const mask = node('mask', { id, maskUnits: 'userSpaceOnUse', ...area });
|
|
53
|
+
// 副本里的 currentColor(写在各段上的、从 <svg> 继承的)都解析成白色:蒙版只管形状,颜色由下面的矩形一次给出
|
|
54
|
+
const shape = node('g', { color: '#fff' });
|
|
55
|
+
for (const n of nodes) {
|
|
56
|
+
const copy = n.cloneNode(true);
|
|
57
|
+
for (const el of [copy, ...copy.querySelectorAll('[id]')]) el.removeAttribute('id');
|
|
58
|
+
shape.append(copy);
|
|
59
|
+
}
|
|
60
|
+
mask.append(shape);
|
|
61
|
+
// 蒙版不影响命中测试,矩形会让整块视框都能点到;指针事件仍交给原来的各段
|
|
62
|
+
const group = node('g', { [MARK]: '', 'pointer-events': 'none' });
|
|
63
|
+
group.append(mask, node('rect', { ...area, fill: 'currentColor', mask: `url(#${id})` }));
|
|
64
|
+
svg.append(group);
|
|
65
|
+
svg.setAttribute(MERGED, '');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// 先把一批图标都读完再统一写,整批只触发一次样式计算
|
|
69
|
+
const run = (svgs) => svgs.map(plan).filter(Boolean).forEach(apply);
|
|
70
|
+
|
|
71
|
+
/** 合并一只图标;已合并且各段没变时什么都不做 */
|
|
72
|
+
export function mergeIcon(svg) {
|
|
73
|
+
run([svg]);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** 合并 root 里现有的图标,并持续处理之后加进来或被改动的图标;返回停止监听的函数 */
|
|
77
|
+
export function mergeIcons(root = document.body) {
|
|
78
|
+
const queue = new Set();
|
|
79
|
+
const flush = () => {
|
|
80
|
+
const svgs = [...queue].filter((svg) => svg.isConnected);
|
|
81
|
+
queue.clear();
|
|
82
|
+
run(svgs);
|
|
83
|
+
};
|
|
84
|
+
const add = (svg) => {
|
|
85
|
+
if (!queue.size) queueMicrotask(flush);
|
|
86
|
+
queue.add(svg);
|
|
87
|
+
};
|
|
88
|
+
run([...root.querySelectorAll(ICONS)]);
|
|
89
|
+
const observer = new MutationObserver((records) => {
|
|
90
|
+
for (const r of records) {
|
|
91
|
+
const host = (r.target.nodeType === 1 ? r.target : r.target.parentElement)?.closest(ICONS);
|
|
92
|
+
if (host) { add(host); continue; }
|
|
93
|
+
for (const n of r.addedNodes) {
|
|
94
|
+
if (n.nodeType !== 1) continue;
|
|
95
|
+
const svg = n.closest(ICONS);
|
|
96
|
+
if (svg) add(svg);
|
|
97
|
+
else n.querySelectorAll(ICONS).forEach(add);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
observer.observe(root, { childList: true, subtree: true, attributes: true, attributeFilter: WATCHED });
|
|
102
|
+
return () => observer.disconnect();
|
|
103
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IconPark 桥接(配置部分)。全局配置只做一次,让每个图标默认就符合设计系统:
|
|
3
|
+
* 圆头圆角、线性、跟随 font-size。描边由 iconpark.css 按屏幕上的 icon.stroke.width(1.4px)画,各档尺寸一样粗;
|
|
4
|
+
* 入口里调一次 icon-merge.js 的 mergeIcons(),多段描边合并后一次上色,半透明的图标色在交叠处不叠深。
|
|
5
|
+
* 尺寸与颜色交给 iconpark.css 里的 .i-icon--* 类,不在每个图标上写 size / fill。
|
|
6
|
+
*
|
|
7
|
+
* 版本:@icon-park/react、@icon-park/vue-next、@icon-park/svg 1.4.x(Apache-2.0)。
|
|
8
|
+
* 站点:https://iconpark.oceanengine.com/official
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** 与 token 一致的默认配置片段(IIconConfig 的可覆写部分)。 */
|
|
12
|
+
export const iconParkDefaults = {
|
|
13
|
+
size: "1em", // 跟随 font-size;尺寸用 .i-icon--xs…2xl(对应 icon.size.*)
|
|
14
|
+
strokeWidth: 4.8, // 没加载 iconpark.css 时的退路:48 网格里的 4.8 ≈ 14px 图标上的 1.4px(icon.stroke.width);加载后由样式按屏幕粗细覆盖
|
|
15
|
+
strokeLinecap: "round" as const, // icon.stroke.linecap
|
|
16
|
+
strokeLinejoin: "round" as const, // icon.stroke.linejoin
|
|
17
|
+
theme: "outline" as const, // icon.theme.default
|
|
18
|
+
prefix: "i" // 生成 .i-icon 类名,iconpark.css 依赖它
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 侧栏选中项不再换成面性图标(icon.theme.active = outline):选中靠底块与文字色表达(亮色主色底白字白图标,暗色金色暗底亮金字)。
|
|
23
|
+
* 仍需要面性外观的场合(例如底部 Tab 的选中态)才用这个工具。
|
|
24
|
+
* 不用 theme="filled":IconPark 把 filled 的镂空色写死为 #FFF,在暗色或金色底上会漏白。
|
|
25
|
+
* 用 multi-color 传四个颜色 [外描边, 外填充, 内描边, 内填充],镂空色跟随所在底色的 token。
|
|
26
|
+
*/
|
|
27
|
+
export function activeIconProps(backgroundVar = "var(--color-bg-sidebar-selected)") {
|
|
28
|
+
return {
|
|
29
|
+
theme: "multi-color" as const,
|
|
30
|
+
fill: ["currentColor", "currentColor", backgroundVar, backgroundVar]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** two-tone 品牌图标(空状态插图、引导页):描边 icon.brand,填充面 icon.two-tone。 */
|
|
35
|
+
export const brandTwoToneProps = {
|
|
36
|
+
theme: "two-tone" as const,
|
|
37
|
+
fill: ["var(--color-icon-brand)", "var(--color-icon-two-tone)"]
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/* ---------- React ----------
|
|
41
|
+
import { IconProvider, DEFAULT_ICON_CONFIGS } from "@icon-park/react";
|
|
42
|
+
import "@icon-park/react/styles/index.css";
|
|
43
|
+
import "../design-system/bridge/iconpark.css";
|
|
44
|
+
|
|
45
|
+
<IconProvider value={{ ...DEFAULT_ICON_CONFIGS, ...iconParkDefaults }}>
|
|
46
|
+
<App />
|
|
47
|
+
</IconProvider>
|
|
48
|
+
// main.tsx 里 render() 之后:import { mergeIcons } from "@wycm9527/morganite/icon-merge"; mergeIcons();
|
|
49
|
+
|
|
50
|
+
// 用法
|
|
51
|
+
<Home className="i-icon--lg" /> // 尺寸靠类,颜色继承文字
|
|
52
|
+
<Search className="i-icon--sm i-icon--muted" /> // 小号 + 弱化色
|
|
53
|
+
<Home {...activeIconProps()} /> // 需要面性外观的选中态(不用于侧栏)
|
|
54
|
+
<Order className="i-icon--2xl" {...brandTwoToneProps} /> // 空状态
|
|
55
|
+
|
|
56
|
+
---------- Vue 3 ----------
|
|
57
|
+
// 注意:@icon-park/vue-next 的 IconProvider 不是组件,是一个在根组件 setup() 里调用一次的函数(内部 provide)
|
|
58
|
+
import { IconProvider, DEFAULT_ICON_CONFIGS } from "@icon-park/vue-next";
|
|
59
|
+
import "../design-system/bridge/iconpark.css";
|
|
60
|
+
|
|
61
|
+
// App.vue <script setup>
|
|
62
|
+
IconProvider({ ...DEFAULT_ICON_CONFIGS, ...iconParkDefaults });
|
|
63
|
+
// main.js 里 app.mount() 之后:import { mergeIcons } from "@wycm9527/morganite/icon-merge"; mergeIcons();
|
|
64
|
+
|
|
65
|
+
// 任意组件
|
|
66
|
+
import { Home } from "@icon-park/vue-next";
|
|
67
|
+
<Home class="i-icon--lg" />
|
|
68
|
+
<Home v-bind="activeIconProps()" />
|
|
69
|
+
// Element Plus 的 <el-icon> 里也能直接放:<el-icon><Home /></el-icon>
|
|
70
|
+
|
|
71
|
+
---------- 静态页 / 模板引擎(@icon-park/svg) ----------
|
|
72
|
+
import { setConfig, DEFAULT_ICON_CONFIGS, Home } from "@icon-park/svg";
|
|
73
|
+
setConfig({ ...DEFAULT_ICON_CONFIGS, ...iconParkDefaults });
|
|
74
|
+
`<span class="i-icon i-icon--lg">${Home()}</span>`; // Home() 返回裸 <svg> 字符串;套一层 .i-icon,尺寸、描边、合并才和组件版一致
|
|
75
|
+
*/
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* IconPark 桥接(样式部分)。配合 iconpark.config.ts 使用;纯 CSS 项目只需要这个文件。
|
|
2
|
+
IconPark 组件渲染为 <span class="i-icon i-icon-<name>"><svg width="1em" height="1em">…</svg></span>,
|
|
3
|
+
所以尺寸走 font-size,颜色走 color,两者都指向 token。 */
|
|
4
|
+
.i-icon { display: inline-flex; align-items: center; justify-content: center; line-height: 1; font-size: var(--icon-size-md); color: inherit; vertical-align: -0.125em; flex: none; }
|
|
5
|
+
.i-icon svg { width: 1em; height: 1em; display: block; }
|
|
6
|
+
|
|
7
|
+
/* 描边:屏幕上恒为 icon.stroke.width(1.4px),不随图标尺寸缩放(iconpark.config.ts 里的 strokeWidth 只是没加载这份样式时的退路)。
|
|
8
|
+
icon-merge.js 把多段描边合并成一个形状再一次上色,半透明的图标色在交叠处不叠深;合并后原来的各段设为透明,仍留在原处 */
|
|
9
|
+
.i-icon > svg :is(path, circle, ellipse, line, polyline, polygon, rect) { stroke-width: var(--icon-stroke-width); vector-effect: non-scaling-stroke; }
|
|
10
|
+
.i-icon > svg[data-icon-merged] > :not([data-icon-merge], defs, mask, clipPath, pattern, symbol) { opacity: 0; }
|
|
11
|
+
|
|
12
|
+
/* 尺寸六档:与 icon.size.* 一一对应 */
|
|
13
|
+
.i-icon--xs { font-size: var(--icon-size-xs); }
|
|
14
|
+
.i-icon--sm { font-size: var(--icon-size-sm); }
|
|
15
|
+
.i-icon--md { font-size: var(--icon-size-md); }
|
|
16
|
+
.i-icon--lg { font-size: var(--icon-size-lg); }
|
|
17
|
+
.i-icon--xl { font-size: var(--icon-size-xl); }
|
|
18
|
+
.i-icon--2xl { font-size: var(--icon-size-2xl); }
|
|
19
|
+
|
|
20
|
+
/* 颜色:随文字出现的图标什么都不加(继承 currentColor);独立图标按角色取色 */
|
|
21
|
+
.i-icon--default { color: var(--color-icon-default); }
|
|
22
|
+
.i-icon--muted { color: var(--color-icon-muted); }
|
|
23
|
+
.i-icon--brand { color: var(--color-icon-brand); }
|
|
24
|
+
.i-icon--success { color: var(--color-status-success); }
|
|
25
|
+
.i-icon--warning { color: var(--color-status-warning); }
|
|
26
|
+
.i-icon--error { color: var(--color-status-error); }
|
|
27
|
+
.i-icon--info { color: var(--color-status-info); }
|
|
28
|
+
|
|
29
|
+
/* 用 @icon-park/svg 内联时它返回的是裸 <svg>,套一层 <span class="i-icon">,上面的尺寸、描边、合并规则才对它生效。 */
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// 浮层内原位确认条(种子配方组件 · React 版,与 bridge/vue/ConfirmBar.vue 同形):替换 Dialog / Sheet 页脚,不叠第二层弹窗。
|
|
2
|
+
// useInlineConfirm() 返回 { state, ask, confirm, cancel },ask() 返回 Promise<boolean>。按钮用项目自己的 Button 组件传入(保持 shadcn 形态)。
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
|
|
5
|
+
export interface ConfirmBarProps {
|
|
6
|
+
message: string
|
|
7
|
+
confirmText?: string
|
|
8
|
+
cancelText?: string
|
|
9
|
+
danger?: boolean
|
|
10
|
+
onConfirm: () => void
|
|
11
|
+
onCancel: () => void
|
|
12
|
+
renderButton?: (props: { variant: 'primary' | 'danger' | 'secondary'; onClick: () => void; children: React.ReactNode; autoFocus?: boolean }) => React.ReactNode
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function ConfirmBar({ message, confirmText = '确定离开', cancelText = '留下', danger = false, onConfirm, onCancel, renderButton }: ConfirmBarProps) {
|
|
16
|
+
const cancelRef = React.useRef<HTMLButtonElement>(null)
|
|
17
|
+
React.useEffect(() => { cancelRef.current?.focus() }, [])
|
|
18
|
+
const btn = renderButton ?? (({ variant, onClick, children, autoFocus }) => (
|
|
19
|
+
<button ref={autoFocus ? cancelRef : undefined} type="button" className={`confirm-bar__btn is-${variant}`} onClick={onClick}>{children}</button>
|
|
20
|
+
))
|
|
21
|
+
return (
|
|
22
|
+
<div className="confirm-bar" role="alertdialog" aria-live="assertive" aria-label={message} onKeyDown={(e) => { if (e.key === 'Escape') { e.stopPropagation(); e.preventDefault(); onCancel() } }}>
|
|
23
|
+
<span className="msg">{message}</span>
|
|
24
|
+
{btn({ variant: 'secondary', onClick: onCancel, children: cancelText, autoFocus: true })}
|
|
25
|
+
{btn({ variant: danger ? 'danger' : 'primary', onClick: onConfirm, children: confirmText })}
|
|
26
|
+
</div>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function useInlineConfirm() {
|
|
31
|
+
const [state, setState] = React.useState({ open: false, message: '', confirmText: '确定离开', cancelText: '留下', danger: false })
|
|
32
|
+
const pending = React.useRef<{ resolve: (ok: boolean) => void; promise: Promise<boolean> } | null>(null)
|
|
33
|
+
const ask = React.useCallback((opts: { message: string; confirmText?: string; cancelText?: string; danger?: boolean }) => {
|
|
34
|
+
if (pending.current) return pending.current.promise
|
|
35
|
+
let resolve!: (ok: boolean) => void
|
|
36
|
+
const promise = new Promise<boolean>((r) => { resolve = r })
|
|
37
|
+
pending.current = { promise, resolve }
|
|
38
|
+
setState({ open: true, message: opts.message, confirmText: opts.confirmText ?? '确定离开', cancelText: opts.cancelText ?? '留下', danger: opts.danger ?? false })
|
|
39
|
+
return promise
|
|
40
|
+
}, [])
|
|
41
|
+
const settle = React.useCallback((ok: boolean) => { setState((s) => ({ ...s, open: false })); const p = pending.current; pending.current = null; p?.resolve(ok) }, [])
|
|
42
|
+
return { state, ask, confirm: () => settle(true), cancel: () => settle(false) }
|
|
43
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// 通用图表容器(种子配方组件 · React 版):option 是一个函数,参数是图表 token 与 echarts 实例;亮暗切换靠监听 <html class> 重建;
|
|
2
|
+
// option 变化(依赖数组)时重新 setOption。柱子端头统一套 withBarEnds,图例开关后重算——页面不写 borderRadius。
|
|
3
|
+
// 高度由外层 .chart / .chart.tall 类(recipes.css)用 token 表达。
|
|
4
|
+
import * as React from 'react'
|
|
5
|
+
import * as echarts from 'echarts/core'
|
|
6
|
+
import { LineChart, BarChart, PieChart, HeatmapChart } from 'echarts/charts'
|
|
7
|
+
import { GridComponent, TooltipComponent, LegendComponent, VisualMapComponent } from 'echarts/components'
|
|
8
|
+
import { CanvasRenderer } from 'echarts/renderers'
|
|
9
|
+
import { registerTheme, chartTokens, withBarEnds } from '../echarts.js'
|
|
10
|
+
|
|
11
|
+
echarts.use([LineChart, BarChart, PieChart, HeatmapChart, GridComponent, TooltipComponent, LegendComponent, VisualMapComponent, CanvasRenderer])
|
|
12
|
+
|
|
13
|
+
type Tokens = ReturnType<typeof chartTokens>
|
|
14
|
+
export type OptionFactory = (t: Tokens, ec: typeof echarts) => Record<string, unknown>
|
|
15
|
+
|
|
16
|
+
export function EChart({ option, deps = [], className = 'chart' }: { option: OptionFactory; deps?: React.DependencyList; className?: string }) {
|
|
17
|
+
const el = React.useRef<HTMLDivElement>(null)
|
|
18
|
+
const chart = React.useRef<echarts.ECharts | null>(null)
|
|
19
|
+
const factory = React.useRef(option)
|
|
20
|
+
factory.current = option
|
|
21
|
+
const build = React.useCallback((selected?: Record<string, boolean>) => withBarEnds(factory.current(chartTokens(), echarts), { selected }), [])
|
|
22
|
+
|
|
23
|
+
const render = React.useCallback(() => {
|
|
24
|
+
if (!el.current) return
|
|
25
|
+
const name = registerTheme(echarts)
|
|
26
|
+
chart.current?.dispose()
|
|
27
|
+
const instance = echarts.init(el.current, name)
|
|
28
|
+
chart.current = instance
|
|
29
|
+
// 图例关掉一个堆叠序列后,最外一段换了序列;只合并 series,图例的开关状态不动
|
|
30
|
+
const relegend = (params: unknown) => { const { series } = build((params as { selected: Record<string, boolean> }).selected); if (series) instance.setOption({ series }) }
|
|
31
|
+
for (const type of ['legendselectchanged', 'legendselectall', 'legendinverseselect']) instance.on(type, relegend)
|
|
32
|
+
instance.setOption(build(), true)
|
|
33
|
+
}, [build])
|
|
34
|
+
|
|
35
|
+
React.useEffect(() => {
|
|
36
|
+
render()
|
|
37
|
+
const ro = new ResizeObserver(() => chart.current?.resize()); if (el.current) ro.observe(el.current)
|
|
38
|
+
const mo = new MutationObserver(() => requestAnimationFrame(render)); mo.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] })
|
|
39
|
+
return () => { ro.disconnect(); mo.disconnect(); chart.current?.dispose(); chart.current = null }
|
|
40
|
+
}, [render])
|
|
41
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
42
|
+
React.useEffect(() => { chart.current?.setOption(build(), true) }, deps)
|
|
43
|
+
|
|
44
|
+
return <div ref={el} className={className} />
|
|
45
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// 页头(种子配方组件 · React 版,与 bridge/vue/PageHeader.vue 同形):每个一级页面一个 H1,副标题可省;status 放标题旁的状态胶囊,actions 放页面级操作(主操作金底)。
|
|
2
|
+
// 样式来自 recipes.css 的 .page-head / .title-row / .actions。面包屑在壳层顶栏(.crumbs),表格、图表自己的筛选留在各自的卡片里,都不放这里。leading 放标题左侧的头像。
|
|
3
|
+
import * as React from 'react'
|
|
4
|
+
|
|
5
|
+
export interface PageHeaderProps {
|
|
6
|
+
title: React.ReactNode
|
|
7
|
+
subtitle?: React.ReactNode
|
|
8
|
+
status?: React.ReactNode
|
|
9
|
+
actions?: React.ReactNode
|
|
10
|
+
leading?: React.ReactNode
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function PageHeader({ title, subtitle, status, actions, leading }: PageHeaderProps) {
|
|
14
|
+
return (
|
|
15
|
+
<div className="page-head">
|
|
16
|
+
{leading}
|
|
17
|
+
<div>
|
|
18
|
+
{status ? <div className="title-row"><h1>{title}</h1>{status}</div> : <h1>{title}</h1>}
|
|
19
|
+
{subtitle ? <p>{subtitle}</p> : null}
|
|
20
|
+
</div>
|
|
21
|
+
{actions ? <div className="actions">{actions}</div> : null}
|
|
22
|
+
</div>
|
|
23
|
+
)
|
|
24
|
+
}
|