{"id":17075,"date":"2026-01-29T18:02:47","date_gmt":"2026-01-29T10:02:47","guid":{"rendered":"https:\/\/www.elishtech.com\/?page_id=17075"},"modified":"2026-01-29T19:24:35","modified_gmt":"2026-01-29T11:24:35","slug":"products-storage","status":"publish","type":"page","link":"https:\/\/www.elishtech.com\/en\/products-storage\/","title":{"rendered":"Storage"},"content":{"rendered":"\n<html lang=\"ru\"><head><style>\n        @import url(https:\/\/fonts.googleapis.com\/css?family=Google+Sans+Text);\n        html {\n          font-family: 'Google Sans Text', 'Google Sans';\n          font-size: 14px;\n          color-scheme: light dark;\n          background: light-dark(white, black);\n          color: light-dark(black, white);\n        }\n        <\/style>\n        \n        <script type=\"importmap\">{\"imports\":{\"@modelcontextprotocol\/sdk\/\":\"https:\/\/esm.sh\/@modelcontextprotocol\/sdk\/dist\/esm\/\",\"https:\/\/esm.sh\/@modelcontextprotocol\/sdk@^1.11.0\/es2022\/\":\"https:\/\/esm.sh\/@modelcontextprotocol\/sdk@^1.11.0\/es2022\/dist\/esm\/\",\"https:\/\/esm.sh\/@modelcontextprotocol\/sdk@^1.11.0\/client\/index?target=es2022\":\"https:\/\/esm.sh\/@modelcontextprotocol\/sdk@^1.11.0\/dist\/esm\/client\/index?target=es2022\",\"https:\/\/esm.sh\/@modelcontextprotocol\/sdk@^1.11.0\/types?target=es2022\":\"https:\/\/esm.sh\/@modelcontextprotocol\/sdk@^1.11.0\/dist\/esm\/types?target=es2022\",\"react\":\"https:\/\/esm.sh\/react@^19.2.4\",\"react-dom\/\":\"https:\/\/esm.sh\/react-dom@^19.2.4\/\",\"react\/\":\"https:\/\/esm.sh\/react@^19.2.4\/\",\"@\/index\":\"data:application\/javascript;base64,aW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tICJyZWFjdC9qc3gtcnVudGltZSI7CmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20vY2xpZW50JzsKaW1wb3J0IEFwcCBmcm9tICdAL0FwcCc7CmNvbnN0IHJvb3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKaWYgKCFyb290RWxlbWVudCkgewogICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCByb290IGVsZW1lbnQgdG8gbW91bnQgdG8iKTsKfQpjb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChyb290RWxlbWVudCk7CnJvb3QucmVuZGVyKF9qc3goUmVhY3QuU3RyaWN0TW9kZSwgeyBjaGlsZHJlbjogX2pzeChBcHAsIHt9KSB9KSk7Cg==\",\"@\":\"data:application\/javascript;base64,aW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tICJyZWFjdC9qc3gtcnVudGltZSI7CmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20vY2xpZW50JzsKaW1wb3J0IEFwcCBmcm9tICdAL0FwcCc7CmNvbnN0IHJvb3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKaWYgKCFyb290RWxlbWVudCkgewogICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCByb290IGVsZW1lbnQgdG8gbW91bnQgdG8iKTsKfQpjb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChyb290RWxlbWVudCk7CnJvb3QucmVuZGVyKF9qc3goUmVhY3QuU3RyaWN0TW9kZSwgeyBjaGlsZHJlbjogX2pzeChBcHAsIHt9KSB9KSk7Cg==\",\"@\/types\":\"data:application\/javascript;base64,ZXhwb3J0IHt9Owo=\",\"@\/constants\":\"data:application\/javascript;base64,aW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tICJyZWFjdC9qc3gtcnVudGltZSI7CmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CmV4cG9ydCBjb25zdCBDT05UQUNUX0VNQUlMID0gImlkYy1tYXJrZXRpbmdAdGVjaC5maW5vdnkuY29tIjsKZXhwb3J0IGNvbnN0IENPTlRBQ1RfRk9STV9VUkwgPSAiaHR0cHM6Ly9mb3Jtcy5vZmZpY2UuY29tL1BhZ2VzL1Jlc3BvbnNlUGFnZS5hc3B4P2lkPU04bmRPdmtPaTBLTDJualg1OVMzdDZSbHloQ1JySWRNcjROazZYVkEteDlVTWs5SlYwTTVWRFUyVmtjeVJsRTJNbEJRU1ZkSk9GTXpVeTR1IjsKZXhwb3J0IGNvbnN0IElDT05TID0gewogICAgU3RvcmFnZTogKHByb3BzKSA9PiAoX2pzeCgic3ZnIiwgeyB4bWxuczogImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgZmlsbDogIm5vbmUiLCB2aWV3Qm94OiAiMCAwIDI0IDI0Iiwgc3Ryb2tlV2lkdGg6IDEuNSwgc3Ryb2tlOiAiY3VycmVudENvbG9yIiwgLi4ucHJvcHMsIGNoaWxkcmVuOiBfanN4KCJwYXRoIiwgeyBzdHJva2VMaW5lY2FwOiAicm91bmQiLCBzdHJva2VMaW5lam9pbjogInJvdW5kIiwgZDogIk0yMC4yNSA2LjM3NWMwIDIuMjc4LTMuNjk0IDQuMTI1LTguMjUgNC4xMjVTMy43NSA4LjY1MyAzLjc1IDYuMzc1bTE2LjUgMGMwLTIuMjc4LTMuNjk0LTQuMTI1LTguMjUtNC4xMjVTMy43NSA0LjA5NyAzLjc1IDYuMzc1bTE2LjUgMHYxMS4yNWMwIDIuMjc4LTMuNjk0IDQuMTI1LTguMjUgNC4xMjVzLTguMjUtMS44NDctOC4yNS00LjEyNVY2LjM3NW0xNi41IDB2My43NW0tMTYuNS0zLjc1djMuNzVtMTYuNSAwdjMuNzVDMjAuMjUgMTYuMTUzIDE2LjU1NiAxOCAxMiAxOHMtOC4yNS0xLjg0Ny04LjI1LTQuMTI1di0zLjc1bTE2LjUgMGMwIDIuMjc4LTMuNjk0IDQuMTI1LTguMjUgNC4xMjVzLTguMjUtMS44NDctOC4yNS00LjEyNSIgfSkgfSkpLAogICAgTmV0d29yazogKHByb3BzKSA9PiAoX2pzeCgic3ZnIiwgeyB4bWxuczogImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgZmlsbDogIm5vbmUiLCB2aWV3Qm94OiAiMCAwIDI0IDI0Iiwgc3Ryb2tlV2lkdGg6IDEuNSwgc3Ryb2tlOiAiY3VycmVudENvbG9yIiwgLi4ucHJvcHMsIGNoaWxkcmVuOiBfanN4KCJwYXRoIiwgeyBzdHJva2VMaW5lY2FwOiAicm91bmQiLCBzdHJva2VMaW5lam9pbjogInJvdW5kIiwgZDogIk04LjI1IDN2MS41TTQuNSA4LjI1SDNtMTggMGgtMS41bS0xNSA0LjVIM20xOCAwaC0xLjVtLTE1IDQuNUgzbTE4IDBoLTEuNW0tMTUgNC41SDNtMTggMGgtMS41TTE1Ljc1IDN2MS41TTguMjUgMTkuNVYyMU0xNS43NSAxOS41VjIxTTMuNzUgNC44NzVjMC0uNjIxLjUwNC0xLjEyNSAxLjEyNS0xLjEyNWgxNC4yNWMuNjIxIDAgMS4xMjUuNTA0IDEuMTI1IDEuMTI1djE0LjI1YzAgLjYyMS0uNTA0IDEuMTI1LTEuMTI1IDEuMTI1SDQuODc1Yy0uNjIxIDAtMS4xMjUtLjUwNC0xLjEyNS0xLjEyNVY0Ljg3NXoiIH0pIH0pKSwKICAgIENsb3VkOiAocHJvcHMpID0+IChfanN4KCJzdmciLCB7IHhtbG5zOiAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCBmaWxsOiAibm9uZSIsIHZpZXdCb3g6ICIwIDAgMjQgMjQiLCBzdHJva2VXaWR0aDogMS41LCBzdHJva2U6ICJjdXJyZW50Q29sb3IiLCAuLi5wcm9wcywgY2hpbGRyZW46IF9qc3goInBhdGgiLCB7IHN0cm9rZUxpbmVjYXA6ICJyb3VuZCIsIHN0cm9rZUxpbmVqb2luOiAicm91bmQiLCBkOiAiTTIuMjUgMTVhNC41IDQuNSAwIDAwNC41IDQuNUgxOGEzLjc1IDMuNzUgMCAwMDEuMzMyLTcuMjU3IDMgMyAwIDAwLTMuNzU4LTMuODQ4IDUuMjUgNS4yNSAwIDAwLTEwLjIzMyAyLjMzQTQuNTAyIDQuNTAyIDAgMDAyLjI1IDE1eiIgfSkgfSkpLAogICAgRGF0YWJhc2U6IChwcm9wcykgPT4gKF9qc3goInN2ZyIsIHsgeG1sbnM6ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsIGZpbGw6ICJub25lIiwgdmlld0JveDogIjAgMCAyNCAyNCIsIHN0cm9rZVdpZHRoOiAxLjUsIHN0cm9rZTogImN1cnJlbnRDb2xvciIsIC4uLnByb3BzLCBjaGlsZHJlbjogX2pzeCgicGF0aCIsIHsgc3Ryb2tlTGluZWNhcDogInJvdW5kIiwgc3Ryb2tlTGluZWpvaW46ICJyb3VuZCIsIGQ6ICJNMjAuMjUgNi4zNzVjMCAyLjI3OC0zLjY5NCA0LjEyNS04LjI1IDQuMTI1UzMuNzUgOC42NTMgMy43NSA2LjM3NW0xNi41IDBjMC0yLjI3OC0zLjY5NC00LjEyNS04LjI1LTQuMTI1UzMuNzUgNC4wOTcgMy43NSA2LjM3NW0xNi41IDB2MTEuMjVjMCAyLjI3OC0zLjY5NCA0LjEyNS04LjI1IDQuMTI1cy04LjI1LTEuODQ3LTguMjUtNC4xMjVWNi4zNzUiIH0pIH0pKSwKICAgIENoZWNrOiAocHJvcHMpID0+IChfanN4KCJzdmciLCB7IHhtbG5zOiAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCBmaWxsOiAibm9uZSIsIHZpZXdCb3g6ICIwIDAgMjQgMjQiLCBzdHJva2VXaWR0aDogMS41LCBzdHJva2U6ICJjdXJyZW50Q29sb3IiLCAuLi5wcm9wcywgY2hpbGRyZW46IF9qc3goInBhdGgiLCB7IHN0cm9rZUxpbmVjYXA6ICJyb3VuZCIsIHN0cm9rZUxpbmVqb2luOiAicm91bmQiLCBkOiAiTTkgMTIuNzVMMTEuMjUgMTUgMTUgOS43NU0yMSAxMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHoiIH0pIH0pKSwKICAgIFdhcm5pbmc6IChwcm9wcykgPT4gKF9qc3goInN2ZyIsIHsgeG1sbnM6ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsIGZpbGw6ICJub25lIiwgdmlld0JveDogIjAgMCAyNCAyNCIsIHN0cm9rZVdpZHRoOiAxLjUsIHN0cm9rZTogImN1cnJlbnRDb2xvciIsIC4uLnByb3BzLCBjaGlsZHJlbjogX2pzeCgicGF0aCIsIHsgc3Ryb2tlTGluZWNhcDogInJvdW5kIiwgc3Ryb2tlTGluZWpvaW46ICJyb3VuZCIsIGQ6ICJNMTIgOXYzLjc1bS05LjMwMyAzLjM3NmMtLjg2NiAxLjUuMjE3IDMuMzc0IDEuOTQ4IDMuMzc0aDE0LjcxYzEuNzMgMCAyLjgxMy0xLjg3NCAxLjk0OC0zLjM3NEwxMy45NDkgMy4zNzhjLS44NjYtMS41LTMuMDMyLTEuNS0zLjg5OCAwTDIuNjk3IDE2LjEyNnpNMTIgMTUuNzVoLjAwN3YuMDA4SDEydi0uMDA4eiIgfSkgfSkpCn07Cg==\",\"@\/App\":\"data:application\/javascript;base64,aW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tICJyZWFjdC9qc3gtcnVudGltZSI7CmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CmltcG9ydCB7IENPTlRBQ1RfRU1BSUwsIENPTlRBQ1RfRk9STV9VUkwsIElDT05TIH0gZnJvbSAnQC9jb25zdGFudHMnOwpjb25zdCBIZXJvID0gKCkgPT4gKF9qc3hzKCJzZWN0aW9uIiwgeyBjbGFzc05hbWU6ICJyZWxhdGl2ZSBwdC0yNCBwYi0yMCBsZzpwdC00MCBsZzpwYi0zMiBvdmVyZmxvdy1oaWRkZW4gYmctc2xhdGUtOTUwIHRleHQtd2hpdGUiLCBjaGlsZHJlbjogW19qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogImFic29sdXRlIHRvcC0wIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgdy1mdWxsIGgtZnVsbCBwb2ludGVyLWV2ZW50cy1ub25lIiwgY2hpbGRyZW46IFtfanN4KCJkaXYiLCB7IGNsYXNzTmFtZTogImFic29sdXRlIHRvcC1bLTEwJV0gbGVmdC1bLTEwJV0gdy1bNTAlXSBoLVs1MCVdIGJnLWJsdWUtNjAwLzEwIGJsdXItWzEyMHB4XSByb3VuZGVkLWZ1bGwiIH0pLCBfanN4KCJkaXYiLCB7IGNsYXNzTmFtZTogImFic29sdXRlIGJvdHRvbS1bMTAlXSByaWdodC1bLTUlXSB3LVs0MCVdIGgtWzQwJV0gYmctaW5kaWdvLTYwMC8xMCBibHVyLVsxMDBweF0gcm91bmRlZC1mdWxsIiB9KV0gfSksIF9qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTggcmVsYXRpdmUgei0xMCIsIGNoaWxkcmVuOiBfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0yIGdhcC0xMiBpdGVtcy1jZW50ZXIiLCBjaGlsZHJlbjogW19qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogIm1heC13LTN4bCIsIGNoaWxkcmVuOiBbX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBweC0zIHB5LTEgcm91bmRlZC1mdWxsIGJnLWJsdWUtNTAwLzEwIGJvcmRlciBib3JkZXItYmx1ZS01MDAvMjAgdGV4dC1ibHVlLTQwMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTgiLCBjaGlsZHJlbjogW19qc3hzKCJzcGFuIiwgeyBjbGFzc05hbWU6ICJyZWxhdGl2ZSBmbGV4IGgtMiB3LTIiLCBjaGlsZHJlbjogW19qc3goInNwYW4iLCB7IGNsYXNzTmFtZTogImFuaW1hdGUtcGluZyBhYnNvbHV0ZSBpbmxpbmUtZmxleCBoLWZ1bGwgdy1mdWxsIHJvdW5kZWQtZnVsbCBiZy1ibHVlLTQwMCBvcGFjaXR5LTc1IiB9KSwgX2pzeCgic3BhbiIsIHsgY2xhc3NOYW1lOiAicmVsYXRpdmUgaW5saW5lLWZsZXggcm91bmRlZC1mdWxsIGgtMiB3LTIgYmctYmx1ZS01MDAiIH0pXSB9KSwgX2pzeCgic3BhbiIsIHsgY2hpbGRyZW46ICJFbnRlcnByaXNlIFN0b3JhZ2UgU29sdXRpb25zIDIwMjUiIH0pXSB9KSwgX2pzeCgiaDEiLCB7IGNsYXNzTmFtZTogInRleHQtNHhsIHNtOnRleHQtNXhsIGxnOnRleHQtNnhsIGZvbnQtZXh0cmFib2xkIHRyYWNraW5nLXRpZ2h0IGxlYWRpbmctWzEuMV0gbWItOCBiZy1ncmFkaWVudC10by1iIGZyb20td2hpdGUgdG8tc2xhdGUtNDAwIGJnLWNsaXAtdGV4dCB0ZXh0LXRyYW5zcGFyZW50IiwgY2hpbGRyZW46ICJcdTA0MjFcdTA0MzhcdTA0NDFcdTA0NDJcdTA0MzVcdTA0M0NcdTA0NEIgXHUwNDQ1XHUwNDQwXHUwNDMwXHUwNDNEXHUwNDM1XHUwNDNEXHUwNDM4XHUwNDRGIFx1MDQzNFx1MDQzMFx1MDQzRFx1MDQzRFx1MDQ0Qlx1MDQ0NSBcdTA0MzRcdTA0M0JcdTA0NEYgXHUwNDE4XHUwNDIyXHUyMDExXHUwNDM4XHUwNDNEXHUwNDQ0XHUwNDQwXHUwNDMwXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDQzXHUwNDNBXHUwNDQyXHUwNDQzXHUwNDQwXHUwNDRCIFx1MDQzOCBcdTA0MjZcdTA0MUVcdTA0MTQiIH0pLCBfanN4KCJwIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LXhsIGZvbnQtbWVkaXVtIHRleHQtc2xhdGUtNDAwIG1iLTggbGVhZGluZy1yZWxheGVkIiwgY2hpbGRyZW46ICJcdTA0MjVcdTA0NDBcdTA0MzBcdTA0M0RcdTA0MzhcdTA0M0JcdTA0MzhcdTA0NDlcdTA0MzAgXHUwNDM0XHUwNDNCXHUwNDRGIFx1MDQzMVx1MDQzMFx1MDQzNyBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0M0RcdTA0NEJcdTA0NDUsIFx1MDQzMlx1MDQzOFx1MDQ0MFx1MDQ0Mlx1MDQ0M1x1MDQzMFx1MDQzQlx1MDQzOFx1MDQzN1x1MDQzMFx1MDQ0Nlx1MDQzOFx1MDQzOCwgXHUwNDQwXHUwNDM1XHUwNDM3XHUwNDM1XHUwNDQwXHUwNDMyXHUwNDNEXHUwNDNFXHUwNDMzXHUwNDNFIFx1MDQzQVx1MDQzRVx1MDQzRlx1MDQzOFx1MDQ0MFx1MDQzRVx1MDQzMlx1MDQzMFx1MDQzRFx1MDQzOFx1MDQ0RiwgXHUwNDMwXHUwNDQwXHUwNDQ1XHUwNDM4XHUwNDMyXHUwNDNFXHUwNDMyIFx1MDQzOCBcdTA0M0NcdTA0MzVcdTA0MzRcdTA0MzhcdTA0MzBcdTA0M0FcdTA0M0VcdTA0M0RcdTA0NDJcdTA0MzVcdTA0M0RcdTA0NDJcdTA0MzAgXHUyMDE0IFx1MDQzRFx1MDQzMCBcdTA0MzFcdTA0MzBcdTA0MzdcdTA0MzUgU0FOLCBOQVMsIFx1MDQzRVx1MDQzMVx1MDQ0QVx1MDQzNVx1MDQzQVx1MDQ0Mlx1MDQzRFx1MDQzRVx1MDQzM1x1MDQzRSBcdTA0NDVcdTA0NDBcdTA0MzBcdTA0M0RcdTA0MzVcdTA0M0RcdTA0MzhcdTA0NEYgXHUwNDM4IEpCT0RcdTIwMTFcdTA0NDBcdTA0MzVcdTA0NDhcdTA0MzVcdTA0M0RcdTA0MzhcdTA0MzkuIiB9KSwgX2pzeCgiZGl2IiwgeyBjbGFzc05hbWU6ICJib3JkZXItbC0yIGJvcmRlci1ibHVlLTYwMCBwbC02IHB5LTIgbWItMTAiLCBjaGlsZHJlbjogX2pzeHMoInAiLCB7IGNsYXNzTmFtZTogInRleHQtbGcgdGV4dC1zbGF0ZS0zMDAiLCBjaGlsZHJlbjogWyJcdTA0MUZcdTA0M0VcdTA0NDFcdTA0NDJcdTA0NDBcdTA0M0VcdTA0MzhcdTA0M0MgXHUwNDQxXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDM1XHUwNDNDXHUwNDQzIFx1MDQ0NVx1MDQ0MFx1MDQzMFx1MDQzRFx1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0RiBcdTA0M0ZcdTA0M0VcdTA0MzQgXHUwNDMyXHUwNDMwXHUwNDQ4XHUwNDM4IFx1MDQzRlx1MDQ0MFx1MDQzOFx1MDQzQlx1MDQzRVx1MDQzNlx1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0RjogXHUwNDNFXHUwNDQyIFx1MDQzMlx1MDQ0Qlx1MDQ0MVx1MDQzRVx1MDQzQVx1MDQzRVx1MDQzRlx1MDQ0MFx1MDQzRVx1MDQzOFx1MDQzN1x1MDQzMlx1MDQzRVx1MDQzNFx1MDQzOFx1MDQ0Mlx1MDQzNVx1MDQzQlx1MDQ0Q1x1MDQzRFx1MDQ0Qlx1MDQ0NSBcdTA0M0NcdTA0MzBcdTA0NDFcdTA0NDFcdTA0MzhcdTA0MzJcdTA0M0VcdTA0MzIgXHUwNDM0XHUwNDNFIFx1MDQzQ1x1MDQzMFx1MDQ0MVx1MDQ0OFx1MDQ0Mlx1MDQzMFx1MDQzMVx1MDQzOFx1MDQ0MFx1MDQ0M1x1MDQzNVx1MDQzQ1x1MDQ0Qlx1MDQ0NSBcdTA0MzBcdTA0NDBcdTA0NDVcdTA0MzhcdTA0MzJcdTA0M0VcdTA0MzIuIiwgX2pzeCgic3BhbiIsIHsgY2xhc3NOYW1lOiAiYmxvY2sgbXQtMiB0ZXh0LWJsdWUtNDAwIGZvbnQtc2VtaWJvbGQgaXRhbGljIHRleHQtYmFzZSIsIGNoaWxkcmVuOiAiXHUwNDIzXHUwNDQ3XHUwNDM4XHUwNDQyXHUwNDRCXHUwNDMyXHUwNDMwXHUwNDM1XHUwNDNDIFx1MDQzRVx1MDQzM1x1MDQ0MFx1MDQzMFx1MDQzRFx1MDQzOFx1MDQ0N1x1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0RiBcdTA0M0ZcdTA0M0VcdTA0NDFcdTA0NDJcdTA0MzBcdTA0MzJcdTA0M0VcdTA0M0EgXHUwNDM4IFx1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzMlx1MDQzOFx1MDQ0MVx1MDQzRFx1MDQzRVx1MDQzOSBcdTA0M0ZcdTA0M0VcdTA0MzRcdTA0MzRcdTA0MzVcdTA0NDBcdTA0MzZcdTA0M0FcdTA0MzggXHUwNDMyIFx1MDQyMFx1MDQzRVx1MDQ0MVx1MDQ0MVx1MDQzOFx1MDQzOC4iIH0pXSB9KSB9KSwgX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAiZmxleCBmbGV4LWNvbCBzbTpmbGV4LXJvdyBnYXAtNSIsIGNoaWxkcmVuOiBbX2pzeHMoImEiLCB7IGhyZWY6IENPTlRBQ1RfRk9STV9VUkwsIHRhcmdldDogIl9ibGFuayIsIHJlbDogIm5vb3BlbmVyIG5vcmVmZXJyZXIiLCBjbGFzc05hbWU6ICJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtOCBweS00IGJnLWJsdWUtNjAwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQteGwgc2hhZG93LXhsIGhvdmVyOmJnLWJsdWUtNTAwIHRyYW5zaXRpb24tYWxsIGdyb3VwIiwgY2hpbGRyZW46IFtfanN4KCJzcGFuIiwgeyBjaGlsZHJlbjogIlx1MDQxRlx1MDQzRVx1MDQzQlx1MDQ0M1x1MDQ0N1x1MDQzOFx1MDQ0Mlx1MDQ0QyBcdTA0NDBcdTA0MzBcdTA0NDFcdTA0NDdcdTA0NTFcdTA0NDIgXHUwNDNBXHUwNDNFXHUwNDNEXHUwNDQ0XHUwNDM4XHUwNDMzXHUwNDQzXHUwNDQwXHUwNDMwXHUwNDQ2XHUwNDM4XHUwNDM4IiB9KSwgX2pzeCgic3ZnIiwgeyBjbGFzc05hbWU6ICJ3LTUgaC01IG1sLTIgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybSIsIGZpbGw6ICJub25lIiwgc3Ryb2tlOiAiY3VycmVudENvbG9yIiwgdmlld0JveDogIjAgMCAyNCAyNCIsIGNoaWxkcmVuOiBfanN4KCJwYXRoIiwgeyBzdHJva2VMaW5lY2FwOiAicm91bmQiLCBzdHJva2VMaW5lam9pbjogInJvdW5kIiwgc3Ryb2tlV2lkdGg6ICIyIiwgZDogIk0xNyA4bDQgNG0wIDBsLTQgNG00LTRIMyIgfSkgfSldIH0pLCBfanN4KCJhIiwgeyBocmVmOiBgbWFpbHRvOiR7Q09OVEFDVF9FTUFJTH1gLCBjbGFzc05hbWU6ICJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtOCBweS00IGJnLXdoaXRlLzUgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCB0ZXh0LXdoaXRlIGZvbnQtYm9sZCByb3VuZGVkLXhsIGJhY2tkcm9wLWJsdXItc20gaG92ZXI6Ymctd2hpdGUvMTAgdHJhbnNpdGlvbi1hbGwiLCBjaGlsZHJlbjogIlx1MDQxRVx1MDQzMVx1MDQ0MVx1MDQ0M1x1MDQzNFx1MDQzOFx1MDQ0Mlx1MDQ0QyBcdTA0M0ZcdTA0NDBcdTA0M0VcdTA0MzVcdTA0M0FcdTA0NDIiIH0pXSB9KV0gfSksIF9qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogInJlbGF0aXZlIGdyb3VwIGxnOmJsb2NrIGhpZGRlbiIsIGNoaWxkcmVuOiBbX2pzeCgiZGl2IiwgeyBjbGFzc05hbWU6ICJhYnNvbHV0ZSAtaW5zZXQtMSBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS02MDAgdG8tY3lhbi01MDAgcm91bmRlZC0zeGwgYmx1ciBvcGFjaXR5LTI1IGdyb3VwLWhvdmVyOm9wYWNpdHktNDAgdHJhbnNpdGlvbiBkdXJhdGlvbi0xMDAwIGdyb3VwLWhvdmVyOmR1cmF0aW9uLTIwMCIgfSksIF9qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogInJlbGF0aXZlIGJnLXNsYXRlLTkwMCByaW5nLTEgcmluZy13aGl0ZS8xMCByb3VuZGVkLTN4bCBvdmVyZmxvdy1oaWRkZW4gc2hhZG93LTJ4bCIsIGNoaWxkcmVuOiBbX2pzeCgiaW1nIiwgeyBzcmM6ICJodHRwczovL3d3dy5lbGlzaHRlY2guY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzAxL2ltYWdlLTEuanBnIiwgYWx0OiAiRW50ZXJwcmlzZSBTdG9yYWdlIFN5c3RlbSIsIGNsYXNzTmFtZTogInctZnVsbCBoLWF1dG8gb2JqZWN0LWNvdmVyIG9wYWNpdHktODAgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTUwMCIgfSksIF9qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by10IGZyb20tc2xhdGUtOTUwIHZpYS10cmFuc3BhcmVudCB0by10cmFuc3BhcmVudCIgfSksIF9qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAiYWJzb2x1dGUgYm90dG9tLTYgbGVmdC02IHJpZ2h0LTYgcC00IGJnLXdoaXRlLzUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItd2hpdGUvMTAiLCBjaGlsZHJlbjogX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIiwgY2hpbGRyZW46IFtfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTMiLCBjaGlsZHJlbjogW19qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctZ3JlZW4tNTAwIGFuaW1hdGUtcHVsc2UiIH0pLCBfanN4KCJzcGFuIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LXhzIGZvbnQtbW9ubyB0ZXh0LXNsYXRlLTMwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IiwgY2hpbGRyZW46ICJTeXN0ZW0gT3BlcmF0aW9uYWwiIH0pXSB9KSwgX2pzeCgic3BhbiIsIHsgY2xhc3NOYW1lOiAidGV4dC14cyBmb250LW1vbm8gdGV4dC1ibHVlLTQwMCIsIGNoaWxkcmVuOiAiMC4wMm1zIExhdGVuY3kiIH0pXSB9KSB9KV0gfSldIH0pXSB9KSB9KV0gfSkpOwpjb25zdCBTdG9yYWdlVHlwZXMgPSAoKSA9PiB7CiAgICBjb25zdCB0eXBlcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlOiAiU0FOICjQsdC70L7Rh9C90L7QtSDRhdGA0LDQvdC40LvQuNGJ0LUpIiwKICAgICAgICAgICAgZGVzY3JpcHRpb246ICLQktGL0LTQsNGR0YIg0YHQtdGA0LLQtdGA0LDQvCDQu9C+0LPQuNGH0LXRgdC60LjQtSDQtNC40YHQutC4IChMVU4pLCDQuiDQutC+0YLQvtGA0YvQvCDQvtC90Lgg0L7QsdGA0LDRidCw0Y7RgtGB0Y8g0LrQsNC6INC6INC70L7QutCw0LvRjNC90YvQvCwg0L\/QviBpU0NTSSwgRmlicmUgQ2hhbm5lbCDQuNC70LggTlZNZeKAkW92ZXLigJFGYWJyaWMuIiwKICAgICAgICAgICAgZGV0YWlsczogItCU0LvRjyDQstGL0YHQvtC60L7Qv9GA0L7QuNC30LLQvtC00LjRgtC10LvRjNC90YvRhSDQt9Cw0LTQsNGHOiDQsdCw0LfRiyDQtNCw0L3QvdGL0YUsINC60LvQsNGB0YLQtdGA0Ysg0LLQuNGA0YLRg9Cw0LvQuNC30LDRhtC40LguIiwKICAgICAgICAgICAgaWNvbjogX2pzeChJQ09OUy5EYXRhYmFzZSwgeyBjbGFzc05hbWU6ICJ3LTEwIGgtMTAiIH0pCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlOiAiTkFTICjRhNCw0LnQu9C+0LLQvtC1INGF0YDQsNC90LjQu9C40YnQtSkiLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogItCf0YDQtdC00L7RgdGC0LDQstC70Y\/QtdGCINC00L7RgdGC0YPQvyDQuiDQtNCw0L3QvdGL0Lwg0L\/QviDRhNCw0LnQu9C+0LLRi9C8INC\/0YDQvtGC0L7QutC+0LvQsNC8IE5GUy9TTUIg0LrQsNC6INC6INC+0LHRidC40Lwg0YHQtdGC0LXQstGL0Lwg0L\/QsNC\/0LrQsNC8LiIsCiAgICAgICAgICAgIGRldGFpbHM6ICLQoNC10YHRg9GA0YEg0LTQu9GPINC+0YTQuNGB0L7Qsiwg0L\/RgNC+0LXQutGC0L3Ri9GFINC60L7QvNCw0L3QtCwgVkRJINC4INGF0YDQsNC90LXQvdC40Y8g0L3QtdGB0YLRgNGD0LrRgtGD0YDQuNGA0L7QstCw0L3QvdGL0YUg0YTQsNC50LvQvtCyLiIsCiAgICAgICAgICAgIGljb246IF9qc3goSUNPTlMuTmV0d29yaywgeyBjbGFzc05hbWU6ICJ3LTEwIGgtMTAiIH0pCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlOiAi0J7QsdGK0LXQutGC0L3QvtC1INGF0YDQsNC90LjQu9C40YnQtSAoUzMpIiwKICAgICAgICAgICAgZGVzY3JpcHRpb246ICLQpdGA0LDQvdC40YIg0LTQsNC90L3Ri9C1INCyINCy0LjQtNC1INC+0LHRitC10LrRgtC+0LIgd2l0aCDQvNC10YLQsNC00LDQvdC90YvQvNC4INC4INCz0L7RgNC40LfQvtC90YLQsNC70YzQvdC+INC80LDRgdGI0YLQsNCx0LjRgNGD0LXRgtGB0Y8uIiwKICAgICAgICAgICAgZGV0YWlsczogItCU0LvRjyDQsdGN0LrQsNC\/0L7Qsiwg0LDRgNGF0LjQstC+0LIsINCw0L3QsNC70LjRgtC40YfQtdGB0LrQuNGFINC+0LfRkdGAINC00LDQvdC90YvRhSDQuCDQvtCx0LvQsNGH0L3Ri9GFINGB0LXRgNCy0LjRgdC+0LIuIiwKICAgICAgICAgICAgaWNvbjogX2pzeChJQ09OUy5DbG91ZCwgeyBjbGFzc05hbWU6ICJ3LTEwIGgtMTAiIH0pCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlOiAiSkJPRCDQuCDQtNC40YHQutC+0LLRi9C1INC\/0L7Qu9C60LgiLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogItCd0LDQsdC+0YDRiyDQtNC40YHQutC+0LIsINC\/0L7QtNC60LvRjtGH0LDQtdC80YvQtSDQuiDRgdC10YDQstC10YDQsNC8LCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDRgdC+0LHRgdGC0LLQtdC90L3Ri9GFINC80LDRgdGI0YLQsNCx0LjRgNGD0LXQvNGL0YUg0YHQuNGB0YLQtdC8LiIsCiAgICAgICAgICAgIGRldGFpbHM6ICLQktGL0YHQvtC60L7Qv9C70L7RgtC90YvQtSDRgNC10YjQtdC90LjRjyDQuCDQv9GA0L7Qs9GA0LDQvNC80L3QvuKAkdC+0L\/RgNC10LTQtdC70Y\/QtdC80YvQtSDRgdC40YHRgtC10LzRiyAoU0RTKS4iLAogICAgICAgICAgICBpY29uOiBfanN4KElDT05TLlN0b3JhZ2UsIHsgY2xhc3NOYW1lOiAidy0xMCBoLTEwIiB9KQogICAgICAgIH0KICAgIF07CiAgICByZXR1cm4gKF9qc3goInNlY3Rpb24iLCB7IGNsYXNzTmFtZTogInB5LTI0IGJnLXdoaXRlIiwgY2hpbGRyZW46IF9qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IiwgY2hpbGRyZW46IFtfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJ0ZXh0LWNlbnRlciBtYi0xNiIsIGNoaWxkcmVuOiBbX2pzeCgiaDIiLCB7IGNsYXNzTmFtZTogInRleHQtM3hsIG1kOnRleHQtNHhsIGZvbnQtZXh0cmFib2xkIHRleHQtc2xhdGUtOTAwIG1iLTQiLCBjaGlsZHJlbjogIlx1MDQxQVx1MDQzMFx1MDQzQVx1MDQzOFx1MDQzNSBcdTA0MzFcdTA0NEJcdTA0MzJcdTA0MzBcdTA0NEVcdTA0NDIgXHUwNDQxXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDM1XHUwNDNDXHUwNDRCIFx1MDQ0NVx1MDQ0MFx1MDQzMFx1MDQzRFx1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0RiBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0M0RcdTA0NEJcdTA0NDUiIH0pLCBfanN4KCJkaXYiLCB7IGNsYXNzTmFtZTogInctMjAgaC0xIGJnLWJsdWUtNjAwIG14LWF1dG8iIH0pXSB9KSwgX2pzeCgiZGl2IiwgeyBjbGFzc05hbWU6ICJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00IGdhcC0xMCIsIGNoaWxkcmVuOiB0eXBlcy5tYXAoKHR5cGUsIGlkeCkgPT4gKF9qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAiZ3JvdXAgcmVsYXRpdmUiLCBjaGlsZHJlbjogX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAiYmctc2xhdGUtNTAgcC04IHJvdW5kZWQtM3hsIGgtZnVsbCBib3JkZXIgYm9yZGVyLXNsYXRlLTEwMCBob3ZlcjpiZy13aGl0ZSBob3Zlcjpib3JkZXItYmx1ZS0xMDAgaG92ZXI6c2hhZG93LTJ4bCBob3ZlcjpzaGFkb3ctYmx1ZS01MDAvMTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIiwgY2hpbGRyZW46IFtfanN4KCJkaXYiLCB7IGNsYXNzTmFtZTogInRleHQtYmx1ZS02MDAgbWItNiBwLTQgYmctd2hpdGUgcm91bmRlZC0yeGwgc2hhZG93LXNtIGlubGluZS1ibG9jayIsIGNoaWxkcmVuOiB0eXBlLmljb24gfSksIF9qc3goImgzIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXNsYXRlLTkwMCBtYi00IiwgY2hpbGRyZW46IHR5cGUudGl0bGUgfSksIF9qc3goInAiLCB7IGNsYXNzTmFtZTogInRleHQtc2xhdGUtNjAwIG1iLTYgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQiLCBjaGlsZHJlbjogdHlwZS5kZXNjcmlwdGlvbiB9KSwgX2pzeCgicCIsIHsgY2xhc3NOYW1lOiAidGV4dC1ibHVlLTYwMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIiwgY2hpbGRyZW46IHR5cGUuZGV0YWlscyB9KV0gfSkgfSwgaWR4KSkpIH0pXSB9KSB9KSk7Cn07CmNvbnN0IFVzZUNhc2VzID0gKCkgPT4gewogICAgY29uc3QgY2FzZXMgPSBbCiAgICAgICAgewogICAgICAgICAgICB0aXRsZTogItCS0LjRgNGC0YPQsNC70LjQt9Cw0YbQuNGPINC4INCx0LDQt9GLINC00LDQvdC90YvRhSIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAi0JrRgNC40YLQuNGH0L3RiyDQvdC40LfQutCw0Y8g0LfQsNC00LXRgNC20LrQsCwg0LLRi9GB0L7QutCw0Y8gSU9QUyDQuCDQv9GA0LXQtNGB0LrQsNC30YPQtdC80L7QtSDQstGA0LXQvNGPINC+0YLQutC70LjQutCwINC00LvRjyDQstC40YDRgtGD0LDQu9GM0L3Ri9GFINC80LDRiNC40L0g0Lgg0KHQo9CR0JQuIiwKICAgICAgICAgICAgZGV0YWlsczogIkFsbC1GbGFzaCDQvNCw0YHRgdC40LLRiywg0YHQv9GA0L7QtdC60YLQuNGA0L7QstCw0L3QvdGL0LUg0L\/QvtC0INGC0YDQtdCx0L7QstCw0L3QuNGPINC60L7QvdC60YDQtdGC0L3Ri9GFINCz0LjQv9C10YDQstC40LfQvtGA0L7Qsi4iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlOiAi0KTQsNC50LvQvtCy0L7QtSDRhdGA0LDQvdC40LvQuNGJ0LUg0LTQu9GPINC+0YTQuNGB0L7QsiIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAi0J3QsNC00ZHQttC90YvQuSDQtNC+0YHRgtGD0L8g0Log0L7QsdGJ0LjQvCDQv9Cw0L\/QutCw0LwgTkZTL1NNQiDQtNC70Y8g0YHQvtCy0LzQtdGB0YLQvdC+0Lkg0YDQsNCx0L7RgtGLINGBINC00L7QutGD0LzQtdC90YLQsNC80Lgg0Lgg0LzQtdC00LjQsC4iLAogICAgICAgICAgICBkZXRhaWxzOiAi0JTQu9GPINC\/0YDQvtC10LrRgtC90YvRhSDQutC+0LzQsNC90LQg0L7RgiDQtNC10YHRj9GC0LrQvtCyINC00L4g0YHQvtGC0LXQvSDRgdC+0YLRgNGD0LTQvdC40LrQvtCyLiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgdGl0bGU6ICLQoNC10LfQtdGA0LLQvdC+0LUg0LrQvtC\/0LjRgNC+0LLQsNC90LjQtSDQuCDQsNGA0YXQuNCy0YsiLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogItCT0LvQsNCy0L3Ri9C5INGE0L7QutGD0YEg4oCUINGR0LzQutC+0YHRgtGMLCDQvdCw0LTRkdC20L3QvtGB0YLRjCDQuCDRgdGC0L7QuNC80L7RgdGC0Ywg0YXRgNCw0L3QtdC90LjRjyDQvdCwINC00LvQuNGC0LXQu9GM0L3Ri9GFINGB0YDQvtC60LDRhS4iLAogICAgICAgICAgICBkZXRhaWxzOiAi0JrQvtC80LHQuNC90LDRhtC40LggTkFTLCDQvtCx0YrQtdC60YLQvdC+0LPQviDRhdGA0LDQvdC40LvQuNGJ0LAg0LggwqvQs9C70YPQsdC+0LrQuNGFwrsg0YPRgNC+0LLQvdC10Lkg0YXRgNCw0L3QtdC90LjRjy4iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlOiAi0JLQuNC00LXQvtC90LDQsdC70Y7QtNC10L3QuNC1INC4INC80LXQtNC40LDQutC+0L3RgtC10L3RgiIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAi0KHRgtCw0LHQuNC70YzQvdCw0Y8g0L\/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdCw0Y8g0LfQsNC\/0LjRgdGMINC4INCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0L3QsNGA0LDRidC40LLQsNGC0Ywg0ZHQvNC60L7RgdGC0Ywg0LHQtdC3INC+0YHRgtCw0L3QvtCy0LrQuCDRgdC10YDQstC40YHQvtCyLiIsCiAgICAgICAgICAgIGRldGFpbHM6ICLQnNCw0YHRiNGC0LDQsdC40YDRg9C10LzRi9C1IE5BUy3RgNC10YjQtdC90LjRjyDQtNC70Y8g0LHQvtC70YzRiNC40YUg0LzQsNGB0YHQuNCy0L7QsiDQstC40LTQtdC+LiIKICAgICAgICB9CiAgICBdOwogICAgcmV0dXJuIChfanN4KCJzZWN0aW9uIiwgeyBjbGFzc05hbWU6ICJweS0yNCBiZy1zbGF0ZS01MCBib3JkZXIteSBib3JkZXItc2xhdGUtMTAwIiwgY2hpbGRyZW46IF9qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogIm1heC13LTd4bCBteC1hdXRvIHB4LTQgc206cHgtNiBsZzpweC04IiwgY2hpbGRyZW46IFtfanN4KCJoMiIsIHsgY2xhc3NOYW1lOiAidGV4dC0zeGwgbWQ6dGV4dC00eGwgZm9udC1leHRyYWJvbGQgdGV4dC1zbGF0ZS05MDAgbWItMTYgdGV4dC1jZW50ZXIiLCBjaGlsZHJlbjogIlx1MDQxM1x1MDQzNFx1MDQzNSBcdTA0MzhcdTA0NDFcdTA0M0ZcdTA0M0VcdTA0M0JcdTA0NENcdTA0MzdcdTA0NDNcdTA0NEVcdTA0NDJcdTA0NDFcdTA0NEYgXHUwNDQxXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDM1XHUwNDNDXHUwNDRCIFx1MDQ0NVx1MDQ0MFx1MDQzMFx1MDQzRFx1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0RiBcdTA0MzRcdTA0MzBcdTA0M0RcdTA0M0RcdTA0NEJcdTA0NDUiIH0pLCBfanN4KCJkaXYiLCB7IGNsYXNzTmFtZTogImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTgiLCBjaGlsZHJlbjogY2FzZXMubWFwKChjLCBpZHgpID0+IChfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJiZy13aGl0ZSBwLTEwIHJvdW5kZWQtM3hsIGJvcmRlciBib3JkZXItc2xhdGUtMjAwIHNoYWRvdy1zbSBmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBob3Zlcjp0cmFuc2xhdGUteS1bLTRweF0gdHJhbnNpdGlvbi10cmFuc2Zvcm0iLCBjaGlsZHJlbjogW19qc3hzKCJkaXYiLCB7IGNoaWxkcmVuOiBbX2pzeCgiaDMiLCB7IGNsYXNzTmFtZTogInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LXNsYXRlLTkwMCBtYi00IiwgY2hpbGRyZW46IGMudGl0bGUgfSksIF9qc3goInAiLCB7IGNsYXNzTmFtZTogInRleHQtc2xhdGUtNjAwIG1iLTYgbGVhZGluZy1yZWxheGVkIiwgY2hpbGRyZW46IGMuZGVzY3JpcHRpb24gfSldIH0pLCBfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJiZy1ibHVlLTUwIHAtNCByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItYmx1ZS0xMDAgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0zIiwgY2hpbGRyZW46IFtfanN4KElDT05TLkNoZWNrLCB7IGNsYXNzTmFtZTogInctNSBoLTUgdGV4dC1ibHVlLTYwMCIgfSksIF9qc3goInAiLCB7IGNsYXNzTmFtZTogInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ibHVlLTgwMCIsIGNoaWxkcmVuOiBjLmRldGFpbHMgfSldIH0pXSB9LCBpZHgpKSkgfSldIH0pIH0pKTsKfTsKY29uc3QgUGFyYW1ldGVycyA9ICgpID0+IHsKICAgIGNvbnN0IHBhcmFtcyA9IFsKICAgICAgICB7IHRpdGxlOiAi0J3QsNCz0YDRg9C30LrQsCDQuCDQv9GA0L7RhNC40LvRjCDQtNC+0YHRgtGD0L\/QsCIsIGRlc2NyaXB0aW9uOiAi0J\/RgNC10L7QsdC70LDQtNCw0LXRgiDQu9C4INGB0LvRg9GH0LDQudC90YvQuSDQuNC70Lgg0L\/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdGL0Lkg0LTQvtGB0YLRg9C\/LCDQutCw0LrQuNC1INGC0YDQtdCx0L7QstCw0L3QuNGPINC6IElPUFMuIiB9LAogICAgICAgIHsgdGl0bGU6ICLQotC10LrRg9GJ0LDRjyDRkdC80LrQvtGB0YLRjCDQuCDRgNC+0YHRgiAoM+KAkzUg0LvQtdGCKSIsIGRlc2NyaXB0aW9uOiAi0KPRh9GR0YIg0L\/RgNC+0LPQvdC+0LfQuNGA0YPQtdC80L7Qs9C+INGA0L7RgdGC0LAsINGH0YLQvtCx0Ysg0LjQt9Cx0LXQttCw0YLRjCDQsdGL0YHRgtGA0L7Qs9C+INC\/0LXRgNC10L\/QvtC70L3QtdC90LjRjy4iIH0sCiAgICAgICAgeyB0aXRsZTogItCf0YDQvtC40LfQstC+0LTQuNGC0LXQu9GM0L3QvtGB0YLRjCIsIGRlc2NyaXB0aW9uOiAiSU9QUywg0L\/RgNC+0L\/Rg9GB0LrQvdCw0Y8g0YHQv9C+0YHQvtCx0L3QvtGB0YLRjCDQuCDQt9Cw0LTQtdGA0LbQutCwIChMYXRlbmN5KSDQtNC70Y8g0LrRgNC40YLQuNGH0L3Ri9GFINGB0LjRgdGC0LXQvC4iIH0sCiAgICAgICAgeyB0aXRsZTogItCi0LjQv9GLINC90L7RgdC40YLQtdC70LXQuSIsIGRlc2NyaXB0aW9uOiAi0JrQvtC80LHQuNC90LDRhtC40Y8gU1NEL05WTWUg0LTQu9GPINCz0L7RgNGP0YfQuNGFINC4IEhERCDQtNC70Y8g0YLRkdC\/0LvRi9GFINC4INGF0L7Qu9C+0LTQvdGL0YUg0LTQsNC90L3Ri9GFLiIgfSwKICAgICAgICB7IHRpdGxlOiAi0J7RgtC60LDQt9C+0YPRgdGC0L7QudGH0LjQstC+0YHRgtGMIiwgZGVzY3JpcHRpb246ICJSQUlELCDRgNC10L\/Qu9C40LrQsNGG0LjRjywg0LrQu9Cw0YHRgtC10YDRiyDQuCDQt9Cw0YnQuNGC0LAg0LTQsNC90L3Ri9GFLiIgfSwKICAgICAgICB7IHRpdGxlOiAi0JzQsNGB0YjRgtCw0LHQuNGA0YPQtdC80L7RgdGC0YwiLCBkZXNjcmlwdGlvbjogItCh0L7QstC80LXRgdGC0LjQvNC+0YHRgtGMINGBINCz0LjQv9C10YDQstC40LfQvtGA0LDQvNC4LCDQntChINC4INC\/0YDQuNC70L7QttC10L3QuNGP0LzQuC4iIH0sCiAgICAgICAgeyB0aXRsZTogItCR0Y7QtNC20LXRgiDQuCBUQ08iLCBkZXNjcmlwdGlvbjogItCj0YfRkdGCINC70LjRhtC10L3Qt9C40LksINGB0LXRgNCy0LjRgdCwLCDRgNCw0YHRiNC40YDQtdC90LjQuSDQuCDRjdC90LXRgNCz0L7Qv9C+0YLRgNC10LHQu9C10L3QuNGPLiIgfQogICAgXTsKICAgIHJldHVybiAoX2pzeCgic2VjdGlvbiIsIHsgY2xhc3NOYW1lOiAicHktMjQgYmctd2hpdGUgb3ZlcmZsb3ctaGlkZGVuIiwgY2hpbGRyZW46IF9qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAibWF4LXctN3hsIG14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LTgiLCBjaGlsZHJlbjogX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMTIgZ2FwLTE2IGl0ZW1zLXN0YXJ0IiwgY2hpbGRyZW46IFtfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJsZzpjb2wtc3Bhbi01IiwgY2hpbGRyZW46IFtfanN4KCJoMiIsIHsgY2xhc3NOYW1lOiAidGV4dC00eGwgZm9udC1leHRyYWJvbGQgdGV4dC1zbGF0ZS05MDAgbWItNiIsIGNoaWxkcmVuOiAiXHUwNDFBXHUwNDNCXHUwNDRFXHUwNDQ3XHUwNDM1XHUwNDMyXHUwNDRCXHUwNDM1IFx1MDQzRlx1MDQzMFx1MDQ0MFx1MDQzMFx1MDQzQ1x1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQ0QiBcdTA0M0ZcdTA0NDBcdTA0MzggXHUwNDMyXHUwNDRCXHUwNDMxXHUwNDNFXHUwNDQwXHUwNDM1IFx1MDQ0MVx1MDQzOFx1MDQ0MVx1MDQ0Mlx1MDQzNVx1MDQzQ1x1MDQ0QiBcdTA0NDVcdTA0NDBcdTA0MzBcdTA0M0RcdTA0MzVcdTA0M0RcdTA0MzhcdTA0NEYiIH0pLCBfanN4KCJwIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LWxnIHRleHQtc2xhdGUtNjAwIG1iLTggbGVhZGluZy1yZWxheGVkIiwgY2hpbGRyZW46ICJcdTA0MUZcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzQgXHUwNDMyXHUwNDRCXHUwNDMxXHUwNDNFXHUwNDQwXHUwNDNFXHUwNDNDIFx1MDQzQ1x1MDQzMFx1MDQ0MVx1MDQ0MVx1MDQzOFx1MDQzMlx1MDQzMCBcdTA0MzhcdTA0M0JcdTA0MzggXHUwNDNGXHUwNDNCXHUwNDMwXHUwNDQyXHUwNDQ0XHUwNDNFXHUwNDQwXHUwNDNDXHUwNDRCIFx1MDQ0NVx1MDQ0MFx1MDQzMFx1MDQzRFx1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0RiBcdTA0MzhcdTA0M0NcdTA0MzVcdTA0MzVcdTA0NDIgXHUwNDQxXHUwNDNDXHUwNDRCXHUwNDQxXHUwNDNCIFx1MDQzRlx1MDQ0MFx1MDQzRVx1MDQzOVx1MDQ0Mlx1MDQzOFx1MDQ0MVx1MDQ0QyBcdTA0M0ZcdTA0M0UgXHUwNDQxXHUwNDNCXHUwNDM1XHUwNDM0XHUwNDQzXHUwNDRFXHUwNDQ5XHUwNDM4XHUwNDNDIFx1MDQzRlx1MDQzMFx1MDQ0MFx1MDQzMFx1MDQzQ1x1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQzQyBcdTIwMTQgXHUwNDREXHUwNDQyXHUwNDNFIFx1MDQzRlx1MDQzRVx1MDQzQ1x1MDQzRVx1MDQzNlx1MDQzNVx1MDQ0MiBcdTA0MzhcdTA0MzdcdTA0MzFcdTA0MzVcdTA0MzZcdTA0MzBcdTA0NDJcdTA0NEMgXHUwNDQyXHUwNDM4XHUwNDNGXHUwNDM4XHUwNDQ3XHUwNDNEXHUwNDRCXHUwNDQ1IFx1MDQzRVx1MDQ0OFx1MDQzOFx1MDQzMVx1MDQzRVx1MDQzQSBcdTA0MzggXHUwNDNGXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDQwXHUwNDMwXHUwNDQxXHUwNDQ1XHUwNDNFXHUwNDM0XHUwNDMwIFx1MDQzMVx1MDQ0RVx1MDQzNFx1MDQzNlx1MDQzNVx1MDQ0Mlx1MDQzMC4iIH0pLCBfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJwLTggYmctYmx1ZS02MDAgcm91bmRlZC0zeGwgdGV4dC13aGl0ZSBzaGFkb3ctMnhsIHNoYWRvdy1ibHVlLTUwMC8yMCIsIGNoaWxkcmVuOiBbX2pzeCgiaDQiLCB7IGNsYXNzTmFtZTogInRleHQteGwgZm9udC1ib2xkIG1iLTQiLCBjaGlsZHJlbjogIlx1MDQxMVx1MDQzNVx1MDQ0MVx1MDQzRlx1MDQzQlx1MDQzMFx1MDQ0Mlx1MDQzRFx1MDQzMFx1MDQ0RiBcdTA0M0FcdTA0M0VcdTA0M0RcdTA0NDFcdTA0NDNcdTA0M0JcdTA0NENcdTA0NDJcdTA0MzBcdTA0NDZcdTA0MzhcdTA0NEYiIH0pLCBfanN4KCJwIiwgeyBjbGFzc05hbWU6ICJtYi02IG9wYWNpdHktOTAiLCBjaGlsZHJlbjogIlx1MDQxQ1x1MDQ0QiBcdTA0M0ZcdTA0M0VcdTA0M0NcdTA0M0VcdTA0MzZcdTA0MzVcdTA0M0MgXHUwNDNGXHUwNDNFXHUwNDM0XHUwNDNFXHUwNDMxXHUwNDQwXHUwNDMwXHUwNDQyXHUwNDRDIFx1MDQzQVx1MDQzRVx1MDQzRFx1MDQ0NFx1MDQzOFx1MDQzM1x1MDQ0M1x1MDQ0MFx1MDQzMFx1MDQ0Nlx1MDQzOFx1MDQ0RSBcdTA0M0RcdTA0MzAgXHUwNDNFXHUwNDQxXHUwNDNEXHUwNDNFXHUwNDMyXHUwNDM1IFx1MDQzMlx1MDQzMFx1MDQ0OFx1MDQzOFx1MDQ0NSBcdTA0NDBcdTA0MzVcdTA0MzBcdTA0M0JcdTA0NENcdTA0M0RcdTA0NEJcdTA0NDUgXHUwNDNEXHUwNDMwXHUwNDMzXHUwNDQwXHUwNDQzXHUwNDM3XHUwNDNFXHUwNDNBLiIgfSksIF9qc3goImEiLCB7IGhyZWY6IENPTlRBQ1RfRk9STV9VUkwsIHRhcmdldDogIl9ibGFuayIsIHJlbDogIm5vb3BlbmVyIG5vcmVmZXJyZXIiLCBjbGFzc05hbWU6ICJpbmxpbmUtYmxvY2sgcHgtNiBweS0zIGJnLXdoaXRlIHRleHQtYmx1ZS02MDAgZm9udC1ib2xkIHJvdW5kZWQteGwgaG92ZXI6Ymctc2xhdGUtMTAwIHRyYW5zaXRpb24tY29sb3JzIiwgY2hpbGRyZW46ICJcdTA0MjFcdTA0MzJcdTA0NEZcdTA0MzdcdTA0MzBcdTA0NDJcdTA0NENcdTA0NDFcdTA0NEYgXHUwNDQxIFx1MDQzOFx1MDQzRFx1MDQzNlx1MDQzNVx1MDQzRFx1MDQzNVx1MDQ0MFx1MDQzRVx1MDQzQyIgfSldIH0pXSB9KSwgX2pzeCgiZGl2IiwgeyBjbGFzc05hbWU6ICJsZzpjb2wtc3Bhbi03IHNwYWNlLXktNCIsIGNoaWxkcmVuOiBwYXJhbXMubWFwKChwLCBpZHgpID0+IChfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJmbGV4IGl0ZW1zLWNlbnRlciBwLTYgYmctc2xhdGUtNTAgcm91bmRlZC0yeGwgYm9yZGVyIGJvcmRlci1zbGF0ZS0xMDAgaG92ZXI6Ym9yZGVyLWJsdWUtMjAwIHRyYW5zaXRpb24tY29sb3JzIiwgY2hpbGRyZW46IFtfanN4KCJkaXYiLCB7IGNsYXNzTmFtZTogInctMTAgaC0xMCByb3VuZGVkLWZ1bGwgYmctYmx1ZS0xMDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibHVlLTYwMCBmb250LWJvbGQgZmxleC1zaHJpbmstMCBtci02IiwgY2hpbGRyZW46IGlkeCArIDEgfSksIF9qc3hzKCJkaXYiLCB7IGNoaWxkcmVuOiBbX2pzeCgiaDQiLCB7IGNsYXNzTmFtZTogImZvbnQtYm9sZCB0ZXh0LXNsYXRlLTkwMCIsIGNoaWxkcmVuOiBwLnRpdGxlIH0pLCBfanN4KCJwIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LXNtIHRleHQtc2xhdGUtNjAwIG10LTEiLCBjaGlsZHJlbjogcC5kZXNjcmlwdGlvbiB9KV0gfSldIH0sIGlkeCkpKSB9KV0gfSkgfSkgfSkpOwp9Owpjb25zdCBDb25maWd1cmF0aW9ucyA9ICgpID0+IHsKICAgIGNvbnN0IGNvbmZpZ3MgPSBbCiAgICAgICAgewogICAgICAgICAgICB0aXRsZTogIlNBTuKAkdC80LDRgWPQuNCyINC00LvRjyDQstC40YDRgtGD0LDQu9C40LfQsNGG0LjQuCIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAi0JHQu9C+0YfQvdC+0LUg0YXRgNCw0L3QuNC70LjRidC1INGBINC\/0L7QtNC60LvRjtGH0LXQvdC40LXQvCDQv9C+IEZpYnJlIENoYW5uZWwg0LjQu9C4IGlTQ1NJLiIsCiAgICAgICAgICAgIHRhcmdldDogItCa0LvQsNGB0YLQtdGA0Ysg0L3QsCDQtNC10YHRj9GC0LrQuOKAk9GB0L7RgtC90Lgg0LLQuNGA0YLRg9Cw0LvRjNC90YvRhSDQvNCw0YjQuNC9INC4INCy0YvRgdC+0LrQvtC90LDQs9GA0YPQttC10L3QvdGL0LUg0KHQo9CR0JQuIiwKICAgICAgICAgICAgYmVuZWZpdHM6ICLQmtC+0LzQsdC40L3QsNGG0LjRjyBTU0QvTlZNZSDQtNC70Y8g0LPQvtGA0Y\/Rh9C40YUg0LTQsNC90L3Ri9GFINC4IEhERCDQtNC70Y8g0YXQvtC70L7QtNC90YvRhS4iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlOiAi0JzQsNGB0YjRgtCw0LHQuNGA0YPQtdC80YvQuSBOQVMiLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogItCk0LDQudC70L7QstC+0LUg0YXRgNCw0L3QuNC70LjRidC1INGBINC00L7RgdGC0YPQv9C+0Lwg0L\/QviBORlMvU01CINC00LvRjyDQvtCx0YnQuNGFINC\/0LDQv9C+0LouIiwKICAgICAgICAgICAgdGFyZ2V0OiAi0J7RhNC40YHQvdGL0LUg0YDQtdGB0YPRgNGB0YssINC\/0YDQvtC10LrRgtC90YvQtSDQutC+0LzQsNC90LTRiyDQuCDRgdC40YHRgtC10LzRiyDQstC40LTQtdC+0L3QsNCx0LvRjtC00LXQvdC40Y8uIiwKICAgICAgICAgICAgYmVuZWZpdHM6ICLQo9Cy0LXQu9C40YfQtdC90LjQtSDRkdC80LrQvtGB0YLQuCDQuCDQv9GA0L7QuNC30LLQvtC00LjRgtC10LvRjNC90L7RgdGC0Lgg0L\/QviDQvNC10YDQtSDRgNC+0YHRgtCwINC00LDQvdC90YvRhS4iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIHRpdGxlOiAi0J7QsdGK0LXQutGC0L3QvtC1INGF0YDQsNC90LjQu9C40YnQtSAoUzMpIiwKICAgICAgICAgICAgZGVzY3JpcHRpb246ICLQoNC10YjQtdC90LjQtSwg0LrQvtGC0L7RgNC+0LUg0LPQvtGA0LjQt9C+0L3RgtCw0LvRjNC90L4g0LzQsNGB0YjRgtCw0LHQuNGA0YPQtdGC0YHRjyDQv9C+INC80LXRgNC1INGA0L7RgdGC0LAg0L7QsdGK0ZHQvNC+0LIuIiwKICAgICAgICAgICAgdGFyZ2V0OiAi0KDQtdC30LXRgNCy0L3QvtC1INC60L7Qv9C40YDQvtCy0LDQvdC40LUg0Lgg0LTQvtC70LPQvtGB0YDQvtGH0L3QvtC1INGF0YDQsNC90LXQvdC40LUg0LDRgNGF0LjQstC+0LIuIiwKICAgICAgICAgICAgYmVuZWZpdHM6ICLQmtC+0L3RgtGA0L7Qu9C40YDRg9C10LzQsNGPINC4INC\/0YDQtdC00YHQutCw0LfRg9C10LzQsNGPINGB0YLQvtC40LzQvtGB0YLRjCDQt9CwINGC0LXRgNCw0LHQsNC50YIuIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICB0aXRsZTogIkpCT0TigJHRgNC10YjQtdC90LjQtSDQstGL0YHQvtC60L7QuSDQv9C70L7RgtC90L7RgdGC0LgiLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogItCU0LjRgdC60L7QstGL0LUg0L\/QvtC70LrQuCDRgSDQsdC+0LvRjNGI0LjQvCDRh9C40YHQu9C+0LwgSERELCDQv9C+0LTQutC70Y7Rh9Cw0LXQvNGL0LUg0Log0YHQtdGA0LLQtdGA0LDQvC4iLAogICAgICAgICAgICB0YXJnZXQ6ICLQmtCw0YHRgtC+0LzQvdGL0LUg0L\/RgNC+0LPRgNCw0LzQvNC90L7igJHQvtC\/0YDQtdC00LXQu9GP0LXQvNGL0LUg0YXRgNCw0L3QuNC70LjRidCwIChTRFMpINC4INC00LXRiNGR0LLRi9C1INCw0YDRhdC40LLRiy4iLAogICAgICAgICAgICBiZW5lZml0czogItCa0LvRjtGH0LXQstC+0Lkg0L\/QsNGA0LDQvNC10YLRgCDigJQg0LzQuNC90LjQvNCw0LvRjNC90LDRjyDRgdGC0L7QuNC80L7RgdGC0Ywg0LfQsCDRgtC10YDQsNCx0LDQudGCLiIKICAgICAgICB9CiAgICBdOwogICAgcmV0dXJuIChfanN4KCJzZWN0aW9uIiwgeyBjbGFzc05hbWU6ICJweS0yNCBiZy1zbGF0ZS05NTAgdGV4dC13aGl0ZSByZWxhdGl2ZSIsIGNoaWxkcmVuOiBfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCIsIGNoaWxkcmVuOiBbX2pzeCgiaDIiLCB7IGNsYXNzTmFtZTogInRleHQtM3hsIG1kOnRleHQtNHhsIGZvbnQtZXh0cmFib2xkIG1iLTE2IHRleHQtY2VudGVyIHRleHQtd2hpdGUiLCBjaGlsZHJlbjogIlx1MDQyMlx1MDQzOFx1MDQzRlx1MDQzRVx1MDQzMlx1MDQ0Qlx1MDQzNSBcdTA0M0ZcdTA0M0VcdTA0MzRcdTA0NDVcdTA0M0VcdTA0MzRcdTA0NEIgXHUwNDNBIFx1MDQzRlx1MDQzRVx1MDQ0MVx1MDQ0Mlx1MDQ0MFx1MDQzRVx1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0RSBcdTA0NDVcdTA0NDBcdTA0MzBcdTA0M0RcdTA0MzhcdTA0M0JcdTA0MzhcdTA0NDlcdTA0MzAiIH0pLCBfanN4KCJkaXYiLCB7IGNsYXNzTmFtZTogImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTgiLCBjaGlsZHJlbjogY29uZmlncy5tYXAoKGMsIGlkeCkgPT4gKF9qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogImJnLXNsYXRlLTkwMCBib3JkZXIgYm9yZGVyLXNsYXRlLTgwMCBwLTEwIHJvdW5kZWQtM3hsIGhvdmVyOmJvcmRlci1ibHVlLTUwMC81MCB0cmFuc2l0aW9uLWNvbG9ycyIsIGNoaWxkcmVuOiBbX2pzeCgiaDMiLCB7IGNsYXNzTmFtZTogInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwIG1iLTYiLCBjaGlsZHJlbjogYy50aXRsZSB9KSwgX2pzeCgicCIsIHsgY2xhc3NOYW1lOiAidGV4dC1zbGF0ZS00MDAgbWItOCBsZWFkaW5nLXJlbGF4ZWQgaXRhbGljIGJvcmRlci1sLTIgYm9yZGVyLXNsYXRlLTcwMCBwbC00IiwgY2hpbGRyZW46IGMuZGVzY3JpcHRpb24gfSksIF9qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogInNwYWNlLXktNCIsIGNoaWxkcmVuOiBbX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgYm9yZGVyLWIgYm9yZGVyLXNsYXRlLTgwMCBwYi00IiwgY2hpbGRyZW46IFtfanN4KCJzcGFuIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LXNsYXRlLTUwMCB0ZXh0LXNtIHVwcGVyY2FzZSBmb250LWJvbGQgdHJhY2tpbmctd2lkZXN0IiwgY2hpbGRyZW46ICJcdTA0MjZcdTA0MzVcdTA0M0JcdTA0NEMiIH0pLCBfanN4KCJzcGFuIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LXNsYXRlLTIwMCB0ZXh0LXJpZ2h0IG1heC13LVsyMDBweF0gdGV4dC1zbSIsIGNoaWxkcmVuOiBjLnRhcmdldCB9KV0gfSksIF9qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLXN0YXJ0IHB0LTIiLCBjaGlsZHJlbjogW19qc3goInNwYW4iLCB7IGNsYXNzTmFtZTogInRleHQtc2xhdGUtNTAwIHRleHQtc20gdXBwZXJjYXNlIGZvbnQtYm9sZCB0cmFja2luZy13aWRlc3QiLCBjaGlsZHJlbjogIlx1MDQxRlx1MDQzQlx1MDQ0RVx1MDQ0MSIgfSksIF9qc3goInNwYW4iLCB7IGNsYXNzTmFtZTogInRleHQtc2xhdGUtMjAwIHRleHQtcmlnaHQgbWF4LXctWzIwMHB4XSB0ZXh0LXNtIiwgY2hpbGRyZW46IGMuYmVuZWZpdHMgfSldIH0pXSB9KV0gfSwgaWR4KSkpIH0pXSB9KSB9KSk7Cn07CmNvbnN0IE1pc3Rha2VzID0gKCkgPT4gewogICAgY29uc3QgbWlzdGFrZXMgPSBbCiAgICAgICAgeyB0aXRsZTogItCd0LXQtNC+0L7RhtC10L3QutCwINGA0L7RgdGC0LAg0L7QsdGK0ZHQvNC+0LIiLCBkZXNjcmlwdGlvbjogItCl0YDQsNC90LjQu9C40YnQtSDQsdGL0YHRgtGA0L4g0LfQsNC\/0L7Qu9C90Y\/QtdGC0YHRjywg0L\/RgNC40YXQvtC00LjRgtGB0Y8g0YHRgNC+0YfQvdC+INGA0LDRgdGI0LjRgNGP0YLRjCDRgdC40YHRgtC10LzRgyDQuCDQstGL0YXQvtC00LjRgtGMINC30LAg0YDQsNC80LrQuCDQsdGO0LTQttC10YLQsC4iIH0sCiAgICAgICAgeyB0aXRsZTogItCS0YvQsdC+0YAg0YLQvtC70YzQutC+INC\/0L4g0ZHQvNC60L7RgdGC0LgiLCBkZXNjcmlwdGlvbjogItCY0LPQvdC+0YDQuNGA0L7QstCw0L3QuNC1INC\/0YDQvtC40LfQstC+0LTQuNGC0LXQu9GM0L3QvtGB0YLQuCDQstC10LTQtdGCINC6INC\/0LDQtNC10L3QuNGOIElPUFMg0Lgg0YDQvtGB0YLRgyDQt9Cw0LTQtdGA0LbQtdC6INC00LvRjyDQodCj0JHQlC4iIH0sCiAgICAgICAgeyB0aXRsZTogItCe0YLRgdGD0YLRgdGC0LLQuNC1INGB0YLRgNCw0YLQtdCz0LjQuCDQt9Cw0YnQuNGC0YsiLCBkZXNjcmlwdGlvbjogItCR0LXQtyDRgdGF0LXQvNGLINCx0Y3QutCw0L\/QsCDQuCDRgNC10L\/Qu9C40LrQsNGG0LjQuCDRgNCw0YHRgtGD0YIg0YDQuNGB0LrQuCDQv9GA0L7RgdGC0L7QtdCyINC4INGE0LDRgtCw0LvRjNC90YvRhSDQv9C+0YLQtdGA0Ywg0LTQsNC90L3Ri9GFLiIgfSwKICAgICAgICB7IHRpdGxlOiAi0J\/RgNC40LLRj9C30LrQsCDQuiDQvtC00L3QvtC80YMg0LLQtdC90LTQvtGA0YMiLCBkZXNjcmlwdGlvbjogItCX0LDQutGA0YvRgtGL0LUg0L\/Qu9Cw0YLRhNC+0YDQvNGLINGD0YHQu9C+0LbQvdGP0Y7RgiDQsNC\/0LPRgNC10LnQtNGLLCDQvNC40LPRgNCw0YbQuNC4INC4INC\/0LXRgNC10LPQvtCy0L7RgNGLINC\/0L4g0YHRgtC+0LjQvNC+0YHRgtC4INC70LjRhtC10L3Qt9C40LkuIiB9CiAgICBdOwogICAgcmV0dXJuIChfanN4KCJzZWN0aW9uIiwgeyBjbGFzc05hbWU6ICJweS0yNCBiZy13aGl0ZSIsIGNoaWxkcmVuOiBfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCIsIGNoaWxkcmVuOiBbX2pzeCgiaDIiLCB7IGNsYXNzTmFtZTogInRleHQtM3hsIG1kOnRleHQtNHhsIGZvbnQtZXh0cmFib2xkIHRleHQtc2xhdGUtOTAwIG1iLTE2IHRleHQtY2VudGVyIiwgY2hpbGRyZW46ICJcdTA0MjBcdTA0MzBcdTA0NDFcdTA0M0ZcdTA0NDBcdTA0M0VcdTA0NDFcdTA0NDJcdTA0NDBcdTA0MzBcdTA0M0RcdTA0NTFcdTA0M0RcdTA0M0RcdTA0NEJcdTA0MzUgXHUwNDNFXHUwNDQ4XHUwNDM4XHUwNDMxXHUwNDNBXHUwNDM4IFx1MDQzRlx1MDQ0MFx1MDQzOCBcdTA0MzJcdTA0NEJcdTA0MzFcdTA0M0VcdTA0NDBcdTA0MzUiIH0pLCBfanN4KCJkaXYiLCB7IGNsYXNzTmFtZTogImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTgiLCBjaGlsZHJlbjogbWlzdGFrZXMubWFwKChtLCBpZHgpID0+IChfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJmbGV4IGl0ZW1zLXN0YXJ0IHNwYWNlLXgtNiBwLTggYmctcmVkLTUwLzUwIHJvdW5kZWQtM3hsIGJvcmRlciBib3JkZXItcmVkLTEwMCIsIGNoaWxkcmVuOiBbX2pzeCgiZGl2IiwgeyBjbGFzc05hbWU6ICJmbGV4LXNocmluay0wIGJnLXJlZC0xMDAgcC0zIHJvdW5kZWQtMnhsIiwgY2hpbGRyZW46IF9qc3goSUNPTlMuV2FybmluZywgeyBjbGFzc05hbWU6ICJ3LTggaC04IHRleHQtcmVkLTYwMCIgfSkgfSksIF9qc3hzKCJkaXYiLCB7IGNoaWxkcmVuOiBbX2pzeHMoImgzIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXNsYXRlLTkwMCBtYi0yIiwgY2hpbGRyZW46IFsiXHUwNDFFXHUwNDQ4XHUwNDM4XHUwNDMxXHUwNDNBXHUwNDMwICIsIGlkeCArIDEsICI6ICIsIG0udGl0bGVdIH0pLCBfanN4KCJwIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LXNsYXRlLTYwMCB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCIsIGNoaWxkcmVuOiBtLmRlc2NyaXB0aW9uIH0pXSB9KV0gfSwgaWR4KSkpIH0pXSB9KSB9KSk7Cn07CmNvbnN0IFNvbHV0aW9ucyA9ICgpID0+IChfanN4KCJzZWN0aW9uIiwgeyBjbGFzc05hbWU6ICJweS0yNCBiZy1zbGF0ZS01MCIsIGNoaWxkcmVuOiBfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJtYXgtdy03eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCIsIGNoaWxkcmVuOiBbX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAibWF4LXctM3hsIG14LWF1dG8gdGV4dC1jZW50ZXIgbWItMTYiLCBjaGlsZHJlbjogW19qc3goImgyIiwgeyBjbGFzc05hbWU6ICJ0ZXh0LTN4bCBtZDp0ZXh0LTR4bCBmb250LWV4dHJhYm9sZCB0ZXh0LXNsYXRlLTkwMCBtYi02IiwgY2hpbGRyZW46ICJcdTA0MjEgXHUwNDNBXHUwNDMwXHUwNDNBXHUwNDM4XHUwNDNDXHUwNDM4IFx1MDQ0MVx1MDQzOFx1MDQ0MVx1MDQ0Mlx1MDQzNVx1MDQzQ1x1MDQzMFx1MDQzQ1x1MDQzOCBcdTA0M0NcdTA0NEIgXHUwNDQwXHUwNDMwXHUwNDMxXHUwNDNFXHUwNDQyXHUwNDMwXHUwNDM1XHUwNDNDIiB9KSwgX2pzeCgicCIsIHsgY2xhc3NOYW1lOiAidGV4dC1sZyB0ZXh0LXNsYXRlLTYwMCIsIGNoaWxkcmVuOiAiXHUwNDE4XHUwNDQxXHUwNDNGXHUwNDNFXHUwNDNCXHUwNDRDXHUwNDM3XHUwNDQzXHUwNDM1XHUwNDNDIFx1MDQ0MFx1MDQzNVx1MDQ0OFx1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0RiBcdTA0MzJcdTA0MzVcdTA0MzRcdTA0NDNcdTA0NDlcdTA0MzhcdTA0NDUgXHUwNDNGXHUwNDQwXHUwNDNFXHUwNDM4XHUwNDM3XHUwNDMyXHUwNDNFXHUwNDM0XHUwNDM4XHUwNDQyXHUwNDM1XHUwNDNCXHUwNDM1XHUwNDM5IFNBTlx1MjAxMSwgTkFTXHUyMDExIFx1MDQzOCBcdTA0M0VcdTA0MzFcdTA0NEFcdTA0MzVcdTA0M0FcdTA0NDJcdTA0M0RcdTA0NEJcdTA0NDUgXHUwNDNDXHUwNDMwXHUwNDQxXHUwNDQxXHUwNDM4XHUwNDMyXHUwNDNFXHUwNDMyLiBcdTA0MUFcdTA0M0VcdTA0M0RcdTA0M0FcdTA0NDBcdTA0MzVcdTA0NDJcdTA0M0RcdTA0NEJcdTA0MzUgXHUwNDMxXHUwNDQwXHUwNDM1XHUwNDNEXHUwNDM0XHUwNDRCIFx1MDQ0MVx1MDQzRVx1MDQzM1x1MDQzQlx1MDQzMFx1MDQ0MVx1MDQ0M1x1MDQ0RVx1MDQ0Mlx1MDQ0MVx1MDQ0RiBcdTA0M0ZcdTA0M0VcdTA0MzQgXHUwNDNBXHUwNDMwXHUwNDM2XHUwNDM0XHUwNDQzXHUwNDRFIFx1MDQzN1x1MDQzMFx1MDQzNFx1MDQzMFx1MDQ0N1x1MDQ0MyBcdTA0M0VcdTA0NDJcdTA0MzRcdTA0MzVcdTA0M0JcdTA0NENcdTA0M0RcdTA0M0UuIiB9KV0gfSksIF9qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAiZ3JpZCBncmlkLWNvbHMtMSBzbTpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtNCBnYXAtNiIsIGNoaWxkcmVuOiBbCiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogIlNBTi3QvNCw0YHRgdC40LLRiyIsIGRlc2M6ICLQtNC70Y8g0JHQlCDQuCDQstC40YDRgtGD0LDQu9C40LfQsNGG0LjQuCIgfSwKICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiAiTkFTLdGB0LjRgdGC0LXQvNGLIiwgZGVzYzogItC00LvRjyDRhNCw0LnQu9C+0LIg0Lgg0LzQtdC00LjQsCIgfSwKICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiAi0J7QsdGK0LXQutGC0L3Ri9C1INCh0KXQlCIsIGRlc2M6ICLQtNC70Y8g0LHRjdC60LDQv9C+0LIg0Lgg0LDRgNGF0LjQstC+0LIiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogIkpCT0Qt0L\/Qu9Cw0YLRhNC+0YDQvNGLIiwgZGVzYzogItC00LvRjyDQutCw0YHRgtC+0LzQvdGL0YUg0YDQtdGI0LXQvdC40LkiIH0KICAgICAgICAgICAgICAgIF0ubWFwKChpdGVtLCBpZHgpID0+IChfanN4cygiZGl2IiwgeyBjbGFzc05hbWU6ICJiZy13aGl0ZSBwLTggcm91bmRlZC0zeGwgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAgc2hhZG93LXNtIHRleHQtY2VudGVyIGdyb3VwIGhvdmVyOmJvcmRlci1ibHVlLTUwMCB0cmFuc2l0aW9uLWNvbG9ycyIsIGNoaWxkcmVuOiBbX2pzeCgiZGl2IiwgeyBjbGFzc05hbWU6ICJtYi00IGlubGluZS1ibG9jayBwLTQgYmctc2xhdGUtNTAgcm91bmRlZC0yeGwgdGV4dC1ibHVlLTYwMCBncm91cC1ob3ZlcjpiZy1ibHVlLTYwMCBncm91cC1ob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIiwgY2hpbGRyZW46IF9qc3goSUNPTlMuU3RvcmFnZSwgeyBjbGFzc05hbWU6ICJ3LTggaC04IiB9KSB9KSwgX2pzeCgiaDQiLCB7IGNsYXNzTmFtZTogImZvbnQtYm9sZCB0ZXh0LXNsYXRlLTkwMCBtYi0xIiwgY2hpbGRyZW46IGl0ZW0ubGFiZWwgfSksIF9qc3goInAiLCB7IGNsYXNzTmFtZTogInRleHQtc2xhdGUtNTAwIHRleHQteHMiLCBjaGlsZHJlbjogaXRlbS5kZXNjIH0pXSB9LCBpZHgpKSkgfSldIH0pIH0pKTsKY29uc3QgQ29udGFjdENUQSA9ICgpID0+IChfanN4cygic2VjdGlvbiIsIHsgY2xhc3NOYW1lOiAicmVsYXRpdmUgcHktMjQgYmctYmx1ZS02MDAgdGV4dC13aGl0ZSBvdmVyZmxvdy1oaWRkZW4iLCBjaGlsZHJlbjogW19qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAiYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCB3LVs1MCVdIGgtZnVsbCBiZy1ibHVlLTUwMCBibHVyLVsxMjBweF0gcm91bmRlZC1mdWxsIG9wYWNpdHktNTAgdHJhbnNsYXRlLXgtMS8yIiB9KSwgX2pzeCgiZGl2IiwgeyBjbGFzc05hbWU6ICJtYXgtdy01eGwgbXgtYXV0byBweC00IHNtOnB4LTYgbGc6cHgtOCByZWxhdGl2ZSB6LTEwIiwgY2hpbGRyZW46IF9qc3hzKCJkaXYiLCB7IGNsYXNzTmFtZTogInRleHQtY2VudGVyIiwgY2hpbGRyZW46IFtfanN4KCJoMiIsIHsgY2xhc3NOYW1lOiAidGV4dC00eGwgbWQ6dGV4dC01eGwgZm9udC1leHRyYWJvbGQgbWItOCIsIGNoaWxkcmVuOiAiXHUwNDFBXHUwNDMwXHUwNDNBIFx1MDQzQ1x1MDQ0QiBcdTA0M0ZcdTA0M0VcdTA0M0NcdTA0M0VcdTA0MzNcdTA0MzBcdTA0MzVcdTA0M0MgXHUwNDQxIFx1MDQzRlx1MDQ0MFx1MDQzRVx1MDQzNVx1MDQzQVx1MDQ0Mlx1MDQzMFx1MDQzQ1x1MDQzOCBcdTA0M0ZcdTA0M0UgXHUwNDQ1XHUwNDQwXHUwNDMwXHUwNDNEXHUwNDM4XHUwNDNCXHUwNDM4XHUwNDQ5XHUwNDQzIiB9KSwgX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAic3BhY2UteS02IHRleHQteGwgdGV4dC1ibHVlLTEwMCBtYXgtdy0zeGwgbXgtYXV0byBtYi0xNiIsIGNoaWxkcmVuOiBbX2pzeCgicCIsIHsgY2hpbGRyZW46ICJcdTA0MUNcdTA0NEIgXHUwNDNGXHUwNDNFXHUwNDNDXHUwNDNFXHUwNDMzXHUwNDMwXHUwNDM1XHUwNDNDIFx1MDQzRVx1MDQ0Nlx1MDQzNVx1MDQzRFx1MDQzOFx1MDQ0Mlx1MDQ0QyBcdTA0NDJcdTA0MzVcdTA0M0FcdTA0NDNcdTA0NDlcdTA0NDNcdTA0NEUgXHUwNDNEXHUwNDMwXHUwNDMzXHUwNDQwXHUwNDQzXHUwNDM3XHUwNDNBXHUwNDQzLCBcdTA0NDFcdTA0M0ZcdTA0NDBcdTA0M0VcdTA0MzVcdTA0M0FcdTA0NDJcdTA0MzhcdTA0NDBcdTA0M0VcdTA0MzJcdTA0MzBcdTA0NDJcdTA0NEMgXHUwNDQ2XHUwNDM1XHUwNDNCXHUwNDM1XHUwNDMyXHUwNDQzXHUwNDRFIFx1MDQzMFx1MDQ0MFx1MDQ0NVx1MDQzOFx1MDQ0Mlx1MDQzNVx1MDQzQVx1MDQ0Mlx1MDQ0M1x1MDQ0MFx1MDQ0MyAoU0FOLCBOQVMsIFx1MDQzRVx1MDQzMVx1MDQ0QVx1MDQzNVx1MDQzQVx1MDQ0Mlx1MDQzRFx1MDQzRVx1MDQzNSBcdTA0MzhcdTA0M0JcdTA0MzggXHUwNDMzXHUwNDM4XHUwNDMxXHUwNDQwXHUwNDM4XHUwNDM0KSBcdTA0MzggXHUwNDNGXHUwNDNFXHUwNDM0XHUwNDNFXHUwNDMxXHUwNDQwXHUwNDMwXHUwNDQyXHUwNDRDIFx1MDQzQVx1MDQzRVx1MDQzRFx1MDQ0NFx1MDQzOFx1MDQzM1x1MDQ0M1x1MDQ0MFx1MDQzMFx1MDQ0Nlx1MDQzOFx1MDQzOCBcdTA0M0ZcdTA0M0VcdTA0MzQgXHUwNDMyXHUwNDMwXHUwNDQ4IFx1MDQzMVx1MDQ0RVx1MDQzNFx1MDQzNlx1MDQzNVx1MDQ0Mi4iIH0pLCBfanN4KCJwIiwgeyBjbGFzc05hbWU6ICJiZy1ibHVlLTcwMC81MCBwLTYgcm91bmRlZC0yeGwgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCBmb250LW1lZGl1bSIsIGNoaWxkcmVuOiAiXHUwNDE1XHUwNDQxXHUwNDNCXHUwNDM4IFx1MDQ0MyBcdTA0MzJcdTA0MzBcdTA0NDEgXHUwNDQzXHUwNDM2XHUwNDM1IFx1MDQzNVx1MDQ0MVx1MDQ0Mlx1MDQ0QyBcdTA0NDJcdTA0MzVcdTA0NDVcdTA0M0RcdTA0MzhcdTA0NDdcdTA0MzVcdTA0NDFcdTA0M0FcdTA0M0VcdTA0MzUgXHUwNDM3XHUwNDMwXHUwNDM0XHUwNDMwXHUwNDNEXHUwNDM4XHUwNDM1IFx1MDQzOFx1MDQzQlx1MDQzOCBcdTA0NDJcdTA0MzVcdTA0M0FcdTA0NDNcdTA0NDlcdTA0MzBcdTA0NEYgXHUwNDNBXHUwNDNFXHUwNDNEXHUwNDQ0XHUwNDM4XHUwNDMzXHUwNDQzXHUwNDQwXHUwNDMwXHUwNDQ2XHUwNDM4XHUwNDRGLCBcdTA0M0VcdTA0NDJcdTA0M0ZcdTA0NDBcdTA0MzBcdTA0MzJcdTA0NENcdTA0NDJcdTA0MzUgXHUwNDM1XHUwNDUxIFx1MDQzRFx1MDQzMFx1MDQzQyBcdTIwMTQgXHUwNDNGXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDNCXHUwNDNFXHUwNDM2XHUwNDM4XHUwNDNDIFx1MDQzMlx1MDQzMFx1MDQ0MFx1MDQzOFx1MDQzMFx1MDQzRFx1MDQ0Mlx1MDQ0QiBcdTA0M0NcdTA0M0VcdTA0MzRcdTA0MzVcdTA0NDBcdTA0M0RcdTA0MzhcdTA0MzdcdTA0MzBcdTA0NDZcdTA0MzhcdTA0MzggXHUwNDM4IFx1MDQzRVx1MDQzRlx1MDQ0Mlx1MDQzOFx1MDQzQ1x1MDQzOFx1MDQzN1x1MDQzMFx1MDQ0Nlx1MDQzOFx1MDQzOC4iIH0pXSB9KSwgX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAiZmxleCBmbGV4LWNvbCBzbTpmbGV4LXJvdyBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgZ2FwLTYiLCBjaGlsZHJlbjogW19qc3goImEiLCB7IGhyZWY6IENPTlRBQ1RfRk9STV9VUkwsIHRhcmdldDogIl9ibGFuayIsIHJlbDogIm5vb3BlbmVyIG5vcmVmZXJyZXIiLCBjbGFzc05hbWU6ICJweC0xMiBweS01IGJnLXdoaXRlIHRleHQtYmx1ZS02MDAgZm9udC1leHRyYWJvbGQgcm91bmRlZC0yeGwgc2hhZG93LTJ4bCBzaGFkb3ctYmx1ZS05MDAvNDAgaG92ZXI6c2NhbGUtMTA1IHRyYW5zaXRpb24tdHJhbnNmb3JtIiwgY2hpbGRyZW46ICJcdTA0MTdcdTA0MzBcdTA0M0ZcdTA0M0VcdTA0M0JcdTA0M0RcdTA0MzhcdTA0NDJcdTA0NEMgXHUwNDQ0XHUwNDNFXHUwNDQwXHUwNDNDXHUwNDQzIiB9KSwgX2pzeHMoImRpdiIsIHsgY2xhc3NOYW1lOiAiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgc206aXRlbXMtc3RhcnQiLCBjaGlsZHJlbjogW19qc3goInNwYW4iLCB7IGNsYXNzTmFtZTogInRleHQtYmx1ZS0yMDAgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCBtYi0xIiwgY2hpbGRyZW46ICJcdTA0MUZcdTA0MzhcdTA0NDhcdTA0MzhcdTA0NDJcdTA0MzUgXHUwNDNEXHUwNDMwXHUwNDNDIFx1MDQzRFx1MDQzMFx1MDQzRlx1MDQ0MFx1MDQ0Rlx1MDQzQ1x1MDQ0M1x1MDQ0RSIgfSksIF9qc3goImEiLCB7IGhyZWY6IGBtYWlsdG86JHtDT05UQUNUX0VNQUlMfWAsIGNsYXNzTmFtZTogInRleHQtMnhsIGZvbnQtYm9sZCBib3JkZXItYi0yIGJvcmRlci13aGl0ZS8zMCBob3Zlcjpib3JkZXItd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiLCBjaGlsZHJlbjogQ09OVEFDVF9FTUFJTCB9KV0gfSldIH0pXSB9KSB9KV0gfSkpOwpjb25zdCBBcHAgPSAoKSA9PiB7CiAgICByZXR1cm4gKF9qc3goImRpdiIsIHsgY2xhc3NOYW1lOiAibWluLWgtc2NyZWVuIGZvbnQtc2FucyBhbnRpYWxpYXNlZCB0ZXh0LXNsYXRlLTkwMCIsIGNoaWxkcmVuOiBfanN4cygibWFpbiIsIHsgY2hpbGRyZW46IFtfanN4KEhlcm8sIHt9KSwgX2pzeChTdG9yYWdlVHlwZXMsIHt9KSwgX2pzeChVc2VDYXNlcywge30pLCBfanN4KFBhcmFtZXRlcnMsIHt9KSwgX2pzeChDb25maWd1cmF0aW9ucywge30pLCBfanN4KE1pc3Rha2VzLCB7fSksIF9qc3goU29sdXRpb25zLCB7fSksIF9qc3goQ29udGFjdENUQSwge30pXSB9KSB9KSk7Cn07CmV4cG9ydCBkZWZhdWx0IEFwcDsK\"}}<\/script>\n        <script>\n          window.APPLET_FILES = [\"index.tsx\",\"metadata.json\",\"index.html\",\"types.ts\",\"constants.tsx\",\"App.tsx\"];\n          <\/script>\n        <script type=\"module\">\n        (() => {\n  if (window.self === window.top) {\n    \/\/ Do not run the shim in the main window, only in iframes.\n    return;\n  }\n\n  window.API_KEY = 'GEMINI_API_KEY';\n  window.GEMINI_API_KEY = 'GEMINI_API_KEY';\n  window.process = window.process || {};\n  window.process.env = window.process.env || {};\n  window.process.env.API_KEY = window.API_KEY;\n  window.process.env.GEMINI_API_KEY = window.GEMINI_API_KEY;\n\n  const bootstrapChannel = new Promise((resolve) => {\n    window.addEventListener('message', (event) => {\n      if (event.origin !== 'https:\/\/aistudio.google.com') {\n        return;\n      }\n\n      if (event.data.type === 'bootstrap') {\n        resolve({\n          port: event.ports[0],\n          urlPatterns:\n              event.data.urlPatterns.map((pattern) => new RegExp(pattern)),\n        });\n      }\n    });\n  });\n\n  window.aistudio = window.aistudio || {\n    handleFullscreenEsc: true,\n    getHostUrl: async function() {\n      const hostPort = (await bootstrapChannel).port;\n      return new Promise((resolve) => {\n        const channel = new MessageChannel();\n        hostPort.postMessage(\n            {type: 'get_host_url'},\n            [channel.port2]);\n        const port = channel.port1;\n        port.onmessage = (message) => {\n          resolve(message.data.url);\n        };\n      });\n    },\n    hasSelectedApiKey: async function() {\n      const hostPort = (await bootstrapChannel).port;\n      return new Promise((resolve) => {\n        const channel = new MessageChannel();\n        hostPort.postMessage(\n            {type: 'has_selected_api_key'},\n            [channel.port2]);\n        const port = channel.port1;\n        port.onmessage = (message) => {\n          resolve(message.data);\n        };\n      });\n    },\n    openSelectKey: async function() {\n      const hostPort = (await bootstrapChannel).port;\n      const channel = new MessageChannel();\n      hostPort.postMessage(\n          {type: 'open_select_key'},\n          [channel.port2]);\n    },\n    getModelQuota: async function(model) {\n      const hostPort = (await bootstrapChannel).port;\n      return new Promise((resolve) => {\n        const channel = new MessageChannel();\n        hostPort.postMessage(\n            {type: 'get_model_quota', model},\n            [channel.port2]);\n        const port = channel.port1;\n        port.onmessage = (message) => {\n          resolve(message.data.modelQuota);\n        };\n      });\n    },\n  };\n\n  const nativeFetch = window.fetch;\n\n  \/**\n   * @param {string | URL | Request} resource The resource of the fetch request.\n   * @param {RequestInit} options The options of the fetch request.\n   * @return {Promise!} The promise of the fetch request.\n   *\/\n  async function fetch(resource, options) {\n    const config = await bootstrapChannel;\n\n    const request = resource instanceof Request ?\n      resource.clone() :\n      new Request(resource, options);\n\n    if (!config.urlPatterns.some((pattern) => request.url.match(pattern))) {\n      return nativeFetch(resource, options);\n    }\n    const hostPort = config.port;\n\n    const channel = new MessageChannel();\n    const port = channel.port1;\n    let bodyBytes;\n    const transfer = [channel.port2];\n    const parts = [];\n    const buffer = await request.arrayBuffer();\n    if (buffer.byteLength) {\n      bodyBytes = buffer;\n      transfer.push(bodyBytes);\n    }\n    hostPort.postMessage(\n        {\n          type: 'fetch',\n          url: request.url,\n          method: request.method,\n          headers: [...request.headers.entries()],\n          body: bodyBytes,\n        },\n        transfer);\n\n    let streamController;\n    const body = new ReadableStream({\n      start(controller) {\n        streamController = controller;\n      },\n    });\n    let resolveReceive;\n    const receivePromise = new Promise((resolve) => {\n      resolveReceive = resolve;\n    });\n    port.onmessage = (message) => {\n      switch (message.data.type) {\n        case 'response':\n          resolveReceive(new Response(body, {\n            status: message.data.status,\n            statusText: message.data.statusText,\n            headers: new Headers(message.data.headers),\n          }));\n          break;\n        case 'body':\n          streamController.enqueue(message.data.data);\n          break;\n        case 'body_done':\n          streamController.close();\n          break;\n      }\n    };\n    return receivePromise;\n  }\n\n  Object.defineProperty(window, 'fetch', {\n    get: function() {\n      return fetch;\n    },\n  });\n\n  \/\/ See details in: https:\/\/github.com\/angular\/angular\/issues\/63064.\n  function patchHistoryStateFunctionForAngular(originalFn, baseHref) {\n    return (state, unused, url) => {\n      if (typeof url === 'string' && !url.startsWith('blob:')) {\n        url = baseHref + url;\n      }\n      return originalFn.apply(window.history, [state, unused, url]);\n    };\n  }\n\n  if (false) {\n    const baseHref = window.location.href;\n    window.history.replaceState = patchHistoryStateFunctionForAngular(window.history.replaceState, baseHref);\n    window.history.pushState = patchHistoryStateFunctionForAngular(window.history.pushState, baseHref);\n  }\n\n  const originalWebSocket = window.WebSocket;\n  class ProxiedWebSocket extends EventTarget {\n    \/**\n     * @param {string} url The url of the websocket.\n     * @param {Object!} protocols The protocols of the websocket.\n     *\/\n    constructor(url, protocols) {\n      super();\n      this.url = url;\n      this.protocols = protocols;\n\n      this.open();\n    }\n\n    \/** Opens the websocket. *\/\n    async open() {\n      const hostPort = (await bootstrapChannel).port;\n      const channel = new MessageChannel();\n      hostPort.postMessage(\n          {type: 'websocket_open', url: this.url, protocols: this.protocols},\n          [channel.port2]);\n      this.port = channel.port1;\n      this.port.onmessage = (message) => {\n        if (message.data.type === 'close') {\n          const event = new CloseEvent('close', {\n            code: message.data.code,\n            reason: message.data.reason,\n            wasClean: message.data.wasClean,\n          });\n          if (this.onclose) {\n            this.onclose(event);\n          }\n          this.dispatchEvent(event);\n          return;\n        } else if (message.data.type === 'open') {\n          const event = new Event('open');\n          if (this.onopen) {\n            this.onopen(event);\n          }\n          this.dispatchEvent(event);\n          return;\n        } else if (message.data.type === 'message') {\n          let data = message.data.data;\n          if (message.data.messageType === 'text' || message.data.messageType === 'message') {\n            data = new TextDecoder().decode(data);\n          }\n          const event = new MessageEvent('message', {\n            data,\n            type: message.data.messageType,\n          });\n          if (this.onmessage) {\n            this.onmessage(event);\n          }\n          this.dispatchEvent(event);\n          return;\n        } else if (message.data.type === 'error') {\n          const event = new ErrorEvent('error', {\n            message: message.data.message,\n          });\n          if (this.onerror) {\n            this.onerror(event);\n          }\n          this.dispatchEvent(event);\n          return;\n        }\n        console.error('received unknown message in frame', event.data);\n      };\n    }\n    \/**\n     * @param {string|ArrayBuffer!} data The data to send.\n     *\/\n    send(data) {\n      if (typeof data === 'string') {\n        this.port.postMessage({type: 'send', data});\n      } else {\n        this.port.postMessage({type: 'send', data}, [data.buffer]);\n      }\n    }\n\n    \/**\n     * @param {number} code The code of the close event.\n     * @param {string} reason The reason of the close event.\n     *\/\n    close(code, reason) {\n      this.port.postMessage({type: 'close', code, reason});\n    }\n  }\n\n  \/**\n   * @param {string} url The url of the websocket.\n   * @param {Object!} protocols The protocols of the websocket.\n   * @return {WebSocket!} The websocket.\n   *\/\n  function createWebSocket(url, protocols) {\n    \/\/ This should come from the bootstrap channel, but we want this to\n    \/\/ work for the synchronous constructor here.\n    if (url.startsWith('wss:\/\/generativelanguage.googleapis.com\/')) {\n      return Reflect.construct(ProxiedWebSocket, [url, protocols]);\n    }\n    return Reflect.construct(originalWebSocket, [url, protocols]);\n  }\n\n  Object.defineProperty(window, 'WebSocket', {\n    get: function() {\n      return createWebSocket;\n    },\n  });\n\n  async function instrumentErrorReporting() {\n    const errors = [];\n    let hostPort;\n\n    function reportError(message) {\n      if (!hostPort) {\n        errors.push(message);\n      } else {\n        hostPort.postMessage({type: 'error', message: message}, message);\n      }\n    }\n\n    function serialize(args) {\n      return args.map((a) => {\n        if (a instanceof Error || a instanceof ErrorEvent) {\n          return a.message;\n        }\n        if(a instanceof CloseEvent) {\n          return {code: a.code, reason: a.reason, wasClean: a.wasClean};\n        }\n        if( a instanceof Map) {\n          return JSON.parse(JSON.stringify([...a.entries()]));\n        }\n        if( a instanceof Set) {\n          return JSON.parse(JSON.stringify([...a.values()]));\n        }\n        if (a instanceof Object) {\n          return JSON.parse(JSON.stringify(a));\n        }\n        return a;\n      });\n    }\n\n    const originalConsole = window.console;\n    const originalConsoleLog = window.console.log;\n    const originalConsoleError = window.console.error;\n    const originalConsoleWarn = window.console.warn;\n    const originalConsoleDebug = window.console.debug;\n    window.console = {\n      ...originalConsole,\n      log: (message, ...args) => {\n        originalConsoleLog.apply(window.console, [message, ...args]);\n        const combined = serialize([message, ...args]);\n        reportError({type: 'console_log', message: combined });\n      },\n      debug: (message, ...args) => {\n        originalConsoleDebug.apply(window.console, [message, ...args]);\n        const combined = serialize([message, ...args]);\n        reportError({type: 'console_debug', message: combined });\n      },\n      error: (message, ...args) => {\n        originalConsoleError.apply(window.console, [message, ...args]);\n        const combined = serialize([message, ...args]);\n        reportError({type: 'console_error', message: combined });\n      },\n      warn: (message, ...args) => {\n        originalConsoleWarn.apply(window.console, [message, ...args]);\n        const combined = serialize([message, ...args]);\n        reportError({type: 'console_warn', message: combined });\n      },\n    };\n\n    window.onerror = (message, source, lineno, colno, error) => {\n      reportError({type: 'error', message: serialize([message]), source, lineno, colno, error});\n    };\n\n    window.onunhandledrejection = (event) => {\n      reportError({type: 'unhandledrejection', message: serialize([event.reason])});\n    };\n\n    window.alert = (message) => {\n      reportError({type: 'alert', message: serialize([message]) });\n    };\n\n    hostPort = (await bootstrapChannel).port;\n    for(const error of errors) {\n      hostPort.postMessage({type: 'error', message: error});\n    }\n  }\n\n  const availableFiles = new Set(window.APPLET_FILES || []);\n\n  instrumentErrorReporting();\n\n  if (false) {\n    const notifyLocationChange = async () => {\n      const hostPort = (await bootstrapChannel).port;\n      hostPort.postMessage({type: 'locationchange', href: location.href});\n    };\n\n    \/\/ Send initial state on load.\n    notifyLocationChange();\n\n    const originalPushState = history.pushState;\n    history.pushState = (...args) => {\n      originalPushState.apply(history, args);\n      notifyLocationChange();\n    };\n\n    const originalReplaceState = history.replaceState;\n    history.replaceState = (...args) => {\n      originalReplaceState.apply(history, args);\n      notifyLocationChange();\n    };\n    window.addEventListener('popstate', (e) => {\n      notifyLocationChange();\n    });\n  }\n\n  window.addEventListener('hashchange', async (e) =>{\n    const config = await bootstrapChannel;\n    const hostPort = config.port;\n    hostPort.postMessage({type: 'hashchange', hash: window.location.hash});\n    if (false) {\n      hostPort.postMessage({\n        type: 'locationchange',\n        href: location.href,\n      });\n    }\n  });\n\n  if (true) {\n    const script = document.createElement('script');\n    script.src = 'https:\/\/cdn.jsdelivr.net\/npm\/html2canvas-pro';\n    script.onload = () => {\n      window.addEventListener('message', async (event) => {\n        if (event.data?.type === 'capture-screenshot') {\n          try {\n            const canvas = await html2canvas(document.documentElement, {\n              logging: false,\n              useCORS: true,\n              backgroundColor: null,\n              scale: 1,\n            });\n            const hostPort = (await bootstrapChannel).port;\n            hostPort.postMessage(\n              {\n                type: 'screenshot-result',\n                dataUrl: canvas.toDataURL('image\/png'),\n                requestId: event.data.requestId,\n                scrollX: document.body.scrollLeft,\n                scrollY: document.body.scrollTop,\n              },\n            );\n          } catch (e) {\n            const hostPort = (await bootstrapChannel).port;\n            hostPort.postMessage(\n              {\n                type: 'screenshot-error',\n                error: e.message,\n                requestId: event.data.requestId,\n              });\n          }\n        }\n      });\n    };\n    document.head.appendChild(script);\n  }\n\n  if (false) {\n    const MAX_ANCESTOR_LEVEL = 3;\n    const MAX_DESCENDANT_LEVEL = 3;\n\n    function getElementSelector(el) {\n      if (!el || el.nodeType !== 1) {\n        return '';\n      }\n      const parts = [];\n      while(el && el.nodeType === 1 && el.tagName.toLowerCase() !== 'body') {\n        let part = el.tagName.toLowerCase();\n        if (el.id) {\n          part += '#' + CSS.escape(el.id);\n        }\n\n        const parent = el.parentElement;\n        if (parent) {\n          let nth = 1;\n          let prev = el.previousElementSibling;\n          while(prev) {\n            if (prev.tagName === el.tagName) {\n              nth++;\n            }\n            prev = prev.previousElementSibling;\n          }\n          part += ':nth-of-type(' + nth + ')';\n        }\n\n        parts.unshift(part);\n        el = el.parentElement;\n      }\n      return parts.join(' > ');\n    }\n\n    function getDomTreeAsString(element, depth, maxDepth) {\n      if (!element || element.nodeType !== 1 || depth > maxDepth) {\n        return '';\n      }\n      const tagName = element.tagName.toLowerCase();\n      let attrs = [];\n      if (element.id) {\n        attrs.push('id=\"' + element.id + '\"');\n      }\n      if (element.classList.length > 0) {\n        attrs.push('class=\"' + element.classList.value + '\"');\n      }\n      const attrString = attrs.length > 0 ? ' ' + attrs.join(' ') : '';\n\n      let content = '';\n      for (const node of element.childNodes) {\n        if (node.nodeType === 1) { \/\/ Element node\n          content += getDomTreeAsString(node, depth + 1, maxDepth);\n        } else if (node.nodeType === 3) { \/\/ Text node\n          content += node.textContent;\n        }\n      }\n\n      return '<' + tagName + attrString + '>' + content + '<\/' + tagName + '>';\n    }\n\n    const style = document.createElement('style');\n    style.textContent =\n      '.aistudio-focus-mode-highlight { box-shadow: inset 0 0 0 0.5px white, inset 0 0 0 1.5px #87a9ff !important; }' +\n      '#aistudio-focus-mode-tag { position: absolute; display: none; background: #87a9ff; border-radius: 4px; border: 0.5px solid white; z-index: 10000; text-transform: lowercase; padding: 2px 4px; color: #32302c; font-family: Inter, sans-serif; font-size: 12px; font-style: normal; font-weight: 400; line-height: 16px; pointer-events: none; }';\n    document.head.appendChild(style);\n\n    let highlightedElement = null;\n    let focusTag = null;\n    let resizeObserver = null;\n    let iframeLoaded = false;\n\n    function positionFocusTag() {\n      requestAnimationFrame(() => {\n        if (!highlightedElement || !focusTag) return;\n        focusTag.style.display = 'inline-flex';\n        const rect = highlightedElement.getBoundingClientRect();\n        focusTag.style.top =\n          rect.top + window.scrollY - focusTag.offsetHeight - 5 + 'px';\n        focusTag.style.left = rect.left + window.scrollX + 'px';\n      });\n    }\n\n    if (window.ResizeObserver) {\n      resizeObserver = new ResizeObserver(() => {\n        positionFocusTag();\n      });\n    }\n\n    function highlight(element) {\n      if (!iframeLoaded) return; \/\/ Do not highlight if iframe is not loaded\n      if (!focusTag) {\n        focusTag = document.createElement('div');\n        focusTag.id = 'aistudio-focus-mode-tag';\n        document.body.appendChild(focusTag);\n      }\n\n      const hadHighlightedElement = !!highlightedElement;\n      if (highlightedElement) {\n        highlightedElement.classList.remove('aistudio-focus-mode-highlight');\n        highlightedElement.removeAttribute('data-aistudio-tag-name');\n        if (resizeObserver) {\n          resizeObserver.unobserve(highlightedElement);\n        }\n      }\n      focusTag.style.display = 'none';\n      highlightedElement = element;\n      const hasHighlightedElement = !!highlightedElement;\n\n      if (!hadHighlightedElement && hasHighlightedElement) {\n        window.addEventListener('resize', positionFocusTag);\n        window.addEventListener('scroll', positionFocusTag, true);\n      } else if (hadHighlightedElement && !hasHighlightedElement) {\n        window.removeEventListener('resize', positionFocusTag);\n        window.removeEventListener('scroll', positionFocusTag, true);\n      }\n\n      if (highlightedElement) {\n        highlightedElement.setAttribute(\n          'data-aistudio-tag-name',\n          highlightedElement.tagName,\n        );\n        highlightedElement.classList.add('aistudio-focus-mode-highlight');\n        focusTag.textContent = highlightedElement.tagName.toLowerCase();\n        positionFocusTag();\n        if (resizeObserver) {\n          resizeObserver.observe(highlightedElement);\n        }\n      }\n    }\n\n    window.addEventListener('load', () => {\n      iframeLoaded = true;\n    });\n\n    window.addEventListener('message', async (event) => {\n      if (event.data?.type === 'highlight-element-at-point') {\n        try {\n          const element = document.elementFromPoint(\n            event.data.x,\n            event.data.y,\n          );\n          highlight(element);\n        } catch (e) {\n          highlight(null);\n        }\n      } else if (event.data?.type === 'highlight-element-by-selector') {\n        try {\n          const selector = event.data.selector;\n          if (selector) {\n            const element = document.querySelector(selector);\n            highlight(element);\n          } else {\n            highlight(null);\n          }\n        } catch (e) {\n          highlight(null);\n        }\n      } else if (event.data?.type === 'get-element-at-point') {\n        try {\n          const element = document.elementFromPoint(\n            event.data.x,\n            event.data.y,\n          );\n          const hostPort = (await bootstrapChannel).port;\n          if (!element) {\n            hostPort.postMessage({\n              type: 'element-at-point-error',\n              error: 'No element found at point',\n              requestId: event.data.requestId,\n            });\n            return;\n          }\n          const selector = getElementSelector(element);\n\n          let levelsUp = 0;\n          let root = element;\n          while(levelsUp < MAX_ANCESTOR_LEVEL &#038;&#038; root.parentElement &#038;&#038; root.parentElement.tagName.toLowerCase() !== 'html') {\n            root = root.parentElement;\n            levelsUp++;\n          }\n          const domString = getDomTreeAsString(root, 0, levelsUp + MAX_DESCENDANT_LEVEL);\n\n          const styles = window.getComputedStyle(element);\n          const css = {};\n          for (let i = 0; i < styles.length; i++) {\n            const key = styles[i];\n            css[key] = styles.getPropertyValue(key);\n          }\n          hostPort.postMessage({\n            type: 'element-at-point-result',\n            element: {\n              selector: selector,\n              domString: domString,\n              css: css,\n              x: event.data.x,\n              y: event.data.y,\n            },\n            requestId: event.data.requestId,\n          });\n        } catch (e) {\n          const hostPort = (await bootstrapChannel).port;\n          hostPort.postMessage({\n            type: 'element-at-point-error',\n            error: e.message,\n            requestId: event.data.requestId,\n          });\n        }\n      } else if (event.data?.type === 'change-element-style') {\n        try {\n          const selector = event.data.selector;\n          if (selector) {\n            const element = document.querySelector(selector);\n            if (element) {\n              element.style.setProperty(\n                event.data.property,\n                event.data.value,\n                'important',\n              );\n              positionFocusTag();\n            }\n          }\n        } catch (e) {}\n      }\n    });\n  }\n\n  window.addEventListener('keydown', async (event) => {\n    if (event.key === 'Escape' && window.aistudio?.handleFullscreenEsc) {\n      const hostPort = (await bootstrapChannel).port;\n      hostPort.postMessage({type: 'exit-fullscreen'});\n    }\n  });\n})();\n\/\/ # sourceURL=iframe_shim.js\n        <\/script>\n        <base href=\"https:\/\/ai.studio\">\n\n\n\n\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 | ElishTech<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800&amp;display=swap\" rel=\"stylesheet\">\n    <style>\n        body {\n            font-family: 'Inter', sans-serif;\n            scroll-behavior: smooth;\n        }\n    <\/style>\n<style>*, ::before, ::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 \/ 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 \/ 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }\/* ! tailwindcss v3.4.17 | MIT License | https:\/\/tailwindcss.com *\/*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{--tw-content:''}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.-inset-1{inset:-0.25rem}.inset-0{inset:0px}.bottom-6{bottom:1.5rem}.bottom-\\[10\\%\\]{bottom:10%}.left-1\\\/2{left:50%}.left-6{left:1.5rem}.left-\\[-10\\%\\]{left:-10%}.right-0{right:0px}.right-6{right:1.5rem}.right-\\[-5\\%\\]{right:-5%}.top-0{top:0px}.top-\\[-10\\%\\]{top:-10%}.z-10{z-index:10}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:0.25rem}.mb-10{margin-bottom:2.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:0.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-2{margin-left:0.5rem}.mr-6{margin-right:1.5rem}.mt-1{margin-top:0.25rem}.mt-2{margin-top:0.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-1{height:0.25rem}.h-10{height:2.5rem}.h-2{height:0.5rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-\\[40\\%\\]{height:40%}.h-\\[50\\%\\]{height:50%}.h-auto{height:auto}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-2{width:0.5rem}.w-20{width:5rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-\\[40\\%\\]{width:40%}.w-\\[50\\%\\]{width:50%}.w-full{width:100%}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-7xl{max-width:80rem}.max-w-\\[200px\\]{max-width:200px}.flex-shrink-0{flex-shrink:0}.-translate-x-1\\\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\\\/2{--tw-translate-x:50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%, 100%{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0, 0, 0.2, 1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.grid-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-16{gap:4rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-2 > :not([hidden]) ~ :not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.5rem * var(--tw-space-x-reverse));margin-left:calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3 > :not([hidden]) ~ :not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.75rem * var(--tw-space-x-reverse));margin-left:calc(0.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6 > :not([hidden]) ~ :not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4 > :not([hidden]) ~ :not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6 > :not([hidden]) ~ :not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-xl{border-radius:0.75rem}.border{border-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254 \/ var(--tw-border-opacity, 1))}.border-blue-500\\\/20{border-color:rgb(59 130 246 \/ 0.2)}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235 \/ var(--tw-border-opacity, 1))}.border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226 \/ var(--tw-border-opacity, 1))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249 \/ var(--tw-border-opacity, 1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240 \/ var(--tw-border-opacity, 1))}.border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85 \/ var(--tw-border-opacity, 1))}.border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59 \/ var(--tw-border-opacity, 1))}.border-white\\\/10{border-color:rgb(255 255 255 \/ 0.1)}.border-white\\\/30{border-color:rgb(255 255 255 \/ 0.3)}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252 \/ var(--tw-bg-opacity, 1))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254 \/ var(--tw-bg-opacity, 1))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250 \/ var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255 \/ var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246 \/ var(--tw-bg-opacity, 1))}.bg-blue-500\\\/10{background-color:rgb(59 130 246 \/ 0.1)}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235 \/ var(--tw-bg-opacity, 1))}.bg-blue-600\\\/10{background-color:rgb(37 99 235 \/ 0.1)}.bg-blue-700\\\/50{background-color:rgb(29 78 216 \/ 0.5)}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94 \/ var(--tw-bg-opacity, 1))}.bg-indigo-600\\\/10{background-color:rgb(79 70 229 \/ 0.1)}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226 \/ var(--tw-bg-opacity, 1))}.bg-red-50\\\/50{background-color:rgb(254 242 242 \/ 0.5)}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42 \/ var(--tw-bg-opacity, 1))}.bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23 \/ var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 \/ var(--tw-bg-opacity, 1))}.bg-white\\\/5{background-color:rgb(255 255 255 \/ 0.05)}.bg-gradient-to-b{background-image:linear-gradient(to bottom, var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right, var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top, var(--tw-gradient-stops))}.from-blue-600{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:rgb(37 99 235 \/ 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-950{--tw-gradient-from:#020617 var(--tw-gradient-from-position);--tw-gradient-to:rgb(2 6 23 \/ 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:rgb(255 255 255 \/ 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to:rgb(0 0 0 \/ 0)  var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-cyan-500{--tw-gradient-to:#06b6d4 var(--tw-gradient-to-position)}.to-slate-400{--tw-gradient-to:#94a3b8 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-cover{object-fit:cover}.p-10{padding:2.5rem}.p-3{padding:0.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-12{padding-left:3rem;padding-right:3rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.pb-20{padding-bottom:5rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pt-2{padding-top:0.5rem}.pt-24{padding-top:6rem}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace}.font-sans{font-family:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:0.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-\\[1\\.1\\]{line-height:1.1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-0.025em}.tracking-wider{letter-spacing:0.05em}.tracking-widest{letter-spacing:0.1em}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42 \/ var(--tw-text-opacity, 1))}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254 \/ var(--tw-text-opacity, 1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254 \/ var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250 \/ var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235 \/ var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175 \/ var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38 \/ var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240 \/ var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225 \/ var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184 \/ var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139 \/ var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105 \/ var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity:1;color:rgb(255 255 255 \/ var(--tw-text-opacity, 1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-25{opacity:0.25}.opacity-50{opacity:0.5}.opacity-75{opacity:0.75}.opacity-80{opacity:0.8}.opacity-90{opacity:0.9}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgb(0 0 0 \/ 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0 \/ 0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0 \/ 0.1), 0 8px 10px -6px rgb(0 0 0 \/ 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-blue-500\\\/20{--tw-shadow-color:rgb(59 130 246 \/ 0.2);--tw-shadow:var(--tw-shadow-colored)}.shadow-blue-900\\\/40{--tw-shadow-color:rgb(30 58 138 \/ 0.4);--tw-shadow:var(--tw-shadow-colored)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)}.ring-white\\\/10{--tw-ring-color:rgb(255 255 255 \/ 0.1)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\\[100px\\]{--tw-blur:blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\\[120px\\]{--tw-blur:blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-colors{transition-property:color, background-color, border-color, fill, stroke, -webkit-text-decoration-color;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-1000{transition-duration:1000ms}.duration-300{transition-duration:300ms}.duration-500{transition-duration:500ms}.hover\\:translate-y-\\[-4px\\]:hover{--tw-translate-y:-4px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:border-blue-100:hover{--tw-border-opacity:1;border-color:rgb(219 234 254 \/ var(--tw-border-opacity, 1))}.hover\\:border-blue-200:hover{--tw-border-opacity:1;border-color:rgb(191 219 254 \/ var(--tw-border-opacity, 1))}.hover\\:border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246 \/ var(--tw-border-opacity, 1))}.hover\\:border-blue-500\\\/50:hover{border-color:rgb(59 130 246 \/ 0.5)}.hover\\:border-white:hover{--tw-border-opacity:1;border-color:rgb(255 255 255 \/ var(--tw-border-opacity, 1))}.hover\\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246 \/ var(--tw-bg-opacity, 1))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249 \/ var(--tw-bg-opacity, 1))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255 \/ var(--tw-bg-opacity, 1))}.hover\\:bg-white\\\/10:hover{background-color:rgb(255 255 255 \/ 0.1)}.hover\\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px rgb(0 0 0 \/ 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.hover\\:shadow-blue-500\\\/10:hover{--tw-shadow-color:rgb(59 130 246 \/ 0.1);--tw-shadow:var(--tw-shadow-colored)}.group:hover .group-hover\\:translate-x-1{--tw-translate-x:0.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235 \/ var(--tw-bg-opacity, 1))}.group:hover .group-hover\\:text-white{--tw-text-opacity:1;color:rgb(255 255 255 \/ var(--tw-text-opacity, 1))}.group:hover .group-hover\\:opacity-100{opacity:1}.group:hover .group-hover\\:opacity-40{opacity:0.4}.group:hover .group-hover\\:duration-200{transition-duration:200ms}@media (min-width: 640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.sm\\:flex-row{flex-direction:row}.sm\\:items-start{align-items:flex-start}.sm\\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\\:text-5xl{font-size:3rem;line-height:1}}@media (min-width: 768px){.md\\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.md\\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\\:text-5xl{font-size:3rem;line-height:1}}@media (min-width: 1024px){.lg\\:col-span-5{grid-column:span 5 \/ span 5}.lg\\:col-span-7{grid-column:span 7 \/ span 7}.lg\\:block{display:block}.lg\\:grid-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr))}.lg\\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.lg\\:grid-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.lg\\:px-8{padding-left:2rem;padding-right:2rem}.lg\\:pb-32{padding-bottom:8rem}.lg\\:pt-40{padding-top:10rem}.lg\\:text-6xl{font-size:3.75rem;line-height:1}}<\/style><script src=\"https:\/\/cdn.jsdelivr.net\/npm\/html2canvas-pro\"><\/script><\/head>\n<body class=\"bg-slate-50 text-slate-900\">\n    <div id=\"root\"><div class=\"min-h-screen font-sans antialiased text-slate-900\"><main><section class=\"relative pt-24 pb-20 lg:pt-40 lg:pb-32 overflow-hidden bg-slate-950 text-white\"><div class=\"absolute top-0 left-1\/2 -translate-x-1\/2 w-full h-full pointer-events-none\"><div class=\"absolute top-[-10%] left-[-10%] w-[50%] h-[50%] bg-blue-600\/10 blur-[120px] rounded-full\"><\/div><div class=\"absolute bottom-[10%] right-[-5%] w-[40%] h-[40%] bg-indigo-600\/10 blur-[100px] rounded-full\"><\/div><\/div><div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10\"><div class=\"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center\"><div class=\"max-w-3xl\"><div class=\"inline-flex items-center space-x-2 px-3 py-1 rounded-full bg-blue-500\/10 border border-blue-500\/20 text-blue-400 text-sm font-medium mb-8\"><span class=\"relative flex h-2 w-2\"><span class=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-blue-400 opacity-75\"><\/span><span class=\"relative inline-flex rounded-full h-2 w-2 bg-blue-500\"><\/span><\/span><span>Enterprise Storage Solutions 2025<\/span><\/div><h1 class=\"text-4xl sm:text-5xl lg:text-6xl font-extrabold tracking-tight leading-[1.1] mb-8 bg-gradient-to-b from-white to-slate-400 bg-clip-text text-transparent\">\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0418\u0422\u2011\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u0426\u041e\u0414<\/h1><p class=\"text-xl font-medium text-slate-400 mb-8 leading-relaxed\">\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043b\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u0438 \u043c\u0435\u0434\u0438\u0430\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u2014 \u043d\u0430 \u0431\u0430\u0437\u0435 SAN, NAS, \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 JBOD\u2011\u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p><div class=\"border-l-2 border-blue-600 pl-6 py-2 mb-10\"><p class=\"text-lg text-slate-300\">\u041f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u0432\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: \u043e\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0434\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0430\u0440\u0445\u0438\u0432\u043e\u0432.<span class=\"block mt-2 text-blue-400 font-semibold italic text-base\">\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438.<\/span><\/p><\/div><div class=\"flex flex-col sm:flex-row gap-5\"><a href=\"https:\/\/forms.office.com\/Pages\/ResponsePage.aspx?id=M8ndOvkOi0KL2njX59S3t6RlyhCRrIdMr4Nk6XVA-x9UMk9JV0M5VDU2VkcyRlE2MlBQSVdJOFMzUy4u\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"inline-flex items-center justify-center px-8 py-4 bg-blue-600 text-white font-bold rounded-xl shadow-xl hover:bg-blue-500 transition-all group\"><span>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0451\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/span><svg class=\"w-5 h-5 ml-2 group-hover:translate-x-1 transition-transform\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"><\/path><\/svg><\/a><a href=\"mailto:idc-marketing@tech.finovy.com\" class=\"inline-flex items-center justify-center px-8 py-4 bg-white\/5 border border-white\/10 text-white font-bold rounded-xl backdrop-blur-sm hover:bg-white\/10 transition-all\">\u041e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442<\/a><\/div><\/div><div class=\"relative group lg:block hidden\"><div class=\"absolute -inset-1 bg-gradient-to-r from-blue-600 to-cyan-500 rounded-3xl blur opacity-25 group-hover:opacity-40 transition duration-1000 group-hover:duration-200\"><\/div><div class=\"relative bg-slate-900 ring-1 ring-white\/10 rounded-3xl overflow-hidden shadow-2xl\"><img decoding=\"async\" alt=\"Enterprise Storage System\" class=\"w-full h-auto object-cover opacity-80 group-hover:opacity-100 transition-opacity duration-500\" src=\"https:\/\/www.elishtech.com\/wp-content\/uploads\/2026\/01\/image-1.jpg\"><div class=\"absolute inset-0 bg-gradient-to-t from-slate-950 via-transparent to-transparent\"><\/div><div class=\"absolute bottom-6 left-6 right-6 p-4 bg-white\/5 backdrop-blur-md rounded-xl border border-white\/10\"><div class=\"flex items-center justify-between\"><div class=\"flex items-center space-x-3\"><div class=\"w-2 h-2 rounded-full bg-green-500 animate-pulse\"><\/div><span class=\"text-xs font-mono text-slate-300 uppercase tracking-widest\">System Operational<\/span><\/div><span class=\"text-xs font-mono text-blue-400\">0.02ms Latency<\/span><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"py-24 bg-white\"><div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\"><div class=\"text-center mb-16\"><h2 class=\"text-3xl md:text-4xl font-extrabold text-slate-900 mb-4\">\u041a\u0430\u043a\u0438\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h2><div class=\"w-20 h-1 bg-blue-600 mx-auto\"><\/div><\/div><div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-10\"><div class=\"group relative\"><div class=\"bg-slate-50 p-8 rounded-3xl h-full border border-slate-100 hover:bg-white hover:border-blue-100 hover:shadow-2xl hover:shadow-blue-500\/10 transition-all duration-300\"><div class=\"text-blue-600 mb-6 p-4 bg-white rounded-2xl shadow-sm inline-block\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-10 h-10\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375\"><\/path><\/svg><\/div><h3 class=\"text-xl font-bold text-slate-900 mb-4\">SAN (\u0431\u043b\u043e\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435)<\/h3><p class=\"text-slate-600 mb-6 text-sm leading-relaxed\">\u0412\u044b\u0434\u0430\u0451\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0438\u0441\u043a\u0438 (LUN), \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c, \u043f\u043e iSCSI, Fibre Channel \u0438\u043b\u0438 NVMe\u2011over\u2011Fabric.<\/p><p class=\"text-blue-600 text-xs font-semibold uppercase tracking-wider\">\u0414\u043b\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447: \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p><\/div><\/div><div class=\"group relative\"><div class=\"bg-slate-50 p-8 rounded-3xl h-full border border-slate-100 hover:bg-white hover:border-blue-100 hover:shadow-2xl hover:shadow-blue-500\/10 transition-all duration-300\"><div class=\"text-blue-600 mb-6 p-4 bg-white rounded-2xl shadow-sm inline-block\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-10 h-10\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 3v1.5M4.5 8.25H3m18 0h-1.5m-15 4.5H3m18 0h-1.5m-15 4.5H3m18 0h-1.5m-15 4.5H3m18 0h-1.5M15.75 3v1.5M8.25 19.5V21M15.75 19.5V21M3.75 4.875c0-.621.504-1.125 1.125-1.125h14.25c.621 0 1.125.504 1.125 1.125v14.25c0 .621-.504 1.125-1.125 1.125H4.875c-.621 0-1.125-.504-1.125-1.125V4.875z\"><\/path><\/svg><\/div><h3 class=\"text-xl font-bold text-slate-900 mb-4\">NAS (\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435)<\/h3><p class=\"text-slate-600 mb-6 text-sm leading-relaxed\">\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c NFS\/SMB \u043a\u0430\u043a \u043a \u043e\u0431\u0449\u0438\u043c \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u043f\u0430\u043f\u043a\u0430\u043c.<\/p><p class=\"text-blue-600 text-xs font-semibold uppercase tracking-wider\">\u0420\u0435\u0441\u0443\u0440\u0441 \u0434\u043b\u044f \u043e\u0444\u0438\u0441\u043e\u0432, \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, VDI \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.<\/p><\/div><\/div><div class=\"group relative\"><div class=\"bg-slate-50 p-8 rounded-3xl h-full border border-slate-100 hover:bg-white hover:border-blue-100 hover:shadow-2xl hover:shadow-blue-500\/10 transition-all duration-300\"><div class=\"text-blue-600 mb-6 p-4 bg-white rounded-2xl shadow-sm inline-block\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-10 h-10\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 15a4.5 4.5 0 004.5 4.5H18a3.75 3.75 0 001.332-7.257 3 3 0 00-3.758-3.848 5.25 5.25 0 00-10.233 2.33A4.502 4.502 0 002.25 15z\"><\/path><\/svg><\/div><h3 class=\"text-xl font-bold text-slate-900 mb-4\">\u041e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (S3)<\/h3><p class=\"text-slate-600 mb-6 text-sm leading-relaxed\">\u0425\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 with \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p><p class=\"text-blue-600 text-xs font-semibold uppercase tracking-wider\">\u0414\u043b\u044f \u0431\u044d\u043a\u0430\u043f\u043e\u0432, \u0430\u0440\u0445\u0438\u0432\u043e\u0432, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0437\u0451\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p><\/div><\/div><div class=\"group relative\"><div class=\"bg-slate-50 p-8 rounded-3xl h-full border border-slate-100 hover:bg-white hover:border-blue-100 hover:shadow-2xl hover:shadow-blue-500\/10 transition-all duration-300\"><div class=\"text-blue-600 mb-6 p-4 bg-white rounded-2xl shadow-sm inline-block\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-10 h-10\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\"><\/path><\/svg><\/div><h3 class=\"text-xl font-bold text-slate-900 mb-4\">JBOD \u0438 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u043a\u0438<\/h3><p class=\"text-slate-600 mb-6 text-sm leading-relaxed\">\u041d\u0430\u0431\u043e\u0440\u044b \u0434\u0438\u0441\u043a\u043e\u0432, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c, \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p><p class=\"text-blue-600 text-xs font-semibold uppercase tracking-wider\">\u0412\u044b\u0441\u043e\u043a\u043e\u043f\u043b\u043e\u0442\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u2011\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (SDS).<\/p><\/div><\/div><\/div><\/div><\/section><section class=\"py-24 bg-slate-50 border-y border-slate-100\"><div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\"><h2 class=\"text-3xl md:text-4xl font-extrabold text-slate-900 mb-16 text-center\">\u0413\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/h2><div class=\"grid grid-cols-1 md:grid-cols-2 gap-8\"><div class=\"bg-white p-10 rounded-3xl border border-slate-200 shadow-sm flex flex-col justify-between hover:translate-y-[-4px] transition-transform\"><div><h3 class=\"text-2xl font-bold text-slate-900 mb-4\">\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/h3><p class=\"text-slate-600 mb-6 leading-relaxed\">\u041a\u0440\u0438\u0442\u0438\u0447\u043d\u044b \u043d\u0438\u0437\u043a\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430, \u0432\u044b\u0441\u043e\u043a\u0430\u044f IOPS \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0438 \u0421\u0423\u0411\u0414.<\/p><\/div><div class=\"bg-blue-50 p-4 rounded-xl border border-blue-100 flex items-center space-x-3\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-5 h-5 text-blue-600\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"><\/path><\/svg><p class=\"text-sm font-medium text-blue-800\">All-Flash \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0434 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u043e\u0432.<\/p><\/div><\/div><div class=\"bg-white p-10 rounded-3xl border border-slate-200 shadow-sm flex flex-col justify-between hover:translate-y-[-4px] transition-transform\"><div><h3 class=\"text-2xl font-bold text-slate-900 mb-4\">\u0424\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043b\u044f \u043e\u0444\u0438\u0441\u043e\u0432<\/h3><p class=\"text-slate-600 mb-6 leading-relaxed\">\u041d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u0449\u0438\u043c \u043f\u0430\u043f\u043a\u0430\u043c NFS\/SMB \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u043c\u0435\u0434\u0438\u0430.<\/p><\/div><div class=\"bg-blue-50 p-4 rounded-xl border border-blue-100 flex items-center space-x-3\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-5 h-5 text-blue-600\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"><\/path><\/svg><p class=\"text-sm font-medium text-blue-800\">\u0414\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0434\u043e \u0441\u043e\u0442\u0435\u043d \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432.<\/p><\/div><\/div><div class=\"bg-white p-10 rounded-3xl border border-slate-200 shadow-sm flex flex-col justify-between hover:translate-y-[-4px] transition-transform\"><div><h3 class=\"text-2xl font-bold text-slate-900 mb-4\">\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0440\u0445\u0438\u0432\u044b<\/h3><p class=\"text-slate-600 mb-6 leading-relaxed\">\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0444\u043e\u043a\u0443\u0441 \u2014 \u0451\u043c\u043a\u043e\u0441\u0442\u044c, \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u043e\u043a\u0430\u0445.<\/p><\/div><div class=\"bg-blue-50 p-4 rounded-xl border border-blue-100 flex items-center space-x-3\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-5 h-5 text-blue-600\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"><\/path><\/svg><p class=\"text-sm font-medium text-blue-800\">\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 NAS, \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438 \u00ab\u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445\u00bb \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f.<\/p><\/div><\/div><div class=\"bg-white p-10 rounded-3xl border border-slate-200 shadow-sm flex flex-col justify-between hover:translate-y-[-4px] transition-transform\"><div><h3 class=\"text-2xl font-bold text-slate-900 mb-4\">\u0412\u0438\u0434\u0435\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0438 \u043c\u0435\u0434\u0438\u0430\u043a\u043e\u043d\u0442\u0435\u043d\u0442<\/h3><p class=\"text-slate-600 mb-6 leading-relaxed\">\u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0442\u044c \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p><\/div><div class=\"bg-blue-50 p-4 rounded-xl border border-blue-100 flex items-center space-x-3\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-5 h-5 text-blue-600\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"><\/path><\/svg><p class=\"text-sm font-medium text-blue-800\">\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0435 NAS-\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0432\u0438\u0434\u0435\u043e.<\/p><\/div><\/div><\/div><\/div><\/section><section class=\"py-24 bg-white overflow-hidden\"><div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\"><div class=\"grid grid-cols-1 lg:grid-cols-12 gap-16 items-start\"><div class=\"lg:col-span-5\"><h2 class=\"text-4xl font-extrabold text-slate-900 mb-6\">\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f<\/h2><p class=\"text-lg text-slate-600 mb-8 leading-relaxed\">\u041f\u0435\u0440\u0435\u0434 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043b\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u2014 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u0431\u044e\u0434\u0436\u0435\u0442\u0430.<\/p><div class=\"p-8 bg-blue-600 rounded-3xl text-white shadow-2xl shadow-blue-500\/20\"><h4 class=\"text-xl font-bold mb-4\">\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0446\u0438\u044f<\/h4><p class=\"mb-6 opacity-90\">\u041c\u044b \u043f\u043e\u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0430\u0448\u0438\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a.<\/p><a href=\"https:\/\/forms.office.com\/Pages\/ResponsePage.aspx?id=M8ndOvkOi0KL2njX59S3t6RlyhCRrIdMr4Nk6XVA-x9UMk9JV0M5VDU2VkcyRlE2MlBQSVdJOFMzUy4u\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"inline-block px-6 py-3 bg-white text-blue-600 font-bold rounded-xl hover:bg-slate-100 transition-colors\">\u0421\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c<\/a><\/div><\/div><div class=\"lg:col-span-7 space-y-4\"><div class=\"flex items-center p-6 bg-slate-50 rounded-2xl border border-slate-100 hover:border-blue-200 transition-colors\"><div class=\"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 font-bold flex-shrink-0 mr-6\">1<\/div><div><h4 class=\"font-bold text-slate-900\">\u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/h4><p class=\"text-sm text-slate-600 mt-1\">\u041f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a IOPS.<\/p><\/div><\/div><div class=\"flex items-center p-6 bg-slate-50 rounded-2xl border border-slate-100 hover:border-blue-200 transition-colors\"><div class=\"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 font-bold flex-shrink-0 mr-6\">2<\/div><div><h4 class=\"font-bold text-slate-900\">\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u0438 \u0440\u043e\u0441\u0442 (3\u20135 \u043b\u0435\u0442)<\/h4><p class=\"text-sm text-slate-600 mt-1\">\u0423\u0447\u0451\u0442 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p><\/div><\/div><div class=\"flex items-center p-6 bg-slate-50 rounded-2xl border border-slate-100 hover:border-blue-200 transition-colors\"><div class=\"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 font-bold flex-shrink-0 mr-6\">3<\/div><div><h4 class=\"font-bold text-slate-900\">\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h4><p class=\"text-sm text-slate-600 mt-1\">IOPS, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 (Latency) \u0434\u043b\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p><\/div><\/div><div class=\"flex items-center p-6 bg-slate-50 rounded-2xl border border-slate-100 hover:border-blue-200 transition-colors\"><div class=\"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 font-bold flex-shrink-0 mr-6\">4<\/div><div><h4 class=\"font-bold text-slate-900\">\u0422\u0438\u043f\u044b \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439<\/h4><p class=\"text-sm text-slate-600 mt-1\">\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f SSD\/NVMe \u0434\u043b\u044f \u0433\u043e\u0440\u044f\u0447\u0438\u0445 \u0438 HDD \u0434\u043b\u044f \u0442\u0451\u043f\u043b\u044b\u0445 \u0438 \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p><\/div><\/div><div class=\"flex items-center p-6 bg-slate-50 rounded-2xl border border-slate-100 hover:border-blue-200 transition-colors\"><div class=\"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 font-bold flex-shrink-0 mr-6\">5<\/div><div><h4 class=\"font-bold text-slate-900\">\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c<\/h4><p class=\"text-sm text-slate-600 mt-1\">RAID, \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f, \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0438 \u0437\u0430\u0449\u0438\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p><\/div><\/div><div class=\"flex items-center p-6 bg-slate-50 rounded-2xl border border-slate-100 hover:border-blue-200 transition-colors\"><div class=\"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 font-bold flex-shrink-0 mr-6\">6<\/div><div><h4 class=\"font-bold text-slate-900\">\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c<\/h4><p class=\"text-sm text-slate-600 mt-1\">\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0430\u043c\u0438, \u041e\u0421 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<\/p><\/div><\/div><div class=\"flex items-center p-6 bg-slate-50 rounded-2xl border border-slate-100 hover:border-blue-200 transition-colors\"><div class=\"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 font-bold flex-shrink-0 mr-6\">7<\/div><div><h4 class=\"font-bold text-slate-900\">\u0411\u044e\u0434\u0436\u0435\u0442 \u0438 TCO<\/h4><p class=\"text-sm text-slate-600 mt-1\">\u0423\u0447\u0451\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439, \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438 \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f.<\/p><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"py-24 bg-slate-950 text-white relative\"><div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\"><h2 class=\"text-3xl md:text-4xl font-extrabold mb-16 text-center text-white\">\u0422\u0438\u043f\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430<\/h2><div class=\"grid grid-cols-1 md:grid-cols-2 gap-8\"><div class=\"bg-slate-900 border border-slate-800 p-10 rounded-3xl hover:border-blue-500\/50 transition-colors\"><h3 class=\"text-2xl font-bold text-blue-400 mb-6\">SAN\u2011\u043c\u0430\u0441c\u0438\u0432 \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h3><p class=\"text-slate-400 mb-8 leading-relaxed italic border-l-2 border-slate-700 pl-4\">\u0411\u043b\u043e\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e Fibre Channel \u0438\u043b\u0438 iSCSI.<\/p><div class=\"space-y-4\"><div class=\"flex justify-between items-start border-b border-slate-800 pb-4\"><span class=\"text-slate-500 text-sm uppercase font-bold tracking-widest\">\u0426\u0435\u043b\u044c<\/span><span class=\"text-slate-200 text-right max-w-[200px] text-sm\">\u041a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438\u2013\u0441\u043e\u0442\u043d\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0421\u0423\u0411\u0414.<\/span><\/div><div class=\"flex justify-between items-start pt-2\"><span class=\"text-slate-500 text-sm uppercase font-bold tracking-widest\">\u041f\u043b\u044e\u0441<\/span><span class=\"text-slate-200 text-right max-w-[200px] text-sm\">\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f SSD\/NVMe \u0434\u043b\u044f \u0433\u043e\u0440\u044f\u0447\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 HDD \u0434\u043b\u044f \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0445.<\/span><\/div><\/div><\/div><div class=\"bg-slate-900 border border-slate-800 p-10 rounded-3xl hover:border-blue-500\/50 transition-colors\"><h3 class=\"text-2xl font-bold text-blue-400 mb-6\">\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 NAS<\/h3><p class=\"text-slate-400 mb-8 leading-relaxed italic border-l-2 border-slate-700 pl-4\">\u0424\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043f\u043e NFS\/SMB \u0434\u043b\u044f \u043e\u0431\u0449\u0438\u0445 \u043f\u0430\u043f\u043e\u043a.<\/p><div class=\"space-y-4\"><div class=\"flex justify-between items-start border-b border-slate-800 pb-4\"><span class=\"text-slate-500 text-sm uppercase font-bold tracking-widest\">\u0426\u0435\u043b\u044c<\/span><span class=\"text-slate-200 text-right max-w-[200px] text-sm\">\u041e\u0444\u0438\u0441\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432\u0438\u0434\u0435\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f.<\/span><\/div><div class=\"flex justify-between items-start pt-2\"><span class=\"text-slate-500 text-sm uppercase font-bold tracking-widest\">\u041f\u043b\u044e\u0441<\/span><span class=\"text-slate-200 text-right max-w-[200px] text-sm\">\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u043e\u0441\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/span><\/div><\/div><\/div><div class=\"bg-slate-900 border border-slate-800 p-10 rounded-3xl hover:border-blue-500\/50 transition-colors\"><h3 class=\"text-2xl font-bold text-blue-400 mb-6\">\u041e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (S3)<\/h3><p class=\"text-slate-400 mb-8 leading-relaxed italic border-l-2 border-slate-700 pl-4\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u043e\u0441\u0442\u0430 \u043e\u0431\u044a\u0451\u043c\u043e\u0432.<\/p><div class=\"space-y-4\"><div class=\"flex justify-between items-start border-b border-slate-800 pb-4\"><span class=\"text-slate-500 text-sm uppercase font-bold tracking-widest\">\u0426\u0435\u043b\u044c<\/span><span class=\"text-slate-200 text-right max-w-[200px] text-sm\">\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0432\u043e\u0432.<\/span><\/div><div class=\"flex justify-between items-start pt-2\"><span class=\"text-slate-500 text-sm uppercase font-bold tracking-widest\">\u041f\u043b\u044e\u0441<\/span><span class=\"text-slate-200 text-right max-w-[200px] text-sm\">\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430 \u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442.<\/span><\/div><\/div><\/div><div class=\"bg-slate-900 border border-slate-800 p-10 rounded-3xl hover:border-blue-500\/50 transition-colors\"><h3 class=\"text-2xl font-bold text-blue-400 mb-6\">JBOD\u2011\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438<\/h3><p class=\"text-slate-400 mb-8 leading-relaxed italic border-l-2 border-slate-700 pl-4\">\u0414\u0438\u0441\u043a\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u043a\u0438 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c HDD, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c.<\/p><div class=\"space-y-4\"><div class=\"flex justify-between items-start border-b border-slate-800 pb-4\"><span class=\"text-slate-500 text-sm uppercase font-bold tracking-widest\">\u0426\u0435\u043b\u044c<\/span><span class=\"text-slate-200 text-right max-w-[200px] text-sm\">\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u2011\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 (SDS) \u0438 \u0434\u0435\u0448\u0451\u0432\u044b\u0435 \u0430\u0440\u0445\u0438\u0432\u044b.<\/span><\/div><div class=\"flex justify-between items-start pt-2\"><span class=\"text-slate-500 text-sm uppercase font-bold tracking-widest\">\u041f\u043b\u044e\u0441<\/span><span class=\"text-slate-200 text-right max-w-[200px] text-sm\">\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430 \u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442.<\/span><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"py-24 bg-white\"><div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\"><h2 class=\"text-3xl md:text-4xl font-extrabold text-slate-900 mb-16 text-center\">\u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435<\/h2><div class=\"grid grid-cols-1 md:grid-cols-2 gap-8\"><div class=\"flex items-start space-x-6 p-8 bg-red-50\/50 rounded-3xl border border-red-100\"><div class=\"flex-shrink-0 bg-red-100 p-3 rounded-2xl\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-8 h-8 text-red-600\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\"><\/path><\/svg><\/div><div><h3 class=\"text-xl font-bold text-slate-900 mb-2\">\u041e\u0448\u0438\u0431\u043a\u0430 1: \u041d\u0435\u0434\u043e\u043e\u0446\u0435\u043d\u043a\u0430 \u0440\u043e\u0441\u0442\u0430 \u043e\u0431\u044a\u0451\u043c\u043e\u0432<\/h3><p class=\"text-slate-600 text-sm leading-relaxed\">\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0440\u043e\u0447\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u0430.<\/p><\/div><\/div><div class=\"flex items-start space-x-6 p-8 bg-red-50\/50 rounded-3xl border border-red-100\"><div class=\"flex-shrink-0 bg-red-100 p-3 rounded-2xl\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-8 h-8 text-red-600\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\"><\/path><\/svg><\/div><div><h3 class=\"text-xl font-bold text-slate-900 mb-2\">\u041e\u0448\u0438\u0431\u043a\u0430 2: \u0412\u044b\u0431\u043e\u0440 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0451\u043c\u043a\u043e\u0441\u0442\u0438<\/h3><p class=\"text-slate-600 text-sm leading-relaxed\">\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0434\u0435\u0442 \u043a \u043f\u0430\u0434\u0435\u043d\u0438\u044e IOPS \u0438 \u0440\u043e\u0441\u0442\u0443 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0434\u043b\u044f \u0421\u0423\u0411\u0414.<\/p><\/div><\/div><div class=\"flex items-start space-x-6 p-8 bg-red-50\/50 rounded-3xl border border-red-100\"><div class=\"flex-shrink-0 bg-red-100 p-3 rounded-2xl\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-8 h-8 text-red-600\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\"><\/path><\/svg><\/div><div><h3 class=\"text-xl font-bold text-slate-900 mb-2\">\u041e\u0448\u0438\u0431\u043a\u0430 3: \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0437\u0430\u0449\u0438\u0442\u044b<\/h3><p class=\"text-slate-600 text-sm leading-relaxed\">\u0411\u0435\u0437 \u0441\u0445\u0435\u043c\u044b \u0431\u044d\u043a\u0430\u043f\u0430 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u0442\u0443\u0442 \u0440\u0438\u0441\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432 \u0438 \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u0435\u0440\u044c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p><\/div><\/div><div class=\"flex items-start space-x-6 p-8 bg-red-50\/50 rounded-3xl border border-red-100\"><div class=\"flex-shrink-0 bg-red-100 p-3 rounded-2xl\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-8 h-8 text-red-600\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\"><\/path><\/svg><\/div><div><h3 class=\"text-xl font-bold text-slate-900 mb-2\">\u041e\u0448\u0438\u0431\u043a\u0430 4: \u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u0435\u043d\u0434\u043e\u0440\u0443<\/h3><p class=\"text-slate-600 text-sm leading-relaxed\">\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0442 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u044b, \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u0433\u043e\u0432\u043e\u0440\u044b \u043f\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439.<\/p><\/div><\/div><\/div><\/div><\/section><section class=\"py-24 bg-slate-50\"><div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\"><div class=\"max-w-3xl mx-auto text-center mb-16\"><h2 class=\"text-3xl md:text-4xl font-extrabold text-slate-900 mb-6\">\u0421 \u043a\u0430\u043a\u0438\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c<\/h2><p class=\"text-lg text-slate-600\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 SAN\u2011, NAS\u2011 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0431\u0440\u0435\u043d\u0434\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p><\/div><div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6\"><div class=\"bg-white p-8 rounded-3xl border border-slate-200 shadow-sm text-center group hover:border-blue-500 transition-colors\"><div class=\"mb-4 inline-block p-4 bg-slate-50 rounded-2xl text-blue-600 group-hover:bg-blue-600 group-hover:text-white transition-colors\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-8 h-8\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\"><\/path><\/svg><\/div><h4 class=\"font-bold text-slate-900 mb-1\">SAN-\u043c\u0430\u0441\u0441\u0438\u0432\u044b<\/h4><p class=\"text-slate-500 text-xs\">\u0434\u043b\u044f \u0411\u0414 \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/p><\/div><div class=\"bg-white p-8 rounded-3xl border border-slate-200 shadow-sm text-center group hover:border-blue-500 transition-colors\"><div class=\"mb-4 inline-block p-4 bg-slate-50 rounded-2xl text-blue-600 group-hover:bg-blue-600 group-hover:text-white transition-colors\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-8 h-8\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\"><\/path><\/svg><\/div><h4 class=\"font-bold text-slate-900 mb-1\">NAS-\u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h4><p class=\"text-slate-500 text-xs\">\u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043c\u0435\u0434\u0438\u0430<\/p><\/div><div class=\"bg-white p-8 rounded-3xl border border-slate-200 shadow-sm text-center group hover:border-blue-500 transition-colors\"><div class=\"mb-4 inline-block p-4 bg-slate-50 rounded-2xl text-blue-600 group-hover:bg-blue-600 group-hover:text-white transition-colors\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-8 h-8\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\"><\/path><\/svg><\/div><h4 class=\"font-bold text-slate-900 mb-1\">\u041e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0421\u0425\u0414<\/h4><p class=\"text-slate-500 text-xs\">\u0434\u043b\u044f \u0431\u044d\u043a\u0430\u043f\u043e\u0432 \u0438 \u0430\u0440\u0445\u0438\u0432\u043e\u0432<\/p><\/div><div class=\"bg-white p-8 rounded-3xl border border-slate-200 shadow-sm text-center group hover:border-blue-500 transition-colors\"><div class=\"mb-4 inline-block p-4 bg-slate-50 rounded-2xl text-blue-600 group-hover:bg-blue-600 group-hover:text-white transition-colors\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-8 h-8\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\"><\/path><\/svg><\/div><h4 class=\"font-bold text-slate-900 mb-1\">JBOD-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b<\/h4><p class=\"text-slate-500 text-xs\">\u0434\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439<\/p><\/div><\/div><\/div><\/section><section class=\"relative py-24 bg-blue-600 text-white overflow-hidden\"><div class=\"absolute top-0 right-0 w-[50%] h-full bg-blue-500 blur-[120px] rounded-full opacity-50 translate-x-1\/2\"><\/div><div class=\"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10\"><div class=\"text-center\"><h2 class=\"text-4xl md:text-5xl font-extrabold mb-8\">\u041a\u0430\u043a \u043c\u044b \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u043c \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u043f\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443<\/h2><div class=\"space-y-6 text-xl text-blue-100 max-w-3xl mx-auto mb-16\"><p>\u041c\u044b \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u043c \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 (SAN, NAS, \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0438\u043b\u0438 \u0433\u0438\u0431\u0440\u0438\u0434) \u0438 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u0432\u0430\u0448 \u0431\u044e\u0434\u0436\u0435\u0442.<\/p><p class=\"bg-blue-700\/50 p-6 rounded-2xl border border-white\/10 font-medium\">\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0435\u0451 \u043d\u0430\u043c \u2014 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p><\/div><div class=\"flex flex-col sm:flex-row justify-center items-center gap-6\"><a href=\"https:\/\/forms.office.com\/Pages\/ResponsePage.aspx?id=M8ndOvkOi0KL2njX59S3t6RlyhCRrIdMr4Nk6XVA-x9UMk9JV0M5VDU2VkcyRlE2MlBQSVdJOFMzUy4u\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"px-12 py-5 bg-white text-blue-600 font-extrabold rounded-2xl shadow-2xl shadow-blue-900\/40 hover:scale-105 transition-transform\">\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443<\/a><div class=\"flex flex-col items-center sm:items-start\"><span class=\"text-blue-200 text-xs font-bold uppercase tracking-widest mb-1\">\u041f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e<\/span><a href=\"mailto:idc-marketing@tech.finovy.com\" class=\"text-2xl font-bold border-b-2 border-white\/30 hover:border-white transition-colors\">idc-marketing@tech.finovy.com<\/a><\/div><\/div><\/div><\/div><\/section><\/main><\/div><\/div>\n\n\n\n        <script type=\"module\" onerror=\"console.warn('Failed to load the app. Try reloading it.')\">import '@\/index';<\/script>\n        <\/body><\/html>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 | ElishTech Enterprise Storage Solutions 2025 \u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0418\u0422\u2011\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u0426\u041e\u0414 \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043b\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u0438 \u043c\u0435\u0434\u0438\u0430\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u2014 \u043d\u0430 \u0431\u0430\u0437\u0435 SAN, NAS, \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 JBOD\u2011\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u0432\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: \u043e\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0434\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0430\u0440\u0445\u0438\u0432\u043e\u0432.\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c&#8230;<\/p>","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-17075","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.elishtech.com\/en\/wp-json\/wp\/v2\/pages\/17075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.elishtech.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.elishtech.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.elishtech.com\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.elishtech.com\/en\/wp-json\/wp\/v2\/comments?post=17075"}],"version-history":[{"count":2,"href":"https:\/\/www.elishtech.com\/en\/wp-json\/wp\/v2\/pages\/17075\/revisions"}],"predecessor-version":[{"id":17080,"href":"https:\/\/www.elishtech.com\/en\/wp-json\/wp\/v2\/pages\/17075\/revisions\/17080"}],"wp:attachment":[{"href":"https:\/\/www.elishtech.com\/en\/wp-json\/wp\/v2\/media?parent=17075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}