lean4monaco 1.0.45 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -0
- package/dist/JuliaMono-Regular.ttf +0 -0
- package/dist/css/custom.css +7 -1
- package/dist/infowebview.d.ts +4 -5
- package/dist/infowebview.js +5 -5
- package/dist/lean4-infoview/esm-shims/react-dom.d.ts +5 -0
- package/dist/lean4-infoview/esm-shims/react-jsx-runtime.d.ts +5 -0
- package/dist/lean4-infoview/esm-shims/react.d.ts +5 -0
- package/dist/{vscode-lean4/vscode-lean4/dist/lean4-infoview → lean4-infoview}/index.css +8 -213
- package/dist/lean4-infoview/index.d.ts +16 -0
- package/dist/lean4-infoview/index.development.js +37312 -0
- package/dist/lean4-infoview/index.production.min.js +1528 -0
- package/dist/lean4-infoview/infoview/collapsing.d.ts +12 -0
- package/dist/lean4-infoview/infoview/contexts.d.ts +10 -0
- package/dist/lean4-infoview/infoview/errors.d.ts +14 -0
- package/dist/lean4-infoview/infoview/goalLocation.d.ts +61 -0
- package/dist/lean4-infoview/infoview/goals.d.ts +46 -0
- package/dist/lean4-infoview/infoview/info.d.ts +18 -0
- package/dist/lean4-infoview/infoview/infos.d.ts +2 -0
- package/dist/lean4-infoview/infoview/interactiveCode.d.ts +19 -0
- package/dist/lean4-infoview/infoview/main.d.ts +13 -0
- package/dist/lean4-infoview/infoview/messages.d.ts +19 -0
- package/dist/lean4-infoview/infoview/rpcSessions.d.ts +11 -0
- package/dist/lean4-infoview/infoview/tooltips.d.ts +32 -0
- package/dist/lean4-infoview/infoview/traceExplorer.d.ts +11 -0
- package/dist/lean4-infoview/infoview/userWidget.d.ts +39 -0
- package/dist/{vscode-lean4/lean4-infoview/src → lean4-infoview}/infoview/util.d.ts +8 -5
- package/dist/lean4-infoview/loader.d.ts +20 -0
- package/dist/lean4-infoview/loader.development.js +1006 -0
- package/dist/lean4-infoview/loader.production.min.js +1 -0
- package/dist/lean4-infoview/react-dom.development.js +30537 -0
- package/dist/lean4-infoview/react-dom.production.min.js +21 -0
- package/dist/lean4-infoview/react-jsx-runtime.development.js +1362 -0
- package/dist/lean4-infoview/react-jsx-runtime.production.min.js +1 -0
- package/dist/lean4-infoview/react.development.js +2823 -0
- package/dist/lean4-infoview/react.production.min.js +1 -0
- package/dist/leanmonaco.d.ts +4 -4
- package/dist/leanmonaco.js +10 -9
- package/dist/monaco-lean4/vscode-lean4/package.json +944 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.d.ts +9 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.js +20 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationHoverProvider.d.ts +12 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationHoverProvider.js +40 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.d.ts +20 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.js +79 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationConfig.d.ts +13 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationConfig.js +29 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.d.ts +28 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.js +124 -0
- package/dist/monaco-lean4/vscode-lean4/src/config.d.ts +33 -0
- package/dist/monaco-lean4/vscode-lean4/src/config.js +119 -0
- package/dist/monaco-lean4/vscode-lean4/src/diagnostics/setupNotifs.d.ts +27 -0
- package/dist/monaco-lean4/vscode-lean4/src/diagnostics/setupNotifs.js +133 -0
- package/dist/monaco-lean4/vscode-lean4/src/infoview.d.ts +69 -0
- package/dist/monaco-lean4/vscode-lean4/src/infoview.js +711 -0
- package/dist/monaco-lean4/vscode-lean4/src/leanclient.d.ts +67 -0
- package/dist/monaco-lean4/vscode-lean4/src/leanclient.js +443 -0
- package/dist/monaco-lean4/vscode-lean4/src/rpc.d.ts +16 -0
- package/dist/monaco-lean4/vscode-lean4/src/rpc.js +102 -0
- package/dist/monaco-lean4/vscode-lean4/src/taskgutter.d.ts +11 -0
- package/dist/monaco-lean4/vscode-lean4/src/taskgutter.js +130 -0
- package/dist/{vscode-lean4/vscode-lean4/src/utils/batchBasics.d.ts → monaco-lean4/vscode-lean4/src/utils/batch.d.ts} +8 -11
- package/dist/monaco-lean4/vscode-lean4/src/utils/batch.js +203 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/clientProvider.d.ts +41 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/clientProvider.js +205 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/converters.d.ts +16 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/converters.js +129 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/elan.d.ts +3 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/elan.js +4 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/envPath.d.ts +21 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/envPath.js +53 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/exturi.d.ts +35 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/exturi.js +136 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/fsHelper.d.ts +17 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/fsHelper.js +36 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/leanInstaller.d.ts +37 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/leanInstaller.js +210 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/logger.d.ts +7 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/logger.js +20 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/notifs.d.ts +24 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/notifs.js +110 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/projectInfo.d.ts +9 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/projectInfo.js +125 -0
- package/dist/monacoleanclient.d.ts +1 -2
- package/dist/monacoleanclient.js +3 -3
- package/dist/preconditions.d.ts +2 -2
- package/dist/vscode-lean4/lean4-infoview/package.json +25 -23
- package/dist/vscode-lean4/lean4-infoview/tsconfig.json +6 -2
- package/dist/vscode-lean4/lean4-infoview-api/package.json +1 -1
- package/dist/vscode-lean4/lean4-unicode-input/package.json +1 -1
- package/dist/vscode-lean4/lean4-unicode-input/src/abbreviations.json +12 -12
- package/dist/vscode-lean4/lean4-unicode-input-component/package.json +2 -2
- package/dist/vscode-lean4/package-lock.json +6129 -3245
- package/dist/vscode-lean4/vscode-lean4/language-configuration.json +1 -1
- package/dist/vscode-lean4/vscode-lean4/loogleview/static/index.css +19 -16
- package/dist/vscode-lean4/vscode-lean4/package.json +638 -18
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.d.ts +2 -2
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.js +2 -2
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.d.ts +2 -3
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.js +3 -5
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.d.ts +1 -2
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.js +4 -8
- package/dist/vscode-lean4/vscode-lean4/src/config.d.ts +14 -1
- package/dist/vscode-lean4/vscode-lean4/src/config.js +56 -5
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnoser.d.ts +36 -5
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnoser.js +59 -23
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnostics.d.ts +22 -17
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnostics.js +182 -119
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupNotifs.d.ts +33 -20
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupNotifs.js +235 -89
- package/dist/vscode-lean4/vscode-lean4/src/infoview.d.ts +15 -17
- package/dist/vscode-lean4/vscode-lean4/src/infoview.js +218 -103
- package/dist/vscode-lean4/vscode-lean4/src/leanclient.d.ts +12 -7
- package/dist/vscode-lean4/vscode-lean4/src/leanclient.js +187 -64
- package/dist/vscode-lean4/vscode-lean4/src/taskgutter.d.ts +35 -3
- package/dist/vscode-lean4/vscode-lean4/src/taskgutter.js +533 -93
- package/dist/vscode-lean4/vscode-lean4/src/utils/batch.d.ts +12 -4
- package/dist/vscode-lean4/vscode-lean4/src/utils/batch.js +78 -72
- package/dist/vscode-lean4/vscode-lean4/src/utils/clientProvider.d.ts +9 -9
- package/dist/vscode-lean4/vscode-lean4/src/utils/clientProvider.js +121 -77
- package/dist/vscode-lean4/vscode-lean4/src/utils/converters.d.ts +15 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/converters.js +9 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/elan.d.ts +179 -1
- package/dist/vscode-lean4/vscode-lean4/src/utils/elan.js +422 -3
- package/dist/vscode-lean4/vscode-lean4/src/utils/exturi.d.ts +3 -1
- package/dist/vscode-lean4/vscode-lean4/src/utils/exturi.js +11 -11
- package/dist/vscode-lean4/vscode-lean4/src/utils/internalErrors.d.ts +2 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/internalErrors.js +35 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanCmdRunner.js +1 -1
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanInstaller.d.ts +41 -12
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanInstaller.js +245 -128
- package/dist/vscode-lean4/vscode-lean4/src/utils/notifs.d.ts +27 -22
- package/dist/vscode-lean4/vscode-lean4/src/utils/notifs.js +177 -82
- package/dist/vscode-lean4/vscode-lean4/src/utils/projectInfo.d.ts +11 -4
- package/dist/vscode-lean4/vscode-lean4/src/utils/projectInfo.js +18 -16
- package/dist/vscode-lean4/vscode-lean4/src/utils/semverRegex.d.ts +1 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/semverRegex.js +2 -0
- package/dist/vscode-lean4/vscode-lean4/tsconfig.json +2 -1
- package/dist/vscode-lean4/vscode-lean4/webview/tsconfig.json +3 -1
- package/dist/vscode.css +7 -0
- package/package.json +7 -3
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/vscode-lean4/lean4-infoview/dist/index.css +0 -4366
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/keywords.transforms.json +0 -83
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/keywords.variables.json +0 -47
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/manifest.json +0 -36
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/manifest.transforms.json +0 -368
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/manifest.variables.json +0 -149
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/dist/codicon.css +0 -571
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/dist/codicon.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/dist/codicon.ttf +0 -0
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/package.json +0 -34
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/account.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/activate-breakpoints.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/add.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/archive.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-both.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-circle-down.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-circle-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-circle-right.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-circle-up.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-down.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-right.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-small-down.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-small-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-small-right.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-small-up.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-swap.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-up.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/azure-devops.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/azure.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/beaker-stop.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/beaker.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bell-dot.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bell-slash-dot.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bell-slash.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bell.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/blank.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bold.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/book.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bookmark.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bracket-dot.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bracket-error.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/briefcase.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/broadcast.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/browser.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bug.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/calendar.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/call-incoming.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/call-outgoing.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/case-sensitive.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/check-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/check.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/checklist.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chevron-down.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chevron-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chevron-right.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chevron-up.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chrome-close.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chrome-maximize.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chrome-minimize.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chrome-restore.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-filled.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-large-filled.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-large-outline.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-outline.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-slash.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-small-filled.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-small.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circuit-board.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/clear-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/clippy.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/close-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/close.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/cloud-download.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/cloud-upload.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/cloud.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/code.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/collapse-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/color-mode.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/combine.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/comment-discussion.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/comment-unresolved.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/comment.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/compass-active.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/compass-dot.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/compass.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/copy.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/credit-card.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/dash.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/dashboard.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/database.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-alt-small.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-alt.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-conditional-unverified.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-conditional.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-data-unverified.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-data.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-function-unverified.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-function.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-log-unverified.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-log.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-unsupported.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-console.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-continue-small.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-continue.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-coverage.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-disconnect.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-line-by-line.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-pause.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-rerun.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-restart-frame.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-restart.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-reverse-continue.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-stackframe-active.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-stackframe.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-start.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-step-back.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-step-into.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-step-out.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-step-over.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-stop.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/desktop-download.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/device-camera-video.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/device-camera.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/device-mobile.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-added.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-ignored.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-modified.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-removed.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-renamed.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/discard.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/edit.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/editor-layout.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/ellipsis.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/empty-window.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/error-small.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/error.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/exclude.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/expand-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/export.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/extensions.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/eye-closed.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/eye.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/feedback.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-binary.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-code.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-media.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-pdf.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-submodule.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-symlink-directory.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-symlink-file.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-zip.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/files.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/filter-filled.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/filter.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/flame.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/fold-down.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/fold-up.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/fold.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/folder-active.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/folder-library.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/folder-opened.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/folder.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gear.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gift.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gist-secret.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gist.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-commit.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-compare.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-merge.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-closed.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-create.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-draft.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-go-to-changes.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-new-changes.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/github-action.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/github-alt.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/github-inverted.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/github.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/globe.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/go-to-file.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/grabber.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/graph-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/graph-line.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/graph-scatter.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/graph.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gripper.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/group-by-ref-type.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/heart-filled.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/heart.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/history.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/home.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/horizontal-rule.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/hubot.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/inbox.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/indent.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/info.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/inspect.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/issue-draft.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/issue-reopened.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/issues.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/italic.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/jersey.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/json.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/kebab-vertical.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/key.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/law.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layers-active.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layers-dot.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layers.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-activitybar-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-activitybar-right.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-centered.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-menubar.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-center.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-justify.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-off.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-right.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-sidebar-left-off.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-sidebar-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-sidebar-right-off.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-sidebar-right.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-statusbar.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/library.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/lightbulb-autofix.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/lightbulb.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/link-external.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/link.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-filter.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-flat.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-ordered.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-selection.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-tree.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-unordered.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/live-share.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/loading.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/location.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/lock-small.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/lock.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/magnet.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mail-read.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mail.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/map-filled.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/map.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/markdown.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/megaphone.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mention.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/menu.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/merge.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/milestone.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mirror.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mortar-board.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/move.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/multiple-windows.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mute.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/new-file.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/new-folder.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/newline.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/no-newline.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/note.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/notebook-template.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/notebook.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/octoface.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/open-preview.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/organization.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/output.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/package.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/paintcan.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pass-filled.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pass.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/person-add.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/person.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pie-chart.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pin.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pinned-dirty.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pinned.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/play-circle.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/play.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/plug.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/preserve-case.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/preview.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/primitive-square.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/project.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pulse.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/question.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/quote.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/radio-tower.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/reactions.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/record-keys.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/record-small.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/record.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/redo.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/references.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/refresh.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/regex.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/remote-explorer.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/remote.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/remove.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/replace-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/replace.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/reply.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-clone.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-force-push.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-forked.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-pull.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-push.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/report.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/request-changes.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/rocket.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/root-folder-opened.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/root-folder.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/rss.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/ruby.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/run-above.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/run-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/run-below.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/run-errors.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/save-all.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/save-as.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/save.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/screen-full.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/screen-normal.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/search-stop.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/search.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/server-environment.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/server-process.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/server.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/settings-gear.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/settings.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/shield.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sign-in.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sign-out.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/smiley.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sort-precedence.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/source-control.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/split-horizontal.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/split-vertical.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/squirrel.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/star-empty.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/star-full.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/star-half.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/stop-circle.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-array.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-boolean.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-class.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-color.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-constant.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-enum-member.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-enum.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-event.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-field.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-file.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-interface.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-key.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-keyword.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-method.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-misc.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-namespace.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-numeric.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-operator.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-parameter.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-property.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-ruler.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-snippet.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-string.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-structure.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-variable.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sync-ignored.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sync.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/table.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/tag.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/target.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/tasklist.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/telescope.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-bash.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-cmd.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-debian.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-linux.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-powershell.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-tmux.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-ubuntu.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/text-size.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/three-bars.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/thumbsdown.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/thumbsup.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/tools.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/trash.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/triangle-down.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/triangle-left.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/triangle-right.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/triangle-up.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/twitter.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/type-hierarchy-sub.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/type-hierarchy-super.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/type-hierarchy.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/unfold.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/ungroup-by-ref-type.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/unlock.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/unmute.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/unverified.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/variable-group.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/verified-filled.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/verified.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/versions.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm-active.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm-connect.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm-outline.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm-running.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/wand.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/warning.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/watch.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/whitespace.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/whole-word.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/window.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/word-wrap.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/workspace-trusted.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/workspace-unknown.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/workspace-untrusted.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/zoom-in.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/zoom-out.svg +0 -1
- package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/template/mapping.json +0 -514
- package/dist/vscode-lean4/lean4-infoview/src/infoview/contexts.d.ts +0 -46
- package/dist/vscode-lean4/lean4-infoview/src/infoview/contexts.js +0 -44
- package/dist/vscode-lean4/lean4-infoview/src/infoview/editorConnection.js +0 -41
- package/dist/vscode-lean4/lean4-infoview/src/infoview/event.js +0 -57
- package/dist/vscode-lean4/lean4-infoview/src/infoview/serverVersion.js +0 -25
- package/dist/vscode-lean4/lean4-infoview/src/infoview/util.js +0 -336
- package/dist/vscode-lean4/lean4-unicode-input/dist/abbreviations.json +0 -1829
- package/dist/vscode-lean4/vscode-lean4/dist/lean4-infoview/codicon.ttf +0 -0
- package/dist/vscode-lean4/vscode-lean4/dist/loogleview/static/codicons/codicon.css +0 -571
- package/dist/vscode-lean4/vscode-lean4/dist/loogleview/static/codicons/codicon.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/dist/loogleview/static/codicons/codicon.ttf +0 -0
- package/dist/vscode-lean4/vscode-lean4/dist/loogleview/static/index.css +0 -97
- package/dist/vscode-lean4/vscode-lean4/dist/moogleview/static/codicons/codicon.css +0 -571
- package/dist/vscode-lean4/vscode-lean4/dist/moogleview/static/codicons/codicon.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/dist/moogleview/static/codicons/codicon.ttf +0 -0
- package/dist/vscode-lean4/vscode-lean4/dist/moogleview/static/index.css +0 -198
- package/dist/vscode-lean4/vscode-lean4/node_modules/@types/node/package.json +0 -220
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/keywords.transforms.json +0 -83
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/keywords.variables.json +0 -47
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/manifest.json +0 -36
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/manifest.transforms.json +0 -368
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/manifest.variables.json +0 -149
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/dist/codicon.css +0 -629
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/dist/codicon.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/dist/codicon.ttf +0 -0
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/package.json +0 -35
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/account.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/activate-breakpoints.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/add.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/archive.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-both.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-circle-down.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-circle-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-circle-right.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-circle-up.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-down.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-right.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-small-down.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-small-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-small-right.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-small-up.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-swap.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-up.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/azure-devops.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/azure.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/beaker-stop.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/beaker.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bell-dot.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bell-slash-dot.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bell-slash.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bell.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/blank.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bold.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/book.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bookmark.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bracket-dot.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bracket-error.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/briefcase.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/broadcast.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/browser.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bug.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/calendar.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/call-incoming.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/call-outgoing.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/case-sensitive.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/check-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/check.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/checklist.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chevron-down.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chevron-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chevron-right.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chevron-up.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chip.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chrome-close.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chrome-maximize.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chrome-minimize.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chrome-restore.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-large-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-large.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-slash.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-small-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-small.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circuit-board.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/clear-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/clippy.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/close-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/close.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/cloud-download.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/cloud-upload.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/cloud.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/code-oss.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/code.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/coffee.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/collapse-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/color-mode.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/combine.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/comment-discussion.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/comment-draft.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/comment-unresolved.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/comment.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/compass-active.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/compass-dot.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/compass.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/copilot.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/copy.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/coverage.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/credit-card.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/dash.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/dashboard.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/database.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-alt-small.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-alt.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-conditional-unverified.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-conditional.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-data-unverified.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-data.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-function-unverified.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-function.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-log-unverified.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-log.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-unsupported.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-console.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-continue-small.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-continue.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-coverage.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-disconnect.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-line-by-line.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-pause.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-rerun.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-restart-frame.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-restart.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-reverse-continue.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-stackframe-active.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-stackframe.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-start.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-step-back.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-step-into.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-step-out.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-step-over.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-stop.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/desktop-download.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/device-camera-video.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/device-camera.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/device-mobile.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-added.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-ignored.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-modified.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-multiple.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-removed.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-renamed.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-single.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/discard.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/edit.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/editor-layout.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/ellipsis.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/empty-window.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/error-small.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/error.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/exclude.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/expand-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/export.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/extensions.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/eye-closed.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/eye.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/feedback.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-binary.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-code.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-media.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-pdf.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-submodule.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-symlink-directory.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-symlink-file.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-zip.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/files.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/filter-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/filter.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/flame.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/fold-down.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/fold-up.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/fold.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/folder-active.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/folder-library.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/folder-opened.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/folder.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/game.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gear.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gift.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gist-secret.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gist.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-commit.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-compare.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-fetch.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-merge.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-closed.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-create.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-draft.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-go-to-changes.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-new-changes.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-stash-apply.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-stash-pop.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-stash.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github-action.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github-alt.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github-inverted.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github-project.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/globe.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/go-to-file.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/go-to-search.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/grabber.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/graph-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/graph-line.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/graph-scatter.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/graph.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gripper.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/group-by-ref-type.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/heart-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/heart.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/history.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/home.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/horizontal-rule.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/hubot.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/inbox.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/indent.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/info.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/insert.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/inspect.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/issue-draft.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/issue-reopened.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/issues.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/italic.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/jersey.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/json.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/kebab-vertical.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/key.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/law.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layers-active.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layers-dot.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layers.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-activitybar-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-activitybar-right.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-centered.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-menubar.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-center.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-justify.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-off.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-right.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-sidebar-left-off.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-sidebar-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-sidebar-right-off.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-sidebar-right.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-statusbar.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/library.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lightbulb-autofix.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lightbulb-sparkle.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lightbulb.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/link-external.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/link.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-filter.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-flat.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-ordered.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-selection.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-tree.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-unordered.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/live-share.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/loading.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/location.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lock-small.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lock.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/magnet.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mail-read.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mail.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/map-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/map-vertical-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/map-vertical.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/map.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/markdown.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/megaphone.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mention.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/menu.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/merge.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mic-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mic.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/milestone.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mirror.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mortar-board.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/move.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/multiple-windows.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/music.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mute.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/new-file.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/new-folder.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/newline.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/no-newline.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/note.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/notebook-template.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/notebook.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/octoface.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/open-preview.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/organization.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/output.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/package.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/paintcan.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pass-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pass.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/percentage.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/person-add.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/person.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/piano.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pie-chart.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pin.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pinned-dirty.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pinned.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/play-circle.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/play.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/plug.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/preserve-case.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/preview.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/primitive-square.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/project.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pulse.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/question.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/quote.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/radio-tower.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/reactions.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/record-keys.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/record-small.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/record.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/redo.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/references.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/refresh.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/regex.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/remote-explorer.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/remote.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/remove.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/replace-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/replace.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/reply.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-clone.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-fetch.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-force-push.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-forked.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-pull.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-push.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/report.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/request-changes.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/robot.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/rocket.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/root-folder-opened.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/root-folder.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/rss.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/ruby.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-above.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-all-coverage.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-below.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-coverage.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-errors.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/save-all.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/save-as.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/save.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/screen-full.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/screen-normal.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/search-fuzzy.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/search-stop.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/search.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/send.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/server-environment.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/server-process.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/server.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/settings-gear.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/settings.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/share.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/shield.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sign-in.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sign-out.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/smiley.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/snake.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sort-precedence.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/source-control.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sparkle-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sparkle.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/split-horizontal.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/split-vertical.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/squirrel.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/star-empty.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/star-full.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/star-half.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/stop-circle.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/surround-with.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-array.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-boolean.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-class.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-color.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-constant.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-enum-member.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-enum.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-event.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-field.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-file.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-interface.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-key.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-keyword.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-method.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-misc.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-namespace.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-numeric.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-operator.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-parameter.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-property.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-ruler.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-snippet.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-string.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-structure.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-variable.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sync-ignored.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sync.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/table.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/tag.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/target.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/tasklist.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/telescope.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-bash.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-cmd.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-debian.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-linux.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-powershell.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-tmux.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-ubuntu.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/text-size.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/three-bars.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/thumbsdown-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/thumbsdown.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/thumbsup-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/thumbsup.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/tools.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/trash.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/triangle-down.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/triangle-left.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/triangle-right.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/triangle-up.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/twitter.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/type-hierarchy-sub.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/type-hierarchy-super.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/type-hierarchy.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/unfold.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/ungroup-by-ref-type.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/unlock.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/unmute.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/unverified.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/variable-group.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/verified-filled.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/verified.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/versions.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm-active.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm-connect.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm-outline.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm-running.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vr.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vscode-insiders.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vscode.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/wand.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/warning.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/watch.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/whitespace.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/whole-word.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/window.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/word-wrap.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/workspace-trusted.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/workspace-unknown.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/workspace-untrusted.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/zoom-in.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/zoom-out.svg +0 -1
- package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/template/mapping.json +0 -571
- package/dist/vscode-lean4/vscode-lean4/node_modules/brace-expansion/package.json +0 -46
- package/dist/vscode-lean4/vscode-lean4/node_modules/glob/dist/commonjs/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/glob/dist/esm/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/glob/package.json +0 -99
- package/dist/vscode-lean4/vscode-lean4/node_modules/jackspeak/dist/commonjs/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/jackspeak/dist/esm/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/jackspeak/package.json +0 -94
- package/dist/vscode-lean4/vscode-lean4/node_modules/lru-cache/dist/commonjs/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/lru-cache/dist/esm/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/lru-cache/package.json +0 -115
- package/dist/vscode-lean4/vscode-lean4/node_modules/minimatch/dist/commonjs/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/minimatch/dist/esm/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/minimatch/package.json +0 -82
- package/dist/vscode-lean4/vscode-lean4/node_modules/path-scurry/dist/commonjs/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/path-scurry/dist/esm/package.json +0 -3
- package/dist/vscode-lean4/vscode-lean4/node_modules/path-scurry/package.json +0 -88
- package/dist/vscode-lean4/vscode-lean4/node_modules/undici-types/package.json +0 -55
- package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-jsonrpc/package.json +0 -45
- package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageclient/node_modules/minimatch/package.json +0 -35
- package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageclient/package.json +0 -50
- package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageserver-protocol/metaModel.schema.json +0 -783
- package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageserver-protocol/package.json +0 -45
- package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageserver-types/package.json +0 -32
- package/dist/vscode-lean4/vscode-lean4/src/leanclientsetup.d.ts +0 -3
- package/dist/vscode-lean4/vscode-lean4/src/leanclientsetup.js +0 -58
- package/dist/vscode-lean4/vscode-lean4/src/utils/batchBasics.js +0 -48
- package/dist/vscode-lean4/vscode-lean4/src/utils/batchTypes.d.ts +0 -14
- package/dist/vscode-lean4/vscode-lean4/src/utils/batchTypes.js +0 -22
- /package/dist/{vscode-lean4/lean4-infoview/dist → lean4-infoview}/codicon.ttf +0 -0
- /package/dist/{vscode-lean4/lean4-infoview/src → lean4-infoview}/infoview/editorConnection.d.ts +0 -0
- /package/dist/{vscode-lean4/lean4-infoview/src → lean4-infoview}/infoview/event.d.ts +0 -0
- /package/dist/{vscode-lean4/lean4-infoview/src → lean4-infoview}/infoview/serverVersion.d.ts +0 -0
|
@@ -0,0 +1,1362 @@
|
|
|
1
|
+
import require$$0 from 'react';
|
|
2
|
+
|
|
3
|
+
function _mergeNamespaces(n, m) {
|
|
4
|
+
m.forEach(function (e) {
|
|
5
|
+
e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
|
|
6
|
+
if (k !== 'default' && !(k in n)) {
|
|
7
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
8
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return e[k]; }
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
return Object.freeze(n);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function getDefaultExportFromCjs (x) {
|
|
19
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var jsxRuntimeExports = {};
|
|
23
|
+
var jsxRuntime$1 = {
|
|
24
|
+
get exports(){ return jsxRuntimeExports; },
|
|
25
|
+
set exports(v){ jsxRuntimeExports = v; },
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
var reactJsxRuntime_development = {};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @license React
|
|
32
|
+
* react-jsx-runtime.development.js
|
|
33
|
+
*
|
|
34
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
35
|
+
*
|
|
36
|
+
* This source code is licensed under the MIT license found in the
|
|
37
|
+
* LICENSE file in the root directory of this source tree.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
{
|
|
41
|
+
(function() {
|
|
42
|
+
|
|
43
|
+
var React = require$$0;
|
|
44
|
+
|
|
45
|
+
// ATTENTION
|
|
46
|
+
// When adding new symbols to this file,
|
|
47
|
+
// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
|
|
48
|
+
// The Symbol used to tag the ReactElement-like types.
|
|
49
|
+
var REACT_ELEMENT_TYPE = Symbol.for('react.element');
|
|
50
|
+
var REACT_PORTAL_TYPE = Symbol.for('react.portal');
|
|
51
|
+
var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
|
|
52
|
+
var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
|
|
53
|
+
var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
|
|
54
|
+
var REACT_PROVIDER_TYPE = Symbol.for('react.provider');
|
|
55
|
+
var REACT_CONTEXT_TYPE = Symbol.for('react.context');
|
|
56
|
+
var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
|
|
57
|
+
var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
|
|
58
|
+
var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
|
|
59
|
+
var REACT_MEMO_TYPE = Symbol.for('react.memo');
|
|
60
|
+
var REACT_LAZY_TYPE = Symbol.for('react.lazy');
|
|
61
|
+
var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
|
|
62
|
+
var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
|
|
63
|
+
var FAUX_ITERATOR_SYMBOL = '@@iterator';
|
|
64
|
+
function getIteratorFn(maybeIterable) {
|
|
65
|
+
if (maybeIterable === null || typeof maybeIterable !== 'object') {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
|
|
70
|
+
|
|
71
|
+
if (typeof maybeIterator === 'function') {
|
|
72
|
+
return maybeIterator;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
79
|
+
|
|
80
|
+
function error(format) {
|
|
81
|
+
{
|
|
82
|
+
{
|
|
83
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
84
|
+
args[_key2 - 1] = arguments[_key2];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
printWarning('error', format, args);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function printWarning(level, format, args) {
|
|
93
|
+
// When changing this logic, you might want to also
|
|
94
|
+
// update consoleWithStackDev.www.js as well.
|
|
95
|
+
{
|
|
96
|
+
var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
|
|
97
|
+
var stack = ReactDebugCurrentFrame.getStackAddendum();
|
|
98
|
+
|
|
99
|
+
if (stack !== '') {
|
|
100
|
+
format += '%s';
|
|
101
|
+
args = args.concat([stack]);
|
|
102
|
+
} // eslint-disable-next-line react-internal/safe-string-coercion
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
var argsWithFormat = args.map(function (item) {
|
|
106
|
+
return String(item);
|
|
107
|
+
}); // Careful: RN currently depends on this prefix
|
|
108
|
+
|
|
109
|
+
argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
|
|
110
|
+
// breaks IE9: https://github.com/facebook/react/issues/13610
|
|
111
|
+
// eslint-disable-next-line react-internal/no-production-logging
|
|
112
|
+
|
|
113
|
+
Function.prototype.apply.call(console[level], console, argsWithFormat);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// -----------------------------------------------------------------------------
|
|
118
|
+
|
|
119
|
+
var enableScopeAPI = false; // Experimental Create Event Handle API.
|
|
120
|
+
var enableCacheElement = false;
|
|
121
|
+
var enableTransitionTracing = false; // No known bugs, but needs performance testing
|
|
122
|
+
|
|
123
|
+
var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber
|
|
124
|
+
// stuff. Intended to enable React core members to more easily debug scheduling
|
|
125
|
+
// issues in DEV builds.
|
|
126
|
+
|
|
127
|
+
var enableDebugTracing = false; // Track which Fiber(s) schedule render work.
|
|
128
|
+
|
|
129
|
+
var REACT_MODULE_REFERENCE;
|
|
130
|
+
|
|
131
|
+
{
|
|
132
|
+
REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function isValidElementType(type) {
|
|
136
|
+
if (typeof type === 'string' || typeof type === 'function') {
|
|
137
|
+
return true;
|
|
138
|
+
} // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (typeof type === 'object' && type !== null) {
|
|
146
|
+
if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
|
|
147
|
+
// types supported by any Flight configuration anywhere since
|
|
148
|
+
// we don't know which Flight build this will end up being used
|
|
149
|
+
// with.
|
|
150
|
+
type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function getWrappedName(outerType, innerType, wrapperName) {
|
|
159
|
+
var displayName = outerType.displayName;
|
|
160
|
+
|
|
161
|
+
if (displayName) {
|
|
162
|
+
return displayName;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
var functionName = innerType.displayName || innerType.name || '';
|
|
166
|
+
return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName;
|
|
167
|
+
} // Keep in sync with react-reconciler/getComponentNameFromFiber
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
function getContextName(type) {
|
|
171
|
+
return type.displayName || 'Context';
|
|
172
|
+
} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
function getComponentNameFromType(type) {
|
|
176
|
+
if (type == null) {
|
|
177
|
+
// Host root, text node or just invalid type.
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
{
|
|
182
|
+
if (typeof type.tag === 'number') {
|
|
183
|
+
error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (typeof type === 'function') {
|
|
188
|
+
return type.displayName || type.name || null;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (typeof type === 'string') {
|
|
192
|
+
return type;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
switch (type) {
|
|
196
|
+
case REACT_FRAGMENT_TYPE:
|
|
197
|
+
return 'Fragment';
|
|
198
|
+
|
|
199
|
+
case REACT_PORTAL_TYPE:
|
|
200
|
+
return 'Portal';
|
|
201
|
+
|
|
202
|
+
case REACT_PROFILER_TYPE:
|
|
203
|
+
return 'Profiler';
|
|
204
|
+
|
|
205
|
+
case REACT_STRICT_MODE_TYPE:
|
|
206
|
+
return 'StrictMode';
|
|
207
|
+
|
|
208
|
+
case REACT_SUSPENSE_TYPE:
|
|
209
|
+
return 'Suspense';
|
|
210
|
+
|
|
211
|
+
case REACT_SUSPENSE_LIST_TYPE:
|
|
212
|
+
return 'SuspenseList';
|
|
213
|
+
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (typeof type === 'object') {
|
|
217
|
+
switch (type.$$typeof) {
|
|
218
|
+
case REACT_CONTEXT_TYPE:
|
|
219
|
+
var context = type;
|
|
220
|
+
return getContextName(context) + '.Consumer';
|
|
221
|
+
|
|
222
|
+
case REACT_PROVIDER_TYPE:
|
|
223
|
+
var provider = type;
|
|
224
|
+
return getContextName(provider._context) + '.Provider';
|
|
225
|
+
|
|
226
|
+
case REACT_FORWARD_REF_TYPE:
|
|
227
|
+
return getWrappedName(type, type.render, 'ForwardRef');
|
|
228
|
+
|
|
229
|
+
case REACT_MEMO_TYPE:
|
|
230
|
+
var outerName = type.displayName || null;
|
|
231
|
+
|
|
232
|
+
if (outerName !== null) {
|
|
233
|
+
return outerName;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return getComponentNameFromType(type.type) || 'Memo';
|
|
237
|
+
|
|
238
|
+
case REACT_LAZY_TYPE:
|
|
239
|
+
{
|
|
240
|
+
var lazyComponent = type;
|
|
241
|
+
var payload = lazyComponent._payload;
|
|
242
|
+
var init = lazyComponent._init;
|
|
243
|
+
|
|
244
|
+
try {
|
|
245
|
+
return getComponentNameFromType(init(payload));
|
|
246
|
+
} catch (x) {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// eslint-disable-next-line no-fallthrough
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
var assign = Object.assign;
|
|
259
|
+
|
|
260
|
+
// Helpers to patch console.logs to avoid logging during side-effect free
|
|
261
|
+
// replaying on render function. This currently only patches the object
|
|
262
|
+
// lazily which won't cover if the log function was extracted eagerly.
|
|
263
|
+
// We could also eagerly patch the method.
|
|
264
|
+
var disabledDepth = 0;
|
|
265
|
+
var prevLog;
|
|
266
|
+
var prevInfo;
|
|
267
|
+
var prevWarn;
|
|
268
|
+
var prevError;
|
|
269
|
+
var prevGroup;
|
|
270
|
+
var prevGroupCollapsed;
|
|
271
|
+
var prevGroupEnd;
|
|
272
|
+
|
|
273
|
+
function disabledLog() {}
|
|
274
|
+
|
|
275
|
+
disabledLog.__reactDisabledLog = true;
|
|
276
|
+
function disableLogs() {
|
|
277
|
+
{
|
|
278
|
+
if (disabledDepth === 0) {
|
|
279
|
+
/* eslint-disable react-internal/no-production-logging */
|
|
280
|
+
prevLog = console.log;
|
|
281
|
+
prevInfo = console.info;
|
|
282
|
+
prevWarn = console.warn;
|
|
283
|
+
prevError = console.error;
|
|
284
|
+
prevGroup = console.group;
|
|
285
|
+
prevGroupCollapsed = console.groupCollapsed;
|
|
286
|
+
prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099
|
|
287
|
+
|
|
288
|
+
var props = {
|
|
289
|
+
configurable: true,
|
|
290
|
+
enumerable: true,
|
|
291
|
+
value: disabledLog,
|
|
292
|
+
writable: true
|
|
293
|
+
}; // $FlowFixMe Flow thinks console is immutable.
|
|
294
|
+
|
|
295
|
+
Object.defineProperties(console, {
|
|
296
|
+
info: props,
|
|
297
|
+
log: props,
|
|
298
|
+
warn: props,
|
|
299
|
+
error: props,
|
|
300
|
+
group: props,
|
|
301
|
+
groupCollapsed: props,
|
|
302
|
+
groupEnd: props
|
|
303
|
+
});
|
|
304
|
+
/* eslint-enable react-internal/no-production-logging */
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
disabledDepth++;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
function reenableLogs() {
|
|
311
|
+
{
|
|
312
|
+
disabledDepth--;
|
|
313
|
+
|
|
314
|
+
if (disabledDepth === 0) {
|
|
315
|
+
/* eslint-disable react-internal/no-production-logging */
|
|
316
|
+
var props = {
|
|
317
|
+
configurable: true,
|
|
318
|
+
enumerable: true,
|
|
319
|
+
writable: true
|
|
320
|
+
}; // $FlowFixMe Flow thinks console is immutable.
|
|
321
|
+
|
|
322
|
+
Object.defineProperties(console, {
|
|
323
|
+
log: assign({}, props, {
|
|
324
|
+
value: prevLog
|
|
325
|
+
}),
|
|
326
|
+
info: assign({}, props, {
|
|
327
|
+
value: prevInfo
|
|
328
|
+
}),
|
|
329
|
+
warn: assign({}, props, {
|
|
330
|
+
value: prevWarn
|
|
331
|
+
}),
|
|
332
|
+
error: assign({}, props, {
|
|
333
|
+
value: prevError
|
|
334
|
+
}),
|
|
335
|
+
group: assign({}, props, {
|
|
336
|
+
value: prevGroup
|
|
337
|
+
}),
|
|
338
|
+
groupCollapsed: assign({}, props, {
|
|
339
|
+
value: prevGroupCollapsed
|
|
340
|
+
}),
|
|
341
|
+
groupEnd: assign({}, props, {
|
|
342
|
+
value: prevGroupEnd
|
|
343
|
+
})
|
|
344
|
+
});
|
|
345
|
+
/* eslint-enable react-internal/no-production-logging */
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
if (disabledDepth < 0) {
|
|
349
|
+
error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
|
|
355
|
+
var prefix;
|
|
356
|
+
function describeBuiltInComponentFrame(name, source, ownerFn) {
|
|
357
|
+
{
|
|
358
|
+
if (prefix === undefined) {
|
|
359
|
+
// Extract the VM specific prefix used by each line.
|
|
360
|
+
try {
|
|
361
|
+
throw Error();
|
|
362
|
+
} catch (x) {
|
|
363
|
+
var match = x.stack.trim().match(/\n( *(at )?)/);
|
|
364
|
+
prefix = match && match[1] || '';
|
|
365
|
+
}
|
|
366
|
+
} // We use the prefix to ensure our stacks line up with native stack frames.
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
return '\n' + prefix + name;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
var reentry = false;
|
|
373
|
+
var componentFrameCache;
|
|
374
|
+
|
|
375
|
+
{
|
|
376
|
+
var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
|
|
377
|
+
componentFrameCache = new PossiblyWeakMap();
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
function describeNativeComponentFrame(fn, construct) {
|
|
381
|
+
// If something asked for a stack inside a fake render, it should get ignored.
|
|
382
|
+
if ( !fn || reentry) {
|
|
383
|
+
return '';
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
{
|
|
387
|
+
var frame = componentFrameCache.get(fn);
|
|
388
|
+
|
|
389
|
+
if (frame !== undefined) {
|
|
390
|
+
return frame;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
var control;
|
|
395
|
+
reentry = true;
|
|
396
|
+
var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.
|
|
397
|
+
|
|
398
|
+
Error.prepareStackTrace = undefined;
|
|
399
|
+
var previousDispatcher;
|
|
400
|
+
|
|
401
|
+
{
|
|
402
|
+
previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function
|
|
403
|
+
// for warnings.
|
|
404
|
+
|
|
405
|
+
ReactCurrentDispatcher.current = null;
|
|
406
|
+
disableLogs();
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
try {
|
|
410
|
+
// This should throw.
|
|
411
|
+
if (construct) {
|
|
412
|
+
// Something should be setting the props in the constructor.
|
|
413
|
+
var Fake = function () {
|
|
414
|
+
throw Error();
|
|
415
|
+
}; // $FlowFixMe
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
Object.defineProperty(Fake.prototype, 'props', {
|
|
419
|
+
set: function () {
|
|
420
|
+
// We use a throwing setter instead of frozen or non-writable props
|
|
421
|
+
// because that won't throw in a non-strict mode function.
|
|
422
|
+
throw Error();
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
if (typeof Reflect === 'object' && Reflect.construct) {
|
|
427
|
+
// We construct a different control for this case to include any extra
|
|
428
|
+
// frames added by the construct call.
|
|
429
|
+
try {
|
|
430
|
+
Reflect.construct(Fake, []);
|
|
431
|
+
} catch (x) {
|
|
432
|
+
control = x;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
Reflect.construct(fn, [], Fake);
|
|
436
|
+
} else {
|
|
437
|
+
try {
|
|
438
|
+
Fake.call();
|
|
439
|
+
} catch (x) {
|
|
440
|
+
control = x;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
fn.call(Fake.prototype);
|
|
444
|
+
}
|
|
445
|
+
} else {
|
|
446
|
+
try {
|
|
447
|
+
throw Error();
|
|
448
|
+
} catch (x) {
|
|
449
|
+
control = x;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
fn();
|
|
453
|
+
}
|
|
454
|
+
} catch (sample) {
|
|
455
|
+
// This is inlined manually because closure doesn't do it for us.
|
|
456
|
+
if (sample && control && typeof sample.stack === 'string') {
|
|
457
|
+
// This extracts the first frame from the sample that isn't also in the control.
|
|
458
|
+
// Skipping one frame that we assume is the frame that calls the two.
|
|
459
|
+
var sampleLines = sample.stack.split('\n');
|
|
460
|
+
var controlLines = control.stack.split('\n');
|
|
461
|
+
var s = sampleLines.length - 1;
|
|
462
|
+
var c = controlLines.length - 1;
|
|
463
|
+
|
|
464
|
+
while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
|
|
465
|
+
// We expect at least one stack frame to be shared.
|
|
466
|
+
// Typically this will be the root most one. However, stack frames may be
|
|
467
|
+
// cut off due to maximum stack limits. In this case, one maybe cut off
|
|
468
|
+
// earlier than the other. We assume that the sample is longer or the same
|
|
469
|
+
// and there for cut off earlier. So we should find the root most frame in
|
|
470
|
+
// the sample somewhere in the control.
|
|
471
|
+
c--;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
for (; s >= 1 && c >= 0; s--, c--) {
|
|
475
|
+
// Next we find the first one that isn't the same which should be the
|
|
476
|
+
// frame that called our sample function and the control.
|
|
477
|
+
if (sampleLines[s] !== controlLines[c]) {
|
|
478
|
+
// In V8, the first line is describing the message but other VMs don't.
|
|
479
|
+
// If we're about to return the first line, and the control is also on the same
|
|
480
|
+
// line, that's a pretty good indicator that our sample threw at same line as
|
|
481
|
+
// the control. I.e. before we entered the sample frame. So we ignore this result.
|
|
482
|
+
// This can happen if you passed a class to function component, or non-function.
|
|
483
|
+
if (s !== 1 || c !== 1) {
|
|
484
|
+
do {
|
|
485
|
+
s--;
|
|
486
|
+
c--; // We may still have similar intermediate frames from the construct call.
|
|
487
|
+
// The next one that isn't the same should be our match though.
|
|
488
|
+
|
|
489
|
+
if (c < 0 || sampleLines[s] !== controlLines[c]) {
|
|
490
|
+
// V8 adds a "new" prefix for native classes. Let's remove it to make it prettier.
|
|
491
|
+
var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled "<anonymous>"
|
|
492
|
+
// but we have a user-provided "displayName"
|
|
493
|
+
// splice it in to make the stack more readable.
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
if (fn.displayName && _frame.includes('<anonymous>')) {
|
|
497
|
+
_frame = _frame.replace('<anonymous>', fn.displayName);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
{
|
|
501
|
+
if (typeof fn === 'function') {
|
|
502
|
+
componentFrameCache.set(fn, _frame);
|
|
503
|
+
}
|
|
504
|
+
} // Return the line we found.
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
return _frame;
|
|
508
|
+
}
|
|
509
|
+
} while (s >= 1 && c >= 0);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
break;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
} finally {
|
|
517
|
+
reentry = false;
|
|
518
|
+
|
|
519
|
+
{
|
|
520
|
+
ReactCurrentDispatcher.current = previousDispatcher;
|
|
521
|
+
reenableLogs();
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
Error.prepareStackTrace = previousPrepareStackTrace;
|
|
525
|
+
} // Fallback to just using the name if we couldn't make it throw.
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
var name = fn ? fn.displayName || fn.name : '';
|
|
529
|
+
var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';
|
|
530
|
+
|
|
531
|
+
{
|
|
532
|
+
if (typeof fn === 'function') {
|
|
533
|
+
componentFrameCache.set(fn, syntheticFrame);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
return syntheticFrame;
|
|
538
|
+
}
|
|
539
|
+
function describeFunctionComponentFrame(fn, source, ownerFn) {
|
|
540
|
+
{
|
|
541
|
+
return describeNativeComponentFrame(fn, false);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
function shouldConstruct(Component) {
|
|
546
|
+
var prototype = Component.prototype;
|
|
547
|
+
return !!(prototype && prototype.isReactComponent);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
|
|
551
|
+
|
|
552
|
+
if (type == null) {
|
|
553
|
+
return '';
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
if (typeof type === 'function') {
|
|
557
|
+
{
|
|
558
|
+
return describeNativeComponentFrame(type, shouldConstruct(type));
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
if (typeof type === 'string') {
|
|
563
|
+
return describeBuiltInComponentFrame(type);
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
switch (type) {
|
|
567
|
+
case REACT_SUSPENSE_TYPE:
|
|
568
|
+
return describeBuiltInComponentFrame('Suspense');
|
|
569
|
+
|
|
570
|
+
case REACT_SUSPENSE_LIST_TYPE:
|
|
571
|
+
return describeBuiltInComponentFrame('SuspenseList');
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
if (typeof type === 'object') {
|
|
575
|
+
switch (type.$$typeof) {
|
|
576
|
+
case REACT_FORWARD_REF_TYPE:
|
|
577
|
+
return describeFunctionComponentFrame(type.render);
|
|
578
|
+
|
|
579
|
+
case REACT_MEMO_TYPE:
|
|
580
|
+
// Memo may contain any component type so we recursively resolve it.
|
|
581
|
+
return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
|
|
582
|
+
|
|
583
|
+
case REACT_LAZY_TYPE:
|
|
584
|
+
{
|
|
585
|
+
var lazyComponent = type;
|
|
586
|
+
var payload = lazyComponent._payload;
|
|
587
|
+
var init = lazyComponent._init;
|
|
588
|
+
|
|
589
|
+
try {
|
|
590
|
+
// Lazy may contain any component type so we recursively resolve it.
|
|
591
|
+
return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
|
|
592
|
+
} catch (x) {}
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
return '';
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
601
|
+
|
|
602
|
+
var loggedTypeFailures = {};
|
|
603
|
+
var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
|
|
604
|
+
|
|
605
|
+
function setCurrentlyValidatingElement(element) {
|
|
606
|
+
{
|
|
607
|
+
if (element) {
|
|
608
|
+
var owner = element._owner;
|
|
609
|
+
var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
|
|
610
|
+
ReactDebugCurrentFrame.setExtraStackFrame(stack);
|
|
611
|
+
} else {
|
|
612
|
+
ReactDebugCurrentFrame.setExtraStackFrame(null);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
function checkPropTypes(typeSpecs, values, location, componentName, element) {
|
|
618
|
+
{
|
|
619
|
+
// $FlowFixMe This is okay but Flow doesn't know it.
|
|
620
|
+
var has = Function.call.bind(hasOwnProperty);
|
|
621
|
+
|
|
622
|
+
for (var typeSpecName in typeSpecs) {
|
|
623
|
+
if (has(typeSpecs, typeSpecName)) {
|
|
624
|
+
var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to
|
|
625
|
+
// fail the render phase where it didn't fail before. So we log it.
|
|
626
|
+
// After these have been cleaned up, we'll let them throw.
|
|
627
|
+
|
|
628
|
+
try {
|
|
629
|
+
// This is intentionally an invariant that gets caught. It's the same
|
|
630
|
+
// behavior as without this statement except with a better message.
|
|
631
|
+
if (typeof typeSpecs[typeSpecName] !== 'function') {
|
|
632
|
+
// eslint-disable-next-line react-internal/prod-error-codes
|
|
633
|
+
var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');
|
|
634
|
+
err.name = 'Invariant Violation';
|
|
635
|
+
throw err;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');
|
|
639
|
+
} catch (ex) {
|
|
640
|
+
error$1 = ex;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
if (error$1 && !(error$1 instanceof Error)) {
|
|
644
|
+
setCurrentlyValidatingElement(element);
|
|
645
|
+
|
|
646
|
+
error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);
|
|
647
|
+
|
|
648
|
+
setCurrentlyValidatingElement(null);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
|
|
652
|
+
// Only monitor this failure once because there tends to be a lot of the
|
|
653
|
+
// same error.
|
|
654
|
+
loggedTypeFailures[error$1.message] = true;
|
|
655
|
+
setCurrentlyValidatingElement(element);
|
|
656
|
+
|
|
657
|
+
error('Failed %s type: %s', location, error$1.message);
|
|
658
|
+
|
|
659
|
+
setCurrentlyValidatingElement(null);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare
|
|
667
|
+
|
|
668
|
+
function isArray(a) {
|
|
669
|
+
return isArrayImpl(a);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/*
|
|
673
|
+
* The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol
|
|
674
|
+
* and Temporal.* types. See https://github.com/facebook/react/pull/22064.
|
|
675
|
+
*
|
|
676
|
+
* The functions in this module will throw an easier-to-understand,
|
|
677
|
+
* easier-to-debug exception with a clear errors message message explaining the
|
|
678
|
+
* problem. (Instead of a confusing exception thrown inside the implementation
|
|
679
|
+
* of the `value` object).
|
|
680
|
+
*/
|
|
681
|
+
// $FlowFixMe only called in DEV, so void return is not possible.
|
|
682
|
+
function typeName(value) {
|
|
683
|
+
{
|
|
684
|
+
// toStringTag is needed for namespaced types like Temporal.Instant
|
|
685
|
+
var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;
|
|
686
|
+
var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';
|
|
687
|
+
return type;
|
|
688
|
+
}
|
|
689
|
+
} // $FlowFixMe only called in DEV, so void return is not possible.
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
function willCoercionThrow(value) {
|
|
693
|
+
{
|
|
694
|
+
try {
|
|
695
|
+
testStringCoercion(value);
|
|
696
|
+
return false;
|
|
697
|
+
} catch (e) {
|
|
698
|
+
return true;
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
function testStringCoercion(value) {
|
|
704
|
+
// If you ended up here by following an exception call stack, here's what's
|
|
705
|
+
// happened: you supplied an object or symbol value to React (as a prop, key,
|
|
706
|
+
// DOM attribute, CSS property, string ref, etc.) and when React tried to
|
|
707
|
+
// coerce it to a string using `'' + value`, an exception was thrown.
|
|
708
|
+
//
|
|
709
|
+
// The most common types that will cause this exception are `Symbol` instances
|
|
710
|
+
// and Temporal objects like `Temporal.Instant`. But any object that has a
|
|
711
|
+
// `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this
|
|
712
|
+
// exception. (Library authors do this to prevent users from using built-in
|
|
713
|
+
// numeric operators like `+` or comparison operators like `>=` because custom
|
|
714
|
+
// methods are needed to perform accurate arithmetic or comparison.)
|
|
715
|
+
//
|
|
716
|
+
// To fix the problem, coerce this object or symbol value to a string before
|
|
717
|
+
// passing it to React. The most reliable way is usually `String(value)`.
|
|
718
|
+
//
|
|
719
|
+
// To find which value is throwing, check the browser or debugger console.
|
|
720
|
+
// Before this exception was thrown, there should be `console.error` output
|
|
721
|
+
// that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the
|
|
722
|
+
// problem and how that type was used: key, atrribute, input value prop, etc.
|
|
723
|
+
// In most cases, this console output also shows the component and its
|
|
724
|
+
// ancestor components where the exception happened.
|
|
725
|
+
//
|
|
726
|
+
// eslint-disable-next-line react-internal/safe-string-coercion
|
|
727
|
+
return '' + value;
|
|
728
|
+
}
|
|
729
|
+
function checkKeyStringCoercion(value) {
|
|
730
|
+
{
|
|
731
|
+
if (willCoercionThrow(value)) {
|
|
732
|
+
error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));
|
|
733
|
+
|
|
734
|
+
return testStringCoercion(value); // throw (to help callers find troubleshooting comments)
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;
|
|
740
|
+
var RESERVED_PROPS = {
|
|
741
|
+
key: true,
|
|
742
|
+
ref: true,
|
|
743
|
+
__self: true,
|
|
744
|
+
__source: true
|
|
745
|
+
};
|
|
746
|
+
var specialPropKeyWarningShown;
|
|
747
|
+
var specialPropRefWarningShown;
|
|
748
|
+
var didWarnAboutStringRefs;
|
|
749
|
+
|
|
750
|
+
{
|
|
751
|
+
didWarnAboutStringRefs = {};
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
function hasValidRef(config) {
|
|
755
|
+
{
|
|
756
|
+
if (hasOwnProperty.call(config, 'ref')) {
|
|
757
|
+
var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
|
|
758
|
+
|
|
759
|
+
if (getter && getter.isReactWarning) {
|
|
760
|
+
return false;
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
return config.ref !== undefined;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
function hasValidKey(config) {
|
|
769
|
+
{
|
|
770
|
+
if (hasOwnProperty.call(config, 'key')) {
|
|
771
|
+
var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
|
|
772
|
+
|
|
773
|
+
if (getter && getter.isReactWarning) {
|
|
774
|
+
return false;
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
return config.key !== undefined;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
function warnIfStringRefCannotBeAutoConverted(config, self) {
|
|
783
|
+
{
|
|
784
|
+
if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {
|
|
785
|
+
var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);
|
|
786
|
+
|
|
787
|
+
if (!didWarnAboutStringRefs[componentName]) {
|
|
788
|
+
error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);
|
|
789
|
+
|
|
790
|
+
didWarnAboutStringRefs[componentName] = true;
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
function defineKeyPropWarningGetter(props, displayName) {
|
|
797
|
+
{
|
|
798
|
+
var warnAboutAccessingKey = function () {
|
|
799
|
+
if (!specialPropKeyWarningShown) {
|
|
800
|
+
specialPropKeyWarningShown = true;
|
|
801
|
+
|
|
802
|
+
error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
|
|
803
|
+
}
|
|
804
|
+
};
|
|
805
|
+
|
|
806
|
+
warnAboutAccessingKey.isReactWarning = true;
|
|
807
|
+
Object.defineProperty(props, 'key', {
|
|
808
|
+
get: warnAboutAccessingKey,
|
|
809
|
+
configurable: true
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
function defineRefPropWarningGetter(props, displayName) {
|
|
815
|
+
{
|
|
816
|
+
var warnAboutAccessingRef = function () {
|
|
817
|
+
if (!specialPropRefWarningShown) {
|
|
818
|
+
specialPropRefWarningShown = true;
|
|
819
|
+
|
|
820
|
+
error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
|
|
821
|
+
}
|
|
822
|
+
};
|
|
823
|
+
|
|
824
|
+
warnAboutAccessingRef.isReactWarning = true;
|
|
825
|
+
Object.defineProperty(props, 'ref', {
|
|
826
|
+
get: warnAboutAccessingRef,
|
|
827
|
+
configurable: true
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
/**
|
|
832
|
+
* Factory method to create a new React element. This no longer adheres to
|
|
833
|
+
* the class pattern, so do not use new to call it. Also, instanceof check
|
|
834
|
+
* will not work. Instead test $$typeof field against Symbol.for('react.element') to check
|
|
835
|
+
* if something is a React Element.
|
|
836
|
+
*
|
|
837
|
+
* @param {*} type
|
|
838
|
+
* @param {*} props
|
|
839
|
+
* @param {*} key
|
|
840
|
+
* @param {string|object} ref
|
|
841
|
+
* @param {*} owner
|
|
842
|
+
* @param {*} self A *temporary* helper to detect places where `this` is
|
|
843
|
+
* different from the `owner` when React.createElement is called, so that we
|
|
844
|
+
* can warn. We want to get rid of owner and replace string `ref`s with arrow
|
|
845
|
+
* functions, and as long as `this` and owner are the same, there will be no
|
|
846
|
+
* change in behavior.
|
|
847
|
+
* @param {*} source An annotation object (added by a transpiler or otherwise)
|
|
848
|
+
* indicating filename, line number, and/or other information.
|
|
849
|
+
* @internal
|
|
850
|
+
*/
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
var ReactElement = function (type, key, ref, self, source, owner, props) {
|
|
854
|
+
var element = {
|
|
855
|
+
// This tag allows us to uniquely identify this as a React Element
|
|
856
|
+
$$typeof: REACT_ELEMENT_TYPE,
|
|
857
|
+
// Built-in properties that belong on the element
|
|
858
|
+
type: type,
|
|
859
|
+
key: key,
|
|
860
|
+
ref: ref,
|
|
861
|
+
props: props,
|
|
862
|
+
// Record the component responsible for creating this element.
|
|
863
|
+
_owner: owner
|
|
864
|
+
};
|
|
865
|
+
|
|
866
|
+
{
|
|
867
|
+
// The validation flag is currently mutative. We put it on
|
|
868
|
+
// an external backing store so that we can freeze the whole object.
|
|
869
|
+
// This can be replaced with a WeakMap once they are implemented in
|
|
870
|
+
// commonly used development environments.
|
|
871
|
+
element._store = {}; // To make comparing ReactElements easier for testing purposes, we make
|
|
872
|
+
// the validation flag non-enumerable (where possible, which should
|
|
873
|
+
// include every environment we run tests in), so the test framework
|
|
874
|
+
// ignores it.
|
|
875
|
+
|
|
876
|
+
Object.defineProperty(element._store, 'validated', {
|
|
877
|
+
configurable: false,
|
|
878
|
+
enumerable: false,
|
|
879
|
+
writable: true,
|
|
880
|
+
value: false
|
|
881
|
+
}); // self and source are DEV only properties.
|
|
882
|
+
|
|
883
|
+
Object.defineProperty(element, '_self', {
|
|
884
|
+
configurable: false,
|
|
885
|
+
enumerable: false,
|
|
886
|
+
writable: false,
|
|
887
|
+
value: self
|
|
888
|
+
}); // Two elements created in two different places should be considered
|
|
889
|
+
// equal for testing purposes and therefore we hide it from enumeration.
|
|
890
|
+
|
|
891
|
+
Object.defineProperty(element, '_source', {
|
|
892
|
+
configurable: false,
|
|
893
|
+
enumerable: false,
|
|
894
|
+
writable: false,
|
|
895
|
+
value: source
|
|
896
|
+
});
|
|
897
|
+
|
|
898
|
+
if (Object.freeze) {
|
|
899
|
+
Object.freeze(element.props);
|
|
900
|
+
Object.freeze(element);
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
return element;
|
|
905
|
+
};
|
|
906
|
+
/**
|
|
907
|
+
* https://github.com/reactjs/rfcs/pull/107
|
|
908
|
+
* @param {*} type
|
|
909
|
+
* @param {object} props
|
|
910
|
+
* @param {string} key
|
|
911
|
+
*/
|
|
912
|
+
|
|
913
|
+
function jsxDEV(type, config, maybeKey, source, self) {
|
|
914
|
+
{
|
|
915
|
+
var propName; // Reserved names are extracted
|
|
916
|
+
|
|
917
|
+
var props = {};
|
|
918
|
+
var key = null;
|
|
919
|
+
var ref = null; // Currently, key can be spread in as a prop. This causes a potential
|
|
920
|
+
// issue if key is also explicitly declared (ie. <div {...props} key="Hi" />
|
|
921
|
+
// or <div key="Hi" {...props} /> ). We want to deprecate key spread,
|
|
922
|
+
// but as an intermediary step, we will use jsxDEV for everything except
|
|
923
|
+
// <div {...props} key="Hi" />, because we aren't currently able to tell if
|
|
924
|
+
// key is explicitly declared to be undefined or not.
|
|
925
|
+
|
|
926
|
+
if (maybeKey !== undefined) {
|
|
927
|
+
{
|
|
928
|
+
checkKeyStringCoercion(maybeKey);
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
key = '' + maybeKey;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
if (hasValidKey(config)) {
|
|
935
|
+
{
|
|
936
|
+
checkKeyStringCoercion(config.key);
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
key = '' + config.key;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
if (hasValidRef(config)) {
|
|
943
|
+
ref = config.ref;
|
|
944
|
+
warnIfStringRefCannotBeAutoConverted(config, self);
|
|
945
|
+
} // Remaining properties are added to a new props object
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
for (propName in config) {
|
|
949
|
+
if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
|
|
950
|
+
props[propName] = config[propName];
|
|
951
|
+
}
|
|
952
|
+
} // Resolve default props
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
if (type && type.defaultProps) {
|
|
956
|
+
var defaultProps = type.defaultProps;
|
|
957
|
+
|
|
958
|
+
for (propName in defaultProps) {
|
|
959
|
+
if (props[propName] === undefined) {
|
|
960
|
+
props[propName] = defaultProps[propName];
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
if (key || ref) {
|
|
966
|
+
var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
|
|
967
|
+
|
|
968
|
+
if (key) {
|
|
969
|
+
defineKeyPropWarningGetter(props, displayName);
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
if (ref) {
|
|
973
|
+
defineRefPropWarningGetter(props, displayName);
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;
|
|
982
|
+
var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
|
|
983
|
+
|
|
984
|
+
function setCurrentlyValidatingElement$1(element) {
|
|
985
|
+
{
|
|
986
|
+
if (element) {
|
|
987
|
+
var owner = element._owner;
|
|
988
|
+
var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
|
|
989
|
+
ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
|
|
990
|
+
} else {
|
|
991
|
+
ReactDebugCurrentFrame$1.setExtraStackFrame(null);
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
var propTypesMisspellWarningShown;
|
|
997
|
+
|
|
998
|
+
{
|
|
999
|
+
propTypesMisspellWarningShown = false;
|
|
1000
|
+
}
|
|
1001
|
+
/**
|
|
1002
|
+
* Verifies the object is a ReactElement.
|
|
1003
|
+
* See https://reactjs.org/docs/react-api.html#isvalidelement
|
|
1004
|
+
* @param {?object} object
|
|
1005
|
+
* @return {boolean} True if `object` is a ReactElement.
|
|
1006
|
+
* @final
|
|
1007
|
+
*/
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
function isValidElement(object) {
|
|
1011
|
+
{
|
|
1012
|
+
return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
function getDeclarationErrorAddendum() {
|
|
1017
|
+
{
|
|
1018
|
+
if (ReactCurrentOwner$1.current) {
|
|
1019
|
+
var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);
|
|
1020
|
+
|
|
1021
|
+
if (name) {
|
|
1022
|
+
return '\n\nCheck the render method of `' + name + '`.';
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
return '';
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
function getSourceInfoErrorAddendum(source) {
|
|
1031
|
+
{
|
|
1032
|
+
if (source !== undefined) {
|
|
1033
|
+
var fileName = source.fileName.replace(/^.*[\\\/]/, '');
|
|
1034
|
+
var lineNumber = source.lineNumber;
|
|
1035
|
+
return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.';
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
return '';
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
/**
|
|
1042
|
+
* Warn if there's no key explicitly set on dynamic arrays of children or
|
|
1043
|
+
* object keys are not valid. This allows us to keep track of children between
|
|
1044
|
+
* updates.
|
|
1045
|
+
*/
|
|
1046
|
+
|
|
1047
|
+
|
|
1048
|
+
var ownerHasKeyUseWarning = {};
|
|
1049
|
+
|
|
1050
|
+
function getCurrentComponentErrorInfo(parentType) {
|
|
1051
|
+
{
|
|
1052
|
+
var info = getDeclarationErrorAddendum();
|
|
1053
|
+
|
|
1054
|
+
if (!info) {
|
|
1055
|
+
var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
|
|
1056
|
+
|
|
1057
|
+
if (parentName) {
|
|
1058
|
+
info = "\n\nCheck the top-level render call using <" + parentName + ">.";
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
return info;
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
/**
|
|
1066
|
+
* Warn if the element doesn't have an explicit key assigned to it.
|
|
1067
|
+
* This element is in an array. The array could grow and shrink or be
|
|
1068
|
+
* reordered. All children that haven't already been validated are required to
|
|
1069
|
+
* have a "key" property assigned to it. Error statuses are cached so a warning
|
|
1070
|
+
* will only be shown once.
|
|
1071
|
+
*
|
|
1072
|
+
* @internal
|
|
1073
|
+
* @param {ReactElement} element Element that requires a key.
|
|
1074
|
+
* @param {*} parentType element's parent's type.
|
|
1075
|
+
*/
|
|
1076
|
+
|
|
1077
|
+
|
|
1078
|
+
function validateExplicitKey(element, parentType) {
|
|
1079
|
+
{
|
|
1080
|
+
if (!element._store || element._store.validated || element.key != null) {
|
|
1081
|
+
return;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
element._store.validated = true;
|
|
1085
|
+
var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
|
|
1086
|
+
|
|
1087
|
+
if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
|
|
1088
|
+
return;
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a
|
|
1092
|
+
// property, it may be the creator of the child that's responsible for
|
|
1093
|
+
// assigning it a key.
|
|
1094
|
+
|
|
1095
|
+
var childOwner = '';
|
|
1096
|
+
|
|
1097
|
+
if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {
|
|
1098
|
+
// Give the component that originally created this child.
|
|
1099
|
+
childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + ".";
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
setCurrentlyValidatingElement$1(element);
|
|
1103
|
+
|
|
1104
|
+
error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);
|
|
1105
|
+
|
|
1106
|
+
setCurrentlyValidatingElement$1(null);
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
/**
|
|
1110
|
+
* Ensure that every element either is passed in a static location, in an
|
|
1111
|
+
* array with an explicit keys property defined, or in an object literal
|
|
1112
|
+
* with valid key property.
|
|
1113
|
+
*
|
|
1114
|
+
* @internal
|
|
1115
|
+
* @param {ReactNode} node Statically passed child of any type.
|
|
1116
|
+
* @param {*} parentType node's parent's type.
|
|
1117
|
+
*/
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
function validateChildKeys(node, parentType) {
|
|
1121
|
+
{
|
|
1122
|
+
if (typeof node !== 'object') {
|
|
1123
|
+
return;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
if (isArray(node)) {
|
|
1127
|
+
for (var i = 0; i < node.length; i++) {
|
|
1128
|
+
var child = node[i];
|
|
1129
|
+
|
|
1130
|
+
if (isValidElement(child)) {
|
|
1131
|
+
validateExplicitKey(child, parentType);
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
} else if (isValidElement(node)) {
|
|
1135
|
+
// This element was passed in a valid location.
|
|
1136
|
+
if (node._store) {
|
|
1137
|
+
node._store.validated = true;
|
|
1138
|
+
}
|
|
1139
|
+
} else if (node) {
|
|
1140
|
+
var iteratorFn = getIteratorFn(node);
|
|
1141
|
+
|
|
1142
|
+
if (typeof iteratorFn === 'function') {
|
|
1143
|
+
// Entry iterators used to provide implicit keys,
|
|
1144
|
+
// but now we print a separate warning for them later.
|
|
1145
|
+
if (iteratorFn !== node.entries) {
|
|
1146
|
+
var iterator = iteratorFn.call(node);
|
|
1147
|
+
var step;
|
|
1148
|
+
|
|
1149
|
+
while (!(step = iterator.next()).done) {
|
|
1150
|
+
if (isValidElement(step.value)) {
|
|
1151
|
+
validateExplicitKey(step.value, parentType);
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
/**
|
|
1160
|
+
* Given an element, validate that its props follow the propTypes definition,
|
|
1161
|
+
* provided by the type.
|
|
1162
|
+
*
|
|
1163
|
+
* @param {ReactElement} element
|
|
1164
|
+
*/
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
function validatePropTypes(element) {
|
|
1168
|
+
{
|
|
1169
|
+
var type = element.type;
|
|
1170
|
+
|
|
1171
|
+
if (type === null || type === undefined || typeof type === 'string') {
|
|
1172
|
+
return;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
var propTypes;
|
|
1176
|
+
|
|
1177
|
+
if (typeof type === 'function') {
|
|
1178
|
+
propTypes = type.propTypes;
|
|
1179
|
+
} else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
|
|
1180
|
+
// Inner props are checked in the reconciler.
|
|
1181
|
+
type.$$typeof === REACT_MEMO_TYPE)) {
|
|
1182
|
+
propTypes = type.propTypes;
|
|
1183
|
+
} else {
|
|
1184
|
+
return;
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
if (propTypes) {
|
|
1188
|
+
// Intentionally inside to avoid triggering lazy initializers:
|
|
1189
|
+
var name = getComponentNameFromType(type);
|
|
1190
|
+
checkPropTypes(propTypes, element.props, 'prop', name, element);
|
|
1191
|
+
} else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
|
|
1192
|
+
propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:
|
|
1193
|
+
|
|
1194
|
+
var _name = getComponentNameFromType(type);
|
|
1195
|
+
|
|
1196
|
+
error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {
|
|
1200
|
+
error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1204
|
+
/**
|
|
1205
|
+
* Given a fragment, validate that it can only be provided with fragment props
|
|
1206
|
+
* @param {ReactElement} fragment
|
|
1207
|
+
*/
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
function validateFragmentProps(fragment) {
|
|
1211
|
+
{
|
|
1212
|
+
var keys = Object.keys(fragment.props);
|
|
1213
|
+
|
|
1214
|
+
for (var i = 0; i < keys.length; i++) {
|
|
1215
|
+
var key = keys[i];
|
|
1216
|
+
|
|
1217
|
+
if (key !== 'children' && key !== 'key') {
|
|
1218
|
+
setCurrentlyValidatingElement$1(fragment);
|
|
1219
|
+
|
|
1220
|
+
error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
|
|
1221
|
+
|
|
1222
|
+
setCurrentlyValidatingElement$1(null);
|
|
1223
|
+
break;
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
if (fragment.ref !== null) {
|
|
1228
|
+
setCurrentlyValidatingElement$1(fragment);
|
|
1229
|
+
|
|
1230
|
+
error('Invalid attribute `ref` supplied to `React.Fragment`.');
|
|
1231
|
+
|
|
1232
|
+
setCurrentlyValidatingElement$1(null);
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
function jsxWithValidation(type, props, key, isStaticChildren, source, self) {
|
|
1238
|
+
{
|
|
1239
|
+
var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to
|
|
1240
|
+
// succeed and there will likely be errors in render.
|
|
1241
|
+
|
|
1242
|
+
if (!validType) {
|
|
1243
|
+
var info = '';
|
|
1244
|
+
|
|
1245
|
+
if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
|
|
1246
|
+
info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports.";
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
var sourceInfo = getSourceInfoErrorAddendum(source);
|
|
1250
|
+
|
|
1251
|
+
if (sourceInfo) {
|
|
1252
|
+
info += sourceInfo;
|
|
1253
|
+
} else {
|
|
1254
|
+
info += getDeclarationErrorAddendum();
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
var typeString;
|
|
1258
|
+
|
|
1259
|
+
if (type === null) {
|
|
1260
|
+
typeString = 'null';
|
|
1261
|
+
} else if (isArray(type)) {
|
|
1262
|
+
typeString = 'array';
|
|
1263
|
+
} else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
|
|
1264
|
+
typeString = "<" + (getComponentNameFromType(type.type) || 'Unknown') + " />";
|
|
1265
|
+
info = ' Did you accidentally export a JSX literal instead of a component?';
|
|
1266
|
+
} else {
|
|
1267
|
+
typeString = typeof type;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.
|
|
1274
|
+
// TODO: Drop this when these are no longer allowed as the type argument.
|
|
1275
|
+
|
|
1276
|
+
if (element == null) {
|
|
1277
|
+
return element;
|
|
1278
|
+
} // Skip key warning if the type isn't valid since our key validation logic
|
|
1279
|
+
// doesn't expect a non-string/function type and can throw confusing errors.
|
|
1280
|
+
// We don't want exception behavior to differ between dev and prod.
|
|
1281
|
+
// (Rendering will throw with a helpful message and as soon as the type is
|
|
1282
|
+
// fixed, the key warnings will appear.)
|
|
1283
|
+
|
|
1284
|
+
|
|
1285
|
+
if (validType) {
|
|
1286
|
+
var children = props.children;
|
|
1287
|
+
|
|
1288
|
+
if (children !== undefined) {
|
|
1289
|
+
if (isStaticChildren) {
|
|
1290
|
+
if (isArray(children)) {
|
|
1291
|
+
for (var i = 0; i < children.length; i++) {
|
|
1292
|
+
validateChildKeys(children[i], type);
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
if (Object.freeze) {
|
|
1296
|
+
Object.freeze(children);
|
|
1297
|
+
}
|
|
1298
|
+
} else {
|
|
1299
|
+
error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');
|
|
1300
|
+
}
|
|
1301
|
+
} else {
|
|
1302
|
+
validateChildKeys(children, type);
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
if (type === REACT_FRAGMENT_TYPE) {
|
|
1308
|
+
validateFragmentProps(element);
|
|
1309
|
+
} else {
|
|
1310
|
+
validatePropTypes(element);
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
return element;
|
|
1314
|
+
}
|
|
1315
|
+
} // These two functions exist to still get child warnings in dev
|
|
1316
|
+
// even with the prod transform. This means that jsxDEV is purely
|
|
1317
|
+
// opt-in behavior for better messages but that we won't stop
|
|
1318
|
+
// giving you warnings if you use production apis.
|
|
1319
|
+
|
|
1320
|
+
function jsxWithValidationStatic(type, props, key) {
|
|
1321
|
+
{
|
|
1322
|
+
return jsxWithValidation(type, props, key, true);
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
function jsxWithValidationDynamic(type, props, key) {
|
|
1326
|
+
{
|
|
1327
|
+
return jsxWithValidation(type, props, key, false);
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
var jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.
|
|
1332
|
+
// for now we can ship identical prod functions
|
|
1333
|
+
|
|
1334
|
+
var jsxs = jsxWithValidationStatic ;
|
|
1335
|
+
|
|
1336
|
+
reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;
|
|
1337
|
+
reactJsxRuntime_development.jsx = jsx;
|
|
1338
|
+
reactJsxRuntime_development.jsxs = jsxs;
|
|
1339
|
+
})();
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
(function (module) {
|
|
1343
|
+
|
|
1344
|
+
{
|
|
1345
|
+
module.exports = reactJsxRuntime_development;
|
|
1346
|
+
}
|
|
1347
|
+
} (jsxRuntime$1));
|
|
1348
|
+
|
|
1349
|
+
var jsxRuntime = /*@__PURE__*/getDefaultExportFromCjs(jsxRuntimeExports);
|
|
1350
|
+
|
|
1351
|
+
var Jsx = /*#__PURE__*/_mergeNamespaces({
|
|
1352
|
+
__proto__: null,
|
|
1353
|
+
default: jsxRuntime
|
|
1354
|
+
}, [jsxRuntimeExports]);
|
|
1355
|
+
|
|
1356
|
+
/** @module See `rollup.config.js` for what this file does. */
|
|
1357
|
+
|
|
1358
|
+
var Fragment = jsxRuntimeExports.Fragment;
|
|
1359
|
+
var jsx = jsxRuntimeExports.jsx;
|
|
1360
|
+
var jsxs = jsxRuntimeExports.jsxs;
|
|
1361
|
+
export { Fragment, Jsx as default, jsx, jsxs };
|
|
1362
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCIuLi9zcmMvZXNtLXNoaW1zL3JlYWN0LWpzeC1ydW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxuLy8gQVRURU5USU9OXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXG4vLyBQbGVhc2UgY29uc2lkZXIgYWxzbyBhZGRpbmcgdG8gJ3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9SZWFjdFN5bWJvbHMnXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50Jyk7XG52YXIgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3J0YWwnKTtcbnZhciBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZnJhZ21lbnQnKTtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKTtcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvZmlsZXInKTtcbnZhciBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvdmlkZXInKTtcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jb250ZXh0Jyk7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpO1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKTtcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5Jyk7XG52YXIgUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5vZmZzY3JlZW4nKTtcbnZhciBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgdHlwZW9mIG1heWJlSXRlcmFibGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgbWF5YmVJdGVyYXRvciA9IE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF07XG5cbiAgaWYgKHR5cGVvZiBtYXliZUl0ZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1heWJlSXRlcmF0b3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0gUmVhY3QuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG5cbmZ1bmN0aW9uIGVycm9yKGZvcm1hdCkge1xuICB7XG4gICAge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nKCdlcnJvcicsIGZvcm1hdCwgYXJncyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByaW50V2FybmluZyhsZXZlbCwgZm9ybWF0LCBhcmdzKSB7XG4gIC8vIFdoZW4gY2hhbmdpbmcgdGhpcyBsb2dpYywgeW91IG1pZ2h0IHdhbnQgdG8gYWxzb1xuICAvLyB1cGRhdGUgY29uc29sZVdpdGhTdGFja0Rldi53d3cuanMgYXMgd2VsbC5cbiAge1xuICAgIHZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbiAgICB2YXIgc3RhY2sgPSBSZWFjdERlYnVnQ3VycmVudEZyYW1lLmdldFN0YWNrQWRkZW5kdW0oKTtcblxuICAgIGlmIChzdGFjayAhPT0gJycpIHtcbiAgICAgIGZvcm1hdCArPSAnJXMnO1xuICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KFtzdGFja10pO1xuICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG5cblxuICAgIHZhciBhcmdzV2l0aEZvcm1hdCA9IGFyZ3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGl0ZW0pO1xuICAgIH0pOyAvLyBDYXJlZnVsOiBSTiBjdXJyZW50bHkgZGVwZW5kcyBvbiB0aGlzIHByZWZpeFxuXG4gICAgYXJnc1dpdGhGb3JtYXQudW5zaGlmdCgnV2FybmluZzogJyArIGZvcm1hdCk7IC8vIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIHNwcmVhZCAob3IgLmFwcGx5KSBkaXJlY3RseSBiZWNhdXNlIGl0XG4gICAgLy8gYnJlYWtzIElFOTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMzYxMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmdcblxuICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGVbbGV2ZWxdLCBjb25zb2xlLCBhcmdzV2l0aEZvcm1hdCk7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudmFyIGVuYWJsZVNjb3BlQVBJID0gZmFsc2U7IC8vIEV4cGVyaW1lbnRhbCBDcmVhdGUgRXZlbnQgSGFuZGxlIEFQSS5cbnZhciBlbmFibGVDYWNoZUVsZW1lbnQgPSBmYWxzZTtcbnZhciBlbmFibGVUcmFuc2l0aW9uVHJhY2luZyA9IGZhbHNlOyAvLyBObyBrbm93biBidWdzLCBidXQgbmVlZHMgcGVyZm9ybWFuY2UgdGVzdGluZ1xuXG52YXIgZW5hYmxlTGVnYWN5SGlkZGVuID0gZmFsc2U7IC8vIEVuYWJsZXMgdW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2sgZmVhdHVyZSBpbiBGaWJlclxuLy8gc3R1ZmYuIEludGVuZGVkIHRvIGVuYWJsZSBSZWFjdCBjb3JlIG1lbWJlcnMgdG8gbW9yZSBlYXNpbHkgZGVidWcgc2NoZWR1bGluZ1xuLy8gaXNzdWVzIGluIERFViBidWlsZHMuXG5cbnZhciBlbmFibGVEZWJ1Z1RyYWNpbmcgPSBmYWxzZTsgLy8gVHJhY2sgd2hpY2ggRmliZXIocykgc2NoZWR1bGUgcmVuZGVyIHdvcmsuXG5cbnZhciBSRUFDVF9NT0RVTEVfUkVGRVJFTkNFO1xuXG57XG4gIFJFQUNUX01PRFVMRV9SRUZFUkVOQ0UgPSBTeW1ib2wuZm9yKCdyZWFjdC5tb2R1bGUucmVmZXJlbmNlJyk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBOb3RlOiB0eXBlb2YgbWlnaHQgYmUgb3RoZXIgdGhhbiAnc3ltYm9sJyBvciAnbnVtYmVyJyAoZS5nLiBpZiBpdCdzIGEgcG9seWZpbGwpLlxuXG5cbiAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRSB8fCBlbmFibGVEZWJ1Z1RyYWNpbmcgIHx8IHR5cGUgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgfHwgZW5hYmxlTGVnYWN5SGlkZGVuICB8fCB0eXBlID09PSBSRUFDVF9PRkZTQ1JFRU5fVFlQRSB8fCBlbmFibGVTY29wZUFQSSAgfHwgZW5hYmxlQ2FjaGVFbGVtZW50ICB8fCBlbmFibGVUcmFuc2l0aW9uVHJhY2luZyApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgLy8gVGhpcyBuZWVkcyB0byBpbmNsdWRlIGFsbCBwb3NzaWJsZSBtb2R1bGUgcmVmZXJlbmNlIG9iamVjdFxuICAgIC8vIHR5cGVzIHN1cHBvcnRlZCBieSBhbnkgRmxpZ2h0IGNvbmZpZ3VyYXRpb24gYW55d2hlcmUgc2luY2VcbiAgICAvLyB3ZSBkb24ndCBrbm93IHdoaWNoIEZsaWdodCBidWlsZCB0aGlzIHdpbGwgZW5kIHVwIGJlaW5nIHVzZWRcbiAgICAvLyB3aXRoLlxuICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01PRFVMRV9SRUZFUkVOQ0UgfHwgdHlwZS5nZXRNb2R1bGVJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFdyYXBwZWROYW1lKG91dGVyVHlwZSwgaW5uZXJUeXBlLCB3cmFwcGVyTmFtZSkge1xuICB2YXIgZGlzcGxheU5hbWUgPSBvdXRlclR5cGUuZGlzcGxheU5hbWU7XG5cbiAgaWYgKGRpc3BsYXlOYW1lKSB7XG4gICAgcmV0dXJuIGRpc3BsYXlOYW1lO1xuICB9XG5cbiAgdmFyIGZ1bmN0aW9uTmFtZSA9IGlubmVyVHlwZS5kaXNwbGF5TmFtZSB8fCBpbm5lclR5cGUubmFtZSB8fCAnJztcbiAgcmV0dXJuIGZ1bmN0aW9uTmFtZSAhPT0gJycgPyB3cmFwcGVyTmFtZSArIFwiKFwiICsgZnVuY3Rpb25OYW1lICsgXCIpXCIgOiB3cmFwcGVyTmFtZTtcbn0gLy8gS2VlcCBpbiBzeW5jIHdpdGggcmVhY3QtcmVjb25jaWxlci9nZXRDb21wb25lbnROYW1lRnJvbUZpYmVyXG5cblxuZnVuY3Rpb24gZ2V0Q29udGV4dE5hbWUodHlwZSkge1xuICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCAnQ29udGV4dCc7XG59IC8vIE5vdGUgdGhhdCB0aGUgcmVjb25jaWxlciBwYWNrYWdlIHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSBnZXRDb21wb25lbnROYW1lRnJvbUZpYmVyKCkgaW5zdGVhZC5cblxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkge1xuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgLy8gSG9zdCByb290LCB0ZXh0IG5vZGUgb3IganVzdCBpbnZhbGlkIHR5cGUuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB7XG4gICAgaWYgKHR5cGVvZiB0eXBlLnRhZyA9PT0gJ251bWJlcicpIHtcbiAgICAgIGVycm9yKCdSZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG9iamVjdCBpbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoKS4gJyArICdUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICByZXR1cm4gJ0ZyYWdtZW50JztcblxuICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICByZXR1cm4gJ1BvcnRhbCc7XG5cbiAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICByZXR1cm4gJ1Byb2ZpbGVyJztcblxuICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgIHJldHVybiAnU3RyaWN0TW9kZSc7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuICdTdXNwZW5zZUxpc3QnO1xuXG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUoY29udGV4dCkgKyAnLkNvbnN1bWVyJztcblxuICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICB2YXIgcHJvdmlkZXIgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUocHJvdmlkZXIuX2NvbnRleHQpICsgJy5Qcm92aWRlcic7XG5cbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGdldFdyYXBwZWROYW1lKHR5cGUsIHR5cGUucmVuZGVyLCAnRm9yd2FyZFJlZicpO1xuXG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgdmFyIG91dGVyTmFtZSA9IHR5cGUuZGlzcGxheU5hbWUgfHwgbnVsbDtcblxuICAgICAgICBpZiAob3V0ZXJOYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG91dGVyTmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnTWVtbyc7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShpbml0KHBheWxvYWQpKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWZhbGx0aHJvdWdoXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbnZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBIZWxwZXJzIHRvIHBhdGNoIGNvbnNvbGUubG9ncyB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBzaWRlLWVmZmVjdCBmcmVlXG4vLyByZXBsYXlpbmcgb24gcmVuZGVyIGZ1bmN0aW9uLiBUaGlzIGN1cnJlbnRseSBvbmx5IHBhdGNoZXMgdGhlIG9iamVjdFxuLy8gbGF6aWx5IHdoaWNoIHdvbid0IGNvdmVyIGlmIHRoZSBsb2cgZnVuY3Rpb24gd2FzIGV4dHJhY3RlZCBlYWdlcmx5LlxuLy8gV2UgY291bGQgYWxzbyBlYWdlcmx5IHBhdGNoIHRoZSBtZXRob2QuXG52YXIgZGlzYWJsZWREZXB0aCA9IDA7XG52YXIgcHJldkxvZztcbnZhciBwcmV2SW5mbztcbnZhciBwcmV2V2FybjtcbnZhciBwcmV2RXJyb3I7XG52YXIgcHJldkdyb3VwO1xudmFyIHByZXZHcm91cENvbGxhcHNlZDtcbnZhciBwcmV2R3JvdXBFbmQ7XG5cbmZ1bmN0aW9uIGRpc2FibGVkTG9nKCkge31cblxuZGlzYWJsZWRMb2cuX19yZWFjdERpc2FibGVkTG9nID0gdHJ1ZTtcbmZ1bmN0aW9uIGRpc2FibGVMb2dzKCkge1xuICB7XG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgcHJldkxvZyA9IGNvbnNvbGUubG9nO1xuICAgICAgcHJldkluZm8gPSBjb25zb2xlLmluZm87XG4gICAgICBwcmV2V2FybiA9IGNvbnNvbGUud2FybjtcbiAgICAgIHByZXZFcnJvciA9IGNvbnNvbGUuZXJyb3I7XG4gICAgICBwcmV2R3JvdXAgPSBjb25zb2xlLmdyb3VwO1xuICAgICAgcHJldkdyb3VwQ29sbGFwc2VkID0gY29uc29sZS5ncm91cENvbGxhcHNlZDtcbiAgICAgIHByZXZHcm91cEVuZCA9IGNvbnNvbGUuZ3JvdXBFbmQ7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTkwOTlcblxuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBkaXNhYmxlZExvZyxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH07IC8vICRGbG93Rml4TWUgRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgaW5mbzogcHJvcHMsXG4gICAgICAgIGxvZzogcHJvcHMsXG4gICAgICAgIHdhcm46IHByb3BzLFxuICAgICAgICBlcnJvcjogcHJvcHMsXG4gICAgICAgIGdyb3VwOiBwcm9wcyxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IHByb3BzLFxuICAgICAgICBncm91cEVuZDogcHJvcHNcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBkaXNhYmxlZERlcHRoKys7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlZW5hYmxlTG9ncygpIHtcbiAge1xuICAgIGRpc2FibGVkRGVwdGgtLTtcblxuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZSBGbG93IHRoaW5rcyBjb25zb2xlIGlzIGltbXV0YWJsZS5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICBsb2c6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkxvZ1xuICAgICAgICB9KSxcbiAgICAgICAgaW5mbzogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2SW5mb1xuICAgICAgICB9KSxcbiAgICAgICAgd2FybjogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2V2FyblxuICAgICAgICB9KSxcbiAgICAgICAgZXJyb3I6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkVycm9yXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwQ29sbGFwc2VkOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cENvbGxhcHNlZFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBFbmQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwRW5kXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgfVxuXG4gICAgaWYgKGRpc2FibGVkRGVwdGggPCAwKSB7XG4gICAgICBlcnJvcignZGlzYWJsZWREZXB0aCBmZWxsIGJlbG93IHplcm8uICcgKyAnVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuJyk7XG4gICAgfVxuICB9XG59XG5cbnZhciBSZWFjdEN1cnJlbnREaXNwYXRjaGVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcjtcbnZhciBwcmVmaXg7XG5mdW5jdGlvbiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVyRm4pIHtcbiAge1xuICAgIGlmIChwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRXh0cmFjdCB0aGUgVk0gc3BlY2lmaWMgcHJlZml4IHVzZWQgYnkgZWFjaCBsaW5lLlxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgdmFyIG1hdGNoID0geC5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTtcbiAgICAgICAgcHJlZml4ID0gbWF0Y2ggJiYgbWF0Y2hbMV0gfHwgJyc7XG4gICAgICB9XG4gICAgfSAvLyBXZSB1c2UgdGhlIHByZWZpeCB0byBlbnN1cmUgb3VyIHN0YWNrcyBsaW5lIHVwIHdpdGggbmF0aXZlIHN0YWNrIGZyYW1lcy5cblxuXG4gICAgcmV0dXJuICdcXG4nICsgcHJlZml4ICsgbmFtZTtcbiAgfVxufVxudmFyIHJlZW50cnkgPSBmYWxzZTtcbnZhciBjb21wb25lbnRGcmFtZUNhY2hlO1xuXG57XG4gIHZhciBQb3NzaWJseVdlYWtNYXAgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyA/IFdlYWtNYXAgOiBNYXA7XG4gIGNvbXBvbmVudEZyYW1lQ2FjaGUgPSBuZXcgUG9zc2libHlXZWFrTWFwKCk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGNvbnN0cnVjdCkge1xuICAvLyBJZiBzb21ldGhpbmcgYXNrZWQgZm9yIGEgc3RhY2sgaW5zaWRlIGEgZmFrZSByZW5kZXIsIGl0IHNob3VsZCBnZXQgaWdub3JlZC5cbiAgaWYgKCAhZm4gfHwgcmVlbnRyeSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHtcbiAgICB2YXIgZnJhbWUgPSBjb21wb25lbnRGcmFtZUNhY2hlLmdldChmbik7XG5cbiAgICBpZiAoZnJhbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZyYW1lO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb250cm9sO1xuICByZWVudHJ5ID0gdHJ1ZTtcbiAgdmFyIHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsgLy8gJEZsb3dGaXhNZSBJdCBkb2VzIGFjY2VwdCB1bmRlZmluZWQuXG5cbiAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSB1bmRlZmluZWQ7XG4gIHZhciBwcmV2aW91c0Rpc3BhdGNoZXI7XG5cbiAge1xuICAgIHByZXZpb3VzRGlzcGF0Y2hlciA9IFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudDsgLy8gU2V0IHRoZSBkaXNwYXRjaGVyIGluIERFViBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgY2FsbCBpbiB0aGUgcmVuZGVyIGZ1bmN0aW9uXG4gICAgLy8gZm9yIHdhcm5pbmdzLlxuXG4gICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gbnVsbDtcbiAgICBkaXNhYmxlTG9ncygpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBUaGlzIHNob3VsZCB0aHJvdy5cbiAgICBpZiAoY29uc3RydWN0KSB7XG4gICAgICAvLyBTb21ldGhpbmcgc2hvdWxkIGJlIHNldHRpbmcgdGhlIHByb3BzIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgIHZhciBGYWtlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfTsgLy8gJEZsb3dGaXhNZVxuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgJ3Byb3BzJywge1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBXZSB1c2UgYSB0aHJvd2luZyBzZXR0ZXIgaW5zdGVhZCBvZiBmcm96ZW4gb3Igbm9uLXdyaXRhYmxlIHByb3BzXG4gICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IHdvbid0IHRocm93IGluIGEgbm9uLXN0cmljdCBtb2RlIGZ1bmN0aW9uLlxuICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnICYmIFJlZmxlY3QuY29uc3RydWN0KSB7XG4gICAgICAgIC8vIFdlIGNvbnN0cnVjdCBhIGRpZmZlcmVudCBjb250cm9sIGZvciB0aGlzIGNhc2UgdG8gaW5jbHVkZSBhbnkgZXh0cmFcbiAgICAgICAgLy8gZnJhbWVzIGFkZGVkIGJ5IHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChGYWtlLCBbXSk7XG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgfVxuXG4gICAgICAgIFJlZmxlY3QuY29uc3RydWN0KGZuLCBbXSwgRmFrZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIEZha2UuY2FsbCgpO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgIH1cblxuICAgICAgICBmbi5jYWxsKEZha2UucHJvdG90eXBlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICB9XG5cbiAgICAgIGZuKCk7XG4gICAgfVxuICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAvLyBUaGlzIGlzIGlubGluZWQgbWFudWFsbHkgYmVjYXVzZSBjbG9zdXJlIGRvZXNuJ3QgZG8gaXQgZm9yIHVzLlxuICAgIGlmIChzYW1wbGUgJiYgY29udHJvbCAmJiB0eXBlb2Ygc2FtcGxlLnN0YWNrID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVGhpcyBleHRyYWN0cyB0aGUgZmlyc3QgZnJhbWUgZnJvbSB0aGUgc2FtcGxlIHRoYXQgaXNuJ3QgYWxzbyBpbiB0aGUgY29udHJvbC5cbiAgICAgIC8vIFNraXBwaW5nIG9uZSBmcmFtZSB0aGF0IHdlIGFzc3VtZSBpcyB0aGUgZnJhbWUgdGhhdCBjYWxscyB0aGUgdHdvLlxuICAgICAgdmFyIHNhbXBsZUxpbmVzID0gc2FtcGxlLnN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBjb250cm9sTGluZXMgPSBjb250cm9sLnN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBzID0gc2FtcGxlTGluZXMubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBjID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChzID49IDEgJiYgYyA+PSAwICYmIHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgLy8gV2UgZXhwZWN0IGF0IGxlYXN0IG9uZSBzdGFjayBmcmFtZSB0byBiZSBzaGFyZWQuXG4gICAgICAgIC8vIFR5cGljYWxseSB0aGlzIHdpbGwgYmUgdGhlIHJvb3QgbW9zdCBvbmUuIEhvd2V2ZXIsIHN0YWNrIGZyYW1lcyBtYXkgYmVcbiAgICAgICAgLy8gY3V0IG9mZiBkdWUgdG8gbWF4aW11bSBzdGFjayBsaW1pdHMuIEluIHRoaXMgY2FzZSwgb25lIG1heWJlIGN1dCBvZmZcbiAgICAgICAgLy8gZWFybGllciB0aGFuIHRoZSBvdGhlci4gV2UgYXNzdW1lIHRoYXQgdGhlIHNhbXBsZSBpcyBsb25nZXIgb3IgdGhlIHNhbWVcbiAgICAgICAgLy8gYW5kIHRoZXJlIGZvciBjdXQgb2ZmIGVhcmxpZXIuIFNvIHdlIHNob3VsZCBmaW5kIHRoZSByb290IG1vc3QgZnJhbWUgaW5cbiAgICAgICAgLy8gdGhlIHNhbXBsZSBzb21ld2hlcmUgaW4gdGhlIGNvbnRyb2wuXG4gICAgICAgIGMtLTtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IHMgPj0gMSAmJiBjID49IDA7IHMtLSwgYy0tKSB7XG4gICAgICAgIC8vIE5leHQgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgd2hpY2ggc2hvdWxkIGJlIHRoZVxuICAgICAgICAvLyBmcmFtZSB0aGF0IGNhbGxlZCBvdXIgc2FtcGxlIGZ1bmN0aW9uIGFuZCB0aGUgY29udHJvbC5cbiAgICAgICAgaWYgKHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAvLyBJbiBWOCwgdGhlIGZpcnN0IGxpbmUgaXMgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBidXQgb3RoZXIgVk1zIGRvbid0LlxuICAgICAgICAgIC8vIElmIHdlJ3JlIGFib3V0IHRvIHJldHVybiB0aGUgZmlyc3QgbGluZSwgYW5kIHRoZSBjb250cm9sIGlzIGFsc28gb24gdGhlIHNhbWVcbiAgICAgICAgICAvLyBsaW5lLCB0aGF0J3MgYSBwcmV0dHkgZ29vZCBpbmRpY2F0b3IgdGhhdCBvdXIgc2FtcGxlIHRocmV3IGF0IHNhbWUgbGluZSBhc1xuICAgICAgICAgIC8vIHRoZSBjb250cm9sLiBJLmUuIGJlZm9yZSB3ZSBlbnRlcmVkIHRoZSBzYW1wbGUgZnJhbWUuIFNvIHdlIGlnbm9yZSB0aGlzIHJlc3VsdC5cbiAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IHBhc3NlZCBhIGNsYXNzIHRvIGZ1bmN0aW9uIGNvbXBvbmVudCwgb3Igbm9uLWZ1bmN0aW9uLlxuICAgICAgICAgIGlmIChzICE9PSAxIHx8IGMgIT09IDEpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgcy0tO1xuICAgICAgICAgICAgICBjLS07IC8vIFdlIG1heSBzdGlsbCBoYXZlIHNpbWlsYXIgaW50ZXJtZWRpYXRlIGZyYW1lcyBmcm9tIHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgICAgLy8gVGhlIG5leHQgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgc2hvdWxkIGJlIG91ciBtYXRjaCB0aG91Z2guXG5cbiAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAgICAgICAvLyBWOCBhZGRzIGEgXCJuZXdcIiBwcmVmaXggZm9yIG5hdGl2ZSBjbGFzc2VzLiBMZXQncyByZW1vdmUgaXQgdG8gbWFrZSBpdCBwcmV0dGllci5cbiAgICAgICAgICAgICAgICB2YXIgX2ZyYW1lID0gJ1xcbicgKyBzYW1wbGVMaW5lc1tzXS5yZXBsYWNlKCcgYXQgbmV3ICcsICcgYXQgJyk7IC8vIElmIG91ciBjb21wb25lbnQgZnJhbWUgaXMgbGFiZWxlZCBcIjxhbm9ueW1vdXM+XCJcbiAgICAgICAgICAgICAgICAvLyBidXQgd2UgaGF2ZSBhIHVzZXItcHJvdmlkZWQgXCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgLy8gc3BsaWNlIGl0IGluIHRvIG1ha2UgdGhlIHN0YWNrIG1vcmUgcmVhZGFibGUuXG5cblxuICAgICAgICAgICAgICAgIGlmIChmbi5kaXNwbGF5TmFtZSAmJiBfZnJhbWUuaW5jbHVkZXMoJzxhbm9ueW1vdXM+JykpIHtcbiAgICAgICAgICAgICAgICAgIF9mcmFtZSA9IF9mcmFtZS5yZXBsYWNlKCc8YW5vbnltb3VzPicsIGZuLmRpc3BsYXlOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBfZnJhbWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gLy8gUmV0dXJuIHRoZSBsaW5lIHdlIGZvdW5kLlxuXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2ZyYW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlIChzID49IDEgJiYgYyA+PSAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICByZWVudHJ5ID0gZmFsc2U7XG5cbiAgICB7XG4gICAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBwcmV2aW91c0Rpc3BhdGNoZXI7XG4gICAgICByZWVuYWJsZUxvZ3MoKTtcbiAgICB9XG5cbiAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2U7XG4gIH0gLy8gRmFsbGJhY2sgdG8ganVzdCB1c2luZyB0aGUgbmFtZSBpZiB3ZSBjb3VsZG4ndCBtYWtlIGl0IHRocm93LlxuXG5cbiAgdmFyIG5hbWUgPSBmbiA/IGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUgOiAnJztcbiAgdmFyIHN5bnRoZXRpY0ZyYW1lID0gbmFtZSA/IGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUpIDogJyc7XG5cbiAge1xuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBzeW50aGV0aWNGcmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN5bnRoZXRpY0ZyYW1lO1xufVxuZnVuY3Rpb24gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKGZuLCBzb3VyY2UsIG93bmVyRm4pIHtcbiAge1xuICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBmYWxzZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCkge1xuICB2YXIgcHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcbiAgcmV0dXJuICEhKHByb3RvdHlwZSAmJiBwcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlLCBzb3VyY2UsIG93bmVyRm4pIHtcblxuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAge1xuICAgICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUodHlwZSwgc2hvdWxkQ29uc3RydWN0KHR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHR5cGUpO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZScpO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlTGlzdCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKHR5cGUucmVuZGVyKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIC8vIE1lbW8gbWF5IGNvbnRhaW4gYW55IGNvbXBvbmVudCB0eXBlIHNvIHdlIHJlY3Vyc2l2ZWx5IHJlc29sdmUgaXQuXG4gICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZS50eXBlLCBzb3VyY2UsIG93bmVyRm4pO1xuXG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZTtcbiAgICAgICAgICB2YXIgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gICAgICAgICAgdmFyIGluaXQgPSBsYXp5Q29tcG9uZW50Ll9pbml0O1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIExhenkgbWF5IGNvbnRhaW4gYW55IGNvbXBvbmVudCB0eXBlIHNvIHdlIHJlY3Vyc2l2ZWx5IHJlc29sdmUgaXQuXG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGluaXQocGF5bG9hZCksIHNvdXJjZSwgb3duZXJGbik7XG4gICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xudmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KSB7XG4gIHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5zZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50KSB7XG4gIHtcbiAgICAvLyAkRmxvd0ZpeE1lIFRoaXMgaXMgb2theSBidXQgRmxvdyBkb2Vzbid0IGtub3cgaXQuXG4gICAgdmFyIGhhcyA9IEZ1bmN0aW9uLmNhbGwuYmluZChoYXNPd25Qcm9wZXJ0eSk7XG5cbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IkMSA9IHZvaWQgMDsgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3Byb2QtZXJyb3ItY29kZXNcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcigoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7ICcgKyAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gKyAnYC4nICsgJ1RoaXMgb2Z0ZW4gaGFwcGVucyBiZWNhdXNlIG9mIHR5cG9zIHN1Y2ggYXMgYFByb3BUeXBlcy5mdW5jdGlvbmAgaW5zdGVhZCBvZiBgUHJvcFR5cGVzLmZ1bmNgLicpO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXJyb3IkMSA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJyk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IkMSA9IGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgJiYgIShlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcycgKyAnIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvciQxKTtcblxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yJDEubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IkMS5tZXNzYWdlXSA9IHRydWU7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignRmFpbGVkICVzIHR5cGU6ICVzJywgbG9jYXRpb24sIGVycm9yJDEubWVzc2FnZSk7XG5cbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYSkge1xuICByZXR1cm4gaXNBcnJheUltcGwoYSk7XG59XG5cbi8qXG4gKiBUaGUgYCcnICsgdmFsdWVgIHBhdHRlcm4gKHVzZWQgaW4gaW4gcGVyZi1zZW5zaXRpdmUgY29kZSkgdGhyb3dzIGZvciBTeW1ib2xcbiAqIGFuZCBUZW1wb3JhbC4qIHR5cGVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjIwNjQuXG4gKlxuICogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB3aWxsIHRocm93IGFuIGVhc2llci10by11bmRlcnN0YW5kLFxuICogZWFzaWVyLXRvLWRlYnVnIGV4Y2VwdGlvbiB3aXRoIGEgY2xlYXIgZXJyb3JzIG1lc3NhZ2UgbWVzc2FnZSBleHBsYWluaW5nIHRoZVxuICogcHJvYmxlbS4gKEluc3RlYWQgb2YgYSBjb25mdXNpbmcgZXhjZXB0aW9uIHRocm93biBpbnNpZGUgdGhlIGltcGxlbWVudGF0aW9uXG4gKiBvZiB0aGUgYHZhbHVlYCBvYmplY3QpLlxuICovXG4vLyAkRmxvd0ZpeE1lIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxuZnVuY3Rpb24gdHlwZU5hbWUodmFsdWUpIHtcbiAge1xuICAgIC8vIHRvU3RyaW5nVGFnIGlzIG5lZWRlZCBmb3IgbmFtZXNwYWNlZCB0eXBlcyBsaWtlIFRlbXBvcmFsLkluc3RhbnRcbiAgICB2YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC50b1N0cmluZ1RhZztcbiAgICB2YXIgdHlwZSA9IGhhc1RvU3RyaW5nVGFnICYmIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ10gfHwgdmFsdWUuY29uc3RydWN0b3IubmFtZSB8fCAnT2JqZWN0JztcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxufSAvLyAkRmxvd0ZpeE1lIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxuXG5cbmZ1bmN0aW9uIHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSB7XG4gIHtcbiAgICB0cnkge1xuICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gIC8vIElmIHlvdSBlbmRlZCB1cCBoZXJlIGJ5IGZvbGxvd2luZyBhbiBleGNlcHRpb24gY2FsbCBzdGFjaywgaGVyZSdzIHdoYXQnc1xuICAvLyBoYXBwZW5lZDogeW91IHN1cHBsaWVkIGFuIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gUmVhY3QgKGFzIGEgcHJvcCwga2V5LFxuICAvLyBET00gYXR0cmlidXRlLCBDU1MgcHJvcGVydHksIHN0cmluZyByZWYsIGV0Yy4pIGFuZCB3aGVuIFJlYWN0IHRyaWVkIHRvXG4gIC8vIGNvZXJjZSBpdCB0byBhIHN0cmluZyB1c2luZyBgJycgKyB2YWx1ZWAsIGFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duLlxuICAvL1xuICAvLyBUaGUgbW9zdCBjb21tb24gdHlwZXMgdGhhdCB3aWxsIGNhdXNlIHRoaXMgZXhjZXB0aW9uIGFyZSBgU3ltYm9sYCBpbnN0YW5jZXNcbiAgLy8gYW5kIFRlbXBvcmFsIG9iamVjdHMgbGlrZSBgVGVtcG9yYWwuSW5zdGFudGAuIEJ1dCBhbnkgb2JqZWN0IHRoYXQgaGFzIGFcbiAgLy8gYHZhbHVlT2ZgIG9yIGBbU3ltYm9sLnRvUHJpbWl0aXZlXWAgbWV0aG9kIHRoYXQgdGhyb3dzIHdpbGwgYWxzbyBjYXVzZSB0aGlzXG4gIC8vIGV4Y2VwdGlvbi4gKExpYnJhcnkgYXV0aG9ycyBkbyB0aGlzIHRvIHByZXZlbnQgdXNlcnMgZnJvbSB1c2luZyBidWlsdC1pblxuICAvLyBudW1lcmljIG9wZXJhdG9ycyBsaWtlIGArYCBvciBjb21wYXJpc29uIG9wZXJhdG9ycyBsaWtlIGA+PWAgYmVjYXVzZSBjdXN0b21cbiAgLy8gbWV0aG9kcyBhcmUgbmVlZGVkIHRvIHBlcmZvcm0gYWNjdXJhdGUgYXJpdGhtZXRpYyBvciBjb21wYXJpc29uLilcbiAgLy9cbiAgLy8gVG8gZml4IHRoZSBwcm9ibGVtLCBjb2VyY2UgdGhpcyBvYmplY3Qgb3Igc3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIGJlZm9yZVxuICAvLyBwYXNzaW5nIGl0IHRvIFJlYWN0LiBUaGUgbW9zdCByZWxpYWJsZSB3YXkgaXMgdXN1YWxseSBgU3RyaW5nKHZhbHVlKWAuXG4gIC8vXG4gIC8vIFRvIGZpbmQgd2hpY2ggdmFsdWUgaXMgdGhyb3dpbmcsIGNoZWNrIHRoZSBicm93c2VyIG9yIGRlYnVnZ2VyIGNvbnNvbGUuXG4gIC8vIEJlZm9yZSB0aGlzIGV4Y2VwdGlvbiB3YXMgdGhyb3duLCB0aGVyZSBzaG91bGQgYmUgYGNvbnNvbGUuZXJyb3JgIG91dHB1dFxuICAvLyB0aGF0IHNob3dzIHRoZSB0eXBlIChTeW1ib2wsIFRlbXBvcmFsLlBsYWluRGF0ZSwgZXRjLikgdGhhdCBjYXVzZWQgdGhlXG4gIC8vIHByb2JsZW0gYW5kIGhvdyB0aGF0IHR5cGUgd2FzIHVzZWQ6IGtleSwgYXRycmlidXRlLCBpbnB1dCB2YWx1ZSBwcm9wLCBldGMuXG4gIC8vIEluIG1vc3QgY2FzZXMsIHRoaXMgY29uc29sZSBvdXRwdXQgYWxzbyBzaG93cyB0aGUgY29tcG9uZW50IGFuZCBpdHNcbiAgLy8gYW5jZXN0b3IgY29tcG9uZW50cyB3aGVyZSB0aGUgZXhjZXB0aW9uIGhhcHBlbmVkLlxuICAvL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cbiAgcmV0dXJuICcnICsgdmFsdWU7XG59XG5mdW5jdGlvbiBjaGVja0tleVN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gIHtcbiAgICBpZiAod2lsbENvZXJjaW9uVGhyb3codmFsdWUpKSB7XG4gICAgICBlcnJvcignVGhlIHByb3ZpZGVkIGtleSBpcyBhbiB1bnN1cHBvcnRlZCB0eXBlICVzLicgKyAnIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSBiZWZvcmUgdXNpbmcgaXQgaGVyZS4nLCB0eXBlTmFtZSh2YWx1ZSkpO1xuXG4gICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTsgLy8gdGhyb3cgKHRvIGhlbHAgY2FsbGVycyBmaW5kIHRyb3VibGVzaG9vdGluZyBjb21tZW50cylcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50T3duZXI7XG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XG4gIGtleTogdHJ1ZSxcbiAgcmVmOiB0cnVlLFxuICBfX3NlbGY6IHRydWUsXG4gIF9fc291cmNlOiB0cnVlXG59O1xudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duO1xudmFyIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duO1xudmFyIGRpZFdhcm5BYm91dFN0cmluZ1JlZnM7XG5cbntcbiAgZGlkV2FybkFib3V0U3RyaW5nUmVmcyA9IHt9O1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZFJlZihjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ3JlZicpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdyZWYnKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdrZXknKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLmtleSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZWYgPT09ICdzdHJpbmcnICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgc2VsZiAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnN0YXRlTm9kZSAhPT0gc2VsZikge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgIGVycm9yKCdDb21wb25lbnQgXCIlc1wiIGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVmIFwiJXNcIi4gJyArICdTdXBwb3J0IGZvciBzdHJpbmcgcmVmcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gJyArICdUaGlzIGNhc2UgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGFuIGFycm93IGZ1bmN0aW9uLiAnICsgJ1dlIGFzayB5b3UgdG8gbWFudWFsbHkgZml4IHRoaXMgY2FzZSBieSB1c2luZyB1c2VSZWYoKSBvciBjcmVhdGVSZWYoKSBpbnN0ZWFkLiAnICsgJ0xlYXJuIG1vcmUgYWJvdXQgdXNpbmcgcmVmcyBzYWZlbHkgaGVyZTogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3RyaWN0LW1vZGUtc3RyaW5nLXJlZicsIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnR5cGUpLCBjb25maWcucmVmKTtcblxuICAgICAgICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHtcbiAgICB2YXIgd2FybkFib3V0QWNjZXNzaW5nS2V5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xuICAgICAgICBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biA9IHRydWU7XG5cbiAgICAgICAgZXJyb3IoJyVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ2tleScsIHtcbiAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHtcbiAgICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bikge1xuICAgICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG5cbiAgICAgICAgZXJyb3IoJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3JlZicsIHtcbiAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbn1cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBpbnN0YW5jZW9mIGNoZWNrXG4gKiB3aWxsIG5vdCB3b3JrLiBJbnN0ZWFkIHRlc3QgJCR0eXBlb2YgZmllbGQgYWdhaW5zdCBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgdG8gY2hlY2tcbiAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0geyp9IHByb3BzXG4gKiBAcGFyYW0geyp9IGtleVxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWZcbiAqIEBwYXJhbSB7Kn0gb3duZXJcbiAqIEBwYXJhbSB7Kn0gc2VsZiBBICp0ZW1wb3JhcnkqIGhlbHBlciB0byBkZXRlY3QgcGxhY2VzIHdoZXJlIGB0aGlzYCBpc1xuICogZGlmZmVyZW50IGZyb20gdGhlIGBvd25lcmAgd2hlbiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNhbGxlZCwgc28gdGhhdCB3ZVxuICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3dcbiAqIGZ1bmN0aW9ucywgYW5kIGFzIGxvbmcgYXMgYHRoaXNgIGFuZCBvd25lciBhcmUgdGhlIHNhbWUsIHRoZXJlIHdpbGwgYmUgbm9cbiAqIGNoYW5nZSBpbiBiZWhhdmlvci5cbiAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKVxuICogaW5kaWNhdGluZyBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZC9vciBvdGhlciBpbmZvcm1hdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG5cblxudmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgdmFyIGVsZW1lbnQgPSB7XG4gICAgLy8gVGhpcyB0YWcgYWxsb3dzIHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcbiAgICAvLyBCdWlsdC1pbiBwcm9wZXJ0aWVzIHRoYXQgYmVsb25nIG9uIHRoZSBlbGVtZW50XG4gICAgdHlwZTogdHlwZSxcbiAgICBrZXk6IGtleSxcbiAgICByZWY6IHJlZixcbiAgICBwcm9wczogcHJvcHMsXG4gICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC5cbiAgICBfb3duZXI6IG93bmVyXG4gIH07XG5cbiAge1xuICAgIC8vIFRoZSB2YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb25cbiAgICAvLyBhbiBleHRlcm5hbCBiYWNraW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIGZyZWV6ZSB0aGUgd2hvbGUgb2JqZWN0LlxuICAgIC8vIFRoaXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW5cbiAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy5cbiAgICBlbGVtZW50Ll9zdG9yZSA9IHt9OyAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBmYWxzZVxuICAgIH0pOyAvLyBzZWxmIGFuZCBzb3VyY2UgYXJlIERFViBvbmx5IHByb3BlcnRpZXMuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zZWxmJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHNlbGZcbiAgICB9KTsgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWRcbiAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBzb3VyY2VcbiAgICB9KTtcblxuICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07XG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JmY3MvcHVsbC8xMDdcbiAqIEBwYXJhbSB7Kn0gdHlwZVxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gKi9cblxuZnVuY3Rpb24ganN4REVWKHR5cGUsIGNvbmZpZywgbWF5YmVLZXksIHNvdXJjZSwgc2VsZikge1xuICB7XG4gICAgdmFyIHByb3BOYW1lOyAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cbiAgICB2YXIgcHJvcHMgPSB7fTtcbiAgICB2YXIga2V5ID0gbnVsbDtcbiAgICB2YXIgcmVmID0gbnVsbDsgLy8gQ3VycmVudGx5LCBrZXkgY2FuIGJlIHNwcmVhZCBpbiBhcyBhIHByb3AuIFRoaXMgY2F1c2VzIGEgcG90ZW50aWFsXG4gICAgLy8gaXNzdWUgaWYga2V5IGlzIGFsc28gZXhwbGljaXRseSBkZWNsYXJlZCAoaWUuIDxkaXYgey4uLnByb3BzfSBrZXk9XCJIaVwiIC8+XG4gICAgLy8gb3IgPGRpdiBrZXk9XCJIaVwiIHsuLi5wcm9wc30gLz4gKS4gV2Ugd2FudCB0byBkZXByZWNhdGUga2V5IHNwcmVhZCxcbiAgICAvLyBidXQgYXMgYW4gaW50ZXJtZWRpYXJ5IHN0ZXAsIHdlIHdpbGwgdXNlIGpzeERFViBmb3IgZXZlcnl0aGluZyBleGNlcHRcbiAgICAvLyA8ZGl2IHsuLi5wcm9wc30ga2V5PVwiSGlcIiAvPiwgYmVjYXVzZSB3ZSBhcmVuJ3QgY3VycmVudGx5IGFibGUgdG8gdGVsbCBpZlxuICAgIC8vIGtleSBpcyBleHBsaWNpdGx5IGRlY2xhcmVkIHRvIGJlIHVuZGVmaW5lZCBvciBub3QuXG5cbiAgICBpZiAobWF5YmVLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAge1xuICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKG1heWJlS2V5KTtcbiAgICAgIH1cblxuICAgICAga2V5ID0gJycgKyBtYXliZUtleTtcbiAgICB9XG5cbiAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkge1xuICAgICAge1xuICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKGNvbmZpZy5rZXkpO1xuICAgICAgfVxuXG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgICB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKTtcbiAgICB9IC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcblxuXG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9IC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuXG5cbiAgICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuXG4gICAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtleSB8fCByZWYpIHtcbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudE93bmVyJDEgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duO1xuXG57XG4gIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duID0gZmFsc2U7XG59XG4vKipcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI2lzdmFsaWRlbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIEBmaW5hbFxuICovXG5cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQob2JqZWN0KSB7XG4gIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpIHtcbiAge1xuICAgIGlmIChSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyJDEuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICdcXG5cXG5DaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShzb3VyY2UpIHtcbiAge1xuICAgIGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGZpbGVOYW1lID0gc291cmNlLmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFwvXS8sICcnKTtcbiAgICAgIHZhciBsaW5lTnVtYmVyID0gc291cmNlLmxpbmVOdW1iZXI7XG4gICAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHlvdXIgY29kZSBhdCAnICsgZmlsZU5hbWUgKyAnOicgKyBsaW5lTnVtYmVyICsgJy4nO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuLyoqXG4gKiBXYXJuIGlmIHRoZXJlJ3Mgbm8ga2V5IGV4cGxpY2l0bHkgc2V0IG9uIGR5bmFtaWMgYXJyYXlzIG9mIGNoaWxkcmVuIG9yXG4gKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW5cbiAqIHVwZGF0ZXMuXG4gKi9cblxuXG52YXIgb3duZXJIYXNLZXlVc2VXYXJuaW5nID0ge307XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSkge1xuICB7XG4gICAgdmFyIGluZm8gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcblxuICAgIGlmICghaW5mbykge1xuICAgICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7XG5cbiAgICAgIGlmIChwYXJlbnROYW1lKSB7XG4gICAgICAgIGluZm8gPSBcIlxcblxcbkNoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwgdXNpbmcgPFwiICsgcGFyZW50TmFtZSArIFwiPi5cIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5mbztcbiAgfVxufVxuLyoqXG4gKiBXYXJuIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQgdG8gaXQuXG4gKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJpbmsgb3IgYmVcbiAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0b1xuICogaGF2ZSBhIFwia2V5XCIgcHJvcGVydHkgYXNzaWduZWQgdG8gaXQuIEVycm9yIHN0YXR1c2VzIGFyZSBjYWNoZWQgc28gYSB3YXJuaW5nXG4gKiB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBlbGVtZW50J3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICB7XG4gICAgaWYgKCFlbGVtZW50Ll9zdG9yZSB8fCBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgfHwgZWxlbWVudC5rZXkgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpO1xuXG4gICAgaWYgKG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSA9IHRydWU7IC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhXG4gICAgLy8gcHJvcGVydHksIGl0IG1heSBiZSB0aGUgY3JlYXRvciBvZiB0aGUgY2hpbGQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvclxuICAgIC8vIGFzc2lnbmluZyBpdCBhIGtleS5cblxuICAgIHZhciBjaGlsZE93bmVyID0gJyc7XG5cbiAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50Ll9vd25lciAmJiBlbGVtZW50Ll9vd25lciAhPT0gUmVhY3RDdXJyZW50T3duZXIkMS5jdXJyZW50KSB7XG4gICAgICAvLyBHaXZlIHRoZSBjb21wb25lbnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhpcyBjaGlsZC5cbiAgICAgIGNoaWxkT3duZXIgPSBcIiBJdCB3YXMgcGFzc2VkIGEgY2hpbGQgZnJvbSBcIiArIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShlbGVtZW50Ll9vd25lci50eXBlKSArIFwiLlwiO1xuICAgIH1cblxuICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCk7XG5cbiAgICBlcnJvcignRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLicgKyAnJXMlcyBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3dhcm5pbmcta2V5cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvLCBjaGlsZE93bmVyKTtcblxuICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XG4gIH1cbn1cbi8qKlxuICogRW5zdXJlIHRoYXQgZXZlcnkgZWxlbWVudCBlaXRoZXIgaXMgcGFzc2VkIGluIGEgc3RhdGljIGxvY2F0aW9uLCBpbiBhblxuICogYXJyYXkgd2l0aCBhbiBleHBsaWNpdCBrZXlzIHByb3BlcnR5IGRlZmluZWQsIG9yIGluIGFuIG9iamVjdCBsaXRlcmFsXG4gKiB3aXRoIHZhbGlkIGtleSBwcm9wZXJ0eS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlIFN0YXRpY2FsbHkgcGFzc2VkIGNoaWxkIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIG5vZGUncyBwYXJlbnQncyB0eXBlLlxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSwgcGFyZW50VHlwZSkge1xuICB7XG4gICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0FycmF5KG5vZGUpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gbm9kZVtpXTtcblxuICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50VHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgICAvLyBUaGlzIGVsZW1lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9uLlxuICAgICAgaWYgKG5vZGUuX3N0b3JlKSB7XG4gICAgICAgIG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2RlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obm9kZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBFbnRyeSBpdGVyYXRvcnMgdXNlZCB0byBwcm92aWRlIGltcGxpY2l0IGtleXMsXG4gICAgICAgIC8vIGJ1dCBub3cgd2UgcHJpbnQgYSBzZXBhcmF0ZSB3YXJuaW5nIGZvciB0aGVtIGxhdGVyLlxuICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuXG4gICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vKipcbiAqIEdpdmVuIGFuIGVsZW1lbnQsIHZhbGlkYXRlIHRoYXQgaXRzIHByb3BzIGZvbGxvdyB0aGUgcHJvcFR5cGVzIGRlZmluaXRpb24sXG4gKiBwcm92aWRlZCBieSB0aGUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCkge1xuICB7XG4gICAgdmFyIHR5cGUgPSBlbGVtZW50LnR5cGU7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHByb3BUeXBlcztcblxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcFR5cGVzID0gdHlwZS5wcm9wVHlwZXM7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgLy8gTm90ZTogTWVtbyBvbmx5IGNoZWNrcyBvdXRlciBwcm9wcyBoZXJlLlxuICAgIC8vIElubmVyIHByb3BzIGFyZSBjaGVja2VkIGluIHRoZSByZWNvbmNpbGVyLlxuICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSkpIHtcbiAgICAgIHByb3BUeXBlcyA9IHR5cGUucHJvcFR5cGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BUeXBlcykge1xuICAgICAgLy8gSW50ZW50aW9uYWxseSBpbnNpZGUgdG8gYXZvaWQgdHJpZ2dlcmluZyBsYXp5IGluaXRpYWxpemVyczpcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuICAgICAgY2hlY2tQcm9wVHlwZXMocHJvcFR5cGVzLCBlbGVtZW50LnByb3BzLCAncHJvcCcsIG5hbWUsIGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAodHlwZS5Qcm9wVHlwZXMgIT09IHVuZGVmaW5lZCAmJiAhcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24pIHtcbiAgICAgIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duID0gdHJ1ZTsgLy8gSW50ZW50aW9uYWxseSBpbnNpZGUgdG8gYXZvaWQgdHJpZ2dlcmluZyBsYXp5IGluaXRpYWxpemVyczpcblxuICAgICAgdmFyIF9uYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuXG4gICAgICBlcnJvcignQ29tcG9uZW50ICVzIGRlY2xhcmVkIGBQcm9wVHlwZXNgIGluc3RlYWQgb2YgYHByb3BUeXBlc2AuIERpZCB5b3UgbWlzc3BlbGwgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQ/JywgX25hbWUgfHwgJ1Vua25vd24nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHR5cGUuZ2V0RGVmYXVsdFByb3BzID09PSAnZnVuY3Rpb24nICYmICF0eXBlLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCkge1xuICAgICAgZXJyb3IoJ2dldERlZmF1bHRQcm9wcyBpcyBvbmx5IHVzZWQgb24gY2xhc3NpYyBSZWFjdC5jcmVhdGVDbGFzcyAnICsgJ2RlZmluaXRpb25zLiBVc2UgYSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgYGRlZmF1bHRQcm9wc2AgaW5zdGVhZC4nKTtcbiAgICB9XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYSBmcmFnbWVudCwgdmFsaWRhdGUgdGhhdCBpdCBjYW4gb25seSBiZSBwcm92aWRlZCB3aXRoIGZyYWdtZW50IHByb3BzXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZnJhZ21lbnRcbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhmcmFnbWVudCkge1xuICB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhmcmFnbWVudC5wcm9wcyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoa2V5ICE9PSAnY2hpbGRyZW4nICYmIGtleSAhPT0gJ2tleScpIHtcbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShmcmFnbWVudCk7XG5cbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgcHJvcCBgJXNgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuICcgKyAnUmVhY3QuRnJhZ21lbnQgY2FuIG9ubHkgaGF2ZSBga2V5YCBhbmQgYGNoaWxkcmVuYCBwcm9wcy4nLCBrZXkpO1xuXG4gICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmcmFnbWVudC5yZWYgIT09IG51bGwpIHtcbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZnJhZ21lbnQpO1xuXG4gICAgICBlcnJvcignSW52YWxpZCBhdHRyaWJ1dGUgYHJlZmAgc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4nKTtcblxuICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24ganN4V2l0aFZhbGlkYXRpb24odHlwZSwgcHJvcHMsIGtleSwgaXNTdGF0aWNDaGlsZHJlbiwgc291cmNlLCBzZWxmKSB7XG4gIHtcbiAgICB2YXIgdmFsaWRUeXBlID0gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpOyAvLyBXZSB3YXJuIGluIHRoaXMgY2FzZSBidXQgZG9uJ3QgdGhyb3cuIFdlIGV4cGVjdCB0aGUgZWxlbWVudCBjcmVhdGlvbiB0b1xuICAgIC8vIHN1Y2NlZWQgYW5kIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGVycm9ycyBpbiByZW5kZXIuXG5cbiAgICBpZiAoIXZhbGlkVHlwZSkge1xuICAgICAgdmFyIGluZm8gPSAnJztcblxuICAgICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0eXBlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0J3MgZGVmaW5lZCBpbiwgb3IgeW91IG1pZ2h0IGhhdmUgbWl4ZWQgdXAgZGVmYXVsdCBhbmQgbmFtZWQgaW1wb3J0cy5cIjtcbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZUluZm8gPSBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShzb3VyY2UpO1xuXG4gICAgICBpZiAoc291cmNlSW5mbykge1xuICAgICAgICBpbmZvICs9IHNvdXJjZUluZm87XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmZvICs9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdHlwZVN0cmluZztcblxuICAgICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgdHlwZVN0cmluZyA9ICdudWxsJztcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh0eXBlKSkge1xuICAgICAgICB0eXBlU3RyaW5nID0gJ2FycmF5JztcbiAgICAgIH0gZWxzZSBpZiAodHlwZSAhPT0gdW5kZWZpbmVkICYmIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgICAgICB0eXBlU3RyaW5nID0gXCI8XCIgKyAoZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgJ1Vua25vd24nKSArIFwiIC8+XCI7XG4gICAgICAgIGluZm8gPSAnIERpZCB5b3UgYWNjaWRlbnRhbGx5IGV4cG9ydCBhIEpTWCBsaXRlcmFsIGluc3RlYWQgb2YgYSBjb21wb25lbnQ/JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSB0eXBlb2YgdHlwZTtcbiAgICAgIH1cblxuICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogdHlwZSBpcyBpbnZhbGlkIC0tIGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgJyArICdidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlICcgKyAnY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCB0eXBlU3RyaW5nLCBpbmZvKTtcbiAgICB9XG5cbiAgICB2YXIgZWxlbWVudCA9IGpzeERFVih0eXBlLCBwcm9wcywga2V5LCBzb3VyY2UsIHNlbGYpOyAvLyBUaGUgcmVzdWx0IGNhbiBiZSBudWxsaXNoIGlmIGEgbW9jayBvciBhIGN1c3RvbSBmdW5jdGlvbiBpcyB1c2VkLlxuICAgIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVudC5cblxuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0gLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcbiAgICAvLyBkb2Vzbid0IGV4cGVjdCBhIG5vbi1zdHJpbmcvZnVuY3Rpb24gdHlwZSBhbmQgY2FuIHRocm93IGNvbmZ1c2luZyBlcnJvcnMuXG4gICAgLy8gV2UgZG9uJ3Qgd2FudCBleGNlcHRpb24gYmVoYXZpb3IgdG8gZGlmZmVyIGJldHdlZW4gZGV2IGFuZCBwcm9kLlxuICAgIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXG4gICAgLy8gZml4ZWQsIHRoZSBrZXkgd2FybmluZ3Mgd2lsbCBhcHBlYXIuKVxuXG5cbiAgICBpZiAodmFsaWRUeXBlKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcblxuICAgICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljQ2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW5baV0sIHR5cGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogU3RhdGljIGNoaWxkcmVuIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkuICcgKyAnWW91IGFyZSBsaWtlbHkgZXhwbGljaXRseSBjYWxsaW5nIFJlYWN0LmpzeHMgb3IgUmVhY3QuanN4REVWLiAnICsgJ1VzZSB0aGUgQmFiZWwgdHJhbnNmb3JtIGluc3RlYWQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGNoaWxkcmVuLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFKSB7XG4gICAgICB2YWxpZGF0ZUZyYWdtZW50UHJvcHMoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG59IC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgZXhpc3QgdG8gc3RpbGwgZ2V0IGNoaWxkIHdhcm5pbmdzIGluIGRldlxuLy8gZXZlbiB3aXRoIHRoZSBwcm9kIHRyYW5zZm9ybS4gVGhpcyBtZWFucyB0aGF0IGpzeERFViBpcyBwdXJlbHlcbi8vIG9wdC1pbiBiZWhhdmlvciBmb3IgYmV0dGVyIG1lc3NhZ2VzIGJ1dCB0aGF0IHdlIHdvbid0IHN0b3Bcbi8vIGdpdmluZyB5b3Ugd2FybmluZ3MgaWYgeW91IHVzZSBwcm9kdWN0aW9uIGFwaXMuXG5cbmZ1bmN0aW9uIGpzeFdpdGhWYWxpZGF0aW9uU3RhdGljKHR5cGUsIHByb3BzLCBrZXkpIHtcbiAge1xuICAgIHJldHVybiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCB0cnVlKTtcbiAgfVxufVxuZnVuY3Rpb24ganN4V2l0aFZhbGlkYXRpb25EeW5hbWljKHR5cGUsIHByb3BzLCBrZXkpIHtcbiAge1xuICAgIHJldHVybiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCBmYWxzZSk7XG4gIH1cbn1cblxudmFyIGpzeCA9ICBqc3hXaXRoVmFsaWRhdGlvbkR5bmFtaWMgOyAvLyB3ZSBtYXkgd2FudCB0byBzcGVjaWFsIGNhc2UganN4cyBpbnRlcm5hbGx5IHRvIHRha2UgYWR2YW50YWdlIG9mIHN0YXRpYyBjaGlsZHJlbi5cbi8vIGZvciBub3cgd2UgY2FuIHNoaXAgaWRlbnRpY2FsIHByb2QgZnVuY3Rpb25zXG5cbnZhciBqc3hzID0gIGpzeFdpdGhWYWxpZGF0aW9uU3RhdGljIDtcblxuZXhwb3J0cy5GcmFnbWVudCA9IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG5leHBvcnRzLmpzeCA9IGpzeDtcbmV4cG9ydHMuanN4cyA9IGpzeHM7XG4gIH0pKCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKiBAbW9kdWxlIFNlZSBgcm9sbHVwLmNvbmZpZy5qc2AgZm9yIHdoYXQgdGhpcyBmaWxlIGRvZXMuICovXG5pbXBvcnQgKiBhcyBKc3ggZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgXG4vLyBAdHMtaWdub3JlXG5GcmFnbWVudCwgXG4vLyBAdHMtaWdub3JlXG5qc3gsIFxuLy8gQHRzLWlnbm9yZVxuanN4cywgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5leHBvcnQgZGVmYXVsdCBKc3g7XG5leHBvcnQgeyBGcmFnbWVudCwganN4LCBqc3hzIH07XG4iXSwibmFtZXMiOlsicmVxdWlyZSQkMCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQUMyQztBQUMzQyxFQUFFLENBQUMsV0FBVztBQUVkO0FBQ0EsSUFBSSxLQUFLLEdBQUcsVUFBZ0IsQ0FBQztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3JELElBQUksaUJBQWlCLEdBQUcsTUFBTSxD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
|