@cartanova/qgrid-cli 2.4.8 → 2.5.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.
Files changed (735) hide show
  1. package/README.ko.md +18 -11
  2. package/README.md +18 -11
  3. package/bundle/.env +0 -0
  4. package/bundle/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.140.0/helpers/esm}/decorate.js +2 -2
  5. package/bundle/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.140.0/helpers/esm}/decorateMetadata.js +2 -2
  6. package/bundle/dist/_virtual/_rolldown/runtime.js +2 -3
  7. package/bundle/dist/application/monit/log-buffer.js +3 -2
  8. package/bundle/dist/application/monit/monit.frame.js +5 -6
  9. package/bundle/dist/application/monit/monit.types.js +1 -2
  10. package/bundle/dist/application/qgrid/conv-routing.js +1 -2
  11. package/bundle/dist/application/qgrid/oauth.js +1 -2
  12. package/bundle/dist/application/qgrid/qgrid-image-generation.js +1 -2
  13. package/bundle/dist/application/qgrid/qgrid-response-format.js +1 -2
  14. package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +76 -47
  15. package/bundle/dist/application/qgrid/qgrid.dispatcher.js +1 -2
  16. package/bundle/dist/application/qgrid/qgrid.frame.js +73 -97
  17. package/bundle/dist/application/qgrid/qgrid.types.js +11 -10
  18. package/bundle/dist/application/qgrid/token-subscriber.js +3 -2
  19. package/bundle/dist/application/qgrid/token-trigger-setup.js +1 -2
  20. package/bundle/dist/application/qgrid/tool-emulation.js +1 -2
  21. package/bundle/dist/application/queries.generated.js +1 -2
  22. package/bundle/dist/application/request-log/request-log.model.js +116 -47
  23. package/bundle/dist/application/request-log/request-log.types.js +1 -2
  24. package/bundle/dist/application/request-log-step/request-log-step.model.js +3 -4
  25. package/bundle/dist/application/request-log-step/request-log-step.types.js +1 -2
  26. package/bundle/dist/application/sonamu.generated.js +14 -15
  27. package/bundle/dist/application/sonamu.generated.sso.js +1 -2
  28. package/bundle/dist/application/token/token.model.js +3 -4
  29. package/bundle/dist/application/token/token.types.js +1 -2
  30. package/bundle/dist/codex-protocol/AbsolutePathBuf.js +0 -1
  31. package/bundle/dist/codex-protocol/AgentPath.js +0 -1
  32. package/bundle/dist/codex-protocol/ApplyPatchApprovalParams.js +0 -1
  33. package/bundle/dist/codex-protocol/ApplyPatchApprovalResponse.js +0 -1
  34. package/bundle/dist/codex-protocol/AuthMode.js +0 -1
  35. package/bundle/dist/codex-protocol/ClientInfo.js +0 -1
  36. package/bundle/dist/codex-protocol/ClientNotification.js +0 -1
  37. package/bundle/dist/codex-protocol/ClientRequest.js +0 -1
  38. package/bundle/dist/codex-protocol/CollaborationMode.js +0 -1
  39. package/bundle/dist/codex-protocol/ContentItem.js +0 -1
  40. package/bundle/dist/codex-protocol/ConversationGitInfo.js +0 -1
  41. package/bundle/dist/codex-protocol/ConversationSummary.js +0 -1
  42. package/bundle/dist/codex-protocol/ExecCommandApprovalParams.js +0 -1
  43. package/bundle/dist/codex-protocol/ExecCommandApprovalResponse.js +0 -1
  44. package/bundle/dist/codex-protocol/ExecPolicyAmendment.js +0 -1
  45. package/bundle/dist/codex-protocol/FileChange.js +0 -1
  46. package/bundle/dist/codex-protocol/ForcedLoginMethod.js +0 -1
  47. package/bundle/dist/codex-protocol/FunctionCallOutputBody.js +0 -1
  48. package/bundle/dist/codex-protocol/FunctionCallOutputContentItem.js +0 -1
  49. package/bundle/dist/codex-protocol/FuzzyFileSearchMatchType.js +0 -1
  50. package/bundle/dist/codex-protocol/FuzzyFileSearchParams.js +0 -1
  51. package/bundle/dist/codex-protocol/FuzzyFileSearchResponse.js +0 -1
  52. package/bundle/dist/codex-protocol/FuzzyFileSearchResult.js +0 -1
  53. package/bundle/dist/codex-protocol/FuzzyFileSearchSessionCompletedNotification.js +0 -1
  54. package/bundle/dist/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.js +0 -1
  55. package/bundle/dist/codex-protocol/GetAuthStatusParams.js +0 -1
  56. package/bundle/dist/codex-protocol/GetAuthStatusResponse.js +0 -1
  57. package/bundle/dist/codex-protocol/GetConversationSummaryParams.js +0 -1
  58. package/bundle/dist/codex-protocol/GetConversationSummaryResponse.js +0 -1
  59. package/bundle/dist/codex-protocol/GitDiffToRemoteParams.js +0 -1
  60. package/bundle/dist/codex-protocol/GitDiffToRemoteResponse.js +0 -1
  61. package/bundle/dist/codex-protocol/GitSha.js +0 -1
  62. package/bundle/dist/codex-protocol/ImageDetail.js +0 -1
  63. package/bundle/dist/codex-protocol/InitializeCapabilities.js +0 -1
  64. package/bundle/dist/codex-protocol/InitializeParams.js +0 -1
  65. package/bundle/dist/codex-protocol/InitializeResponse.js +0 -1
  66. package/bundle/dist/codex-protocol/InputModality.js +0 -1
  67. package/bundle/dist/codex-protocol/InternalSessionSource.js +0 -1
  68. package/bundle/dist/codex-protocol/LocalShellAction.js +0 -1
  69. package/bundle/dist/codex-protocol/LocalShellExecAction.js +0 -1
  70. package/bundle/dist/codex-protocol/LocalShellStatus.js +0 -1
  71. package/bundle/dist/codex-protocol/MessagePhase.js +0 -1
  72. package/bundle/dist/codex-protocol/ModeKind.js +0 -1
  73. package/bundle/dist/codex-protocol/NetworkPolicyAmendment.js +0 -1
  74. package/bundle/dist/codex-protocol/NetworkPolicyRuleAction.js +0 -1
  75. package/bundle/dist/codex-protocol/ParsedCommand.js +0 -1
  76. package/bundle/dist/codex-protocol/Personality.js +0 -1
  77. package/bundle/dist/codex-protocol/PlanType.js +0 -1
  78. package/bundle/dist/codex-protocol/RealtimeConversationVersion.js +0 -1
  79. package/bundle/dist/codex-protocol/RealtimeOutputModality.js +0 -1
  80. package/bundle/dist/codex-protocol/RealtimeVoice.js +0 -1
  81. package/bundle/dist/codex-protocol/RealtimeVoicesList.js +0 -1
  82. package/bundle/dist/codex-protocol/ReasoningEffort.js +0 -1
  83. package/bundle/dist/codex-protocol/ReasoningItemContent.js +0 -1
  84. package/bundle/dist/codex-protocol/ReasoningItemReasoningSummary.js +0 -1
  85. package/bundle/dist/codex-protocol/ReasoningSummary.js +0 -1
  86. package/bundle/dist/codex-protocol/RequestId.js +0 -1
  87. package/bundle/dist/codex-protocol/Resource.js +0 -1
  88. package/bundle/dist/codex-protocol/ResourceContent.js +0 -1
  89. package/bundle/dist/codex-protocol/ResourceTemplate.js +0 -1
  90. package/bundle/dist/codex-protocol/ResponseItem.js +0 -1
  91. package/bundle/dist/codex-protocol/ReviewDecision.js +0 -1
  92. package/bundle/dist/codex-protocol/ServerNotification.js +0 -1
  93. package/bundle/dist/codex-protocol/ServerRequest.js +0 -1
  94. package/bundle/dist/codex-protocol/SessionSource.js +0 -1
  95. package/bundle/dist/codex-protocol/Settings.js +0 -1
  96. package/bundle/dist/codex-protocol/SubAgentSource.js +0 -1
  97. package/bundle/dist/codex-protocol/ThreadId.js +0 -1
  98. package/bundle/dist/codex-protocol/ThreadMemoryMode.js +0 -1
  99. package/bundle/dist/codex-protocol/Tool.js +0 -1
  100. package/bundle/dist/codex-protocol/Verbosity.js +0 -1
  101. package/bundle/dist/codex-protocol/WebSearchAction.js +0 -1
  102. package/bundle/dist/codex-protocol/WebSearchContextSize.js +0 -1
  103. package/bundle/dist/codex-protocol/WebSearchLocation.js +0 -1
  104. package/bundle/dist/codex-protocol/WebSearchMode.js +0 -1
  105. package/bundle/dist/codex-protocol/WebSearchToolConfig.js +0 -1
  106. package/bundle/dist/codex-protocol/index.js +0 -1
  107. package/bundle/dist/codex-protocol/serde_json/JsonValue.js +0 -1
  108. package/bundle/dist/codex-protocol/v2/Account.js +0 -1
  109. package/bundle/dist/codex-protocol/v2/AccountLoginCompletedNotification.js +0 -1
  110. package/bundle/dist/codex-protocol/v2/AccountRateLimitsUpdatedNotification.js +0 -1
  111. package/bundle/dist/codex-protocol/v2/AccountUpdatedNotification.js +0 -1
  112. package/bundle/dist/codex-protocol/v2/ActivePermissionProfile.js +0 -1
  113. package/bundle/dist/codex-protocol/v2/ActivePermissionProfileModification.js +0 -1
  114. package/bundle/dist/codex-protocol/v2/AddCreditsNudgeCreditType.js +0 -1
  115. package/bundle/dist/codex-protocol/v2/AddCreditsNudgeEmailStatus.js +0 -1
  116. package/bundle/dist/codex-protocol/v2/AdditionalFileSystemPermissions.js +0 -1
  117. package/bundle/dist/codex-protocol/v2/AdditionalNetworkPermissions.js +0 -1
  118. package/bundle/dist/codex-protocol/v2/AdditionalPermissionProfile.js +0 -1
  119. package/bundle/dist/codex-protocol/v2/AgentMessageDeltaNotification.js +0 -1
  120. package/bundle/dist/codex-protocol/v2/AnalyticsConfig.js +0 -1
  121. package/bundle/dist/codex-protocol/v2/AppBranding.js +0 -1
  122. package/bundle/dist/codex-protocol/v2/AppInfo.js +0 -1
  123. package/bundle/dist/codex-protocol/v2/AppListUpdatedNotification.js +0 -1
  124. package/bundle/dist/codex-protocol/v2/AppMetadata.js +0 -1
  125. package/bundle/dist/codex-protocol/v2/AppReview.js +0 -1
  126. package/bundle/dist/codex-protocol/v2/AppScreenshot.js +0 -1
  127. package/bundle/dist/codex-protocol/v2/AppSummary.js +0 -1
  128. package/bundle/dist/codex-protocol/v2/AppToolApproval.js +0 -1
  129. package/bundle/dist/codex-protocol/v2/AppToolsConfig.js +0 -1
  130. package/bundle/dist/codex-protocol/v2/ApprovalsReviewer.js +0 -1
  131. package/bundle/dist/codex-protocol/v2/AppsConfig.js +0 -1
  132. package/bundle/dist/codex-protocol/v2/AppsDefaultConfig.js +0 -1
  133. package/bundle/dist/codex-protocol/v2/AppsListParams.js +0 -1
  134. package/bundle/dist/codex-protocol/v2/AppsListResponse.js +0 -1
  135. package/bundle/dist/codex-protocol/v2/AskForApproval.js +0 -1
  136. package/bundle/dist/codex-protocol/v2/AutoReviewDecisionSource.js +0 -1
  137. package/bundle/dist/codex-protocol/v2/ByteRange.js +0 -1
  138. package/bundle/dist/codex-protocol/v2/CancelLoginAccountParams.js +0 -1
  139. package/bundle/dist/codex-protocol/v2/CancelLoginAccountResponse.js +0 -1
  140. package/bundle/dist/codex-protocol/v2/CancelLoginAccountStatus.js +0 -1
  141. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshParams.js +0 -1
  142. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshReason.js +0 -1
  143. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.js +0 -1
  144. package/bundle/dist/codex-protocol/v2/CodexErrorInfo.js +0 -1
  145. package/bundle/dist/codex-protocol/v2/CollabAgentState.js +0 -1
  146. package/bundle/dist/codex-protocol/v2/CollabAgentStatus.js +0 -1
  147. package/bundle/dist/codex-protocol/v2/CollabAgentTool.js +0 -1
  148. package/bundle/dist/codex-protocol/v2/CollabAgentToolCallStatus.js +0 -1
  149. package/bundle/dist/codex-protocol/v2/CollaborationModeMask.js +0 -1
  150. package/bundle/dist/codex-protocol/v2/CommandAction.js +0 -1
  151. package/bundle/dist/codex-protocol/v2/CommandExecOutputDeltaNotification.js +0 -1
  152. package/bundle/dist/codex-protocol/v2/CommandExecOutputStream.js +0 -1
  153. package/bundle/dist/codex-protocol/v2/CommandExecParams.js +0 -1
  154. package/bundle/dist/codex-protocol/v2/CommandExecResizeParams.js +0 -1
  155. package/bundle/dist/codex-protocol/v2/CommandExecResizeResponse.js +0 -1
  156. package/bundle/dist/codex-protocol/v2/CommandExecResponse.js +0 -1
  157. package/bundle/dist/codex-protocol/v2/CommandExecTerminalSize.js +0 -1
  158. package/bundle/dist/codex-protocol/v2/CommandExecTerminateParams.js +0 -1
  159. package/bundle/dist/codex-protocol/v2/CommandExecTerminateResponse.js +0 -1
  160. package/bundle/dist/codex-protocol/v2/CommandExecWriteParams.js +0 -1
  161. package/bundle/dist/codex-protocol/v2/CommandExecWriteResponse.js +0 -1
  162. package/bundle/dist/codex-protocol/v2/CommandExecutionApprovalDecision.js +0 -1
  163. package/bundle/dist/codex-protocol/v2/CommandExecutionOutputDeltaNotification.js +0 -1
  164. package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalParams.js +0 -1
  165. package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalResponse.js +0 -1
  166. package/bundle/dist/codex-protocol/v2/CommandExecutionSource.js +0 -1
  167. package/bundle/dist/codex-protocol/v2/CommandExecutionStatus.js +0 -1
  168. package/bundle/dist/codex-protocol/v2/CommandMigration.js +0 -1
  169. package/bundle/dist/codex-protocol/v2/Config.js +0 -1
  170. package/bundle/dist/codex-protocol/v2/ConfigBatchWriteParams.js +0 -1
  171. package/bundle/dist/codex-protocol/v2/ConfigEdit.js +0 -1
  172. package/bundle/dist/codex-protocol/v2/ConfigLayer.js +0 -1
  173. package/bundle/dist/codex-protocol/v2/ConfigLayerMetadata.js +0 -1
  174. package/bundle/dist/codex-protocol/v2/ConfigLayerSource.js +0 -1
  175. package/bundle/dist/codex-protocol/v2/ConfigReadParams.js +0 -1
  176. package/bundle/dist/codex-protocol/v2/ConfigReadResponse.js +0 -1
  177. package/bundle/dist/codex-protocol/v2/ConfigRequirements.js +0 -1
  178. package/bundle/dist/codex-protocol/v2/ConfigRequirementsReadResponse.js +0 -1
  179. package/bundle/dist/codex-protocol/v2/ConfigValueWriteParams.js +0 -1
  180. package/bundle/dist/codex-protocol/v2/ConfigWarningNotification.js +0 -1
  181. package/bundle/dist/codex-protocol/v2/ConfigWriteResponse.js +0 -1
  182. package/bundle/dist/codex-protocol/v2/ConfiguredHookHandler.js +0 -1
  183. package/bundle/dist/codex-protocol/v2/ConfiguredHookMatcherGroup.js +0 -1
  184. package/bundle/dist/codex-protocol/v2/ContextCompactedNotification.js +0 -1
  185. package/bundle/dist/codex-protocol/v2/CreditsSnapshot.js +0 -1
  186. package/bundle/dist/codex-protocol/v2/DeprecationNoticeNotification.js +0 -1
  187. package/bundle/dist/codex-protocol/v2/DynamicToolCallOutputContentItem.js +0 -1
  188. package/bundle/dist/codex-protocol/v2/DynamicToolCallParams.js +0 -1
  189. package/bundle/dist/codex-protocol/v2/DynamicToolCallResponse.js +0 -1
  190. package/bundle/dist/codex-protocol/v2/DynamicToolCallStatus.js +0 -1
  191. package/bundle/dist/codex-protocol/v2/DynamicToolSpec.js +0 -1
  192. package/bundle/dist/codex-protocol/v2/ErrorNotification.js +0 -1
  193. package/bundle/dist/codex-protocol/v2/ExecPolicyAmendment.js +0 -1
  194. package/bundle/dist/codex-protocol/v2/ExperimentalFeature.js +0 -1
  195. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.js +0 -1
  196. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.js +0 -1
  197. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListParams.js +0 -1
  198. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListResponse.js +0 -1
  199. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureStage.js +0 -1
  200. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectParams.js +0 -1
  201. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectResponse.js +0 -1
  202. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.js +0 -1
  203. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportParams.js +0 -1
  204. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportResponse.js +0 -1
  205. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItem.js +0 -1
  206. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItemType.js +0 -1
  207. package/bundle/dist/codex-protocol/v2/FeedbackUploadParams.js +0 -1
  208. package/bundle/dist/codex-protocol/v2/FeedbackUploadResponse.js +0 -1
  209. package/bundle/dist/codex-protocol/v2/FileChangeApprovalDecision.js +0 -1
  210. package/bundle/dist/codex-protocol/v2/FileChangeOutputDeltaNotification.js +0 -1
  211. package/bundle/dist/codex-protocol/v2/FileChangePatchUpdatedNotification.js +0 -1
  212. package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalParams.js +0 -1
  213. package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalResponse.js +0 -1
  214. package/bundle/dist/codex-protocol/v2/FileSystemAccessMode.js +0 -1
  215. package/bundle/dist/codex-protocol/v2/FileSystemPath.js +0 -1
  216. package/bundle/dist/codex-protocol/v2/FileSystemSandboxEntry.js +0 -1
  217. package/bundle/dist/codex-protocol/v2/FileSystemSpecialPath.js +0 -1
  218. package/bundle/dist/codex-protocol/v2/FileUpdateChange.js +0 -1
  219. package/bundle/dist/codex-protocol/v2/FsChangedNotification.js +0 -1
  220. package/bundle/dist/codex-protocol/v2/FsCopyParams.js +0 -1
  221. package/bundle/dist/codex-protocol/v2/FsCopyResponse.js +0 -1
  222. package/bundle/dist/codex-protocol/v2/FsCreateDirectoryParams.js +0 -1
  223. package/bundle/dist/codex-protocol/v2/FsCreateDirectoryResponse.js +0 -1
  224. package/bundle/dist/codex-protocol/v2/FsGetMetadataParams.js +0 -1
  225. package/bundle/dist/codex-protocol/v2/FsGetMetadataResponse.js +0 -1
  226. package/bundle/dist/codex-protocol/v2/FsReadDirectoryEntry.js +0 -1
  227. package/bundle/dist/codex-protocol/v2/FsReadDirectoryParams.js +0 -1
  228. package/bundle/dist/codex-protocol/v2/FsReadDirectoryResponse.js +0 -1
  229. package/bundle/dist/codex-protocol/v2/FsReadFileParams.js +0 -1
  230. package/bundle/dist/codex-protocol/v2/FsReadFileResponse.js +0 -1
  231. package/bundle/dist/codex-protocol/v2/FsRemoveParams.js +0 -1
  232. package/bundle/dist/codex-protocol/v2/FsRemoveResponse.js +0 -1
  233. package/bundle/dist/codex-protocol/v2/FsUnwatchParams.js +0 -1
  234. package/bundle/dist/codex-protocol/v2/FsUnwatchResponse.js +0 -1
  235. package/bundle/dist/codex-protocol/v2/FsWatchParams.js +0 -1
  236. package/bundle/dist/codex-protocol/v2/FsWatchResponse.js +0 -1
  237. package/bundle/dist/codex-protocol/v2/FsWriteFileParams.js +0 -1
  238. package/bundle/dist/codex-protocol/v2/FsWriteFileResponse.js +0 -1
  239. package/bundle/dist/codex-protocol/v2/GetAccountParams.js +0 -1
  240. package/bundle/dist/codex-protocol/v2/GetAccountRateLimitsResponse.js +0 -1
  241. package/bundle/dist/codex-protocol/v2/GetAccountResponse.js +0 -1
  242. package/bundle/dist/codex-protocol/v2/GitInfo.js +0 -1
  243. package/bundle/dist/codex-protocol/v2/GrantedPermissionProfile.js +0 -1
  244. package/bundle/dist/codex-protocol/v2/GuardianApprovalReview.js +0 -1
  245. package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewAction.js +0 -1
  246. package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewStatus.js +0 -1
  247. package/bundle/dist/codex-protocol/v2/GuardianCommandSource.js +0 -1
  248. package/bundle/dist/codex-protocol/v2/GuardianRiskLevel.js +0 -1
  249. package/bundle/dist/codex-protocol/v2/GuardianUserAuthorization.js +0 -1
  250. package/bundle/dist/codex-protocol/v2/GuardianWarningNotification.js +0 -1
  251. package/bundle/dist/codex-protocol/v2/HookCompletedNotification.js +0 -1
  252. package/bundle/dist/codex-protocol/v2/HookErrorInfo.js +0 -1
  253. package/bundle/dist/codex-protocol/v2/HookEventName.js +0 -1
  254. package/bundle/dist/codex-protocol/v2/HookExecutionMode.js +0 -1
  255. package/bundle/dist/codex-protocol/v2/HookHandlerType.js +0 -1
  256. package/bundle/dist/codex-protocol/v2/HookMetadata.js +0 -1
  257. package/bundle/dist/codex-protocol/v2/HookMigration.js +0 -1
  258. package/bundle/dist/codex-protocol/v2/HookOutputEntry.js +0 -1
  259. package/bundle/dist/codex-protocol/v2/HookOutputEntryKind.js +0 -1
  260. package/bundle/dist/codex-protocol/v2/HookPromptFragment.js +0 -1
  261. package/bundle/dist/codex-protocol/v2/HookRunStatus.js +0 -1
  262. package/bundle/dist/codex-protocol/v2/HookRunSummary.js +0 -1
  263. package/bundle/dist/codex-protocol/v2/HookScope.js +0 -1
  264. package/bundle/dist/codex-protocol/v2/HookSource.js +0 -1
  265. package/bundle/dist/codex-protocol/v2/HookStartedNotification.js +0 -1
  266. package/bundle/dist/codex-protocol/v2/HookTrustStatus.js +0 -1
  267. package/bundle/dist/codex-protocol/v2/HooksListEntry.js +0 -1
  268. package/bundle/dist/codex-protocol/v2/HooksListParams.js +0 -1
  269. package/bundle/dist/codex-protocol/v2/HooksListResponse.js +0 -1
  270. package/bundle/dist/codex-protocol/v2/ItemCompletedNotification.js +0 -1
  271. package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.js +0 -1
  272. package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.js +0 -1
  273. package/bundle/dist/codex-protocol/v2/ItemStartedNotification.js +0 -1
  274. package/bundle/dist/codex-protocol/v2/ListMcpServerStatusParams.js +0 -1
  275. package/bundle/dist/codex-protocol/v2/ListMcpServerStatusResponse.js +0 -1
  276. package/bundle/dist/codex-protocol/v2/LoginAccountParams.js +0 -1
  277. package/bundle/dist/codex-protocol/v2/LoginAccountResponse.js +0 -1
  278. package/bundle/dist/codex-protocol/v2/LogoutAccountResponse.js +0 -1
  279. package/bundle/dist/codex-protocol/v2/ManagedHooksRequirements.js +0 -1
  280. package/bundle/dist/codex-protocol/v2/MarketplaceAddParams.js +0 -1
  281. package/bundle/dist/codex-protocol/v2/MarketplaceAddResponse.js +0 -1
  282. package/bundle/dist/codex-protocol/v2/MarketplaceInterface.js +0 -1
  283. package/bundle/dist/codex-protocol/v2/MarketplaceLoadErrorInfo.js +0 -1
  284. package/bundle/dist/codex-protocol/v2/MarketplaceRemoveParams.js +0 -1
  285. package/bundle/dist/codex-protocol/v2/MarketplaceRemoveResponse.js +0 -1
  286. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeErrorInfo.js +0 -1
  287. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeParams.js +0 -1
  288. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeResponse.js +0 -1
  289. package/bundle/dist/codex-protocol/v2/McpAuthStatus.js +0 -1
  290. package/bundle/dist/codex-protocol/v2/McpElicitationArrayType.js +0 -1
  291. package/bundle/dist/codex-protocol/v2/McpElicitationBooleanSchema.js +0 -1
  292. package/bundle/dist/codex-protocol/v2/McpElicitationBooleanType.js +0 -1
  293. package/bundle/dist/codex-protocol/v2/McpElicitationConstOption.js +0 -1
  294. package/bundle/dist/codex-protocol/v2/McpElicitationEnumSchema.js +0 -1
  295. package/bundle/dist/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.js +0 -1
  296. package/bundle/dist/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.js +0 -1
  297. package/bundle/dist/codex-protocol/v2/McpElicitationNumberSchema.js +0 -1
  298. package/bundle/dist/codex-protocol/v2/McpElicitationNumberType.js +0 -1
  299. package/bundle/dist/codex-protocol/v2/McpElicitationObjectType.js +0 -1
  300. package/bundle/dist/codex-protocol/v2/McpElicitationPrimitiveSchema.js +0 -1
  301. package/bundle/dist/codex-protocol/v2/McpElicitationSchema.js +0 -1
  302. package/bundle/dist/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.js +0 -1
  303. package/bundle/dist/codex-protocol/v2/McpElicitationStringFormat.js +0 -1
  304. package/bundle/dist/codex-protocol/v2/McpElicitationStringSchema.js +0 -1
  305. package/bundle/dist/codex-protocol/v2/McpElicitationStringType.js +0 -1
  306. package/bundle/dist/codex-protocol/v2/McpElicitationTitledEnumItems.js +0 -1
  307. package/bundle/dist/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.js +0 -1
  308. package/bundle/dist/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.js +0 -1
  309. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledEnumItems.js +0 -1
  310. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.js +0 -1
  311. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.js +0 -1
  312. package/bundle/dist/codex-protocol/v2/McpResourceReadParams.js +0 -1
  313. package/bundle/dist/codex-protocol/v2/McpResourceReadResponse.js +0 -1
  314. package/bundle/dist/codex-protocol/v2/McpServerElicitationAction.js +0 -1
  315. package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestParams.js +0 -1
  316. package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestResponse.js +0 -1
  317. package/bundle/dist/codex-protocol/v2/McpServerMigration.js +0 -1
  318. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginCompletedNotification.js +0 -1
  319. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginParams.js +0 -1
  320. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginResponse.js +0 -1
  321. package/bundle/dist/codex-protocol/v2/McpServerRefreshResponse.js +0 -1
  322. package/bundle/dist/codex-protocol/v2/McpServerStartupState.js +0 -1
  323. package/bundle/dist/codex-protocol/v2/McpServerStatus.js +0 -1
  324. package/bundle/dist/codex-protocol/v2/McpServerStatusDetail.js +0 -1
  325. package/bundle/dist/codex-protocol/v2/McpServerStatusUpdatedNotification.js +0 -1
  326. package/bundle/dist/codex-protocol/v2/McpServerToolCallParams.js +0 -1
  327. package/bundle/dist/codex-protocol/v2/McpServerToolCallResponse.js +0 -1
  328. package/bundle/dist/codex-protocol/v2/McpToolCallError.js +0 -1
  329. package/bundle/dist/codex-protocol/v2/McpToolCallProgressNotification.js +0 -1
  330. package/bundle/dist/codex-protocol/v2/McpToolCallResult.js +0 -1
  331. package/bundle/dist/codex-protocol/v2/McpToolCallStatus.js +0 -1
  332. package/bundle/dist/codex-protocol/v2/MemoryCitation.js +0 -1
  333. package/bundle/dist/codex-protocol/v2/MemoryCitationEntry.js +0 -1
  334. package/bundle/dist/codex-protocol/v2/MergeStrategy.js +0 -1
  335. package/bundle/dist/codex-protocol/v2/MigrationDetails.js +0 -1
  336. package/bundle/dist/codex-protocol/v2/Model.js +0 -1
  337. package/bundle/dist/codex-protocol/v2/ModelAvailabilityNux.js +0 -1
  338. package/bundle/dist/codex-protocol/v2/ModelListParams.js +0 -1
  339. package/bundle/dist/codex-protocol/v2/ModelListResponse.js +0 -1
  340. package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadParams.js +0 -1
  341. package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.js +0 -1
  342. package/bundle/dist/codex-protocol/v2/ModelRerouteReason.js +0 -1
  343. package/bundle/dist/codex-protocol/v2/ModelReroutedNotification.js +0 -1
  344. package/bundle/dist/codex-protocol/v2/ModelServiceTier.js +0 -1
  345. package/bundle/dist/codex-protocol/v2/ModelUpgradeInfo.js +0 -1
  346. package/bundle/dist/codex-protocol/v2/ModelVerification.js +0 -1
  347. package/bundle/dist/codex-protocol/v2/ModelVerificationNotification.js +0 -1
  348. package/bundle/dist/codex-protocol/v2/NetworkAccess.js +0 -1
  349. package/bundle/dist/codex-protocol/v2/NetworkApprovalContext.js +0 -1
  350. package/bundle/dist/codex-protocol/v2/NetworkApprovalProtocol.js +0 -1
  351. package/bundle/dist/codex-protocol/v2/NetworkDomainPermission.js +0 -1
  352. package/bundle/dist/codex-protocol/v2/NetworkPolicyAmendment.js +0 -1
  353. package/bundle/dist/codex-protocol/v2/NetworkPolicyRuleAction.js +0 -1
  354. package/bundle/dist/codex-protocol/v2/NetworkRequirements.js +0 -1
  355. package/bundle/dist/codex-protocol/v2/NetworkUnixSocketPermission.js +0 -1
  356. package/bundle/dist/codex-protocol/v2/NonSteerableTurnKind.js +0 -1
  357. package/bundle/dist/codex-protocol/v2/OverriddenMetadata.js +0 -1
  358. package/bundle/dist/codex-protocol/v2/PatchApplyStatus.js +0 -1
  359. package/bundle/dist/codex-protocol/v2/PatchChangeKind.js +0 -1
  360. package/bundle/dist/codex-protocol/v2/PermissionGrantScope.js +0 -1
  361. package/bundle/dist/codex-protocol/v2/PermissionProfile.js +0 -1
  362. package/bundle/dist/codex-protocol/v2/PermissionProfileFileSystemPermissions.js +0 -1
  363. package/bundle/dist/codex-protocol/v2/PermissionProfileModificationParams.js +0 -1
  364. package/bundle/dist/codex-protocol/v2/PermissionProfileNetworkPermissions.js +0 -1
  365. package/bundle/dist/codex-protocol/v2/PermissionProfileSelectionParams.js +0 -1
  366. package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalParams.js +0 -1
  367. package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalResponse.js +0 -1
  368. package/bundle/dist/codex-protocol/v2/PlanDeltaNotification.js +0 -1
  369. package/bundle/dist/codex-protocol/v2/PluginAuthPolicy.js +0 -1
  370. package/bundle/dist/codex-protocol/v2/PluginAvailability.js +0 -1
  371. package/bundle/dist/codex-protocol/v2/PluginDetail.js +0 -1
  372. package/bundle/dist/codex-protocol/v2/PluginHookSummary.js +0 -1
  373. package/bundle/dist/codex-protocol/v2/PluginInstallParams.js +0 -1
  374. package/bundle/dist/codex-protocol/v2/PluginInstallPolicy.js +0 -1
  375. package/bundle/dist/codex-protocol/v2/PluginInstallResponse.js +0 -1
  376. package/bundle/dist/codex-protocol/v2/PluginInterface.js +0 -1
  377. package/bundle/dist/codex-protocol/v2/PluginListMarketplaceKind.js +0 -1
  378. package/bundle/dist/codex-protocol/v2/PluginListParams.js +0 -1
  379. package/bundle/dist/codex-protocol/v2/PluginListResponse.js +0 -1
  380. package/bundle/dist/codex-protocol/v2/PluginMarketplaceEntry.js +0 -1
  381. package/bundle/dist/codex-protocol/v2/PluginReadParams.js +0 -1
  382. package/bundle/dist/codex-protocol/v2/PluginReadResponse.js +0 -1
  383. package/bundle/dist/codex-protocol/v2/PluginShareContext.js +0 -1
  384. package/bundle/dist/codex-protocol/v2/PluginShareDeleteParams.js +0 -1
  385. package/bundle/dist/codex-protocol/v2/PluginShareDeleteResponse.js +0 -1
  386. package/bundle/dist/codex-protocol/v2/PluginShareDiscoverability.js +0 -1
  387. package/bundle/dist/codex-protocol/v2/PluginShareListItem.js +0 -1
  388. package/bundle/dist/codex-protocol/v2/PluginShareListParams.js +0 -1
  389. package/bundle/dist/codex-protocol/v2/PluginShareListResponse.js +0 -1
  390. package/bundle/dist/codex-protocol/v2/PluginSharePrincipal.js +0 -1
  391. package/bundle/dist/codex-protocol/v2/PluginSharePrincipalType.js +0 -1
  392. package/bundle/dist/codex-protocol/v2/PluginShareSaveParams.js +0 -1
  393. package/bundle/dist/codex-protocol/v2/PluginShareSaveResponse.js +0 -1
  394. package/bundle/dist/codex-protocol/v2/PluginShareTarget.js +0 -1
  395. package/bundle/dist/codex-protocol/v2/PluginShareUpdateDiscoverability.js +0 -1
  396. package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsParams.js +0 -1
  397. package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsResponse.js +0 -1
  398. package/bundle/dist/codex-protocol/v2/PluginSkillReadParams.js +0 -1
  399. package/bundle/dist/codex-protocol/v2/PluginSkillReadResponse.js +0 -1
  400. package/bundle/dist/codex-protocol/v2/PluginSource.js +0 -1
  401. package/bundle/dist/codex-protocol/v2/PluginSummary.js +0 -1
  402. package/bundle/dist/codex-protocol/v2/PluginUninstallParams.js +0 -1
  403. package/bundle/dist/codex-protocol/v2/PluginUninstallResponse.js +0 -1
  404. package/bundle/dist/codex-protocol/v2/PluginsMigration.js +0 -1
  405. package/bundle/dist/codex-protocol/v2/ProcessExitedNotification.js +0 -1
  406. package/bundle/dist/codex-protocol/v2/ProcessOutputDeltaNotification.js +0 -1
  407. package/bundle/dist/codex-protocol/v2/ProcessOutputStream.js +0 -1
  408. package/bundle/dist/codex-protocol/v2/ProcessTerminalSize.js +0 -1
  409. package/bundle/dist/codex-protocol/v2/ProfileV2.js +0 -1
  410. package/bundle/dist/codex-protocol/v2/RateLimitReachedType.js +0 -1
  411. package/bundle/dist/codex-protocol/v2/RateLimitSnapshot.js +0 -1
  412. package/bundle/dist/codex-protocol/v2/RateLimitWindow.js +0 -1
  413. package/bundle/dist/codex-protocol/v2/RawResponseItemCompletedNotification.js +0 -1
  414. package/bundle/dist/codex-protocol/v2/ReasoningEffortOption.js +0 -1
  415. package/bundle/dist/codex-protocol/v2/ReasoningSummaryPartAddedNotification.js +0 -1
  416. package/bundle/dist/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.js +0 -1
  417. package/bundle/dist/codex-protocol/v2/ReasoningTextDeltaNotification.js +0 -1
  418. package/bundle/dist/codex-protocol/v2/RemoteControlConnectionStatus.js +0 -1
  419. package/bundle/dist/codex-protocol/v2/RemoteControlStatusChangedNotification.js +0 -1
  420. package/bundle/dist/codex-protocol/v2/RequestPermissionProfile.js +0 -1
  421. package/bundle/dist/codex-protocol/v2/ResidencyRequirement.js +0 -1
  422. package/bundle/dist/codex-protocol/v2/ReviewDelivery.js +0 -1
  423. package/bundle/dist/codex-protocol/v2/ReviewStartParams.js +0 -1
  424. package/bundle/dist/codex-protocol/v2/ReviewStartResponse.js +0 -1
  425. package/bundle/dist/codex-protocol/v2/ReviewTarget.js +0 -1
  426. package/bundle/dist/codex-protocol/v2/SandboxMode.js +0 -1
  427. package/bundle/dist/codex-protocol/v2/SandboxPolicy.js +0 -1
  428. package/bundle/dist/codex-protocol/v2/SandboxWorkspaceWrite.js +0 -1
  429. package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailParams.js +0 -1
  430. package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.js +0 -1
  431. package/bundle/dist/codex-protocol/v2/ServerRequestResolvedNotification.js +0 -1
  432. package/bundle/dist/codex-protocol/v2/SessionMigration.js +0 -1
  433. package/bundle/dist/codex-protocol/v2/SessionSource.js +0 -1
  434. package/bundle/dist/codex-protocol/v2/SkillDependencies.js +0 -1
  435. package/bundle/dist/codex-protocol/v2/SkillErrorInfo.js +0 -1
  436. package/bundle/dist/codex-protocol/v2/SkillInterface.js +0 -1
  437. package/bundle/dist/codex-protocol/v2/SkillMetadata.js +0 -1
  438. package/bundle/dist/codex-protocol/v2/SkillScope.js +0 -1
  439. package/bundle/dist/codex-protocol/v2/SkillSummary.js +0 -1
  440. package/bundle/dist/codex-protocol/v2/SkillToolDependency.js +0 -1
  441. package/bundle/dist/codex-protocol/v2/SkillsChangedNotification.js +0 -1
  442. package/bundle/dist/codex-protocol/v2/SkillsConfigWriteParams.js +0 -1
  443. package/bundle/dist/codex-protocol/v2/SkillsConfigWriteResponse.js +0 -1
  444. package/bundle/dist/codex-protocol/v2/SkillsListEntry.js +0 -1
  445. package/bundle/dist/codex-protocol/v2/SkillsListParams.js +0 -1
  446. package/bundle/dist/codex-protocol/v2/SkillsListResponse.js +0 -1
  447. package/bundle/dist/codex-protocol/v2/SortDirection.js +0 -1
  448. package/bundle/dist/codex-protocol/v2/SubagentMigration.js +0 -1
  449. package/bundle/dist/codex-protocol/v2/TerminalInteractionNotification.js +0 -1
  450. package/bundle/dist/codex-protocol/v2/TextElement.js +0 -1
  451. package/bundle/dist/codex-protocol/v2/TextPosition.js +0 -1
  452. package/bundle/dist/codex-protocol/v2/TextRange.js +0 -1
  453. package/bundle/dist/codex-protocol/v2/Thread.js +0 -1
  454. package/bundle/dist/codex-protocol/v2/ThreadActiveFlag.js +0 -1
  455. package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.js +0 -1
  456. package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.js +0 -1
  457. package/bundle/dist/codex-protocol/v2/ThreadArchiveParams.js +0 -1
  458. package/bundle/dist/codex-protocol/v2/ThreadArchiveResponse.js +0 -1
  459. package/bundle/dist/codex-protocol/v2/ThreadArchivedNotification.js +0 -1
  460. package/bundle/dist/codex-protocol/v2/ThreadClosedNotification.js +0 -1
  461. package/bundle/dist/codex-protocol/v2/ThreadCompactStartParams.js +0 -1
  462. package/bundle/dist/codex-protocol/v2/ThreadCompactStartResponse.js +0 -1
  463. package/bundle/dist/codex-protocol/v2/ThreadForkParams.js +0 -1
  464. package/bundle/dist/codex-protocol/v2/ThreadForkResponse.js +0 -1
  465. package/bundle/dist/codex-protocol/v2/ThreadGoal.js +0 -1
  466. package/bundle/dist/codex-protocol/v2/ThreadGoalClearedNotification.js +0 -1
  467. package/bundle/dist/codex-protocol/v2/ThreadGoalStatus.js +0 -1
  468. package/bundle/dist/codex-protocol/v2/ThreadGoalUpdatedNotification.js +0 -1
  469. package/bundle/dist/codex-protocol/v2/ThreadInjectItemsParams.js +0 -1
  470. package/bundle/dist/codex-protocol/v2/ThreadInjectItemsResponse.js +0 -1
  471. package/bundle/dist/codex-protocol/v2/ThreadItem.js +0 -1
  472. package/bundle/dist/codex-protocol/v2/ThreadListParams.js +0 -1
  473. package/bundle/dist/codex-protocol/v2/ThreadListResponse.js +0 -1
  474. package/bundle/dist/codex-protocol/v2/ThreadLoadedListParams.js +0 -1
  475. package/bundle/dist/codex-protocol/v2/ThreadLoadedListResponse.js +0 -1
  476. package/bundle/dist/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.js +0 -1
  477. package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateParams.js +0 -1
  478. package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateResponse.js +0 -1
  479. package/bundle/dist/codex-protocol/v2/ThreadNameUpdatedNotification.js +0 -1
  480. package/bundle/dist/codex-protocol/v2/ThreadReadParams.js +0 -1
  481. package/bundle/dist/codex-protocol/v2/ThreadReadResponse.js +0 -1
  482. package/bundle/dist/codex-protocol/v2/ThreadRealtimeAudioChunk.js +0 -1
  483. package/bundle/dist/codex-protocol/v2/ThreadRealtimeClosedNotification.js +0 -1
  484. package/bundle/dist/codex-protocol/v2/ThreadRealtimeErrorNotification.js +0 -1
  485. package/bundle/dist/codex-protocol/v2/ThreadRealtimeItemAddedNotification.js +0 -1
  486. package/bundle/dist/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.js +0 -1
  487. package/bundle/dist/codex-protocol/v2/ThreadRealtimeSdpNotification.js +0 -1
  488. package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartTransport.js +0 -1
  489. package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartedNotification.js +0 -1
  490. package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.js +0 -1
  491. package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.js +0 -1
  492. package/bundle/dist/codex-protocol/v2/ThreadResumeParams.js +0 -1
  493. package/bundle/dist/codex-protocol/v2/ThreadResumeResponse.js +0 -1
  494. package/bundle/dist/codex-protocol/v2/ThreadRollbackParams.js +0 -1
  495. package/bundle/dist/codex-protocol/v2/ThreadRollbackResponse.js +0 -1
  496. package/bundle/dist/codex-protocol/v2/ThreadSetNameParams.js +0 -1
  497. package/bundle/dist/codex-protocol/v2/ThreadSetNameResponse.js +0 -1
  498. package/bundle/dist/codex-protocol/v2/ThreadShellCommandParams.js +0 -1
  499. package/bundle/dist/codex-protocol/v2/ThreadShellCommandResponse.js +0 -1
  500. package/bundle/dist/codex-protocol/v2/ThreadSortKey.js +0 -1
  501. package/bundle/dist/codex-protocol/v2/ThreadSource.js +0 -1
  502. package/bundle/dist/codex-protocol/v2/ThreadSourceKind.js +0 -1
  503. package/bundle/dist/codex-protocol/v2/ThreadStartParams.js +0 -1
  504. package/bundle/dist/codex-protocol/v2/ThreadStartResponse.js +0 -1
  505. package/bundle/dist/codex-protocol/v2/ThreadStartSource.js +0 -1
  506. package/bundle/dist/codex-protocol/v2/ThreadStartedNotification.js +0 -1
  507. package/bundle/dist/codex-protocol/v2/ThreadStatus.js +0 -1
  508. package/bundle/dist/codex-protocol/v2/ThreadStatusChangedNotification.js +0 -1
  509. package/bundle/dist/codex-protocol/v2/ThreadTokenUsage.js +0 -1
  510. package/bundle/dist/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.js +0 -1
  511. package/bundle/dist/codex-protocol/v2/ThreadUnarchiveParams.js +0 -1
  512. package/bundle/dist/codex-protocol/v2/ThreadUnarchiveResponse.js +0 -1
  513. package/bundle/dist/codex-protocol/v2/ThreadUnarchivedNotification.js +0 -1
  514. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeParams.js +0 -1
  515. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeResponse.js +0 -1
  516. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeStatus.js +0 -1
  517. package/bundle/dist/codex-protocol/v2/TokenUsageBreakdown.js +0 -1
  518. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputAnswer.js +0 -1
  519. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputOption.js +0 -1
  520. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputParams.js +0 -1
  521. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputQuestion.js +0 -1
  522. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputResponse.js +0 -1
  523. package/bundle/dist/codex-protocol/v2/ToolsV2.js +0 -1
  524. package/bundle/dist/codex-protocol/v2/Turn.js +0 -1
  525. package/bundle/dist/codex-protocol/v2/TurnCompletedNotification.js +0 -1
  526. package/bundle/dist/codex-protocol/v2/TurnDiffUpdatedNotification.js +0 -1
  527. package/bundle/dist/codex-protocol/v2/TurnEnvironmentParams.js +0 -1
  528. package/bundle/dist/codex-protocol/v2/TurnError.js +0 -1
  529. package/bundle/dist/codex-protocol/v2/TurnInterruptParams.js +0 -1
  530. package/bundle/dist/codex-protocol/v2/TurnInterruptResponse.js +0 -1
  531. package/bundle/dist/codex-protocol/v2/TurnItemsView.js +0 -1
  532. package/bundle/dist/codex-protocol/v2/TurnPlanStep.js +0 -1
  533. package/bundle/dist/codex-protocol/v2/TurnPlanStepStatus.js +0 -1
  534. package/bundle/dist/codex-protocol/v2/TurnPlanUpdatedNotification.js +0 -1
  535. package/bundle/dist/codex-protocol/v2/TurnStartParams.js +0 -1
  536. package/bundle/dist/codex-protocol/v2/TurnStartResponse.js +0 -1
  537. package/bundle/dist/codex-protocol/v2/TurnStartedNotification.js +0 -1
  538. package/bundle/dist/codex-protocol/v2/TurnStatus.js +0 -1
  539. package/bundle/dist/codex-protocol/v2/TurnSteerParams.js +0 -1
  540. package/bundle/dist/codex-protocol/v2/TurnSteerResponse.js +0 -1
  541. package/bundle/dist/codex-protocol/v2/UserInput.js +0 -1
  542. package/bundle/dist/codex-protocol/v2/WarningNotification.js +0 -1
  543. package/bundle/dist/codex-protocol/v2/WebSearchAction.js +0 -1
  544. package/bundle/dist/codex-protocol/v2/WindowsSandboxReadiness.js +0 -1
  545. package/bundle/dist/codex-protocol/v2/WindowsSandboxReadinessResponse.js +0 -1
  546. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.js +0 -1
  547. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupMode.js +0 -1
  548. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartParams.js +0 -1
  549. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartResponse.js +0 -1
  550. package/bundle/dist/codex-protocol/v2/WindowsWorldWritableWarningNotification.js +0 -1
  551. package/bundle/dist/codex-protocol/v2/WriteStatus.js +0 -1
  552. package/bundle/dist/i18n/en.js +1 -2
  553. package/bundle/dist/i18n/ko.js +1 -2
  554. package/bundle/dist/i18n/sd.generated.js +54 -21
  555. package/bundle/dist/index.js +1 -2
  556. package/bundle/dist/migrations/20260410171405_create__request_logs.js +1 -2
  557. package/bundle/dist/migrations/20260410171406_create__tokens.js +1 -2
  558. package/bundle/dist/migrations/20260411120624_alter_tokens_alter2.js +1 -2
  559. package/bundle/dist/migrations/20260415113716_alter_tokens_add_ord.js +1 -2
  560. package/bundle/dist/migrations/20260415134649_alter_request_logs_alter1.js +1 -2
  561. package/bundle/dist/migrations/20260421223627_alter_request_logs_add1_alter1.js +1 -2
  562. package/bundle/dist/migrations/20260423180818_alter_request_logs_add1_alter1.js +1 -2
  563. package/bundle/dist/migrations/20260423182017_alter_request_logs_add2_drop1_alter1.js +1 -2
  564. package/bundle/dist/migrations/20260423183613_alter_request_logs_add1_alter1.js +1 -2
  565. package/bundle/dist/migrations/20260518145411_alter_tokens_add2_drop4_alter1.js +1 -2
  566. package/bundle/dist/migrations/20260520112853_alter_request_logs_add3_alter1.js +1 -2
  567. package/bundle/dist/migrations/20260520124755_alter_request_logs_drop1_alter1.js +1 -2
  568. package/bundle/dist/migrations/20260520130420_create__request_log_steps.js +1 -2
  569. package/bundle/dist/migrations/20260520134908_alter_request_logs_add2_alter8.js +1 -2
  570. package/bundle/dist/migrations/20260520134909_alter_request_log_steps_add1_alter3.js +1 -2
  571. package/bundle/dist/migrations/20260520141449_alter_request_logs_add1_alter1.js +1 -2
  572. package/bundle/dist/migrations/20260521134025_alter_request_log_steps_alter1.js +1 -2
  573. package/bundle/dist/migrations/20260521134026_alter_request_log_steps_foreigns.js +1 -2
  574. package/bundle/dist/migrations/20260522181721_alter_request_log_steps_add2_alter1.js +1 -2
  575. package/bundle/dist/migrations/20260630223950_alter_tokens_add1_alter1.js +1 -2
  576. package/bundle/dist/migrations/20260701105327_alter_request_logs_add1_alter1.js +1 -2
  577. package/bundle/dist/migrations/20260701105328_alter_request_log_steps_add1_alter1.js +1 -2
  578. package/bundle/dist/migrations/20260705140614_alter_request_logs_add1_alter1.js +1 -2
  579. package/bundle/dist/migrations/20260706120000_alter_request_logs_add_image_cost.js +1 -2
  580. package/bundle/dist/migrations/20260710090000_alter_tokens_add_weight.js +1 -2
  581. package/bundle/dist/migrations/20260718180824_alter_request_logs_add5_alter1.js +1 -2
  582. package/bundle/dist/migrations/20260718180825_alter_request_log_steps_add7_alter1.js +1 -2
  583. package/bundle/dist/migrations/20260722174410_alter_request_logs_alter3.js +17 -0
  584. package/bundle/dist/migrations/20260722174411_alter_request_log_steps_alter3.js +17 -0
  585. package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +255 -4
  586. package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.10/node_modules/@vitest/expect/dist/index.js +1507 -0
  587. package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js +887 -0
  588. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/chunk-artifact.js +2756 -0
  589. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/index.js +8 -0
  590. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/utils.js +8 -0
  591. package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.10/node_modules/@vitest/snapshot/dist/index.js +922 -0
  592. package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js +386 -0
  593. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +121 -0
  594. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/constants.js +51 -0
  595. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/diff.js +1317 -0
  596. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/display.js +561 -0
  597. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js +40 -0
  598. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js +272 -0
  599. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/offset.js +27 -0
  600. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js +77 -0
  601. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/source-map.js +381 -0
  602. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/timers.js +51 -0
  603. package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +103 -3
  604. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +1 -1
  605. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +1 -1
  606. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +1 -1
  607. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +1 -1
  608. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +1 -1
  609. package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +2 -3
  610. package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +4 -4
  611. package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +2 -2
  612. package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +18 -7
  613. package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +18 -3
  614. package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.11.2_@emnapi_runtime@1.11.2_@types_node@25.0.7_esbuild@0.27.4_2519c2e8d8013fcbc7b443879bc9da6d/node_modules/vite/dist/node/module-runner.js +1265 -0
  615. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +6 -3
  616. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +8 -8
  617. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +5 -5
  618. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +3 -3
  619. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +46 -0
  620. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +66 -6
  621. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +3044 -0
  622. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +19 -4
  623. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/index.js +28 -0
  624. package/bundle/dist/server-bootstrap.js +1 -2
  625. package/bundle/dist/sonamu.config.js +11 -27
  626. package/bundle/dist/startup-migrations.js +1 -2
  627. package/bundle/dist/testing/fixture.js +1 -2
  628. package/bundle/dist/testing/global.js +6 -7
  629. package/bundle/dist/testing/setup-mocks.js +3 -4
  630. package/bundle/dist/testing/test-database-name.js +5 -8
  631. package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +8 -8
  632. package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +1 -2
  633. package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +1 -2
  634. package/bundle/dist/utils/providers/anthropic/claude-session.js +5 -7
  635. package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +1 -2
  636. package/bundle/dist/utils/providers/common/credentials.js +1 -2
  637. package/bundle/dist/utils/providers/common/model-cost.js +3 -3
  638. package/bundle/dist/utils/providers/common/provider-dispatcher.js +0 -1
  639. package/bundle/dist/utils/providers/common/smooth-weighted-round-robin.js +1 -2
  640. package/bundle/dist/utils/providers/common/strictifier.js +2 -2
  641. package/bundle/dist/utils/providers/common/token-picker.js +1 -2
  642. package/bundle/dist/utils/providers/common/ttft.js +1 -2
  643. package/bundle/dist/utils/providers/openai/codex-rpc.js +4 -2
  644. package/bundle/dist/utils/providers/openai/codex-worker.js +2 -2
  645. package/bundle/dist/utils/providers/openai/openai-constants.js +1 -2
  646. package/bundle/dist/utils/providers/openai/openai-dispatcher.js +103 -40
  647. package/bundle/dist/utils/providers/openai/openai-quota.js +1 -2
  648. package/bundle/dist/utils/providers/openai/openai-refresh.js +1 -2
  649. package/bundle/dist/utils/subset-loaders.js +1 -2
  650. package/bundle/src/application/monit/monit.frame.test.ts +2 -2
  651. package/bundle/src/application/monit/monit.frame.ts +2 -2
  652. package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +242 -8
  653. package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +97 -57
  654. package/bundle/src/application/qgrid/qgrid.frame.test.ts +400 -96
  655. package/bundle/src/application/qgrid/qgrid.frame.ts +85 -123
  656. package/bundle/src/application/qgrid/qgrid.types.ts +35 -27
  657. package/bundle/src/application/request-log/request-log.entity.json +2 -2
  658. package/bundle/src/application/request-log/request-log.model.test.ts +325 -21
  659. package/bundle/src/application/request-log/request-log.model.ts +233 -125
  660. package/bundle/src/application/request-log-step/request-log-step.entity.json +2 -2
  661. package/bundle/src/application/sonamu.generated.http +2 -2
  662. package/bundle/src/application/sonamu.generated.ts +13 -13
  663. package/bundle/src/i18n/sd.generated.ts +83 -14
  664. package/bundle/src/migrations/20260722174410_alter_request_logs_alter3.ts +19 -0
  665. package/bundle/src/migrations/20260722174411_alter_request_log_steps_alter3.ts +19 -0
  666. package/bundle/src/sonamu.config.ts +5 -23
  667. package/bundle/src/testing/global.ts +5 -5
  668. package/bundle/src/testing/test-database-name.test.ts +5 -5
  669. package/bundle/src/testing/test-database-name.ts +9 -8
  670. package/bundle/src/utils/providers/anthropic/anthropic-constants.test.ts +10 -6
  671. package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +9 -5
  672. package/bundle/src/utils/providers/anthropic/claude-session.test.ts +18 -3
  673. package/bundle/src/utils/providers/anthropic/claude-session.ts +4 -4
  674. package/bundle/src/utils/providers/common/model-cost.test.ts +1 -0
  675. package/bundle/src/utils/providers/common/model-cost.ts +1 -0
  676. package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +440 -0
  677. package/bundle/src/utils/providers/openai/openai-dispatcher.ts +143 -45
  678. package/bundle/web-dist/client/assets/{index-CmuPjbCl.js → index-B8Qj0LZK.js} +3 -3
  679. package/bundle/web-dist/client/assets/logs-C7R8Hvyy.js +1 -0
  680. package/bundle/web-dist/client/assets/{monit-B5Edhvy-.js → monit-Cj2KSodR.js} +1 -1
  681. package/bundle/web-dist/client/assets/{routes-UPWScORY.js → routes-DI1rjqGY.js} +1 -1
  682. package/bundle/web-dist/client/assets/{sd.generated-DYuKzBY6.js → sd.generated-DbBC73_z.js} +1 -1
  683. package/bundle/web-dist/client/assets/{services.generated-D_SkWOo-.js → services.generated-BWyAypSh.js} +1 -1
  684. package/bundle/web-dist/client/assets/{show-pRp-eZIK.js → show-B9hDSX9F.js} +2 -2
  685. package/bundle/web-dist/client/assets/{tokens-DJlttxCM.js → tokens-xUexYz3u.js} +1 -1
  686. package/bundle/web-dist/client/assets/{use-update-token-mutation-CpFGLWUl.js → use-update-token-mutation-DeDBiZiM.js} +1 -1
  687. package/bundle/web-dist/client/index.html +2 -2
  688. package/bundle/web-dist/server/assets/{lazyRouteComponent-Cu6IkL8A.js → lazyRouteComponent-BCJr868T.js} +1 -1
  689. package/bundle/web-dist/server/assets/{logs-Dx2knN2T.js → logs-33YNafdW.js} +32 -11
  690. package/bundle/web-dist/server/assets/{monit-DU6PLatf.js → monit--9mVsjNU.js} +2 -2
  691. package/bundle/web-dist/server/assets/{routes-CTco1oJZ.js → routes-BK3Xh1UB.js} +3 -3
  692. package/bundle/web-dist/server/assets/{sd.generated-qzuRe35X.js → sd.generated-C3gcvRcU.js} +1 -0
  693. package/bundle/web-dist/server/assets/{services.generated-C8q1M41a.js → services.generated-B2_Auwvk.js} +1 -1
  694. package/bundle/web-dist/server/assets/{show-B3q8_GDh.js → show-Dxxxe608.js} +15 -9
  695. package/bundle/web-dist/server/assets/{tokens-Bvjn15h9.js → tokens-BWPVvdfi.js} +3 -3
  696. package/bundle/web-dist/server/assets/{use-update-token-mutation-BlZo6swF.js → use-update-token-mutation-CNBgTysy.js} +1 -1
  697. package/bundle/web-dist/server/entry-server.generated.js +23 -23
  698. package/dist/cli.d.ts +1 -0
  699. package/dist/cli.js +18 -12
  700. package/package.json +6 -6
  701. package/skills/qgrid/SKILL.md +4 -0
  702. package/skills/qgrid/references/ai-sdk-provider-contract.md +28 -2
  703. package/skills/qgrid/references/anthropic-claude-code-runtime.md +5 -4
  704. package/skills/qgrid/references/cli-env-and-server-boot.md +20 -8
  705. package/skills/qgrid/references/decision-rationale.md +4 -0
  706. package/skills/qgrid/references/docs-workflow.md +10 -0
  707. package/skills/qgrid/references/openai-codex-runtime.md +11 -3
  708. package/skills/qgrid/references/provider-runtime-differences.md +3 -3
  709. package/skills/qgrid/references/request-log-run-lifecycle.md +46 -28
  710. package/skills/qgrid/references/sonamu-api-web-flow.md +4 -0
  711. package/skills/qgrid/references/token-auth-quota-lifecycle.md +6 -0
  712. package/skills/qgrid/references/tool-calling-and-multiturn.md +8 -7
  713. package/skills/qgrid/references/verification-and-debugging.md +1 -1
  714. package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +0 -1484
  715. package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +0 -887
  716. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2746
  717. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +0 -8
  718. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +0 -8
  719. package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +0 -662
  720. package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +0 -386
  721. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -82
  722. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +0 -48
  723. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +0 -1307
  724. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +0 -558
  725. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +0 -33
  726. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +0 -226
  727. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +0 -27
  728. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +0 -77
  729. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +0 -374
  730. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +0 -37
  731. package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.9.2_@emnapi_runtime@1.9.2_@types_node@25.0.7_esbuild@0.27.4_jiti@2.6.1_sass@1.98.0_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js +0 -426
  732. package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +0 -16
  733. package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +0 -2910
  734. package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/index.js +0 -28
  735. package/bundle/web-dist/client/assets/logs-cXOsDli3.js +0 -1
