UNPKG

aile-capacitor-aiff

Version:

AIFF WebView plugin for Capacitor with iframe-based web implementation

314 lines (274 loc) 14.5 kB
:root { --aiff-primary-color: #007bff; --aiff-secondary-color: #6c757d; --aiff-success-color: #28a745; --aiff-danger-color: #dc3545; --aiff-warning-color: #ffc107; --aiff-info-color: #17a2b8; --aiff-light-color: #f8f9fa; --aiff-dark-color: #343a40; --aiff-border-radius: 8px; --aiff-box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); --aiff-transition: all 0.3s ease; } /* 深色模式变量 */ @media (prefers-color-scheme: dark) { :root { --aiff-bg-color: #1a1a1a; --aiff-text-color: #ffffff; --aiff-border-color: #333333; --aiff-surface-color: #2d2d2d; } } /* 浅色模式变量 */ @media (prefers-color-scheme: light) { :root { --aiff-bg-color: #ffffff; --aiff-text-color: #333333; --aiff-border-color: #e0e0e0; --aiff-surface-color: #f8f9fa; } } /* 强制浅色模式 */ .aiff-theme-light { --aiff-bg-color: #ffffff !important; --aiff-text-color: #333333 !important; --aiff-border-color: #e0e0e0 !important; --aiff-surface-color: #f8f9fa !important; } /* 强制深色模式 */ .aiff-theme-dark { --aiff-bg-color: #1a1a1a !important; --aiff-text-color: #ffffff !important; --aiff-border-color: #333333 !important; --aiff-surface-color: #2d2d2d !important; } /* 基础样式 */ .aiff-webview-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 10000; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 300ms ease-in-out; } .aiff-webview-container { width: 90%; height: 80%; max-width: 1200px; background: var(--aiff-bg-color); border: 1px solid var(--aiff-border-color); border-radius: var(--aiff-border-radius); overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); transform: scale(0.9); transition: transform 300ms ease-in-out; } .aiff-webview-toolbar { height: 44px; background: var(--aiff-surface-color); border-bottom: 1px solid var(--aiff-border-color); display: flex; align-items: center; justify-content: space-between; padding: 0 16px; flex-shrink: 0; } .aiff-webview-toolbar button { background: none; border: none; color: var(--aiff-text-color); cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 4px; transition: var(--aiff-transition); } .aiff-webview-toolbar button:hover { background: rgba(0, 0, 0, 0.1); } .aiff-theme-dark .aiff-webview-toolbar button:hover { background: rgba(255, 255, 255, 0.1); } .aiff-webview-toolbar .close-btn { font-size: 24px; font-weight: bold; } .aiff-webview-toolbar .reload-btn { font-size: 16px; } .aiff-webview-title { font-size: 16px; font-weight: 600; color: var(--aiff-text-color); flex: 1; text-align: center; margin: 0 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .aiff-webview-iframe { flex: 1; width: 100%; border: none; background: var(--aiff-bg-color); } /* 响应式设计 */ @media (max-width: 768px) { .aiff-webview-container { width: 95%; height: 85%; border-radius: 12px; } .aiff-webview-toolbar { height: 48px; padding: 0 12px; } .aiff-webview-title { font-size: 14px; } } @media (max-width: 480px) { .aiff-webview-container { width: 100%; height: 100%; max-width: none; border-radius: 0; margin: 0; } .aiff-webview-modal { align-items: flex-end; } .aiff-webview-container { transform: translateY(100%); border-radius: 16px 16px 0 0; } .aiff-webview-modal.show .aiff-webview-container { transform: translateY(0); } } /* 动画效果 */ @keyframes aiff-fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes aiff-scale-in { from { transform: scale(0.9); } to { transform: scale(1); } } .aiff-webview-modal.show { opacity: 1; } .aiff-webview-modal.show .aiff-webview-container { transform: scale(1); } /* 加载状态 */ .aiff-loading { display: flex; align-items: center; justify-content: center; height: 100%; color: var(--aiff-text-color); } .aiff-spinner { border: 3px solid var(--aiff-border-color); border-top: 3px solid var(--aiff-primary-color); border-radius: 50%; width: 40px; height: 40px; animation: aiff-spin 1s linear infinite; } @keyframes aiff-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* 错误状态 */ .aiff-error { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: var(--aiff-danger-color); text-align: center; padding: 20px; } .aiff-error-icon { font-size: 48px; margin-bottom: 16px; } .aiff-error-message { font-size: 16px; margin-bottom: 8px; } .aiff-error-submessage { font-size: 14px; color: var(--aiff-secondary-color); } /* 工具提示 */ .aiff-tooltip { position: relative; display: inline-block; } .aiff-tooltip .aiff-tooltiptext { visibility: hidden; width: 120px; background-color: var(--aiff-dark-color); color: #fff; text-align: center; border-radius: 4px; padding: 5px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -60px; opacity: 0; transition: opacity 0.3s; font-size: 12px; } .aiff-tooltip:hover .aiff-tooltiptext { visibility: visible; opacity: 1; } /* 无障碍支持 */ @media (prefers-reduced-motion: reduce) { .aiff-webview-modal, .aiff-webview-container, .aiff-webview-toolbar button { transition: none; } .aiff-spinner { animation: none; } } /* 高对比度模式 */ @media (prefers-contrast: high) { .aiff-webview-container { border: 2px solid var(--aiff-text-color); } .aiff-webview-toolbar button:hover { border: 1px solid var(--aiff-text-color); } } /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3dlYi9zdHlsZXMvYWlmZi13ZWJ2aWV3LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJhaWZmLXdlYnZpZXcuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOnJvb3Qge1xuICAtLWFpZmYtcHJpbWFyeS1jb2xvcjogIzAwN2JmZjtcbiAgLS1haWZmLXNlY29uZGFyeS1jb2xvcjogIzZjNzU3ZDtcbiAgLS1haWZmLXN1Y2Nlc3MtY29sb3I6ICMyOGE3NDU7XG4gIC0tYWlmZi1kYW5nZXItY29sb3I6ICNkYzM1NDU7XG4gIC0tYWlmZi13YXJuaW5nLWNvbG9yOiAjZmZjMTA3O1xuICAtLWFpZmYtaW5mby1jb2xvcjogIzE3YTJiODtcbiAgLS1haWZmLWxpZ2h0LWNvbG9yOiAjZjhmOWZhO1xuICAtLWFpZmYtZGFyay1jb2xvcjogIzM0M2E0MDtcbiAgXG4gIC0tYWlmZi1ib3JkZXItcmFkaXVzOiA4cHg7XG4gIC0tYWlmZi1ib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAtLWFpZmYtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLyog5rex6Imy5qih5byP5Y+Y6YePICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIDpyb290IHtcbiAgICAtLWFpZmYtYmctY29sb3I6ICMxYTFhMWE7XG4gICAgLS1haWZmLXRleHQtY29sb3I6ICNmZmZmZmY7XG4gICAgLS1haWZmLWJvcmRlci1jb2xvcjogIzMzMzMzMztcbiAgICAtLWFpZmYtc3VyZmFjZS1jb2xvcjogIzJkMmQyZDtcbiAgfVxufVxuXG4vKiDmtYXoibLmqKHlvI/lj5jph48gKi9cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KSB7XG4gIDpyb290IHtcbiAgICAtLWFpZmYtYmctY29sb3I6ICNmZmZmZmY7XG4gICAgLS1haWZmLXRleHQtY29sb3I6ICMzMzMzMzM7XG4gICAgLS1haWZmLWJvcmRlci1jb2xvcjogI2UwZTBlMDtcbiAgICAtLWFpZmYtc3VyZmFjZS1jb2xvcjogI2Y4ZjlmYTtcbiAgfVxufVxuXG4vKiDlvLrliLbmtYXoibLmqKHlvI8gKi9cbi5haWZmLXRoZW1lLWxpZ2h0IHtcbiAgLS1haWZmLWJnLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gIC0tYWlmZi10ZXh0LWNvbG9yOiAjMzMzMzMzICFpbXBvcnRhbnQ7XG4gIC0tYWlmZi1ib3JkZXItY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDtcbiAgLS1haWZmLXN1cmZhY2UtY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDtcbn1cblxuLyog5by65Yi25rex6Imy5qih5byPICovXG4uYWlmZi10aGVtZS1kYXJrIHtcbiAgLS1haWZmLWJnLWNvbG9yOiAjMWExYTFhICFpbXBvcnRhbnQ7XG4gIC0tYWlmZi10ZXh0LWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gIC0tYWlmZi1ib3JkZXItY29sb3I6ICMzMzMzMzMgIWltcG9ydGFudDtcbiAgLS1haWZmLXN1cmZhY2UtY29sb3I6ICMyZDJkMmQgIWltcG9ydGFudDtcbn1cblxuLyog5Z+656GA5qC35byPICovXG4uYWlmZi13ZWJ2aWV3LW1vZGFsIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgei1pbmRleDogMTAwMDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zIGVhc2UtaW4tb3V0O1xufVxuXG4uYWlmZi13ZWJ2aWV3LWNvbnRhaW5lciB7XG4gIHdpZHRoOiA5MCU7XG4gIGhlaWdodDogODAlO1xuICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWlmZi1iZy1jb2xvcik7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFpZmYtYm9yZGVyLWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYWlmZi1ib3JkZXItcmFkaXVzKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyBlYXNlLWluLW91dDtcbn1cblxuLmFpZmYtd2Vidmlldy10b29sYmFyIHtcbiAgaGVpZ2h0OiA0NHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1haWZmLXN1cmZhY2UtY29sb3IpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYWlmZi1ib3JkZXItY29sb3IpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5haWZmLXdlYnZpZXctdG9vbGJhciBidXR0b24ge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiB2YXIoLS1haWZmLXRleHQtY29sb3IpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDMycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHRyYW5zaXRpb246IHZhcigtLWFpZmYtdHJhbnNpdGlvbik7XG59XG5cbi5haWZmLXdlYnZpZXctdG9vbGJhciBidXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5haWZmLXRoZW1lLWRhcmsgLmFpZmYtd2Vidmlldy10b29sYmFyIGJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLmFpZmYtd2Vidmlldy10b29sYmFyIC5jbG9zZS1idG4ge1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uYWlmZi13ZWJ2aWV3LXRvb2xiYXIgLnJlbG9hZC1idG4ge1xuICBmb250LXNpemU6IDE2cHg7XG59XG5cbi5haWZmLXdlYnZpZXctdGl0bGUge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1haWZmLXRleHQtY29sb3IpO1xuICBmbGV4OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbjogMCAxNnB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLmFpZmYtd2Vidmlldy1pZnJhbWUge1xuICBmbGV4OiAxO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1haWZmLWJnLWNvbG9yKTtcbn1cblxuLyog5ZON5bqU5byP6K6+6K6hICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmFpZmYtd2Vidmlldy1jb250YWluZXIge1xuICAgIHdpZHRoOiA5NSU7XG4gICAgaGVpZ2h0OiA4NSU7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgfVxuICBcbiAgLmFpZmYtd2Vidmlldy10b29sYmFyIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgcGFkZGluZzogMCAxMnB4O1xuICB9XG4gIFxuICAuYWlmZi13ZWJ2aWV3LXRpdGxlIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5haWZmLXdlYnZpZXctY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIFxuICAuYWlmZi13ZWJ2aWV3LW1vZGFsIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIH1cbiAgXG4gIC5haWZmLXdlYnZpZXctY29udGFpbmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDAgMDtcbiAgfVxuICBcbiAgLmFpZmYtd2Vidmlldy1tb2RhbC5zaG93IC5haWZmLXdlYnZpZXctY29udGFpbmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuLyog5Yqo55S75pWI5p6cICovXG5Aa2V5ZnJhbWVzIGFpZmYtZmFkZS1pbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBhaWZmLXNjYWxlLWluIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5cbi5haWZmLXdlYnZpZXctbW9kYWwuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5haWZmLXdlYnZpZXctbW9kYWwuc2hvdyAuYWlmZi13ZWJ2aWV3LWNvbnRhaW5lciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG59XG5cbi8qIOWKoOi9veeKtuaAgSAqL1xuLmFpZmYtbG9hZGluZyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGNvbG9yOiB2YXIoLS1haWZmLXRleHQtY29sb3IpO1xufVxuXG4uYWlmZi1zcGlubmVyIHtcbiAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tYWlmZi1ib3JkZXItY29sb3IpO1xuICBib3JkZXItdG9wOiAzcHggc29saWQgdmFyKC0tYWlmZi1wcmltYXJ5LWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBhbmltYXRpb246IGFpZmYtc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgYWlmZi1zcGluIHtcbiAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxufVxuXG4vKiDplJnor6/nirbmgIEgKi9cbi5haWZmLWVycm9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbiAgY29sb3I6IHZhcigtLWFpZmYtZGFuZ2VyLWNvbG9yKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAyMHB4O1xufVxuXG4uYWlmZi1lcnJvci1pY29uIHtcbiAgZm9udC1zaXplOiA0OHB4O1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xufVxuXG4uYWlmZi1lcnJvci1tZXNzYWdlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi5haWZmLWVycm9yLXN1Ym1lc3NhZ2Uge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiB2YXIoLS1haWZmLXNlY29uZGFyeS1jb2xvcik7XG59XG5cbi8qIOW3peWFt+aPkOekuiAqL1xuLmFpZmYtdG9vbHRpcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uYWlmZi10b29sdGlwIC5haWZmLXRvb2x0aXB0ZXh0IHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB3aWR0aDogMTIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFpZmYtZGFyay1jb2xvcik7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcGFkZGluZzogNXB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogMTI1JTtcbiAgbGVmdDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTYwcHg7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcztcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4uYWlmZi10b29sdGlwOmhvdmVyIC5haWZmLXRvb2x0aXB0ZXh0IHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbn1cblxuLyog5peg6Zqc56KN5pSv5oyBICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuYWlmZi13ZWJ2aWV3LW1vZGFsLFxuICAuYWlmZi13ZWJ2aWV3LWNvbnRhaW5lcixcbiAgLmFpZmYtd2Vidmlldy10b29sYmFyIGJ1dHRvbiB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxuICBcbiAgLmFpZmYtc3Bpbm5lciB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICB9XG59XG5cbi8qIOmrmOWvueavlOW6puaooeW8jyAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5haWZmLXdlYnZpZXctY29udGFpbmVyIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1haWZmLXRleHQtY29sb3IpO1xuICB9XG4gIFxuICAuYWlmZi13ZWJ2aWV3LXRvb2xiYXIgYnV0dG9uOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1haWZmLXRleHQtY29sb3IpO1xuICB9XG59Il19 */