@@ -0,0 +1,561 @@
1
+ import { createDOMElementFilter, format as format$1, plugins } from "../../../../../@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js";
2
+ //#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/display.js
3
+ const ansiColors = {
4
+ bold: ["1", "22"],
5
+ dim: ["2", "22"],
6
+ italic: ["3", "23"],
7
+ underline: ["4", "24"],
8
+ inverse: ["7", "27"],
9
+ hidden: ["8", "28"],
10
+ strike: ["9", "29"],
11
+ black: ["30", "39"],
12
+ red: ["31", "39"],
13
+ green: ["32", "39"],
14
+ yellow: ["33", "39"],
15
+ blue: ["34", "39"],
16
+ magenta: ["35", "39"],
17
+ cyan: ["36", "39"],
18
+ white: ["37", "39"],
19
+ brightblack: ["30;1", "39"],
20
+ brightred: ["31;1", "39"],
21
+ brightgreen: ["32;1", "39"],
22
+ brightyellow: ["33;1", "39"],
23
+ brightblue: ["34;1", "39"],
24
+ brightmagenta: ["35;1", "39"],
25
+ brightcyan: ["36;1", "39"],
26
+ brightwhite: ["37;1", "39"],
27
+ grey: ["90", "39"]
28
+ };
29
+ const styles = {
30
+ special: "cyan",
31
+ number: "yellow",
32
+ bigint: "yellow",
33
+ boolean: "yellow",
34
+ undefined: "grey",
35
+ null: "bold",
36
+ string: "green",
37
+ symbol: "green",
38
+ date: "magenta",
39
+ regexp: "red"
40
+ };
41
+ const truncator = "…";
42
+ function colorise(value, styleType) {
43
+ const color = ansiColors[styles[styleType]] || ansiColors[styleType] || "";
44
+ if (!color) return String(value);
45
+ return `\u001b[${color[0]}m${String(value)}\u001b[${color[1]}m`;
46
+ }
47
+ function normaliseOptions({ showHidden = false, depth = 2, colors = false, customInspect = true, showProxy = false, maxArrayLength = Infinity, breakLength = Infinity, seen = [], truncate = Infinity, stylize = String } = {}, inspect) {
48
+ const options = {
49
+ showHidden: Boolean(showHidden),
50
+ depth: Number(depth),
51
+ colors: Boolean(colors),
52
+ customInspect: Boolean(customInspect),
53
+ showProxy: Boolean(showProxy),
54
+ maxArrayLength: Number(maxArrayLength),
55
+ breakLength: Number(breakLength),
56
+ truncate: Number(truncate),
57
+ seen,
58
+ inspect,
59
+ stylize
60
+ };
61
+ if (options.colors) options.stylize = colorise;
62
+ return options;
63
+ }
64
+ function isHighSurrogate(char) {
65
+ return char >= "\ud800" && char <= "\udbff";
66
+ }
67
+ function truncate(string, length, tail = truncator) {
68
+ string = String(string);
69
+ const tailLength = tail.length;
70
+ const stringLength = string.length;
71
+ if (tailLength > length && stringLength > tailLength) return tail;
72
+ if (stringLength > length && stringLength > tailLength) {
73
+ let end = length - tailLength;
74
+ if (end > 0 && isHighSurrogate(string[end - 1])) end = end - 1;
75
+ return `${string.slice(0, end)}${tail}`;
76
+ }
77
+ return string;
78
+ }
79
+ function inspectList(list, options, inspectItem, separator = ", ") {
80
+ inspectItem = inspectItem || options.inspect;
81
+ const size = list.length;
82
+ if (size === 0) return "";
83
+ const originalLength = options.truncate;
84
+ let output = "";
85
+ let peek = "";
86
+ let truncated = "";
87
+ for (let i = 0; i < size; i += 1) {
88
+ const last = i + 1 === list.length;
89
+ const secondToLast = i + 2 === list.length;
90
+ truncated = `${truncator}(${list.length - i})`;
91
+ const value = list[i];
92
+ options.truncate = originalLength - output.length - (last ? 0 : separator.length);
93
+ const string = peek || inspectItem(value, options) + (last ? "" : separator);
94
+ const nextLength = output.length + string.length;
95
+ const truncatedLength = nextLength + truncated.length;
96
+ if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) break;
97
+ if (!last && !secondToLast && truncatedLength > originalLength) break;
98
+ peek = last ? "" : inspectItem(list[i + 1], options) + (secondToLast ? "" : separator);
99
+ if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) break;
100
+ output += string;
101
+ if (!last && !secondToLast && nextLength + peek.length >= originalLength) {
102
+ truncated = `${truncator}(${list.length - i - 1})`;
103
+ break;
104
+ }
105
+ truncated = "";
106
+ }
107
+ return `${output}${truncated}`;
108
+ }
109
+ function quoteComplexKey(key) {
110
+ if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) return key;
111
+ return JSON.stringify(key).replace(/'/g, "\\'").replace(/\\"/g, "\"").replace(/(^"|"$)/g, "'");
112
+ }
113
+ function inspectProperty([key, value], options) {
114
+ options.truncate -= 2;
115
+ if (typeof key === "string") key = quoteComplexKey(key);
116
+ else if (typeof key !== "number") key = `[${options.inspect(key, options)}]`;
117
+ options.truncate -= key.length;
118
+ value = options.inspect(value, options);
119
+ return `${key}: ${value}`;
120
+ }
121
+ function inspectArray(array, options) {
122
+ const nonIndexProperties = Object.keys(array).slice(array.length);
123
+ if (!array.length && !nonIndexProperties.length) return "[]";
124
+ options.truncate -= 4;
125
+ const listContents = inspectList(array, options);
126
+ options.truncate -= listContents.length;
127
+ let propertyContents = "";
128
+ if (nonIndexProperties.length) propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);
129
+ return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : ""} ]`;
130
+ }
131
+ const getArrayName = (array) => {
132
+ if (typeof Buffer === "function" && array instanceof Buffer) return "Buffer";
133
+ if (array[Symbol.toStringTag]) return array[Symbol.toStringTag];
134
+ return array.constructor.name;
135
+ };
136
+ function inspectTypedArray(array, options) {
137
+ const name = getArrayName(array);
138
+ options.truncate -= name.length + 4;
139
+ const nonIndexProperties = Object.keys(array).slice(array.length);
140
+ if (!array.length && !nonIndexProperties.length) return `${name}[]`;
141
+ let output = "";
142
+ for (let i = 0; i < array.length; i++) {
143
+ const string = `${options.stylize(truncate(array[i], options.truncate), "number")}${i === array.length - 1 ? "" : ", "}`;
144
+ options.truncate -= string.length;
145
+ if (array[i] !== array.length && options.truncate <= 3) {
146
+ output += `${truncator}(${array.length - array[i] + 1})`;
147
+ break;
148
+ }
149
+ output += string;
150
+ }
151
+ let propertyContents = "";
152
+ if (nonIndexProperties.length) propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);
153
+ return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : ""} ]`;
154
+ }
155
+ function inspectDate(dateObject, options) {
156
+ const stringRepresentation = dateObject.toJSON();
157
+ if (stringRepresentation === null) return "Invalid Date";
158
+ const split = stringRepresentation.split("T");
159
+ const date = split[0];
160
+ return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, "date");
161
+ }
162
+ function inspectFunction(func, options) {
163
+ const functionType = func[Symbol.toStringTag] || "Function";
164
+ const name = func.name;
165
+ if (!name) return options.stylize(`[${functionType}]`, "special");
166
+ return options.stylize(`[${functionType} ${truncate(name, options.truncate - 11)}]`, "special");
167
+ }
168
+ function inspectMapEntry([key, value], options) {
169
+ options.truncate -= 4;
170
+ key = options.inspect(key, options);
171
+ options.truncate -= key.length;
172
+ value = options.inspect(value, options);
173
+ return `${key} => ${value}`;
174
+ }
175
+ function mapToEntries(map) {
176
+ const entries = [];
177
+ map.forEach((value, key) => {
178
+ entries.push([key, value]);
179
+ });
180
+ return entries;
181
+ }
182
+ function inspectMap(map, options) {
183
+ if (map.size === 0) return "Map{}";
184
+ options.truncate -= 7;
185
+ return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`;
186
+ }
187
+ const isNaN = Number.isNaN || ((i) => i !== i);
188
+ function inspectNumber(number, options) {
189
+ if (isNaN(number)) return options.stylize("NaN", "number");
190
+ if (number === Infinity) return options.stylize("Infinity", "number");
191
+ if (number === -Infinity) return options.stylize("-Infinity", "number");
192
+ if (number === 0) return options.stylize(1 / number === Infinity ? "+0" : "-0", "number");
193
+ return options.stylize(truncate(String(number), options.truncate), "number");
194
+ }
195
+ function inspectBigInt(number, options) {
196
+ let nums = truncate(number.toString(), options.truncate - 1);
197
+ if (nums !== truncator) nums += "n";
198
+ return options.stylize(nums, "bigint");
199
+ }
200
+ function inspectRegExp(value, options) {
201
+ const flags = value.toString().split("/")[2];
202
+ const sourceLength = options.truncate - (2 + flags.length);
203
+ const source = value.source;
204
+ return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, "regexp");
205
+ }
206
+ function arrayFromSet(set) {
207
+ const values = [];
208
+ set.forEach((value) => {
209
+ values.push(value);
210
+ });
211
+ return values;
212
+ }
213
+ function inspectSet(set, options) {
214
+ if (set.size === 0) return "Set{}";
215
+ options.truncate -= 7;
216
+ return `Set{ ${inspectList(arrayFromSet(set), options)} }`;
217
+ }
218
+ const stringEscapeChars = /* @__PURE__ */ new RegExp("['\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]", "g");
219
+ const escapeCharacters = {
220
+ "\b": "\\b",
221
+ " ": "\\t",
222
+ "\n": "\\n",
223
+ "\f": "\\f",
224
+ "\r": "\\r",
225
+ "'": "\\'",
226
+ "\\": "\\\\"
227
+ };
228
+ const hex = 16;
229
+ function escape(char) {
230
+ return escapeCharacters[char] || `\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-4)}`;
231
+ }
232
+ function inspectString(string, options) {
233
+ if (stringEscapeChars.test(string)) string = string.replace(stringEscapeChars, escape);
234
+ return options.stylize(`'${truncate(string, options.truncate - 2)}'`, "string");
235
+ }
236
+ function inspectSymbol(value) {
237
+ if ("description" in Symbol.prototype) return value.description ? `Symbol(${value.description})` : "Symbol()";
238
+ return value.toString();
239
+ }
240
+ const getPromiseValue = () => "Promise{…}";
241
+ function inspectObject$1(object, options) {
242
+ const properties = Object.getOwnPropertyNames(object);
243
+ const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : [];
244
+ if (properties.length === 0 && symbols.length === 0) return "{}";
245
+ options.truncate -= 4;
246
+ options.seen = options.seen || [];
247
+ if (options.seen.includes(object)) return "[Circular]";
248
+ options.seen.push(object);
249
+ const propertyContents = inspectList(properties.map((key) => [key, object[key]]), options, inspectProperty);
250
+ const symbolContents = inspectList(symbols.map((key) => [key, object[key]]), options, inspectProperty);
251
+ options.seen.pop();
252
+ let sep = "";
253
+ if (propertyContents && symbolContents) sep = ", ";
254
+ return `{ ${propertyContents}${sep}${symbolContents} }`;
255
+ }
256
+ const toStringTag = typeof Symbol !== "undefined" && Symbol.toStringTag ? Symbol.toStringTag : false;
257
+ function inspectClass(value, options) {
258
+ let name = "";
259
+ if (toStringTag && toStringTag in value) name = value[toStringTag];
260
+ name = name || value.constructor.name;
261
+ if (!name || name === "_class") name = "<Anonymous Class>";
262
+ options.truncate -= name.length;
263
+ return `${name}${inspectObject$1(value, options)}`;
264
+ }
265
+ function inspectArguments(args, options) {
266
+ if (args.length === 0) return "Arguments[]";
267
+ options.truncate -= 13;
268
+ return `Arguments[ ${inspectList(args, options)} ]`;
269
+ }
270
+ const errorKeys = [
271
+ "stack",
272
+ "line",
273
+ "column",
274
+ "name",
275
+ "message",
276
+ "fileName",
277
+ "lineNumber",
278
+ "columnNumber",
279
+ "number",
280
+ "description",
281
+ "cause"
282
+ ];
283
+ function inspectObject(error, options) {
284
+ const properties = Object.getOwnPropertyNames(error).filter((key) => errorKeys.indexOf(key) === -1);
285
+ const name = error.name;
286
+ options.truncate -= name.length;
287
+ let message = "";
288
+ if (typeof error.message === "string") message = truncate(error.message, options.truncate);
289
+ else properties.unshift("message");
290
+ message = message ? `: ${message}` : "";
291
+ options.truncate -= message.length + 5;
292
+ options.seen = options.seen || [];
293
+ if (options.seen.includes(error)) return "[Circular]";
294
+ options.seen.push(error);
295
+ const propertyContents = inspectList(properties.map((key) => [key, error[key]]), options, inspectProperty);
296
+ return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : ""}`;
297
+ }
298
+ function inspectAttribute([key, value], options) {
299
+ options.truncate -= 3;
300
+ if (!value) return `${options.stylize(String(key), "yellow")}`;
301
+ return `${options.stylize(String(key), "yellow")}=${options.stylize(`"${value}"`, "string")}`;
302
+ }
303
+ function inspectNodeCollection(collection, options) {
304
+ return inspectList(collection, options, inspectNode, "\n");
305
+ }
306
+ function inspectNode(node, options) {
307
+ switch (node.nodeType) {
308
+ case 1: return inspectHTML(node, options);
309
+ case 3: return options.inspect(node.data, options);
310
+ default: return options.inspect(node, options);
311
+ }
312
+ }
313
+ function inspectHTML(element, options) {
314
+ const properties = element.getAttributeNames();
315
+ const name = element.tagName.toLowerCase();
316
+ const head = options.stylize(`<${name}`, "special");
317
+ const headClose = options.stylize(`>`, "special");
318
+ const tail = options.stylize(`</${name}>`, "special");
319
+ options.truncate -= name.length * 2 + 5;
320
+ let propertyContents = "";
321
+ if (properties.length > 0) {
322
+ propertyContents += " ";
323
+ propertyContents += inspectList(properties.map((key) => [key, element.getAttribute(key)]), options, inspectAttribute, " ");
324
+ }
325
+ options.truncate -= propertyContents.length;
326
+ const truncate = options.truncate;
327
+ let children = inspectNodeCollection(element.children, options);
328
+ if (children && children.length > truncate) children = `${truncator}(${element.children.length})`;
329
+ return `${head}${propertyContents}${headClose}${children}${tail}`;
330
+ }
331
+ const chaiInspect = typeof Symbol === "function" && typeof Symbol.for === "function" ? Symbol.for("chai/inspect") : "@@chai/inspect";
332
+ const nodeInspect = Symbol.for("nodejs.util.inspect.custom");
333
+ const constructorMap = /* @__PURE__ */ new WeakMap();
334
+ const stringTagMap = {};
335
+ const baseTypesMap = {
336
+ undefined: (value, options) => options.stylize("undefined", "undefined"),
337
+ null: (value, options) => options.stylize("null", "null"),
338
+ boolean: (value, options) => options.stylize(String(value), "boolean"),
339
+ Boolean: (value, options) => options.stylize(String(value), "boolean"),
340
+ number: inspectNumber,
341
+ Number: inspectNumber,
342
+ bigint: inspectBigInt,
343
+ BigInt: inspectBigInt,
344
+ string: inspectString,
345
+ String: inspectString,
346
+ function: inspectFunction,
347
+ Function: inspectFunction,
348
+ symbol: inspectSymbol,
349
+ Symbol: inspectSymbol,
350
+ Array: inspectArray,
351
+ Date: inspectDate,
352
+ Map: inspectMap,
353
+ Set: inspectSet,
354
+ RegExp: inspectRegExp,
355
+ Promise: getPromiseValue,
356
+ WeakSet: (value, options) => options.stylize("WeakSet{…}", "special"),
357
+ WeakMap: (value, options) => options.stylize("WeakMap{…}", "special"),
358
+ Arguments: inspectArguments,
359
+ Int8Array: inspectTypedArray,
360
+ Uint8Array: inspectTypedArray,
361
+ Uint8ClampedArray: inspectTypedArray,
362
+ Int16Array: inspectTypedArray,
363
+ Uint16Array: inspectTypedArray,
364
+ Int32Array: inspectTypedArray,
365
+ Uint32Array: inspectTypedArray,
366
+ Float32Array: inspectTypedArray,
367
+ Float64Array: inspectTypedArray,
368
+ Generator: () => "",
369
+ DataView: () => "",
370
+ ArrayBuffer: () => "",
371
+ Error: inspectObject,
372
+ HTMLCollection: inspectNodeCollection,
373
+ NodeList: inspectNodeCollection
374
+ };
375
+ const inspectCustom = (value, options, type, inspectFn) => {
376
+ if (chaiInspect in value && typeof value[chaiInspect] === "function") return value[chaiInspect](options);
377
+ if (nodeInspect in value && typeof value[nodeInspect] === "function") return value[nodeInspect](options.depth, options, inspectFn);
378
+ if ("inspect" in value && typeof value.inspect === "function") return value.inspect(options.depth, options);
379
+ if ("constructor" in value && constructorMap.has(value.constructor)) return constructorMap.get(value.constructor)(value, options);
380
+ if (stringTagMap[type]) return stringTagMap[type](value, options);
381
+ return "";
382
+ };
383
+ const toString = Object.prototype.toString;
384
+ function inspect$1(value, opts = {}) {
385
+ const options = normaliseOptions(opts, inspect$1);
386
+ const { customInspect } = options;
387
+ let type = value === null ? "null" : typeof value;
388
+ if (type === "object") type = toString.call(value).slice(8, -1);
389
+ if (type in baseTypesMap) return baseTypesMap[type](value, options);
390
+ if (customInspect && value) {
391
+ const output = inspectCustom(value, options, type, inspect$1);
392
+ if (output) {
393
+ if (typeof output === "string") return output;
394
+ return inspect$1(output, options);
395
+ }
396
+ }
397
+ const proto = value ? Object.getPrototypeOf(value) : false;
398
+ if (proto === Object.prototype || proto === null) return inspectObject$1(value, options);
399
+ if (value && typeof HTMLElement === "function" && value instanceof HTMLElement) return inspectHTML(value, options);
400
+ if ("constructor" in value) {
401
+ if (value.constructor !== Object) return inspectClass(value, options);
402
+ return inspectObject$1(value, options);
403
+ }
404
+ if (value === Object(value)) return inspectObject$1(value, options);
405
+ return options.stylize(String(value), type);
406
+ }
407
+ const { AsymmetricMatcher, DOMCollection, DOMElement, Immutable, ReactElement, ReactTestComponent } = plugins;
408
+ const PLUGINS = [
409
+ ReactTestComponent,
410
+ ReactElement,
411
+ DOMElement,
412
+ DOMCollection,
413
+ Immutable,
414
+ AsymmetricMatcher
415
+ ];
416
+ function stringify(object, maxDepth = 10, { maxLength, filterNode, ...options } = {}) {
417
+ const MAX_LENGTH = maxLength ?? 1e4;
418
+ let result;
419
+ const filterFn = typeof filterNode === "string" ? createNodeFilterFromSelector(filterNode) : filterNode;
420
+ const plugins = filterFn ? [
421
+ ReactTestComponent,
422
+ ReactElement,
423
+ createDOMElementFilter(filterFn),
424
+ DOMCollection,
425
+ Immutable,
426
+ AsymmetricMatcher
427
+ ] : PLUGINS;
428
+ try {
429
+ result = format$1(object, {
430
+ maxDepth,
431
+ escapeString: false,
432
+ plugins,
433
+ ...options
434
+ });
435
+ } catch {
436
+ result = format$1(object, {
437
+ callToJSON: false,
438
+ maxDepth,
439
+ escapeString: false,
440
+ plugins,
441
+ ...options
442
+ });
443
+ }
444
+ return result.length >= MAX_LENGTH && maxDepth > 1 ? stringify(object, Math.floor(Math.min(maxDepth, Number.MAX_SAFE_INTEGER) / 2), {
445
+ maxLength,
446
+ filterNode,
447
+ ...options
448
+ }) : result;
449
+ }
450
+ function createNodeFilterFromSelector(selector) {
451
+ const ELEMENT_NODE = 1;
452
+ const COMMENT_NODE = 8;
453
+ return (node) => {
454
+ if (node.nodeType === COMMENT_NODE) return false;
455
+ if (node.nodeType === ELEMENT_NODE && node.matches) try {
456
+ return !node.matches(selector);
457
+ } catch {
458
+ return true;
459
+ }
460
+ return true;
461
+ };
462
+ }
463
+ const formatRegExp = /%[sdjifoOc%]/g;
464
+ function baseFormat(args, options = {}) {
465
+ const formatArg = (item, inspecOptions) => {
466
+ if (options.prettifyObject) return stringify(item, void 0, {
467
+ printBasicPrototype: false,
468
+ escapeString: false
469
+ });
470
+ return inspect(item, inspecOptions);
471
+ };
472
+ if (typeof args[0] !== "string") {
473
+ const objects = [];
474
+ for (let i = 0; i < args.length; i++) objects.push(formatArg(args[i], {
475
+ depth: 0,
476
+ colors: false
477
+ }));
478
+ return objects.join(" ");
479
+ }
480
+ const len = args.length;
481
+ let i = 1;
482
+ const template = args[0];
483
+ let str = String(template).replace(formatRegExp, (x) => {
484
+ if (x === "%%") return "%";
485
+ if (i >= len) return x;
486
+ switch (x) {
487
+ case "%s": {
488
+ const value = args[i++];
489
+ if (typeof value === "bigint") return `${value.toString()}n`;
490
+ if (typeof value === "number" && value === 0 && 1 / value < 0) return "-0";
491
+ if (typeof value === "object" && value !== null) {
492
+ if (typeof value.toString === "function" && value.toString !== Object.prototype.toString) return value.toString();
493
+ return formatArg(value, {
494
+ depth: 0,
495
+ colors: false
496
+ });
497
+ }
498
+ return String(value);
499
+ }
500
+ case "%d": {
501
+ const value = args[i++];
502
+ if (typeof value === "bigint") return `${value.toString()}n`;
503
+ if (typeof value === "symbol") return "NaN";
504
+ return Number(value).toString();
505
+ }
506
+ case "%i": {
507
+ const value = args[i++];
508
+ if (typeof value === "bigint") return `${value.toString()}n`;
509
+ return Number.parseInt(String(value)).toString();
510
+ }
511
+ case "%f": return Number.parseFloat(String(args[i++])).toString();
512
+ case "%o": return formatArg(args[i++], {
513
+ showHidden: true,
514
+ showProxy: true
515
+ });
516
+ case "%O": return formatArg(args[i++]);
517
+ case "%c":
518
+ i++;
519
+ return "";
520
+ case "%j": try {
521
+ return JSON.stringify(args[i++]);
522
+ } catch (err) {
523
+ const m = err.message;
524
+ if (m.includes("circular structure") || m.includes("cyclic structures") || m.includes("cyclic object")) return "[Circular]";
525
+ throw err;
526
+ }
527
+ default: return x;
528
+ }
529
+ });
530
+ for (let x = args[i]; i < len; x = args[++i]) if (x === null || typeof x !== "object") str += ` ${typeof x === "symbol" ? x.toString() : x}`;
531
+ else str += ` ${formatArg(x)}`;
532
+ return str;
533
+ }
534
+ function format(...args) {
535
+ return baseFormat(args);
536
+ }
537
+ function browserFormat(...args) {
538
+ return baseFormat(args, { prettifyObject: true });
539
+ }
540
+ function inspect(obj, options = {}) {
541
+ if (options.truncate === 0) options.truncate = Number.POSITIVE_INFINITY;
542
+ return inspect$1(obj, options);
543
+ }
544
+ function objDisplay(obj, options = {}) {
545
+ if (typeof options.truncate === "undefined") options.truncate = 40;
546
+ const str = inspect(obj, options);
547
+ const type = Object.prototype.toString.call(obj);
548
+ if (options.truncate && str.length >= options.truncate) if (type === "[object Function]") {
549
+ const fn = obj;
550
+ return !fn.name ? "[Function]" : `[Function: ${fn.name}]`;
551
+ } else if (type === "[object Array]") return `[ Array(${obj.length}) ]`;
552
+ else if (type === "[object Object]") {
553
+ const keys = Object.keys(obj);
554
+ return `{ Object (${keys.length > 2 ? `${keys.splice(0, 2).join(", ")}, ...` : keys.join(", ")}) }`;
555
+ } else return str;
556
+ return str;
557
+ }
558
+ //#endregion
559
+ export { browserFormat, format, formatRegExp, inspect, objDisplay, stringify };
560
+
561
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHZpdGVzdCt1dGlsc0A0LjEuMTAvbm9kZV9tb2R1bGVzL0B2aXRlc3QvdXRpbHMvZGlzdC9kaXNwbGF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBsdWdpbnMsIGNyZWF0ZURPTUVsZW1lbnRGaWx0ZXIsIGZvcm1hdCBhcyBmb3JtYXQkMSB9IGZyb20gJ0B2aXRlc3QvcHJldHR5LWZvcm1hdCc7XG5cbmNvbnN0IGFuc2lDb2xvcnMgPSB7XG4gICAgYm9sZDogWycxJywgJzIyJ10sXG4gICAgZGltOiBbJzInLCAnMjInXSxcbiAgICBpdGFsaWM6IFsnMycsICcyMyddLFxuICAgIHVuZGVybGluZTogWyc0JywgJzI0J10sXG4gICAgLy8gNSAmIDYgYXJlIGJsaW5raW5nXG4gICAgaW52ZXJzZTogWyc3JywgJzI3J10sXG4gICAgaGlkZGVuOiBbJzgnLCAnMjgnXSxcbiAgICBzdHJpa2U6IFsnOScsICcyOSddLFxuICAgIC8vIDEwLTIwIGFyZSBmb250c1xuICAgIC8vIDIxLTI5IGFyZSByZXNldHMgZm9yIDEtOVxuICAgIGJsYWNrOiBbJzMwJywgJzM5J10sXG4gICAgcmVkOiBbJzMxJywgJzM5J10sXG4gICAgZ3JlZW46IFsnMzInLCAnMzknXSxcbiAgICB5ZWxsb3c6IFsnMzMnLCAnMzknXSxcbiAgICBibHVlOiBbJzM0JywgJzM5J10sXG4gICAgbWFnZW50YTogWyczNScsICczOSddLFxuICAgIGN5YW46IFsnMzYnLCAnMzknXSxcbiAgICB3aGl0ZTogWyczNycsICczOSddLFxuICAgIGJyaWdodGJsYWNrOiBbJzMwOzEnLCAnMzknXSxcbiAgICBicmlnaHRyZWQ6IFsnMzE7MScsICczOSddLFxuICAgIGJyaWdodGdyZWVuOiBbJzMyOzEnLCAnMzknXSxcbiAgICBicmlnaHR5ZWxsb3c6IFsnMzM7MScsICczOSddLFxuICAgIGJyaWdodGJsdWU6IFsnMzQ7MScsICczOSddLFxuICAgIGJyaWdodG1hZ2VudGE6IFsnMzU7MScsICczOSddLFxuICAgIGJyaWdodGN5YW46IFsnMzY7MScsICczOSddLFxuICAgIGJyaWdodHdoaXRlOiBbJzM3OzEnLCAnMzknXSxcbiAgICBncmV5OiBbJzkwJywgJzM5J10sXG59O1xuY29uc3Qgc3R5bGVzID0ge1xuICAgIHNwZWNpYWw6ICdjeWFuJyxcbiAgICBudW1iZXI6ICd5ZWxsb3cnLFxuICAgIGJpZ2ludDogJ3llbGxvdycsXG4gICAgYm9vbGVhbjogJ3llbGxvdycsXG4gICAgdW5kZWZpbmVkOiAnZ3JleScsXG4gICAgbnVsbDogJ2JvbGQnLFxuICAgIHN0cmluZzogJ2dyZWVuJyxcbiAgICBzeW1ib2w6ICdncmVlbicsXG4gICAgZGF0ZTogJ21hZ2VudGEnLFxuICAgIHJlZ2V4cDogJ3JlZCcsXG59O1xuY29uc3QgdHJ1bmNhdG9yID0gJ+KApic7XG5mdW5jdGlvbiBjb2xvcmlzZSh2YWx1ZSwgc3R5bGVUeXBlKSB7XG4gICAgY29uc3QgY29sb3IgPSBhbnNpQ29sb3JzW3N0eWxlc1tzdHlsZVR5cGVdXSB8fCBhbnNpQ29sb3JzW3N0eWxlVHlwZV0gfHwgJyc7XG4gICAgaWYgKCFjb2xvcikge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGBcXHUwMDFiWyR7Y29sb3JbMF19bSR7U3RyaW5nKHZhbHVlKX1cXHUwMDFiWyR7Y29sb3JbMV19bWA7XG59XG5mdW5jdGlvbiBub3JtYWxpc2VPcHRpb25zKHsgc2hvd0hpZGRlbiA9IGZhbHNlLCBkZXB0aCA9IDIsIGNvbG9ycyA9IGZhbHNlLCBjdXN0b21JbnNwZWN0ID0gdHJ1ZSwgc2hvd1Byb3h5ID0gZmFsc2UsIG1heEFycmF5TGVuZ3RoID0gSW5maW5pdHksIGJyZWFrTGVuZ3RoID0gSW5maW5pdHksIHNlZW4gPSBbXSwgXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG50cnVuY2F0ZSA9IEluZmluaXR5LCBzdHlsaXplID0gU3RyaW5nLCB9ID0ge30sIGluc3BlY3QpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBzaG93SGlkZGVuOiBCb29sZWFuKHNob3dIaWRkZW4pLFxuICAgICAgICBkZXB0aDogTnVtYmVyKGRlcHRoKSxcbiAgICAgICAgY29sb3JzOiBCb29sZWFuKGNvbG9ycyksXG4gICAgICAgIGN1c3RvbUluc3BlY3Q6IEJvb2xlYW4oY3VzdG9tSW5zcGVjdCksXG4gICAgICAgIHNob3dQcm94eTogQm9vbGVhbihzaG93UHJveHkpLFxuICAgICAgICBtYXhBcnJheUxlbmd0aDogTnVtYmVyKG1heEFycmF5TGVuZ3RoKSxcbiAgICAgICAgYnJlYWtMZW5ndGg6IE51bWJlcihicmVha0xlbmd0aCksXG4gICAgICAgIHRydW5jYXRlOiBOdW1iZXIodHJ1bmNhdGUpLFxuICAgICAgICBzZWVuLFxuICAgICAgICBpbnNwZWN0LFxuICAgICAgICBzdHlsaXplLFxuICAgIH07XG4gICAgaWYgKG9wdGlvbnMuY29sb3JzKSB7XG4gICAgICAgIG9wdGlvbnMuc3R5bGl6ZSA9IGNvbG9yaXNlO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbn1cbmZ1bmN0aW9uIGlzSGlnaFN1cnJvZ2F0ZShjaGFyKSB7XG4gICAgcmV0dXJuIGNoYXIgPj0gJ1xcdWQ4MDAnICYmIGNoYXIgPD0gJ1xcdWRiZmYnO1xufVxuZnVuY3Rpb24gdHJ1bmNhdGUoc3RyaW5nLCBsZW5ndGgsIHRhaWwgPSB0cnVuY2F0b3IpIHtcbiAgICBzdHJpbmcgPSBTdHJpbmcoc3RyaW5nKTtcbiAgICBjb25zdCB0YWlsTGVuZ3RoID0gdGFpbC5sZW5ndGg7XG4gICAgY29uc3Qgc3RyaW5nTGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICBpZiAodGFpbExlbmd0aCA+IGxlbmd0aCAmJiBzdHJpbmdMZW5ndGggPiB0YWlsTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0YWlsO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nTGVuZ3RoID4gbGVuZ3RoICYmIHN0cmluZ0xlbmd0aCA+IHRhaWxMZW5ndGgpIHtcbiAgICAgICAgbGV0IGVuZCA9IGxlbmd0aCAtIHRhaWxMZW5ndGg7XG4gICAgICAgIGlmIChlbmQgPiAwICYmIGlzSGlnaFN1cnJvZ2F0ZShzdHJpbmdbZW5kIC0gMV0pKSB7XG4gICAgICAgICAgICBlbmQgPSBlbmQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtzdHJpbmcuc2xpY2UoMCwgZW5kKX0ke3RhaWx9YDtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5mdW5jdGlvbiBpbnNwZWN0TGlzdChsaXN0LCBvcHRpb25zLCBpbnNwZWN0SXRlbSwgc2VwYXJhdG9yID0gJywgJykge1xuICAgIGluc3BlY3RJdGVtID0gaW5zcGVjdEl0ZW0gfHwgb3B0aW9ucy5pbnNwZWN0O1xuICAgIGNvbnN0IHNpemUgPSBsaXN0Lmxlbmd0aDtcbiAgICBpZiAoc2l6ZSA9PT0gMClcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIGNvbnN0IG9yaWdpbmFsTGVuZ3RoID0gb3B0aW9ucy50cnVuY2F0ZTtcbiAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgbGV0IHBlZWsgPSAnJztcbiAgICBsZXQgdHJ1bmNhdGVkID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3QgbGFzdCA9IGkgKyAxID09PSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgY29uc3Qgc2Vjb25kVG9MYXN0ID0gaSArIDIgPT09IGxpc3QubGVuZ3RoO1xuICAgICAgICB0cnVuY2F0ZWQgPSBgJHt0cnVuY2F0b3J9KCR7bGlzdC5sZW5ndGggLSBpfSlgO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpc3RbaV07XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgcmVtYWluaW5nIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgYSBzZXBhcmF0b3Igb2YgYCwgYFxuICAgICAgICBvcHRpb25zLnRydW5jYXRlID0gb3JpZ2luYWxMZW5ndGggLSBvdXRwdXQubGVuZ3RoIC0gKGxhc3QgPyAwIDogc2VwYXJhdG9yLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHN0cmluZyA9IHBlZWsgfHwgaW5zcGVjdEl0ZW0odmFsdWUsIG9wdGlvbnMpICsgKGxhc3QgPyAnJyA6IHNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IG5leHRMZW5ndGggPSBvdXRwdXQubGVuZ3RoICsgc3RyaW5nLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdHJ1bmNhdGVkTGVuZ3RoID0gbmV4dExlbmd0aCArIHRydW5jYXRlZC5sZW5ndGg7XG4gICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGxhc3QgZWxlbWVudCwgYW5kIGFkZGluZyBpdCB3b3VsZFxuICAgICAgICAvLyB0YWtlIHVzIG92ZXIgbGVuZ3RoLCBidXQgYWRkaW5nIHRoZSB0cnVuY2F0b3Igd291bGRuJ3QgLSB0aGVuIGJyZWFrIG5vd1xuICAgICAgICBpZiAobGFzdCAmJiBuZXh0TGVuZ3RoID4gb3JpZ2luYWxMZW5ndGggJiYgb3V0cHV0Lmxlbmd0aCArIHRydW5jYXRlZC5sZW5ndGggPD0gb3JpZ2luYWxMZW5ndGgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoaXMgaXNuJ3QgdGhlIGxhc3Qgb3Igc2Vjb25kIHRvIGxhc3QgZWxlbWVudCB0byBzY2FuLFxuICAgICAgICAvLyBidXQgdGhlIHN0cmluZyBpcyBhbHJlYWR5IG92ZXIgbGVuZ3RoIHRoZW4gYnJlYWsgaGVyZVxuICAgICAgICBpZiAoIWxhc3QgJiYgIXNlY29uZFRvTGFzdCAmJiB0cnVuY2F0ZWRMZW5ndGggPiBvcmlnaW5hbExlbmd0aCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGVlayBhdCB0aGUgbmV4dCBzdHJpbmcgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZFxuICAgICAgICAvLyBicmVhayBlYXJseSBiZWZvcmUgYWRkaW5nIHRoaXMgaXRlbSB0byB0aGUgb3V0cHV0XG4gICAgICAgIHBlZWsgPSBsYXN0ID8gJycgOiBpbnNwZWN0SXRlbShsaXN0W2kgKyAxXSwgb3B0aW9ucykgKyAoc2Vjb25kVG9MYXN0ID8gJycgOiBzZXBhcmF0b3IpO1xuICAgICAgICAvLyBJZiB3ZSBoYXZlIG9uZSBlbGVtZW50IGxlZnQsIGJ1dCB0aGlzIGVsZW1lbnQgYW5kXG4gICAgICAgIC8vIHRoZSBuZXh0IHRha2VzIG92ZXIgbGVuZ3RoLCB0aGUgYnJlYWsgZWFybHlcbiAgICAgICAgaWYgKCFsYXN0ICYmIHNlY29uZFRvTGFzdCAmJiB0cnVuY2F0ZWRMZW5ndGggPiBvcmlnaW5hbExlbmd0aCAmJiBuZXh0TGVuZ3RoICsgcGVlay5sZW5ndGggPiBvcmlnaW5hbExlbmd0aCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgb3V0cHV0ICs9IHN0cmluZztcbiAgICAgICAgLy8gSWYgdGhlIG5leHQgZWxlbWVudCB0YWtlcyB1cyB0byBsZW5ndGggLVxuICAgICAgICAvLyBidXQgdGhlcmUgYXJlIG1vcmUgYWZ0ZXIgdGhhdCwgdGhlbiB3ZSBzaG91bGQgdHJ1bmNhdGUgbm93XG4gICAgICAgIGlmICghbGFzdCAmJiAhc2Vjb25kVG9MYXN0ICYmIG5leHRMZW5ndGggKyBwZWVrLmxlbmd0aCA+PSBvcmlnaW5hbExlbmd0aCkge1xuICAgICAgICAgICAgdHJ1bmNhdGVkID0gYCR7dHJ1bmNhdG9yfSgke2xpc3QubGVuZ3RoIC0gaSAtIDF9KWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0cnVuY2F0ZWQgPSAnJztcbiAgICB9XG4gICAgcmV0dXJuIGAke291dHB1dH0ke3RydW5jYXRlZH1gO1xufVxuZnVuY3Rpb24gcXVvdGVDb21wbGV4S2V5KGtleSkge1xuICAgIGlmIChrZXkubWF0Y2goL15bYS16QS1aX11bYS16QS1aXzAtOV0qJC8pKSB7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShrZXkpXG4gICAgICAgIC5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgICAgLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKVxuICAgICAgICAucmVwbGFjZSgvKF5cInxcIiQpL2csIFwiJ1wiKTtcbn1cbmZ1bmN0aW9uIGluc3BlY3RQcm9wZXJ0eShba2V5LCB2YWx1ZV0sIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zLnRydW5jYXRlIC09IDI7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGtleSA9IHF1b3RlQ29tcGxleEtleShrZXkpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2Yga2V5ICE9PSAnbnVtYmVyJykge1xuICAgICAgICBrZXkgPSBgWyR7b3B0aW9ucy5pbnNwZWN0KGtleSwgb3B0aW9ucyl9XWA7XG4gICAgfVxuICAgIG9wdGlvbnMudHJ1bmNhdGUgLT0ga2V5Lmxlbmd0aDtcbiAgICB2YWx1ZSA9IG9wdGlvbnMuaW5zcGVjdCh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGAke2tleX06ICR7dmFsdWV9YDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdEFycmF5KGFycmF5LCBvcHRpb25zKSB7XG4gICAgLy8gT2JqZWN0LmtleXMgd2lsbCBhbHdheXMgb3V0cHV0IHRoZSBBcnJheSBpbmRpY2VzIGZpcnN0LCBzbyB3ZSBjYW4gc2xpY2UgYnlcbiAgICAvLyBgYXJyYXkubGVuZ3RoYCB0byBnZXQgbm9uLWluZGV4IHByb3BlcnRpZXNcbiAgICBjb25zdCBub25JbmRleFByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhhcnJheSkuc2xpY2UoYXJyYXkubGVuZ3RoKTtcbiAgICBpZiAoIWFycmF5Lmxlbmd0aCAmJiAhbm9uSW5kZXhQcm9wZXJ0aWVzLmxlbmd0aClcbiAgICAgICAgcmV0dXJuICdbXSc7XG4gICAgb3B0aW9ucy50cnVuY2F0ZSAtPSA0O1xuICAgIGNvbnN0IGxpc3RDb250ZW50cyA9IGluc3BlY3RMaXN0KGFycmF5LCBvcHRpb25zKTtcbiAgICBvcHRpb25zLnRydW5jYXRlIC09IGxpc3RDb250ZW50cy5sZW5ndGg7XG4gICAgbGV0IHByb3BlcnR5Q29udGVudHMgPSAnJztcbiAgICBpZiAobm9uSW5kZXhQcm9wZXJ0aWVzLmxlbmd0aCkge1xuICAgICAgICBwcm9wZXJ0eUNvbnRlbnRzID0gaW5zcGVjdExpc3Qobm9uSW5kZXhQcm9wZXJ0aWVzLm1hcChrZXkgPT4gW2tleSwgYXJyYXlba2V5XV0pLCBvcHRpb25zLCBpbnNwZWN0UHJvcGVydHkpO1xuICAgIH1cbiAgICByZXR1cm4gYFsgJHtsaXN0Q29udGVudHN9JHtwcm9wZXJ0eUNvbnRlbnRzID8gYCwgJHtwcm9wZXJ0eUNvbnRlbnRzfWAgOiAnJ30gXWA7XG59XG5cbmNvbnN0IGdldEFycmF5TmFtZSA9IChhcnJheSkgPT4ge1xuICAgIC8vIFdlIG5lZWQgdG8gc3BlY2lhbCBjYXNlIE5vZGUuanMnIEJ1ZmZlcnMsIHdoaWNoIHJlcG9ydCB0byBiZSBVaW50OEFycmF5XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0eXBlb2YgQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIGFycmF5IGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgIHJldHVybiAnQnVmZmVyJztcbiAgICB9XG4gICAgaWYgKGFycmF5W1N5bWJvbC50b1N0cmluZ1RhZ10pIHtcbiAgICAgICAgcmV0dXJuIGFycmF5W1N5bWJvbC50b1N0cmluZ1RhZ107XG4gICAgfVxuICAgIHJldHVybiBhcnJheS5jb25zdHJ1Y3Rvci5uYW1lO1xufTtcbmZ1bmN0aW9uIGluc3BlY3RUeXBlZEFycmF5KGFycmF5LCBvcHRpb25zKSB7XG4gICAgY29uc3QgbmFtZSA9IGdldEFycmF5TmFtZShhcnJheSk7XG4gICAgb3B0aW9ucy50cnVuY2F0ZSAtPSBuYW1lLmxlbmd0aCArIDQ7XG4gICAgLy8gT2JqZWN0LmtleXMgd2lsbCBhbHdheXMgb3V0cHV0IHRoZSBBcnJheSBpbmRpY2VzIGZpcnN0LCBzbyB3ZSBjYW4gc2xpY2UgYnlcbiAgICAvLyBgYXJyYXkubGVuZ3RoYCB0byBnZXQgbm9uLWluZGV4IHByb3BlcnRpZXNcbiAgICBjb25zdCBub25JbmRleFByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhhcnJheSkuc2xpY2UoYXJyYXkubGVuZ3RoKTtcbiAgICBpZiAoIWFycmF5Lmxlbmd0aCAmJiAhbm9uSW5kZXhQcm9wZXJ0aWVzLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGAke25hbWV9W11gO1xuICAgIC8vIEFzIHdlIGtub3cgVHlwZWRBcnJheXMgb25seSBjb250YWluIFVuc2lnbmVkIEludGVnZXJzLCB3ZSBjYW4gc2tpcCBpbnNwZWN0aW5nIGVhY2ggb25lIGFuZCBzaW1wbHlcbiAgICAvLyBzdHlsaXNlIHRoZSB0b1N0cmluZygpIHZhbHVlIG9mIHRoZW1cbiAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBzdHJpbmcgPSBgJHtvcHRpb25zLnN0eWxpemUodHJ1bmNhdGUoYXJyYXlbaV0sIG9wdGlvbnMudHJ1bmNhdGUpLCAnbnVtYmVyJyl9JHtpID09PSBhcnJheS5sZW5ndGggLSAxID8gJycgOiAnLCAnfWA7XG4gICAgICAgIG9wdGlvbnMudHJ1bmNhdGUgLT0gc3RyaW5nLmxlbmd0aDtcbiAgICAgICAgaWYgKGFycmF5W2ldICE9PSBhcnJheS5sZW5ndGggJiYgb3B0aW9ucy50cnVuY2F0ZSA8PSAzKSB7XG4gICAgICAgICAgICBvdXRwdXQgKz0gYCR7dHJ1bmNhdG9yfSgke2FycmF5Lmxlbmd0aCAtIGFycmF5W2ldICsgMX0pYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG91dHB1dCArPSBzdHJpbmc7XG4gICAgfVxuICAgIGxldCBwcm9wZXJ0eUNvbnRlbnRzID0gJyc7XG4gICAgaWYgKG5vbkluZGV4UHJvcGVydGllcy5sZW5ndGgpIHtcbiAgICAgICAgcHJvcGVydHlDb250ZW50cyA9IGluc3BlY3RMaXN0KG5vbkluZGV4UHJvcGVydGllcy5tYXAoa2V5ID0+IFtrZXksIGFycmF5W2tleV1dKSwgb3B0aW9ucywgaW5zcGVjdFByb3BlcnR5KTtcbiAgICB9XG4gICAgcmV0dXJuIGAke25hbWV9WyAke291dHB1dH0ke3Byb3BlcnR5Q29udGVudHMgPyBgLCAke3Byb3BlcnR5Q29udGVudHN9YCA6ICcnfSBdYDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdERhdGUoZGF0ZU9iamVjdCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHN0cmluZ1JlcHJlc2VudGF0aW9uID0gZGF0ZU9iamVjdC50b0pTT04oKTtcbiAgICBpZiAoc3RyaW5nUmVwcmVzZW50YXRpb24gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICdJbnZhbGlkIERhdGUnO1xuICAgIH1cbiAgICBjb25zdCBzcGxpdCA9IHN0cmluZ1JlcHJlc2VudGF0aW9uLnNwbGl0KCdUJyk7XG4gICAgY29uc3QgZGF0ZSA9IHNwbGl0WzBdO1xuICAgIC8vIElmIHdlIG5lZWQgdG8gLSB0cnVuY2F0ZSB0aGUgdGltZSBwb3J0aW9uLCBidXQgbmV2ZXIgdGhlIGRhdGVcbiAgICByZXR1cm4gb3B0aW9ucy5zdHlsaXplKGAke2RhdGV9VCR7dHJ1bmNhdGUoc3BsaXRbMV0sIG9wdGlvbnMudHJ1bmNhdGUgLSBkYXRlLmxlbmd0aCAtIDEpfWAsICdkYXRlJyk7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3RGdW5jdGlvbihmdW5jLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZnVuY3Rpb25UeXBlID0gZnVuY1tTeW1ib2wudG9TdHJpbmdUYWddIHx8ICdGdW5jdGlvbic7XG4gICAgY29uc3QgbmFtZSA9IGZ1bmMubmFtZTtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuc3R5bGl6ZShgWyR7ZnVuY3Rpb25UeXBlfV1gLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucy5zdHlsaXplKGBbJHtmdW5jdGlvblR5cGV9ICR7dHJ1bmNhdGUobmFtZSwgb3B0aW9ucy50cnVuY2F0ZSAtIDExKX1dYCwgJ3NwZWNpYWwnKTtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdE1hcEVudHJ5KFtrZXksIHZhbHVlXSwgb3B0aW9ucykge1xuICAgIG9wdGlvbnMudHJ1bmNhdGUgLT0gNDtcbiAgICBrZXkgPSBvcHRpb25zLmluc3BlY3Qoa2V5LCBvcHRpb25zKTtcbiAgICBvcHRpb25zLnRydW5jYXRlIC09IGtleS5sZW5ndGg7XG4gICAgdmFsdWUgPSBvcHRpb25zLmluc3BlY3QodmFsdWUsIG9wdGlvbnMpO1xuICAgIHJldHVybiBgJHtrZXl9ID0+ICR7dmFsdWV9YDtcbn1cbi8vIElFMTEgZG9lc24ndCBzdXBwb3J0IGBtYXAuZW50cmllcygpYFxuZnVuY3Rpb24gbWFwVG9FbnRyaWVzKG1hcCkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICBtYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBlbnRyaWVzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZW50cmllcztcbn1cbmZ1bmN0aW9uIGluc3BlY3RNYXAobWFwLCBvcHRpb25zKSB7XG4gICAgaWYgKG1hcC5zaXplID09PSAwKVxuICAgICAgICByZXR1cm4gJ01hcHt9JztcbiAgICBvcHRpb25zLnRydW5jYXRlIC09IDc7XG4gICAgcmV0dXJuIGBNYXB7ICR7aW5zcGVjdExpc3QobWFwVG9FbnRyaWVzKG1hcCksIG9wdGlvbnMsIGluc3BlY3RNYXBFbnRyeSl9IH1gO1xufVxuXG5jb25zdCBpc05hTiA9IE51bWJlci5pc05hTiB8fCAoaSA9PiBpICE9PSBpKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbmZ1bmN0aW9uIGluc3BlY3ROdW1iZXIobnVtYmVyLCBvcHRpb25zKSB7XG4gICAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuc3R5bGl6ZSgnTmFOJywgJ251bWJlcicpO1xuICAgIH1cbiAgICBpZiAobnVtYmVyID09PSBJbmZpbml0eSkge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5zdHlsaXplKCdJbmZpbml0eScsICdudW1iZXInKTtcbiAgICB9XG4gICAgaWYgKG51bWJlciA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLnN0eWxpemUoJy1JbmZpbml0eScsICdudW1iZXInKTtcbiAgICB9XG4gICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5zdHlsaXplKDEgLyBudW1iZXIgPT09IEluZmluaXR5ID8gJyswJyA6ICctMCcsICdudW1iZXInKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnMuc3R5bGl6ZSh0cnVuY2F0ZShTdHJpbmcobnVtYmVyKSwgb3B0aW9ucy50cnVuY2F0ZSksICdudW1iZXInKTtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdEJpZ0ludChudW1iZXIsIG9wdGlvbnMpIHtcbiAgICBsZXQgbnVtcyA9IHRydW5jYXRlKG51bWJlci50b1N0cmluZygpLCBvcHRpb25zLnRydW5jYXRlIC0gMSk7XG4gICAgaWYgKG51bXMgIT09IHRydW5jYXRvcilcbiAgICAgICAgbnVtcyArPSAnbic7XG4gICAgcmV0dXJuIG9wdGlvbnMuc3R5bGl6ZShudW1zLCAnYmlnaW50Jyk7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3RSZWdFeHAodmFsdWUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBmbGFncyA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJy8nKVsyXTtcbiAgICBjb25zdCBzb3VyY2VMZW5ndGggPSBvcHRpb25zLnRydW5jYXRlIC0gKDIgKyBmbGFncy5sZW5ndGgpO1xuICAgIGNvbnN0IHNvdXJjZSA9IHZhbHVlLnNvdXJjZTtcbiAgICByZXR1cm4gb3B0aW9ucy5zdHlsaXplKGAvJHt0cnVuY2F0ZShzb3VyY2UsIHNvdXJjZUxlbmd0aCl9LyR7ZmxhZ3N9YCwgJ3JlZ2V4cCcpO1xufVxuXG4vLyBJRTExIGRvZXNuJ3Qgc3VwcG9ydCBgQXJyYXkuZnJvbShzZXQpYFxuZnVuY3Rpb24gYXJyYXlGcm9tU2V0KHNldCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIHNldC5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB2YWx1ZXM7XG59XG5mdW5jdGlvbiBpbnNwZWN0U2V0KHNldCwgb3B0aW9ucykge1xuICAgIGlmIChzZXQuc2l6ZSA9PT0gMClcbiAgICAgICAgcmV0dXJuICdTZXR7fSc7XG4gICAgb3B0aW9ucy50cnVuY2F0ZSAtPSA3O1xuICAgIHJldHVybiBgU2V0eyAke2luc3BlY3RMaXN0KGFycmF5RnJvbVNldChzZXQpLCBvcHRpb25zKX0gfWA7XG59XG5cbmNvbnN0IHN0cmluZ0VzY2FwZUNoYXJzID0gbmV3IFJlZ0V4cChcIlsnXFxcXHUwMDAwLVxcXFx1MDAxZlxcXFx1MDA3Zi1cXFxcdTAwOWZcXFxcdTAwYWRcXFxcdTA2MDAtXFxcXHUwNjA0XFxcXHUwNzBmXFxcXHUxN2I0XFxcXHUxN2I1XCIgK1xuICAgICdcXFxcdTIwMGMtXFxcXHUyMDBmXFxcXHUyMDI4LVxcXFx1MjAyZlxcXFx1MjA2MC1cXFxcdTIwNmZcXFxcdWZlZmZcXFxcdWZmZjAtXFxcXHVmZmZmXScsICdnJyk7XG5jb25zdCBlc2NhcGVDaGFyYWN0ZXJzID0ge1xuICAgICdcXGInOiAnXFxcXGInLFxuICAgICdcXHQnOiAnXFxcXHQnLFxuICAgICdcXG4nOiAnXFxcXG4nLFxuICAgICdcXGYnOiAnXFxcXGYnLFxuICAgICdcXHInOiAnXFxcXHInLFxuICAgIFwiJ1wiOiBcIlxcXFwnXCIsXG4gICAgJ1xcXFwnOiAnXFxcXFxcXFwnLFxufTtcbmNvbnN0IGhleCA9IDE2O1xuZnVuY3Rpb24gZXNjYXBlKGNoYXIpIHtcbiAgICByZXR1cm4gKGVzY2FwZUNoYXJhY3RlcnNbY2hhcl0gfHxcbiAgICAgICAgYFxcXFx1JHtgMDAwMCR7Y2hhci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKGhleCl9YC5zbGljZSgtNCl9YCk7XG59XG5mdW5jdGlvbiBpbnNwZWN0U3RyaW5nKHN0cmluZywgb3B0aW9ucykge1xuICAgIGlmIChzdHJpbmdFc2NhcGVDaGFycy50ZXN0KHN0cmluZykpIHtcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2Uoc3RyaW5nRXNjYXBlQ2hhcnMsIGVzY2FwZSk7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLnN0eWxpemUoYCcke3RydW5jYXRlKHN0cmluZywgb3B0aW9ucy50cnVuY2F0ZSAtIDIpfSdgLCAnc3RyaW5nJyk7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3RTeW1ib2wodmFsdWUpIHtcbiAgICBpZiAoJ2Rlc2NyaXB0aW9uJyBpbiBTeW1ib2wucHJvdG90eXBlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5kZXNjcmlwdGlvbiA/IGBTeW1ib2woJHt2YWx1ZS5kZXNjcmlwdGlvbn0pYCA6ICdTeW1ib2woKSc7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xufVxuXG5jb25zdCBnZXRQcm9taXNlVmFsdWUgPSAoKSA9PiAnUHJvbWlzZXvigKZ9JztcblxuZnVuY3Rpb24gaW5zcGVjdE9iamVjdCQxKG9iamVjdCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpO1xuICAgIGNvbnN0IHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpIDogW107XG4gICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoID09PSAwICYmIHN5bWJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAne30nO1xuICAgIH1cbiAgICBvcHRpb25zLnRydW5jYXRlIC09IDQ7XG4gICAgb3B0aW9ucy5zZWVuID0gb3B0aW9ucy5zZWVuIHx8IFtdO1xuICAgIGlmIChvcHRpb25zLnNlZW4uaW5jbHVkZXMob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgIH1cbiAgICBvcHRpb25zLnNlZW4ucHVzaChvYmplY3QpO1xuICAgIGNvbnN0IHByb3BlcnR5Q29udGVudHMgPSBpbnNwZWN0TGlzdChwcm9wZXJ0aWVzLm1hcChrZXkgPT4gW2tleSwgb2JqZWN0W2tleV1dKSwgb3B0aW9ucywgaW5zcGVjdFByb3BlcnR5KTtcbiAgICBjb25zdCBzeW1ib2xDb250ZW50cyA9IGluc3BlY3RMaXN0KHN5bWJvbHMubWFwKGtleSA9PiBba2V5LCBvYmplY3Rba2V5XV0pLCBvcHRpb25zLCBpbnNwZWN0UHJvcGVydHkpO1xuICAgIG9wdGlvbnMuc2Vlbi5wb3AoKTtcbiAgICBsZXQgc2VwID0gJyc7XG4gICAgaWYgKHByb3BlcnR5Q29udGVudHMgJiYgc3ltYm9sQ29udGVudHMpIHtcbiAgICAgICAgc2VwID0gJywgJztcbiAgICB9XG4gICAgcmV0dXJuIGB7ICR7cHJvcGVydHlDb250ZW50c30ke3NlcH0ke3N5bWJvbENvbnRlbnRzfSB9YDtcbn1cblxuY29uc3QgdG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiBmYWxzZTtcbmZ1bmN0aW9uIGluc3BlY3RDbGFzcyh2YWx1ZSwgb3B0aW9ucykge1xuICAgIGxldCBuYW1lID0gJyc7XG4gICAgaWYgKHRvU3RyaW5nVGFnICYmIHRvU3RyaW5nVGFnIGluIHZhbHVlKSB7XG4gICAgICAgIG5hbWUgPSB2YWx1ZVt0b1N0cmluZ1RhZ107XG4gICAgfVxuICAgIG5hbWUgPSBuYW1lIHx8IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgLy8gQmFiZWwgdHJhbnNmb3JtcyBhbm9ueW1vdXMgY2xhc3NlcyB0byB0aGUgbmFtZSBgX2NsYXNzYFxuICAgIGlmICghbmFtZSB8fCBuYW1lID09PSAnX2NsYXNzJykge1xuICAgICAgICBuYW1lID0gJzxBbm9ueW1vdXMgQ2xhc3M+JztcbiAgICB9XG4gICAgb3B0aW9ucy50cnVuY2F0ZSAtPSBuYW1lLmxlbmd0aDtcbiAgICByZXR1cm4gYCR7bmFtZX0ke2luc3BlY3RPYmplY3QkMSh2YWx1ZSwgb3B0aW9ucyl9YDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdEFyZ3VtZW50cyhhcmdzLCBvcHRpb25zKSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gJ0FyZ3VtZW50c1tdJztcbiAgICBvcHRpb25zLnRydW5jYXRlIC09IDEzO1xuICAgIHJldHVybiBgQXJndW1lbnRzWyAke2luc3BlY3RMaXN0KGFyZ3MsIG9wdGlvbnMpfSBdYDtcbn1cblxuY29uc3QgZXJyb3JLZXlzID0gW1xuICAgICdzdGFjaycsXG4gICAgJ2xpbmUnLFxuICAgICdjb2x1bW4nLFxuICAgICduYW1lJyxcbiAgICAnbWVzc2FnZScsXG4gICAgJ2ZpbGVOYW1lJyxcbiAgICAnbGluZU51bWJlcicsXG4gICAgJ2NvbHVtbk51bWJlcicsXG4gICAgJ251bWJlcicsXG4gICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAnY2F1c2UnLFxuXTtcbmZ1bmN0aW9uIGluc3BlY3RPYmplY3QoZXJyb3IsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXJyb3IpLmZpbHRlcihrZXkgPT4gZXJyb3JLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpO1xuICAgIGNvbnN0IG5hbWUgPSBlcnJvci5uYW1lO1xuICAgIG9wdGlvbnMudHJ1bmNhdGUgLT0gbmFtZS5sZW5ndGg7XG4gICAgbGV0IG1lc3NhZ2UgPSAnJztcbiAgICBpZiAodHlwZW9mIGVycm9yLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1lc3NhZ2UgPSB0cnVuY2F0ZShlcnJvci5tZXNzYWdlLCBvcHRpb25zLnRydW5jYXRlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHByb3BlcnRpZXMudW5zaGlmdCgnbWVzc2FnZScpO1xuICAgIH1cbiAgICBtZXNzYWdlID0gbWVzc2FnZSA/IGA6ICR7bWVzc2FnZX1gIDogJyc7XG4gICAgb3B0aW9ucy50cnVuY2F0ZSAtPSBtZXNzYWdlLmxlbmd0aCArIDU7XG4gICAgb3B0aW9ucy5zZWVuID0gb3B0aW9ucy5zZWVuIHx8IFtdO1xuICAgIGlmIChvcHRpb25zLnNlZW4uaW5jbHVkZXMoZXJyb3IpKSB7XG4gICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgfVxuICAgIG9wdGlvbnMuc2Vlbi5wdXNoKGVycm9yKTtcbiAgICBjb25zdCBwcm9wZXJ0eUNvbnRlbnRzID0gaW5zcGVjdExpc3QocHJvcGVydGllcy5tYXAoa2V5ID0+IFtrZXksIGVycm9yW2tleV1dKSwgb3B0aW9ucywgaW5zcGVjdFByb3BlcnR5KTtcbiAgICByZXR1cm4gYCR7bmFtZX0ke21lc3NhZ2V9JHtwcm9wZXJ0eUNvbnRlbnRzID8gYCB7ICR7cHJvcGVydHlDb250ZW50c30gfWAgOiAnJ31gO1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0QXR0cmlidXRlKFtrZXksIHZhbHVlXSwgb3B0aW9ucykge1xuICAgIG9wdGlvbnMudHJ1bmNhdGUgLT0gMztcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiBgJHtvcHRpb25zLnN0eWxpemUoU3RyaW5nKGtleSksICd5ZWxsb3cnKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7b3B0aW9ucy5zdHlsaXplKFN0cmluZyhrZXkpLCAneWVsbG93Jyl9PSR7b3B0aW9ucy5zdHlsaXplKGBcIiR7dmFsdWV9XCJgLCAnc3RyaW5nJyl9YDtcbn1cbmZ1bmN0aW9uIGluc3BlY3ROb2RlQ29sbGVjdGlvbihjb2xsZWN0aW9uLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3BlY3RMaXN0KGNvbGxlY3Rpb24sIG9wdGlvbnMsIGluc3BlY3ROb2RlLCAnXFxuJyk7XG59XG5mdW5jdGlvbiBpbnNwZWN0Tm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBpbnNwZWN0SFRNTChub2RlLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW5zcGVjdChub2RlLmRhdGEsIG9wdGlvbnMpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW5zcGVjdChub2RlLCBvcHRpb25zKTtcbiAgICB9XG59XG4vLyBAdHMtaWdub3JlIChEZW5vIGRvZXNuJ3QgaGF2ZSBFbGVtZW50KVxuZnVuY3Rpb24gaW5zcGVjdEhUTUwoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5hbWVzKCk7XG4gICAgY29uc3QgbmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGhlYWQgPSBvcHRpb25zLnN0eWxpemUoYDwke25hbWV9YCwgJ3NwZWNpYWwnKTtcbiAgICBjb25zdCBoZWFkQ2xvc2UgPSBvcHRpb25zLnN0eWxpemUoYD5gLCAnc3BlY2lhbCcpO1xuICAgIGNvbnN0IHRhaWwgPSBvcHRpb25zLnN0eWxpemUoYDwvJHtuYW1lfT5gLCAnc3BlY2lhbCcpO1xuICAgIG9wdGlvbnMudHJ1bmNhdGUgLT0gbmFtZS5sZW5ndGggKiAyICsgNTtcbiAgICBsZXQgcHJvcGVydHlDb250ZW50cyA9ICcnO1xuICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcHJvcGVydHlDb250ZW50cyArPSAnICc7XG4gICAgICAgIHByb3BlcnR5Q29udGVudHMgKz0gaW5zcGVjdExpc3QocHJvcGVydGllcy5tYXAoKGtleSkgPT4gW2tleSwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoa2V5KV0pLCBvcHRpb25zLCBpbnNwZWN0QXR0cmlidXRlLCAnICcpO1xuICAgIH1cbiAgICBvcHRpb25zLnRydW5jYXRlIC09IHByb3BlcnR5Q29udGVudHMubGVuZ3RoO1xuICAgIGNvbnN0IHRydW5jYXRlID0gb3B0aW9ucy50cnVuY2F0ZTtcbiAgICBsZXQgY2hpbGRyZW4gPSBpbnNwZWN0Tm9kZUNvbGxlY3Rpb24oZWxlbWVudC5jaGlsZHJlbiwgb3B0aW9ucyk7XG4gICAgaWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA+IHRydW5jYXRlKSB7XG4gICAgICAgIGNoaWxkcmVuID0gYCR7dHJ1bmNhdG9yfSgke2VsZW1lbnQuY2hpbGRyZW4ubGVuZ3RofSlgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7aGVhZH0ke3Byb3BlcnR5Q29udGVudHN9JHtoZWFkQ2xvc2V9JHtjaGlsZHJlbn0ke3RhaWx9YDtcbn1cblxuLyogIVxuICogbG91cGVcbiAqIENvcHlyaWdodChjKSAyMDEzIEpha2UgTHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cbmNvbnN0IHN5bWJvbHNTdXBwb3J0ZWQgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wuZm9yID09PSAnZnVuY3Rpb24nO1xuY29uc3QgY2hhaUluc3BlY3QgPSBzeW1ib2xzU3VwcG9ydGVkID8gU3ltYm9sLmZvcignY2hhaS9pbnNwZWN0JykgOiAnQEBjaGFpL2luc3BlY3QnO1xuY29uc3Qgbm9kZUluc3BlY3QgPSBTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpO1xuY29uc3QgY29uc3RydWN0b3JNYXAgPSBuZXcgV2Vha01hcCgpO1xuY29uc3Qgc3RyaW5nVGFnTWFwID0ge307XG5jb25zdCBiYXNlVHlwZXNNYXAgPSB7XG4gICAgdW5kZWZpbmVkOiAodmFsdWUsIG9wdGlvbnMpID0+IG9wdGlvbnMuc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpLFxuICAgIG51bGw6ICh2YWx1ZSwgb3B0aW9ucykgPT4gb3B0aW9ucy5zdHlsaXplKCdudWxsJywgJ251bGwnKSxcbiAgICBib29sZWFuOiAodmFsdWUsIG9wdGlvbnMpID0+IG9wdGlvbnMuc3R5bGl6ZShTdHJpbmcodmFsdWUpLCAnYm9vbGVhbicpLFxuICAgIEJvb2xlYW46ICh2YWx1ZSwgb3B0aW9ucykgPT4gb3B0aW9ucy5zdHlsaXplKFN0cmluZyh2YWx1ZSksICdib29sZWFuJyksXG4gICAgbnVtYmVyOiBpbnNwZWN0TnVtYmVyLFxuICAgIE51bWJlcjogaW5zcGVjdE51bWJlcixcbiAgICBiaWdpbnQ6IGluc3BlY3RCaWdJbnQsXG4gICAgQmlnSW50OiBpbnNwZWN0QmlnSW50LFxuICAgIHN0cmluZzogaW5zcGVjdFN0cmluZyxcbiAgICBTdHJpbmc6IGluc3BlY3RTdHJpbmcsXG4gICAgZnVuY3Rpb246IGluc3BlY3RGdW5jdGlvbixcbiAgICBGdW5jdGlvbjogaW5zcGVjdEZ1bmN0aW9uLFxuICAgIHN5bWJvbDogaW5zcGVjdFN5bWJvbCxcbiAgICAvLyBBIFN5bWJvbCBwb2x5ZmlsbCB3aWxsIHJldHVybiBgU3ltYm9sYCBub3QgYHN5bWJvbGAgZnJvbSB0eXBlZGV0ZWN0XG4gICAgU3ltYm9sOiBpbnNwZWN0U3ltYm9sLFxuICAgIEFycmF5OiBpbnNwZWN0QXJyYXksXG4gICAgRGF0ZTogaW5zcGVjdERhdGUsXG4gICAgTWFwOiBpbnNwZWN0TWFwLFxuICAgIFNldDogaW5zcGVjdFNldCxcbiAgICBSZWdFeHA6IGluc3BlY3RSZWdFeHAsXG4gICAgUHJvbWlzZTogZ2V0UHJvbWlzZVZhbHVlLFxuICAgIC8vIFdlYWtTZXQsIFdlYWtNYXAgYXJlIHRvdGFsbHkgb3BhcXVlIHRvIHVzXG4gICAgV2Vha1NldDogKHZhbHVlLCBvcHRpb25zKSA9PiBvcHRpb25zLnN0eWxpemUoJ1dlYWtTZXR74oCmfScsICdzcGVjaWFsJyksXG4gICAgV2Vha01hcDogKHZhbHVlLCBvcHRpb25zKSA9PiBvcHRpb25zLnN0eWxpemUoJ1dlYWtNYXB74oCmfScsICdzcGVjaWFsJyksXG4gICAgQXJndW1lbnRzOiBpbnNwZWN0QXJndW1lbnRzLFxuICAgIEludDhBcnJheTogaW5zcGVjdFR5cGVkQXJyYXksXG4gICAgVWludDhBcnJheTogaW5zcGVjdFR5cGVkQXJyYXksXG4gICAgVWludDhDbGFtcGVkQXJyYXk6IGluc3BlY3RUeXBlZEFycmF5LFxuICAgIEludDE2QXJyYXk6IGluc3BlY3RUeXBlZEFycmF5LFxuICAgIFVpbnQxNkFycmF5OiBpbnNwZWN0VHlwZWRBcnJheSxcbiAgICBJbnQzMkFycmF5OiBpbnNwZWN0VHlwZWRBcnJheSxcbiAgICBVaW50MzJBcnJheTogaW5zcGVjdFR5cGVkQXJyYXksXG4gICAgRmxvYXQzMkFycmF5OiBpbnNwZWN0VHlwZWRBcnJheSxcbiAgICBGbG9hdDY0QXJyYXk6IGluc3BlY3RUeXBlZEFycmF5LFxuICAgIEdlbmVyYXRvcjogKCkgPT4gJycsXG4gICAgRGF0YVZpZXc6ICgpID0+ICcnLFxuICAgIEFycmF5QnVmZmVyOiAoKSA9PiAnJyxcbiAgICBFcnJvcjogaW5zcGVjdE9iamVjdCxcbiAgICBIVE1MQ29sbGVjdGlvbjogaW5zcGVjdE5vZGVDb2xsZWN0aW9uLFxuICAgIE5vZGVMaXN0OiBpbnNwZWN0Tm9kZUNvbGxlY3Rpb24sXG59O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmNvbnN0IGluc3BlY3RDdXN0b20gPSAodmFsdWUsIG9wdGlvbnMsIHR5cGUsIGluc3BlY3RGbikgPT4ge1xuICAgIGlmIChjaGFpSW5zcGVjdCBpbiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWVbY2hhaUluc3BlY3RdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVtjaGFpSW5zcGVjdF0ob3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChub2RlSW5zcGVjdCBpbiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWVbbm9kZUluc3BlY3RdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVtub2RlSW5zcGVjdF0ob3B0aW9ucy5kZXB0aCwgb3B0aW9ucywgaW5zcGVjdEZuKTtcbiAgICB9XG4gICAgaWYgKCdpbnNwZWN0JyBpbiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUuaW5zcGVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdmFsdWUuaW5zcGVjdChvcHRpb25zLmRlcHRoLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKCdjb25zdHJ1Y3RvcicgaW4gdmFsdWUgJiYgY29uc3RydWN0b3JNYXAuaGFzKHZhbHVlLmNvbnN0cnVjdG9yKSkge1xuICAgICAgICByZXR1cm4gY29uc3RydWN0b3JNYXAuZ2V0KHZhbHVlLmNvbnN0cnVjdG9yKSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChzdHJpbmdUYWdNYXBbdHlwZV0pIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZ1RhZ01hcFt0eXBlXSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn07XG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gaW5zcGVjdCQxKHZhbHVlLCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBvcHRpb25zID0gbm9ybWFsaXNlT3B0aW9ucyhvcHRzLCBpbnNwZWN0JDEpO1xuICAgIGNvbnN0IHsgY3VzdG9tSW5zcGVjdCB9ID0gb3B0aW9ucztcbiAgICBsZXQgdHlwZSA9IHZhbHVlID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHZhbHVlO1xuICAgIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICB0eXBlID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpO1xuICAgIH1cbiAgICAvLyBJZiBpdCBpcyBhIGJhc2UgdmFsdWUgdGhhdCB3ZSBhbHJlYWR5IHN1cHBvcnQsIHRoZW4gdXNlIExvdXBlJ3MgaW5zcGVjdG9yXG4gICAgaWYgKHR5cGUgaW4gYmFzZVR5cGVzTWFwKSB7XG4gICAgICAgIHJldHVybiBiYXNlVHlwZXNNYXBbdHlwZV0odmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyBJZiBgb3B0aW9ucy5jdXN0b21JbnNwZWN0YCBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHRyeSB0byB1c2UgdGhlIGN1c3RvbSBpbnNwZWN0b3JcbiAgICBpZiAoY3VzdG9tSW5zcGVjdCAmJiB2YWx1ZSkge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBpbnNwZWN0Q3VzdG9tKHZhbHVlLCBvcHRpb25zLCB0eXBlLCBpbnNwZWN0JDEpO1xuICAgICAgICBpZiAob3V0cHV0KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG91dHB1dCA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgIHJldHVybiBpbnNwZWN0JDEob3V0cHV0LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBwcm90byA9IHZhbHVlID8gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA6IGZhbHNlO1xuICAgIC8vIElmIGl0J3MgYSBwbGFpbiBPYmplY3QgdGhlbiB1c2UgTG91cGUncyBpbnNwZWN0b3JcbiAgICBpZiAocHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUgfHwgcHJvdG8gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGluc3BlY3RPYmplY3QkMSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIFNwZWNpZmljYWxseSBhY2NvdW50IGZvciBIVE1MRWxlbWVudHNcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBpbnNwZWN0SFRNTCh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmICgnY29uc3RydWN0b3InIGluIHZhbHVlKSB7XG4gICAgICAgIC8vIElmIGl0IGlzIGEgY2xhc3MsIGluc3BlY3QgaXQgbGlrZSBhbiBvYmplY3QgYnV0IGFkZCB0aGUgY29uc3RydWN0b3IgbmFtZVxuICAgICAgICBpZiAodmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RDbGFzcyh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgaXQgaXMgYW4gb2JqZWN0IHdpdGggYW4gYW5vbnltb3VzIHByb3RvdHlwZSwgZGlzcGxheSBpdCBhcyBhbiBvYmplY3QuXG4gICAgICAgIHJldHVybiBpbnNwZWN0T2JqZWN0JDEodmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyBsYXN0IGNoYW5jZSB0byBjaGVjayBpZiBpdCdzIGFuIG9iamVjdFxuICAgIGlmICh2YWx1ZSA9PT0gT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaW5zcGVjdE9iamVjdCQxKHZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgLy8gV2UgaGF2ZSBydW4gb3V0IG9mIG9wdGlvbnMhIEp1c3Qgc3RyaW5naWZ5IHRoZSB2YWx1ZVxuICAgIHJldHVybiBvcHRpb25zLnN0eWxpemUoU3RyaW5nKHZhbHVlKSwgdHlwZSk7XG59XG5cbmNvbnN0IHsgQXN5bW1ldHJpY01hdGNoZXIsIERPTUNvbGxlY3Rpb24sIERPTUVsZW1lbnQsIEltbXV0YWJsZSwgUmVhY3RFbGVtZW50LCBSZWFjdFRlc3RDb21wb25lbnQgfSA9IHBsdWdpbnM7XG5jb25zdCBQTFVHSU5TID0gW1xuXHRSZWFjdFRlc3RDb21wb25lbnQsXG5cdFJlYWN0RWxlbWVudCxcblx0RE9NRWxlbWVudCxcblx0RE9NQ29sbGVjdGlvbixcblx0SW1tdXRhYmxlLFxuXHRBc3ltbWV0cmljTWF0Y2hlclxuXTtcbmZ1bmN0aW9uIHN0cmluZ2lmeShvYmplY3QsIG1heERlcHRoID0gMTAsIHsgbWF4TGVuZ3RoLCBmaWx0ZXJOb2RlLCAuLi5vcHRpb25zIH0gPSB7fSkge1xuXHRjb25zdCBNQVhfTEVOR1RIID0gbWF4TGVuZ3RoID8/IDFlNDtcblx0bGV0IHJlc3VsdDtcblx0Ly8gQ29udmVydCBzdHJpbmcgc2VsZWN0b3IgdG8gZmlsdGVyIGZ1bmN0aW9uXG5cdGNvbnN0IGZpbHRlckZuID0gdHlwZW9mIGZpbHRlck5vZGUgPT09IFwic3RyaW5nXCIgPyBjcmVhdGVOb2RlRmlsdGVyRnJvbVNlbGVjdG9yKGZpbHRlck5vZGUpIDogZmlsdGVyTm9kZTtcblx0Y29uc3QgcGx1Z2lucyA9IGZpbHRlckZuID8gW1xuXHRcdFJlYWN0VGVzdENvbXBvbmVudCxcblx0XHRSZWFjdEVsZW1lbnQsXG5cdFx0Y3JlYXRlRE9NRWxlbWVudEZpbHRlcihmaWx0ZXJGbiksXG5cdFx0RE9NQ29sbGVjdGlvbixcblx0XHRJbW11dGFibGUsXG5cdFx0QXN5bW1ldHJpY01hdGNoZXJcblx0XSA6IFBMVUdJTlM7XG5cdHRyeSB7XG5cdFx0cmVzdWx0ID0gZm9ybWF0JDEob2JqZWN0LCB7XG5cdFx0XHRtYXhEZXB0aCxcblx0XHRcdGVzY2FwZVN0cmluZzogZmFsc2UsXG5cdFx0XHRwbHVnaW5zLFxuXHRcdFx0Li4ub3B0aW9uc1xuXHRcdH0pO1xuXHR9IGNhdGNoIHtcblx0XHRyZXN1bHQgPSBmb3JtYXQkMShvYmplY3QsIHtcblx0XHRcdGNhbGxUb0pTT046IGZhbHNlLFxuXHRcdFx0bWF4RGVwdGgsXG5cdFx0XHRlc2NhcGVTdHJpbmc6IGZhbHNlLFxuXHRcdFx0cGx1Z2lucyxcblx0XHRcdC4uLm9wdGlvbnNcblx0XHR9KTtcblx0fVxuXHQvLyBQcmV2ZW50cyBpbmZpbml0ZSBsb29wIGh0dHBzOi8vZ2l0aHViLmNvbS92aXRlc3QtZGV2L3ZpdGVzdC9pc3N1ZXMvNzI0OVxuXHRyZXR1cm4gcmVzdWx0Lmxlbmd0aCA+PSBNQVhfTEVOR1RIICYmIG1heERlcHRoID4gMSA/IHN0cmluZ2lmeShvYmplY3QsIE1hdGguZmxvb3IoTWF0aC5taW4obWF4RGVwdGgsIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSAvIDIpLCB7XG5cdFx0bWF4TGVuZ3RoLFxuXHRcdGZpbHRlck5vZGUsXG5cdFx0Li4ub3B0aW9uc1xuXHR9KSA6IHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU5vZGVGaWx0ZXJGcm9tU2VsZWN0b3Ioc2VsZWN0b3IpIHtcblx0Y29uc3QgRUxFTUVOVF9OT0RFID0gMTtcblx0Y29uc3QgQ09NTUVOVF9OT0RFID0gODtcblx0cmV0dXJuIChub2RlKSA9PiB7XG5cdFx0Ly8gRmlsdGVyIG91dCBjb21tZW50c1xuXHRcdGlmIChub2RlLm5vZGVUeXBlID09PSBDT01NRU5UX05PREUpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Ly8gRmlsdGVyIG91dCBlbGVtZW50cyBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcblx0XHRpZiAobm9kZS5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFICYmIG5vZGUubWF0Y2hlcykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuICFub2RlLm1hdGNoZXMoc2VsZWN0b3IpO1xuXHRcdFx0fSBjYXRjaCB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fTtcbn1cbmNvbnN0IGZvcm1hdFJlZ0V4cCA9IC8lW3Nkamlmb09jJV0vZztcbmZ1bmN0aW9uIGJhc2VGb3JtYXQoYXJncywgb3B0aW9ucyA9IHt9KSB7XG5cdGNvbnN0IGZvcm1hdEFyZyA9IChpdGVtLCBpbnNwZWNPcHRpb25zKSA9PiB7XG5cdFx0aWYgKG9wdGlvbnMucHJldHRpZnlPYmplY3QpIHtcblx0XHRcdHJldHVybiBzdHJpbmdpZnkoaXRlbSwgdW5kZWZpbmVkLCB7XG5cdFx0XHRcdHByaW50QmFzaWNQcm90b3R5cGU6IGZhbHNlLFxuXHRcdFx0XHRlc2NhcGVTdHJpbmc6IGZhbHNlXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGluc3BlY3QoaXRlbSwgaW5zcGVjT3B0aW9ucyk7XG5cdH07XG5cdGlmICh0eXBlb2YgYXJnc1swXSAhPT0gXCJzdHJpbmdcIikge1xuXHRcdGNvbnN0IG9iamVjdHMgPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdG9iamVjdHMucHVzaChmb3JtYXRBcmcoYXJnc1tpXSwge1xuXHRcdFx0XHRkZXB0aDogMCxcblx0XHRcdFx0Y29sb3JzOiBmYWxzZVxuXHRcdFx0fSkpO1xuXHRcdH1cblx0XHRyZXR1cm4gb2JqZWN0cy5qb2luKFwiIFwiKTtcblx0fVxuXHRjb25zdCBsZW4gPSBhcmdzLmxlbmd0aDtcblx0bGV0IGkgPSAxO1xuXHRjb25zdCB0ZW1wbGF0ZSA9IGFyZ3NbMF07XG5cdGxldCBzdHIgPSBTdHJpbmcodGVtcGxhdGUpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCAoeCkgPT4ge1xuXHRcdGlmICh4ID09PSBcIiUlXCIpIHtcblx0XHRcdHJldHVybiBcIiVcIjtcblx0XHR9XG5cdFx0aWYgKGkgPj0gbGVuKSB7XG5cdFx0XHRyZXR1cm4geDtcblx0XHR9XG5cdFx0c3dpdGNoICh4KSB7XG5cdFx0XHRjYXNlIFwiJXNcIjoge1xuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IGFyZ3NbaSsrXTtcblx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikge1xuXHRcdFx0XHRcdHJldHVybiBgJHt2YWx1ZS50b1N0cmluZygpfW5gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkge1xuXHRcdFx0XHRcdHJldHVybiBcIi0wXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUudG9TdHJpbmcgPT09IFwiZnVuY3Rpb25cIiAmJiB2YWx1ZS50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBmb3JtYXRBcmcodmFsdWUsIHtcblx0XHRcdFx0XHRcdGRlcHRoOiAwLFxuXHRcdFx0XHRcdFx0Y29sb3JzOiBmYWxzZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBTdHJpbmcodmFsdWUpO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIiVkXCI6IHtcblx0XHRcdFx0Y29uc3QgdmFsdWUgPSBhcmdzW2krK107XG5cdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gYCR7dmFsdWUudG9TdHJpbmcoKX1uYDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcInN5bWJvbFwiKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiTmFOXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKTtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCIlaVwiOiB7XG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gYXJnc1tpKytdO1xuXHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcImJpZ2ludFwiKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGAke3ZhbHVlLnRvU3RyaW5nKCl9bmA7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIE51bWJlci5wYXJzZUludChTdHJpbmcodmFsdWUpKS50b1N0cmluZygpO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIiVmXCI6IHJldHVybiBOdW1iZXIucGFyc2VGbG9hdChTdHJpbmcoYXJnc1tpKytdKSkudG9TdHJpbmcoKTtcblx0XHRcdGNhc2UgXCIlb1wiOiByZXR1cm4gZm9ybWF0QXJnKGFyZ3NbaSsrXSwge1xuXHRcdFx0XHRzaG93SGlkZGVuOiB0cnVlLFxuXHRcdFx0XHRzaG93UHJveHk6IHRydWVcblx0XHRcdH0pO1xuXHRcdFx0Y2FzZSBcIiVPXCI6IHJldHVybiBmb3JtYXRBcmcoYXJnc1tpKytdKTtcblx0XHRcdGNhc2UgXCIlY1wiOiB7XG5cdFx0XHRcdGkrKztcblx0XHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiJWpcIjogdHJ5IHtcblx0XHRcdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0Y29uc3QgbSA9IGVyci5tZXNzYWdlO1xuXHRcdFx0XHRpZiAobS5pbmNsdWRlcyhcImNpcmN1bGFyIHN0cnVjdHVyZVwiKSB8fCBtLmluY2x1ZGVzKFwiY3ljbGljIHN0cnVjdHVyZXNcIikgfHwgbS5pbmNsdWRlcyhcImN5Y2xpYyBvYmplY3RcIikpIHtcblx0XHRcdFx0XHRyZXR1cm4gXCJbQ2lyY3VsYXJdXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhyb3cgZXJyO1xuXHRcdFx0fVxuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIHg7XG5cdFx0fVxuXHR9KTtcblx0Zm9yIChsZXQgeCA9IGFyZ3NbaV07IGkgPCBsZW47IHggPSBhcmdzWysraV0pIHtcblx0XHRpZiAoeCA9PT0gbnVsbCB8fCB0eXBlb2YgeCAhPT0gXCJvYmplY3RcIikge1xuXHRcdFx0c3RyICs9IGAgJHt0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHgudG9TdHJpbmcoKSA6IHh9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3RyICs9IGAgJHtmb3JtYXRBcmcoeCl9YDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHN0cjtcbn1cbmZ1bmN0aW9uIGZvcm1hdCguLi5hcmdzKSB7XG5cdHJldHVybiBiYXNlRm9ybWF0KGFyZ3MpO1xufVxuZnVuY3Rpb24gYnJvd3NlckZvcm1hdCguLi5hcmdzKSB7XG5cdHJldHVybiBiYXNlRm9ybWF0KGFyZ3MsIHsgcHJldHRpZnlPYmplY3Q6IHRydWUgfSk7XG59XG5mdW5jdGlvbiBpbnNwZWN0KG9iaiwgb3B0aW9ucyA9IHt9KSB7XG5cdGlmIChvcHRpb25zLnRydW5jYXRlID09PSAwKSB7XG5cdFx0b3B0aW9ucy50cnVuY2F0ZSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcblx0fVxuXHRyZXR1cm4gaW5zcGVjdCQxKG9iaiwgb3B0aW9ucyk7XG59XG5mdW5jdGlvbiBvYmpEaXNwbGF5KG9iaiwgb3B0aW9ucyA9IHt9KSB7XG5cdGlmICh0eXBlb2Ygb3B0aW9ucy50cnVuY2F0ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdG9wdGlvbnMudHJ1bmNhdGUgPSA0MDtcblx0fVxuXHRjb25zdCBzdHIgPSBpbnNwZWN0KG9iaiwgb3B0aW9ucyk7XG5cdGNvbnN0IHR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTtcblx0aWYgKG9wdGlvbnMudHJ1bmNhdGUgJiYgc3RyLmxlbmd0aCA+PSBvcHRpb25zLnRydW5jYXRlKSB7XG5cdFx0aWYgKHR5cGUgPT09IFwiW29iamVjdCBGdW5jdGlvbl1cIikge1xuXHRcdFx0Y29uc3QgZm4gPSBvYmo7XG5cdFx0XHRyZXR1cm4gIWZuLm5hbWUgPyBcIltGdW5jdGlvbl1cIiA6IGBbRnVuY3Rpb246ICR7Zm4ubmFtZX1dYDtcblx0XHR9IGVsc2UgaWYgKHR5cGUgPT09IFwiW29iamVjdCBBcnJheV1cIikge1xuXHRcdFx0cmV0dXJuIGBbIEFycmF5KCR7b2JqLmxlbmd0aH0pIF1gO1xuXHRcdH0gZWxzZSBpZiAodHlwZSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIikge1xuXHRcdFx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG5cdFx0XHRjb25zdCBrc3RyID0ga2V5cy5sZW5ndGggPiAyID8gYCR7a2V5cy5zcGxpY2UoMCwgMikuam9pbihcIiwgXCIpfSwgLi4uYCA6IGtleXMuam9pbihcIiwgXCIpO1xuXHRcdFx0cmV0dXJuIGB7IE9iamVjdCAoJHtrc3RyfSkgfWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzdHI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCB7IGJyb3dzZXJGb3JtYXQsIGZvcm1hdCwgZm9ybWF0UmVnRXhwLCBpbnNwZWN0LCBvYmpEaXNwbGF5LCBzdHJpbmdpZnkgfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiOztBQUVBLE1BQU0sYUFBYTtDQUNmLE1BQU0sQ0FBQyxLQUFLLElBQUk7Q0FDaEIsS0FBSyxDQUFDLEtBQUssSUFBSTtDQUNmLFFBQVEsQ0FBQyxLQUFLLElBQUk7Q0FDbEIsV0FBVyxDQUFDLEtBQUssSUFBSTtDQUVyQixTQUFTLENBQUMsS0FBSyxJQUFJO0NBQ25CLFFBQVEsQ0FBQyxLQUFLLElBQUk7Q0FDbEIsUUFBUSxDQUFDLEtBQUssSUFBSTtDQUdsQixPQUFPLENBQUMsTUFBTSxJQUFJO0NBQ2xCLEtBQUssQ0FBQyxNQUFNLElBQUk7Q0FDaEIsT0FBTyxDQUFDLE1BQU0sSUFBSTtDQUNsQixRQUFRLENBQUMsTUFBTSxJQUFJO0NBQ25CLE1BQU0sQ0FBQyxNQUFNLElBQUk7Q0FDakIsU0FBUyxDQUFDLE1BQU0sSUFBSTtDQUNwQixNQUFNLENBQUMsTUFBTSxJQUFJO0NBQ2pCLE9BQU8sQ0FBQyxNQUFNLElBQUk7Q0FDbEIsYUFBYSxDQUFDLFFBQVEsSUFBSTtDQUMxQixXQUFXLENBQUMsUUFBUSxJQUFJO0NBQ3hCLGFBQWEsQ0FBQyxRQUFRLElBQUk7Q0FDMUIsY0FBYyxD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