diff --git a/.eslintrc.json b/.eslintrc.json index c33949be69a..7dcc958075c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -519,7 +519,8 @@ "**/vs/workbench/services/**/common/**", "**/vs/workbench/api/**/common/**", "vscode-textmate", - "vscode-oniguruma" + "vscode-oniguruma", + "iconv-lite-umd" ] }, { diff --git a/.github/commands.json b/.github/commands.json index 674eb10e5ea..45e8b89deae 100644 --- a/.github/commands.json +++ b/.github/commands.json @@ -221,6 +221,19 @@ "addLabel": "*caused-by-extension", "comment": "It looks like this is caused by the C++ extension. Please file it with the repository [here](https://github.com/Microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!" }, + { + "type": "comment", + "name": "extCpp", + "allowUsers": [ + "cleidigh", + "usernamehw", + "gjsjohnmurray", + "IllusionMH" + ], + "action": "close", + "addLabel": "*caused-by-extension", + "comment": "It looks like this is caused by the C++ extension. Please file it with the repository [here](https://github.com/Microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!" + }, { "type": "comment", "name": "extTS", diff --git a/.github/workflows/deep-classifier-monitor.yml b/.github/workflows/deep-classifier-monitor.yml index b74d4abca3e..8ecfc4c00b4 100644 --- a/.github/workflows/deep-classifier-monitor.yml +++ b/.github/workflows/deep-classifier-monitor.yml @@ -15,7 +15,7 @@ jobs: path: ./actions - name: Install Actions run: npm install --production --prefix ./actions - - name: "Run Classifier: Scraper" + - name: "Run Classifier: Monitor" uses: ./actions/classifier-deep/monitor with: botName: vscode-triage-bot diff --git a/.github/workflows/deep-classifier-runner.yml b/.github/workflows/deep-classifier-runner.yml index 418723c1ba9..a2ac5ff6fb6 100644 --- a/.github/workflows/deep-classifier-runner.yml +++ b/.github/workflows/deep-classifier-runner.yml @@ -45,5 +45,6 @@ jobs: uses: ./actions/classifier-deep/apply/apply-labels with: configPath: classifier + allowLabels: "needs more info|new release" appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}} token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}} diff --git a/.github/workflows/on-open.yml b/.github/workflows/on-open.yml index 11d498ec4c2..2d6eb4e0748 100644 --- a/.github/workflows/on-open.yml +++ b/.github/workflows/on-open.yml @@ -48,6 +48,14 @@ jobs: mustNotMatch: "^We have written the needed data into your clipboard because it was too large to send\\. Please paste\\.$" comment: "It looks like you're using the VS Code Issue Reporter but did not paste the text generated into the created issue. We've closed this issue, please open a new one containing the text we placed in your clipboard.\n\nHappy Coding!" + - name: Run Clipboard Labeler (Chinese) + uses: ./actions/regex-labeler + with: + appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}} + label: "invalid" + mustNotMatch: "^所需的数据太大,无法直接发送。我们已经将其写入剪贴板,请粘贴。$" + comment: "看起来您正在使用 VS Code 问题报告程序,但是没有将生成的文本粘贴到创建的问题中。我们将关闭这个问题,请使用剪贴板中的内容创建一个新的问题。\n\n祝您使用愉快!" + # source of truth in ./english-please.yml - name: Run English Please uses: ./actions/english-please diff --git a/.github/workflows/rich-navigation.yml b/.github/workflows/rich-navigation.yml index 0becba360d3..d1ac9f09921 100644 --- a/.github/workflows/rich-navigation.yml +++ b/.github/workflows/rich-navigation.yml @@ -13,7 +13,11 @@ jobs: - name: Use Node.js uses: actions/setup-node@v1 - name: Install dependencies - run: yarn install + run: yarn --frozen-lockfile + env: + CHILD_CONCURRENCY: 1 - uses: microsoft/RichCodeNavIndexer@master with: languages: typescript + repo-token: ${{ secrets.GITHUB_TOKEN }} + continue-on-error: true diff --git a/.yarnrc b/.yarnrc index 1406d749d70..4c5125d8923 100644 --- a/.yarnrc +++ b/.yarnrc @@ -1,3 +1,3 @@ disturl "https://atom.io/download/electron" -target "7.3.1" +target "8.3.3" runtime "electron" diff --git a/build/lib/i18n.js b/build/lib/i18n.js index 6ab4c0f5a30..def00ab6cc3 100644 --- a/build/lib/i18n.js +++ b/build/lib/i18n.js @@ -16,7 +16,7 @@ const https = require("https"); const gulp = require("gulp"); const fancyLog = require("fancy-log"); const ansiColors = require("ansi-colors"); -const iconv = require("iconv-lite"); +const iconv = require("iconv-lite-umd"); const NUMBER_OF_CONCURRENT_DOWNLOADS = 4; function log(message, ...rest) { fancyLog(ansiColors.green('[i18n]'), message, ...rest); @@ -1175,9 +1175,10 @@ function createIslFile(originalFilePath, messages, language, innoSetup) { }); const basename = path.basename(originalFilePath); const filePath = `${basename}.${language.id}.isl`; + const encoded = iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage); return new File({ path: filePath, - contents: iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage) + contents: Buffer.from(encoded), }); } function encodeEntities(value) { diff --git a/build/lib/i18n.ts b/build/lib/i18n.ts index b9fb3879872..7e386a7fd6f 100644 --- a/build/lib/i18n.ts +++ b/build/lib/i18n.ts @@ -15,7 +15,7 @@ import * as https from 'https'; import * as gulp from 'gulp'; import * as fancyLog from 'fancy-log'; import * as ansiColors from 'ansi-colors'; -import * as iconv from 'iconv-lite'; +import * as iconv from 'iconv-lite-umd'; const NUMBER_OF_CONCURRENT_DOWNLOADS = 4; @@ -1339,10 +1339,11 @@ function createIslFile(originalFilePath: string, messages: Map, language const basename = path.basename(originalFilePath); const filePath = `${basename}.${language.id}.isl`; + const encoded = iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage); return new File({ path: filePath, - contents: iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage) + contents: Buffer.from(encoded), }); } diff --git a/build/package.json b/build/package.json index 9387a368615..c56762aacad 100644 --- a/build/package.json +++ b/build/package.json @@ -38,7 +38,7 @@ "gulp-bom": "^1.0.0", "gulp-sourcemaps": "^1.11.0", "gulp-uglify": "^3.0.0", - "iconv-lite": "0.6.0", + "iconv-lite-umd": "0.6.3", "mime": "^1.3.4", "minimatch": "3.0.4", "minimist": "^1.2.3", diff --git a/build/yarn.lock b/build/yarn.lock index 5e9265127b3..5c1e7b954ab 100644 --- a/build/yarn.lock +++ b/build/yarn.lock @@ -1415,12 +1415,10 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.0.tgz#66a93b80df0bd05d2a43a7426296b7f91073f125" - integrity sha512-43ZpGYZ9QtuutX5l6WC1DSO8ane9N+Ct5qPLF2OV7vM9abM69gnAbVkh66ibaZd3aOGkoP1ZmringlKhLBkw2Q== - dependencies: - safer-buffer ">= 2.1.2 < 3" +iconv-lite-umd@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.3.tgz#61307cab8ac29939992d0724d3ab8799467f0e97" + integrity sha512-fQ/8XE8reiCZ6t+SX4tX6/tQdV4tThJZv5qtMe5Sk+IWsExz0S2Zd+GiBS5IEPgDxnsmiJSpH67+qzN3FT4lKw== ignore@^5.1.1: version "5.1.2" @@ -2228,11 +2226,6 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - sax@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.2.tgz#735ffaa39a1cff8ffb9598f0223abdb03a9fb2ea" diff --git a/cgmanifest.json b/cgmanifest.json index b1fd733d7ea..7988a56c999 100644 --- a/cgmanifest.json +++ b/cgmanifest.json @@ -6,7 +6,7 @@ "git": { "name": "chromium", "repositoryUrl": "https://chromium.googlesource.com/chromium/src", - "commitHash": "e4745133a1d3745f066e068b8033c6a269b59caf" + "commitHash": "052d3b44972e6d94ef40054d46c150b7cdd7a5d8" } }, "licenseDetail": [ @@ -40,7 +40,7 @@ "SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ], "isOnlyProductionDependency": true, - "version": "78.0.3904.130" + "version": "80.0.3987.165" }, { "component": { @@ -48,11 +48,11 @@ "git": { "name": "nodejs", "repositoryUrl": "https://github.com/nodejs/node", - "commitHash": "787378879acfb212ed4ff824bf9f767a24a5cb43a" + "commitHash": "42cce5a9d0fd905bf4ad7a2528c36572dfb8b5ad" } }, "isOnlyProductionDependency": true, - "version": "12.8.1" + "version": "12.13.0" }, { "component": { @@ -60,12 +60,12 @@ "git": { "name": "electron", "repositoryUrl": "https://github.com/electron/electron", - "commitHash": "bc8fc0d406d32e4c02f3ec9f161deaacbe4f5989" + "commitHash": "87fd06bc96bce8f46ca05b8315657fd230bcac85" } }, "isOnlyProductionDependency": true, "license": "MIT", - "version": "7.3.1" + "version": "8.3.3" }, { "component": { diff --git a/extensions/cpp/cgmanifest.json b/extensions/cpp/cgmanifest.json index 1690f2220d1..070312a63e4 100644 --- a/extensions/cpp/cgmanifest.json +++ b/extensions/cpp/cgmanifest.json @@ -19,7 +19,7 @@ "git": { "name": "textmate/c.tmbundle", "repositoryUrl": "https://github.com/textmate/c.tmbundle", - "commitHash": "9aa365882274ca52f01722f3dbb169b9539a20ee" + "commitHash": "60daf83b9d45329524f7847a75e9298b3aae5805" } }, "licenseDetail": [ @@ -42,4 +42,4 @@ } ], "version": 1 -} +} \ No newline at end of file diff --git a/extensions/cpp/syntaxes/platform.tmLanguage.json b/extensions/cpp/syntaxes/platform.tmLanguage.json index 14fb45016c0..0147e6629a2 100644 --- a/extensions/cpp/syntaxes/platform.tmLanguage.json +++ b/extensions/cpp/syntaxes/platform.tmLanguage.json @@ -4,23 +4,131 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/textmate/c.tmbundle/commit/9aa365882274ca52f01722f3dbb169b9539a20ee", + "version": "https://github.com/textmate/c.tmbundle/commit/60daf83b9d45329524f7847a75e9298b3aae5805", "name": "Platform", "scopeName": "source.c.platform", - "comment": "This file was generated with clang-C using MacOSX10.12.sdk", + "comment": "This file was generated with clang-C using MacOSX10.15.sdk", "patterns": [ + { + "match": "\\bkAudioUnitSubType_3DMixer\\b", + "name": "invalid.deprecated.10.10.support.constant.c" + }, { "match": "\\bkCF(?:CalendarUnitWeek|Gregorian(?:AllUnits|Units(?:Days|Hours|M(?:inutes|onths)|Seconds|Years)))\\b", "name": "invalid.deprecated.10.10.support.constant.cf.c" }, + { + "match": "\\bLS(?:ApplicationParameters|LaunchFSRefSpec)\\b", + "name": "invalid.deprecated.10.10.support.type.c" + }, { "match": "\\bCFGregorian(?:Date|Units)\\b", "name": "invalid.deprecated.10.10.support.type.cf.c" }, { - "match": "\\bkCFURL(?:CustomIconKey|EffectiveIconKey|LabelColorKey)\\b", + "match": "\\bkLSItem(?:ContentType|Display(?:Kind|Name)|Extension(?:IsHidden)?|File(?:Creator|Type)|IsInvisible|QuarantineProperties|RoleHandlerDisplayName)\\b", + "name": "invalid.deprecated.10.10.support.variable.c" + }, + { + "match": "\\bk(?:AudioUnitProperty_(?:3DMixer(?:AttenuationCurve|Distance(?:Atten|Params)|RenderingFlags)|D(?:istanceAttenuationData|opplerShift)|ReverbPreset)|CT(?:Adobe(?:CNS1CharacterCollection|GB1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|CenterTextAlignment|Font(?:A(?:lertHeaderFontType|pplicationFontType)|ControlContentFontType|DefaultOrientation|EmphasizedSystem(?:DetailFontType|FontType)|HorizontalOrientation|LabelFontType|M(?:e(?:nu(?:Item(?:CmdKeyFontType|FontType|MarkFontType)|TitleFontType)|ssageFontType)|ini(?:EmphasizedSystemFontType|SystemFontType))|NoFontType|P(?:aletteFontType|ushButtonFontType)|S(?:mall(?:EmphasizedSystemFontType|SystemFontType|ToolbarFontType)|ystem(?:DetailFontType|FontType))|Tool(?:TipFontType|barFontType)|U(?:serF(?:ixedPitchFontType|ontType)|tilityWindowTitleFontType)|V(?:erticalOrientation|iewsFontType)|WindowTitleFontType)|IdentityMappingCharacterCollection|JustifiedTextAlignment|LeftTextAlignment|NaturalTextAlignment|RightTextAlignment)|LS(?:HandlerOptions(?:Default|IgnoreCreator)|ItemInfo(?:App(?:IsScriptable|Prefers(?:Classic|Native))|ExtensionIsHidden|Is(?:A(?:liasFile|pplication)|C(?:lassicApp|ontainer)|Invisible|NativeApp|P(?:ackage|lainFile)|Symlink|Volume))|Launch(?:InClassic|StartClassic)|Request(?:A(?:ll(?:Flags|Info)|ppTypeFlags)|BasicFlagsOnly|Extension(?:FlagsOnly)?|IconAndKind|TypeCreator)))\\b", + "name": "invalid.deprecated.10.11.support.constant.c" + }, + { + "match": "\\b(?:AUDistanceAttenuationData|LSItemInfoRecord)\\b", + "name": "invalid.deprecated.10.11.support.type.c" + }, + { + "match": "\\bk(?:C(?:F(?:FTPResource(?:Group|Link|Mod(?:Date|e)|Name|Owner|Size|Type)|Stream(?:NetworkServiceTypeVoIP|Property(?:FTP(?:AttemptPersistentConnection|F(?:etchResourceInfo|ileTransferOffset)|P(?:assword|roxy(?:Host|P(?:assword|ort)|User)?)|ResourceSize|Use(?:PassiveMode|rName))|HTTP(?:AttemptPersistentConnection|Final(?:Request|URL)|Proxy(?:Host|Port)?|Re(?:questBytesWrittenCount|sponseHeader)|S(?:Proxy(?:Host|Port)|houldAutoredirect)))))|GImagePropertyExifSubsecTimeOrginal|TCharacterShapeAttributeName)|IOSurfaceIsGlobal|LSSharedFileList(?:Favorite(?:Items|Volumes)|Item(?:BeforeFirst|Hidden|Last)|LoginItemHidden|Recent(?:ApplicationItems|DocumentItems|ItemsMaxAmount|ServerItems)|SessionLoginItems|Volumes(?:ComputerVisible|NetworkVisible))|SecUseNoAuthenticationUI)\\b", + "name": "invalid.deprecated.10.11.support.variable.c" + }, + { + "match": "\\bkLSLaunch(?:HasUntrustedContents|InhibitBGOnly|NoParams)\\b", + "name": "invalid.deprecated.10.12.support.constant.c" + }, + { + "match": "\\bOSSpinLock\\b", + "name": "invalid.deprecated.10.12.support.type.c" + }, + { + "match": "\\bkSC(?:EntNetPPTP|NetworkInterfaceTypePPTP|ValNetInterfaceSubTypePPTP)\\b", + "name": "invalid.deprecated.10.12.support.variable.c" + }, + { + "match": "\\bkCF(?:StreamSocketSecurityLevelSSLv(?:2|3)|URL(?:CustomIconKey|EffectiveIconKey|LabelColorKey))\\b", "name": "invalid.deprecated.10.12.support.variable.cf.c" }, + { + "match": "\\bk(?:C(?:FNetDiagnostic(?:Connection(?:Down|Indeterminate|Up)|Err|NoErr)|TFontManagerAutoActivationPromptUser)|SecAccessControlTouchID(?:Any|CurrentSet))\\b", + "name": "invalid.deprecated.10.13.support.constant.c" + }, + { + "match": "\\bCFNetDiagnosticStatus\\b", + "name": "invalid.deprecated.10.13.support.type.c" + }, + { + "match": "\\bkS(?:CPropNetInterfaceSupportsModemOnHold|SLSessionConfig_(?:3DES_fallback|RC4_fallback|TLSv1_(?:3DES_fallback|RC4_fallback)|default)|ecTrustCertificateTransparencyWhiteList)\\b", + "name": "invalid.deprecated.10.13.support.variable.c" + }, + { + "match": "\\bk(?:CVOpenGL(?:Buffer(?:Height|InternalFormat|MaximumMipmapLevel|PoolM(?:aximumBufferAgeKey|inimumBufferCountKey)|Target|Width)|TextureCacheChromaSamplingMode(?:Automatic|BestPerformance|HighestQuality|Key))|SecAttrAccessibleAlways(?:ThisDeviceOnly)?)\\b", + "name": "invalid.deprecated.10.14.support.variable.c" + }, + { + "match": "\\bk(?:DTLSProtocol1(?:2)?|S(?:SL(?:Aborted|C(?:l(?:ient(?:Cert(?:None|Re(?:jected|quested)|Sent)|Side)|osed)|onnected)|DatagramType|Handshake|Idle|Protocol(?:2|3(?:Only)?|All|Unknown)|S(?:e(?:rverSide|ssionOption(?:Allow(?:Renegotiation|ServerIdentityChange)|BreakOn(?:C(?:ertRequested|lient(?:Auth|Hello))|ServerAuth)|EnableSessionTickets|Fal(?:lback|seStart)|SendOneByteRecord))|treamType))|ecDataAccessEvent(?:Mask)?)|TLSProtocol(?:1(?:1|2|3|Only)?|MaxSupported))\\b", + "name": "invalid.deprecated.10.15.support.constant.c" + }, + { + "match": "\\bk(?:MIDIPropertyNameConfiguration|S(?:CPropNetPPP(?:AuthEAPPlugins|Plugins)|SLSessionConfig_(?:ATSv1(?:_noPFS)?|TLSv1_fallback|anonymous|legacy(?:_DHE)?|standard)))\\b", + "name": "invalid.deprecated.10.15.support.variable.c" + }, + { + "match": "\\bkCGColorSpace(?:DisplayP3_PQ_EOTF|ITUR_2020_PQ_EOTF)\\b", + "name": "invalid.deprecated.10.16.support.variable.quartz.c" + }, + { + "match": "\\bkMIDIProperty(?:FactoryPatchNameFile|UserPatchNameFile)\\b", + "name": "invalid.deprecated.10.2.support.variable.c" + }, + { + "match": "\\bkCFNetServiceFlagIsRegistrationDomain\\b", + "name": "invalid.deprecated.10.4.support.constant.c" + }, + { + "match": "\\bk(?:MDItemFS(?:Exists|Is(?:Readable|Writeable))|S(?:CPropUsersConsoleUser(?:GID|Name|UID)|KLanguageTypes))\\b", + "name": "invalid.deprecated.10.4.support.variable.c" + }, + { + "match": "\\bkMDItemSupportFileType\\b", + "name": "invalid.deprecated.10.5.support.variable.c" + }, + { + "match": "\\b(?:CM(?:2(?:Header|ProfileHandle)|4Header|A(?:daptationMatrixType|ppleProfileHeader)|B(?:itmap(?:C(?:allBack(?:ProcPtr|UPP)|olorSpace))?|ufferLocation)|C(?:MY(?:Color|KColor)|hromaticAdaptation|o(?:lor|ncat(?:CallBack(?:ProcPtr|UPP)|ProfileSet))|urveType)|D(?:at(?:aType|eTime(?:Type)?)|evice(?:I(?:D|nfoPtr)|Profile(?:ArrayPtr|I(?:D|nfo)|Scope)|State)|isplayIDType)|F(?:ixedXY(?:Color|ZColor)|loatBitmap)|GrayColor|H(?:LSColor|SVColor|andleLocation)|I(?:ntentCRDVMSize|terateDevice(?:InfoProcPtr|ProfileProcPtr))|L(?:ab(?:Color|ToLabProcPtr)|u(?:t(?:16Type|8Type)|vColor))|M(?:I(?:nfo|terate(?:ProcPtr|UPP))|akeAndModel(?:Type)?|easurementType|ulti(?:Funct(?:CLUTType|LutB2AType)|LocalizedUniCode(?:EntryRec|Type)|channel(?:5Color|6Color|7Color|8Color)))|Na(?:medColor(?:2(?:EntryType|Type)|Type)?|tiveDisplayInfo(?:Type)?)|P(?:S2CRDVMSizeType|a(?:rametricCurveType|thLocation)|rof(?:Loc|ile(?:Iterate(?:Data|ProcPtr|UPP)|Location|MD5(?:Ptr)?|Ref|SequenceDescType)))|RGBColor|S(?:15Fixed16ArrayType|creening(?:ChannelRec|Type)|ignatureType)|T(?:ag(?:ElemTable|Record)|ext(?:DescriptionType|Type))|U(?:16Fixed16ArrayType|Int(?:16ArrayType|32ArrayType|64ArrayType|8ArrayType)|crBgType|nicodeTextType)|Vi(?:deoCardGamma(?:Formula|T(?:able|ype))?|ewingConditionsType)|WorldRef|XYZType|YxyColor)|NCM(?:ConcatProfileS(?:et|pec)|DeviceProfileInfo))\\b", + "name": "invalid.deprecated.10.6.support.type.c" + }, + { + "match": "\\bkC(?:FStream(?:PropertySSLPeerCertificates|SSLAllows(?:AnyRoot|Expired(?:Certificates|Roots)))|VImageBufferTransferFunction_(?:EBU_3213|SMPTE_C))\\b", + "name": "invalid.deprecated.10.6.support.variable.c" + }, + { + "match": "\\b(?:AudioFileFDFTable(?:Extended)?|C(?:E_(?:A(?:ccessDescription|uthority(?:InfoAccess|KeyID))|BasicConstraints|C(?:RLDist(?:PointsSyntax|ributionPoint)|ertPolicies|rl(?:Dist(?:ReasonFlags|ributionPointNameType)|Reason))|D(?:ata(?:AndType)?|istributionPointName)|General(?:Name(?:s)?|Subtree(?:s)?)|I(?:nhibitAnyPolicy|ssuingDistributionPoint)|KeyUsage|N(?:ame(?:Constraints|RegistrationAuthorities)|etscapeCertType)|OtherName|Policy(?:Constraints|Information|Mapping(?:s)?|QualifierInfo)|QC_Statement(?:s)?|S(?:emanticsInformation|ubjectKeyID))|SSM_(?:A(?:C(?:CESS_CREDENTIALS(?:_PTR)?|L_(?:E(?:DIT(?:_PTR)?|NTRY_(?:IN(?:FO(?:_PTR)?|PUT(?:_PTR)?)|PROTOTYPE(?:_PTR)?))|OWNER_PROTOTYPE(?:_PTR)?|SUBJECT_CALLBACK|VALIDITY_PERIOD(?:_PTR)?))|PI_M(?:EMORY_FUNCS(?:_PTR)?|oduleEventHandler)|UTHORIZATIONGROUP(?:_PTR)?)|BASE_CERTS(?:_PTR)?|C(?:ALLBACK|ERT(?:GROUP(?:_PTR)?|_(?:BUNDLE(?:_(?:HEADER(?:_PTR)?|PTR))?|PAIR(?:_PTR)?))|HALLENGE_CALLBACK|ONTEXT(?:_(?:ATTRIBUTE(?:_PTR)?|PTR))?|R(?:L(?:GROUP(?:_PTR)?|_PAIR(?:_PTR)?)|YPTO_DATA(?:_PTR)?)|SP_OPERATIONAL_STATISTICS(?:_PTR)?)|D(?:AT(?:A_PTR|E(?:_PTR)?)|B(?:INFO(?:_PTR)?|_(?:ATTRIBUTE_(?:DATA(?:_PTR)?|INFO(?:_PTR)?)|INDEX_INFO(?:_PTR)?|PARSING_MODULE_INFO(?:_PTR)?|RECORD_(?:ATTRIBUTE_(?:DATA(?:_PTR)?|INFO(?:_PTR)?)|INDEX_INFO(?:_PTR)?)|SCHEMA_(?:ATTRIBUTE_INFO(?:_PTR)?|INDEX_INFO(?:_PTR)?)|UNIQUE_RECORD(?:_PTR)?))|L_DB_(?:HANDLE(?:_PTR)?|LIST(?:_PTR)?))|E(?:NCODED_C(?:ERT(?:_PTR)?|RL(?:_PTR)?)|VIDENCE(?:_PTR)?)|F(?:IELD(?:GROUP(?:_PTR)?|_PTR)?|UNC_NAME_ADDR(?:_PTR)?)|GUID(?:_PTR)?|K(?:E(?:A_DERIVE_PARAMS(?:_PTR)?|Y(?:HEADER(?:_PTR)?|_(?:PTR|SIZE(?:_PTR)?))?)|R(?:SUBSERVICE(?:_PTR)?|_(?:NAME|P(?:OLICY_(?:INFO(?:_PTR)?|LIST_ITEM(?:_PTR)?)|ROFILE(?:_PTR)?)|WRAPPEDPRODUCT_INFO(?:_PTR)?)))|LIST(?:_(?:ELEMENT|PTR))?|M(?:ANAGER_(?:EVENT_NOTIFICATION(?:_PTR)?|REGISTRATION_INFO(?:_PTR)?)|EMORY_FUNCS(?:_PTR)?|ODULE_FUNCS(?:_PTR)?)|N(?:AME_LIST(?:_PTR)?|ET_ADDRESS(?:_PTR)?)|OID_PTR|P(?:ARSED_C(?:ERT(?:_PTR)?|RL(?:_PTR)?)|KCS(?:1_OAEP_PARAMS(?:_PTR)?|5_PBKDF(?:1_PARAMS(?:_PTR)?|2_PARAMS(?:_PTR)?)))|QUERY(?:_(?:LIMITS(?:_PTR)?|PTR|SIZE_DATA(?:_PTR)?))?|R(?:ANGE(?:_PTR)?|ESOURCE_CONTROL_CONTEXT(?:_PTR)?)|S(?:AMPLE(?:GROUP(?:_PTR)?|_PTR)?|ELECTION_PREDICATE(?:_PTR)?|PI_(?:AC_FUNCS(?:_PTR)?|C(?:L_FUNCS(?:_PTR)?|SP_FUNCS(?:_PTR)?)|DL_FUNCS(?:_PTR)?|KR_FUNCS(?:_PTR)?|ModuleEventHandler|TP_FUNCS(?:_PTR)?)|TATE_FUNCS(?:_PTR)?|UBSERVICE_UID(?:_PTR)?)|T(?:P_(?:A(?:PPLE_EVIDENCE_INFO|UTHORITY_ID(?:_PTR)?)|C(?:ALLERAUTH_CONTEXT(?:_PTR)?|ERT(?:CHANGE_(?:INPUT(?:_PTR)?|OUTPUT(?:_PTR)?)|ISSUE_(?:INPUT(?:_PTR)?|OUTPUT(?:_PTR)?)|NOTARIZE_(?:INPUT(?:_PTR)?|OUTPUT(?:_PTR)?)|RECLAIM_(?:INPUT(?:_PTR)?|OUTPUT(?:_PTR)?)|VERIFY_(?:INPUT(?:_PTR)?|OUTPUT(?:_PTR)?))|ONFIRM_RESPONSE(?:_PTR)?|RLISSUE_(?:INPUT(?:_PTR)?|OUTPUT(?:_PTR)?))|POLICYINFO(?:_PTR)?|RE(?:QUEST_SET(?:_PTR)?|SULT_SET(?:_PTR)?)|VERIF(?:ICATION_RESULTS_CALLBACK|Y_CONTEXT(?:_(?:PTR|RESULT(?:_PTR)?))?))|UPLE(?:GROUP(?:_PTR)?|_PTR)?)|UPCALLS(?:_(?:CALLOC|FREE|MALLOC|PTR|REALLOC))?|VERSION(?:_PTR)?|WRAP_KEY(?:_PTR)?|X509(?:EXT_(?:BASICCONSTRAINTS(?:_PTR)?|P(?:AIR(?:_PTR)?|OLICY(?:INFO(?:_PTR)?|QUALIFIER(?:INFO(?:_PTR)?|S(?:_PTR)?)))|TAGandVALUE(?:_PTR)?)|_(?:ALGORITHM_IDENTIFIER_PTR|EXTENSION(?:S(?:_PTR)?|_PTR)?|NAME(?:_PTR)?|R(?:DN(?:_PTR)?|EVOKED_CERT_(?:ENTRY(?:_PTR)?|LIST(?:_PTR)?))|S(?:IGN(?:ATURE(?:_PTR)?|ED_C(?:ERTIFICATE(?:_PTR)?|RL(?:_PTR)?))|UBJECT_PUBLIC_KEY_INFO_PTR)|T(?:BS_CERT(?:IFICATE(?:_PTR)?|LIST(?:_PTR)?)|IME(?:_PTR)?|YPE_VALUE_PAIR(?:_PTR)?)|VALIDITY(?:_PTR)?))))|MDS_(?:DB_HANDLE|FUNCS(?:_PTR)?)|cssm_(?:ac(?:cess_credentials|l_(?:e(?:dit|ntry_(?:in(?:fo|put)|prototype))|owner_prototype|validity_period))|base_certs|c(?:ert(?:_(?:bundle(?:_header)?|pair)|group)|ontext(?:_attribute)?|r(?:l(?:_pair|group)|ypto_data))|d(?:b(?:_(?:attribute_(?:data|info)|index_info|parsing_module_info|record_(?:attribute_(?:data|info)|index_info)|schema_attribute_info|unique_record)|info)|l_db_list)|e(?:ncoded_c(?:ert|rl)|vidence)|field(?:group)?|k(?:e(?:a_derive_params|y(?:header)?)|r(?:_(?:p(?:olicy_(?:info|list_item)|rofile)|wrappedproductinfo)|subservice))|list_element|m(?:anager_(?:event_notification|registration_info)|odule_funcs)|net_address|pkcs(?:1_oaep_params|5_pbkdf(?:1_params|2_params))|query(?:_limits)?|resource_control_context|s(?:ample(?:group)?|election_predicate|pi_(?:ac_funcs|c(?:l_funcs|sp_funcs)|dl_funcs|kr_funcs|tp_funcs)|tate_funcs|ubservice_uid)|t(?:p_(?:authority_id|c(?:allerauth_context|ert(?:change_(?:input|output)|issue_(?:input|output)|notarize_(?:input|output)|reclaim_(?:input|output)|verify_(?:input|output))|onfirm_response|rlissue_(?:input|output))|policyinfo|request_set|verify_context(?:_result)?)|uplegroup)|upcalls|x509(?:_(?:extension(?:TagAndValue|s)?|name|r(?:dn|evoked_cert_(?:entry|list))|sign(?:ature|ed_c(?:ertificate|rl))|t(?:bs_cert(?:ificate|list)|ime|ype_value_pair))|ext_(?:basicConstraints|p(?:air|olicy(?:Info|Qualifier(?:Info|s))))))|mds_funcs|x509_validity)\\b", + "name": "invalid.deprecated.10.7.support.type.c" + }, + { + "match": "\\b(?:CSSMOID_(?:A(?:D(?:C_CERT_POLICY|_(?:CA_(?:ISSUERS|REPOSITORY)|OCSP|TIME_STAMPING))|NSI_(?:DH_(?:EPHEM(?:_SHA1)?|HYBRID(?:1(?:_SHA1)?|2(?:_SHA1)?|_ONEFLOW)|ONE_FLOW(?:_SHA1)?|PUB_NUMBER|STATIC(?:_SHA1)?)|MQV(?:1(?:_SHA1)?|2(?:_SHA1)?))|PPLE(?:ID_(?:CERT_POLICY|SHARING_CERT_POLICY)|_(?:ASC|CERT_POLICY|E(?:CDSA|KU_(?:CODE_SIGNING(?:_DEV)?|ICHAT_(?:ENCRYPTION|SIGNING)|P(?:ASSBOOK_SIGNING|ROFILE_SIGNING)|QA_PROFILE_SIGNING|RESOURCE_SIGNING|SYSTEM_IDENTITY)|XTENSION(?:_(?:A(?:AI_INTERMEDIATE|DC_(?:APPLE_SIGNING|DEV_SIGNING)|PPLE(?:ID_(?:INTERMEDIATE|SHARING)|_SIGNING))|CODE_SIGNING|DEVELOPER_AUTHENTICATION|ESCROW_SERVICE|I(?:NTERMEDIATE_MARKER|TMS_INTERMEDIATE)|MACAPPSTORE_RECEIPT|P(?:ASSBOOK_SIGNING|ROVISIONING_PROFILE_SIGNING)|S(?:ERVER_AUTHENTICATION|YSINT2_INTERMEDIATE)|WWDR_INTERMEDIATE))?)|FEE(?:D(?:EXP)?|_(?:MD5|SHA1))?|ISIGN|TP_(?:APPLEID_SHARING|C(?:ODE_SIGN(?:ING)?|SR_GEN)|E(?:AP|SCROW_SERVICE)|I(?:CHAT|P_SEC)|LOCAL_CERT_GEN|M(?:ACAPPSTORE_RECEIPT|OBILE_STORE)|P(?:A(?:CKAGE_SIGNING|SSBOOK_SIGNING)|CS_ESCROW_SERVICE|KINIT_(?:CLIENT|SERVER)|RO(?:FILE_SIGNING|VISIONING_PROFILE_SIGNING))|QA_PROFILE_SIGNING|RE(?:SOURCE_SIGN|VOCATION(?:_(?:CRL|OCSP))?)|S(?:MIME|SL|W_UPDATE_SIGNING)|T(?:EST_MOBILE_STORE|IMESTAMPING))|X509_BASIC))|liasedEntryName|uthority(?:InfoAccess|KeyIdentifier|RevocationList))|B(?:asicConstraints|iometricInfo|usinessCategory)|C(?:ACertificate|SSMKeyStruct|ert(?:Issuer|i(?:com(?:EllCurve)?|ficate(?:Policies|RevocationList)))|hallengePassword|lientAuth|o(?:llective(?:FacsimileTelephoneNumber|InternationalISDNNumber|Organization(?:Name|alUnitName)|P(?:hysicalDeliveryOfficeName|ost(?:OfficeBox|al(?:Address|Code)))|St(?:ateProvinceName|reetAddress)|Tele(?:phoneNumber|x(?:Number|TerminalIdentifier)))|mmonName|ntentType|unt(?:erSignature|ryName))|r(?:l(?:DistributionPoints|Number|Reason)|ossCertificatePair))|D(?:ES_CBC|H|NQualifier|OTMAC_CERT(?:_(?:E(?:MAIL_(?:ENCRYPT|SIGN)|XTENSION)|IDENTITY|POLICY|REQ(?:_(?:ARCHIVE_(?:FETCH|LIST|REMOVE|STORE)|EMAIL_(?:ENCRYPT|SIGN)|IDENTITY|SHARED_SERVICES|VALUE_(?:ASYNC|HOSTNAME|IS_PENDING|PASSWORD|RENEW|USERNAME)))?))?|SA(?:_(?:CMS|JDK))?|e(?:ltaCrlIndicator|s(?:cription|tinationIndicator))|istinguishedName|omainComponent)|E(?:CDSA_WithS(?:HA(?:1|2(?:24|56)|384|512)|pecified)|KU_IPSec|TSI_QCS_QC_(?:COMPLIANCE|LIMIT_VALUE|RETENTION|SSCD)|mail(?:Address|Protection)|nhancedSearchGuide|xtended(?:CertificateAttributes|KeyUsage(?:Any)?|UseCodeSigning))|FacsimileTelephoneNumber|G(?:enerationQualifier|ivenName)|Ho(?:ldInstructionCode|useIdentifier)|I(?:n(?:hibitAnyPolicy|itials|ternationalISDNNumber|validityDate)|ssu(?:erAltName|ingDistributionPoint(?:s)?))|K(?:ERBv5_PKINIT_(?:AUTH_DATA|DH_KEY_DATA|KP_(?:CLIENT_AUTH|KDC)|RKEY_DATA)|eyUsage|nowledgeInformation)|LocalityName|M(?:ACAPPSTORE_(?:CERT_POLICY|RECEIPT_CERT_POLICY)|D(?:2(?:WithRSA)?|4(?:WithRSA)?|5(?:WithRSA)?)|OBILE_STORE_SIGNING_POLICY|e(?:mber|ssageDigest)|icrosoftSGC)|N(?:ame(?:Constraints)?|etscape(?:Cert(?:Sequence|Type)|SGC))|O(?:AEP_(?:ID_PSPECIFIED|MGF1)|CSPSigning|ID_QCS_SYNTAX_V(?:1|2)|bjectClass|rganization(?:Name|alUnitName)|wner)|P(?:DA_(?:COUNTRY_(?:CITIZEN|RESIDENCE)|DATE_OF_BIRTH|GENDER|PLACE_OF_BIRTH)|K(?:CS(?:12_(?:c(?:ertBag|rlBag)|keyBag|pbe(?:WithSHAAnd(?:128BitRC(?:2CBC|4)|2Key3DESCBC|3Key3DESCBC|40BitRC4)|withSHAAnd40BitRC2CBC)|s(?:afeContentsBag|ecretBag|hroudedKeyBag))|3|5_(?:D(?:ES_EDE3_CBC|IGEST_ALG)|ENCRYPT_ALG|HMAC_SHA1|PB(?:ES2|KDF2|MAC1)|RC(?:2_CBC|5_CBC)|pbeWith(?:MD(?:2And(?:DES|RC2)|5And(?:DES|RC2))|SHA1And(?:DES|RC2)))|7_(?:D(?:ata(?:WithAttributes)?|igestedData)|En(?:crypted(?:Data|PrivateKeyInfo)|velopedData)|Signed(?:AndEnvelopedData|Data))|9_(?:C(?:ertTypes|rlTypes)|FriendlyName|Id_Ct_TSTInfo|LocalKeyId|SdsiCertificate|TimeStampToken|X509C(?:ertificate|rl)))|IX_OCSP(?:_(?:ARCHIVE_CUTOFF|BASIC|CRL|NO(?:CHECK|NCE)|RESPONSE|SERVICE_LOCATOR))?)|hysicalDeliveryOfficeName|o(?:licy(?:Constraints|Mappings)|st(?:OfficeBox|al(?:Address|Code)))|r(?:e(?:ferredDeliveryMethod|sentationAddress)|ivateKeyUsagePeriod|otocolInformation))|Q(?:C_Statements|T_(?:CPS|UNOTICE))|R(?:SA(?:WithOAEP)?|egisteredAddress|oleOccupant)|S(?:HA(?:1(?:With(?:DSA(?:_(?:CMS|JDK))?|RSA(?:_OIW)?))?|2(?:24(?:WithRSA)?|56(?:WithRSA)?)|384(?:WithRSA)?|512(?:WithRSA)?)|e(?:archGuide|eAlso|r(?:ialNumber|verAuth))|igningTime|t(?:ateProvinceName|reetAddress)|u(?:bject(?:AltName|DirectoryAttributes|EmailAddress|InfoAccess|KeyIdentifier|Picture|SignatureBitmap)|pportedApplicationContext|rname))|T(?:EST_MOBILE_STORE_SIGNING_POLICY|ele(?:phoneNumber|x(?:Number|TerminalIdentifier))|i(?:meStamping|tle))|U(?:n(?:ique(?:Identifier|Member)|structured(?:Address|Name))|se(?:Exemptions|r(?:Certificate|ID|Password)))|X(?:509V(?:1(?:C(?:RL(?:Issuer(?:Name(?:CStruct|LDAP)|Struct)|N(?:extUpdate|umberOfRevokedCertEntries)|Revoked(?:Certificates(?:CStruct|Struct)|Entry(?:CStruct|RevocationDate|S(?:erialNumber|truct)))|ThisUpdate)|ertificate(?:IssuerUniqueId|SubjectUniqueId))|IssuerName(?:CStruct|LDAP|Std)?|S(?:erialNumber|ignature(?:Algorithm(?:Parameters|TBS)?|CStruct|Struct)?|ubject(?:Name(?:CStruct|LDAP|Std)?|PublicKey(?:Algorithm(?:Parameters)?|CStruct)?))|V(?:alidityNot(?:After|Before)|ersion))|2CRL(?:AllExtensions(?:CStruct|Struct)|Extension(?:Critical|Id|Type)|NumberOfExtensions|RevokedEntry(?:AllExtensions(?:CStruct|Struct)|Extension(?:Critical|Id|Type|Value)|NumberOfExtensions|SingleExtension(?:CStruct|Struct))|Si(?:gnedCrl(?:CStruct|Struct)|ngleExtension(?:CStruct|Struct))|TbsCertList(?:CStruct|Struct)|Version)|3(?:Certificate(?:CStruct|Extension(?:C(?:Struct|ritical)|Id|Struct|Type|Value|s(?:CStruct|Struct))|NumberOfExtensions)?|SignedCertificate(?:CStruct)?))|9_62(?:_(?:C_TwoCurve|EllCurve|FieldType|P(?:rimeCurve|ubKeyType)|SigType))?|_121Address)|ecPublicKey|sec(?:p(?:1(?:12r(?:1|2)|28r(?:1|2)|60(?:k1|r(?:1|2))|92(?:k1|r1))|2(?:24(?:k1|r1)|56(?:k1|r1))|384r1|521r1)|t(?:1(?:13r(?:1|2)|31r(?:1|2)|63(?:k1|r(?:1|2))|93r(?:1|2))|2(?:3(?:3(?:k1|r1)|9k1)|83(?:k1|r1))|409(?:k1|r1)|571(?:k1|r1))))|k(?:MDItemLabel(?:I(?:D|con)|Kind|UUID)|SCPropNetSMBNetBIOSScope))\\b", + "name": "invalid.deprecated.10.7.support.variable.c" + }, + { + "match": "\\b(?:false32b|gestaltSystemVersion(?:BugFix|M(?:ajor|inor))?|kCT(?:FontTableOptionExcludeSynthetic|ParagraphStyleSpecifierLineSpacing)|true32b)\\b", + "name": "invalid.deprecated.10.8.support.constant.c" + }, + { + "match": "\\bWSMethodInvocation(?:CallBackProcPtr|DeserializationProcPtr|SerializationProcPtr)\\b", + "name": "invalid.deprecated.10.8.support.type.c" + }, + { + "match": "\\b(?:k(?:CTTypesetterOptionDisableBidiProcessing|FSOperation(?:Bytes(?:CompleteKey|RemainingKey)|Objects(?:CompleteKey|RemainingKey)|T(?:hroughputKey|otal(?:BytesKey|ObjectsKey|UserVisibleObjectsKey))|UserVisibleObjects(?:CompleteKey|RemainingKey))|LSSharedFileListVolumesIDiskVisible|WS(?:Debug(?:Incoming(?:Body|Headers)|Outgoing(?:Body|Headers))|Fault(?:Code|Extra|String)|HTTP(?:ExtraHeaders|FollowsRedirects|Message|Proxy|ResponseMessage|Version)|MethodInvocation(?:Result(?:ParameterName)?|TimeoutValue)|NetworkStreamFaultString|Record(?:NamespaceURI|ParameterOrder|Type)|S(?:OAP(?:1999Protocol|2001Protocol|BodyEncodingStyle|Me(?:ssageHeaders|thodNamespaceURI)|Style(?:Doc|RPC))|treamError(?:Domain|Error|Message))|XMLRPCProtocol))|pi)\\b", + "name": "invalid.deprecated.10.8.support.variable.c" + }, { "match": "\\bkCFURLUbiquitousItemPercent(?:DownloadedKey|UploadedKey)\\b", "name": "invalid.deprecated.10.8.support.variable.cf.c" @@ -29,6 +137,10 @@ "match": "\\bkCGWindowWorkspace\\b", "name": "invalid.deprecated.10.8.support.variable.quartz.c" }, + { + "match": "\\bk(?:AUVoiceIOProperty_VoiceProcessingQuality|Sec(?:AppleSharePasswordItemClass|TrustResultConfirm))\\b", + "name": "invalid.deprecated.10.9.support.constant.c" + }, { "match": "\\bkCFURL(?:BookmarkCreationPreferFileIDResolutionMask|HFSPathStyle|ImproperArgumentsError|PropertyKeyUnavailableError|Re(?:moteHostUnavailableError|source(?:AccessViolationError|NotFoundError))|TimeoutError|Unknown(?:Error|PropertyKeyError|SchemeError))\\b", "name": "invalid.deprecated.10.9.support.constant.cf.c" @@ -38,17 +150,57 @@ "name": "invalid.deprecated.10.9.support.constant.quartz.c" }, { - "match": "\\bCFURLError\\b", - "name": "invalid.deprecated.10.9.support.type.cf.c" + "match": "\\bSecTrustUserSetting\\b", + "name": "invalid.deprecated.10.9.support.type.c" }, { - "match": "\\bCGTextEncoding\\b", - "name": "invalid.deprecated.10.9.support.type.quartz.c" + "match": "\\b(?:XPC_ACTIVITY_REQUIRE_(?:BATTERY_LEVEL|HDD_SPINNING)|k(?:LSSharedFileListGlobalLoginItems|S(?:C(?:PropNetAirPort(?:A(?:llowNetCreation|uthPassword(?:Encryption)?)|JoinMode|P(?:owerEnabled|referredNetwork)|SavePasswords)|ValNetAirPort(?:AuthPasswordEncryptionKeychain|JoinMode(?:Automatic|Preferred|R(?:anked|ecent)|Strongest)))|ecPolicyAppleiChat)))\\b", + "name": "invalid.deprecated.10.9.support.variable.c" }, { "match": "\\bkCFURL(?:File(?:DirectoryContents|Exists|L(?:astModificationTime|ength)|OwnerID|POSIXMode)|HTTPStatus(?:Code|Line)|UbiquitousItemIsDownloadedKey)\\b", "name": "invalid.deprecated.10.9.support.variable.cf.c" }, + { + "match": "\\bk3DMixerParam_(?:GlobalReverbGain|M(?:axGain|inGain)|O(?:bstructionAttenuation|cclusionAttenuation)|ReverbBlend)\\b", + "name": "invalid.deprecated.tba.support.constant.c" + }, + { + "match": "\\bkQL(?:Preview(?:ContentIDScheme|OptionCursorKey|Property(?:Attachment(?:DataKey|sKey)|BaseBundlePathKey|CursorKey|DisplayNameKey|HeightKey|MIMETypeKey|PDFStyleKey|StringEncodingKey|WidthKey))|ThumbnailProperty(?:Ba(?:dgeImageKey|seBundlePathKey)|ExtensionKey))\\b", + "name": "invalid.deprecated.tba.support.variable.c" + }, + { + "match": "\\b(?:QOS_CLASS_(?:BACKGROUND|DEFAULT|U(?:NSPECIFIED|SER_IN(?:ITIATED|TERACTIVE)|TILITY))|k(?:C(?:GLCP(?:AbortOnGPURestartStatusBlacklisted|ContextPriorityRequest|GPURestartStatus|Support(?:GPURestart|SeparateAddressSpace))|TRuby(?:Alignment(?:Auto|Center|Distribute(?:Letter|Space)|End|Invalid|LineEdge|Start)|Overhang(?:Auto|End|Invalid|None|Start)|Position(?:After|Before|Count|In(?:line|terCharacter))))|FSEventStreamEventFlagItemIs(?:Hardlink|LastHardlink)|SecAccessControlUserPresence))\\b", + "name": "support.constant.10.10.c" + }, + { + "match": "\\bk(?:A(?:XValueType(?:AXError|C(?:FRange|G(?:Point|Rect|Size))|Illegal)|udioComponent(?:Flag_(?:CanLoadInProcess|IsV3AudioUnit|RequiresAsyncInstantiation)|Instantiation_Load(?:InProcess|OutOfProcess)))|SecAccessControlDevicePasscode)\\b", + "name": "support.constant.10.11.c" + }, + { + "match": "\\bkSec(?:AccessControl(?:A(?:nd|pplicationPassword)|Or|PrivateKeyUsage)|KeyOperationType(?:Decrypt|Encrypt|KeyExchange|Sign|Verify))\\b", + "name": "support.constant.10.12.c" + }, + { + "match": "\\bk(?:CGLRPRe(?:gistryID(?:High|Low)|movable)|FSEventStream(?:CreateFlagUseExtendedData|EventFlagItemCloned)|SecAccessControlBiometry(?:Any|CurrentSet))\\b", + "name": "support.constant.10.13.c" + }, + { + "match": "\\bk(?:3DMixerParam_(?:BusEnable|DryWetReverbBlend|GlobalReverbGainInDecibels|M(?:axGainInDecibels|inGainInDecibels)|O(?:bstructionAttenuationInDecibels|cclusionAttenuationInDecibels))|AudioQueueProperty_ChannelAssignments|JSTypeSymbol|SecAccessControlWatch)\\b", + "name": "support.constant.10.15.c" + }, + { + "match": "\\bk(?:AudioComponentFlag_SandboxSafe|CGL(?:PFASupportsAutomaticGraphicsSwitching|Renderer(?:ATIRadeonX4000ID|IntelHD5000ID)))\\b", + "name": "support.constant.10.8.c" + }, + { + "match": "\\bk(?:AXPriority(?:High|Low|Medium)|CGL(?:OGLPVersion_GL4_Core|R(?:PMajorGLVersion|endererGeForceID))|FSEventStream(?:CreateFlagMarkSelf|EventFlagOwnEvent))\\b", + "name": "support.constant.10.9.c" + }, + { + "match": "\\b(?:A(?:APNot(?:CreatedErr|FoundErr)|C(?:E(?:2Type|8Type)|L_(?:A(?:DD_(?:FILE|SUBDIRECTORY)|PPEND_DATA)|CHANGE_OWNER|DELETE(?:_CHILD)?|E(?:NTRY_(?:DIRECTORY_INHERIT|FILE_INHERIT|INHERITED|LIMIT_INHERIT|ONLY_INHERIT)|X(?:ECUTE|TENDED_(?:ALLOW|DENY)))|F(?:IRST_ENTRY|LAG_(?:DEFER_INHERIT|NO_INHERIT))|L(?:AST_ENTRY|IST_DIRECTORY)|NEXT_ENTRY|READ_(?:ATTRIBUTES|DATA|EXTATTRIBUTES|SECURITY)|S(?:EARCH|YNCHRONIZE)|TYPE_(?:A(?:CCESS|FS)|CODA|DEFAULT|EXTENDED|N(?:TFS|WFS))|UNDEFINED_TAG|WRITE_(?:ATTRIBUTES|DATA|EXTATTRIBUTES|SECURITY)))|IF(?:C(?:ID|Version1)|FID)|SD(?:Bad(?:ForkErr|HeaderErr)|EntryNotFoundErr)|VAudioSessionError(?:Code(?:BadParam|Cannot(?:InterruptOthers|Start(?:Playing|Recording))|ExpiredSession|I(?:n(?:compatibleCategory|sufficientPriority)|sBusy)|M(?:ediaServicesFailed|issingEntitlement)|None|ResourceNotAvailable|S(?:essionNotActive|iriIsRecording)|Unspecified)|InsufficientPriority)|nnotationID|ppl(?:eShareMediaType|icationSpecificID)|u(?:dioRecordingID|thorID))|C(?:DEFNFnd|E_CDNT_(?:FullName|NameRelativeToCrlIssuer)|S(?:SM(?:ERR_(?:A(?:C_(?:DEVICE_(?:FAILED|RESET)|FUNCTION_(?:FAILED|NOT_IMPLEMENTED)|IN(?:SUFFICIENT_CLIENT_IDENTIFICATION|TERNAL_ERROR|VALID_(?:BASE_ACLS|C(?:L_HANDLE|ONTEXT_HANDLE)|D(?:ATA|B_(?:HANDLE|LIST(?:_POINTER)?)|L_HANDLE)|ENCODING|INPUT_POINTER|OUTPUT_POINTER|P(?:ASSTHROUGH_ID|OINTER)|REQUEST(?:OR|_DESCRIPTOR)|T(?:P_HANDLE|UPLE_CREDENTIALS)|VALIDITY_PERIOD)|_DARK_WAKE)|M(?:DS_ERROR|EMORY_ERROR)|NO_USER_INTERACTION|OS_ACCESS_DENIED|SE(?:LF_CHECK_FAILED|RVICE_NOT_AVAILABLE)|USER_CANCELED)|PPLE(?:DL_(?:DISK_FULL|FILE_TOO_BIG|IN(?:COMPATIBLE_(?:DATABASE_BLOB|KEY_BLOB)|VALID_(?:DATABASE_BLOB|KEY_BLOB|OPEN_PARAMETERS))|QUOTA_EXCEEDED)|TP_(?:BAD_CERT_FROM_ISSUER|C(?:A_PIN_MISMATCH|ERT_NOT_FOUND_FROM_ISSUER|ODE_SIGN_DEVELOPMENT|RL_(?:BAD_URI|EXPIRED|INVALID_ANCHOR_CERT|NOT_(?:FOUND|TRUSTED|VALID_YET)|POLICY_FAIL|SERVER_DOWN)|S_(?:BAD_(?:CERT_CHAIN_LENGTH|PATH_LENGTH)|NO_(?:BASIC_CONSTRAINTS|EXTENDED_KEY_USAGE)))|EXT_KEYUSAGE_NOT_CRITICAL|HOSTNAME_MISMATCH|I(?:D(?:ENTIFIER_MISSING|P_FAIL)|N(?:COMPLETE_REVOCATION_CHECK|VALID_(?:AUTHORITY_ID|CA|E(?:MPTY_SUBJECT|XTENDED_KEY_USAGE)|ID_LINKAGE|KEY_USAGE|ROOT|SUBJECT_ID)))|MISSING_REQUIRED_EXTENSION|N(?:ETWORK_FAILURE|O_BASIC_CONSTRAINTS)|OCSP_(?:BAD_RE(?:QUEST|SPONSE)|INVALID_ANCHOR_CERT|NO(?:NCE_MISMATCH|T_TRUSTED|_SIGNER)|RESP_(?:INTERNAL_ERR|MALFORMED_REQ|SIG_REQUIRED|TRY_LATER|UNAUTHORIZED)|S(?:IG_ERROR|TATUS_UNRECOGNIZED)|UNAVAILABLE)|PATH_LEN_CONSTRAINT|RS_BAD_(?:CERT_CHAIN_LENGTH|EXTENDED_KEY_USAGE)|S(?:MIME_(?:BAD_(?:EXT_KEY_USE|KEY_USE)|EMAIL_ADDRS_NOT_FOUND|KEYUSAGE_NOT_CRITICAL|NO_EMAIL_ADDRS|SUBJ_ALT_NAME_NOT_CRIT)|SL_BAD_EXT_KEY_USE)|TRUST_SETTING_DENY|UNKNOWN_(?:C(?:ERT_EXTEN|R(?:ITICAL_EXTEN|L_EXTEN))|QUAL_CERT_STATEMENT))|_DOTMAC_(?:CSR_VERIFY_FAIL|FAILED_CONSISTENCY_CHECK|NO_REQ_PENDING|REQ_(?:IS_PENDING|QUEUED|REDIRECT|SERVER_(?:A(?:LREADY_EXIST|UTH)|ERR|NOT_AVAIL|PARAM|SERVICE_ERROR|UNIMPL)))))|C(?:L_(?:CRL_ALREADY_SIGNED|DEVICE_(?:FAILED|RESET)|FUNCTION_(?:FAILED|NOT_IMPLEMENTED)|IN(?:SUFFICIENT_CLIENT_IDENTIFICATION|TERNAL_ERROR|VALID_(?:BUNDLE_(?:INFO|POINTER)|C(?:ACHE_HANDLE|ERT(?:GROUP_POINTER|_POINTER)|ONTEXT_HANDLE|RL_(?:INDEX|POINTER))|DATA|FIELD_POINTER|INPUT_POINTER|NUMBER_OF_FIELDS|OUTPUT_POINTER|P(?:ASSTHROUGH_ID|OINTER)|RESULTS_HANDLE|SCOPE)|_DARK_WAKE)|M(?:DS_ERROR|EMORY_ERROR)|NO_(?:FIELD_VALUES|USER_INTERACTION)|OS_ACCESS_DENIED|S(?:COPE_NOT_SUPPORTED|E(?:LF_CHECK_FAILED|RVICE_NOT_AVAILABLE))|U(?:NKNOWN_(?:FORMAT|TAG)|SER_CANCELED)|VERIFICATION_FAILURE)|S(?:P(?:DL_APPLE_DL_CONVERSION_ERROR|_(?:A(?:CL_(?:ADD_FAILED|BASE_CERTS_NOT_SUPPORTED|CHA(?:LLENGE_CALLBACK_FAILED|NGE_FAILED)|DELETE_FAILED|ENTRY_TAG_NOT_FOUND|REPLACE_FAILED|SUBJECT_TYPE_NOT_SUPPORTED)|L(?:GID_MISMATCH|READY_LOGGED_IN)|PPLE_(?:ADD_APPLICATION_ACL_SUBJECT|INVALID_KEY_(?:END_DATE|START_DATE)|PUBLIC_KEY_INCOMPLETE|S(?:IGNATURE_MISMATCH|SLv2_ROLLBACK))|TTACH_HANDLE_BUSY)|BLOCK_SIZE_MISMATCH|CRYPTO_DATA_CALLBACK_FAILED|DEVICE_(?:ERROR|FAILED|MEMORY_ERROR|RESET|VERIFY_FAILED)|FUNCTION_(?:FAILED|NOT_IMPLEMENTED)|IN(?:PUT_LENGTH_ERROR|SUFFICIENT_CLIENT_IDENTIFICATION|TERNAL_ERROR|VALID_(?:A(?:C(?:CESS_CREDENTIALS|L_(?:BASE_CERTS|CHALLENGE_CALLBACK|E(?:DIT_MODE|NTRY_TAG)|SUBJECT_VALUE))|LGORITHM|TTR_(?:A(?:CCESS_CREDENTIALS|LG_PARAMS)|B(?:ASE|LOCK_SIZE)|DL_DB_HANDLE|E(?:FFECTIVE_BITS|ND_DATE)|I(?:NIT_VECTOR|TERATION_COUNT)|KEY(?:_(?:LENGTH|TYPE))?|LABEL|MODE|OUTPUT_SIZE|P(?:A(?:DDING|SSPHRASE)|RI(?:ME|VATE_KEY_FORMAT)|UBLIC_KEY_FORMAT)|R(?:ANDOM|OUNDS)|S(?:ALT|EED|TART_DATE|UBPRIME|YMMETRIC_KEY_FORMAT)|VERSION|WRAPPED_KEY_FORMAT))|C(?:ONTEXT(?:_HANDLE)?|RYPTO_DATA)|D(?:ATA(?:_COUNT)?|IGEST_ALGORITHM)|INPUT_(?:POINTER|VECTOR)|KEY(?:ATTR_MASK|USAGE_MASK|_(?:CLASS|FORMAT|LABEL|POINTER|REFERENCE))?|LOGIN_NAME|NEW_ACL_(?:ENTRY|OWNER)|OUTPUT_(?:POINTER|VECTOR)|P(?:ASSTHROUGH_ID|OINTER)|S(?:AMPLE_VALUE|IGNATURE))|_DARK_WAKE)|KEY_(?:BLOB_TYPE_INCORRECT|HEADER_INCONSISTENT|LABEL_ALREADY_EXISTS|USAGE_INCORRECT)|M(?:DS_ERROR|EMORY_ERROR|ISSING_ATTR_(?:A(?:CCESS_CREDENTIALS|LG_PARAMS)|B(?:ASE|LOCK_SIZE)|DL_DB_HANDLE|E(?:FFECTIVE_BITS|ND_DATE)|I(?:NIT_VECTOR|TERATION_COUNT)|KEY(?:_(?:LENGTH|TYPE))?|LABEL|MODE|OUTPUT_SIZE|P(?:A(?:DDING|SSPHRASE)|RI(?:ME|VATE_KEY_FORMAT)|UBLIC_KEY_FORMAT)|R(?:ANDOM|OUNDS)|S(?:ALT|EED|TART_DATE|UBPRIME|YMMETRIC_KEY_FORMAT)|VERSION|WRAPPED_KEY_FORMAT))|NO(?:T_LOGGED_IN|_USER_INTERACTION)|O(?:BJECT_(?:ACL_(?:NOT_SUPPORTED|REQUIRED)|MANIP_AUTH_DENIED|USE_AUTH_DENIED)|PERATION_AUTH_DENIED|S_ACCESS_DENIED|UTPUT_LENGTH_ERROR)|P(?:RIV(?:ATE_KEY_(?:ALREADY_EXISTS|NOT_FOUND)|ILEGE_NOT_(?:GRANTED|SUPPORTED))|UBLIC_KEY_INCONSISTENT)|QUERY_SIZE_UNKNOWN|S(?:AMPLE_VALUE_NOT_SUPPORTED|E(?:LF_CHECK_FAILED|RVICE_NOT_AVAILABLE)|TAGED_OPERATION_(?:IN_PROGRESS|NOT_STARTED))|U(?:NSUPPORTED_KEY(?:ATTR_MASK|USAGE_MASK|_(?:FORMAT|LABEL|SIZE))|SER_CANCELED)|VE(?:CTOR_OF_BUFS_UNSUPPORTED|RIFY_FAILED)))|SM_(?:A(?:DDIN_(?:AUTHENTICATE_FAILED|LOAD_FAILED|UNLOAD_FAILED)|TTRIBUTE_NOT_IN_CONTEXT)|BUFFER_TOO_SMALL|DEVICE_(?:FAILED|RESET)|E(?:MM_(?:AUTHENTICATE_FAILED|LOAD_FAILED|UNLOAD_FAILED)|VENT_NOTIFICATION_CALLBACK_NOT_FOUND)|FUNCTION_(?:FAILED|INTEGRITY_FAIL|NOT_IMPLEMENTED)|IN(?:COMPATIBLE_VERSION|SUFFICIENT_CLIENT_IDENTIFICATION|TERNAL_ERROR|VALID_(?:A(?:DDIN_(?:FUNCTION_TABLE|HANDLE)|TTRIBUTE)|CONTEXT_HANDLE|GUID|HANDLE_USAGE|INPUT_POINTER|KEY_HIERARCHY|OUTPUT_POINTER|P(?:OINTER|VC)|S(?:ERVICE_MASK|UBSERVICEID))|_DARK_WAKE)|LIB_REF_NOT_FOUND|M(?:DS_ERROR|EMORY_ERROR|ODULE_(?:MAN(?:AGER_(?:INITIALIZE_FAIL|NOT_FOUND)|IFEST_VERIFY_FAILED)|NOT_LOADED))|NO(?:T_INITIALIZED|_USER_INTERACTION)|OS_ACCESS_DENIED|P(?:RIVILEGE_NOT_GRANTED|VC_(?:ALREADY_CONFIGURED|REFERENT_NOT_FOUND))|S(?:COPE_NOT_SUPPORTED|E(?:LF_CHECK_FAILED|RVICE_NOT_AVAILABLE))|USER_CANCELED)))|DL_(?:ACL_(?:ADD_FAILED|BASE_CERTS_NOT_SUPPORTED|CHA(?:LLENGE_CALLBACK_FAILED|NGE_FAILED)|DELETE_FAILED|ENTRY_TAG_NOT_FOUND|REPLACE_FAILED|SUBJECT_TYPE_NOT_SUPPORTED)|D(?:ATA(?:BASE_CORRUPT|STORE_(?:ALREADY_EXISTS|DOESNOT_EXIST|IS_OPEN))|B_LOCKED|EVICE_(?:FAILED|RESET))|ENDOFDATA|F(?:IELD_SPECIFIED_MULTIPLE|UNCTION_(?:FAILED|NOT_IMPLEMENTED))|IN(?:COMPATIBLE_FIELD_FORMAT|SUFFICIENT_CLIENT_IDENTIFICATION|TERNAL_ERROR|VALID_(?:AC(?:CESS_(?:CREDENTIALS|REQUEST)|L_(?:BASE_CERTS|CHALLENGE_CALLBACK|E(?:DIT_MODE|NTRY_TAG)|SUBJECT_VALUE))|C(?:L_HANDLE|SP_HANDLE)|D(?:B_(?:HANDLE|L(?:IST_POINTER|OCATION)|NAME)|L_HANDLE)|FIELD_NAME|IN(?:DEX_INFO|PUT_POINTER)|MODIFY_MODE|NE(?:TWORK_ADDR|W_(?:ACL_(?:ENTRY|OWNER)|OWNER))|O(?:PEN_PARAMETERS|UTPUT_POINTER)|P(?:A(?:RSING_MODULE|SSTHROUGH_ID)|OINTER)|QUERY|RE(?:CORD(?:TYPE|_(?:INDEX|UID))|SULTS_HANDLE)|S(?:AMPLE_VALUE|ELECTION_TAG)|UNIQUE_INDEX_DATA|VALUE)|_DARK_WAKE)|M(?:DS_ERROR|EMORY_ERROR|ISSING_VALUE|ULTIPLE_VALUES_UNSUPPORTED)|NO_USER_INTERACTION|O(?:BJECT_(?:ACL_(?:NOT_SUPPORTED|REQUIRED)|MANIP_AUTH_DENIED|USE_AUTH_DENIED)|PERATION_AUTH_DENIED|S_ACCESS_DENIED)|RECORD_(?:MODIFIED|NOT_FOUND)|S(?:AMPLE_VALUE_NOT_SUPPORTED|E(?:LF_CHECK_FAILED|RVICE_NOT_AVAILABLE)|TALE_UNIQUE_RECORD)|U(?:NSUPPORTED_(?:FIELD_FORMAT|INDEX_INFO|LOCALITY|NUM_(?:ATTRIBUTES|INDEXES|RECORDTYPES|SELECTION_PREDS)|OPERATOR|QUERY(?:_LIMITS)?|RECORDTYPE)|SER_CANCELED))|TP_(?:AUTHENTICATION_FAILED|C(?:ERT(?:GROUP_INCOMPLETE|IFICATE_CANT_OPERATE|_(?:EXPIRED|NOT_VALID_YET|REVOKED|SUSPENDED))|RL_ALREADY_SIGNED)|DEVICE_(?:FAILED|RESET)|FUNCTION_(?:FAILED|NOT_IMPLEMENTED)|IN(?:SUFFICIENT_C(?:LIENT_IDENTIFICATION|REDENTIALS)|TERNAL_ERROR|VALID_(?:A(?:CTION(?:_DATA)?|NCHOR_CERT|UTHORITY)|C(?:ALL(?:BACK|ERAUTH_CONTEXT_POINTER)|ERT(?:GROUP(?:_POINTER)?|IFICATE|_(?:AUTHORITY|POINTER))|L_HANDLE|ONTEXT_HANDLE|RL(?:GROUP(?:_POINTER)?|_(?:AUTHORITY|ENCODING|POINTER|TYPE))?|SP_HANDLE)|D(?:ATA|B_(?:HANDLE|LIST(?:_POINTER)?)|L_HANDLE)|F(?:IELD_POINTER|ORM_TYPE)|I(?:D(?:ENTIFIER(?:_POINTER)?)?|N(?:DEX|PUT_POINTER))|KEYCACHE_HANDLE|N(?:AME|ETWORK_ADDR|UMBER_OF_FIELDS)|OUTPUT_POINTER|P(?:ASSTHROUGH_ID|O(?:INTER|LICY_IDENTIFIERS))|RE(?:ASON|QUEST_INPUTS|SPONSE_VECTOR)|S(?:IGNATURE|TOP_ON_POLICY)|T(?:IMESTRING|UPLE(?:GROUP(?:_POINTER)?)?))|_DARK_WAKE)|M(?:DS_ERROR|EMORY_ERROR)|NO(?:T_(?:SIGNER|TRUSTED)|_(?:DEFAULT_AUTHORITY|USER_INTERACTION))|OS_ACCESS_DENIED|RE(?:JECTED_FORM|QUEST_(?:LOST|REJECTED))|SE(?:LF_CHECK_FAILED|RVICE_NOT_AVAILABLE)|U(?:N(?:KNOWN_(?:FORMAT|TAG)|SUPPORTED_(?:ADDR_TYPE|SERVICE))|SER_CANCELED)|VERIF(?:ICATION_FAILURE|Y_ACTION_FAILED)))|_(?:A(?:C(?:L_(?:AUTHORIZATION_(?:ANY|CHANGE_(?:ACL|OWNER)|D(?:B(?:S_(?:CREATE|DELETE)|_(?:DELETE|INSERT|MODIFY|READ))|E(?:CRYPT|LETE|RIVE))|E(?:NCRYPT|XPORT_(?:CLEAR|WRAPPED))|GENKEY|I(?:MPORT_(?:CLEAR|WRAPPED)|NTEGRITY)|LOGIN|MAC|P(?:ARTITION_ID|REAUTH_(?:BASE|END))|SIGN|TAG_VENDOR_DEFINED_START)|CODE_SIGNATURE_(?:INVALID|OSX)|EDIT_MODE_(?:ADD|DELETE|REPLACE)|KEYCHAIN_PROMPT_(?:CURRENT_VERSION|INVALID(?:_ACT)?|REQUIRE_PASSPHRASE|UNSIGNED(?:_ACT)?)|MATCH_(?:BITS|GID|HONOR_ROOT|UID)|PR(?:EAUTH_TRACKING_(?:AUTHORIZED|BLOCKED|COUNT_MASK|UNKNOWN)|OCESS_SELECTOR_CURRENT_VERSION)|SUBJECT_TYPE_(?:A(?:NY|SYMMETRIC_KEY)|BIOMETRIC|CO(?:DE_SIGNATURE|MMENT)|EXT_PAM_NAME|HASHED_SUBJECT|KEYCHAIN_PROMPT|LOGIN_NAME|P(?:A(?:RTITION|SSWORD)|R(?:EAUTH(?:_SOURCE)?|O(?:CESS|MPTED_(?:BIOMETRIC|PASSWORD)|TECTED_(?:BIOMETRIC|PASSWORD)))|UBLIC_KEY)|SYMMETRIC_KEY|THRESHOLD))|_(?:BASE_(?:AC_ERROR|ERROR)|PRIVATE_ERROR))|DDR_(?:CUSTOM|N(?:AME|ONE)|SOCKADDR|URL)|LG(?:CLASS_(?:ASYMMETRIC|CUSTOM|D(?:ERIVEKEY|IGEST)|KEYGEN|MAC|NONE|RANDOMGEN|S(?:IGNATURE|YMMETRIC)|UNIQUEGEN)|ID_(?:3DES(?:_(?:1KEY(?:_EEE)?|2KEY(?:_E(?:DE|EE))?|3KEY(?:_E(?:DE|EE))?))?|A(?:ES|PPLE_YARROW|SC)|B(?:ATON|LOWFISH)|C(?:AST(?:3|5)?|DMF|RAB|USTOM|oncat(?:BaseAnd(?:Data|Key)|DataAndBase|KeyAndBase))|D(?:ES(?:Random|X)?|H|SA(?:_BSAFE)?)|E(?:C(?:AES|C|D(?:H(?:_X963_KDF)?|SA(?:_SPECIFIED)?)|ES|MQV|NRA)|NTROPY_DEFAULT|lGamal|xtractFromKey)|F(?:ASTHASH|E(?:AL|E(?:D(?:EXP)?|_(?:MD5|SHA1))?)|IPS186Random|ortezzaTimestamp)|G(?:OST|enericSecret)|HAVAL(?:3|4|5)?|I(?:BCHASH|DEA|ntelPlatformRandom)|JUNIPER|K(?:E(?:A|YCHAIN_KEY)|H(?:AFRE|UFU))|L(?:AST|OKI|UCIFER)|M(?:A(?:DRYGA|YFLY)|D(?:2(?:Random|WithRSA)?|4|5(?:HMAC|Random|WithRSA)?)|MB|QV)|N(?:HASH|ONE|RA)|OPENSSH1|P(?:BE_OPENSSL_MD5|H|KCS(?:12_(?:PBE_(?:ENCR|MAC)|SHA1_PBE)|5_PBKDF(?:1_(?:MD(?:2|5)|SHA1)|2)))|R(?:C(?:2|4|5)|DES|EDOC(?:3)?|IPEM(?:AC|D)|SA|UNNING_COUNTER)|S(?:AFER|E(?:AL|CURE_PASSPHRASE)|HA(?:1(?:HMAC(?:_LEGACY)?|With(?:DSA|EC(?:DSA|NRA)|RSA))?|2(?:24(?:With(?:ECDSA|RSA))?|56(?:With(?:ECDSA|RSA))?)|384(?:With(?:ECDSA|RSA))?|512(?:With(?:ECDSA|RSA))?|Random)|KIPJACK|SL3(?:KeyAndMacDerive|M(?:D5(?:_MAC)?|asterDerive)|PreMasterGen|SHA1(?:_MAC)?))|TIGER|UTC|VENDOR_DEFINED|Wrap(?:Lynks|SET_OAEP)|XORBaseAndData|_FIRST_UNUSED)|MODE_(?:BC|C(?:BC(?:128|64|C|P(?:D|adIV8)|_IV8)?|FB(?:16|32|8|PadIV8|_IV8)?|OUNTER|USTOM)|ECB(?:128|64|96|Pad)?|ISO_9796|LAST|NONE|O(?:AEP_HASH|FB(?:64|NLF|PadIV8|_IV8)?)|P(?:BC|CBC|FB|KCS1_EM(?:E_(?:OAEP|V15)|SA_V15)|RIVATE_(?:KEY|WRAP)|UBLIC_KEY)|RELAYX|SHUFFLE|VENDOR_DEFINED|WRAP|X9_31))|PPLE(?:CSP(?:DL_DB_(?:CHANGE_PASSWORD|GET_(?:HANDLE|SETTINGS)|IS_LOCKED|LOCK|SET_SETTINGS|UNLOCK)|_KEYDIGEST)|DL_OPEN_PARAMETERS_VERSION|FILEDL_(?:COMMIT|DELETE_FILE|MAKE_(?:BACKUP|COPY)|ROLLBACK|T(?:AKE_FILE_LOCK|OGGLE_AUTOCOMMIT))|SCPDL_CSP_GET_KEYHANDLE|X509CL_(?:OBTAIN_CSR|VERIFY_CSR)|_(?:PRIVATE_CSPDL_CODE_(?:1(?:0|1|2|3|4|5|6|7|8|9)|2(?:0|1|2|3|4|5|6|7)|8|9)|UNLOCK_TYPE_(?:KEY(?:BAG|_DIRECT)|WRAPPED_PRIVATE)))|SC_OPTIMIZE_(?:ASCII|DEFAULT|S(?:ECURITY|IZE)|TIME(?:_SIZE)?)|TT(?:ACH_READ_ONLY|RIBUTE_(?:A(?:CCESS_CREDENTIALS|L(?:ERT_TITLE|G_(?:ID|PARAMS))|SC_OPTIMIZATION)|B(?:ASE|LOCK_SIZE)|C(?:SP_HANDLE|USTOM)|D(?:ATA_(?:ACCESS_CREDENTIALS|C(?:RYPTO_DATA|SSM_DATA)|D(?:ATE|L_DB_HANDLE)|K(?:EY|R_PROFILE)|NONE|RANGE|STRING|UINT32|VERSION)|ESCRIPTION|L_DB_HANDLE)|E(?:FFECTIVE_BITS|ND_DATE)|FEE_(?:CURVE_TYPE|PRIME_TYPE)|I(?:NIT_VECTOR|TERATION_COUNT|V_SIZE)|K(?:EY(?:ATTR|USAGE|_(?:LENGTH(?:_RANGE)?|TYPE))?|RPROFILE_(?:LOCAL|REMOTE))|LABEL|MODE|NONE|OUTPUT_SIZE|P(?:A(?:DDING|RAM_KEY|SSPHRASE)|R(?:I(?:ME|VATE_KEY_FORMAT)|OMPT)|UBLIC_KEY(?:_FORMAT)?)|R(?:ANDOM|OUNDS(?:_RANGE)?|SA_BLINDING)|S(?:ALT|EED|TART_DATE|UBPRIME|YMMETRIC_KEY_FORMAT)|TYPE_MASK|VE(?:NDOR_DEFINED|R(?:IFY_PASSPHRASE|SION))|WRAPPED_KEY_FORMAT)))|BASE_ERROR|C(?:ERT(?:GROUP_(?:CERT_PAIR|DATA|ENCODED_CERT|PARSED_CERT)|_(?:ACL_ENTRY|BUNDLE_(?:CUSTOM|ENCODING_(?:BER|CUSTOM|DER|PGP|SEXPR|UNKNOWN)|LAST|P(?:FX|GP_KEYRING|KCS(?:12|7_SIGNED_(?:DATA|ENVELOPED_DATA)))|SPKI_SEQUENCE|UNKNOWN)|ENCODING_(?:BER|CUSTOM|DER|LAST|MULTIPLE|NDR|PGP|SEXPR|UNKNOWN)|Intel|LAST|MULTIPLE|P(?:ARSE_FORMAT_(?:C(?:OMPLEX|USTOM)|LAST|MULTIPLE|NONE|OID_NAMED|SEXPR|TUPLE)|GP)|S(?:DSIv1|PKI|TATUS_(?:EXPIRED|IS_(?:FROM_NET|IN_(?:ANCHORS|INPUT_CERTS)|ROOT)|NOT_VALID_YET|TRUST_SETTINGS_(?:DENY|FOUND_(?:ADMIN|SYSTEM|USER)|IGNORED_ERROR|TRUST)))|TUPLE|UNKNOWN|X(?:9_ATTRIBUTE|_509(?:_ATTRIBUTE|v(?:1|2|3)))))|L_(?:BASE_(?:CL_ERROR|ERROR)|CUSTOM_C(?:ERT_(?:BUNDLE_TYPE|ENCODING|PARSE_FORMAT|TYPE)|RL_PARSE_FORMAT)|PRIVATE_ERROR|TEMPLATE_(?:INTERMEDIATE_CERT|PKIX_CERTTEMPLATE))|ONTEXT_EVENT_(?:CREATE|DELETE|UPDATE)|RL(?:GROUP_(?:CRL_PAIR|DATA|ENCODED_CRL|PARSED_CRL)|_(?:ENCODING_(?:B(?:ER|LOOM)|CUSTOM|DER|MULTIPLE|SEXPR|UNKNOWN)|PARSE_FORMAT_(?:C(?:OMPLEX|USTOM)|LAST|MULTIPLE|NONE|OID_NAMED|SEXPR|TUPLE)|TYPE_(?:MULTIPLE|SPKI|UNKNOWN|X_509v(?:1|2))))|S(?:P_(?:BASE_(?:CSP_ERROR|ERROR)|H(?:ARDWARE|YBRID)|PRIVATE_ERROR|RDR_(?:EXISTS|HW|TOKENPRESENT)|S(?:OFTWARE|TORES_(?:CERTIFICATES|GENERIC|P(?:RIVATE_KEYS|UBLIC_KEYS)|SESSION_KEYS))|TOK_(?:CLOCK_EXISTS|LOGIN_REQUIRED|PR(?:IVATE_KEY_PASSWORD|OT_AUTHENTICATION)|RNG|SESSION_KEY_PASSWORD|USER_PIN_(?:EXPIRED|INITIALIZED)|WRITE_PROTECTED))|SM_(?:BASE_(?:CSSM_ERROR|ERROR)|PRIVATE_ERROR))|USTOM_COMMON_ERROR_EXTENT)|D(?:B_(?:A(?:CCESS_(?:PRIVILEGED|RE(?:AD|SET)|WRITE)|ND|TTRIBUTE_(?:FORMAT_(?:B(?:IG_NUM|LOB)|COMPLEX|MULTI_UINT32|REAL|S(?:INT32|TRING)|TIME_DATE|UINT32)|NAME_AS_(?:INTEGER|OID|STRING)))|C(?:ERT_USE_(?:OWNER|PRIVACY|REVOKED|S(?:IGNING|YSTEM)|TRUSTED)|ONTAINS(?:_(?:FINAL_SUBSTRING|INITIAL_SUBSTRING))?)|DATASTORES_UNKNOWN|EQUAL|FILESYSTEMSCAN_MODE|GREATER_THAN|INDEX_(?:NONUNIQUE|ON_(?:ATTRIBUTE|RECORD|UNKNOWN)|UNIQUE)|LESS_THAN|MODIFY_ATTRIBUTE_(?:ADD|DELETE|NONE|REPLACE)|NO(?:NE|T_EQUAL)|OR|RECORDTYPE_(?:APP_DEFINED_(?:END|START)|OPEN_GROUP_(?:END|START)|SCHEMA_(?:END|START))|TRANSACTIONAL_MODE)|L_(?:BASE_(?:DL_ERROR|ERROR)|CUSTOM|DB_(?:RECORD_(?:A(?:LL_KEYS|NY|PPLESHARE_PASSWORD)|C(?:ERT|RL)|EXTENDED_ATTRIBUTE|GENERIC(?:_PASSWORD)?|INTERNET_PASSWORD|METADATA|P(?:OLICY|RIVATE_KEY|UBLIC_KEY)|SYMMETRIC_KEY|U(?:NLOCK_REFERRAL|SER_TRUST)|X509_C(?:ERTIFICATE|RL))|SCHEMA_(?:ATTRIBUTES|IN(?:DEXES|FO)|PARSING_MODULE))|FFS|LDAP|MEMORY|ODBC|P(?:KCS11|RIVATE_ERROR)|REMOTEDIR|UNKNOWN))|E(?:LAPSED_TIME_(?:COMPLETE|UNKNOWN)|RR(?:CODE_(?:ACL_(?:ADD_FAILED|BASE_CERTS_NOT_SUPPORTED|CHA(?:LLENGE_CALLBACK_FAILED|NGE_FAILED)|DELETE_FAILED|ENTRY_TAG_NOT_FOUND|REPLACE_FAILED|SUBJECT_TYPE_NOT_SUPPORTED)|CRL_ALREADY_SIGNED|DEVICE_(?:FAILED|RESET)|FUNCTION_(?:FAILED|NOT_IMPLEMENTED)|IN(?:COMPATIBLE_VERSION|SUFFICIENT_CLIENT_IDENTIFICATION|TERNAL_ERROR|VALID_(?:AC(?:CESS_CREDENTIALS|L_(?:BASE_CERTS|CHALLENGE_CALLBACK|E(?:DIT_MODE|NTRY_TAG)|SUBJECT_VALUE)|_HANDLE)|C(?:ERT(?:GROUP_POINTER|_POINTER)|L_HANDLE|ONTEXT_HANDLE|R(?:L_POINTER|YPTO_DATA)|SP_HANDLE)|D(?:ATA|B_(?:HANDLE|LIST(?:_POINTER)?)|L_HANDLE)|FIELD_POINTER|GUID|INPUT_POINTER|KR_HANDLE|N(?:E(?:TWORK_ADDR|W_ACL_(?:ENTRY|OWNER))|UMBER_OF_FIELDS)|OUTPUT_POINTER|P(?:ASSTHROUGH_ID|OINTER)|SAMPLE_VALUE|TP_HANDLE)|_DARK_WAKE)|M(?:DS_ERROR|EMORY_ERROR|ODULE_MANIFEST_VERIFY_FAILED)|NO_USER_INTERACTION|O(?:BJECT_(?:ACL_(?:NOT_SUPPORTED|REQUIRED)|MANIP_AUTH_DENIED|USE_AUTH_DENIED)|PERATION_AUTH_DENIED|S_ACCESS_DENIED)|PRIVILEGE_NOT_GRANTED|S(?:AMPLE_VALUE_NOT_SUPPORTED|E(?:LF_CHECK_FAILED|RVICE_NOT_AVAILABLE))|U(?:NKNOWN_(?:FORMAT|TAG)|SER_CANCELED)|VERIFICATION_FAILURE)|ORCODE_(?:C(?:OMMON_EXTENT|USTOM_OFFSET)|MODULE_EXTENT))|STIMATED_TIME_UNKNOWN|VIDENCE_FORM_(?:APPLE_(?:CERT(?:GROUP|_INFO)|HEADER)|C(?:ERT(?:_ID)?|RL(?:_(?:ID|NEXTTIME|THISTIME))?)|POLICYINFO|TUPLEGROUP|UNSPECIFIC|VERIFIER_TIME))|F(?:ALSE|EE_(?:CURVE_TYPE_(?:ANSI_X9_62|DEFAULT|MONTGOMERY|WEIERSTRASS)|PRIME_TYPE_(?:DEFAULT|FEE|GENERAL|MERSENNE))|IELDVALUE_COMPLEX_DATA_TYPE)|HINT_(?:ADDRESS_(?:APP|SP)|NONE)|INVALID_HANDLE|K(?:EY(?:ATTR_(?:ALWAYS_SENSITIVE|EXTRACTABLE|MODIFIABLE|NEVER_EXTRACTABLE|P(?:ARTIAL|ERMANENT|RIVATE|UBLIC_KEY_ENCRYPT)|RETURN_(?:D(?:ATA|EFAULT)|NONE|REF)|SENSITIVE)|BLOB_(?:OTHER|R(?:AW(?:_FORMAT_(?:BSAFE|CCA|FIPS186|MSCAPI|NONE|O(?:CTET_STRING|PENSS(?:H(?:2)?|L)|THER)|P(?:GP|KCS(?:1|3|8))|SPKI|VENDOR_DEFINED|X509))?|EF(?:ERENCE|_FORMAT_(?:INTEGER|OTHER|S(?:PKI|TRING))))|WRAPPED(?:_FORMAT_(?:APPLE_CUSTOM|MSCAPI|NONE|O(?:PENSS(?:H1|L)|THER)|PKCS(?:7|8)))?)|CLASS_(?:OTHER|P(?:RIVATE_KEY|UBLIC_KEY)|SE(?:CRET_PART|SSION_KEY))|HEADER_VERSION|USE_(?:ANY|DE(?:CRYPT|RIVE)|ENCRYPT|SIGN(?:_RECOVER)?|UNWRAP|VERIFY(?:_RECOVER)?|WRAP)|_HIERARCHY_(?:EXPORT|INTEG|NONE))|R_(?:BASE_ERROR|PRIVATE_ERROR))|LIST_(?:ELEMENT_(?:DATUM|SUBLIST|WORDID)|TYPE_(?:CUSTOM|SEXPR|UNKNOWN))|M(?:DS_(?:BASE_ERROR|PRIVATE_ERROR)|ODULE_STRING_SIZE)|N(?:ET_PROTO_(?:C(?:MP(?:S)?|USTOM)|FTP(?:S)?|LDAP(?:NS|S)?|NONE|OCSP|UNSPECIFIED|X500DAP)|OTIFY_(?:FAULT|INSERT|REMOVE))|OK|P(?:ADDING_(?:A(?:LTERNATE|PPLE_SSLv2)|C(?:IPHERSTEALING|USTOM)|FF|NONE|ONE|PKCS(?:1|5|7)|RANDOM|SIGRAW|VENDOR_DEFINED|ZERO)|KCS(?:5_PBKDF2_PRF_HMAC_SHA1|_OAEP_(?:MGF(?:1_(?:MD5|SHA1)|_NONE)|PSOURCE_(?:NONE|Pspecified)))|RIVILEGE_SCOPE_(?:NONE|PROCESS|THREAD)|VC_(?:APP|NONE|SP))|QUERY_(?:RETURN_DATA|SIZELIMIT_NONE|TIMELIMIT_NONE)|S(?:AMPLE_TYPE_(?:ASYMMETRIC_KEY|BIOMETRIC|COMMENT|HASHED_PASSWORD|KEY(?:BAG_KEY|CHAIN_(?:CHANGE_LOCK|LOCK|PROMPT))|P(?:ASSWORD|R(?:EAUTH|O(?:CESS|MPTED_(?:BIOMETRIC|PASSWORD)|TECTED_(?:BIOMETRIC|PASSWORD))))|RETRY_ID|S(?:IGNED_(?:NONCE|SECRET)|YMMETRIC_KEY)|THRESHOLD)|ERVICE_(?:AC|C(?:L|S(?:P|SM))|DL|KR|TP))|T(?:P_(?:A(?:CTION_(?:ALLOW_EXPIRED(?:_ROOT)?|CRL_SUFFICIENT|DEFAULT|FETCH_C(?:ERT_FROM_NET|RL_FROM_NET)|IMPLICIT_ANCHORS|LEAF_IS_CA|REQUIRE_(?:CRL_(?:IF_PRESENT|PER_CERT)|REV_PER_CERT)|TRUST_SETTINGS)|UTHORITY_REQUEST_C(?:ERT(?:ISSUE|NOTARIZE|RE(?:SUME|VOKE)|SUSPEND|USERECOVER|VERIFY)|RLISSUE))|BASE_(?:ERROR|TP_ERROR)|C(?:ERT(?:CHANGE_(?:HOLD|NO(?:NE|T_AUTHORIZED)|OK(?:WITHNEWTIME)?|RE(?:ASON_(?:AFFILIATIONCHANGE|C(?:ACOMPROMISE|EASEOPERATION)|HOLDRELEASE|KEYCOMPROMISE|SU(?:PERCEDED|SPECTEDCOMPROMISE)|UNKNOWN)|JECTED|LEASE|VOKE)|STATUS_UNKNOWN|WRONGCA)|ISSUE_(?:NOT_AUTHORIZED|OK(?:WITH(?:CERTMODS|SERVICEMODS))?|REJECTED|STATUS_UNKNOWN|WILL_BE_REVOKED)|NOTARIZE_(?:NOT_AUTHORIZED|OK(?:WITH(?:OUTFIELDS|SERVICEMODS))?|REJECTED|STATUS_UNKNOWN)|RECLAIM_(?:NO(?:MATCH|T_AUTHORIZED)|OK|REJECTED|STATUS_UNKNOWN)|VERIFY_(?:EXPIRED|INVALID(?:_(?:AUTHORITY|BASIC_CONSTRAINTS|C(?:ERT(?:GROUP|_VALUE)|RL_DIST_PT)|NAME_TREE|POLICY(?:_IDS)?|SIGNATURE))?|NOT_VALID_YET|REVOKED|SUSPENDED|UNKNOWN(?:_CRITICAL_EXT)?|VALID)|_(?:DIR_UPDATE|NOTIFY_RENEW|PUBLISH))|ONFIRM_(?:ACCEPT|REJECT|STATUS_UNKNOWN)|RL(?:ISSUE_(?:INVALID_DOMAIN|NOT_(?:AUTHORIZED|CURRENT)|OK|REJECTED|STATUS_UNKNOWN|UNKNOWN_IDENTIFIER)|_DISTRIBUTE))|FORM_TYPE_(?:GENERIC|REGISTRATION)|KEY_ARCHIVE|PRIVATE_ERROR|STOP_ON_(?:FIRST_(?:FAIL|PASS)|NONE|POLICY))|RUE)|USEE_(?:AUTHENTICATION|DOMESTIC|FINANCIAL|INSURANCE|K(?:EYEXCH|R(?:ENT|LE))|LAST|MEDICAL|NONE|SSL|WEAK)|VALUE_NOT_AVAILABLE|WORDID_(?:A(?:CL|LPHA|SYMMETRIC_KEY)?|B(?:ER|I(?:NARY|OMETRIC))?|C(?:ANCELED|ERT|OMMENT|RL|USTOM)?|D(?:ATE|B(?:S_(?:CREATE|DELETE)|_(?:DELETE|EXEC_STORED_QUERY|INSERT|MODIFY|READ))|E(?:CRYPT|L(?:ETE|TA_CRL)|R(?:IVE)?)|ISPLAY|O|SA(?:_SHA1)?)?|E(?:LGAMAL|N(?:CRYPT|TRY)|XPORT_(?:CLEAR|WRAPPED))?|G(?:E(?:NKEY)?)?|HA(?:SH(?:ED_(?:PASSWORD|SUBJECT))?|VAL)|I(?:BCHASH|MPORT_(?:CLEAR|WRAPPED)|NTEL|SSUER(?:_INFO)?)|K(?:E(?:A|Y(?:BAG_KEY|CHAIN_(?:CHANGE_LOCK|LOCK|PROMPT)|HOLDER)?)|_OF_N)|L(?:E|OGIN(?:_NAME)?)?|M(?:AC|D(?:2(?:WITHRSA)?|4|5(?:WITHRSA)?))|N(?:AME|DR|HASH|OT_(?:AFTER|BEFORE)|U(?:LL|MERIC))?|O(?:BJECT_HASH|N(?:E_TIME|LINE)|WNER)|P(?:A(?:M_NAME|RTITION|SSWORD)|GP|IN|R(?:E(?:AUTH(?:_SOURCE)?|FIX)|IVATE_KEY|O(?:CESS|MPTED_(?:BIOMETRIC|PASSWORD)|PAGATE|TECTED_(?:BIOMETRIC|P(?:ASSWORD|IN))))|UBLIC_KEY(?:_FROM_CERT)?)?|Q|R(?:ANGE|EVAL|IPEM(?:AC|D(?:160)?)|SA(?:_(?:ISO9796|PKCS(?:1(?:_(?:MD5|S(?:HA1|IG)))?|_(?:MD5|SHA1))?|RAW))?)|S(?:DSIV1|E(?:QUENCE|T|XPR)|HA1(?:WITH(?:DSA|ECDSA|RSA))?|IGN(?:ATURE|ED_(?:NONCE|SECRET))?|PKI|UBJECT(?:_INFO)?|Y(?:MMETRIC_KEY|STEM))|T(?:AG|HRESHOLD|IME)|URI|VE(?:NDOR_(?:END|START)|RSION)|X(?:509(?:V(?:1|2|3)|_ATTRIBUTE)|9_ATTRIBUTE)|_(?:FIRST_UNUSED|NLU_|RESERVED_1|STAR_|UNK_))|X509_DATAFORMAT_(?:ENCODED|PA(?:IR|RSED))))|_MAX_PATH)|antDecompress|o(?:mm(?:entID|onID)|pyrightID))|D(?:RAWHook|T_(?:Authority(?:InfoAccess|KeyID)|BasicConstraints|C(?:ertPolicies|rl(?:DistributionPoints|Number|Reason))|DeltaCrl|ExtendedKeyUsage|I(?:nhibitAnyPolicy|ssu(?:erAltName|ingDistributionPoint))|KeyUsage|N(?:ameConstraints|etscapeCertType)|Other|Policy(?:Constraints|Mappings)|QC_Statements|Subject(?:AltName|KeyID)))|E(?:OLHook|QUALTO|V(?:HIDE|LEVEL|MOVE|NOP|SHOW))|F(?:ORMID|or(?:matVersionID|ward(?:BackwardLooping|Looping)))|G(?:NT_(?:D(?:NSName|irectoryName)|EdiPartyName|IPAddress|OtherName|R(?:FC822Name|egisteredID)|URI|X400Address)|REATERTHAN)|H(?:DActivity|ITTESTHook)|I(?:dleActivity|nstrumentID)|KAEISHandleCGI|L(?:A(?:TENCY_QOS_TIER_(?:0|1|2|3|4|5|UNSPECIFIED)|UNCH_DATA_(?:ARRAY|BOOL|DICTIONARY|ERRNO|FD|INTEGER|MACHPORT|OPAQUE|REAL|STRING))|ESSTHAN)|M(?:ACE(?:3Type|6Type)|IDIDataID|PLibrary_(?:DevelopmentRevision|M(?:ajorVersion|inorVersion)|Release)|arkerID)|N(?:X_(?:BigEndian|L(?:eftButton|ittleEndian)|OneButton|RightButton|UnknownByteOrder)|ameID|etActivity|o(?:Looping|neType))|O(?:S(?:A(?:ControlFlowError|Duplicate(?:Handler|P(?:arameter|roperty))|I(?:llegal(?:A(?:ccess|ssign)|Index|Range)|nconsistentDeclarations)|M(?:essageNotUnderstood|issingParameter)|ParameterMismatch|Syntax(?:Error|TypeError)|TokenTooLong|Undefined(?:Handler|Variable))|_LOG_TYPE_(?:DE(?:BUG|FAULT)|ERROR|FAULT|INFO))|verallAct)|S(?:SL_(?:DH(?:E_(?:DSS_(?:EXPORT_WITH_DES40_CBC_SHA|WITH_(?:3DES_EDE_CBC_SHA|DES_CBC_SHA))|RSA_(?:EXPORT_WITH_DES40_CBC_SHA|WITH_(?:3DES_EDE_CBC_SHA|DES_CBC_SHA)))|_(?:DSS_(?:EXPORT_WITH_DES40_CBC_SHA|WITH_(?:3DES_EDE_CBC_SHA|DES_CBC_SHA))|RSA_(?:EXPORT_WITH_DES40_CBC_SHA|WITH_(?:3DES_EDE_CBC_SHA|DES_CBC_SHA))|anon_(?:EXPORT_WITH_(?:DES40_CBC_SHA|RC4_40_MD5)|WITH_(?:3DES_EDE_CBC_SHA|DES_CBC_SHA|RC4_128_MD5))))|FORTEZZA_DMS_WITH_(?:FORTEZZA_CBC_SHA|NULL_SHA)|N(?:O_SUCH_CIPHERSUITE|ULL_WITH_NULL_NULL)|RSA_(?:EXPORT_WITH_(?:DES40_CBC_SHA|RC(?:2_CBC_40_MD5|4_40_MD5))|WITH_(?:3DES_EDE_CBC_(?:MD5|SHA)|DES_CBC_(?:MD5|SHA)|IDEA_CBC_(?:MD5|SHA)|NULL_(?:MD5|SHA)|RC(?:2_CBC_MD5|4_128_(?:MD5|SHA)))))|lpTypeErr|oundDataID)|T(?:ASK_(?:BACKGROUND_APPLICATION|CONTROL_APPLICATION|D(?:ARWINBG_APPLICATION|EFAULT_APPLICATION)|FOREGROUND_APPLICATION|GRAPHICS_SERVER|INSPECT_BASIC_COUNTS|NONUI_APPLICATION|RENICED|THROTTLE_APPLICATION|UNSPECIFIED)|HROUGHPUT_QOS_TIER_(?:0|1|2|3|4|5|UNSPECIFIED)|LS_(?:AES_(?:128_(?:CCM_(?:8_SHA256|SHA256)|GCM_SHA256)|256_GCM_SHA384)|CHACHA20_POLY1305_SHA256|DH(?:E_(?:DSS_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:256)?|GCM_SHA384)))|PSK_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|NULL_SHA(?:256|384)?|RC4_128_SHA)|RSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:256)?|GCM_SHA384))))|_(?:DSS_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:256)?|GCM_SHA384)))|RSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:256)?|GCM_SHA384)))|anon_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:256)?|GCM_SHA384))|RC4_128_MD5)))|E(?:CDH(?:E_(?:ECDSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|CHACHA20_POLY1305_SHA256|NULL_SHA|RC4_128_SHA)|PSK_WITH_AES_(?:128_CBC_SHA|256_CBC_SHA)|RSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|CHACHA20_POLY1305_SHA256|NULL_SHA|RC4_128_SHA))|_(?:ECDSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|NULL_SHA|RC4_128_SHA)|RSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|NULL_SHA|RC4_128_SHA)|anon_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_CBC_SHA|256_CBC_SHA)|NULL_SHA|RC4_128_SHA)))|MPTY_RENEGOTIATION_INFO_SCSV)|NULL_WITH_NULL_NULL|PSK_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|CHACHA20_POLY1305_SHA256|NULL_SHA(?:256|384)?|RC4_128_SHA)|RSA_(?:PSK_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|NULL_SHA(?:256|384)?|RC4_128_SHA)|WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:256)?|GCM_SHA384))|NULL_(?:MD5|SHA(?:256)?)|RC4_128_(?:MD5|SHA))))|extWidthHook)|U(?:NORDERED|srActivity)|W(?:DEFNFnd|IDTHHook)|XPC_ACTIVITY_STATE_(?:C(?:HECK_IN|ONTINUE)|D(?:EFER|ONE)|RUN|WAIT)|a(?:b(?:brevDate|ortErr)|c(?:tiv(?:Dev|Mask|ateEvt|eFlag(?:Bit)?)|uteUpr(?:A|I|O|U))|d(?:bAddrMask|d(?:Re(?:fFailed|sFailed)|Size(?:Bit)?))|eBuildSyntax(?:Bad(?:D(?:ata|esc)|EOF|Hex|Negative|Token)|CoercedList|MissingQuote|No(?:C(?:lose(?:Brac(?:e|ket)|Hex|Paren|String)|olon)|E(?:OF|rr)|Key)|OddHex|Uncoerced(?:DoubleAt|Hex))|fp(?:A(?:ccessDenied|lready(?:LoggedInErr|Mounted)|uthContinue)|B(?:ad(?:DirIDType|IDErr|UAM|VersNum)|itmapErr)|C(?:a(?:llNot(?:Allowed|Supported)|nt(?:Mo(?:untMoreSrvre|ve)|Rename)|talogChanged)|ontainsSharedErr)|D(?:enyConflict|i(?:ffVolErr|rNot(?:Empty|Found)|skFull))|EofError|F(?:ileBusy|latVol)|I(?:D(?:Exists|NotFound)|conTypeError|nside(?:SharedErr|TrashErr)|temNotFound)|LockErr|MiscErr|No(?:MoreLocks|Server)|Object(?:Exists|Locked|NotFound|TypeErr)|P(?:armErr|wd(?:ExpiredErr|NeedsChangeErr|PolicyErr|SameErr|TooShortErr))|Range(?:NotLocked|Overlap)|S(?:ame(?:NodeErr|ObjectErr)|e(?:rverGoingDown|ssClosed))|TooManyFilesOpen|UserNotAuth|VolLocked)|l(?:phaLock(?:Bit)?|tDBoxProc)|pp(?:1(?:Evt|Mask)|2(?:Evt|Mask)|3(?:Evt|Mask)|4(?:Evt|Mask)|IsDaemon|M(?:emFullErr|odeErr)|VersionTooOld|e(?:arance(?:Bad(?:BrushIndexErr|CursorIndexErr|TextColorIndexErr)|Process(?:NotRegisteredErr|RegisteredErr)|ThemeHasNoAccents)|ndDITL(?:Bottom|Right))|le(?:Logo|MenuFolderIconResource))|s(?:i(?:AliasName|ParentName|ServerName|VolumeName|ZoneName)|p(?:B(?:adVersNum|ufTooSmall)|No(?:Ack|MoreSess|Servers)|ParamErr|S(?:e(?:rverBusy|ssClosed)|izeErr)|TooMany))|t(?:AbsoluteCenter|Bottom(?:Left|Right)?|Center(?:Bottom|Left|Right|Top)|HorizontalCenter|Left|None|Right|Top(?:Left|Right)?|VerticalCenter|om(?:IndexInvalidErr|sNotOfSameTypeErr)|p(?:BadRsp|LenErr))|u(?:t(?:hFailErr|oKey(?:Mask)?)|xiliaryExportDataUnavailable))|b(?:A(?:ccessCntl|llowCDiDataHandler|ncestorModDateChanges)|DoNotDisplay|Ha(?:ndleAERecording|s(?:B(?:TreeMgr|lankAccessPrivileges)|C(?:atSearch|opyFile)|D(?:esktopMgr|irectIO)|ExtFSVol|F(?:ileIDs|olderLock)|MoveRename|OpenDeny|PersonalAccessPrivileges|ShortName|UserGroupList))|Is(?:AutoMounted|Case(?:Preserving|Sensitive)|Ejectable|On(?:ExternalBus|InternalBus)|Removable)|L(?:2PCanMapFileBlocks|anguageMask|imitFCBs|ocalWList)|No(?:BootBlks|DeskItems|LclSync|MiniFndr|RootTimes|S(?:witchTo|ysDir)|V(?:NEdit|olumeSizes))|ParentModDateChanges|S(?:cript(?:LanguageMask|Mask)|upports(?:2TBFiles|AsyncRequests|Ex(?:clusiveLocks|tendedFileSecurity)|FS(?:CatalogSearch|ExchangeObjects)|HFSPlusAPIs|Journaling|LongNames|MultiScriptNames|NamedForks|S(?:ubtreeIterators|ymbolicLinks)|TrashVolumeCache))|T(?:akeActiveEvent|rshOffLine)|a(?:d(?:ATPSkt|B(?:tSlpErr|uffNum)|C(?:allOrderErr|hannel|ksmErr|o(?:decCharacterizationErr|mponent(?:Instance|Selector|Type)|ntrollerHeight))|D(?:BtSlp|Cksum|ataRefIndex|e(?:lim|pthErr)|ictFormat|rag(?:FlavorErr|ItemErr|RefErr))|E(?:dit(?:Index|List|ionFileErr)|nding|xtResource)|F(?:CBErr|i(?:dErr|leFormat)|o(?:lderDescErr|rmat))|I(?:mage(?:Description|Err|RgnErr)|nputText)|LocNameErr|M(?:DBErr|ovErr)|P(?:asteboard(?:FlavorErr|I(?:ndexErr|temErr)|SyncErr)|ortNameErr|rofileError|ublicMovieAtom)|R(?:eqErr|outingSizeErr)|S(?:GChannel|crapRefErr|e(?:ctionErr|rviceMethodErr)|ubPartErr)|Tra(?:ckIndex|nslation(?:RefErr|SpecErr))|UnitErr)|se(?:DblQuote|SingQuote))|dNamErr|re(?:akRecd|veMark)|t(?:DupRecErr|Key(?:AttrErr|LenErr)|NoSpace|RecNotFnd|n(?:Ctrl|State(?:Bit)?))|uf(?:2SmallErr|TooSmall|fer(?:IsSmall|sTooSmall)))|c(?:A(?:DBAddress|EList|ccessory(?:Process|Suitcase)|ddress(?:Spec)?|lias(?:File|List|OrString)|p(?:pl(?:eTalkAddress|ication(?:File|Process)?)|ril)|rc|ugust)|B(?:o(?:dyColor|olean)|usAddress)|C(?:ell|har|l(?:assIdentifier|ipping(?:File|Window)|osure)|o(?:erc(?:e(?:KataHiragana|LowerCase|OneByteToTwoByte|Remove(?:Diacriticals|Hyphens|Punctuation|WhiteSpace)|SmallKana|UpperCase|Zenkakuhankaku)|ion)|l(?:orTable|umn)|n(?:stant|t(?:ainer(?:Window)?|entSpace|rolPanelFile))))|D(?:TPWindow|e(?:cember|pthErr|sk(?:AccessoryFile|top(?:Printer)?)|v(?:Err|Spec))|isk|ocument(?:File)?|rawingArea|ynamicLibrary)|E(?:n(?:tireContents|umeration)|thernetAddress|ventIdentifier)|F(?:TPItem|ebruary|i(?:le|reWireAddress|xed(?:Point|Rectangle)?)|o(?:lder|nt(?:File|Suitcase))|r(?:ame(?:Color|work)|iday))|Gr(?:aphic(?:Line|Object|Shape|Text)|oup(?:edGraphic)?)|H(?:TML|andle(?:Breakpoint|r))|I(?:PAddress|conFamily|n(?:foWindow|sertion(?:Loc|Point)|t(?:ern(?:alFinderObject|etAddress)|l(?:Text|WritingCode)))|tem)|J(?:anuary|u(?:ly|ne))|Key(?:Form|Identifier|stroke)|L(?:abel|i(?:n(?:e|kedList)|st(?:Element|Or(?:Record|String)|RecordOrString)?)|o(?:calTalkAddress|ng(?:DateTime|Fixed(?:Point|Rectangle)?|Integer|Point|Rectangle)))|M(?:a(?:chine(?:Loc)?|rch|tchErr|y)|enu(?:Item)?|issingValue|on(?:day|th))|N(?:o(?:MemErr|vember)|umber(?:DateTimeOrString|Or(?:DateTime|String))?)|O(?:bject(?:BeingExamined|Specifier)?|ctober|nline(?:Disk|LocalDisk|RemoteDisk)|penableObject|val)|P(?:ICT|a(?:ckage|ragraph)|ixel(?:Map)?|olygon|r(?:e(?:ferences(?:Window)?|position)|o(?:ce(?:dure|ss)|perty|tectErr)))|QD(?:Point|Rectangle)|R(?:GBColor|a(?:ngeErr|wData)|e(?:al|c(?:ord|tangle)|ference|sErr)|o(?:tation|undedRectangle|w)|unningAddress)|S(?:CSIAddress|aturday|cript(?:ingAddition)?|e(?:conds|lection|ptember)|h(?:ar(?:ableContainer|ing(?:Privileges|Window))|ortInteger)|mallReal|ound(?:File)?|pecialFolders|t(?:atusWindow|orage|ring(?:Class)?)|u(?:itcase|nday)|ymbol)|T(?:able|e(?:mpMemErr|xt(?:Color|Flow|Styles)?)|hu(?:mbColor|rsday)|okenRingAddress|rash|uesday|ype)|U(?:RL|SBAddress|ndefined|ser(?:Identifier)?)|Ve(?:ctor|rsion)|W(?:e(?:dnesday|ekday)|indow|ord|ritingCodeInfo)|Zone|a(?:l(?:Arabic(?:Civil|Lunar)|Coptic|Gregorian|J(?:apanese|ewish)|Persian|l(?:NotSupportedByNodeErr|erSecuritySession))|n(?:cel|not(?:BeLeafAtomErr|DeferErr|FindAtomErr|M(?:akeContiguousErr|oveAttachedController)|SetWidthOfAttachedController)|t(?:Create(?:PickerWindow|SingleForkFile)|DoThatInCurrentMode|EnableTrack|FindHandler|GetFlavorErr|LoadP(?:ackage|ick(?:MethodErr|er))|OpenHandler|PutPublicMovieAtom|Re(?:adUtilities|ceiveFromSynthesizerOSErr)|S(?:endToSynthesizerOSErr|tepErr)))|tChangedErr|utionIcon)|bNotFound|dev(?:GenErr|MemErr|ResErr|Unset)|e(?:dilla|nt(?:eredDot|ury))|frag(?:A(?:bortClosureErr|rchitectureErr)|C(?:F(?:M(?:InternalErr|StartupErr)|ragRsrcErr)|losureIDErr|on(?:nectionIDErr|t(?:ainerIDErr|extIDErr)))|DupRegistrationErr|ExecFileRefErr|F(?:i(?:leSizeErr|rst(?:ErrCode|ReservedCode))|ragment(?:CorruptErr|FormatErr|UsageErr))|I(?:mportToo(?:NewErr|OldErr)|nit(?:AtBootErr|FunctionErr|LoopErr|OrderErr))|L(?:astErrCode|ibConnErr)|MapFileErr|No(?:ApplicationErr|ClientMemErr|IDsErr|LibraryErr|P(?:ositionErr|rivateMemErr)|RegistrationErr|S(?:ectionErr|ymbolErr)|tClosureErr)|OutputLengthErr|R(?:eservedCode_(?:1|2|3)|srcForkErr)|StdFolderErr|UnresolvedErr)|h(?:a(?:nnel(?:Busy|NotBusy)|rCodeMask)|eckBoxProc|kCtrl)|ircumflex(?:Upr(?:A|E|I|O|U))?|kSumErr|l(?:earDev|k(?:RdErr|WrErr)|os(?:Err|eDev)|rBit)|m(?:1(?:0CLRData|1CLRData|2CLRData|3CLRData|4CLRData|5CLRData|6_8ColorPacking)|24_8ColorPacking|3(?:2_(?:16ColorPacking|32ColorPacking|8ColorPacking)|CLRData)|4(?:0_8ColorPacking|8_(?:16ColorPacking|8ColorPacking)|CLRData)|5(?:6_8ColorPacking|CLRData)|6(?:4_(?:16ColorPacking|8ColorPacking)|CLRData)|7CLRData|8(?:CLRData|_8ColorPacking)|9CLRData|A(?:RGB(?:32(?:PmulSpace|Space)|64(?:L(?:PmulSpace|Space)|PmulSpace|Space))|ToB(?:0Tag|1Tag|2Tag)|b(?:ortWriteAccess|s(?:oluteColorimetric|tractClass))|lpha(?:FirstPacking|LastPacking|PmulSpace|Space)|sciiData)|B(?:ToA(?:0Tag|1Tag|2Tag)|e(?:ginAccess|stMode)|inaryData|l(?:ackPointCompensation(?:Mask)?|ue(?:ColorantTag|TRCTag))|radfordChromaticAdaptation|ufferBasedProfile)|C(?:M(?:SReservedFlagsMask|Y(?:Data|K(?:32Space|64(?:LSpace|Space)|Data|Space)))|S(?:1(?:C(?:hromTag|ustTag)|NameTag|ProfileVersion|TRCTag)|2ProfileVersion)|a(?:librationDateTimeTag|meraDeviceClass|nt(?:Co(?:ncatenateError|pyModifiedV1Profile)|Delete(?:Element|Profile)|GamutCheckError|XYZ))|h(?:arTargetTag|romaticAdaptationTag)|lose(?:Access|Spool)|o(?:lorSpace(?:AlphaMask|Class|EncodingMask|P(?:ackingMask|remulAlphaMask)|ReservedMask|Space(?:AndAlphaMask|Mask))|pyrightTag)|reateNewAccess|urrent(?:DeviceInfoVersion|Profile(?:InfoVersion|LocationSize|MajorVersion)))|D(?:e(?:fault(?:DeviceID|ProfileID)|vice(?:AlreadyRegistered|DBNotFoundErr|InfoVersion1|M(?:fgDescTag|odelDescTag)|NotRegistered|Profile(?:InfoVersion(?:1|2)|sNotFound)|State(?:AppleRsvdBits|Busy|De(?:fault|viceRsvdBits)|ForceNotify|Offline)))|isplay(?:Class|DeviceClass|Use)|raftMode)|E(?:lementTagNotFound|mbedded(?:Mask|Profile|Use(?:Mask)?)|ndAccess|rrIncompatibleProfile)|F(?:atalProfileErr|lare(?:0|100))|G(?:amut(?:CheckingMask|Result(?:1Space|Space)|Tag)|eometry(?:0(?:45or450|dord0)|Unknown)|lossy(?:MatteMask)?|r(?:ay(?:16(?:LSpace|Space)|8Space|A(?:16(?:PmulSpace|Space)|32(?:L(?:PmulSpace|Space)|PmulSpace|Space)|PmulSpace|Space)|Data|Space|TRCTag)|een(?:ColorantTag|TRCTag)))|H(?:LS(?:32Space|Data|Space)|SV(?:32Space|Data|Space))|I(?:CC(?:ProfileVersion(?:2(?:1)?|4)|ReservedFlagsMask)|lluminant(?:A|D(?:5(?:0|5)|65|93)|EquiPower|F(?:2|8)|Unknown)|n(?:dexRangeErr|put(?:Class|Use)|ter(?:nalCFErr|polationMask)|valid(?:ColorSpace|DstMap|Profile(?:Comment|Location)?|S(?:earch|rcMap)))|terate(?:AllDeviceProfiles|Cu(?:rrentDeviceProfiles|stomDeviceProfiles)|DeviceProfilesMask|FactoryDeviceProfiles))|L(?:AB(?:24Space|32Space|48(?:LSpace|Space)|Space)|UV(?:32Space|Space)|abData|i(?:n(?:e(?:arChromaticAdaptation|sPer)|kClass)|ttleEndianPacking)|ong(?:10ColorPacking|8ColorPacking)|u(?:minanceTag|vData))|M(?:C(?:Eight(?:8Space|Space)|Five(?:8Space|Space)|H(?:5Data|6Data|7Data|8Data)|S(?:even(?:8Space|Space)|ix(?:8Space|Space)))|a(?:cintosh|gicNumber|keAndModelTag)|e(?:asurementTag|dia(?:BlackPointTag|WhitePointTag)|thod(?:Error|NotFound))|icrosoft)|N(?:a(?:med(?:Color(?:2Tag|Class|NotFound|Tag)|Data|Indexed(?:32(?:LSpace|Space)|Space))|tiveDisplayInfoTag)|o(?:C(?:olorPacking|urrentProfile)|GDevicesError|ProfileBase|Space|rmalMode)|umHeaderElements)|O(?:neBitDirectPacking|pen(?:Read(?:Access|Spool)|Write(?:Access|Spool))|riginalProfileLocationSize|utput(?:Class|Use))|P(?:S(?:2(?:C(?:RD(?:0Tag|1Tag|2Tag|3Tag|VMSizeTag)|SATag)|RenderingIntentTag)|7bit|8bit)|a(?:rametricType(?:0|1|2|3|4)|thBasedProfile)|erceptual|r(?:e(?:fsSynchError|view(?:0Tag|1Tag|2Tag))|interDeviceClass|o(?:file(?:Description(?:MLTag|Tag)|Error|IterateDataVersion(?:1|2|3|4)|MajorVersionMask|NotFound|SequenceDescTag|sIdentical)|of(?:DeviceClass|Use))|trDefaultScreens))|QualityMask|R(?:GB(?:16(?:LSpace|Space)|24Space|32Space|48(?:LSpace|Space)|565(?:LSpace|Space)|A(?:32(?:PmulSpace|Space)|64(?:L(?:PmulSpace|Space)|PmulSpace|Space)|PmulSpace|Space)|Data|Space)|angeOverFlow|e(?:ad(?:Access|Spool)|d(?:ColorantTag|TRCTag)|flective(?:TransparentMask)?|lativeColorimetric|servedSpace(?:1|2)|verseChannelPacking))|S(?:RGB(?:16ChannelEncoding|Data)|aturation|c(?:annerDeviceClass|reening(?:DescTag|Tag))|earchError|i(?:g(?:C(?:rdInfoType|urveType)|Dat(?:aType|eTimeType)|Lut(?:16Type|8Type)|M(?:akeAndModelType|easurementType|ulti(?:Funct(?:A2BType|B2AType)|LocalizedUniCodeType))|Na(?:medColor(?:2Type|Type)|tiveDisplayInfoType)|P(?:S2CRDVMSizeType|arametricCurveType|rofile(?:DescriptionType|SequenceDescType))|S(?:15Fixed16Type|creeningType|ignatureType)|TextType|U(?:1(?:6Fixed16Type|Fixed15Type)|Int(?:16Type|32Type|64Type|8Type)|crBgType|nicodeTextType)|Vi(?:deoCardGammaType|ewingConditionsType)|XYZType)|liconGraphics)|olaris|potFunction(?:Cross|D(?:efault|iamond)|Ellipse|Line|Round|Square|Unknown)|tdobs(?:19(?:31TwoDegrees|64TenDegrees)|Unknown))|T(?:aligent|echnology(?:AMDisplay|CRTDisplay|D(?:igitalCamera|yeSublimationPrinter)|Electro(?:photographicPrinter|staticPrinter)|F(?:ilm(?:Scanner|Writer)|lexography)|Gravure|InkJetPrinter|OffsetLithography|P(?:MDisplay|hoto(?:CD|ImageSetter|graphicPaperPrinter)|rojectionTelevision)|ReflectiveScanner|Silkscreen|T(?:ag|hermalWaxPrinter)|Video(?:Camera|Monitor)))|U(?:crBgTag|nsupportedDataType|seDefaultChromaticAdaptation)|V(?:i(?:deoCardGamma(?:FormulaType|Ta(?:bleType|g))|ewingConditions(?:DescTag|Tag))|onKriesChromaticAdaptation)|W(?:ord5(?:65ColorPacking|ColorPacking)|rite(?:Access|Spool))|XYZ(?:24Space|32Space|48(?:LSpace|Space)|Data|Space)|Y(?:CbCrData|XY(?:32Space|Space)|xyData)|apFontTableTag|dKey(?:Bit)?|p(?:Alias(?:NoFlags|OnlyThisFile)|IsMissing|ThreadSafe|WantsRegisterMessage))|o(?:dec(?:AbortErr|BadDataErr|C(?:ant(?:QueueErr|WhenErr)|onditionErr)|D(?:ataVersErr|isabledErr|roppedFrameErr)|E(?:rr|xtensionNotFoundErr)|ImageBufErr|N(?:eed(?:AccessKeyErr|ToFlushChainErr)|o(?:MemoryPleaseWaitErr|thingToBlitErr))|O(?:ffscreenFailed(?:Err|PleaseRetryErr)|penErr)|ParameterDialogConfirm|S(?:creenBufErr|izeErr|poolErr)|UnimpErr|WouldOffscreenErr)|l(?:lection(?:I(?:ndexRangeErr|tem(?:LockedErr|NotFoundErr))|VersionErr)|or(?:SyncNotInstalled|sRequestedErr))|mponent(?:AutoVersionIncludeFlags|D(?:ll(?:EntryNotFoundErr|LoadErr)|o(?:AutoVersion|ntRegister))|HasMultiplePlatforms|LoadResident|Not(?:Captured|ThreadSafeErr)|WantsUnregister)|n(?:nectionInvalid|straintReachedErr|t(?:ainer(?:AlreadyOpenWrn|NotFoundWrn)|rol(?:Err|HandleInvalidErr|InvalidDataVersionErr|Key(?:Bit)?|P(?:anelFolderIconResource|roperty(?:Invalid|NotFoundErr))|ler(?:BoundsNotExact|HasFixedHeight))))|pyDev|r(?:Err|eFoundationUnknownErr)|uld(?:Not(?:ParseSourceFileErr|ResolveDataRef|UseAnExistingSample)|ntGetRequiredComponent))|rash|trlItem|u(?:r(?:NumberPartsVersion|r(?:LeadingZ|NegSym|SymLead|TrailingZ|ent(?:CurLang|DefLang))|sorDev)|tDev))|d(?:BoxProc|InstErr|RemovErr|a(?:t(?:a(?:Already(?:Closed|OpenForWrite)|No(?:DataRef|tOpenFor(?:Read|Write))|VerErr)|e(?:StdMask|Time(?:Invalid|NotFound)))|y(?:Field|LdingZ|Mask|Of(?:Week(?:Field|Mask)|Year(?:Field|Mask))))|blDagger|c(?:eExtErr|m(?:B(?:ad(?:D(?:ataSizeErr|ictionaryErr)|F(?:eatureErr|i(?:eld(?:InfoErr|TypeErr)|ndMethodErr))|KeyErr|PropertyErr)|lockFullErr|ufferOverflowErr)|D(?:ictionary(?:BusyErr|NotOpenErr)|upRecordErr)|IterationCompleteErr|N(?:ecessaryFieldErr|o(?:AccessMethodErr|FieldErr|RecordErr|tDictionaryErr))|P(?:aramErr|ermissionErr|rotectedErr)|TooManyKeyErr))|dp(?:LenErr|SktErr)|e(?:activDev|bugging(?:Duplicate(?:OptionErr|SignatureErr)|ExecutionContextErr|Invalid(?:NameErr|OptionErr|SignatureErr)|No(?:CallbackErr|MatchErr))|fault(?:Component(?:Any(?:Flags(?:AnyManufacturer(?:AnySubType)?)?|Manufacturer|SubType)|Identical)|PhysicalEntryCount)|limPad|s(?:criptorFontTableTag|k(?:PatID|top(?:DamagedErr|IconResource))|tPortErr)|viceCantMeetRequest)|i(?:a(?:eresisUpr(?:E|I|Y)|log(?:Kind|NoTimeoutErr))|ffVolErr|giUnimpErr|r(?:FulErr|NFErr|ectXObjectAlreadyExists)|sk(?:Evt|Mask))|my|o(?:All|Color|F(?:ace|ont)|Size|Toggle|cumentProc|m(?:Cannot|Native|TranslateFirst|Wildcard)|tlessLwrI|ubleAcute)|r(?:agNotAcceptedErr|iver(?:Evt|HardwareGoneErr|Mask)|opFolderIconResource|vQType)|s(?:32BitMode|AddressErr|B(?:ad(?:L(?:aunch|ibrary)|Patch(?:Header)?|S(?:ANEOpcode|lotInt|tartupDisk))|u(?:fPtrTooLow|sError))|C(?:DEFNotFound|antHoldSystemHeap|hkErr|oreErr)|Di(?:rtyDisk|sassemblerInstalled)|ExtensionsDisabled|F(?:PErr|SErr|inderErr|orcedQuit)|G(?:ibblyMovedToDisabledFolder|reeting)|H(?:D20Installed|MenuFindErr)|I(?:OCoreErr|llInstErr|rqErr)|L(?:ine(?:AErr|FErr)|o(?:adErr|stConnectionToNetworkDisk))|M(?:B(?:ATA(?:PISysError|SysError)|ExternFlpySysError|FlpySysError|SysError|arNFnd)|DEFNotFound|ac(?:OSROMVersionTooOld|sBugInstalled)|emFullErr|i(?:scErr|xedModeFailure)|ustUseFCBAccessors)|N(?:eedToWriteBootBlocks|o(?:Exts(?:Disassembler|MacsBug)|FPU|P(?:a(?:ckErr|tch)|k(?:1|2|3|4|5|6|7))|t(?:EnoughRAMToBoot|The1)))|O(?:ldSystem|vflowErr)|P(?:CCardATASysError|arityErr|rivErr)|R(?:AMDiskTooBig|e(?:insert|moveDisk))|S(?:CSIWarn|hutDownOrRes(?:tart|ume)|tknHeap|witchOffOrRestart|ys(?:Err|tem(?:FileErr|RequiresPowerPC)))|TraceErr|UnBootableSystem|VM(?:BadBackingStore|DeferredFuncTableFull)|W(?:DEFNotFound|riteToSupervisorStackGuardPage)|ZeroDivErr|kFulErr)|tQType|u(?:mmyType|p(?:FNErr|licate(?:AtomTypeAndIDErr|F(?:lavorErr|olderDescErr)|HandlerErr|PasteboardFlavorErr|RoutingErr|ScrapFlavorErr))|ration(?:Day|Forever|Hour|Mi(?:crosecond|llisecond|nute)|NoWait|Second))|ym)|e(?:A(?:DB|ddressSpec|nalogAudio|ppleTalk|udio(?:Line(?:In|Out)|Out))|Bus|C(?:DROM|apsLockDown|learKey|o(?:mm(?:Slot|andDown)|n(?:duit|trolDown)))|D(?:VD|e(?:leteKey|viceType)|i(?:gitalAudio|splay)|ownArrowKey)|E(?:n(?:dKey|terKey)|scapeKey|thernet)|F(?:1(?:0Key|1Key|2Key|3Key|4Key|5Key|Key)|2Key|3Key|4Key|5Key|6Key|7Key|8Key|9Key|ireWire|loppy|orwardDelKey)|H(?:D|elpKey|omeKey)|I(?:P|RTalk|nfrared|rDA)|Key(?:Kind|board)|L(?:CD|e(?:ftArrowKey|nErr)|ocalTalk)|M(?:ac(?:IP|Video)|icrophone|o(?:d(?:em(?:P(?:ort|rinterPort))?|ifiers)|nitorOut|use)|ultiErr)|NuBus(?:Card)?|OptionDown|P(?:C(?:I(?:bus|card)|card)|DS(?:card|slot)|PP|age(?:DownKey|UpKey)|o(?:intingDevice|stScript)|r(?:inter(?:Port)?|otocol))|R(?:eturnKey|ightArrowKey)|S(?:CSI|VGA|cheme|erial|hiftDown|peakers|torageDevice|video)|T(?:abKey|okenRing|rack(?:ball|pad))|U(?:SB|pArrowKey)|Video(?:In|Monitor|Out)|WS(?:ArrayType|BooleanType|D(?:at(?:aType|eType)|ictionaryType|oubleType)|IntegerType|NullType|StringType|UnknownType)|dit(?:Text|i(?:ngNotAllowed|onMgrInitErr))|mptyPathErr|n(?:dOfDataReached|um(?:A(?:fterDate|l(?:iases|l(?:D(?:isks|ocuments)|LocalDisks|OpenFolders|RemoteDisks))|nyDate|rr(?:angement|ows))|B(?:e(?:foreDate|tweenDate)|ooleanValues)|Con(?:flicts|sid(?:erations|sAndIgnores))|Date|ExistingItems|Fo(?:lders|ntsPanel)|Ge(?:neralPanel|stalt)|I(?:conSize|nfoWindowPanel)|Justification|KeyForm|La(?:rgeIconSize|st(?:Month|Week|Year))|M(?:emoryPanel|i(?:niIconSize|scValues))|O(?:lderItems|nDate)|P(?:osition|r(?:efs(?:ButtonViewPanel|GeneralPanel|IconViewPanel|L(?:abelPanel|istViewPanel)|WindowPanel)|otection))|Quality|S(?:aveOptions|haringPanel|mallIconSize|ortDirection(?:Normal|Reverse)?|t(?:at(?:ionery|usNConfigPanel)|yle))|T(?:his(?:Month|Week|Year)|oday|ransferMode)|ViewBy|Where|Yesterday)|v(?:BadVers|NotPresent|VersTooBig))|ofErr|r(?:a(?:Field|Mask)|r(?:A(?:E(?:AccessorNotFound|B(?:ad(?:KeyForm|ListItem|TestKey)|u(?:fferTooSmall|ildSyntaxError))|C(?:ant(?:HandleClass|PutThatThere|SupplyType|Undo)|o(?:ercionFail|rruptData))|D(?:esc(?:IsNull|NotFound)|uplicateHandler)|E(?:mptyListContainer|vent(?:F(?:ailed|iltered)|Not(?:Handled|Permitted)|WouldRequireUserConsent))|HandlerNotFound|I(?:llegalIndex|mpossibleRange|n(?:Transaction|dexTooLarge))|LocalOnly|N(?:e(?:gativeCount|werVersion)|o(?:Such(?:Logical|Object|Transaction)|User(?:Interaction|Selection)|t(?:A(?:EDesc|S(?:ingleObject|pecialFunction)|n(?:E(?:lement|numMember)|ObjSpec)|ppleEvent)|Modifiable)))|P(?:aramMissed|r(?:ivilegeError|opertiesClash))|Re(?:adDenied|c(?:eive(?:EscapeCurrent|Terminate)|ordingIsAlreadyOn)|plyNot(?:Arrived|Valid))|Stream(?:AlreadyConverted|BadNesting)|T(?:argetAddressNotPermitted|imeout|ypeError)|Unknown(?:AddressType|ObjectType|SendMode)|ValueOutOfRange|W(?:aitCanceled|r(?:iteDenied|ong(?:DataType|NumberArgs))))|S(?:CantCo(?:mpareMoreThan32k|nsiderAndIgnore)|I(?:llegalFormalParameter|nconsistentNames)|NoResultReturned|ParameterNotForEvent|TerminologyNestingTooDeep)|borted|lreadyInImagingMode|ttention|uthorization(?:BadAddress|Canceled|Denied|ExternalizeNotAllowed|In(?:ter(?:actionNotAllowed|nal(?:izeNotAllowed)?)|valid(?:Flags|Pointer|Ref|Set|Tag))|Success|ToolE(?:nvironmentError|xecuteFailure)))|C(?:an(?:NotInsertWhileWalkProcInProgress|notUndo|tEmbed(?:IntoSelf|Root))|o(?:ntrol(?:DoesntSupportFocus|HiddenOrDisabled|IsNotEmbedder|sAlreadyExist)|r(?:eEndianData(?:DoesNotMatchFormat|Too(?:LongForFormat|ShortForFormat))|ruptWindowDescription)|uldntSetFocus)|pp(?:General|Last(?:SystemDefinedError|UserDefinedError)|bad_(?:alloc|cast|exception|typeid)|domain_error|i(?:nvalid_argument|os_base_failure)|l(?:ength_error|ogic_error)|o(?:ut_of_range|verflow_error)|r(?:ange_error|untime_error)|underflow_error))|D(?:SPQueueSize|ata(?:Browser(?:I(?:nvalidProperty(?:Data|Part)|temNot(?:Added|Found))|NotConfigured|PropertyNot(?:Found|Supported))|NotSupported|SizeMismatch))|E(?:mptyScrap|n(?:dOf(?:Body|Document)|gineNotFound))|F(?:S(?:AttributeNotFound|Bad(?:AllocFlags|Buffer|F(?:SRef|ork(?:Name|Ref))|I(?:nfoBitmap|te(?:mCount|ratorFlags))|PosMode|SearchParams)|Fork(?:Exists|NotFound)|IteratorNot(?:Found|Supported)|Missing(?:CatInfo|Name)|N(?:ameTooLong|o(?:MoreItems|t(?:AFolder|EnoughSpaceForOperation)))|OperationNotSupported|PropertyNotValid|QuotaExceeded|RefsDifferent|UnknownCall)|inder(?:AppFolderProtected|B(?:adPackageContents|oundsWrong)|C(?:an(?:notPutAway|t(?:DeleteImmediately|Move(?:Source|To(?:Ancestor|Destination))|Overwrite|UseTrashedItems))|orruptOpenFolderList)|FileSharingMustBeOn|I(?:ncestuousMove|sBusy|temAlreadyInDest)|L(?:astReserved|ockedItemsInTrash)|MustBeActive|NoInvisibleFiles|OnlyLockedItemsInTrash|Pro(?:gramLinkingMustBeOn|perty(?:DoesNotApply|NowWindowBased))|S(?:harePointsCantInherit|ysFolderProtected)|Un(?:knownUser|supportedInsidePackages)|VolumeNotFound|Window(?:MustBe(?:ButtonView|IconView|ListView)|NotOpen|WrongType))|loatingWindowsNotInitialized|wdReset)|HMIllegalContentForM(?:aximumState|inimumState)|I(?:A(?:AllocationErr|BufferTooSmall|Canceled|EndOfTextRun|InvalidDocument|No(?:Err|MoreItems)|ParamErr|TextExtractionErr|UnknownErr)|nvalid(?:PartCode|Range|Window(?:P(?:roperty|tr)|Ref))|te(?:m(?:AlreadyInTree|Not(?:Control|FoundInTree))|ratorReachedEnd))|K(?:B(?:Fail(?:Setting(?:ID|TranslationTable)|WritePreference)|IlligalParameters|PS2KeyboardNotAvailable)|C(?:AuthFailed|BufferTooSmall|CreateChainFailed|D(?:ata(?:Not(?:Available|Modifiable)|TooLarge)|uplicate(?:Callback|Item|Keychain))|I(?:n(?:teraction(?:NotAllowed|Required)|valid(?:Callback|ItemRef|Keychain|SearchRef))|temNotFound)|KeySizeNotAllowed|No(?:CertificateModule|DefaultKeychain|PolicyModule|S(?:torageModule|uch(?:Attr|Class|Keychain))|tAvailable)|ReadOnly(?:Attr)?|WrongKCVersion))|M(?:arginWilllNotFit|essageNotSupported)|N(?:eedsCompositedWindow|o(?:HiliteText|RootControl|nContiuousAttribute|t(?:InImagingMode|ValidTree)))|O(?:SA(?:AppNotHighLevelEventAware|BadS(?:elector|torageType)|C(?:ant(?:A(?:ccess|ssign)|C(?:oerce|reate)|GetTerminology|Launch|OpenComponent|StorePointers)|o(?:mponentMismatch|rrupt(?:Data|Terminology)))|D(?:ata(?:BlockTooLarge|Format(?:Obsolete|TooNew))|ivideByZero)|GeneralError|In(?:ternalTableOverflow|validID)|N(?:oSuchDialect|umericOverflow)|RecordingIsAlreadyOn|S(?:criptError|ourceNotAvailable|tackOverflow|ystemError)|TypeError)|ffset(?:I(?:nvalid|sOutsideOfView)|NotOnElementBounday)|pen(?:Denied|ing))|R(?:e(?:adOnlyText|fNum)|ootAlreadyExists)|S(?:SL(?:ATS(?:C(?:ertificate(?:HashAlgorithmViolation|TrustViolation)|iphersuiteViolation)|LeafCertificateHashAlgorithmViolation|Minimum(?:KeySizeViolation|VersionViolation)|Violation)|B(?:ad(?:C(?:ert(?:ificateStatusResponse)?|ipherSuite|onfiguration)|RecordMac)|ufferOverflow)|C(?:ert(?:Expired|NotYetValid|ificateRequired)|l(?:ient(?:CertRequested|HelloReceived)|osed(?:Abort|Graceful|NoNotify))|on(?:figurationFailed|nectionRefused)|rypto)|Dec(?:o(?:deError|mpressFail)|ryptionFail)|FatalAlert|H(?:andshakeFail|ostNameMismatch)|I(?:llegalParam|n(?:appropriateFallback|ternal))|M(?:issingExtension|oduleAttach)|N(?:e(?:gotiation|tworkTimeout)|oRootCert)|P(?:eer(?:A(?:ccessDenied|uthCompleted)|Bad(?:Cert|RecordMac)|Cert(?:Expired|Revoked|Unknown)|Dec(?:o(?:deError|mpressFail)|rypt(?:Error|ionFail))|ExportRestriction|HandshakeFail|In(?:sufficientSecurity|ternalError)|NoRenegotiation|ProtocolVersion|RecordOverflow|U(?:n(?:expectedMsg|knownCA|supportedCert)|serCancelled))|rotocol)|RecordOverflow|SessionNotFound|TransportReset|Un(?:expected(?:Message|Record)|known(?:PSKIdentity|RootCert)|recognizedName|supportedExtension)|W(?:eakPeerEphemeralDHKey|ouldBlock)|XCertChainInvalid)|e(?:c(?:A(?:CL(?:AddFailed|ChangeFailed|DeleteFailed|NotSimple|ReplaceFailed)|ddin(?:LoadFailed|UnloadFailed)|l(?:gorithmMismatch|locate|readyLoggedIn)|pple(?:AddAppACLSubject|InvalidKey(?:EndDate|StartDate)|PublicKeyIncomplete|S(?:SLv2Rollback|ignatureMismatch))|tt(?:achHandleBusy|ributeNotInContext)|uthFailed)|B(?:adReq|lockSizeMismatch|ufferTooSmall)|C(?:RL(?:AlreadySigned|BadURI|Expired|Not(?:Found|Trusted|ValidYet)|PolicyFailed|ServerDown)|S(?:AmbiguousBundleFormat|Bad(?:BundleFormat|CallbackValue|Di(?:ctionaryFormat|skImageFormat)|FrameworkVersion|LVArch|MainExecutable|NestedCode|ObjectFormat|Resource|TeamIdentifier)|C(?:MSTooLarge|ancelled)|D(?:B(?:Access|Denied)|SStoreSymlink|bCorrupt)|FileHardQuarantined|GuestInvalid|H(?:elperFailed|ost(?:Protocol(?:Contradiction|DedicationError|Invalid(?:Attribute|Hash)|NotProxy|RelativePath|StateError|Unrelated)|Reject))|In(?:foPlistFailed|ternalError|valid(?:A(?:ssociatedFileData|ttributeValues)|Entitlements|Flags|ObjectRef|Platform|RuntimeVersion|Symlink|TeamIdentifier))|MultipleGuests|No(?:Ma(?:inExecutable|tches)|SuchCode|t(?:A(?:Host|ppLike)|Supported))|O(?:bjectRequired|utdated)|Re(?:gularFile|q(?:Failed|Invalid|Unsupported)|source(?:DirectoryFailed|NotSupported|RulesInvalid|s(?:Invalid|Not(?:Found|Sealed)))|vokedNotarization)|S(?:ig(?:DB(?:Access|Denied)|nature(?:Failed|Invalid|NotVerifiable|Un(?:supported|trusted)))|taticCode(?:Changed|NotFound))|TooBig|Un(?:implemented|s(?:ealed(?:AppRoot|FrameworkRoot)|igned(?:NestedCode)?|upported(?:DigestAlgorithm|GuestAttributes)))|Vetoed|WeakResource(?:Envelope|Rules))|allbackFailed|ertificate(?:CannotOperate|Expired|N(?:ameNotAllowed|otValidYet)|PolicyNotAllowed|Revoked|Suspended|ValidityPeriodTooLong)|o(?:deSigning(?:Bad(?:CertChainLength|PathLengthConstraint)|Development|No(?:BasicConstraints|ExtendedKeyUsage))|nversionError|reFoundationUnknown)|reateChainFailed)|D(?:ata(?:Not(?:Available|Modifiable)|TooLarge|baseLocked|storeIsOpen)|e(?:code|vice(?:Error|Failed|Reset|VerifyFailed))|iskFull|skFull|uplicate(?:Callback|Item|Keychain))|E(?:MM(?:LoadFailed|UnloadFailed)|ndOfData|ventNotificationCallbackNotFound|xtendedKeyUsageNotCritical)|F(?:i(?:eldSpecifiedMultiple|leTooBig)|unction(?:Failed|IntegrityFail))|HostNameMismatch|I(?:DPFailure|O|n(?:DarkWake|comp(?:atible(?:DatabaseBlob|FieldFormat|KeyBlob|Version)|leteCertRevocationCheck)|putLengthError|sufficientC(?:lientID|redentials)|ter(?:action(?:NotAllowed|Required)|nal(?:Component|Error))|val(?:dCRLAuthority|id(?:A(?:CL|c(?:cess(?:Credentials|Request)|tion)|ddinFunctionTable|lgorithm(?:Parms)?|ttribute(?:AccessCredentials|B(?:ase|lockSize)|DLDBHandle|E(?:ffectiveBits|ndDate)|I(?:nitVector|terationCount)|Key(?:Length|Type)?|Label|Mode|OutputSize|P(?:a(?:dding|ssphrase)|ri(?:me|vateKeyFormat)|ublicKeyFormat)|R(?:andom|ounds)|S(?:alt|eed|tartDate|ubprime|ymmetricKeyFormat)|Version|WrappedKeyFormat)|uthority(?:KeyID)?)|B(?:aseACLs|undleInfo)|C(?:RL(?:Encoding|Group|Index|Type)?|allback|ert(?:Authority|ificate(?:Group|Ref))|ontext)|D(?:BL(?:ist|ocation)|ata(?:baseBlob)?|igestAlgorithm)|E(?:ncoding|xtendedKeyUsage)|FormType|GUID|Handle(?:Usage)?|I(?:D(?:Linkage)?|dentifier|n(?:dex(?:Info)?|putVector)|temRef)|Key(?:AttributeMask|Blob|Format|Hierarchy|Label|Ref|Usage(?:ForPolicy|Mask)|chain)|LoginName|ModifyMode|N(?:ame|e(?:tworkAddress|wOwner)|umberOfFields)|O(?:utputVector|wnerEdit)|P(?:VC|a(?:rsingModule|ss(?:throughID|wordRef))|o(?:inter|licyIdentifiers)|refsDomain)|Query|R(?:e(?:ason|cord|quest(?:Inputs|or)|sponseVector)|oot)|S(?:ampleValue|cope|e(?:archRef|rviceMask)|ignature|topOnPolicy|ub(?:ServiceID|ject(?:KeyID|Name)))|T(?:imeString|rustSetting(?:s)?|uple(?:Credendtials|Group)?)|Val(?:idityPeriod|ue))))|temNotFound)|Key(?:BlobTypeIncorrect|HeaderInconsistent|IsSensitive|SizeNotAllowed|UsageIncorrect)|LibraryReferenceNotFound|M(?:DSError|emoryError|issing(?:A(?:lgorithmParms|ttribute(?:AccessCredentials|B(?:ase|lockSize)|DLDBHandle|E(?:ffectiveBits|ndDate)|I(?:nitVector|terationCount)|Key(?:Length|Type)?|Label|Mode|OutputSize|P(?:a(?:dding|ssphrase)|ri(?:me|vateKeyFormat)|ublicKeyFormat)|R(?:andom|ounds)|S(?:alt|eed|tartDate|ubprime|ymmetricKeyFormat)|Version|WrappedKeyFormat))|Entitlement|RequiredExtension|Value)|o(?:bileMe(?:CSRVerifyFailure|FailedConsistencyCheck|NoRequestPending|Request(?:AlreadyPending|Queued|Redirected)|Server(?:AlreadyExists|Error|NotAvailable|ServiceErr))|dule(?:Man(?:ager(?:InitializeFailed|NotFound)|ifestVerifyFailed)|NotLoaded))|ultiple(?:ExecSegments|PrivKeys|ValuesUnsupported))|N(?:etworkFailure|o(?:AccessForItem|BasicConstraints(?:CA)?|CertificateModule|Default(?:Authority|Keychain)|FieldValues|PolicyModule|S(?:torageModule|uch(?:Attr|Class|Keychain))|TrustSettings|t(?:Available|Initialized|LoggedIn|Signer|Trusted)))|O(?:CSP(?:BadRe(?:quest|sponse)|No(?:Signer|tTrustedToAnchor)|Respon(?:der(?:InternalError|MalformedReq|SignatureRequired|TryLater|Unauthorized)|seNonceMismatch)|S(?:ignatureError|tatusUnrecognized)|Unavailable)|pWr|utputLengthError)|P(?:VC(?:AlreadyConfigured|ReferentNotFound)|a(?:ram|ssphraseRequired|thLengthConstraintExceeded)|kcs12VerifyFailure|olicyNotFound|rivilegeNot(?:Granted|Supported)|ublicKeyInconsistent)|Qu(?:erySizeUnknown|otaExceeded)|Re(?:adOnly(?:Attr)?|cordModified|jectedForm|quest(?:Descriptor|Lost|Rejected)|sourceSignBad(?:CertChainLength|ExtKeyUsage))|S(?:MIME(?:Bad(?:ExtendedKeyUsage|KeyUsage)|EmailAddressesNotFound|KeyUsageNotCritical|NoEmailAddress|SubjAltNameNotCritical)|SLBadExtendedKeyUsage|e(?:lfCheckFailed|rviceNotAvailable)|igningTimeMissing|tagedOperation(?:InProgress|NotStarted)|uccess)|T(?:agNotFound|imestamp(?:AddInfoNotAvailable|Bad(?:Alg|DataFormat|Request)|Invalid|Missing|NotTrusted|Re(?:jection|vocation(?:Notification|Warning))|S(?:erviceNotAvailable|ystemFailure)|TimeNotAvailable|Unaccepted(?:Extension|Policy)|Waiting)|rust(?:NotAvailable|SettingDeny))|U(?:n(?:implemented|known(?:C(?:RLExtension|ertExtension|riticalExtensionFlag)|Format|QualifiedCertStatement|Tag)|supported(?:AddressType|F(?:ieldFormat|ormat)|IndexInfo|Key(?:AttributeMask|Format|Label|Size|UsageMask)|Locality|Num(?:Attributes|Indexes|RecordTypes|SelectionPreds)|Operator|QueryLimits|Service|VectorOfBuffers))|serCanceled)|Verif(?:icationFailure|y(?:ActionFailed|Failed))|Wr(?:Perm|ongSecVersion))|ssion(?:AuthorizationDenied|In(?:ternal|valid(?:Attributes|Flags|Id))|Success|ValueNotSet))|tate)|T(?:askNotFound|opOf(?:Body|Document)|reeIsLocked)|U(?:n(?:known(?:AttributeTag|Control|Element)|recognizedWindowClass|supportedWindowAttributesForClass)|serWantsToDragWindow)|W(?:S(?:InternalError|ParseError|T(?:imeoutError|ransportError))|indow(?:Does(?:Not(?:FitOnscreen|HaveProxy)|ntSupportFocus)|NotFound|PropertyNotFound|RegionCodeInvalid|sAlreadyInitialized))))|url(?:A(?:FP|T)|EPPC|F(?:TP|ile)|Gopher|HTTP(?:S)?|IMAP|L(?:DAP|aunch)|M(?:ail(?:box)?|essage|ulti)|N(?:FS|NTP|ews)|POP|RTSP|SNews|Telnet|Unknown)|v(?:Type|e(?:nt(?:AlreadyPostedErr|ClassIn(?:correctErr|validErr)|DeferAccessibilityEventErr|H(?:andlerAlreadyInstalledErr|otKey(?:ExistsErr|InvalidErr))|InternalErr|KindIncorrectErr|Loop(?:QuitErr|TimedOutErr)|Not(?:HandledErr|InQueueErr)|Pa(?:rameterNotFoundErr|ssToNextTargetErr)|TargetBusyErr)|ryEvent)|tNotEnb)|x(?:UserBreak|cessCollsns|t(?:FSErr|en(?:dedBlock(?:Len)?|sionsFolderIconResource)|ra(?:ctErr|neousStrings))))|f(?:B(?:adPartsTable|estGuess|syErr)|D(?:esktop|isk)|E(?:mptyFormatString|xtra(?:Decimal|Exp|Percent|Separator))|Form(?:StrIsNAN|atO(?:K|verflow))|HasBundle|Invisible|LckdErr|Missing(?:Delimiter|Literal)|Negative|O(?:nDesk|utOfSynch)|Positive|SpuriousChars|Trash|VNumber|Zero|a(?:ceBit|talDateTime)|e(?:ature(?:FontTableTag|Unsupported)|tchReference)|i(?:Ligature|d(?:Exists|NotFound)|eldOrderNotIntl|le(?:BoundsErr|OffsetTooBigErr)|rst(?:DskErr|PickerError))|l(?:Ligature|avor(?:DataPromised|NotSaved|S(?:ender(?:Only|Translated)|ystemTranslated)|Type(?:HFS|PromiseHFS))|o(?:at(?:GrowProc|Proc|Side(?:GrowProc|Proc|Zoom(?:GrowProc|Proc))|Zoom(?:GrowProc|Proc))|ppyIconResource))|mt(?:1Err|2Err)|n(?:OpnErr|fErr)|o(?:nt(?:Bit|DecError|Not(?:Declared|OutlineErr)|Panel(?:FontSelectionQDStyleVersionErr|S(?:electionStyleErr|howErr))|SubErr|sFolderIconResource)|r(?:ceRead(?:Bit|Mask)|m(?:A(?:bsolutePosition|lias)|Creator|Name|PropertyID|R(?:ange|elativePosition)|Test|U(?:niqueID|serPropertyID)|Whose)))|raction|s(?:AtMark|CurPerm|D(?:SIntErr|ataTooBigErr)|From(?:LEOF|Mark|Start)|QType|R(?:d(?:AccessPerm|DenyPerm|Perm|Wr(?:Perm|ShPerm))|nErr|t(?:DirID|ParID))|SB(?:A(?:ccessDate(?:Bit)?|ttributeModDate(?:Bit)?)|Dr(?:BkDat(?:Bit)?|CrDat(?:Bit)?|FndrInfo(?:Bit)?|MdDat(?:Bit)?|NmFls(?:Bit)?|ParID(?:Bit)?|UsrWds(?:Bit)?)|F(?:l(?:Attrib(?:Bit)?|BkDat(?:Bit)?|CrDat(?:Bit)?|FndrInfo(?:Bit)?|LgLen(?:Bit)?|MdDat(?:Bit)?|P(?:arID(?:Bit)?|yLen(?:Bit)?)|R(?:LgLen(?:Bit)?|PyLen(?:Bit)?)|XFndrInfo(?:Bit)?)|ullName(?:Bit)?)|GroupID(?:Bit)?|N(?:egate(?:Bit)?|odeID(?:Bit)?)|P(?:artialName(?:Bit)?|ermissions(?:Bit)?)|Skip(?:HiddenItems(?:Bit)?|PackageContents(?:Bit)?)|UserID(?:Bit)?)|UnixPriv|Wr(?:AccessPerm|DenyPerm|Perm)|m(?:B(?:adF(?:FSNameErr|SD(?:LenErr|VersionErr))|usyFFSErr)|DuplicateFSIDErr|FFSNotFoundErr|NoAlternateStackErr|UnknownFSMMessageErr))|ullTrashIconResource)|g(?:WorldsNotSameDepthAndSizeErr|crOnMFMErr|e(?:n(?:CdevRangeBit|eric(?:ApplicationIconResource|CDROMIconResource|D(?:eskAccessoryIconResource|ocumentIconResource)|E(?:ditionFileIconResource|xtensionIconResource)|F(?:ileServerIconResource|olderIconResource)|HardDiskIconResource|MoverObjectIconResource|PreferencesIconResource|QueryDocumentIconResource|RAMDiskIconResource|S(?:tationeryIconResource|uitcaseIconResource)))|stalt(?:16Bit(?:AudioSupport|SoundIO)|20thAnniversary|32Bit(?:Addressing|Capable|QD(?:1(?:1|2|3))?|SysZone)|68(?:0(?:00|10|20|30(?:MMU)?|40(?:FPU|MMU)?)|8(?:51|8(?:1|2))|k)|8BitQD|A(?:DB(?:ISOKbdII|KbdII)|FPClient(?:3_(?:5|6(?:_(?:1|2|3))?|7(?:_2)?|8(?:_(?:1|3|4))?)|AttributeMask|CfgRsrc|MultiReq|SupportsIP|V(?:MUI|ersionMask))?|LM(?:Attr|Has(?:CFMSupport|RescanNotifiers|SF(?:Group|Location))|Present|Vers)|MU|T(?:A(?:Attr|Present)|SU(?:AscentDescentControlsFeature|B(?:atchBreakLinesFeature|iDiCursorPositionFeature|yCharacterClusterFeature)|D(?:ecimalTabFeature|irectAccess|ropShadowStyleFeature)|F(?:allbacks(?:Feature|ObjFeatures)|eatures)|GlyphBoundsFeature|Highlight(?:ColorControlFeature|InactiveTextFeature)|IgnoreLeadingFeature|L(?:ayoutC(?:acheClearFeature|reateAndCopyFeature)|ineControlFeature|owLevelOrigFeatures)|MemoryFeature|NearestCharLineBreakFeature|PositionToCursorFeature|StrikeThroughStyleFeature|T(?:abSupportFeature|extLocatorUsageFeature|rackingFeature)|U(?:nderlineOptionsStyleFeature|pdate(?:1|2|3|4|5|6|7))|Version)|alkVersion)|UXVersion|VLTree(?:Attr|PresentBit|Supports(?:HandleBasedTreeBit|TreeLockingBit))|WS(?:6150_6(?:0|6)|8(?:150_(?:110|80)|550)|9150_(?:120|80))|d(?:dressingModeAttr|minFeaturesFlagsAttr)|l(?:iasMgr(?:Attr|FollowsAliasesWhenResolving|Pre(?:fersPath|sent)|Re(?:quiresAccessors|solveAliasFileWithMountOptions)|Supports(?:AOCEKeychain|ExtendedCalls|FSCalls|RemoteAppletalk))|legroQD(?:Text)?|tivecRegistersSwappedCorrectlyBit)|ntiAliasedTextAvailable|pp(?:earance(?:Attr|CompatMode|Exists|Version)|le(?:Adjust(?:ADBKbd|ISOKbd|Keypad)|Events(?:Attr|Present)|Guide(?:IsDebug|Present)|Script(?:Attr|P(?:owerPCSupport|resent)|Version)|TalkVersion))|rbitorAttr|syncSCSI(?:INROM)?)|Bu(?:iltInSoundInput|sClkSpeed(?:MHz)?)|C(?:FM(?:99Present(?:Mask)?|Attr|Present(?:Mask)?)|PU(?:486|6(?:0(?:1|3(?:e(?:v)?)?|4(?:e(?:v)?)?)|80(?:00|10|20|30|40))|750(?:FX)?|970(?:FX|MP)?|Apollo|G4(?:74(?:47|50))?|Pentium(?:4|II|Pro)?|X86)|RM(?:Attr|P(?:ersistentFix|resent)|ToolRsrcCalls)|TBVersion|a(?:n(?:StartDragInFloatWindow|UseCGTextRendering)|r(?:bonVersion|dServicesPresent))|l(?:assic(?:II)?|oseView(?:Attr|DisplayMgrFriendly|Enabled))|o(?:l(?:lectionMgrVersion|or(?:Matching(?:Attr|LibLoaded|Version)|Picker(?:Version)?|Sync(?:1(?:0(?:4|5)?|1)|2(?:0|1(?:1|2|3)?|5|6(?:1)?)|30)))|mp(?:onent(?:Mgr|Platform)|ressionMgr)|n(?:nMgr(?:Attr|CMSearchFix|ErrorString|MultiAsyncIO|Present)|t(?:extualMenu(?:Attr|Has(?:AttributeAndModifierKeys|UnicodeSupport)|TrapAvailable|UnusedBit)|rol(?:M(?:gr(?:Attr|Present(?:Bit)?|Version)|sgPresentMask)|Strip(?:Attr|Exists|User(?:Font|HotKey)|Version(?:Fixed)?))))|untOfCPUs)|reatesAliasFontRsrc|urrentGraphicsVersion)|D(?:BAccessMgr(?:Attr|Present)|ITLExt(?:Attr|Present|SupportsIctb)|T(?:MgrSupportsFSM|P(?:Features|Info))|esktop(?:Pictures(?:Attr|Displayed|Installed)|SpeechRecognition)|i(?:alogM(?:gr(?:Attr|HasAquaAlert(?:Bit|Mask)|Present(?:Bit|Mask)?)|sgPresentMask)|ctionaryMgr(?:Attr|Present)|gitalSignatureVersion|s(?:kCacheSize|playMgr(?:Attr|C(?:an(?:Confirm|SwitchMirrored)|olorSyncAware)|GeneratesProfiles|Present|S(?:etDepthNotifies|leepNotifies)|Vers)))|ra(?:gMgr(?:Attr|FloatingWind|HasImageSupport|Present)|wSprocketVersion)|upSelectorErr)|E(?:MMU1|asyAccess(?:Attr|Locked|O(?:ff|n)|Sticky)|ditionMgr(?:Attr|Present|TranslationAware)|xt(?:ADBKbd|ISOADBKbd|ToolboxTable|en(?:ded(?:TimeMgr|WindowAttributes(?:Bit|Mask)?)|sionTableVersion)))|F(?:BC(?:CurrentVersion|IndexingState|Version|indexing(?:Critical|Safe))|PUType|S(?:A(?:llowsConcurrentAsyncIO|ttr)|IncompatibleDFA82|M(?:DoesDynamicLoad|Version)|NoMFSVols|Supports(?:2TBVols|4GBVols|DirectIO|ExclusiveLocks|H(?:FSPlusVols|ardLinkDetection))|UsesPOSIXPathsForConversion)|XfrMgr(?:A(?:sync|ttr)|ErrorString|MultiFile|Present)|i(?:le(?:AllocationZeroedBlocksBit|Mapping(?:Attr|MultipleFilesFix|Present))|nd(?:Folder(?:Attr|Present|RedirectionAttr)|er(?:Attr|CallsAEProcess|DropEvent|F(?:loppyRootComments|ullDragManagerSupport)|HasClippings|LargeAndNotSavedFlavorsOK|MagicPlacement|Supports4GBVolumes|U(?:nderstandsRedirectedDesktopFolder|ses(?:ExtensibleFolderManager|SpecialOpenFoldersFile))))|rstSlotNumber)|loppy(?:Attr|IsM(?:FMOnly|anualEject)|UsesDiskInPlace)|o(?:lder(?:DescSupport|Mgr(?:FollowsAliasesWhenResolving|Supports(?:Domains|ExtendedCalls|FSCalls)))|ntMgrAttr)|rontWindowMayBeHidden(?:Bit|Mask)|ullExtFSDispatching)|G(?:X(?:PrintingMgrVersion|Version)|raphics(?:Attr|Is(?:Debugging|Loaded|PowerPC)|Version))|H(?:a(?:rdware(?:Attr|Vendor(?:Apple|Code))|s(?:ASC|Color|D(?:eepGWorlds|irectPixMaps)|E(?:nhancedLtalk|xtendedDiskInit)|F(?:MTuner|SSpecCalls|ileSystemManager|loatingWindows(?:Bit|Mask)?)|G(?:PI(?:aTo(?:DCDa|RTxCa)|bToDCDb)|rayishTextOr)|H(?:FSPlusAPIs|WClosedCaptioning)|IRRemote|ParityCapability|ResourceOverrides|S(?:C(?:C|SI(?:96(?:1|2))?)|erialFader|ingleWindowMode(?:Bit|Mask)|o(?:ftPowerOff|und(?:Fader|InputDevice))|tereoDecoder|ystemIRFunction)|TVTuner|UniversalROM|V(?:IA(?:1|2)|idDecoderScaler)|Window(?:Buffering(?:Bit|Mask)?|Shadows(?:Bit|Mask))|ZoomedVideo))|elpMgr(?:Attr|Extensions|Present)|i(?:dePort(?:A|B)|ghLevelMatching))|I(?:NeedIRPowerOffConfirm|PCSupport|RDisabled|conUtilities(?:Attr|Has(?:32BitIcons|48PixelIcons|8BitDeepMasks|IconServices)|Present)|n(?:itHeapZerosOutHeapsBit|te(?:l|rnalDisplay)))|JapanAdjustADBKbd|K(?:BPS2(?:Keyboards|Set(?:IDToAny|TranslationTable))|eyboard(?:Type|sAttr))|L(?:aunch(?:C(?:anReturn|ontrol)|FullFileSpec)|ineLevelInput|o(?:cationErr|gical(?:PageSize|RAMSize)|wMemorySize))|M(?:B(?:Legacy|MultipleBays|SingleBay)|MUType|P(?:CallableAPIsAttr|DeviceManager|FileManager|TrapCalls)|ac(?:512KE|AndPad|C(?:entris6(?:10|50|60AV)|lassic|olorClassic)|II(?:c(?:i|x)|fx|si|v(?:i|m|x)|x)?|Kbd|LC(?:475|5(?:20|75|80)|II(?:I)?)?|OS(?:Compatibility(?:Box(?:Attr|HasSerial|Present|less))?|XQD(?:Text)?)|Plus(?:Kbd)?|Quadra(?:6(?:05|10|30|50|60AV)|700|8(?:00|40AV)|9(?:00|50))|SE(?:030)?|TV|XL|hine(?:Icon|Type))|e(?:diaBay|moryMap(?:Attr|Sparse)|nuMgr(?:A(?:quaLayout(?:Bit|Mask)|ttr)|CGImageMenuTitle(?:Bit|Mask)|M(?:oreThanFiveMenusDeep(?:Bit|Mask)|ultipleItemsWithCommandID(?:Bit|Mask))|Present(?:Bit|Mask)?|RetainsIconRef(?:Bit|Mask)|SendsMenuBoundsToDefProc(?:Bit|Mask))|ssageMgrVersion)|i(?:scAttr|xedMode(?:Attr|CFM68K(?:Has(?:State|Trap))?|PowerPC|Version))|u(?:lti(?:Channels|pleUsersState)|stUseFCBAccessors))|N(?:a(?:meRegistryVersion|tive(?:CPU(?:family|type)|ProcessMgrBit|T(?:imeMgr|ype1FontSupport)))|ew(?:HandleReturnsZeroedMemoryBit|PtrReturnsZeroedMemoryBit)|o(?:FPU|MMU|tification(?:MgrAttr|Present))|uBus(?:Connectors|Present|SlotCount))|O(?:CE(?:SFServerAvailable|T(?:B(?:Available|NativeGlueAvailable|Present)?|oolbox(?:Attr|Version)))|FA2available|S(?:Attr|L(?:CompliantFinder|InSystem)|Table|XFBCCurrentVersion)|pen(?:FirmwareInfo|Tpt(?:A(?:RAPPresent|ppleTalk(?:Loaded(?:Bit|Mask)|Present(?:Bit|Mask)))|IPXSPX(?:Loaded(?:Bit|Mask)|Present(?:Bit|Mask))|Loaded(?:Bit|Mask)|NetworkSetup(?:Legacy(?:Export|Import)|SupportsMultihoming|Version)?|P(?:PPPresent|resent(?:Bit|Mask))|RemoteAccess(?:ClientOnly|Loaded|MPServer|P(?:Server|resent)|Version)?|TCP(?:Loaded(?:Bit|Mask)|Present(?:Bit|Mask))|Versions)?)|riginal(?:ATSUVersion|QD(?:Text)?)|utlineFonts)|P(?:C(?:Card(?:FamilyPresent|HasPowerControl|SupportsCardBus)?|X(?:Attr|Has(?:8and16BitFAT|ProDOS)|NewUI|UseICMapping))|Mgr(?:CPUIdle|DispatchExists|Exists|S(?:CC|ound|upportsAVPowerStateAtSleepWake))|PC(?:DragLibPresent|QuickTimeLibPresent|Supports(?:Incoming(?:AppleTalk|TCP_IP)?|Out(?:Going|going(?:AppleTalk|TCP_IP))|RealTime|TCP_IP)|Toolbox(?:Attr|Present))|S2Keyboard|ar(?:ity(?:Attr|Enabled)|tialRsrcs)|erforma(?:250|4(?:50|6x|7x)|5(?:300|50|80)|6(?:00|3(?:00|60)|400))|hysicalRAMSize(?:InMegabytes)?|layAndRecord|o(?:pup(?:Attr|Present)|rt(?:ADisabled|BDisabled|able(?:2001(?:ANSIKbd|ISOKbd|JISKbd)|SlotPresent|USB(?:ANSIKbd|ISOKbd|JISKbd))?)|wer(?:Book(?:1(?:00|4(?:0(?:0)?|5)|50|6(?:0|5(?:c)?)|70|80(?:c)?|90)|2400|3400|5(?:00PPCUpgrade|20(?:c)?|300|40(?:c)?)|Duo2(?:10|30(?:0)?|50|70c|80(?:c)?)|G3(?:Series(?:2)?)?)|M(?:ac(?:4400(?:_160)?|5(?:2(?:00|60)|400|500)|6(?:100_6(?:0|6)|200|400|500)|7(?:100_(?:66|80)|200|300|500|600)|8(?:100_(?:1(?:00|10|20)|80)|500|600)|9(?:500|600)|Centris6(?:10|50)|G3|LC(?:475|575|630)|NewWorld|Performa(?:47x|57x|63x)|Quadra(?:6(?:10|30|50)|700|800|9(?:00|50)))|gr(?:Attr|Vers))|PC(?:A(?:SArchitecture|ware)|Has(?:64BitSupport|D(?:CB(?:AInstruction|TStreams)|ataStreams)|GraphicsInstructions|S(?:TFIWXInstruction|quareRootInstructions)|VectorInstructions)|IgnoresDCBST|ProcessorFeatures)?))|r(?:o(?:F16(?:ANSIKbd|ISOKbd|JISKbd)|c(?:ClkSpeed(?:MHz)?|essor(?:CacheLineSize|Type)))|tbl(?:ADBKbd|ISOKbd))|wrB(?:k(?:99JISKbd|E(?:K(?:DomKbd|ISOKbd|JISKbd)|xt(?:ADBKbd|ISOKbd|JISKbd))|Sub(?:DomKbd|ISOKbd|JISKbd))|ook(?:ADBKbd|ISOADBKbd)))|Q(?:D(?:3D(?:Present|V(?:ersion|iewer(?:Present)?))?|HasLongRowBytes|Text(?:Features|Version))|TVR(?:C(?:ubicPanosPresent|ylinderPanosPresent)|Mgr(?:Attr|Present|Vers)|ObjMoviesPresent)|u(?:adra(?:6(?:05|10|30|50|60AV)|700|8(?:00|40AV)|9(?:00|50))|ick(?:Time(?:Conferencing(?:Info)?|Features|Streaming(?:Features|Version)|ThreadSafe(?:FeaturesAttr|Graphics(?:Export|Import)|ICM|Movie(?:Export|Import|Playback|Toolbox))|Version)?|draw(?:Features|Version))))|R(?:BVAddr|M(?:F(?:akeAppleMenuItemsRolledIn|orceSysHeapRolledIn)|SupportsFSCalls|TypeIndexOrderingReverse)|OM(?:Size|Version)|e(?:al(?:TempMemory|timeMgr(?:Attr|Present))|sourceMgr(?:Attr|BugFixesAttrs)|visedTimeMgr))|S(?:C(?:C(?:ReadAddr|WriteAddr)|SI(?:PollSIH|SlotBoot)?)|DP(?:FindVersion|PromptVersion|StandardDirectoryVersion)|E(?:30SlotPresent|SlotPresent)|FServer|MP(?:MailerVersion|SPSendLetterVersion)|a(?:feOFAttr|nityCheckResourceFiles)|bitFontSupport|cr(?:apMgr(?:Attr|TranslationAware)|eenCapture(?:Dir|Main)|ipt(?:Count|MgrVersion|ingSupport)|ollingThrottle)|e(?:rialA(?:rbitrationExists|ttr)|tDragImageUpdates)|h(?:eetsAreWindowModal(?:Bit|Mask)|utdown(?:Attributes|HassdOnBootVolUnmount))|lot(?:Attr|MgrExists)|ndPlayDoubleBuffer|o(?:ftwareVendor(?:Apple|Code|Licensee)|und(?:Attr|IOMgrPresent))|p(?:e(?:cificMatchSupport|ech(?:Attr|HasPPCGlue|MgrPresent|Recognition(?:Attr|Version)))|litOS(?:A(?:ttr|ware)|BootDriveIsNetworkVolume|EnablerVolumeIsDifferentFromBootVolume|MachineNameS(?:etToNetworkNameTemp|tartupDiskIsNonPersistent)))|quareMenuBar|t(?:andard(?:File(?:58|Attr|Has(?:ColorIcons|DynamicVolumeAllocation)|TranslationAware|UseGenericIcons)|TimeMgr)|d(?:ADBKbd|ISOADBKbd|NBP(?:Attr|Present|SupportsAutoPosition))|ereo(?:Capability|Input|Mixing))|upports(?:ApplicationURL|FSpResourceFileAlreadyOpenBit|Mirroring)|ys(?:Architecture|DebuggerSupport|ZoneGrowable|temUpdateVersion))|T(?:E(?:1|2|3|4|5|6|Attr|Has(?:GetHiliteRgn|WhiteBackground)|Supports(?:InlineInput|TextObjects))|SM(?:DisplayMgrAwareBit|TE(?:1(?:5(?:2)?)?|Attr|Present|Version)?|doesTSMTEBit|gr(?:15|2(?:0|2|3)|Attr|Version))|VAttr|e(?:le(?:Mgr(?:A(?:ttr|utoAnswer)|IndHandset|NewTELNewSupport|P(?:owerPCSupport|resent)|S(?:ilenceDetect|oundStreams))|phoneSpeechRecognition)|mpMem(?:Support|Tracked)|rmMgr(?:Attr|ErrorString|Present)|xtEditVersion)|h(?:irdParty(?:ANSIKbd|ISOKbd|JISKbd)|read(?:Mgr(?:Attr|Present)|sLibraryPresent))|imeMgrVersion|oolboxTable|ranslation(?:Attr|GetPathAPIAvail|Mgr(?:Exists|HintOrder)|PPCAvail))|U(?:DFSupport|SB(?:A(?:ndy(?:ANSIKbd|ISOKbd|JISKbd)|ttr)|Cosmo(?:ANSIKbd|ISOKbd|JISKbd)|HasIsoch|Pr(?:esent|interSharing(?:Attr(?:Booted|Mask|Running)?|Version(?:Mask)?)|oF16(?:ANSIKbd|ISOKbd|JISKbd))|Version)|n(?:defSelectorErr|known(?:Err|ThirdPartyKbd))|serVisibleMachineName)|V(?:IA(?:1Addr|2Addr)|M(?:Attr|BackingStoreFileRefNum|FilemappingOn|Has(?:LockMemoryForOutput|PagingControl)|Info(?:NoneType|Si(?:mpleType|ze(?:StorageType|Type))|Type)|Present|ZerosPagesBit)|alueImplementedVers|ersion)|W(?:SII(?:CanPrintWithoutPrGeneralBit|Support)|indow(?:LiveResize(?:Bit|Mask)|M(?:gr(?:Attr|Present(?:Bit|Mask)?)|inimizeToDock(?:Bit|Mask)))|orldScriptII(?:Attr|Version))|X86(?:AdditionalFeatures|Features|Has(?:APIC|C(?:ID|LFSH|MOV|X(?:16|8))|D(?:E|S(?:CPL)?)|EST|F(?:PU|XSR)|HTT|M(?:C(?:A|E)|MX|ONITOR|SR|TRR)|P(?:A(?:E|T)|GE|S(?:E(?:36)?|N))|S(?:EP|MX|S(?:E(?:2|3)?)?|upplementalSSE3)|T(?:M(?:2)?|SC)|VM(?:E|X)|xTPR)|ResACPI|Serviced20)))|fpErr|ra(?:bTimeComplete|veUpr(?:E|I|O|U))|uestNotAllowedErr)|h(?:AxisOnly|Menu(?:Cmd|FindErr)|a(?:chek|ndlerNotFoundErr|rdwareConfigErr)|i(?:Archive(?:EncodingCompleteErr|HIObjectIgnoresArchivingErr|KeyNotAvailableErr|TypeMismatchErr)|Object(?:C(?:annotSubclassSingletonErr|lass(?:ExistsErr|Has(?:InstancesErr|SubclassesErr)|IsAbstractErr))|Delegate(?:AlreadyExistsErr|NotFoundErr))|erMenu|ghLevelEventMask|tDev)|m(?:BalloonAborted|CloseViewActive|Help(?:Disabled|ManagerNotInited)|NoBalloonUp|OperationUnsupported|S(?:ameAsLastBalloon|kippedBalloon)|UnknownHelpType|WrongVersion)|our(?:Field|Mask)|r(?:HTMLRenderingLibNotInstalledErr|LeadingZ|MiscellaneousExceptionErr|U(?:RLNotHandledErr|nableToResizeHandleErr))|wParamErr)|i(?:IOAbort(?:Err)?|MemFullErr|c(?:Config(?:InappropriateErr|NotFoundErr)|InternalErr|No(?:MoreWritersErr|Perm|URLErr|thingToOverrideErr)|P(?:ermErr|r(?:ef(?:DataErr|NotFoundErr)|ofileNotFoundErr))|Read(?:OnlyPerm|WritePerm)|T(?:ooManyProfilesErr|runcatedErr)|onItem)|llegal(?:C(?:hannelOSErr|ontrollerOSErr)|InstrumentOSErr|Knob(?:OSErr|ValueOSErr)|NoteChannelOSErr|PartOSErr|ScrapFlavor(?:FlagsErr|SizeErr|TypeErr)|VoiceAllocationOSErr)|n(?:Co(?:llapseBox|ntent)|D(?:esk|rag)|G(?:oAway|row)|MenuBar|NoWindow|ProxyIcon|S(?:tructure|ysWindow)|ToolbarButton|Zoom(?:In|Out)|compatibleVoice|it(?:Dev|IWMErr)|putOutOfBounds|sufficientStackErr|t(?:Arabic|DrawHook|E(?:OLHook|uropean)|HitTestHook|InlineInputTSMTEP(?:ostUpdateHook|reUpdateHook)|Japanese|NWidthHook|OutputMask|Roman|TextWidthHook|W(?:estern|idthHook)|er(?:nal(?:ComponentErr|QuickTimeError|ScrapErr)|ruptsMaskedErr)|lCurrency)|valid(?:Atom(?:ContainerErr|Err|TypeErr)|C(?:hunk(?:Cache|Num)|omponentID)|D(?:ataRef(?:Container)?|uration)|EditState|FolderTypeErr|H(?:andler|otSpotIDErr)|I(?:conRefErr|mageIndexErr|ndexErr)|M(?:edia|ovie)|Node(?:FormatErr|IDErr)|PickerType|Rect|S(?:ample(?:Desc(?:Index|ription)|Num|Table)|prite(?:I(?:DErr|ndexErr)|PropertyErr|WorldPropertyErr))|T(?:ime|ra(?:ck|nslationPathErr))|ViewStateErr))|o(?:Dir(?:Flg|Mask)|Err|QType)|t(?:emDisable|lc(?:D(?:isableKeyScriptSync(?:Mask)?|ualCaret)|S(?:howIcon|ysDirection)))|u(?:Current(?:CurLang|DefLang|Script)|NumberPartsTable|S(?:cript(?:CurLang|DefLang)|ystem(?:CurLang|DefLang|Script))|UnTokenTable|W(?:hiteSpaceList|ord(?:SelectTable|WrapTable))))|k(?:1(?:6(?:B(?:E5(?:55PixelFormat|65PixelFormat)|itCardErr)|LE5(?:55(?:1PixelFormat|PixelFormat)|65PixelFormat))|IndexedGrayPixelFormat|MonochromePixelFormat)|2(?:4(?:BGRPixelFormat|RGBPixelFormat)|Indexed(?:GrayPixelFormat|PixelFormat)|vuyPixelFormat)|3(?:2(?:A(?:BGRPixelFormat|RGBPixelFormat)|B(?:GRAPixelFormat|itHeap)|RGBAPixelFormat)|DMixer(?:AttenuationCurve_(?:Exponential|Inverse|Linear|Power)|Param_(?:Azimuth|Distance|Elevation|Gain|P(?:laybackRate|ost(?:AveragePower|PeakHoldLevel)|re(?:AveragePower|PeakHoldLevel)))|RenderingFlags_(?:ConstantReverbBlend|D(?:istance(?:Attenuation|Diffusion|Filter)|opplerShift)|InterAuralDelay|LinearDistanceAttenuation)))|4Indexed(?:GrayPixelFormat|PixelFormat)|68kInterruptLevelMask|8Indexed(?:GrayPixelFormat|PixelFormat)|A(?:E(?:A(?:ND|bout|ctivate|fter|l(?:iasSelection|l(?:Caps)?|waysInteract)|n(?:swer|y)|pp(?:earanceChanged|lication(?:Class|Died))|rrow(?:At(?:End|Start)|BothEnds)|sk|utoDown)|B(?:e(?:fore|gin(?:Transaction|ning|sWith))|old)|C(?:a(?:n(?:Interact|SwitchLayer)|se(?:ConsiderMask|IgnoreMask|SensEquals)?)|entered|hangeView|l(?:eanUp|o(?:ne|se))|o(?:mmandClass|n(?:densed|tains)|py|reSuite|untElements)|reate(?:Element|Publisher)|ut)|D(?:ata(?:Array|baseSuite)|e(?:activate|bug(?:POSTHeader|ReplyHeader|XML(?:DebugAll|Re(?:quest|sponse)))|faultTimeout|lete|sc(?:Array|ListFactor(?:None|Type(?:AndSize)?)))|i(?:acritic(?:ConsiderMask|IgnoreMask)?|rectCall|skEvent)|o(?:Not(?:AutomaticallyAddAnnotationsToEvent|IgnoreHandler|PromptForUserConsent)|ObjectsExist|Script|nt(?:DisposeOnResume|Execute|Reco(?:nnect|rd))|wn)|rag|uplicateSelection)|E(?:ditGraphic|ject|mpty(?:Trash)?|nd(?:Transaction|sWith)?|quals|rase|xpan(?:ded|sion(?:ConsiderMask|IgnoreMask)?))|F(?:a(?:lse|st)|etchURL|i(?:nder(?:Events|Suite)|rst)|ormulaProtect|ullyJustified)|G(?:e(?:stalt|t(?:ClassInfo|Data(?:Size)?|EventInfo|InfoSelection|PrivilegeSelection|SuiteInfo|URL))|r(?:eaterThan(?:Equals)?|ow))|H(?:TTPProxy(?:HostAttr|PortAttr)|andle(?:Array|SimpleRanges)|i(?:Quality|dden|gh(?:Level|Priority))|yphens(?:ConsiderMask|IgnoreMask)?)|I(?:Do(?:M(?:arking|inimum)|Whose)|S(?:Action(?:Path)?|C(?:lient(?:Address|IP)|ontentType)|F(?:romUser|ullRequest)|GetURL|HTTPSearchArgs|Method|P(?:assword|ostArgs)|Referrer|S(?:criptName|erver(?:Name|Port))|User(?:Agent|Name)|WebStarSuite)|gnore(?:App(?:EventHandler|PhacHandler)|Sys(?:EventHandler|PhacHandler))|mageGraphic|n(?:fo|goreBuiltInEventHandler|ter(?:actWith(?:All|Local|Self)|ceptOpen|netSuite))|sUniform|talic)|K(?:ataHiragana|ey(?:Class|D(?:escArray|own)))|L(?:ast|e(?:ftJustified|ssThan(?:Equals)?)|o(?:calProcess|gOut|wercase))|M(?:a(?:in|keObjectsVisible)|enu(?:Class|Select)|i(?:ddle|scStandards)|o(?:difiable|use(?:Class|Down(?:InBack)?)|ve(?:d)?))|N(?:OT|avigationKey|e(?:verInteract|xt)|o(?:Arrow|Dispatch|Reply|nmodifiable|rmalPriority|tify(?:Recording|St(?:artRecording|opRecording)))?|ullEvent)|O(?:R|SAXSizeResource|pen(?:Application|Contents|Documents|Selection)?|utline)|P(?:a(?:ckedArray|geSetup|s(?:sSubDescs|te))|lain|r(?:evious|int(?:Documents|Selection|Window)?|o(?:cessNonReplyEvents|mise))|u(?:nctuation(?:ConsiderMask|IgnoreMask)?|tAway(?:Selection)?))|Q(?:D(?:Ad(?:M(?:ax|in)|d(?:Over|Pin))|B(?:ic|lend)|Copy|Not(?:Bic|Copy|Or|Xor)|Or|Su(?:b(?:Over|Pin)|pplementalSuite)|Xor)|u(?:eueReply|i(?:ckdrawSuite|t(?:A(?:ll|pplication)|PreserveState|Reason))))|R(?:PCClass|awKey|e(?:allyLogOut|buildDesktopDB|do|gular|moteProcess|openApplication|place|quiredSuite|s(?:ized|olveNestedLists|tart|ume)|ve(?:alSelection|rt))|ightJustified)|S(?:OAPScheme|a(?:meProcess|ve)|cr(?:apEvent|iptingSizeResource)|e(?:lect|t(?:Data|Position))|h(?:a(?:dow|r(?:edScriptHandler|ing))|ow(?:Clipboard|Preferences|RestartDialog|ShutdownDialog)|utDown)|leep|mall(?:Caps|Kana|SystemFontChanged)|o(?:cks(?:4Protocol|5Protocol|HostAttr|P(?:asswordAttr|ortAttr|roxyAttr)|UserAttr)|rt)|pe(?:cialClassProperties|ech(?:D(?:etected|one)|Suite))|t(?:artRecording|op(?:Recording|pedMoving)|rikethrough)|u(?:bscript|perscript|spend)|y(?:nc|stemFontChanged))|T(?:ableSuite|e(?:rminologyExtension|xtSuite)|hemeSwitch|r(?:ansactionTerminated|ue))|U(?:T(?:Apostrophe|ChangesState|DirectParamIsReference|Enum(?:ListIsExclusive|erated|sAreTypes)|Feminine|HasReturningParam|Masculine|NotDirectParamIsTarget|Optional|P(?:aramIs(?:Reference|Target)|lural|ropertyIsReference)|Re(?:adWrite|plyIsReference)|TightBindingFunction|listOfItems)|n(?:d(?:erline|o)|knownSource)|p(?:date)?|se(?:HTTPProxyAttr|RelativeIterators|S(?:ocksAttr|tandardDispatch)|rTerminology))|Vi(?:ewsFontChanged|rtualKey)|W(?:a(?:itReply|keUpEvent|ntReceipt)|h(?:iteSpace(?:ConsiderMask|IgnoreMask)?|oleWordEquals)|indowClass)|XMLRPCScheme|Yes|Z(?:enkakuHankaku|oom(?:In|Out)?))|FP(?:ExtendedFlagsAlternateAddressMask|ServerIcon|Tag(?:Length(?:DDP|IP(?:Port)?)|Type(?:D(?:DP|NS)|IP(?:Port)?)))|H(?:Intern(?:alErr|etConfigPrefErr)|TOCType(?:Developer|User))|LM(?:D(?:eferSwitchErr|uplicateModuleErr)|GroupNotFoundErr|In(?:stallationErr|ternalErr)|Location(?:NotFoundErr|sFolderType)|Module(?:CommunicationErr|sFolderType)|NoSuchModuleErr|PreferencesFolderType|RebootFlagsLevelErr)|NKRCurrentVersion|RM(?:M(?:ountVol|ultVols)|NoUI|Search(?:More|RelFirst)?|TryFileIDFirst)|S(?:A(?:dd|nd|ppleScriptSuite)|C(?:o(?:m(?:es(?:After|Before)|ment(?:Event)?)|n(?:catenate|siderReplies(?:ConsiderMask|IgnoreMask)?|tains))|urrentApplication)|D(?:efault(?:M(?:ax(?:HeapSize|StackSize)|in(?:HeapSize|StackSize))|Preferred(?:HeapSize|StackSize))|ivide)|E(?:ndsWith|qual|rrorEventCode|xcluding)|GreaterThan(?:OrEqual)?|HasOpenHandler|I(?:mporting|nitializeEventCode)|L(?:aunchEvent|essThan(?:OrEqual)?)|M(?:agic(?:EndTellEvent|TellEvent)|inimumVersion|ultiply)|N(?:egate|ot(?:Equal)?|um(?:berOfSourceStyles|ericStrings(?:ConsiderMask|IgnoreMask)?))|Or|P(?:ower|repositionalSubroutine)|Quotient|Remainder|S(?:criptEditorSuite|elect(?:CopySourceAttributes|Get(?:AppTerminology(?:Obsolete)?|Handler(?:Names|Obsolete)?|Property(?:Names|Obsolete)?|S(?:ourceStyle(?:Names|s)|ysTerminology))|Init|Set(?:Handler(?:Obsolete)?|Property(?:Obsolete)?|Source(?:Attributes|Styles)))|ourceStyle(?:ApplicationKeyword|C(?:lass|omment)|Dynamic(?:Class|E(?:numValue|ventName)|P(?:arameterName|roperty))|E(?:numValue|ventName)|L(?:anguageKeyword|iteral)|NormalText|ObjectSpecifier|P(?:arameterName|roperty)|String|U(?:ncompiledText|serSymbol))|t(?:art(?:LogEvent|sWith)|opLogEvent)|ub(?:routineEvent|tract))|TypeNamesSuite|UseEventCode)|TS(?:BoldQDStretch|CubicCurveType|DeletedGlyphcode|F(?:ileReferenceFilterSelector|lat(?:DataUstl(?:CurrentVersion|Version(?:0|1|2))|tenedFontSpecifierRawNameData)|ont(?:AutoActivation(?:Ask|D(?:efault|isabled)|Enabled)|Cont(?:ainerRefUnspecified|ext(?:Global|Local|Unspecified))|F(?:amilyRefUnspecified|ilter(?:CurrentVersion|Selector(?:Font(?:ApplierFunction|Family(?:ApplierFunction)?)|Generation|Unspecified))|ormatUnspecified)|Notify(?:Action(?:DirectoriesChanged|FontsChanged)|Option(?:Default|ReceiveWhileSuspended))|RefUnspecified))|G(?:enerationUnspecified|lyphInfo(?:AppleReserved|ByteSizeMask|HasImposedWidth|Is(?:Attachment|LTHanger|RBHanger|WhiteSpace)|TerminatorGlyph))|I(?:nvalid(?:Font(?:Access|ContainerAccess|FamilyAccess|TableAccess)|GlyphAccess)|t(?:alicQDSkew|eration(?:Completed|ScopeModified)))|Line(?:Appl(?:eReserved|yAntiAliasing)|BreakToNearestCharacter|Disable(?:A(?:ll(?:BaselineAdjustments|GlyphMorphing|Justification|KerningAdjustments|LayoutOperations|TrackingAdjustments)|utoAdjustDisplayPos)|NegativeJustification)|F(?:illOutToWidth|ractDisable)|HasNo(?:Hangers|OpticalAlignment)|I(?:gnoreFontLeading|mposeNoAngleForEnds|sDisplayOnly)|KeepSpacesOutOfMargin|LastNoJustification|No(?:AntiAliasing|LayoutOptions|SpecialJustification)|TabAdjustEnabled|Use(?:DeviceMetrics|QDRendering))|NoTracking|O(?:ptionFlags(?:ActivateDisabled|ComposeFontPostScriptName|D(?:efault(?:Scope)?|oNotNotify)|I(?:ncludeDisabledMask|terat(?:eByPrecedenceMask|ionScopeMask))|ProcessSubdirectories|Re(?:cordPersistently|strictedScope)|U(?:nRestrictedScope|se(?:DataFork(?:AsResourceFork)?|ResourceFork)))|therCurveType)|Qu(?:adCurveType|eryActivateFontMessage)|RadiansFactor|Style(?:Appl(?:eReserved|y(?:AntiAliasing|Hints))|No(?:AntiAliasing|Hinting|Options))|U(?:A(?:fterWithStreamShiftTag|scentTag)|B(?:a(?:ckgroundC(?:allback|olor)|dStreamErr|selineClassTag)|eforeWithStreamShiftTag|usyObjectErr|y(?:C(?:haracter(?:Cluster)?|luster)|TypographicCluster|Word))|C(?:GContextTag|enterTab|learAll|o(?:lorTag|ordinateOverflowErr)|rossStreamShiftTag)|D(?:ataStreamUnicodeStyledText|e(?:c(?:imalTab|ompositionFactorTag)|faultFontFallbacks|scentTag)|irectData(?:AdvanceDeltaFixedArray|BaselineDeltaFixedArray|DeviceDeltaSInt16Array|LayoutRecordATSLayoutRecord(?:Current|Version1)|Style(?:IndexUInt16Array|SettingATSUStyleSettingRefArray)))|F(?:lattenOptionNoOptionsMask|o(?:nt(?:MatrixTag|Tag|s(?:Matched|NotMatched))|rceHangingTag)|rom(?:FollowingLayout|PreviousLayout|TextBeginning))|GlyphSelectorTag|HangingInhibitFactorTag|I(?:mposeWidthTag|nvalid(?:Attribute(?:SizeErr|TagErr|ValueErr)|Ca(?:cheErr|llInsideCallbackErr)|Font(?:Err|FallbacksErr|ID)|StyleErr|Text(?:LayoutErr|RangeErr)))|KerningInhibitFactorTag|L(?:a(?:ng(?:RegionTag|uageTag)|st(?:Err|ResortOnlyFallback)|youtOperation(?:AppleReserved|BaselineAdjustment|CallbackStatus(?:Continue|Handled)|Justification|KerningAdjustment|Morph|None|OverrideTag|PostLayoutAdjustment|TrackingAdjustment))|e(?:adingTag|ftT(?:ab|oRightBaseDirection))|ine(?:AscentTag|B(?:aselineValuesTag|reakInWord)|D(?:e(?:cimalTabCharacterTag|scentTag)|irectionTag)|F(?:lushFactorTag|ontFallbacksTag)|HighlightCGColorTag|JustificationFactorTag|La(?:ng(?:RegionTag|uageTag)|youtOptionsTag)|RotationTag|T(?:extLocatorTag|runcationTag)|WidthTag)|owLevelErr)|Max(?:ATSUITagValue|LineTag|StyleTag)|N(?:o(?:C(?:aretAngleTag|orrespondingFontErr)|Font(?:CmapAvailableErr|NameErr|ScalerAvailableErr)|LigatureSplitTag|OpticalAlignmentTag|S(?:elector|pecialJustificationTag|tyleRunsAssignedErr)|tSetErr)|umberTabTypes)|OutputBufferTooSmallErr|PriorityJustOverrideTag|Q(?:D(?:BoldfaceTag|CondensedTag|ExtendedTag|ItalicTag|UnderlineTag)|uickDrawTextErr)|R(?:GBAlphaColorTag|ightT(?:ab|oLeftBaseDirection))|S(?:equentialFallbacks(?:Exclusive|Preferred)|izeTag|t(?:rongly(?:Horizontal|Vertical)|yle(?:Contain(?:edBy|s)|D(?:oubleLineCount|ropShadow(?:BlurOptionTag|ColorOptionTag|OffsetOptionTag|Tag))|Equals|RenderingOptionsTag|S(?:ingleLineCount|trikeThrough(?:Co(?:lorOptionTag|untOptionTag)|Tag))|TextLocatorTag|Un(?:derlineCo(?:lorOptionTag|untOptionTag)|equal)))|uppressCrossKerningTag)|T(?:oTextEnd|r(?:ackingTag|unc(?:FeatNoSquishing|ate(?:End|Middle|None|S(?:pecificationMask|tart)))))|U(?:n(?:FlattenOptionNoOptionsMask|supportedStreamFormatErr)|se(?:GrafPortPenLoc|LineControlWidth))|VerticalCharacterTag|se(?:CaretOrigins|DeviceOrigins|FractionalOrigins|GlyphAdvance|LineHeight|OriginFlags)))|U(?:Gr(?:aphErr_(?:CannotDoInCurrentContext|Invalid(?:AudioUnit|Connection)|NodeNotFound|OutputNodeErr)|oupParameterID_(?:All(?:NotesOff|SoundOff)|ChannelPressure|DataEntry(?:_LSB)?|Expression(?:_LSB)?|Foot(?:_LSB)?|KeyPressure(?:_(?:FirstKey|LastKey))?|ModWheel(?:_LSB)?|P(?:an(?:_LSB)?|itchBend)|ResetAllControllers|S(?:ostenuto|ustain)|Volume(?:_LSB)?))|LowShelfParam_(?:CutoffFrequency|Gain)|MIDISynthProperty_EnablePreload|N(?:BandEQ(?:FilterType_(?:2ndOrderButterworth(?:HighPass|LowPass)|Band(?:Pass|Stop)|HighShelf|LowShelf|Parametric|Resonant(?:High(?:Pass|Shelf)|Low(?:Pass|Shelf)))|P(?:aram_(?:B(?:andwidth|ypassBand)|F(?:ilterType|requency)|G(?:ain|lobalGain))|roperty_(?:BiquadCoefficients|MaxNumberOfBands|NumberOfBands)))|et(?:ReceiveP(?:aram_(?:NumParameters|Status)|roperty_(?:Hostname|Password))|S(?:end(?:NumPresetFormats|P(?:aram_(?:NumParameters|Status)|r(?:esetFormat_(?:AAC_(?:128kbpspc|32kbpspc|4(?:0kbpspc|8kbpspc)|64kbpspc|80kbpspc|96kbpspc|LD_(?:32kbpspc|4(?:0kbpspc|8kbpspc)|64kbpspc))|IMA4|Lossless(?:16|24)|PCM(?:Float32|Int(?:16|24))|ULaw)|operty_(?:Disconnect|P(?:assword|ortNum)|ServiceName|TransmissionFormat(?:Index)?))))|tatus_(?:Connect(?:ed|ing)|Listening|NotConnected|Overflow|Underflow)))|odeInteraction_(?:Connection|InputCallback))|Parameter(?:Listener_AnyParameter|MIDIMapping_(?:Any(?:ChannelFlag|NoteFlag)|Bipolar(?:_On)?|SubRange|Toggle))|Sampler(?:P(?:aram_(?:CoarseTuning|FineTuning|Gain|Pan)|roperty_(?:BankAndPreset|Load(?:AudioFiles|Instrument|PresetFromBank)))|_Default(?:BankLSB|MelodicBankMSB|PercussionBankMSB))|VoiceIO(?:Err_UnexpectedNumberOfInputChannels|Property_(?:BypassVoiceProcessing|MuteOutput|VoiceProcessingEnableAGC)))|VL(?:I(?:nOrder|s(?:Le(?:af|ftBranch)|RightBranch|Tree))|NullNode|P(?:ostOrder|reOrder))|X(?:CopyMultipleAttributeOptionStopOnError|Error(?:A(?:PIDisabled|ctionUnsupported|ttributeUnsupported)|CannotComplete|Failure|I(?:llegalArgument|nvalidUIElement(?:Observer)?)|No(?:Value|t(?:EnoughPrecision|Implemented|ification(?:AlreadyRegistered|NotRegistered|Unsupported)))|ParameterizedAttributeUnsupported|Success)|MenuItemModifier(?:Control|No(?:Command|ne)|Option|Shift)|UnderlineStyle(?:Double|None|Single|Thick))|bbrevSquaredLigaturesO(?:ffSelector|nSelector)|c(?:c(?:essException|ountKCItemAttr)|tivateAnd(?:HandleClick|IgnoreClick))|dd(?:KCEvent(?:Mask)?|ressKCItemAttr)|l(?:ert(?:Caution(?:Alert|BadgeIcon|Icon)|Default(?:CancelText|O(?:KText|therText))|Flags(?:AlertIsMovable|Use(?:Co(?:mpositing|ntrolHierarchy)|Theme(?:Background|Controls)))|Note(?:Alert|Icon)|PlainAlert|St(?:dAlert(?:CancelButton|HelpButton|O(?:KButton|therButton))|op(?:Alert|Icon))|VariantCode|WindowClass)|i(?:asBadgeIcon|gn(?:AbsoluteCenter|Bottom(?:Left|Right)?|Center(?:Bottom|Left|Right|Top)|HorizontalCenter|Left|None|Right|Top(?:Left|Right)?|VerticalCenter))|l(?:CapsSelector|LowerCaseSelector|PPDDomains|Typ(?:eFeaturesO(?:ffSelector|nSelector)|ographicFeaturesType)|WindowClasses)|readySavedStateErr|t(?:HalfWidthTextSelector|P(?:lainWindowClass|roportionalTextSelector)|ernate(?:HorizKanaO(?:ffSelector|nSelector)|KanaType|VertKanaO(?:ffSelector|nSelector)))|ways(?:Authenticate|SendSubject))|n(?:dConnections|notationType|y(?:AuthType|Component(?:FlagsMask|Manufacturer|SubType|Type)|P(?:ort|rotocol)|TransactionID))|pp(?:PackageAliasType|earance(?:EventClass|Folder(?:Icon|Type)|Part(?:DownButton|Indicator|LeftButton|Meta(?:Disabled|Inactive|None)|Page(?:DownArea|LeftArea|RightArea|UpArea)|RightButton|UpButton)|Region(?:C(?:loseBox|o(?:llapseBox|ntent))|Drag|Grow|Structure|T(?:itle(?:Bar|ProxyIcon|Text)|oolbarButton)|ZoomBox))|l(?:e(?:ExtrasFolder(?:Icon|Type)|JapaneseDictionarySignature|Lo(?:go(?:CharCode|Icon|Unicode)|sslessFormatFlag_(?:16BitSourceData|2(?:0BitSourceData|4BitSourceData)|32BitSourceData))|M(?:anufacturer|enu(?:Folder(?:AliasType|Icon(?:Resource)?|Type)|Icon))|S(?:cript(?:BadgeIcon|Subtype)|hare(?:AuthenticationFolderType|PasswordKCItemClass|SupportFolderType))|Talk(?:Icon|ZoneIcon)|shareAutomountServerAliasesFolderType)|ication(?:AliasType|CPAliasType|DAAliasType|SupportFolder(?:Icon|Type)|ThreadID|WindowKind|sFolder(?:Icon|Type))))|s(?:sistantsFolder(?:Icon|Type)|teriskToMultiplyO(?:ffSelector|nSelector)|ync(?:Eject(?:Complete|InProgress)|Mount(?:Complete|InProgress)|Unmount(?:Complete|InProgress)))|t(?:SpecifiedOrigin|temptDupCardEntryErr)|u(?:dio(?:A(?:ggregateDevice(?:ClassID|Property(?:ActiveSubDeviceList|C(?:lockDevice|omposition)|FullSubDeviceList|MasterSubDevice))|lertSoundsFolderType)|B(?:alanceFadeType_(?:EqualPower|MaxUnityGain)|o(?:o(?:leanControl(?:ClassID|PropertyValue)|tChimeVolumeControlClassID)|x(?:ClassID|Property(?:Acqui(?:red|sitionFailed)|BoxUID|ClockDeviceList|DeviceList|Has(?:Audio|MIDI|Video)|IsProtected|TransportType))))|C(?:hannel(?:Bit_(?:Center(?:Surround|Top(?:Front|Middle|Rear))?|L(?:FEScreen|eft(?:Center|Surround(?:Direct)?|Top(?:Front|Middle|Rear))?)|Right(?:Center|Surround(?:Direct)?|Top(?:Front|Middle|Rear))?|Top(?:Back(?:Center|Left|Right)|CenterSurround)|VerticalHeight(?:Center|Left|Right))|Coordinates_(?:Azimuth|BackFront|D(?:istance|ownUp)|Elevation|LeftRight)|Flags_(?:AllOff|Meters|RectangularCoordinates|SphericalCoordinates)|La(?:bel_(?:Ambisonic_(?:W|X|Y|Z)|B(?:eginReserved|inaural(?:Left|Right))|C(?:enter(?:Surround(?:Direct)?|Top(?:Front|Middle|Rear))?|lickTrack)|Di(?:alogCentricMix|screte(?:_(?:0|1(?:0|1|2|3|4|5)?|2|3|4|5|6(?:5535)?|7|8|9))?)|EndReserved|ForeignLanguage|H(?:OA_ACN(?:_(?:0|1(?:0|1|2|3|4|5)?|2|3|4|5|6(?:5024)?|7|8|9))?|aptic|ea(?:dphones(?:Left|Right)|ringImpaired))|L(?:FE(?:2|Screen)|eft(?:Center|Surround(?:Direct)?|To(?:p(?:Front|Middle|Rear)|tal)|Wide)?)|M(?:S_(?:Mid|Side)|ono)|Narration|R(?:earSurround(?:Left|Right)|ight(?:Center|Surround(?:Direct)?|To(?:p(?:Front|Middle|Rear)|tal)|Wide)?)|Top(?:Back(?:Center|Left|Right)|CenterSurround)|U(?:n(?:known|used)|seCoordinates)|VerticalHeight(?:Center|Left|Right)|XY_(?:X|Y))|youtTag_(?:A(?:AC_(?:3_0|4_0|5_(?:0|1)|6_(?:0|1)|7_(?:0|1(?:_(?:B|C))?)|Octagonal|Quadraphonic)|C3_(?:1_0_1|2_1_1|3_(?:0(?:_1)?|1(?:_1)?))|mbisonic_B_Format|tmos_(?:5_1_2|7_1_4|9_1_6)|udioUnit_(?:4|5(?:_(?:0|1))?|6(?:_(?:0|1))?|7_(?:0(?:_Front)?|1(?:_Front)?)|8))|B(?:eginReserved|inaural)|Cube|D(?:TS_(?:3_1|4_1|6_(?:0_(?:A|B|C)|1_(?:A|B|C|D))|7_(?:0|1)|8_(?:0_(?:A|B)|1_(?:A|B)))|VD_(?:0|1(?:0|1|2|3|4|5|6|7|8|9)?|2(?:0)?|3|4|5|6|7|8|9)|iscreteInOrder)|E(?:AC(?:3_(?:6_1_(?:A|B|C)|7_1_(?:A|B|C|D|E|F|G|H))|_(?:6_0_A|7_0_A))|magic_Default_7_1|ndReserved)|H(?:OA_ACN_(?:N3D|SN3D)|exagonal)|ITU_(?:1_0|2_(?:0|1|2)|3_(?:0|1|2(?:_1)?|4_1))|M(?:PEG_(?:1_0|2_0|3_0_(?:A|B)|4_0_(?:A|B)|5_(?:0_(?:A|B|C|D)|1_(?:A|B|C|D))|6_1_A|7_1_(?:A|B|C))|atrixStereo|idSide|ono)|Octagonal|Pentagonal|Quadraphonic|S(?:MPTE_DTV|tereo(?:Headphones)?)|TMH_10_2_(?:full|std)|U(?:nknown|seChannel(?:Bitmap|Descriptions))|WAVE_(?:2_1|3_0|4_0_(?:A|B)|5_(?:0_(?:A|B)|1_(?:A|B))|6_1|7_1)|XY)))|l(?:ipLightControlClassID|ock(?:Device(?:ClassID|Property(?:AvailableNominalSampleRates|C(?:lockDomain|ontrolList)|Device(?:Is(?:Alive|Running)|UID)|Latency|NominalSampleRate|TransportType))|Source(?:Control(?:ClassID|PropertyItemKind)|ItemKindInternal)))|o(?:dec(?:AppendInput(?:BufferListSelect|DataSelect)|B(?:ad(?:DataError|PropertySizeError)|itRate(?:ControlMode_(?:Constant|LongTermAverage|Variable(?:Constrained)?)|Format(?:_(?:ABR|CBR|VBR))?))|D(?:elayMode_(?:Compatibility|Minimum|Optimal)|oesSampleRateConversion)|ExtendFrequencies|GetProperty(?:InfoSelect|Select)|I(?:llegalOperationError|n(?:itializeSelect|putFormatsForOutputFormat))|No(?:Error|tEnoughBufferSpaceError)|Output(?:FormatsForInputFormat|Precedence(?:BitRate|None|SampleRate)?)|Pr(?:imeMethod_(?:No(?:ne|rmal)|Pre)|o(?:duceOutput(?:BufferListSelect|DataSelect|Packet(?:AtEOF|Failure|NeedsMoreInputData|Success(?:HasMore)?))|perty(?:A(?:djustLocalQuality|pplicable(?:BitRateRange|InputSampleRates|OutputSampleRates)|vailable(?:BitRate(?:Range|s)|Input(?:ChannelLayout(?:Tags|s)|SampleRates)|NumberChannels|Output(?:ChannelLayout(?:Tags|s)|SampleRates)))|BitRate(?:ControlMode|ForVBR)|Current(?:Input(?:ChannelLayout|Format|SampleRate)|Output(?:ChannelLayout|Format|SampleRate)|TargetBitRate)|D(?:elayMode|oesSampleRateConversion|ynamicRangeControlMode)|EmploysDependentPackets|Format(?:CFString|Info|List)|HasVariablePacketByteSizes|I(?:nput(?:BufferSize|ChannelLayout|FormatsForOutputFormat)|sInitialized)|M(?:a(?:gicCookie|nufacturerCFString|ximumPacketByteSize)|inimum(?:DelayMode|Number(?:InputPackets|OutputPackets)))|NameCFString|Output(?:ChannelLayout|FormatsForInputFormat)|P(?:a(?:cket(?:FrameSize|SizeLimitForVBR)|ddedZeros)|r(?:ime(?:Info|Method)|ogramTargetLevel(?:Constant)?))|QualitySetting|Re(?:commendedBitRateRange|quiresPacketDescription)|S(?:ettings|oundQualityForVBR|upported(?:InputFormats|OutputFormats))|UsedInputBufferSize|ZeroFramesPadded)))|Quality_(?:High|Low|M(?:ax|edium|in))|ResetSelect|S(?:etPropertySelect|tateError)|U(?:n(?:initializeSelect|knownPropertyError|s(?:pecifiedError|upportedFormatError))|seRecommendedSampleRate))|mponent(?:Err_Instance(?:Invalidated|TimedOut)|Flag_Unsearchable|ValidationResult_(?:Failed|Passed|TimedOut|Un(?:authorizedError_(?:Init|Open)|known))|sFolderType)|n(?:trol(?:ClassID|Property(?:Element|Scope|Variant))|verter(?:A(?:pplicableEncode(?:BitRates|SampleRates)|vailableEncode(?:BitRates|ChannelLayoutTags|SampleRates))|C(?:hannelMap|o(?:decQuality|mpressionMagicCookie)|urrent(?:InputStreamDescription|OutputStreamDescription))|DecompressionMagicCookie|E(?:ncode(?:AdjustableSampleRate|BitRate)|rr_(?:BadPropertySizeError|FormatNotSupported|In(?:putSampleRateOutOfRange|valid(?:InputSize|OutputSize))|O(?:perationNotSupported|utputSampleRateOutOfRange)|PropertyNotSupported|RequiresPacketDescriptionsError|UnspecifiedError))|InputChannelLayout|OutputChannelLayout|Pr(?:ime(?:Info|Method)|operty(?:BitDepthHint|Calculate(?:InputBufferSize|OutputBufferSize)|Dither(?:BitDepth|ing)|FormatList|InputCodecParameters|M(?:aximum(?:Input(?:BufferSize|PacketSize)|OutputPacketSize)|inimum(?:InputBufferSize|OutputBufferSize))|OutputCodecParameters|Settings))|Quality_(?:High|Low|M(?:ax|edium|in))|SampleRateConverter(?:Algorithm|Complexity(?:_(?:Linear|M(?:astering|inimumPhase)|Normal))?|InitialPhase|Quality)))))|D(?:ata(?:DestinationControlClassID|SourceControlClassID)|e(?:coderComponentType|vice(?:ClassID|P(?:ermissionsError|ro(?:cessorOverload|perty(?:A(?:ctualSampleRate|vailableNominalSampleRates)|Buffer(?:FrameSize(?:Range)?|Size(?:Range)?)|C(?:hannel(?:CategoryName(?:CFString)?|N(?:ame(?:CFString)?|ominalLineLevel(?:NameForID(?:CFString)?|s)?|umberName(?:CFString)?))|l(?:ipLight|ock(?:D(?:evice|omain)|Source(?:KindForID|NameForID(?:CFString)?|s)?))|onfigurationApplication)|D(?:ataSource(?:KindForID|NameForID(?:CFString)?|s)?|evice(?:CanBeDefault(?:Device|SystemDevice)|HasChanged|Is(?:Alive|Running(?:Somewhere)?)|Manufacturer(?:CFString)?|Name(?:CFString)?|UID)|riverShouldOwniSub)|H(?:ighPassFilterSetting(?:NameForID(?:CFString)?|s)?|ogMode)|I(?:O(?:CycleUsage|ProcStreamUsage|StoppedAbnormally)|con|sHidden)|JackIsConnected|L(?:atency|istenback)|M(?:odelUID|ute)|NominalSampleRate|P(?:ha(?:ntomPower|seInvert)|l(?:ayThru(?:Destination(?:NameForID(?:CFString)?|s)?|S(?:olo|tereoPan(?:Channels)?)|Volume(?:Decibels(?:ToScalar(?:TransferFunction)?)?|RangeDecibels|Scalar(?:ToDecibels)?))?|ugIn)|referredChannel(?:Layout|sForStereo))|Re(?:gisterBufferList|latedDevices)|S(?:afetyOffset|cope(?:Input|Output|PlayThrough)|olo|t(?:ereoPan(?:Channels)?|ream(?:Configuration|Format(?:Match|Supported|s)?|s))|u(?:b(?:Mute|Volume(?:Decibels(?:ToScalar(?:TransferFunction)?)?|RangeDecibels|Scalar(?:ToDecibels)?))|pportsMixing))|T(?:alkback|ransportType)|UsesVariableBufferFrameSizes|Volume(?:Decibels(?:ToScalar(?:TransferFunction)?)?|RangeDecibels|Scalar(?:ToDecibels)?))))|StartTime(?:DontConsult(?:DeviceFlag|HALFlag)|IsInputFlag)|TransportType(?:A(?:VB|ggregate|irPlay|utoAggregate)|B(?:luetooth(?:LE)?|uiltIn)|DisplayPort|FireWire|HDMI|PCI|Thunderbolt|U(?:SB|nknown)|Virtual)|Un(?:known|supportedFormatError)))|igidesignFolderType)|En(?:coderComponentType|dPoint(?:ClassID|Device(?:ClassID|Property(?:Composition|EndPointList|IsPrivate))))|F(?:ile(?:3GP(?:2Type|Type)|A(?:AC_ADTSType|C3Type|IF(?:CType|FType)|MRType)|BadPropertySizeError|C(?:AFType|loseSelect|o(?:mponent_(?:Available(?:FormatIDs|StreamDescriptionsForFormat)|Can(?:Read|Write)|ExtensionsForType|F(?:astDispatchTable|ileTypeName)|HFSTypeCodesForType|MIMETypesForType|UTIsForType)|untUserDataSelect)|reate(?:Select|URLSelect))|D(?:ataIsThisFormatSelect|oesNotAllow64BitDataSizeError)|E(?:ndOfFileError|xtensionIsThisFormatSelect)|F(?:LACType|ile(?:DataIsThisFormatSelect|IsThisFormatSelect|NotFoundError)|lags_(?:DontPageAlignAudioData|EraseFile))|G(?:et(?:GlobalInfoS(?:elect|izeSelect)|Property(?:InfoSelect|Select)|UserDataS(?:elect|izeSelect))|lobalInfo_(?:A(?:ll(?:Extensions|HFSTypeCodes|MIMETypes|UTIs)|vailable(?:FormatIDs|StreamDescriptionsForFormat))|ExtensionsForType|FileTypeName|HFSTypeCodesForType|MIMETypesForType|ReadableTypes|TypesFor(?:Extension|HFSTypeCode|MIMEType|UTI)|UTIsForType|WritableTypes))|In(?:itialize(?:Select|WithCallbacksSelect)|valid(?:ChunkError|FileError|Packet(?:DependencyError|OffsetError)))|L(?:ATMInLOASType|oopDirection_(?:Backward|Forward(?:AndBackward)?|NoLooping))|M(?:4(?:AType|BType)|P(?:1Type|2Type|3Type|EG4Type)|arkerType_Generic)|N(?:extType|otOp(?:enError|timizedError))|Op(?:e(?:n(?:Select|URLSelect|WithCallbacksSelect)|rationNotSupportedError)|timizeSelect)|P(?:ermissionsError|ositionError|roperty(?:A(?:lbumArtwork|udio(?:Data(?:ByteCount|PacketCount)|TrackCount))|B(?:itRate|yteToPacket)|Ch(?:annelLayout|unkIDs)|D(?:ata(?:Format(?:Name)?|Offset)|eferSizeUpdates)|EstimatedDuration|F(?:ileFormat|ormatList|rameToPacket)|I(?:D3Tag|nfoDictionary|sOptimized)|Ma(?:gicCookieData|rkerList|ximumPacketSize)|NextIndependentPacket|P(?:acket(?:RangeByteCountUpperBound|SizeUpperBound|T(?:ableInfo|o(?:Byte|DependencyInfo|Frame|RollDistance)))|reviousIndependentPacket)|Re(?:gionList|s(?:erveDuration|trictsRandomAccess))|SourceBitDepth|UseAudioTrack))|R(?:F64Type|e(?:ad(?:BytesSelect|P(?:acket(?:DataSelect|sSelect)|ermission)|WritePermission)|gionFlag_(?:LoopEnable|Play(?:Backward|Forward))|moveUserDataSelect))|S(?:et(?:PropertySelect|UserDataSelect)|oundDesigner2Type|tream(?:Error_(?:BadPropertySize|D(?:ataUnavailable|iscontinuityCantRecover)|I(?:llegalOperation|nvalid(?:File|PacketOffset))|NotOptimized|Uns(?:pecifiedError|upported(?:DataFormat|FileType|Property))|ValueUnknown)|P(?:arseFlag_Discontinuity|roperty(?:Flag_(?:CacheProperty|PropertyIsCached)|_(?:A(?:udioData(?:ByteCount|PacketCount)|verageBytesPerPacket)|B(?:itRate|yteToPacket)|ChannelLayout|Data(?:Format|Offset)|F(?:ileFormat|ormatList|rameToPacket)|InfoDictionary|Ma(?:gicCookieData|ximumPacketSize)|NextIndependentPacket|P(?:acket(?:SizeUpperBound|T(?:ableInfo|o(?:Byte|DependencyInfo|Frame|RollDistance)))|reviousIndependentPacket)|Re(?:adyToProducePackets|strictsRandomAccess))))|SeekFlag_OffsetIsEstimated))|Uns(?:pecifiedError|upported(?:DataFormatError|FileTypeError|PropertyError))|W(?:AVEType|rite(?:BytesSelect|P(?:acketsSelect|ermission))))|ormat(?:60958AC3|A(?:C3|ES3|Law|MR(?:_WB)?|pple(?:IMA4|Lossless)|udible)|Bad(?:PropertySizeError|SpecifierSizeError)|DVIIntelIMA|EnhancedAC3|F(?:LAC|lag(?:Is(?:AlignedHigh|BigEndian|Float|Non(?:Interleaved|Mixable)|Packed|SignedInteger)|s(?:A(?:reAllClear|udioUnitCanonical)|Canonical|Native(?:Endian|FloatPacked))))|LinearPCM|M(?:ACE(?:3|6)|IDIStream|PEG(?:4(?:AAC(?:_(?:ELD(?:_(?:SBR|V2))?|HE(?:_V2)?|LD|Spatial))?|CELP|HVXC|TwinVQ)|D_USAC|Layer(?:1|2|3))|icrosoftGSM)|Opus|P(?:arameterValueStream|roperty_(?:A(?:SBDFrom(?:ESDS|MPEGPacket)|reChannelLayoutsEquivalent|vailableEncode(?:BitRates|ChannelLayoutTags|NumberChannels|SampleRates))|B(?:alanceFade|itmapForLayoutTag)|Channel(?:Layout(?:F(?:or(?:Bitmap|Tag)|romESDS)|Hash|Name|SimpleName)|Map|Name|ShortName)|Decode(?:FormatIDs|rs)|Encode(?:FormatIDs|rs)|F(?:irstPlayableFormatFromList|ormat(?:EmploysDependentPackets|I(?:nfo|s(?:E(?:ncrypted|xternallyFramed)|VBR))|List|Name))|ID3Tag(?:Size|ToDictionary)|MatrixMixMap|NumberOfChannelsForLayout|OutputFormatList|PanningMatrix|Tag(?:ForChannelLayout|sForNumberOfChannels)|ValidateChannelLayout))|Q(?:Design(?:2)?|UALCOMM)|TimeCode|U(?:Law|n(?:knownFormatError|s(?:pecifiedError|upported(?:DataFormatError|PropertyError))))|iLBC))|H(?:ardware(?:Bad(?:DeviceError|ObjectError|PropertySizeError|StreamError)|IllegalOperationError|No(?:Error|tRunningError)|P(?:owerHint(?:FavorSavingPower|None)|roperty(?:Bo(?:otChimeVolume(?:Decibels(?:ToScalar(?:TransferFunction)?)?|RangeDecibels|Scalar(?:ToDecibels)?)|xList)|ClockDeviceList|De(?:fault(?:InputDevice|OutputDevice|SystemOutputDevice)|vice(?:ForUID|s))|HogModeIsAllowed|IsInitingOrExiting|MixStereoToMono|P(?:lugIn(?:ForBundleID|List)|owerHint|rocessIs(?:Audible|Master))|RunLoop|S(?:erviceRestarted|leepingIsAllowed)|Trans(?:late(?:BundleIDTo(?:PlugIn|TransportManager)|UIDTo(?:Box|ClockDevice|Device))|portManagerList)|U(?:nloadingIsAllowed|ser(?:IDChanged|SessionIsActiveOrHeadless))))|Service(?:DeviceProperty_VirtualMaster(?:Balance|Volume)|Property_ServiceRestarted)|Un(?:knownPropertyError|s(?:pecifiedError|upportedOperationError)))|ighPassFilterControlClassID)|ISubOwnerControlClassID|JackControlClassID|L(?:FE(?:MuteControlClassID|VolumeControlClassID)|evelControl(?:ClassID|Property(?:Convert(?:DecibelsToScalar|ScalarToDecibels)|Decibel(?:Range|Value|sToScalarTransferFunction)|ScalarValue)|TranferFunction(?:1(?:0Over1|1Over1|2Over1|Over(?:2|3))|2Over1|3Over(?:1|2|4)|4Over1|5Over1|6Over1|7Over1|8Over1|9Over1|Linear))|i(?:neLevelControlClassID|stenbackControlClassID))|MuteControlClassID|O(?:bject(?:ClassID(?:Wildcard)?|Property(?:BaseClass|C(?:lass|ontrolList|reator)|Element(?:CategoryName|Master|N(?:ame|umberName)|Wildcard)|FirmwareVersion|Identify|Listener(?:Added|Removed)|M(?:anufacturer|odelName)|Name|Owne(?:dObjects|r)|S(?:cope(?:Global|Input|Output|PlayThrough|Wildcard)|e(?:lectorWildcard|rialNumber)))|SystemObject|Unknown)|fflineUnit(?:Property_(?:InputSize|OutputSize)|RenderAction_(?:Complete|Preflight|Render))|utputUnit(?:Property_(?:C(?:hannelMap|urrentDevice)|EnableIO|HasIO|IsRunning|S(?:etInputCallback|tartTime(?:stampsAtZero)?))|Range|St(?:artSelect|opSelect)))|P(?:ha(?:ntomPowerControlClassID|seInvertControlClassID)|lugIn(?:C(?:lassID|reateAggregateDevice)|DestroyAggregateDevice|Property(?:B(?:oxList|undleID)|ClockDeviceList|DeviceList|TranslateUIDTo(?:Box|ClockDevice|Device))|sFolderType)|r(?:esetsFolderType|opertyWildcard(?:Channel|PropertyID|Section)))|Queue(?:DeviceProperty_(?:NumberChannels|SampleRate)|Err_(?:Buffer(?:E(?:mpty|nqueuedTwice)|InQueue)|C(?:annotStart(?:Yet)?|odecNotFound)|DisposalPending|EnqueueDuringReset|Invalid(?:Buffer|CodecAccess|Device|OfflineMode|P(?:arameter|roperty(?:Size|Value)?)|QueueType|RunState|Tap(?:Context|Type))|P(?:ermissions|rimeTimedOut)|QueueInvalidated|RecordUnderrun|TooManyTaps)|P(?:aram_(?:P(?:an|itch|layRate)|Volume(?:RampTime)?)|ro(?:cessingTap_(?:EndOfStream|P(?:ostEffects|reEffects)|S(?:iphon|tartOfStream))|perty_(?:C(?:hannelLayout|onverterError|urrent(?:Device|LevelMeter(?:DB)?))|DecodeBufferSizeFrames|Enable(?:LevelMetering|TimePitch)|IsRunning|Ma(?:gicCookie|ximumOutputPacketSize)|StreamDescription|TimePitch(?:Algorithm|Bypass))))|TimePitchAlgorithm_(?:Spectral|TimeDomain|Varispeed))|S(?:e(?:lectorControl(?:ClassID|ItemKindSpacer|Property(?:AvailableItems|CurrentItem|Item(?:Kind|Name)))|rvices(?:Bad(?:PropertySizeError|SpecifierSizeError)|NoError|Property(?:CompletePlaybackIfAppDies|IsUISound)|SystemSound(?:ClientTimedOutError|ExceededMaximumDurationError|UnspecifiedError)|UnsupportedPropertyError)|ttingsFlags_(?:ExpertParameter|InvisibleParameter|MetaParameter|UserInterfaceParameter))|liderControl(?:ClassID|Property(?:Range|Value))|o(?:loControlClassID|und(?:BanksFolderType|sFolderType))|t(?:ereoPanControl(?:ClassID|Property(?:PanningChannels|Value))|ream(?:ClassID|Property(?:Available(?:PhysicalFormats|VirtualFormats)|Direction|IsActive|Latency|OwningDevice|PhysicalFormat(?:Match|Supported|s)?|StartingChannel|TerminalType|VirtualFormat)|TerminalType(?:Di(?:gitalAudioInterface|splayPort)|H(?:DMI|ead(?:phones|setMicrophone))|L(?:FESpeaker|ine)|Microphone|Receiver(?:Microphone|Speaker)|Speaker|TTY|Unknown)|Unknown))|u(?:bDevice(?:ClassID|DriftCompensation(?:HighQuality|LowQuality|M(?:axQuality|ediumQuality|inQuality))|Property(?:DriftCompensation(?:Quality)?|ExtraLatency))|pportFolderType)|ystemObjectClassID)|T(?:alkbackControlClassID|imeStamp(?:HostTimeValid|NothingValid|RateScalarValid|S(?:MPTETimeValid|ample(?:HostTimeValid|TimeValid))|WordClockTimeValid)|oolboxErr(?:_(?:CannotDoInCurrentContext|EndOfTrack|I(?:llegalTrackDestination|nvalid(?:EventType|PlayerState|SequenceType))|NoSequence|StartOfTrack|Track(?:IndexError|NotFound))|or_NoTrackDestination)|ransportManager(?:C(?:lassID|reateEndPointDevice)|DestroyEndPointDevice|Property(?:EndPointList|Trans(?:lateUIDToEndPoint|portType))))|Unit(?:Add(?:PropertyListenerSelect|RenderNotifySelect)|C(?:lumpID_System|omplexRenderSelect)|E(?:rr_(?:CannotDoInCurrentContext|ExtensionNotFound|F(?:ailedInitialization|ileNotSpecified|ormatNotSupported)|I(?:llegalInstrument|n(?:itialized|strumentTypeNotFound|valid(?:Element|File(?:Path)?|OfflineRender|P(?:arameter(?:Value)?|roperty(?:Value)?)|Scope)))|M(?:IDIOutputBufferFull|issingKey)|NoConnection|PropertyNot(?:InUse|Writable)|RenderTimeout|TooManyFramesToProcess|Un(?:authorized|initialized|knownFileType))|vent_(?:BeginParameterChangeGesture|EndParameterChangeGesture|P(?:arameterValueChange|ropertyChange)))|GetP(?:arameterSelect|roperty(?:InfoSelect|Select))|InitializeSelect|M(?:anufacturer_Apple|igrateProperty_(?:FromPlugin|OldAutomation))|OfflineProperty_(?:InputSize|OutputSize|Preflight(?:Name|Requirements)|StartOffset)|P(?:arameter(?:Flag_(?:C(?:FNameRelease|anRamp)|Display(?:Cube(?:Root|d)|Exponential|Logarithmic|Mask|Square(?:Root|d))|ExpertMode|G(?:lobal|roup)|Has(?:C(?:FNameString|lump)|Name)|I(?:nput|s(?:ElementMeta|GlobalMeta|HighResolution|Readable|Writable))|MeterReadOnly|NonRealTime|O(?:mitFromPresets|utput)|PlotHistory|ValuesHaveStrings)|Name_Full|Unit_(?:AbsoluteCents|B(?:PM|eats|oolean)|C(?:ents|ustomUnit)|De(?:cibels|grees)|EqualPowerCrossfade|Generic|Hertz|Indexed|LinearGain|M(?:IDI(?:Controller|NoteNumber)|eters|i(?:lliseconds|xerFaderCurve1))|Octaves|P(?:an|ercent|hase)|R(?:at(?:e|io)|elativeSemiTones)|S(?:ampleFrames|econds)))|ro(?:cess(?:MultipleSelect|Select)|perty_(?:A(?:UHostIdentifier|ddParameterMIDIMapping|llParameterMIDIMappings|udioChannelLayout)|B(?:usCount|ypassEffect)|C(?:PULoad|lassInfo(?:FromDocument)?|o(?:coaUI|ntextName)|urrentP(?:layTime|reset))|De(?:ferredRenderer(?:ExtraLatency|PullSize|WaitFrames)|pendentParameters)|Element(?:Count|Name)|F(?:a(?:ctoryPresets|stDispatch)|requencyResponse)|GetUIComponentList|Ho(?:stCallbacks|tMapParameterMIDIMapping)|I(?:conLocation|n(?:PlaceProcessing|put(?:AnchorTimeStamp|SamplesInOutput)))|La(?:stRenderError|tency)|M(?:IDI(?:ControlMapping|OutputCallback(?:Info)?)|a(?:keConnection|trix(?:Dimensions|Levels)|ximumFramesPerSlice)|eter(?:Clipping|ingMode))|NickName|OfflineRender|P(?:a(?:nnerMode|rameter(?:ClumpName|HistoryInfo|I(?:DName|nfo)|List|StringFromValue|Value(?:FromString|Name|Strings)|sForOverview))|resent(?:Preset|ationLatency))|Re(?:moveParameterMIDIMapping|nderQuality|questViewController|verbRoomType)|S(?:RCAlgorithm|ampleRate(?:ConverterComplexity)?|chedule(?:AudioSlice|StartTimeStamp|dFile(?:BufferSizeFrames|IDs|NumberBuffers|Prime|Region))|et(?:ExternalBuffer|RenderCallback)|houldAllocateBuffer|p(?:atial(?:Mixer(?:AttenuationCurve|DistanceParams|RenderingFlags)|izationAlgorithm)|e(?:akerConfiguration|echChannel))|treamFormat|upport(?:ed(?:ChannelLayoutTags|NumChannels)|sMPE))|TailTime|UsesInternalReverb|Voice)))|R(?:ange|e(?:move(?:PropertyListener(?:Select|WithUserDataSelect)|RenderNotifySelect)|nder(?:Action_(?:DoNotCheckRenderArgs|OutputIsSilence|P(?:ostRender(?:Error)?|reRender))|Select)|setSelect))|S(?:RCAlgorithm_(?:MediumQuality|Polyphase)|ampleRateConverterComplexity_(?:Linear|Mastering|Normal)|c(?:heduleParametersSelect|ope_(?:G(?:lobal|roup)|Input|Layer(?:Item)?|Note|Output|Part))|etP(?:arameterSelect|ropertySelect)|ubType_(?:A(?:U(?:Converter|Filter|iPodTimeOther)|udioFilePlayer)|BandPassFilter|D(?:LSSynth|e(?:f(?:aultOutput|erredRenderer)|lay)|istortion|ynamicsProcessor)|G(?:enericOutput|raphicEQ)|H(?:ALOutput|RTFPanner|igh(?:PassFilter|ShelfFilter))|Low(?:PassFilter|ShelfFilter)|M(?:IDISynth|atrix(?:Mixer|Reverb)|erger|ulti(?:BandCompressor|ChannelMixer|Splitter))|N(?:BandEQ|e(?:t(?:Receive|Send)|wTimePitch))|P(?:arametricEQ|eakLimiter|itch)|R(?:everb2|o(?:gerBeep|undTripAAC))|S(?:ample(?:Delay|r)|cheduledSoundPlayer|oundFieldPanner|p(?:atialMixer|eechSynthesis|hericalHeadPanner|litter)|tereoMixer|ystemOutput)|TimePitch|V(?:arispeed|ectorPanner|oiceProcessingIO)))|Type_(?:Effect|FormatConverter|Generator|M(?:IDIProcessor|ixer|usic(?:Device|Effect))|O(?:fflineEffect|utput)|Panner)|UninitializeSelect|yCodecComponentType)|V(?:STFolderType|olumeControlClassID)|_(?:BadFilePathError|File(?:NotFoundError|PermissionError)|MemFullError|ParamError|TooManyFilesOpenError|UnimplementedError))|t(?:h(?:TypeKCItemAttr|orizationFlag(?:CanNotPreAuthorize|De(?:faults|stroyRights)|ExtendRights|InteractionAllowed|NoData|P(?:artialRights|reAuthorize)))|o(?:GenerateReturnID|matorWorkflowsFolderType|saveInformationFolderType)))|vailBoundsChangedFor(?:D(?:isplay|ock)|MenuBar))|B(?:LibTag2|SLN(?:C(?:ontrolPointFormat(?:NoMap|WithMap)|urrentVersion)|DistanceFormat(?:NoMap|WithMap)|HangingBaseline|Ideographic(?:CenterBaseline|HighBaseline|LowBaseline)|LastBaseline|MathBaseline|N(?:oBaseline(?:Override)?|umBaselineClasses)|RomanBaseline|Tag)|T(?:B(?:adCloseMask|igKeysMask)|HeaderNode|IndexNode|LeafNode|MapNode|VariableIndexKeysMask)|a(?:ck(?:spaceCharCode|wardArrowIcon)|d(?:A(?:dapterErr|rg(?:LengthErr|sErr)|ttributeErr)|BaseErr|C(?:ISErr|ustomIFIDErr)|DeviceErr|EDCErr|HandleErr|IRQErr|LinkErr|OffsetErr|PageErr|S(?:izeErr|ocketErr|peedErr)|T(?:upleDataErr|ypeErr)|V(?:ccErr|ppErr)|WindowErr)|ndpassParam_(?:Bandwidth|CenterFrequency))|ellCharCode|ig5_(?:BasicVariant|DOSVariant|ETenVariant|StandardVariant)|lessed(?:BusErrorBait|Folder)|o(?:otTimeStartupItemsFolderType|xAnnotationSelector)|ridgeSoftwareRunningCantSleep|u(?:llet(?:CharCode|Unicode)|rningIcon|syErr|ttonDialogItem)|y(?:CommentView|DateView|IconView|KindView|LabelView|NameView|S(?:izeView|mallIcon)|VersionView|tePacketTranslationFlag_IsEstimate))|C(?:A(?:Clock(?:Message_(?:Armed|Disarmed|PropertyChanged|St(?:art(?:TimeSet|ed)|opped)|WrongSMPTEFormat)|Property_(?:InternalTimebase|M(?:IDIClockDestinations|TC(?:Destinations|FreewheelTime)|eterTrack)|Name|S(?:MPTE(?:Format|Offset)|endMIDISPP|ync(?:Mode|Source))|T(?:empoMap|imebaseSource))|SyncMode_(?:Internal|M(?:IDIClockTransport|TCTransport))|Time(?:Format_(?:AbsoluteSeconds|Beats|HostTime|S(?:MPTE(?:Seconds|Time)|amples|econds))|base_(?:Audio(?:Device|OutputUnit)|HostTime))|_(?:CannotSetTimeError|Invalid(?:P(?:layRateError|ropertySizeError)|S(?:MPTE(?:FormatError|OffsetError)|ync(?:ModeError|SourceError))|Time(?:FormatError|base(?:Error|SourceError))|UnitError)|UnknownPropertyError))|F(?:LinearPCMFormatFlagIs(?:Float|LittleEndian)|MarkerType_(?:Edit(?:Destination(?:Begin|End)|Source(?:Begin|End))|Generic|Index|KeySignature|Program(?:End|Start)|Re(?:gion(?:End|S(?:tart|yncPoint))|leaseLoop(?:End|Start))|S(?:avedPlayPosition|election(?:End|Start)|ustainLoop(?:End|Start))|T(?:empo|imeSignature|rack(?:End|Start)))|RegionFlag_(?:LoopEnable|Play(?:Backward|Forward))|_(?:AudioDataChunkID|ChannelLayoutChunkID|EditCommentsChunkID|F(?:il(?:e(?:Type|Version_Initial)|lerChunkID)|ormatListID)|In(?:foStringsChunkID|strumentChunkID)|M(?:IDIChunkID|a(?:gicCookieID|rkerChunkID))|OverviewChunkID|P(?:acketTableChunkID|eakChunkID)|RegionChunkID|S(?:MPTE_TimeType(?:2(?:398|4|5|997(?:Drop)?)|30(?:Drop)?|5(?:0|994(?:Drop)?)|60(?:Drop)?|None)|tr(?:eamDescriptionChunkID|ingsChunkID))|U(?:MIDChunkID|UIDChunkID)|iXMLChunkID)))|CRegister(?:CBit|NBit|VBit|XBit|ZBit)|F(?:Error(?:HTTP(?:AuthenticationTypeUnsupported|Bad(?:Credentials|ProxyCredentials|URL)|ConnectionLost|P(?:arseFailure|roxyConnectionFailure)|RedirectionLoopDetected|SProxyConnectionFailure)|PACFile(?:Auth|Error))|FTPErrorUnexpectedStatusCode|H(?:TTPCookieCannotParseCookieFile|ost(?:Addresses|Error(?:HostNotFound|Unknown)|Names|Reachability))|M68kRTA|NetService(?:Error(?:BadArgument|C(?:ancel|ollision)|DNSServiceFailure|In(?:Progress|valid)|NotFound|Timeout|Unknown)|Flag(?:IsD(?:efault|omain)|MoreComing|NoAutoRename|Remove)|MonitorTXT|sError(?:BadArgument|C(?:ancel|ollision)|In(?:Progress|valid)|NotFound|Timeout|Unknown))|S(?:OCKS(?:4Error(?:Id(?:Conflict|entdFailed)|RequestFailed|UnknownStatusCode)|5Error(?:Bad(?:Credentials|ResponseAddr|State)|NoAcceptableMethod|UnsupportedNegotiationMethod)|ErrorUn(?:knownClientVersion|supportedServerVersion))|treamError(?:HTTP(?:Authentication(?:Bad(?:Password|UserName)|TypeUnsupported)|BadURL|ParseFailure|RedirectionLoop|SProxyFailureUnexpectedResponseToCONNECTMethod)|SOCKS(?:4(?:Id(?:Conflict|entdFailed)|RequestFailed|SubDomainResponse)|5(?:Bad(?:ResponseAddr|State)|SubDomain(?:Method|Response|UserPass))|SubDomain(?:None|VersionCode)|UnknownClientVersion)))|URLError(?:AppTransportSecurityRequiresSecureConnection|Ba(?:ckgroundSession(?:InUseByAnotherProcess|WasDisconnected)|d(?:ServerResponse|URL))|C(?:a(?:llIsActive|n(?:celled|not(?:C(?:loseFile|onnectToHost|reateFile)|Decode(?:ContentData|RawData)|FindHost|LoadFromNetwork|MoveFile|OpenFile|ParseResponse|RemoveFile|WriteToFile)))|lientCertificateRe(?:jected|quired))|D(?:NSLookupFailed|ata(?:LengthExceedsMaximum|NotAllowed)|ownloadDecodingFailed(?:MidStream|ToComplete))|File(?:DoesNotExist|IsDirectory|OutsideSafeArea)|HTTPTooManyRedirects|InternationalRoamingOff|N(?:etworkConnectionLost|o(?:PermissionsToReadFile|tConnectedToInternet))|Re(?:directToNonExistentLocation|questBodyStreamExhausted|sourceUnavailable)|Se(?:cureConnectionFailed|rverCertificate(?:Has(?:BadDate|UnknownRoot)|NotYetValid|Untrusted))|TimedOut|U(?:n(?:known|supportedURL)|ser(?:AuthenticationRequired|CancelledAuthentication))|ZeroByteResource))|G(?:Image(?:AnimationStatus_(?:AllocationFailure|CorruptInputImage|IncompleteInputImage|ParameterError|UnsupportedFormat)|Metadata(?:Error(?:BadArgument|ConflictingArguments|PrefixConflict|Un(?:known|supportedFormat))|Type(?:A(?:lternate(?:Array|Text)|rray(?:Ordered|Unordered))|Default|Invalid|Str(?:ing|ucture)))|PropertyOrientation(?:Down(?:Mirrored)?|Left(?:Mirrored)?|Right(?:Mirrored)?|Up(?:Mirrored)?)|Status(?:Complete|In(?:complete|validData)|ReadingHeader|Un(?:expectedEOF|knownType)))|L(?:Bad(?:A(?:ddress|lloc|ttribute)|Co(?:deModule|n(?:nection|text))|D(?:isplay|rawable)|Enumeration|FullScreen|Match|OffScreen|P(?:ixelFormat|roperty)|RendererInfo|State|Value|Window)|C(?:E(?:CrashOnRemovedFunctions|DisplayListOptimization|MPEngine|Rasterization|S(?:tateValidation|urfaceBackingSize|wap(?:Limit|Rectangle)))|P(?:C(?:lientStorage|ontextPriorityRequest(?:High|Low|Normal)|urrentRendererID)|DispatchTableSize|GPU(?:FragmentProcessing|RestartStatus(?:Blacklisted|Caused|None)|VertexProcessing)|HasDrawable|MPSwapsInFlight|ReclaimResources|S(?:urface(?:BackingSize|O(?:pacity|rder)|SurfaceVolatile|Texture)|wap(?:Interval|Rectangle))))|GO(?:ClearFormatCache|FormatCacheSize|Re(?:setLibrary|tainRenderers)|Use(?:BuildCache|ErrorHandler))|NoError|OGLPVersion_(?:3_2_Core|GL3_Core|Legacy)|PFA(?:A(?:cc(?:elerated(?:Compute)?|umSize)|l(?:l(?:Renderers|owOfflineRenderers)|phaSize)|ux(?:Buffers|DepthStencil))|Backing(?:Store|Volatile)|C(?:losestPolicy|o(?:lor(?:Float|Size)|mpliant))|D(?:epthSize|isplayMask|oubleBuffer)|FullScreen|M(?:PSafe|aximumPolicy|inimumPolicy|ulti(?:Screen|sample))|NoRecovery|O(?:ffScreen|penGLProfile)|PBuffer|R(?:e(?:motePBuffer|ndererID)|obust)|S(?:ample(?:Alpha|Buffers|s)|ingleRenderer|te(?:ncilSize|reo)|upersample)|TripleBuffer|VirtualScreenCount|Window)|R(?:P(?:Acc(?:elerated(?:Compute)?|umModes)|B(?:ackingStore|ufferModes)|Co(?:lorModes|mpliant)|D(?:epthModes|isplayMask)|FullScreen|GPU(?:FragProcCapable|VertProcCapable)|M(?:PSafe|ax(?:AuxBuffers|Sample(?:Buffers|s))|ultiScreen)|O(?:ffScreen|nline)|R(?:enderer(?:Count|ID)|obust)|S(?:ample(?:Alpha|Modes)|tencilModes)|TextureMemory(?:Megabytes)?|VideoMemory(?:Megabytes)?|Window)|enderer(?:A(?:TIRa(?:deon(?:8500ID|9700ID|ID|X(?:1000ID|2000ID|3000ID))|ge(?:128ID|ProID))|ppleSWID)|Ge(?:Force(?:2MXID|3ID|8xxxID|FXID)|neric(?:FloatID|ID))|Intel(?:900ID|HD(?:4000ID|ID)|X3100ID)|Mesa3DFXID|VTBladeXP2ID))))|JK(?:ItalicRoman(?:O(?:ffSelector|nSelector)|Selector)|RomanSpacingType|SymbolAlt(?:F(?:iveSelector|ourSelector)|OneSelector|T(?:hreeSelector|woSelector)|ernativesType)|VerticalRoman(?:CenteredSelector|HBaselineSelector|PlacementType))|M(?:ActivateTextService|CopyTextServiceInputModeList|DeactivateTextService|F(?:ixTextService|loatBitmapFlags(?:Alpha(?:Premul)?|None|RangeClipped))|Get(?:InputModePaletteMenu|ScriptLangSupport|TextService(?:Menu|Property))|H(?:elpItem(?:AppleGuide|NoHelp|OtherHelp|RemoveHelp)|idePaletteWindows)|In(?:itiateTextService|putModePaletteItemHit)|MenuItemSelected|NothingSelected|S(?:Attr(?:Apple(?:CodesigningHashAgility(?:V2)?|ExpirationTime)|None|S(?:igningTime|mime(?:Capabilities|EncryptionKeyPrefs|MSEncryptionKeyPrefs)))|Certificate(?:Chain(?:WithRoot(?:OrFail)?)?|None|SignerOnly)|Signer(?:Invalid(?:Cert|Index|Signature)|NeedsDetachedContent|Unsigned|Valid)|etTextService(?:Cursor|Property)|howHelpSelected)|Te(?:rminateTextService|xtService(?:Event(?:Ref)?|MenuSelect))|UCTextServiceEvent)|S(?:Accept(?:AllComponentsMode|ThreadSafeComponentsOnlyMode)|DiskSpaceRecoveryOptionNoUI|Identity(?:AuthorityNotAccessibleErr|C(?:lass(?:Group|User)|ommitCompleted)|D(?:eletedErr|uplicate(?:FullNameErr|PosixNameErr))|Flag(?:Hidden|None)|Invalid(?:FullNameErr|PosixNameErr)|PermissionErr|Query(?:Event(?:ErrorOccurred|Results(?:Added|Changed|Removed)|SearchPhaseFinished)|GenerateUpdateEvents|IncludeHiddenIdentities|String(?:BeginsWith|Equals))|UnknownAuthorityErr)|SM_APPLEDL_MASK_MODE|tackBased)|T(?:CharacterCollection(?:Adobe(?:CNS1|GB1|Japan(?:1|2)|Korea1)|IdentityMapping)|F(?:ont(?:BoldTrait|C(?:la(?:rendonSerifsClass|ss(?:ClarendonSerifs|FreeformSerifs|M(?:ask(?:Shift|Trait)|odernSerifs)|O(?:ldStyleSerifs|rnamentals)|S(?:ansSerif|cripts|labSerifs|ymbolic)|TransitionalSerifs|Unknown))|o(?:l(?:lectionCopy(?:DefaultOptions|StandardSort|Unique)|orGlyphsTrait)|mpositeTrait|ndensedTrait))|DescriptorMatching(?:D(?:id(?:Begin|F(?:ailWithError|inish(?:Downloading)?)|Match)|ownloading)|Stalled|WillBegin(?:Downloading|Querying))|ExpandedTrait|F(?:ormat(?:Bitmap|OpenType(?:PostScript|TrueType)|PostScript|TrueType|Unrecognized)|reeformSerifsClass)|ItalicTrait|M(?:anager(?:AutoActivation(?:D(?:efault|isabled)|Enabled)|Error(?:A(?:lreadyRegistered|ssetNotFound)|CancelledByUser|DuplicatedName|ExceededResourceLimit|FileNotFound|In(?:Use|sufficient(?:Info|Permissions)|validF(?:ilePath|ontData))|MissingEntitlement|NotRegistered|RegistrationFailed|SystemRequired|UnrecognizedFormat)|Scope(?:None|P(?:ersistent|rocess)|Session|User))|o(?:dernSerifsClass|noSpaceTrait))|O(?:ldStyleSerifsClass|ptions(?:Default|Pre(?:ferSystemFont|ventAutoActivation))|r(?:ientation(?:Default|Horizontal|Vertical)|namentalsClass))|Priority(?:Computer|Dynamic|Network|Process|System|User)|S(?:ansSerifClass|criptsClass|labSerifsClass|ymbolicClass)|T(?:able(?:A(?:cnt|nkr|var)|B(?:ASE|dat|hed|loc|sln)|C(?:B(?:DT|LC)|FF(?:2)?|OLR|PAL|idg|map|v(?:ar|t))|DSIG|EB(?:DT|LC|SC)|F(?:dsc|eat|mtx|ond|pgm|var)|G(?:DEF|POS|SUB|asp|lyf|var)|H(?:VAR|dmx|ead|hea|mtx|sty)|J(?:STF|ust)|Ker(?:n|x)|L(?:TSH|car|oca|tag)|M(?:ATH|ERG|VAR|axp|eta|or(?:t|x))|Name|O(?:S2|p(?:bd|tionNoOptions))|P(?:CLT|ost|r(?:ep|op))|S(?:TAT|VG|bi(?:t|x))|Trak|V(?:DMX|ORG|VAR|hea|mtx)|Xref|Zapf)|ra(?:it(?:Bold|C(?:lassMask|o(?:lorGlyphs|mposite|ndensed))|Expanded|Italic|MonoSpace|UIOptimized|Vertical)|nsitionalSerifsClass))|U(?:I(?:Font(?:A(?:lertHeader|pplication)|ControlContent|EmphasizedSystem(?:Detail)?|Label|M(?:e(?:nu(?:Item(?:CmdKey|Mark)?|Title)|ssage)|ini(?:EmphasizedSystem|System))|None|P(?:alette|ushButton)|S(?:mall(?:EmphasizedSystem|System|Toolbar)|ystem(?:Detail)?)|Tool(?:Tip|bar)|U(?:ser(?:FixedPitch)?|tilityWindowTitle)|Views|WindowTitle)|OptimizedTrait)|nknownClass)|VerticalTrait)|rameP(?:athFill(?:EvenOdd|WindingNumber)|rogression(?:LeftToRight|RightToLeft|TopToBottom)))|Line(?:B(?:ounds(?:ExcludeTypographic(?:Leading|Shifts)|IncludeLanguageExtents|Use(?:GlyphPathBounds|HangingPunctuation|OpticalBounds))|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Head|Middle|Tail)|WordWrapping))|Truncation(?:End|Middle|Start))|ParagraphStyleSpecifier(?:Alignment|BaseWritingDirection|Count|DefaultTabInterval|FirstLineHeadIndent|HeadIndent|Line(?:B(?:oundsOptions|reakMode)|HeightMultiple|SpacingAdjustment)|M(?:aximumLine(?:Height|Spacing)|inimumLine(?:Height|Spacing))|ParagraphSpacing(?:Before)?|Ta(?:bStops|ilIndent))|Run(?:Delegate(?:CurrentVersion|Version1)|Status(?:HasNonIdentityMatrix|No(?:Status|nMonotonic)|RightToLeft))|TextAlignment(?:Center|Justified|Left|Natural|Right)|Underline(?:Pattern(?:D(?:ash(?:Dot(?:Dot)?)?|ot)|Solid)|Style(?:Double|None|Single|Thick))|WritingDirection(?:Embedding|LeftToRight|Natural|Override|RightToLeft))|UPSPPDDomain|V(?:AttachmentMode_Should(?:NotPropagate|Propagate)|Pixel(?:Buffer(?:Lock_ReadOnly|PoolFlushExcessBuffers)|FormatType_(?:1(?:28RGBAFloat|4Bayer_(?:BGGR|G(?:BRG|RBG)|RGGB)|6(?:BE5(?:55|65)|Gray|LE5(?:55(?:1)?|65))|IndexedGray_WhiteIsZero|Monochrome)|2(?:4(?:BGR|RGB)|Indexed(?:Gray_WhiteIsZero)?)|3(?:0RGB(?:LEPackedWideGamut)?|2(?:A(?:BGR|RGB|lphaGray)|BGRA|RGBA))|4(?:2(?:0YpCbCr(?:10BiPlanar(?:FullRange|VideoRange)|8(?:BiPlanar(?:FullRange|VideoRange)|Planar(?:FullRange)?|VideoRange_8A_TriPlanar))|2YpCbCr(?:1(?:0(?:BiPlanar(?:FullRange|VideoRange))?|6)|8(?:FullRange|_yuvs)?|_4A_8BiPlanar))|44(?:4(?:AYpCbCr(?:16|8)|YpCbCrA8(?:R)?)|YpCbCr(?:10(?:BiPlanar(?:FullRange|VideoRange))?|8))|8RGB|Indexed(?:Gray_WhiteIsZero)?)|64(?:ARGB|RGBAHalf)|8Indexed(?:Gray_WhiteIsZero)?|ARGB2101010LEPacked|D(?:epthFloat(?:16|32)|isparityFloat(?:16|32))|OneComponent(?:16Half|32Float|8)|TwoComponent(?:16Half|32Float|8)))|Return(?:AllocationFailed|DisplayLink(?:AlreadyRunning|CallbacksNotSet|NotRunning)|Error|First|Invalid(?:Argument|Display|P(?:ixel(?:BufferAttributes|Format)|oolAttributes)|Size)|Last|P(?:ixelBufferNot(?:MetalCompatible|OpenGLCompatible)|oolAllocationFailed)|Retry|Success|Unsupported|WouldExceedAllocationThreshold)|SMPTETime(?:Running|Type(?:2(?:4|5|997(?:Drop)?)|30(?:Drop)?|5994|60)|Valid)|Time(?:IsIndefinite|Stamp(?:BottomField|HostTimeValid|IsInterlaced|RateScalarValid|SMPTETimeValid|TopField|Video(?:HostTimeValid|RefreshPeriodValid|TimeValid))))|a(?:chedDataFolderType|l(?:ibratorNamePrefix|lingConvention(?:Mask|Phase|Width))|n(?:onicalCompositionO(?:ffSelector|nSelector)|t(?:ConfigureCardErr|ReportProcessorTemperatureErr))|r(?:bonLibraryFolderType|d(?:BusCardErr|PowerOffErr))|seSensitive(?:Layout(?:O(?:ffSelector|nSelector)|Type)|SpacingO(?:ffSelector|nSelector))|utionIcon)|e(?:nterOn(?:MainScreen|Screen)|rt(?:Search(?:Any|Decrypt(?:Allowed|Disallowed|Ignored|Mask)|Encrypt(?:Allowed|Disallowed|Ignored|Mask)|PrivKeyRequired|S(?:hift|igning(?:Allowed|Disallowed|Ignored|Mask))|Unwrap(?:Allowed|Disallowed|Ignored|Mask)|Verify(?:Allowed|Disallowed|Ignored|Mask)|Wrap(?:Allowed|Disallowed|Ignored|Mask))|Usage(?:AllAdd|DecryptA(?:dd|skAndAdd)|EncryptA(?:dd|skAndAdd)|KeyExchA(?:dd|skAndAdd)|RootA(?:dd|skAndAdd)|S(?:SLA(?:dd|skAndAdd)|hift|igningA(?:dd|skAndAdd))|VerifyA(?:dd|skAndAdd))|ificateKCItemClass))|h(?:aracter(?:AlternativesType|PaletteInputMethodClass|ShapeType)|e(?:ck(?:BoxDialogItem|CharCode|Unicode)|wableItemsFolderType))|ircleAnnotationSelector|l(?:ass(?:KCItemAttr|ic(?:D(?:esktopFolderType|omain)|PreferencesFolderType))|ea(?:nUpAEUT|rCharCode)|i(?:entRequestDenied|p(?:boardIcon|ping(?:Creator|PictureType(?:Icon)?|SoundType(?:Icon)?|TextType(?:Icon)?|UnknownType(?:Icon)?))))|o(?:l(?:l(?:ate(?:AttributesNotFoundErr|BufferTooSmall|Invalid(?:C(?:har|ollationRef)|Options)|MissingUnicodeTableErr|PatternNotFoundErr|UnicodeConvertFailedErr)|ection(?:AllAttributes|D(?:efaultAttributes|ontWant(?:Attributes|Data|I(?:d|ndex)|Size|Tag))|Lock(?:Bit|Mask)|NoAttributes|Persistence(?:Bit|Mask)|Reserved(?:0(?:Bit|Mask)|1(?:0(?:Bit|Mask)|1(?:Bit|Mask)|2(?:Bit|Mask)|3(?:Bit|Mask)|Bit|Mask)|2(?:Bit|Mask)|3(?:Bit|Mask)|4(?:Bit|Mask)|5(?:Bit|Mask)|6(?:Bit|Mask)|7(?:Bit|Mask)|8(?:Bit|Mask)|9(?:Bit|Mask))|User(?:0(?:Bit|Mask)|1(?:0(?:Bit|Mask)|1(?:Bit|Mask)|2(?:Bit|Mask)|3(?:Bit|Mask)|4(?:Bit|Mask)|5(?:Bit|Mask)|Bit|Mask)|2(?:Bit|Mask)|3(?:Bit|Mask)|4(?:Bit|Mask)|5(?:Bit|Mask)|6(?:Bit|Mask)|7(?:Bit|Mask)|8(?:Bit|Mask)|9(?:Bit|Mask)|Attributes)))|or(?:Picker(?:AppIsColorSyncAware|Ca(?:llColorProcLive|n(?:AnimatePalette|ModifyPalette))|D(?:etachedFromChoices|ialogIsMo(?:dal|veable))|In(?:ApplicationDialog|PickerDialog|SystemDialog)|sFolderType)|Sync(?:1(?:0BitInteger|6Bit(?:Float|Integer)|BitGamut)|32Bit(?:Float|Integer|NamedColorIndex)|8BitInteger|Alpha(?:First|InfoMask|Last|None(?:Skip(?:First|Last))?|Premultiplied(?:First|Last))|ByteOrder(?:16(?:Big|Little)|32(?:Big|Little)|Default|Mask)|CMMFolderType|Folder(?:Icon|Type)|ProfilesFolderType|ScriptingFolderType))?)|m(?:m(?:and(?:CharCode|Unicode)|entKCItemAttr|on(?:LigaturesO(?:ffSelector|nSelector)|NameKCItemAttr))|p(?:atibilityCompositionO(?:ffSelector|nSelector)|o(?:nent(?:AliasResourceType|C(?:anDoSelect|loseSelect)|DebugOption|ExecuteWiredActionSelect|Get(?:MPWorkFunctionSelect|PublicResourceSelect)|OpenSelect|Re(?:gisterSelect|sourceType)|TargetSelect|UnregisterSelect|VersionSelect|sFolderType)|sitionsFolderType)|uterIcon))|n(?:figurationLockedErr|n(?:Suite|ect(?:ToIcon|ion(?:AudioStreaming|BlueGammaScale|C(?:h(?:anged|eckEnable)|o(?:lor(?:DepthsSupported|Mode(?:sSupported)?)|ntroller(?:ColorDepth|D(?:epthsSupported|itherControl))))|Display(?:Flags|Parameter(?:Count|s))|Enable(?:Audio)?|Fl(?:ags|ushParameters)|G(?:ammaScale|reenGammaScale)|HandleDisplayPortEvent|Ignore|Overscan|P(?:anelTimingDisable|o(?:stWake|wer)|robe)|RedGammaScale|S(?:tartOfFrameTime|upports(?:AppleSense|HLDDCSense|LLDDCSense)|ync(?:Enable|Flags))|V(?:BLMultiplier|ideoBest))))|t(?:ainer(?:AliasType|CDROMAliasType|F(?:loppyAliasType|olderAliasType)|HardDiskAliasType|ServerAliasType|TrashAliasType)|extual(?:Alternates(?:O(?:ffSelector|nSelector)|Type)|LigaturesO(?:ffSelector|nSelector)|MenuItemsFolder(?:Icon|Type)|SwashAlternatesO(?:ffSelector|nSelector))|rol(?:A(?:dd(?:FontSizeMask|ToMetaFontMask)|utoToggles)|B(?:e(?:havior(?:CommandMenu|MultiValueMenu|OffsetContents|Pushbutton|S(?:ingleValueMenu|ticky)|Toggles)|velButton(?:Align(?:Bottom(?:Left|Right)?|Center|Left|Right|SysDirection|T(?:ext(?:Center|Flush(?:Left|Right)|SysDirection)|op(?:Left|Right)?))|C(?:enterPopupGlyphTag|ontentTag)|Graphic(?:AlignTag|OffsetTag)|IsMultiValueMenuTag|KindTag|La(?:rgeBevel(?:Proc|Variant)?|stMenuTag)|Menu(?:DelayTag|HandleTag|On(?:Bottom|Right(?:Variant)?)|RefTag|ValueTag)|NormalBevel(?:Proc|Variant)?|OwnedMenuRefTag|Place(?:AboveGraphic|BelowGraphic|Normally|SysDirection|To(?:LeftOfGraphic|RightOfGraphic))|S(?:caleIconTag|mallBevel(?:Proc|Variant)?)|T(?:ext(?:AlignTag|OffsetTag|PlaceTag)|ransformTag)))|oundsChange(?:PositionChanged|SizeChanged)|uttonPart)|C(?:h(?:asingArrows(?:AnimatingTag|Proc)|eckBox(?:AutoToggleProc|CheckedValue|MixedValue|P(?:art|roc)|UncheckedValue))|l(?:ickableMetaPart|ock(?:A(?:MPMPart|bsoluteTimeTag|nimatingTag)|DateProc|F(?:lag(?:DisplayOnly|Live|Standard)|ontStyleTag)|HourDayPart|Is(?:DisplayOnly|Live)|LongDateTag|M(?:inuteMonthPart|onthYearProc)|NoFlags|Part|SecondYearPart|T(?:ime(?:Proc|SecondsProc)|ype(?:HourMinute(?:Second)?|Month(?:DayYear|Year)))))|o(?:l(?:lectionTag(?:Bounds|Command|ID(?:ID|Signature)|M(?:aximum|inimum)|RefCon|Title|UnicodeTitle|V(?:a(?:lue|rCode)|i(?:ewSize|sibility)))|orTableResourceType)|ntent(?:AlertIconRes|C(?:GImageRef|Icon(?:Handle|Res))|I(?:CON(?:Res)?|con(?:Ref|Suite(?:Handle|Res)))|MetaPart|Pict(?:Handle|Res)|T(?:ag|extOnly))))|D(?:ataBrowser(?:DraggedPart|EditText(?:KeyFilterTag|ValidationProcTag)|IncludesFrameAndFocusTag|KeyFilterTag|Part)|efProc(?:ResourceType|Type)|i(?:alogItem|s(?:abledPart|closure(?:Button(?:Closed|Disclosed)|TrianglePoint(?:Default|Left|Right))))|ownButtonPart)|E(?:dit(?:Text(?:C(?:FStringTag|harCount)|FixedTextTag|In(?:line(?:InputProc|P(?:ostUpdateProcTag|reUpdateProcTag))|sert(?:CFStringRefTag|TextBufferTag))|Key(?:FilterTag|ScriptBehaviorTag)|LockedTag|P(?:a(?:rt|ssword(?:CFStringTag|Proc|Tag))|roc)|S(?:electionTag|ingleLineTag|pellCheck(?:AsYouTypeTag|ingTag)|tyleTag)|T(?:EHandleTag|extTag)|ValidationProcTag)|UnicodeTextP(?:asswordProc|ostUpdateProcTag|roc))|ntireControl)|Fo(?:cus(?:N(?:extPart|oPart)|PrevPart)|nt(?:BigSystemFont|MiniSystemFont|S(?:mall(?:BoldSystemFont|SystemFont)|tyleTag)|ViewSystemFont))|G(?:etsFocusOnClick|roupBox(?:CheckBoxProc|F(?:ontStyleTag|rameRectTag)|Menu(?:HandleTag|RefTag)|PopupButtonProc|Secondary(?:CheckBoxProc|PopupButtonProc|TextTitleProc)|T(?:extTitleProc|itleRectTag)))|Ha(?:ndlesTracking|s(?:RadioBehavior|SpecialBackground))|I(?:con(?:AlignmentTag|ContentTag|NoTrackProc|P(?:art|roc)|Re(?:f(?:NoTrackProc|Proc)|sourceIDTag)|Suite(?:NoTrackProc|Proc)|TransformTag)|dlesWithTimer|mageWell(?:ContentTag|IsDragDestinationTag|P(?:art|roc)|TransformTag)|n(?:activePart|dicatorPart|vertsUpDownValueMeaning))|K(?:ey(?:Filter(?:BlockKey|PassKey|Tag)|ScriptBehavior(?:AllowAnyScript|PrefersRoman|RequiresRoman))|ind(?:BevelButton|C(?:h(?:asingArrows|eck(?:Box|GroupBox))|lock)|D(?:ataBrowser|isclosure(?:Button|Triangle))|Edit(?:Text|UnicodeText)|GroupBox|HI(?:ComboBox|GrowBoxView|ImageView|MenuView|S(?:crollView|earchField|tandardMenuView)|TextView)|I(?:con|mageWell)|Li(?:stBox|ttleArrows)|P(?:icture|lacard|opup(?:Arrow|Button|GroupBox)|rogressBar|ush(?:Button|IconButton))|R(?:adio(?:Button|Group)|elevanceBar|oundButton)|S(?:croll(?:Bar|ingTextBox)|eparator|ignatureApple|lider|taticText)|Ta(?:bs|g)|UserPane|WindowHeader))|L(?:abelPart|i(?:st(?:Box(?:AutoSizeProc|DoubleClick(?:Part|Tag)|FontStyleTag|KeyFilterTag|L(?:DEFTag|istHandleTag)|P(?:art|roc))|DescResType)|ttleArrows(?:IncrementValueTag|Proc)))|MenuPart|No(?:Content|Part|Variant)|OpaqueMetaPart|P(?:a(?:ge(?:DownPart|UpPart)|nel(?:DisabledFolder(?:Icon|Type)|Folder(?:AliasType|Icon(?:Resource)?|Type)))|icture(?:HandleTag|NoTrackProc|P(?:art|roc))|lacardProc|opup(?:Arrow(?:EastProc|NorthProc|Orientation(?:East|North|South|West)|S(?:ize(?:Normal|Small)|mall(?:EastProc|NorthProc|SouthProc|WestProc)|outhProc)|WestProc)|Button(?:CheckCurrentTag|ExtraHeightTag|Menu(?:HandleTag|IDTag|RefTag)|OwnedMenuRefTag|Proc)|FixedWidthVariant|Use(?:AddResMenuVariant|WFontVariant)|VariableWidthVariant)|ro(?:gressBar(?:AnimatingTag|IndeterminateTag|Proc)|pertyPersistent)|ushBut(?:LeftIconProc|RightIconProc|ton(?:AnimatingTag|C(?:ancelTag|ontentTag)|DefaultTag|I(?:con(?:AlignmentTag|On(?:Left|Right))|sTexturedTag)|Proc)))|R(?:adio(?:Button(?:AutoToggleProc|CheckedValue|MixedValue|P(?:art|roc)|UncheckedValue)|GroupP(?:art|roc))|elevanceBarProc|oundButton(?:ContentTag|LargeSize|NormalSize|SizeTag))|S(?:croll(?:Bar(?:LiveProc|Proc|ShowsArrowsTag)|TextBox(?:A(?:nimatingTag|utoScroll(?:AmountTag|Proc))|ContentsTag|DelayBe(?:foreAutoScrollTag|tweenAutoScrollTag)|Proc))|e(?:archField(?:CancelPart|MenuPart)|paratorLineProc)|ize(?:Auto|Large|Mini|Normal|Small|Tag)|lider(?:DoesNotPoint|HasTickMarks|LiveFeedback|NonDirectional|P(?:oints(?:DownOrRight|UpOrLeft)|roc)|ReverseDirection)|t(?:aticText(?:CFStringTag|IsMultilineTag|Proc|StyleTag|T(?:ext(?:HeightTag|Tag)|runcTag))|r(?:ipModulesFolder(?:Icon|Type)|uctureMetaPart))|upports(?:C(?:alcBestRect|lickActivation|ontextualMenus)|D(?:ataAccess|ragAndDrop)|Embedding|F(?:lattening|ocus)|G(?:etRegion|hosting)|LiveFeedback|SetCursor))|T(?:ab(?:ContentRectTag|Direction(?:East|North|South|West)|EnabledFlagTag|FontStyleTag|I(?:mageContentTag|nfo(?:Tag|Version(?:One|Zero)))|L(?:arge(?:EastProc|NorthProc|Proc|SouthProc|WestProc)|istResType)|S(?:ize(?:Large|Mini|Small)|mall(?:EastProc|NorthProc|Proc|SouthProc|WestProc)))|emplateResourceType|hemeText(?:FontTag|HorizontalFlushTag|InfoTag|TruncationTag|VerticalFlushTag)|riangle(?:AutoToggleProc|L(?:astValueTag|eftFacing(?:AutoToggleProc|Proc))|P(?:art|roc)))|U(?:nicode|pButtonPart|se(?:AllMask|BackColorMask|F(?:aceMask|o(?:ntMask|reColorMask))|JustMask|ModeMask|SizeMask|ThemeFontIDMask|r(?:ItemDrawProcTag|Pane(?:ActivateProcTag|BackgroundProcTag|DrawProcTag|FocusProcTag|HitTestProcTag|IdleProcTag|KeyDownProcTag|Proc|TrackingProcTag))|sOwningWindowsFontVariant))|W(?:ants(?:Activate|Idle)|indow(?:Header(?:IsListHeaderTag|Proc)|ListViewHeaderProc))))|verterPrimeMethod_(?:No(?:ne|rmal)|Pre))|operativeThread|re(?:E(?:ndian(?:AppleEventManagerDomain|ResourceManagerDomain)|ventClass)|ServicesFolderType))|reat(?:e(?:Folder(?:AtBoot(?:Bit)?)?|IfNeeded)|ionDateKCItemAttr|orKCItemAttr)|u(?:r(?:rent(?:MixedModeStateRecord|Process|ThreadID|User(?:Folder(?:Location|Type)|RemoteFolder(?:Location|Type)))|sive(?:ConnectionType|Selector))|stom(?:BadgeResource(?:ID|Type|Version)|Icon(?:KCItemAttr|Resource))))|D(?:0Dispatched(?:CStackBased|PascalStackBased)|1DispatchedPascalStackBased|CM(?:A(?:llowListing|nyFieldT(?:ag|ype))|BasicDictionaryClass|Can(?:AddDictionaryFieldMask|CreateDictionaryMask|HaveMultipleIndexMask|ModifyDictionaryMask|StreamDictionaryMask|Use(?:FileDictionaryMask|MemoryDictionaryMask|TransactionMask))|DictionaryHeader(?:Signature|Version)|Fi(?:ndMethod(?:B(?:ackwardTrie|eginningMatch)|ContainsMatch|E(?:ndingMatch|xactMatch)|ForwardTrie)|xedSizeFieldMask)|HiddenFieldMask|I(?:dentifyFieldMask|ndexedFieldMask)|Japanese(?:AccentT(?:ag|ype)|FukugouInfoT(?:ag|ype)|H(?:inshiT(?:ag|ype)|yokiT(?:ag|ype))|OnKunReadingT(?:ag|ype)|PhoneticT(?:ag|ype)|WeightT(?:ag|ype)|YomiT(?:ag|ype))|ProhibitListing|Re(?:ad(?:OnlyDictionary|WriteDictionary)|quiredFieldMask)|SpecificDictionaryClass|UserDictionaryClass)|M(?:CantBlock|D(?:isplay(?:AlreadyInstalledErr|NotFoundErr)|riverNotDisplayMgrAwareErr)|FoundErr|GenErr|M(?:ainDisplayCannotMoveErr|irroring(?:Blocked|NotOn|OnAlready))|No(?:DeviceTableclothErr|tFoundErr)|SWNotInitializedErr|WrongNumberOfDisplays)|OSJapanese(?:PalmVariant|StandardVariant)|R(?:AudioFileNotSupportedErr|B(?:adLayoutErr|lock(?:Size(?:Audio|DVDData|Mode(?:1Data|2(?:Data|Form(?:1Data|2Data))))|Type(?:Audio|DVDData|Mode(?:1Data|2(?:Data|Form(?:1Data|2Data)))))|urn(?:MediaWriteFailureErr|NotAllowedErr|PowerCalibrationErr|UnderrunErr))|CDText(?:Encoding(?:ASCII|ISOLatin1Modified)|GenreCode(?:A(?:dultContemporary|lternativeRock)|C(?:hildrens|lassical|o(?:ntemporaryChristian|untry))|Dance|E(?:asyListening|rotic)|Folk|Gospel|HipHop|Jazz|Latin|Musical|NewAge|Oper(?:a|etta)|Pop|R(?:ap|eggae|hythmAndBlues|ock)|S(?:ound(?:Effects|track)|pokenWord)|Unknown|WorldMusic))|D(?:ata(?:Form(?:Audio|DVDData|Mode(?:1Data|2(?:Data|Form(?:1Data|2Data))))|ProductionErr)|evice(?:AccessErr|Bu(?:rnStrategyNotAvailableErr|syErr)|C(?:antWrite(?:CDTextErr|I(?:SRCErr|ndexPointsErr)|SCMSErr)|ommunicationErr)|InvalidErr|Not(?:ReadyErr|SupportedErr)|PreGapLengthNotValidErr)|oubleLayerL0(?:AlreadySpecifiedErr|DataZoneBlocksParamErr))|F(?:i(?:le(?:Fork(?:Data|Resource|Size(?:Actual|Estimate))|LocationConflictErr|M(?:essage(?:ForkSize|P(?:ostBurn|r(?:eBurn|oduceData))|Release|VerificationStarting)|odifiedDuringBurnErr)|system(?:Mask(?:Default|HFSPlus|ISO9660|Joliet|UDF)|sNotSupportedErr))|rstErr)|lag(?:NoMoreData|SubchannelDataRequested)|unctionNotSupportedErr)|In(?:ternalErr|validIndexPointsErr)|LinkType(?:FinderAlias|HardLink|SymbolicLink)|Media(?:BusyErr|InvalidErr|Not(?:BlankErr|ErasableErr|PresentErr|SupportedErr|WritableErr))|S(?:essionFormat(?:Audio|CD(?:I|XA)|DVDData|Mode1Data)|peedTestAlreadyRunningErr)|T(?:ooMany(?:NameConflictsErr|TracksForDVDErr)|rack(?:M(?:essage(?:EstimateLength|P(?:ostBurn|r(?:eBurn|oduce(?:Data|PreGap)))|Verif(?:ication(?:Done|Starting)|y(?:Data|PreGap)))|ode(?:1Data|2(?:Data|Form(?:1Data|2Data))|Audio|DVDData))|ReusedErr))|UserCanceledErr|VerificationFailedErr)|Sp(?:Con(?:firmSwitchWarning|text(?:AlreadyReservedErr|Not(?:FoundErr|ReservedErr)))|FrameRateNotReadyErr|In(?:ternalErr|valid(?:AttributesErr|ContextErr))|NotInitializedErr|S(?:tereoContextErr|ystemSWTooOldErr))|TP(?:AbortJobErr|HoldJobErr|StopQueueErr|T(?:hirdPartySupported|ryAgainErr))|ata(?:A(?:ccessKCEvent(?:Mask)?|lignmentException)|Br(?:eakpointException|owser(?:A(?:lwaysExtendSelection|ttribute(?:AutoHideScrollBars|ColumnViewResizeWindow|ListView(?:AlternatingRowColors|DrawColumnDividers)|None|ReserveGrowBoxSpace))|C(?:heckboxT(?:riState|ype)|lientPropertyFlags(?:Mask|Offset)|mdTogglesSelection|o(?:lumnView(?:PreviewProperty)?|nt(?:ainer(?:AliasIDProperty|Clos(?:ed|ing)|Is(?:ClosableProperty|Open(?:ableProperty)?|SortableProperty)|Opened|Sort(?:ed|ing))|entHit))|ustomType)|D(?:ateTime(?:DateOnly|Relative|SecondsToo|T(?:imeOnly|ype))|efaultPropertyFlags|oNotTruncateText|ragSelect)|Edit(?:Msg(?:C(?:lear|opy|ut)|Paste|Redo|SelectAll|Undo)|St(?:arted|opped))|I(?:con(?:AndTextType|Type)|tem(?:A(?:dded|nyState)|D(?:eselected|oubleClicked)|Is(?:ActiveProperty|ContainerProperty|DragTarget|EditableProperty|Select(?:ableProperty|ed))|No(?:Property|State)|ParentContainerProperty|Removed|Sel(?:ected|fIdentityProperty)|s(?:A(?:dd|ssign)|Remove|Toggle)))|L(?:atestC(?:allbacks|ustomCallbacks)|istView(?:AppendColumn|DefaultColumnFlags|LatestHeaderDesc|MovableColumn|NoGapForIconInHeaderButton|S(?:electionColumn|ortableColumn)|TypeSelectColumn)?)|Metric(?:CellContentInset|Disclosure(?:Column(?:EdgeInset|PerDepthGap)|TriangleAndContentGap)|IconAndTextGap|Last)|N(?:everEmptySelectionSet|o(?:DisjointSelection|Item|View|thingHit))|Order(?:Decreasing|Increasing|Undefined)|P(?:opupMenu(?:Buttonless|Type)|ro(?:gressBarType|perty(?:C(?:heckboxPart|ontentPart)|DisclosurePart|EnclosingPart|Flags(?:Mask|Offset)|I(?:conPart|s(?:Editable|Mutable))|ModificationFlags|ProgressBarPart|RelevanceRankPart|SliderPart|TextPart)))|Re(?:l(?:ativeDateTime|evanceRankType)|setSelection|veal(?:AndCenterInView|Only|WithoutSelecting))|S(?:elect(?:OnlyOne|ion(?:Anchor(?:Down|Left|Right|Up)|SetChanged))|lider(?:DownwardThumb|PlainThumb|Type|UpwardThumb)|topTracking)|T(?:a(?:bleView(?:FillHilite|LastColumn|MinimalHilite|SelectionColumn)|rgetChanged)|extType|runcateText(?:At(?:End|Start)|Middle))|U(?:niversalPropertyFlags(?:Mask)?|ser(?:StateChanged|ToggledContainer))|ViewSpecific(?:Flags(?:Mask|Offset)|PropertyFlags))))|e(?:c(?:o(?:mposeDiacriticsSelector|rativeBordersSelector)|ryptKCItemAttr)|epestColorScreen|fault(?:C(?:JKRomanSelector|MMSignature|hangedKCEvent(?:Mask)?|olorPicker(?:Height|Width))|LowerCaseSelector|UpperCaseSelector)|l(?:ayParam_(?:DelayTime|Feedback|LopassCutoff|WetDryMix)|ete(?:AliasIcon|CharCode|KCEvent(?:Mask)?))|s(?:criptionKCItemAttr|ign(?:ComplexityType|Level(?:1Selector|2Selector|3Selector|4Selector|5Selector))|ktop(?:FolderType|Icon(?:Resource)?|P(?:icturesFolderType|rinterAliasType)))|v(?:eloper(?:ApplicationsFolderType|DocsFolderType|FolderType|HelpFolderType)|ice(?:InitiatedWake|ToPCS)))|i(?:a(?:criticsType|gonalFractionsSelector|l(?:ectBundleResType|og(?:F(?:lags(?:HandleMovableModal|Use(?:Co(?:mpositing|ntrolHierarchy)|Theme(?:Background|Controls)))|ont(?:Add(?:FontSizeMask|ToMetaFontMask)|NoFontStyle|Use(?:AllMask|BackColorMask|F(?:aceMask|o(?:nt(?:Mask|NameMask)|reColorMask))|JustMask|ModeMask|SizeMask|ThemeFontIDMask)))|WindowKind))|mond(?:AnnotationSelector|CharCode|Unicode))|ctionar(?:iesFolderType|yFileType)|giHub(?:Blank(?:CD|DVD)|EventClass|MusicCD|PictureCD|VideoDVD)|ngbatsSelector|phthongLigaturesO(?:ffSelector|nSelector)|rectoryServices(?:FolderType|PlugInsFolderType)|s(?:p(?:atched(?:ParameterPhase|SelectorSize(?:Phase|Width))|lay(?:ExtensionsFolderType|Mode(?:A(?:cceleratorBackedFlag|lwaysShowFlag)|BuiltInFlag|DefaultFlag|InterlacedFlag|N(?:ativeFlag|everShowFlag|ot(?:GraphicsQualityFlag|PresetFlag|ResizeFlag))|RequiresPanFlag|S(?:afe(?:Flag|tyFlags)|imulscanFlag|tretchedFlag)|TelevisionFlag|Valid(?:F(?:lag|or(?:AirPlayFlag|HiResFlag|MirroringFlag))|ateAgainstDisplay))|ProductIDGeneric|SubPixel(?:Configuration(?:Delta|Quad|Stripe(?:Offset)?|Undefined)|Layout(?:BGR|QuadGB(?:L|R)|RGB|Undefined)|Shape(?:Elliptical|Oval|R(?:ectangular|ound)|Square|Undefined))|TextSelector|VendorIDUnknown))|tortionParam_(?:CubicTerm|De(?:c(?:ay|imation(?:Mix)?)|lay(?:Mix)?)|FinalMix|LinearTerm|PolynomialMix|R(?:ingMod(?:Balance|Freq(?:1|2)|Mix)|ounding)|S(?:oftClipGain|quaredTerm)))|therAlgorithm_(?:NoiseShaping|TPDF))|o(?:FolderActionEvent|NotActivateAnd(?:HandleClick|IgnoreClick)|cument(?:Window(?:Class|VariantCode)|ationFolderType|sFolder(?:Icon|Type))|main(?:LibraryFolderType|TopLevelFolderType)|nt(?:CreateFolder|FindAppBySignature|PassSelector)|wn(?:ArrowCharCode|loadsFolderType)|ze(?:Demand|Request|ToFullWakeUp|WakeUp))|r(?:a(?:g(?:Action(?:Al(?:ias|l)|Copy|Delete|Generic|Move|Nothing|Private)|Behavior(?:None|ZoomBackAnimation)|D(?:ark(?:Translucency|erTranslucency)|oNotScaleImage)|FlavorType(?:HFS|PromiseHFS)|HasLeftSenderWindow|InsideSender(?:Application|Window)|OpaqueTranslucency|P(?:romisedFlavor(?:FindFile)?|seudo(?:CreatorVolumeOrDirectory|FileType(?:Directory|Volume)))|Region(?:AndImage|Begin|Draw|End|Hide|Idle)|Standard(?:DropLocation(?:Trash|Unknown)|Translucency)|Tracking(?:Enter(?:Control|Handler|Window)|In(?:Control|Window)|Leave(?:Control|Handler|Window)))|w(?:Control(?:EntireControl|IndicatorOnly)|erWindowClass))|op(?:BoxFolderType|Folder(?:AliasType|Icon(?:Resource)?)|IconVariant))|uration(?:Forever|Immediate|Mi(?:crosecond|llisecond))|ynamic(?:RangeControlMode_(?:Heavy|Light|None)|sProcessorParam_(?:AttackTime|CompressionAmount|Expansion(?:Ratio|Threshold)|HeadRoom|InputAmplitude|MasterGain|OutputAmplitude|ReleaseTime|Threshold)))|E(?:A(?:CCESErr|DDR(?:INUSEErr|NOTAVAILErr)|GAINErr|LREADYErr)|B(?:AD(?:FErr|MSGErr)|USYErr)|C(?:ANCELErr|ONN(?:ABORTEDErr|RE(?:FUSEDErr|SETErr)))|DE(?:ADLKErr|STADDRREQErr)|EXISTErr|FAULTErr|HOST(?:DOWNErr|UNREACHErr)|I(?:N(?:PROGRESSErr|TRErr|VALErr)|OErr|SCONNErr)|M(?:SGSIZEErr|ailKCItemAttr)|N(?:ET(?:DOWNErr|RESETErr|UNREACHErr)|O(?:BUFSErr|D(?:ATAErr|EVErr)|ENTErr|M(?:EMErr|SGErr)|PROTOOPTErr|RSRCErr|S(?:RErr|TRErr)|T(?:CONNErr|SOCKErr|TYErr))|XIOErr)|OPNOTSUPPErr|P(?:ERMErr|IPEErr|ROTO(?:Err|NOSUPPORTErr|TYPEErr))|RANGEErr|S(?:HUTDOWNErr|OCKTNOSUPPORTErr|RCHErr)|T(?:IME(?:DOUTErr|Err)|OOMANYREFSErr)|UC_(?:CN_(?:BasicVariant|DOSVariant)|KR_(?:BasicVariant|DOSVariant))|WOULDBLOCKErr|dit(?:TextDialogItem|orsFolderType)|jectMediaIcon|n(?:crypt(?:KCItemAttr|Password)|d(?:CharCode|DateKCItemAttr|Of(?:Sentence|Word))|gravedTextSelector|ter(?:CharCode|Idle|Run|Standby))|scapeCharCode|ve(?:nt(?:A(?:ccessible(?:Get(?:All(?:A(?:ctionNames|ttributeNames)|ParameterizedAttributeNames)|ChildAtPoint|FocusedChild|NamedA(?:ctionDescription|ttribute))|IsNamedAttributeSettable|PerformNamedAction|SetNamedAttribute)|pp(?:A(?:ctiv(?:ated|eWindowChanged)|vailableWindowBoundsChanged)|Deactivated|F(?:ocus(?:Drawer|MenuBar|Next(?:DocumentWindow|FloatingWindow)|Toolbar)|rontSwitched)|GetDockTileMenu|Hidden|IsEventInInstantMouser|Launch(?:Notification|ed)|Quit|S(?:hown|ystemUIModeChanged)|Terminated|UpdateDockTile|earanceScrollBarVariantChanged|leEvent)|ttribute(?:Monitored|None|UserEvent))|C(?:l(?:ass(?:A(?:ccessibility|pp(?:earance|l(?:eEvent|ication)))|C(?:lockView|o(?:mmand|ntrol))|D(?:ataBrowser|elegate)|EPPC|Font|Gesture|HI(?:ComboBox|Object)|Ink|Keyboard|M(?:enu|ouse)|S(?:crollable|e(?:archField|rvice)|ystem)|T(?:SMDocumentAccess|ablet|ext(?:Field|Input)|oolbar(?:Item(?:View)?)?)|Volume|Window)|ockDateOrTimeChanged)|o(?:m(?:boBoxListItemSelected|mand(?:Process|UpdateStatus))|ntrol(?:A(?:ctivate|ddedSubControl|pplyTextColor)|BoundsChanged|C(?:lick|ontextualMenuClick)|D(?:eactivate|ispose|ra(?:g(?:Enter|Leave|Receive|Within)|w))|EnabledStateChanged|FocusPartChanged|G(?:et(?:A(?:ctionProcPart|utoToggleValue)|ClickActivation|Data|F(?:ocusPart|rameMetrics)|IndicatorDragConstraint|NextFocusCandidate|OptimalBounds|Part(?:Bounds|Region)|S(?:crollToHereStartPoint|izeConstraints|ubviewForMouseEvent))|hostingFinished)|Hi(?:liteChanged|t(?:Test)?)|In(?:dicatorMoved|itialize|terceptSubviewClick|validateForSizeChange)|LayoutInfoChanged|O(?:ptimalBoundsChanged|wningWindowChanged)|RemovingSubControl|S(?:et(?:Cursor|Data|FocusPart)|imulateHit)|T(?:itleChanged|rack(?:ingAreaE(?:ntered|xited))?)|V(?:alueFieldChanged|isibilityChanged))))|D(?:ataBrowserDrawCustomItem|elegate(?:Get(?:GroupClasses|TargetClasses)|I(?:nstalled|sGroup)|Removed))|Font(?:PanelClosed|Selection)|Ge(?:sture(?:Ended|Magnify|Rotate|S(?:tarted|wipe))|tSelectedText)|H(?:IObject(?:C(?:onstruct|reatedFromArchive)|Destruct|Encode|GetInitParameters|I(?:nitialize|sEqual)|PrintDebugInfo)|ighLevelEvent|otKey(?:Exclusive|NoOptions|Pressed|Released))|Ink(?:Gesture|Point|Text)|KeyModifier(?:Fn(?:Bit|Mask)|NumLock(?:Bit|Mask))|L(?:eaveInQueue|oopIdleTimer(?:Idling|St(?:arted|opped)))|M(?:enu(?:B(?:ar(?:Hidden|Shown)|e(?:comeScrollable|ginTracking))|C(?:alculateSize|easeToBeScrollable|hangeTrackingMode|losed|reateFrameView)|D(?:ispose|rawItem(?:Content)?)|En(?:ableItems|dTracking)|GetFrameBounds|M(?:atchKey|easureItem(?:Height|Width))|Opening|Populate|TargetItem)|ouse(?:Button(?:Primary|Secondary|Tertiary)|D(?:own|ragged)|E(?:ntered|xited)|Moved|Scroll|Up|Wheel(?:Axis(?:X|Y)|Moved)))|OffsetToPos|P(?:aram(?:A(?:EEvent(?:Class|ID)|TSUFont(?:ID|Size)|ccessib(?:ilityEventQueued|le(?:A(?:ction(?:Description|Name(?:s)?)|ttribute(?:Name(?:s)?|Parameter|Settable|Value))|Child|Object))|fterDelegates|ppleEvent(?:Reply)?|ttributes|vailableBounds)|B(?:eforeDelegates|ounds)|C(?:G(?:ContextRef|ImageRef)|TFontDescriptor|andidateText|lick(?:Activation|Count)|o(?:mboBoxListSelectedItemIndex|ntrol(?:Action|C(?:lickActivationResult|urrent(?:OwningWindow|Part))|D(?:ata(?:Buffer(?:Size)?|Tag)|raw(?:Depth|Engraved|InColor))|F(?:eatures|ocusEverything|rameMetrics)|Hit|I(?:n(?:dicator(?:DragConstraint|Offset|Region)|valRgn)|sGhosting)|Message|O(?:ptimalB(?:aselineOffset|ounds)|riginalOwningWindow)|P(?:ar(?:am|t(?:AutoRepeats|Bounds)?)|re(?:fersShape|viousPart))|Re(?:f|gion|sult)|Sub(?:Control|view)|Value|WouldAcceptDrop))|urrent(?:Bounds|Dock(?:Device|Rect)|MenuTrackingMode|Window))|D(?:ataBrowser(?:Item(?:ID|State)|PropertyID)|e(?:codingForEditor|legate(?:Group(?:Classes|Parameters)|Target(?:Classes)?)|vice(?:Color|Depth))|i(?:ctionary|mensions|rect(?:Object|ionInverted)|splay(?:ChangeFlags|Device))|ragRef)|E(?:nable(?:MenuForKeyEvent|d)|ventRef)|F(?:MFont(?:Family|S(?:ize|tyle))|ontColor)|G(?:Device|rafPort)|HI(?:Archive|Command|ObjectInstance|ViewTrackingArea)|I(?:mageSize|n(?:dex|it(?:Collection|Parameters)|k(?:Gesture(?:Bounds|Hotspot|Kind)|KeyboardShortcut|TextRef))|sInInstantMouser)|Key(?:Code|M(?:acCharCodes|odifiers)|Unicodes|boardType)|L(?:aunch(?:Err|RefCon)|ineSize)|M(?:a(?:gnificationAmount|ximumSize)|enu(?:Co(?:mmand(?:KeyBounds)?|ntext(?:Height)?)|D(?:i(?:rection|smissed)|rawState)|EventOptions|F(?:irstOpen|rameView)|I(?:conBounds|sPopup|tem(?:Bounds|Height|Index|Type|Width))|MarkBounds|PopupItem|Ref|T(?:extB(?:aseline|ounds)|ype)|Virtual(?:Bottom|Top))|inimumSize|o(?:dal(?:ClickResult|Window)|use(?:Button|Chord|Delta|Location|TrackingRef|Wheel(?:Axis|Delta|Smooth(?:HorizontalDelta|VerticalDelta))))|utableArray)|Ne(?:w(?:MenuTrackingMode|ScrollBarVariant)|xtControl)|Origin(?:alBounds)?|P(?:a(?:rentMenu(?:Item)?|steboardRef)|ost(?:Options|Target)|r(?:evious(?:Bounds|Dock(?:Device|Rect)|Window)|ocessID))|R(?:e(?:ason|placementText|sult)|gnHandle|otationAmount)|S(?:crapRef|ervice(?:CopyTypes|MessageName|PasteTypes|UserData)|hape|tartControl|wipeDirection|ystemUI(?:Mode|Options))|T(?:SM(?:DocAccess(?:BaselineDelta|CharacterCount|EffectiveRange|L(?:ineBounds|ockCount)|Re(?:ply(?:ATS(?:Font|UGlyphSelector)|C(?:T(?:FontRef|GlyphInfoRef)|haracter(?:Range|sPtr))|FontSize)|questedCharacterAttributes)|Send(?:C(?:haracter(?:Index|Range|sPtr)|omponentInstance)|RefCon))|Send(?:ComponentInstance|RefCon))|ablet(?:EventType|P(?:oint(?:Rec|erRec)|roximityRec))|ext(?:Input(?:GlyphInfoArray|Reply(?:A(?:TSFont|ttributedString)|CTFontRef|F(?:MFont|ont)|GlyphInfoArray|L(?:eadingEdge|ine(?:Ascent|Height))|MacEncoding|Point(?:Size)?|RegionClass|S(?:LRec|howHide)|Text(?:Angle|Offset)?)|Send(?:AttributedString|C(?:lauseRng|omponentInstance|urrentPoint)|DraggingMode|FixLen|GlyphInfoArray|HiliteRng|KeyboardEvent|LeadingEdge|MouseEvent|PinRng|Re(?:fCon|placeRange)|S(?:LRec|howHide)|Text(?:Offset|Service(?:Encoding|MacEncoding))?|UpdateRng))|Length|Selection)|oolbar(?:Display(?:Mode|Size)|Item(?:ConfigData|Identifier)?)?|ransactionID)|U(?:nconfirmed(?:Range|Text)|serData)|View(?:AttributesDictionary|Size)|Window(?:ContentBounds|D(?:efPart|ragHiliteFlag)|Features|GrowRect|Mo(?:d(?:ality|ifiedFlag)|useLocation)|P(?:artCode|roxy(?:GWorldPtr|ImageRgn|OutlineRgn))|Re(?:f|gionCode)|StateChangedFlags|T(?:itle(?:FullWidth|TextWidth)|ransition(?:Action|Effect))))|osToOffset|r(?:iority(?:High|Low|Standard)|ocessCommand))|QueueOptionsNone|R(?:awKey(?:Down|ModifiersChanged|Repeat|Up)|emoveFromQueue)|S(?:crollable(?:GetInfo|InfoChanged|ScrollTo)|e(?:archField(?:CancelClicked|SearchClicked)|rvice(?:Copy|GetTypes|P(?:aste|erform)))|howHideBottomWindow|ystem(?:Display(?:Reconfigured|sA(?:sleep|wake))|TimeDateChanged|UserSession(?:Activated|Deactivated)))|T(?:SMDocumentAccess(?:Get(?:Characters(?:Ptr(?:ForLargestBuffer)?)?|F(?:irstRectForRange|ont)|GlyphInfo|Length|SelectedRange)|LockDocument|UnlockDocument)|a(?:bletP(?:oint(?:er)?|roximity)|rget(?:DontPropagate|SendToAllHandlers))|ext(?:Accepted|DidChange|Input(?:FilterText|GetSelectedText|IsMouseEventInInlineInputArea|OffsetToPos|PosToOffset|ShowHideBottomWindow|U(?:nicode(?:ForKeyEvent|Text)|pdateActiveInputArea))|ShouldChangeInRange)|oolbar(?:BeginMultiChange|CreateItem(?:FromDrag|WithIdentifier)|Display(?:ModeChanged|SizeChanged)|EndMultiChange|Get(?:AllowedIdentifiers|DefaultIdentifiers|SelectableIdentifiers)|Item(?:A(?:cceptDrop|dded)|C(?:ommandIDChanged|reateCustomView)|EnabledStateChanged|GetPersistentData|HelpTextChanged|ImageChanged|LabelChanged|PerformAction|Removed|SelectedStateChanged|View(?:ConfigFor(?:Mode|Size)|E(?:nterConfigMode|xitConfigMode))|WouldAcceptDrop)|LayoutChanged))|U(?:nicodeForKeyEvent|pdateActiveInputArea)|Volume(?:Mounted|Unmounted)|Window(?:A(?:ctivated|ttributesChanged)|BoundsChang(?:ed|ing)|C(?:lose(?:All|d)?|o(?:l(?:laps(?:e(?:All|d)?|ing)|orSpaceChanged)|n(?:strain|textualMenuSelect))|ursorChange)|D(?:e(?:activated|f(?:D(?:ispose|ra(?:gHilite|w(?:Frame|GrowBox|Part)))|Get(?:GrowImageRegion|Region)|HitTest|Init|M(?:easureTitle|odified)|S(?:etupProxyDragImage|tateChanged)))|ispose|ra(?:g(?:Completed|Hilite|Started)|w(?:Frame|GrowBox|Part|er(?:Clos(?:ed|ing)|Open(?:ed|ing)))))|Expand(?:All|ed|ing)?|F(?:ocus(?:Acquired|Content|Drawer|Lost|Re(?:linquish|stored)|Toolbar)|ullScreenE(?:nter(?:Completed|Started)|xit(?:Completed|Started)))|Get(?:Click(?:Activation|Modality)|DockTileMenu|FullScreenContentSize|GrowImageRegion|IdealS(?:ize|tandardState)|M(?:aximumSize|inimumSize)|Region)|H(?:andle(?:Activate|Deactivate)|i(?:d(?:den|ing)|tTest))|Init|M(?:easureTitle|odified)|P(?:a(?:int|thSelect)|roxy(?:BeginDrag|EndDrag))|Res(?:ize(?:Completed|Started)|tore(?:FromDock|dAfterRelaunch))|S(?:etupProxyDragImage|h(?:eet(?:Clos(?:ed|ing)|Open(?:ed|ing))|ow(?:ing|n))|tateChanged)|T(?:itleChanged|oolbarSwitchMode|ransition(?:Completed|Started))|UpdateDockTile|Zoom(?:All|ed)?))|ryKCEventMask)|x(?:actMatchThread|cludedMemoryException|itIdle|p(?:ertCharactersSelector|o(?:nentsO(?:ffSelector|nSelector)|rtedFolderAliasType))|t(?:AudioFile(?:Error_(?:AsyncWrite(?:BufferOverflow|TooLarge)|Invalid(?:ChannelMap|DataFormat|OperationOrder|Property(?:Size)?|Seek)|MaxPacketSizeUnknown|NonPCMClientFormat)|Property_(?:Audio(?:Converter|File)|C(?:lient(?:ChannelLayout|DataFormat|MaxPacketSize)|o(?:decManufacturer|nverterConfig))|File(?:ChannelLayout|DataFormat|LengthFrames|MaxPacketSize)|IOBuffer(?:SizeBytes)?|PacketTable))|en(?:dedFlag(?:Has(?:CustomBadge|RoutingInfo)|ObjectIsBusy|sAreInvalid)|sion(?:DisabledFolderType|Folder(?:AliasType|Type)|s(?:DisabledFolderIcon|FolderIcon(?:Resource)?))))))|F(?:A(?:AttachCommand|EditCommand|FileParam|IndexParam|RemoveCommand|S(?:erverApp|uiteCode))|BC(?:a(?:ccess(?:Canceled|orStoreFailed)|ddDocFailed|llocFailed|nalysisNotAvailable)|bad(?:IndexFile(?:Version)?|Param|SearchSession)|com(?:mitFailed|pactionFailed)|deletionFailed|f(?:ileNotIndexed|lushFailed)|i(?:llegalSessionChange|ndex(?:CreationFailed|DiskIOFailed|FileDestroyed|Not(?:Available|Found)|ing(?:Canceled|Failed)))|m(?:ergingFailed|oveFailed)|no(?:IndexesFound|S(?:earchSession|uchHit))|s(?:earchFailed|omeFilesNotIndexed|ummarizationCanceled)|tokenizationFailed|v(?:TwinExceptionErr|alidationFailed))|M(?:CurrentFilterFormat|Font(?:C(?:allbackFilterSelector|ontainer(?:AccessErr|FilterSelector))|DirectoryFilterSelector|F(?:amilyCallbackFilterSelector|ileRefFilterSelector)|T(?:ableAccessErr|echnologyFilterSelector))|GenerationFilterSelector|I(?:nvalidFont(?:Err|FamilyErr)|teration(?:Completed|ScopeModifiedErr))|PostScriptFontTechnology|TrueTypeFontTechnology)|N(?:DirectoryModifiedMessage|No(?:ImplicitAllSubscription|tifyInBackground)|S(?:Bad(?:FlattenedSizeErr|ProfileVersionErr|ReferenceVersionErr)|DuplicateReferenceErr|In(?:sufficientDataErr|valid(?:ProfileErr|ReferenceErr))|MismatchErr|NameNotFoundErr))|PUNotNeeded|S(?:Al(?:iasInfo(?:F(?:SInfo|inderInfo)|I(?:Ds|sDirectory)|None|TargetCreateDate|Volume(?:CreateDate|Flags))|lo(?:c(?:AllOrNothingMask|ContiguousMask|DefaultFlags|NoRoundUpMask|ReservedMask)|wConcurrentAsyncIO(?:Bit|Mask)))|CatInfo(?:A(?:ccessDate|llDates|ttrMod)|BackupDate|C(?:ontentMod|reateDate)|DataSizes|F(?:SFileSecurityRef|inder(?:Info|XInfo))|GettableInfo|No(?:de(?:Flags|ID)|ne)|P(?:arentDirID|ermissions)|R(?:eserved|srcSizes)|S(?:et(?:Ownership|tableInfo)|haringFlags)|TextEncoding|User(?:Access|Privs)|V(?:alence|olume))|E(?:jectVolumeForceEject|ventStream(?:CreateFlag(?:FileEvents|IgnoreSelf|No(?:Defer|ne)|UseCFTypes|WatchRoot)|Event(?:Flag(?:EventIdsWrapped|HistoryDone|Item(?:C(?:hangeOwner|reated)|FinderInfoMod|I(?:nodeMetaMod|s(?:Dir|File|Symlink))|Modified|Re(?:moved|named)|XattrMod)|KernelDropped|M(?:ount|ustScanSubDirs)|None|RootChanged|U(?:nmount|serDropped))|IdSinceNow)))|F(?:ileOperation(?:D(?:efaultOptions|oNotMoveAcrossVolumes)|Overwrite|Skip(?:Preflight|SourcePermissionErrors))|orceRead(?:Bit|Mask))|I(?:nvalidVolumeRefNum|terate(?:Delete|Flat|Reserved|Subtree))|KMountVersion|MountServer(?:M(?:arkDoNotDisplay|ount(?:OnMountDir|WithoutNotification))|SuppressConnectionUI)|N(?:ewLine(?:Bit|CharMask|Mask)|o(?:Cache(?:Bit|Mask)|de(?:CopyProtect(?:Bit|Mask)|DataOpen(?:Bit|Mask)|ForkOpen(?:Bit|Mask)|HardLink(?:Bit|Mask)|I(?:nShared(?:Bit|Mask)|s(?:Directory(?:Bit|Mask)|Mounted(?:Bit|Mask)|SharePoint(?:Bit|Mask)))|Locked(?:Bit|Mask)|ResOpen(?:Bit|Mask))))|OperationStage(?:Complete|Preflighting|Running|Undefined)|P(?:athMakeRefD(?:efaultOptions|oNotFollowLeafSymlink)|leaseCache(?:Bit|Mask))|R(?:dVerify(?:Bit|Mask)|eplaceObject(?:D(?:efaultOptions|oNotCheckObjectWriteAccess)|PreservePermissionInfo|Replace(?:Metadata|PermissionInfo)|SaveOriginalAsABackup))|UnmountVolumeForceUnmount|Vol(?:Flag(?:DefaultVolume(?:Bit|Mask)|FilesOpen(?:Bit|Mask)|HardwareLocked(?:Bit|Mask)|JournalingActive(?:Bit|Mask)|SoftwareLocked(?:Bit|Mask))|Info(?:B(?:ackupDate|locks)|C(?:heckedDate|reateDate)|D(?:ataClump|irCount|riveInfo)|F(?:SInfo|i(?:leCount|nderInfo)|lags)|GettableInfo|ModDate|N(?:ext(?:Alloc|ID)|one)|RsrcClump|S(?:ettableInfo|izes))))|TPServerIcon|avorite(?:ItemsIcon|sFolder(?:Icon|Type))|e(?:male|tchReference)|i(?:l(?:eSystemSupportFolderType|lScreen)|nd(?:ByContent(?:FolderType|IndexesFolderType|PluginsFolderType)|SupportFolderType|erIcon)|rst(?:FailKCStopOn|IOKitNotificationType|MagicBusyFiletype|PassKCStopOn)|tToScreen)|l(?:avorType(?:Clipping(?:Filename|Name)|DragToTrashOnly|FinderNoTrackingBehavior|UnicodeClipping(?:Filename|Name))|euronsSelector|o(?:ating(?:PointException|Window(?:Class|Definition))|ppyIconResource))|o(?:lder(?:Action(?:Code|sFolderType)|C(?:losedEvent|reated(?:AdminPrivs(?:Bit)?|Invisible(?:Bit)?|NameLocked(?:Bit)?))|I(?:n(?:LocalOrRemoteUserFolder|RemoteUserFolderIfAvailable(?:Bit)?|UserFolder(?:Bit)?)|tems(?:AddedEvent|RemovedEvent))|M(?:anager(?:FolderInMacOS9FolderIfMacOSXIsInstalled(?:Bit|Mask)|LastDomain|N(?:ewlyCreatedFolder(?:IsLocalizedBit|ShouldHaveDotLocalizedCreatedWithinMask)|otCreatedOnRemoteVolumes(?:Bit|Mask)))|ustStayOnSameVolume(?:Bit)?)|NeverMatchedInIdentifyFolder(?:Bit)?|OpenedEvent|TrackedByAlias(?:Bit)?|WindowMovedEvent)|nt(?:A(?:lbanianLanguage|mharic(?:Language|Script)|r(?:abic(?:Language|Script)|menian(?:Language|Script))|ssameseLanguage|ymaraLanguage|zerbaijan(?:ArLanguage|iLanguage))|B(?:asqueLanguage|engali(?:Language|Script)|u(?:lgarianLanguage|rmese(?:Language|Script))|yelorussianLanguage)|C(?:atalanLanguage|h(?:ewaLanguage|ineseScript)|o(?:llectionsFolderType|pyrightName)|roatianLanguage|ustom(?:16BitScript|8(?:16BitScript|BitScript)|Platform)|yrillicScript|zechLanguage)|D(?:anishLanguage|e(?:s(?:criptionName|igner(?:Name|URLName))|vanagariScript)|utchLanguage|zongkhaLanguage)|E(?:astEuropeanRomanScript|nglishLanguage|s(?:perantoLanguage|tonianLanguage)|thiopicScript|xtendedArabicScript)|F(?:a(?:eroeseLanguage|milyName|rsiLanguage)|innishLanguage|lemishLanguage|renchLanguage|ullName)|G(?:allaLanguage|e(?:ezScript|orgian(?:Language|Script)|rmanLanguage)|reek(?:Language|Script)|u(?:araniLanguage|jarati(?:Language|Script)|rmukhiScript))|H(?:ebrew(?:Language|Script)|indiLanguage|ungarianLanguage)|I(?:SO10646_1993Semantics|celandicLanguage|ndonesianLanguage|rishLanguage|talianLanguage)|Ja(?:panese(?:Language|Script)|vaneseRomLanguage)|K(?:a(?:nnada(?:Language|Script)|shmiriLanguage|zakhLanguage)|hmer(?:Language|Script)|irghizLanguage|orean(?:Language|Script)|urdishLanguage)|L(?:a(?:o(?:Language|tianScript)|ppishLanguage|stReservedName|t(?:inLanguage|vianLanguage))|ettishLanguage|i(?:cense(?:DescriptionName|InfoURLName)|thuanianLanguage))|M(?:a(?:c(?:CompatibleFullName|edonianLanguage|intoshPlatform)|l(?:a(?:gasyLanguage|y(?:ArabicLanguage|RomanLanguage|alam(?:Language|Script)))|teseLanguage)|nufacturerName|rathiLanguage)|icrosoft(?:Platform|S(?:tandardScript|ymbolScript)|UCS4Script)|o(?:ldavianLanguage|ngolian(?:CyrLanguage|Language|Script)))|N(?:epaliLanguage|o(?:Language(?:Code)?|Name(?:Code)?|Platform(?:Code)?|Script(?:Code)?|rwegianLanguage))|Or(?:iya(?:Language|Script)|omoLanguage)|P(?:ashtoLanguage|ersianLanguage|o(?:lishLanguage|rtugueseLanguage|st(?:ScriptCIDName|scriptName))|referred(?:FamilyName|SubfamilyName)|unjabiLanguage)|QuechuaLanguage|R(?:SymbolScript|eservedPlatform|oman(?:Script|ianLanguage)|u(?:andaLanguage|ndiLanguage|ssian(?:Language)?))|S(?:a(?:amiskLanguage|mpleTextName|nskritLanguage)|e(?:lection(?:ATSUIType|CoreTextType|QD(?:StyleVersionZero|Type))|rbianLanguage)|i(?:mp(?:ChineseLanguage|leChineseScript)|n(?:dhi(?:Language|Script)|halese(?:Language|Script)))|l(?:avicScript|ov(?:akLanguage|enianLanguage))|omaliLanguage|panishLanguage|tyleName|u(?:itcaseIcon|ndaneseRomLanguage)|w(?:ahiliLanguage|edishLanguage))|T(?:a(?:galogLanguage|jikiLanguage|mil(?:Language|Script)|tarLanguage)|elugu(?:Language|Script)|hai(?:Language|Script)|i(?:betan(?:Language|Script)|grinyaLanguage)|rad(?:ChineseLanguage|emarkName|itionalChineseScript)|urk(?:ishLanguage|menLanguage))|U(?:ighurLanguage|krainianLanguage|ni(?:code(?:DefaultSemantics|Platform|V(?:1_1Semantics|2_0(?:BMPOnlySemantics|FullCoverageSemantics)|4_0VariationSequenceSemantics)|_FullRepertoire)|nterpretedScript|queName)|rduLanguage|zbekLanguage)|V(?:e(?:ndorURLName|rsionName)|ietnamese(?:Language|Script))|WelshLanguage|YiddishLanguage|sFolder(?:Icon(?:Resource)?|Type))|r(?:kInfoFlags(?:FileLocked(?:Bit|Mask)|LargeFile(?:Bit|Mask)|Modified(?:Bit|Mask)|OwnClump(?:Bit|Mask)|Resource(?:Bit|Mask)|SharedWrite(?:Bit|Mask)|Write(?:Bit|Locked(?:Bit|Mask)|Mask))|m(?:FeedCharCode|InterrobangO(?:ffSelector|nSelector))|wardArrowIcon)|urByteCode)|ra(?:ctionsType|gment(?:IsPrepared|NeedsPreparing)|me(?:buffer(?:DisableAltivecAccess|Supports(?:CopybackCache|GammaCorrection|WritethruCache))|worksFolderType))|u(?:ll(?:TrashIcon(?:Resource)?|Width(?:CJKRomanSelector|IdeographsSelector|KanaSelector))|nctionKeyCharCode))|G(?:SSSelect(?:Ge(?:nericToRealID|t(?:DefaultScriptingComponent|ScriptingComponent(?:FromStored)?))|OutOfRange|RealToGenericID|SetDefaultScriptingComponent)|UARD_EXC_(?:DE(?:ALLOC_GAP|STROY)|I(?:MMOVABLE|N(?:CORRECT_GUARD|VALID_(?:ARGUMENT|NAME|RIGHT|VALUE)))|KERN_(?:FAILURE|NO_SPACE|RESOURCE)|MOD_REFS|R(?:CV_(?:GUARDED_DESC|INVALID_NAME)|IGHT_EXISTS)|S(?:E(?:ND_INVALID_(?:R(?:EPLY|IGHT)|VOUCHER)|T_CONTEXT)|TRICT_REPLY)|UNGUARDED)|e(?:n(?:EditorsFolderType|er(?:alFailureErr|ic(?:ApplicationIcon(?:Resource)?|C(?:DROMIcon(?:Resource)?|o(?:mponent(?:Icon|Version)|ntrol(?:PanelIcon|StripModuleIcon)))|D(?:eskAccessoryIcon(?:Resource)?|ocumentIcon(?:Resource)?)|E(?:ditionFileIcon(?:Resource)?|xtensionIcon(?:Resource)?)|F(?:ileServerIcon(?:Resource)?|loppyIcon|o(?:lderIcon(?:Resource)?|nt(?:Icon|ScalerIcon)))|HardDiskIcon(?:Resource)?|IDiskIcon|KCItemAttr|MoverObjectIcon(?:Resource)?|NetworkIcon|P(?:CCardIcon|asswordKCItemClass|referencesIcon(?:Resource)?)|QueryDocumentIcon(?:Resource)?|R(?:AMDiskIcon(?:Resource)?|emovableMediaIcon)|S(?:haredLibaryIcon|tationeryIcon(?:Resource)?|uitcaseIcon(?:Resource)?)|URLIcon|W(?:ORMIcon|indowIcon))))|t(?:AE(?:TE|UT)|DebugOption|Power(?:Info|Level)|SelectedText|WakeOnNetInfo))|lyphCollection(?:Adobe(?:CNS1|GB1|Japan(?:1|2)|Korea1)|GID|Unspecified)|r(?:aphicEQParam_NumberOfBands|idIcon|oup(?:I(?:D2Name|con)|Name2ID))|uestUserIcon)|H(?:ALOutputParam_Volume|FS(?:A(?:llocationFileID|ttribute(?:DataFileID|sFileID)|utoCandidate(?:Bit|Mask))|B(?:adBlockFileID|inaryCompare|o(?:gusExtentFileID|otVolumeInconsistent(?:Bit|Mask)))|C(?:a(?:seFolding|talog(?:FileID|KeyM(?:aximumLength|inimumLength)|NodeIDsReused(?:Bit|Mask)))|ontentProtection(?:Bit|Mask))|DoNotFastDevPin(?:Bit|Mask)|Extent(?:Density|KeyMaximumLength|sFileID)|F(?:astDev(?:Candidate(?:Bit|Mask)|Pinned(?:Bit|Mask))|i(?:le(?:Locked(?:Bit|Mask)|Record|ThreadRecord)|rstUserCatalogNodeID)|older(?:Record|ThreadRecord))|Has(?:Attributes(?:Bit|Mask)|ChildLink(?:Bit|Mask)|DateAdded(?:Bit|Mask)|FolderCount(?:Bit|Mask)|LinkChain(?:Bit|Mask)|Security(?:Bit|Mask))|JMountVersion|M(?:DBAttributesMask|ax(?:AttrNameLen|FileNameChars|VolumeNameChars))|Plus(?:Attr(?:Extents|ForkData|InlineData|MinNodeSize)|C(?:atalog(?:KeyM(?:aximumLength|inimumLength)|MinNodeSize)|reator)|Extent(?:Density|KeyMaximumLength|MinNodeSize)|F(?:ile(?:Record|ThreadRecord)|older(?:Record|ThreadRecord))|M(?:axFileNameChars|ountVersion)|SigWord|Version)|R(?:epairCatalogFileID|oot(?:FolderID|ParentID))|S(?:igWord|tartupFileID)|ThreadExists(?:Bit|Mask)|UnusedNode(?:Fix(?:Bit|Mask)|sFixDate)|Volume(?:HardwareLock(?:Bit|Mask)|Inconsistent(?:Bit|Mask)|Journaled(?:Bit|Mask)|NoCacheRequired(?:Bit|Mask)|S(?:oftwareLock(?:Bit|Mask)|paredBlocks(?:Bit|Mask))|Unmounted(?:Bit|Mask))|X(?:SigWord|Version))|I(?:ArchiveDecod(?:eSuperclassForUnregisteredObjects|ingForEditor)|C(?:lassOptionSingleton|o(?:m(?:boBox(?:Auto(?:CompletionAttribute|DisclosureAttribute|S(?:izeListAttribute|ortAttribute))|DisclosurePart|EditTextPart|List(?:Pixel(?:HeightTag|WidthTag)|Tag)|N(?:oAttributes|umVisibleItemsTag)|StandardAttributes)|mand(?:A(?:bout|ppHelp|rrangeInFront)|BringAllToFront|C(?:ancel|h(?:angeSpelling|eckSpelling(?:AsYouType)?)|l(?:ear|ose(?:All|File)?)|opy|u(?:stomizeToolbar|t)|ycleToolbarMode(?:Larger|Smaller))|From(?:Control|Menu|Window)|Hide(?:Others|Toolbar)?|IgnoreSpelling|LearnWord|M(?:aximize(?:All|Window)|inimize(?:All|Window))|New|O(?:K|pen|ther)|P(?:a(?:geSetup|ste)|r(?:eferences|int))|Quit(?:And(?:DiscardWindows|KeepWindows))?|R(?:e(?:do|vert)|otate(?:FloatingWindows(?:Backward|Forward)|Windows(?:Backward|Forward)))|S(?:ave(?:As)?|elect(?:All|Window)|how(?:All|CharacterPalette|HideFontPanel|SpellingPanel|Toolbar)|tartDictation)|Toggle(?:AllToolbars|FullScreen|Toolbar)|Undo|WindowList(?:Separator|Terminator)|ZoomWindow))|ordSpace(?:72DPIGlobal|ScreenPixel|View|Window)))|D(?:B(?:a(?:d(?:Log(?:PhysValuesErr|icalM(?:aximumErr|inimumErr))|ParameterErr)|seError)|ufferTooSmallErr)|DeviceNotReady|EndOfDescriptorErr|In(?:compatibleReportErr|v(?:alid(?:PreparsedDataErr|R(?:angePageErr|eport(?:LengthErr|TypeErr)))|erted(?:LogicalRangeErr|PhysicalRangeErr|UsageRangeErr)))|N(?:ot(?:EnoughMemoryErr|ValueArrayErr)|ull(?:PointerErr|StateErr))|Report(?:CountZeroErr|IDZeroErr|SizeZeroErr)|Success|U(?:nmatched(?:DesignatorRangeErr|StringRangeErr|UsageRangeErr)|sage(?:NotFoundErr|PageZeroErr))|V(?:alueOutOfRangeErr|ersionIncompatibleErr)|elegate(?:A(?:fter|ll)|Before))|HotKeyModeAll(?:Disabled(?:ExceptUniversalAccess)?|Enabled)|ImageView(?:AutoTransform(?:None|OnD(?:eactivate|isable))|ImageTag)|Layout(?:Bind(?:Bottom|Left|M(?:ax|in)|None|Right|Top)|InfoVersionZero|Position(?:Bottom|Center|Left|M(?:ax|in)|None|Right|Top)|ScaleAbsolute)|M(?:enu(?:AppendItem|CenterDirection|DismissedBy(?:A(?:ctivationChange|ppSwitch)|CancelMenuTracking|FocusChange|KeyEvent|Mouse(?:Down|Up)|Selection|Timeout|UserCancel)|LeftDirection|RightDirection)|odalClick(?:A(?:llowEvent|nnounce)|IsModal|RaiseWindow))|S(?:crollView(?:Options(?:AllowGrow|DisableSmoothScrolling|FillGrowArea|HorizScroll|VertScroll)|Page(?:Down|Left|Right|Up)|ScrollTo(?:Bottom|Left|Right|Top)|ValidOptions)|e(?:archField(?:Attributes(?:Cancel|SearchIcon)|NoAttributes)|gment(?:Behavior(?:Momentary|Radio|Sticky|Toggles)|NoAttributes|SendCmdToUserFocus|edViewKind))|hape(?:Enumerate(?:Init|Rect|Terminate)|ParseFrom(?:Bottom(?:Right)?|Left|Right|Top(?:Left)?)))|T(?:heme(?:F(?:ocusRing(?:Above|Below|Only)|rame(?:ListBox|TextField(?:Round(?:Mini|Small)?|Square)))|Gro(?:upBoxKind(?:Primary(?:Opaque)?|Secondary(?:Opaque)?)|wBox(?:KindNo(?:ne|rmal)|Size(?:Normal|Small)))|HeaderKind(?:List|Window)|Menu(?:DrawInfoVersion(?:One|Zero)|TitleDrawCondensed)|Orientation(?:Inverted|Normal)|S(?:egment(?:Adornment(?:Focus|LeadingSeparator|None|TrailingSeparator)|Kind(?:Inset|Normal|Textured)|Position(?:First|Last|Middle|Only)|Size(?:Mini|Normal|Small))|plitterAdornment(?:Metal|None))|T(?:ab(?:Adornment(?:Focus|LeadingSeparator|None|TrailingSeparator)|KindNormal|P(?:aneAdornmentNormal|osition(?:First|Last|Middle|Only))|Size(?:Mini|Normal|Small))|ext(?:BoxOption(?:DontClip|Engraved|None|StronglyVertical)|HorizontalFlush(?:Center|Default|Left|Right)|InfoVersion(?:One|Zero)|Truncation(?:Default|End|Middle|None)|VerticalFlush(?:Bottom|Center|Default|Top))))|oolbar(?:AutoSavesConfig|CommandPressAction|Display(?:Mode(?:Default|Icon(?:AndLabel|Only)|LabelOnly)|Size(?:Default|Normal|Small))|I(?:sConfigurable|tem(?:A(?:llowDuplicates|nchoredLeft)|CantBeRemoved|Disabled|IsSeparator|LabelDisabled|MutableAttrs|NoAttributes|Se(?:lected|ndCmdToUserFocus)|ValidAttrs))|NoAttributes|V(?:alidAttrs|iewDrawBackgroundTag))|ransform(?:Disabled|None|Selected))|View(?:A(?:llowsSubviews|ttribute(?:IsFieldEditor|SendCommandToUserFocus)|utoToggles)|C(?:lickableMetaPart|ontent(?:AlertIconType|CGImageRef|I(?:con(?:Ref|SuiteRef|TypeAndCreator)|mage(?:File|Resource))|MetaPart|N(?:SImage|one)|TextOnly))|D(?:isabledPart|oesNot(?:Draw|UseSpecialParts))|EntireView|F(?:eature(?:A(?:llowsSubviews|utoToggles)|DoesNot(?:Draw|UseSpecialParts)|GetsFocusOnClick|I(?:dlesWithTimer|gnoresClicks|nvertsUpDownValueMeaning|sOpaque)|Supports(?:Ghosting|LiveFeedback|RadioBehavior))|ocus(?:N(?:extPart|oPart)|OnAnyControl|PrevPart|Traditionally|WithoutWrapping))|GetsFocusOnClick|I(?:dlesWithTimer|gnoresClicks|n(?:activePart|dicatorPart|vertsUpDownValueMeaning)|sOpaque)|KindSignatureApple|NoPart|O(?:ffscreenImageUseWindowBackingResolution|paqueMetaPart)|S(?:endCommandToUserFocus|tructureMetaPart|upports(?:Ghosting|LiveFeedback|RadioBehavior))|ValidFeaturesForPanther|ZOrder(?:Above|Below))|Window(?:B(?:ackingLocation(?:Default|MainMemory|VideoMemory)|ehavior(?:Stationary|Transient)|it(?:A(?:syncDrag|uto(?:Calibration|ViewDragTracking))|C(?:anBeVisibleWithoutLogin|loseBox|o(?:llapseBox|mpositing))|DoesNot(?:Cycle|Hide)|F(?:rameworkScaled|ullScreen(?:Auxiliary|Primary))|Hi(?:deOn(?:FullScreen|Suspend)|ghResolutionCapable)|I(?:gnoreClicks|nWindowMenu)|LiveResize|No(?:Activates|Constrain|Shadow|T(?:exturedContentSeparator|itleBar)|Updates)|OpaqueForEvents|R(?:esizable|oundBottomBarCorners)|S(?:ideTitlebar|tandardHandler)|T(?:extured(?:SquareCorners)?|oolbarButton)|UnifiedTitleAndToolbar|ZoomBox))|CanJoinAllSpaces|D(?:epth(?:32Bit|64Bit|Float|Invalid)|ragPart)|ExposeHidden|IgnoreObscuringWindows|M(?:enu(?:Creator|WindowTag)|oveToActiveSpace)|S(?:caleMode(?:FrameworkScaled|Magnified|Unscaled)|haring(?:None|Read(?:Only|Write)))|Title(?:BarPart|ProxyIconPart)|VisibleInAllSpaces))|M(?:AbsoluteCenterAligned|Bottom(?:LeftCorner|RightCorner|Side)|C(?:FString(?:Content|LocalizedContent)|ontent(?:NotProvided(?:DontPropagate)?|Provided))|D(?:efaultSide|isposeContent)|H(?:elpMenuID|ideTag(?:Fade|Immediately))|I(?:llegalContentForMinimumState|nside(?:Bottom(?:CenterAligned|LeftCorner|RightCorner)|LeftCenterAligned|RightCenterAligned|Top(?:CenterAligned|LeftCorner|RightCorner)))|Left(?:BottomCorner|Side|TopCorner)|M(?:aximumContentIndex|inimumContentIndex)|NoContent|Outside(?:Bottom(?:CenterAligned|LeftAligned|RightAligned|ScriptAligned)|Left(?:BottomAligned|CenterAligned|TopAligned)|Right(?:BottomAligned|CenterAligned|TopAligned)|Top(?:CenterAligned|LeftAligned|RightAligned|ScriptAligned))|PascalStrContent|Right(?:BottomCorner|Side|TopCorner)|S(?:tr(?:ResContent|ingResContent)|upplyContent)|T(?:EHandleContent|extResContent|op(?:LeftCorner|RightCorner|Side)))|TTPServerIcon|a(?:lfWidth(?:CJKRomanSelector|IdeographsSelector|TextSelector)|n(?:dle(?:IsResource(?:Bit|Mask)|Locked(?:Bit|Mask)|Purgeable(?:Bit|Mask))|jaToHangul(?:Alt(?:OneSelector|T(?:hreeSelector|woSelector))|Selector))|rd(?:LinkFileType|wareCursor(?:DescriptorM(?:ajorVersion|inorVersion)|InfoM(?:ajorVersion|inorVersion)))|s(?:B(?:eenInited|undle)|CustomIcon|NoINITs))|e(?:brew(?:FigureSpaceVariant|StandardVariant)|lp(?:CharCode|DialogItem|Folder(?:Icon|Type)|Icon(?:Resource)?|TagEventHandlerTag|WindowClass))|i(?:deDiacriticsSelector|erarchicalFontMenuOption|gh(?:LevelEvent|ShelfParam_(?:CutOffFrequency|Gain))|nt(?:Advanced|Basic|Hidden)|passParam_(?:CutoffFrequency|Resonance)|raganaToKatakanaSelector|storicalLigaturesO(?:ffSelector|nSelector))|o(?:joCharactersSelector|meCharCode|rizontalConstraint)|uge(?:1BitMask|32BitData|4BitData|8Bit(?:Data|Mask))|yphen(?:To(?:EnDashO(?:ffSelector|nSelector)|MinusO(?:ffSelector|nSelector))|sToEmDashO(?:ffSelector|nSelector)))|I(?:BCarbonRuntime(?:CantFind(?:NibFile|Object)|ObjectNotOfRequestedType)|C(?:Attr(?:Locked(?:Bit|Mask)|NoChange|Volatile(?:Bit|Mask))|C(?:omponent(?:InterfaceVersion(?:0|1|2|3|4)?|Version)|reator)|EditPreferenceEvent(?:Class)?|File(?:SpecHeaderSize|Type)|Map(?:Binary(?:Bit|Mask)|DataFork(?:Bit|Mask)|FixedLength|Not(?:Incoming(?:Bit|Mask)|Outgoing(?:Bit|Mask))|Post(?:Bit|Mask)|ResourceFork(?:Bit|Mask))|N(?:ilProfileID|oUserInteraction(?:Bit|Mask)|umVersion)|Services(?:TCP(?:Bit|Mask)|UDP(?:Bit|Mask)))|MJaTypingMethod(?:Kana|Property|Roman)|O(?:A(?:nalogS(?:etupExpected|ignalLevel_(?:07(?:00_0(?:000|300)|14_0286)|1000_0400))|sync(?:C(?:allout(?:Count|FuncIndex|RefconIndex)|ompletionNotificationType)|Reserved(?:Count|Index)))|B(?:itsPerColorComponent(?:1(?:0|2|6)|6|8|NotSupported)|uiltinPanelPowerAttribute)|C(?:LUTPixels|SyncDisable|apturedAttribute|lamshellStateAttribute|o(?:lorimetry(?:AdobeRGB|BT(?:2(?:020|100)|601|709)|DCIP3|N(?:ativeRGB|otSupported)|WGRGB|sRGB|xvYCC)|nnect(?:MethodVarOutputSize|ion(?:BuiltIn|StereoSync))|pyback(?:Cache|InnerCache))|ursorControlAttribute)|D(?:PEvent(?:AutomatedTestRequest|ContentProtection|ForceRetrain|Idle|MCCS|RemoteControlCommandPending|S(?:inkSpecific|tart))|SCBlockPredEnable|e(?:f(?:ault(?:Cache|MemoryType)|erCLUTSetAttribute)|tailedTimingValid)|i(?:gitalSignal|splay(?:ColorMode|Dither(?:All|D(?:efault|isable)|FrameRateControl|RGBShift|Spatial|Temporal|YCbCr4(?:22Shift|44Shift))|ModeID(?:BootProgrammable|ReservedBase)|NeedsCEAUnderscan|PowerState(?:MinUsable|O(?:ff|n))|RGBColorComponentBits(?:1(?:0|2|4|6)|6|8|Unknown)|YCbCr4(?:22ColorComponentBits(?:1(?:0|2|4|6)|6|8|Unknown)|44ColorComponentBits(?:1(?:0|2|4|6)|6|8|Unknown))))|riverPowerAttribute|ynamicRange(?:Dolby(?:NormalMode|TunnelMode)|HDR10|NotSupported|SDR|TraditionalGammaHDR))|F(?:B(?:AVSignalType(?:D(?:P|VI)|HDMI|Unknown|VGA)|B(?:itRate(?:HBR(?:2)?|RBR)|lueGammaScaleAttribute)|C(?:hangedInterruptType|onnectInterruptType)|Display(?:Port(?:InterruptType|LinkChangeInterruptType|TrainingAttribute)|State(?:_(?:AlreadyActive|Mask|PipelineBlack|RestoredProfile))?)|FrameInterruptType|GreenGammaScaleAttribute|H(?:BLInterruptType|D(?:CPLimit_(?:AllowAll|NoHDCP(?:1x|20Type(?:0|1)))|RMetaDataAttribute))|Li(?:mitHDCP(?:Attribute|StateAttribute)|nk(?:Downspread(?:Max|None)|PreEmphasisLevel(?:0|1|2|3)|Scrambler(?:Alternate|Normal)|VoltageLevel(?:0|1|2|3)))|MCCSInterruptType|NS_(?:D(?:i(?:m|splayState(?:Mask|Shift))|oze)|Generation(?:Mask|Shift)|MessageMask|Rendezvous|Sleep|UnDim|Wake)|O(?:fflineInterruptType|nlineInterruptType)|RedGammaScaleAttribute|S(?:erverConnectType|haredConnectType|top|ystemAperture)|UserRequestProbe|V(?:BLInterruptType|ariableRefreshRate)|WakeInterruptType)|ixedCLUTPixels)|GDiagnose(?:ConnectType|GTraceType)|H(?:SyncDisable|ardwareCursorAttribute|ibernatePreview(?:Active|Updates))|In(?:hibitCache|ter(?:estCallout(?:Count|FuncIndex|RefconIndex|ServiceIndex)|lacedCEATiming))|KitNotication(?:MsgSizeMask|Type(?:Mask|SizeAdjShift))|M(?:a(?:p(?:Anywhere|C(?:ache(?:Mask|Shift)|opyback(?:Cache|InnerCache))|DefaultCache|InhibitCache|Overwrite|P(?:osted(?:CombinedReordered|Reordered|Write)|refault)|Re(?:a(?:dOnly|lTimeCache)|ference)|Static|U(?:nique|serOptionsMask)|Write(?:CombineCache|ThruCache))|tchingCallout(?:Count|FuncIndex|RefconIndex)|xPixelBits)|irror(?:Attribute|Default(?:Attribute)?|Forced|HWClipped|Is(?:Mirrored|Primary))|ono(?:DirectPixels|InverseDirectPixels))|N(?:TSCTiming|oSeparateSyncControl)|P(?:ALTiming|ixelEncoding(?:NotSupported|RGB444|YCbCr4(?:2(?:0|2)|44))|o(?:sted(?:CombinedReordered|Reordered|Write)|wer(?:Attribute|StateAttribute)))|R(?:GB(?:DirectPixels|Signed(?:DirectPixels|FloatingPointPixels))|ange(?:BitsPerColorComponent(?:1(?:0|2|6)|6|8|NotSupported)|Colorimetry(?:AdobeRGB|BT(?:2(?:020|100)|601|709)|DCIP3|N(?:ativeRGB|otSupported)|WGRGB|sRGB|xvYCC)|DynamicRange(?:Dolby(?:NormalMode|TunnelMode)|HDR10|NotSupported|SDR|TraditionalGammaHDR)|PixelEncoding(?:NotSupported|RGB444|YCbCr4(?:2(?:0|2)|44))|Supports(?:CompositeSync|InterlacedCEATiming(?:WithConfirm)?|S(?:eparateSyncs|ignal_(?:07(?:00_0(?:000|300)|14_0286)|1000_0400)|yncOnGreen)|VSyncSerration))|e(?:alTimeCache|gistryIterate(?:Parents|Recursively)))|S(?:cal(?:e(?:Can(?:BorderInsetOnly|DownSamplePixels|Rotate|S(?:caleInterlaced|upportInset)|UpSamplePixels)|Invert(?:X|Y)|Rotate(?:0|180|270|90|Flags)|S(?:tretch(?:Only|ToFit)|wapAxes))|ingInfoValid)|ervice(?:InteractionAllowed|M(?:atchedNotificationType|essageNotificationType)|PublishNotificationType|TerminatedNotificationType)|urface(?:Co(?:mponent(?:Name(?:Alpha|Blue|Chroma(?:Blue|Red)|Green|Luma|Red|Unknown)|Range(?:FullRange|Unknown|VideoRange|WideRange)|Type(?:Float|SignedInteger|Un(?:known|signedInteger)))|pyback(?:Cache|InnerCache))|DefaultCache|InhibitCache|Lock(?:AvoidSync|ReadOnly)|Map(?:C(?:acheShift|opyback(?:Cache|InnerCache))|DefaultCache|InhibitCache|Write(?:CombineCache|ThruCache))|Purgeable(?:Empty|KeepCurrent|NonVolatile|Volatile)|Subsampling(?:4(?:11|2(?:0|2))|None|Unknown)|Write(?:CombineCache|ThruCache))|y(?:nc(?:On(?:Blue|Green|Red)|PositivePolarity)|stemPowerAttribute))|T(?:iming(?:ID(?:Apple(?:NTSC_(?:FF(?:conv)?|ST(?:conv)?)|PAL_(?:FF(?:conv)?|ST(?:conv)?)|_(?:0x0_0hz_Offline|1(?:024x768_75hz|152x870_75hz)|5(?:12x384_60hz|60x384_60hz)|640x(?:4(?:00_67hz|80_67hz)|8(?:18_75hz|70_75hz))|832x624_75hz|FixedRateLCD))|FilmRate_48hz|GTF_640x480_120hz|Invalid|S(?:MPTE240M_60hz|ony_1(?:600x1024_76hz|920x1(?:080_(?:60hz|72hz)|200_76hz)))|VESA_(?:1(?:024x768_(?:60hz|7(?:0hz|5hz)|85hz)|152x864_75hz|280x(?:1024_(?:60hz|75hz|85hz)|960_(?:60hz|75hz|85hz))|360x768_60hz|600x1200_(?:6(?:0hz|5hz)|7(?:0hz|5hz)|8(?:0hz|5hz))|792x1344_(?:60hz|75hz)|856x1392_(?:60hz|75hz)|920x1440_(?:60hz|75hz))|640x480_(?:60hz|7(?:2hz|5hz)|85hz)|8(?:00x600_(?:56hz|60hz|7(?:2hz|5hz)|85hz)|48x480_60hz)))|RangeV(?:1|2))|riStateSyncs)|V(?:RAMSaveAttribute|SyncDisable)|W(?:SAA_(?:Accelerated|D(?:efer(?:End|Start)|riverOpen)|From_Accelerated|Hibernate|NonConsoleDevice|Reserved|S(?:leep|tateMask)|T(?:o_Accelerated|ransactional)|Unaccelerated)|indowServerActiveAttribute|rite(?:CombineCache|ThruCache)))|PFileServerIcon|S(?:OLatin(?:1(?:MusicCDVariant|StandardVariant)|Arabic(?:ExplicitOrderVariant|ImplicitOrderVariant|VisualOrderVariant)|Hebrew(?:ExplicitOrderVariant|ImplicitOrderVariant|VisualOrderVariant))|SDownloadsFolderType|p(?:BufferToSmallErr|Device(?:ActiveErr|InactiveErr)|Element(?:InListErr|NotInListErr)|InternalErr|ListBusyErr|System(?:ActiveErr|InactiveErr|ListErr)))|con(?:DialogItem|FamilyType|Services(?:1(?:024PixelDataARGB|28PixelDataARGB|6PixelDataARGB)|256PixelDataARGB|32PixelDataARGB|48PixelDataARGB|512PixelDataARGB|CatalogInfoMask|No(?:BadgeFlag|rmalUsageFlag)|UpdateIfNeededFlag))|d(?:eographic(?:Alt(?:F(?:iveSelector|ourSelector)|OneSelector|T(?:hreeSelector|woSelector)|ernativesType)|SpacingType)|leKCEvent(?:Mask)?)|ll(?:egal(?:ClockValueErr|InstructionException)|uminatedCapsSelector)|mmediate|n(?:DeferredTaskMask|NestedInterruptMask|SecondaryIntHandlerMask|UseErr|VBLTaskMask|dexFilesFolderType|equalityLigaturesO(?:ffSelector|nSelector)|feriorsSelector|itialCaps(?:AndSmallCapsSelector|Selector)|kInputMethodClass|putM(?:anagersFolderType|ethodsFolderType)|s(?:ertHierarchicalMenu|t(?:aller(?:LogsFolderType|ReceiptsFolderType)|ru(?:ctionBreakpointException|mentType_(?:A(?:UPreset|udiofile)|DLSPreset|EXS24|SF2Preset))))|te(?:gerException|rn(?:ation(?:ResourcesIcon|al(?:ResourcesIcon|SymbolsSelector))|et(?:EventClass|Folder(?:Icon|Type)|Location(?:A(?:FP|pple(?:ShareIcon|Talk(?:ZoneIcon)?))|Creator|F(?:TP(?:Icon)?|ile(?:Icon)?)|Generic(?:Icon)?|HTTP(?:Icon)?|Mail(?:Icon)?|N(?:NTP|SL(?:NeighborhoodIcon)?|ewsIcon))|P(?:asswordKCItemClass|lugInFolder(?:Icon|Type))|S(?:earchSitesFolder(?:Icon|Type)|itesFolderType))))|v(?:alid(?:CSClientErr|DeviceNumber|Font(?:Family)?|Generation|RegEntryErr)|ert(?:Highlighting|ed(?:BoxAnnotationSelector|CircleAnnotationSelector|RoundedBoxAnnotationSelector)|ingEncod(?:edPixel|ing(?:Shift)?))|isibleKCItemAttr))|s(?:Alias|Invisible|OnDesk|S(?:hared|tationery)|suer(?:KCItemAttr|URLKCItemAttr))|t(?:alicCJKRomanType|em(?:DisableBit|List)))|J(?:I(?:Journal(?:InFSMask|NeedInitMask|OnOtherDeviceMask)|S(?:19(?:78CharactersSelector|83CharactersSelector|90CharactersSelector)|2004CharactersSelector))|S(?:ClassAttributeNo(?:AutomaticPrototype|ne)|PropertyAttribute(?:Dont(?:Delete|Enum)|None|ReadOnly)|Type(?:Boolean|Nu(?:ll|mber)|Object|String|Undefined|dArrayType(?:ArrayBuffer|Float(?:32Array|64Array)|Int(?:16Array|32Array|8Array)|None|Uint(?:16Array|32Array|8(?:Array|ClampedArray)))))|UST(?:CurrentVersion|KashidaPriority|LetterPriority|NullPriority|Override(?:Limits|Priority|Unlimited)|Priority(?:Count|Mask)|S(?:pacePriority|tandardFormat)|Tag|Unlimited|noGlyphcode|pc(?:ConditionalAddAction|D(?:ecompositionAction|uctilityAction)|Glyph(?:RepeatAddAction|StretchAction)|UnconditionalAddAction))|apanese(?:BasicVariant|PostScript(?:PrintVariant|ScrnVariant)|St(?:andardVariant|dNoVerticalsVariant)|VertAtKuPlusTenVariant))|K(?:C(?:AuthType(?:D(?:PA|efault)|HTTPDigest|MSN|NTLM|RPA)|ProtocolType(?:A(?:FP|ppleTalk)|FTP(?:Account)?|HTTP|I(?:MAP|RC)|LDAP|NNTP|POP3|S(?:MTP|OCKS)|Telnet))|ER(?:N(?:C(?:rossStream(?:ResetNote)?|urrentVersion)|FormatMask|IndexArray|Line(?:EndKerning|Start)|No(?:CrossKerning|StakeNote|t(?:Applied|esRequested))|OrderedList|ResetCrossStream|S(?:impleArray|tateTable)|Tag|UnusedBits|V(?:ariation|ertical))|X(?:Action(?:OffsetMask|Type(?:AnchorPoints|Co(?:ntrolPoints|ordinates)|Mask))|C(?:ontrolPoint|rossStream(?:ResetNote)?|urrentVersion)|Descending|FormatMask|IndexArray|Line(?:EndKerning|Start)|No(?:CrossKerning|StakeNote|t(?:Applied|esRequested))|OrderedList|ResetCrossStream|S(?:impleArray|tateTable)|Tag|Unused(?:Bits|Flags)|V(?:a(?:luesAreLong|riation)|ertical)))|L(?:GroupIdentifier|I(?:con|dentifier)|K(?:CHR(?:Data|Kind|uchrKind)|ind)|L(?:anguageCode|ocalizedName)|Name|USKeyboard|uchr(?:Data|Kind))|a(?:na(?:SpacingType|ToRomanizationSelector)|takanaToHiraganaSelector)|e(?:epArrangedIcon|rnelExtensionsFolderType|y(?:board(?:ANSI|I(?:SO|nputMethodClass)|JIS|Layout(?:Icon|sFolderType)|Unknown)|chain(?:FolderType|ListChangedKCEvent))))|L(?:A(?:AllMorphemes|DefaultEdge|EndOfSourceTextMask|FreeEdge|IncompleteEdge|MorphemesArrayVersion|Speech(?:BagyouGodan|Chimei(?:Setsubigo)?|Do(?:kuritsugo|ushi)|Fu(?:kushi|tsuuMeishi)|G(?:agyouGodan|odanDoushi)|IchidanDoushi|J(?:inmei(?:Mei|Se(?:i|tsubigo))?|o(?:doushi|shi))|K(?:a(?:gyouGodan|henDoushi|ndoushi|tsuyou(?:Gokan|Katei|M(?:ask|eirei|izen)|Ren(?:tai|you)|Syuushi))|ei(?:douMeishi|you(?:doushi|shi))|igou|oyuuMeishi|uten)|M(?:agyouGodan|e(?:diumClassMask|ishi)|uhinshi)|NagyouGodan|R(?:agyouGodan|entaishi|oughClassMask)|S(?:a(?:gyouGodan|hen(?:Doushi|Meishi))|e(?:iku|t(?:su(?:bi(?:Chimei|go)|zokushi)|tougo))|oshikimei(?:Setsubigo)?|trictClassMask|uu(?:jiSet(?:subigo|tougo)|shi))|T(?:a(?:gyouGodan|nkanji)|outen)|WagyouGodan|ZahenDoushi))|CAR(?:C(?:tlPointFormat|urrentVersion)|LinearFormat|Tag)|S(?:A(?:ccept(?:AllowLoginUI|Default)|pp(?:DoesNot(?:ClaimTypeErr|SupportSchemeWarning)|InTrashErr|licationNotFoundErr)|ttributeNot(?:FoundErr|SettableErr))|CannotSetInfoErr|Data(?:Err|TooOldErr|UnavailableErr)|ExecutableIncorrectFormat|GarbageCollectionUnsupportedErr|Incompatible(?:ApplicationVersionErr|SystemVersionErr)|Launch(?:A(?:nd(?:DisplayErrors|Hide(?:Others)?|Print)|sync)|D(?:efaults|ont(?:AddToRecents|Switch))|InProgressErr|NewInstance)|MultipleSessionsNotSupportedErr|No(?:32BitEnvironmentErr|ClassicEnvironmentErr|ExecutableErr|LaunchPermissionErr|R(?:egistrationInfoErr|osettaEnvironmentErr)|t(?:AnApplicationErr|InitializedErr|RegisteredErr))|Roles(?:All|Editor|None|Shell|Viewer)|S(?:erverCommunicationErr|haredFileList(?:DoNotMountVolumes|NoUserInteraction))|Unknown(?:Creator|Err|Type(?:Err)?))|TAGCurrentVersion|a(?:belKCItemAttr|nguageTagType|rge(?:1BitMask|32BitData|4Bit(?:Data|IconSize)|8Bit(?:Data|IconSize|Mask)|IconSize)|st(?:DomainConstant|FeatureType|IOKitNotificationType|MagicBusyFiletype)|unch(?:ToGetTerminology|erItemsFolderType))|e(?:ft(?:ArrowCharCode|ToRight)|tterCaseType)|i(?:braryAssistantsFolderType|gaturesType|miterParam_(?:AttackTime|DecayTime|PreGain)|n(?:e(?:F(?:eedCharCode|inalSwashesO(?:ffSelector|nSelector))|InitialSwashesO(?:ffSelector|nSelector)|arPCMFormatFlag(?:Is(?:AlignedHigh|BigEndian|Float|Non(?:Interleaved|Mixable)|Packed|SignedInteger)|s(?:AreAllClear|SampleFraction(?:Mask|Shift))))|guisticRearrangement(?:O(?:ffSelector|nSelector)|Type))|stDef(?:ProcPtr|Standard(?:IconType|TextType)|UserProcType))|o(?:c(?:al(?:Domain|PPDDomain|e(?:A(?:llPartsMask|ndVariantNameMask)|Language(?:Mask|VariantMask)|NameMask|OperationVariantNameMask|Region(?:Mask|VariantMask)|Script(?:Mask|VariantMask)|s(?:BufferTooSmallErr|DefaultDisplayStatus|Folder(?:Icon|Type)|TableFormatErr)))|k(?:KCEvent(?:Mask)?|ed(?:BadgeIcon|Icon)))|g(?:osO(?:ffSelector|nSelector)|sFolderType)|w(?:PassParam_(?:CutoffFrequency|Resonance)|erCase(?:NumbersSelector|PetiteCapsSelector|SmallCapsSelector|Type))))|M(?:68kISA|D(?:Label(?:LocalDomain|UserDomain)|Query(?:AllowFSTranslation|ReverseSortOrderFlag|Synchronous|WantsUpdates))|IDI(?:DriversFolderType|I(?:DNotUnique|nvalid(?:Client|Port|UniqueID))|M(?:essageSendErr|sg(?:IOError|Object(?:Added|Removed)|PropertyChanged|Se(?:rialPortOwnerChanged|tupChanged)|ThruConnectionsChanged))|No(?:C(?:onnection|urrentSetup)|tPermitted)|Object(?:NotFound|Type_(?:De(?:stination|vice)|E(?:ntity|xternal(?:De(?:stination|vice)|Entity|Source))|Other|Source))|Se(?:rverStartErr|tupFormatErr)|Unknown(?:E(?:ndpoint|rror)|Property)|Wrong(?:EndpointType|PropertyType|Thread))|OR(?:T(?:C(?:o(?:ntextualType|ver(?:Descending|IgnoreVertical|TypeMask|Vertical))|urr(?:Insert(?:Before|Count(?:Mask|Shift)|KashidaLike)|JustTableCount(?:Mask|Shift)|entVersion))|DoInsertionsBefore|I(?:nsertion(?:Type|sCountMask)|sSplitVowelPiece)|Lig(?:FormOffset(?:Mask|Shift)|LastAction|StoreLigature|atureType)|Mark(?:Insert(?:Before|Count(?:Mask|Shift)|KashidaLike)|JustTableCount(?:Mask|Shift))|RearrangementType|SwashType|Tag|ra(?:CDx(?:A(?:B)?|BA)?|D(?:Cx(?:A(?:B)?|BA)?|x(?:A(?:B)?|BA)?)|NoAction|x(?:A(?:B)?|BA)))|X(?:C(?:over(?:Descending|IgnoreVertical|LogicalOrder|TypeMask|Vertical)|urrentVersion)|Tag))|P(?:A(?:ddressSpaceInfoVersion|llocate(?:1(?:024ByteAligned|6ByteAligned)|32ByteAligned|4096ByteAligned|8ByteAligned|AltiVecAligned|ClearMask|DefaultAligned|GloballyMask|InterlockAligned|MaxAlignment|No(?:CreateMask|GrowthMask)|ResidentMask|VM(?:PageAligned|XAligned))|nyRemoteContext|syncInterruptRemoteContext)|BlueBlockingErr|Cr(?:eateTask(?:NotDebuggableMask|SuspendedMask|TakesAllExceptionsMask|ValidOptionsMask)|iticalRegionInfoVersion)|DeletedErr|E(?:G4Object_(?:AAC_(?:L(?:C|TP)|Main|S(?:BR|SR|calable))|CELP|HVXC|TwinVQ)|ventInfoVersion)|HighLevelDebugger|I(?:n(?:sufficientResourcesErr|terruptRemoteContext|validIDErr)|terationEndErr)|LowLevelDebugger|M(?:axAllocSize|idLevelDebugger)|N(?:anokernelNeedsMemoryErr|o(?:ID|tificationInfoVersion))|OwningProcessRemoteContext|Pr(?:eserveTimerIDMask|ivilegedErr|ocess(?:CreatedErr|TerminatedErr))|QueueInfoVersion|SemaphoreInfoVersion|T(?:ask(?:AbortedErr|Blocked(?:Err)?|CreatedErr|InfoVersion|Propagate(?:Mask)?|R(?:e(?:ady|sume(?:Branch(?:Mask)?|Mask|Step(?:Mask)?))|unning)|St(?:ate(?:32BitMemoryException|FPU|Machine|Registers|TaskInfo|Vectors)|oppedErr))|ime(?:IsD(?:eltaMask|urationMask)|outErr)))|a(?:c(?:Arabic(?:AlBayanVariant|StandardVariant|T(?:huluthVariant|rueTypeVariant))|C(?:roatian(?:CurrencySignVariant|DefaultVariant|EuroSignVariant)|yrillic(?:CurrSign(?:StdVariant|UkrVariant)|DefaultVariant|EuroSignVariant))|Farsi(?:StandardVariant|TrueTypeVariant)|Greek(?:DefaultVariant|EuroSignVariant|NoEuroSignVariant)|He(?:brew(?:FigureSpaceVariant|StandardVariant)|lpVersion)|Icelandic(?:St(?:andardVariant|d(?:CurrSignVariant|DefaultVariant|EuroSignVariant))|T(?:T(?:CurrSignVariant|DefaultVariant|EuroSignVariant)|rueTypeVariant))|Japanese(?:BasicVariant|PostScript(?:PrintVariant|ScrnVariant)|St(?:andardVariant|dNoVerticalsVariant)|VertAtKuPlusTenVariant)|MemoryMaximumMemoryManagerBlockSize|OSReadMe(?:FolderIcon|sFolderType)|Roman(?:CurrencySignVariant|DefaultVariant|EuroSignVariant|Latin1(?:CroatianVariant|DefaultVariant|IcelandicVariant|RomanianVariant|StandardVariant|TurkishVariant)|StandardVariant|ian(?:CurrencySignVariant|DefaultVariant|EuroSignVariant))|VT100(?:CurrencySignVariant|DefaultVariant|EuroSignVariant)|hineNameStrID)|gic(?:BusyCreationDate|TemporaryItemsFolderType)|le|nagedItemsFolderType|t(?:h(?:SymbolsSelector|ematical(?:ExtrasType|GreekO(?:ffSelector|nSelector)))|rixMixerParam_(?:Enable|P(?:ost(?:AveragePower(?:Linear)?|PeakHoldLevel(?:Linear)?)|re(?:AveragePower(?:Linear)?|PeakHoldLevel(?:Linear)?))|Volume))|x(?:AsyncArgs|InputLengthOfAppleJapaneseEngine|K(?:anjiLengthInAppleJapaneseDictionary|eyLength)|YomiLengthInAppleJapaneseDictionary|imumBlocksIn4GB))|enu(?:A(?:ppleLogo(?:FilledGlyph|OutlineGlyph)|ttr(?:AutoDisable|CondenseSeparators|DoNot(?:CacheImage|UseUserCommandKeys)|ExcludesMarkColumn|Hidden|UsePencilGlyph))|BlankGlyph|C(?:GImageRefType|a(?:lcItemMsg|psLockGlyph)|heckmarkGlyph|learGlyph|o(?:lorIconType|mmandGlyph|nt(?:ext(?:Co(?:mmandIDSearch|ntextualMenu)|DontUpdate(?:Enabled|Icon|Key|Text)|Inspection|KeyMatching|Menu(?:Bar(?:Tracking)?|Enabling)|P(?:opUp(?:Tracking)?|ullDown)|Submenu|ualMenuGlyph)|rol(?:Glyph|ISOGlyph|Modifier))))|D(?:e(?:f(?:ClassID|ProcPtr)|lete(?:LeftGlyph|RightGlyph))|i(?:amondGlyph|sposeMsg)|own(?:ArrowGlyph|wardArrowDashedGlyph)|raw(?:ItemsMsg|Msg))|E(?:isuGlyph|jectGlyph|nterGlyph|scapeGlyph|vent(?:DontCheckSubmenus|IncludeDisabledItems|QueryOnly))|F(?:1(?:0Glyph|1Glyph|2Glyph|3Glyph|4Glyph|5Glyph|6Glyph|7Glyph|8Glyph|9Glyph|Glyph)|2Glyph|3Glyph|4Glyph|5Glyph|6Glyph|7Glyph|8Glyph|9Glyph|indItemMsg)|H(?:elpGlyph|iliteItemMsg)|I(?:con(?:Re(?:fType|sourceType)|SuiteType|Type)|nitMsg|tem(?:Attr(?:Auto(?:Disable|Repeat)|CustomDraw|D(?:isabled|ynamic)|Hidden|I(?:conDisabled|gnoreMeta|ncludeInCmdKeyMatching)|NotPreviousAlternate|S(?:e(?:ctionHeader|parator)|ubmenuParentChoosable)|U(?:pdateSingleItem|seVirtualKey))|Data(?:A(?:llDataVersion(?:One|T(?:hree|wo))|ttribute(?:dText|s))|C(?:FString|md(?:Key(?:Glyph|Modifiers)?|VirtualKey)|ommandID)|Enabled|Font(?:ID)?|I(?:con(?:Enabled|Handle|ID)|ndent)|Mark|Properties|Refcon|S(?:tyle|ubmenu(?:Handle|ID))|Text(?:Encoding)?)))|KanaGlyph|Left(?:Arrow(?:DashedGlyph|Glyph)|DoubleQuotesJapaneseGlyph)|N(?:o(?:CommandModifier|Icon|Modifiers|nmarkingReturnGlyph|rthwestArrowGlyph)|ullGlyph)|Option(?:Glyph|Modifier)|P(?:a(?:ge(?:DownGlyph|UpGlyph)|ragraphKoreanGlyph)|encilGlyph|o(?:pUpMsg|werGlyph)|ropertyPersistent)|R(?:eturn(?:Glyph|R2LGlyph)|ight(?:Arrow(?:DashedGlyph|Glyph)|DoubleQuotesJapaneseGlyph))|S(?:h(?:ift(?:Glyph|Modifier)|rinkIconType)|izeMsg|mallIconType|outheastArrowGlyph|paceGlyph|tdMenu(?:BarProc|Proc)|ystemIconSelectorType)|T(?:ab(?:LeftGlyph|RightGlyph)|hemeSavvyMsg|ra(?:ckingMode(?:Keyboard|Mouse)|demarkJapaneseGlyph))|UpArrow(?:DashedGlyph|Glyph))|i(?:crosecondScale|llisecondScale|ni(?:1BitMask|4BitData|8BitData))|o(?:d(?:DateKCItemAttr|al(?:DialogVariantCode|WindowClass)|em(?:OutOfMemory|PreferencesMissing|Script(?:Missing|sFolderType)))|nospaced(?:NumbersSelector|TextSelector)|u(?:nted(?:BadgeIcon|Folder(?:AliasType|Icon(?:Resource)?))|se(?:Params(?:ClickAndHold|DragInitiation|ProxyIcon|Sticky)|Tracking(?:ClientEvent|KeyModifiersChanged|Mouse(?:D(?:own|ragged)|E(?:ntered|xited)|Moved|Pressed|Released|Up)|ScrollWheel|TimedOut|UserCancelled)|UpOutOfSlop))|v(?:able(?:Alert(?:VariantCode|WindowClass)|Modal(?:DialogVariantCode|WindowClass))|ieDocumentsFolderType))|u(?:lti(?:ChannelMixerParam_(?:Enable|P(?:an|ost(?:AveragePower|PeakHoldLevel)|re(?:AveragePower|PeakHoldLevel))|Volume)|band(?:CompressorParam_(?:AttackTime|C(?:ompressionAmount(?:1|2|3|4)|rossover(?:1|2|3))|EQ(?:1|2|3|4)|Headroom(?:1|2|3|4)|InputAmplitude(?:1|2|3|4)|OutputAmplitude(?:1|2|3|4)|P(?:ostgain|regain)|ReleaseTime|Threshold(?:1|2|3|4))|Filter_(?:Bandwidth(?:1|2|3)|Center(?:Freq(?:1|2|3)|Gain(?:1|2|3))|High(?:F(?:ilterType|requency)|Gain)|Low(?:F(?:ilterType|requency)|Gain)))|processingFolderType)|sic(?:D(?:evice(?:MIDIEventSelect|P(?:aram_(?:ReverbVolume|Tuning|Volume)|r(?:epareInstrumentSelect|operty_(?:BankName|DualSchedulingMode|GroupOutputBus|Instrument(?:Count|N(?:ame|umber))|MIDIXMLNames|PartGroup|S(?:oundBank(?:Data|FS(?:Ref|Spec)|URL)|treamFromDisk|upportsStartStopNote)|UsesInternalReverb)))|R(?:ange|eleaseInstrumentSelect)|S(?:ampleFrameMask_(?:IsScheduled|SampleOffset)|t(?:artNoteSelect|opNoteSelect)|ysExSelect))|ocumentsFolderType)|EventType_(?:AUPreset|Extended(?:Control|Note|Tempo)|M(?:IDI(?:ChannelMessage|NoteMessage|RawData)|eta)|NULL|Parameter|User)|NoteEvent_U(?:nused|seGroupInstrument)|Sequence(?:File(?:Flags_(?:Default|EraseFile)|_(?:AnyType|MIDIType|iMelodyType))|LoadSMF_(?:ChannelsToTracks|PreserveTracks)|Type_(?:Beats|S(?:amples|econds))))))|N(?:LCCharactersSelector|S(?:L(?:68kContextNotSupported|B(?:ad(?:ClientInfoPtr|DataTypeErr|NetConnection|ProtocolTypeErr|ReferenceErr|ServiceTypeErr|URLSyntax)|ufferTooSmallForData)|CannotContinueLookup|ErrNullPtrError|In(?:itializationFailed|sufficient(?:OTVer|SysVer)|validPluginSpec)|N(?:o(?:C(?:arbonLib|ontextAvailable)|ElementsInList|PluginsFo(?:rSearch|und)|SupportForService|tI(?:mplementedYet|nitialized))|ull(?:ListPtr|NeighborhoodPtr))|PluginLoadFailed|RequestBufferAlreadyInList|S(?:chedulerError|earchAlreadyInProgress|omePluginsFailedToLoad)|UILibraryNotAvailable)|p(?:A(?:dd(?:PlayerFailedErr|ressInUseErr)|lready(?:AdvertisingErr|InitializedErr))|C(?:antBlockErr|onnectFailedErr|reateGroupFailedErr)|F(?:eatureNotImplementedErr|reeQExhaustedErr)|GameTerminatedErr|HostFailedErr|In(?:itializationFailedErr|valid(?:AddressErr|DefinitionErr|G(?:ameRefErr|roupIDErr)|P(?:arameterErr|layerIDErr|rotocol(?:ListErr|RefErr))))|JoinFailedErr|Me(?:mAllocationErr|ssageTooBigErr)|N(?:ameRequiredErr|o(?:GroupsErr|HostVolunteersErr|PlayersErr|tAdvertisingErr))|OT(?:NotPresentErr|VersionTooOldErr)|P(?:ipeFullErr|rotocolNotAvailableErr)|RemovePlayerFailedErr|SendFailedErr|T(?:imeoutErr|opologyNotSupportedErr)))|a(?:meLocked|nosecondScale|v(?:CustomControlMessageFailedErr|Invalid(?:CustomControlMessageErr|SystemConfigErr)|MissingKindStringErr|WrongDialog(?:ClassErr|StateErr)))|e(?:gativeKCItemAttr|twork(?:Domain|PPDDomain)|ut(?:er|ralScript)|verAuthenticate|w(?:DebugHeap|S(?:izeParameter|tyleHeap|uspend)|TimePitchParam_(?:EnablePeakLocking|Overlap|Pitch|Rate))|xt(?:Body|WindowGroup))|o(?:A(?:lternatesSelector|nnotationSelector)|ByteCode|C(?:JK(?:ItalicRomanSelector|SymbolAlternativesSelector)|ard(?:BusCISErr|E(?:nablersFoundErr|rr)|SevicesSocketsErr)|lientTableErr|o(?:mpatibleNameErr|nstraint))|En(?:ablerForCardErr|dingProsody)|F(?:ilesIcon|olderIcon|ractionsSelector)|I(?:OWindowRequestedErr|deographicAlternativesSelector)|More(?:I(?:nterruptSlotsErr|temsErr)|TimerClientsErr)|OrnamentsSelector|Process|RubyKanaSelector|S(?:peechInterrupt|tyl(?:eOptionsSelector|isticAlternatesSelector)|uchPowerSource)|T(?:hreadID|imeOut|rans(?:form|literationSelector))|UserAuthentication|WriteIcon|n(?:BreakingSpaceCharCode|FinalSwashesO(?:ffSelector|nSelector)|eKCStopOn)|rmalPositionSelector|t(?:Paged|ReadyErr|ZVCapableErr|eIcon))|u(?:llCharCode|m(?:AUNBandEQFilterTypes|ber(?:C(?:aseType|tlCTabEntries)|OfResponseFrequencies|SpacingType))))|O(?:CRInputMethodClass|PBD(?:C(?:ontrolPointFormat|urrentVersion)|DistanceFormat|Tag)|S(?:A(?:C(?:anGetSource|omponentType)|DontUsePhac|Error(?:A(?:pp|rgs)|BriefMessage|ExpectedType|Message|Number|OffendingObject|PartialResult|Range)|FileType|GenericScriptingComponentSubtype|Mode(?:A(?:lwaysInteract|ugmentContext)|C(?:an(?:Interact|tSwitchLayer)|ompileIntoContext)|D(?:isp(?:atchToDirectObject|layForHumans)|o(?:Record|nt(?:Define|GetDataForArguments|Reconnect|StoreParent)))|FullyQualifyDescriptors|N(?:everInteract|ull)|PreventGetSource)|N(?:oDispatch|ull(?:Mode|Script))|RecordedText|S(?:cript(?:BestType|Is(?:Modified|Type(?:CompiledScript|Script(?:Context|Value)))|ResourceType)|elect(?:AvailableDialect(?:CodeList|s)|Co(?:erce(?:FromDesc|ToDesc)|mp(?:ile(?:Execute)?|onentSpecificStart)|py(?:DisplayString|ID|S(?:cript|ourceString)))|D(?:isp(?:lay|ose)|o(?:Event|Script))|Execute(?:Event)?|Get(?:ActiveProc|C(?:reateProc|urrentDialect)|DialectInfo|ResumeDispatchProc|S(?:criptInfo|endProc|ource))|Load(?:Execute)?|MakeContext|S(?:cript(?:Error|ingComponentName)|et(?:ActiveProc|C(?:reateProc|urrentDialect)|DefaultTarget|ResumeDispatchProc|S(?:criptInfo|endProc))|t(?:artRecording|o(?:pRecording|re))))|u(?:ite|pports(?:AE(?:Coercion|Sending)|Co(?:mpiling|nvenience)|Dialects|EventHandling|GetSource|Recording)))|UseStandardDispatch|sync(?:CompleteMessageID|Ref(?:64(?:Count|Size)|Count|Size)))|IZ(?:CodeInSharedLibraries|DontOpenResourceFile|OpenWithReadPermission|dontAcceptRemoteEvents)|NotificationMessageID)|T(?:A(?:ccessErr|ddressBusyErr)|B(?:ad(?:AddressErr|ConfigurationErr|DataErr|FlagErr|NameErr|OptionErr|QLenErr|ReferenceErr|S(?:equenceErr|yncErr))|ufferOverflowErr)|C(?:anceledErr|lientNotInittedErr|onfigurationChangedErr)|DuplicateFoundErr|FlowErr|IndOutErr|LookErr|No(?:AddressErr|D(?:ataErr|isconnectErr)|Error|ReleaseErr|StructureTypeErr|UDErrErr|t(?:FoundErr|SupportedErr))|Out(?:OfMemoryErr|StateErr)|P(?:ort(?:HasDiedErr|LostConnection|WasEjectedErr)|ro(?:tocolErr|viderMismatchErr))|QFullErr|Res(?:AddressErr|QLenErr)|S(?:tateChangeErr|ysErrorErr)|UserRequestedErr)|ff(?:linePreflight_(?:NotRequired|Optional|Required)|set2Pos)|ld68kRTA|n(?:AppropriateDisk|SystemDisk|eByteCode)|p(?:aque(?:A(?:ddressSpaceID|nyID|reaID)|C(?:o(?:herenceID|nsoleID)|puID|riticalRegionID)|EventID|NotificationID|ProcessID|QueueID|SemaphoreID|T(?:askID|imerID))|en(?:D(?:oc(?:EditorsFolderType|FolderType|LibrariesFolderType|ShellPlugInsFolderType)|ropIconVariant)|FolderIcon(?:Resource)?|IconVariant)|tionUnicode)|r(?:Connections|dinalsSelector|namentSetsType)|therPluginFormat_(?:AU|Undefined|k(?:MAS|VST))|ut(?:OfResourceErr|putTextInUnicodeEncoding(?:Bit|Mask))|verla(?:ppingCharactersType|yWindowClass)|wne(?:dFolderIcon(?:Resource)?|r(?:I(?:D2Name|con)|Name2ID)))|P(?:CSTo(?:Device|PCS)|EF(?:AbsoluteExport|Co(?:deS(?:ection|ymbol)|nstantSection)|D(?:ataSymbol|ebugSection)|Ex(?:ceptionSection|ecDataSection|pSym(?:ClassShift|MaxNameOffset|NameOffsetMask))|FirstSectionHeaderOffset|Gl(?:obalShare|ueSymbol)|Hash(?:LengthShift|MaxLength|Slot(?:FirstKeyMask|Max(?:KeyIndex|SymbolCount)|SymCountShift)|ValueMask)|I(?:mpSym(?:ClassShift|MaxNameOffset|NameOffsetMask)|nitLibBeforeMask)|LoaderSection|P(?:ackedDataSection|kData(?:Block|Count5Mask|MaxCount5|OpcodeShift|Repeat(?:Block|Zero)?|VCount(?:EndMask|Mask|Shift)|Zero)|ro(?:cessShare|tectedShare))|Re(?:exportedImport|loc(?:B(?:asicOpcodeRange|ySect(?:C|D(?:WithSkip)?))|I(?:mportRun|ncrPosition(?:MaxOffset)?)|Lg(?:By(?:Import(?:MaxIndex)?|SectionSubopcode)|Repeat(?:Max(?:ChunkCount|RepeatCount))?|Set(?:OrBySection(?:MaxIndex)?|Sect(?:CSubopcode|DSubopcode)))|RunMaxRunLength|S(?:etPos(?:MaxOffset|ition)|m(?:By(?:Import|Section)|IndexMaxIndex|Repeat(?:Max(?:ChunkCount|RepeatCount))?|SetSect(?:C|D)))|TVector(?:12|8)|UndefinedOpcode|VTable8|WithSkipMax(?:RelocCount|SkipCount)))|T(?:OCSymbol|VectorSymbol|ag(?:1|2)|racebackSection)|Un(?:definedSymbol|packedDataSection)|Version|WeakImport(?:LibMask|SymMask))|M(?:AllocationFailure|Border(?:Double(?:Hairline|Thickline)|Single(?:Hairline|Thickline))|C(?:MYKColorSpaceModel|VMSymbolNotFound|ancel|loseFailed|overPage(?:After|Before|None)|reateMessageFailed)|D(?:ataFormatXML(?:Compressed|Default|Minimal)|e(?:leteSubTicketFailed|stination(?:F(?:ax|ile)|Invalid|Pr(?:eview|inter|ocessPDF))|vNColorSpaceModel)|o(?:cumentNotFound|ntSwitchPDEError)|uplex(?:No(?:Tumble|ne)|Tumble))|EditRequestFailed|F(?:eatureNotInstalled|ileOrDirOperationFailed|ontN(?:ameTooLong|otFound))|G(?:eneral(?:CGError|Error)|rayColorSpaceModel)|HideInlineItems|I(?:O(?:AttrNotAvailable|MSymbolNotFound)|n(?:ternalError|valid(?:Allocator|C(?:VMContext|alibrationTarget|onnection)|FileType|I(?:OMContext|ndex|tem)|Job(?:ID|Template)|Key|LookupSpec|Object|P(?:BMRef|DEContext|MContext|a(?:geFormat|per|rameter)|r(?:eset|int(?:Se(?:ssion|ttings)|er(?:Address|Info)?)))|Reply|S(?:tate|ubTicket)|T(?:icket|ype)|Value))|temIsLocked)|Job(?:Busy|Canceled|GetTicket(?:BadFormatError|ReadError)|ManagerAborted|NotFound|Stream(?:EndError|OpenFailed|ReadFailed))|Key(?:Not(?:Found|Unique)|OrValueNotFound)|La(?:ndscape|stErrorCodeToMakeMaintenanceOfThisListEasier|yout(?:BottomTop(?:LeftRight|RightLeft)|LeftRight(?:BottomTop|TopBottom)|RightLeft(?:BottomTop|TopBottom)|TopBottom(?:LeftRight|RightLeft)))|MessagingError|No(?:Default(?:Item|Printer|Settings)|Error|PrinterJobID|S(?:electedPrinters|uchEntry)|tImplemented)|O(?:bjectInUse|penFailed|utOfScope)|P(?:MSymbolNotFound|a(?:geToPaperMapping(?:None|ScaleToFit)|perType(?:Coated|Glossy|P(?:lain|remium)|T(?:Shirt|ransparency)|Unknown))|ermissionError|lugin(?:NotFound|RegisterationFailed)|ortrait|r(?:BrowserNoUI|int(?:AllPages|er(?:Idle|Processing|Stopped))))|Qu(?:ality(?:Best|Draft|Highest|InkSaver|Lowest|Normal|Photo)|eue(?:AlreadyExists|JobFailed|NotFound))|R(?:GBColorSpaceModel|e(?:ad(?:Failed|GotZeroData)|verse(?:Landscape|Portrait)))|S(?:caling(?:CenterOn(?:ImgArea|Paper)|Pin(?:Bottom(?:Left|Right)|Top(?:Left|Right)))|erver(?:A(?:lreadyRunning|ttributeRestricted)|CommunicationFailed|NotFound|Suspended)|how(?:DefaultInlineItems|Inline(?:Copies|Orientation|Pa(?:geRange(?:WithSelection)?|perSize)|Scale)|PageAttributesPDE)|implexTumble|t(?:atusFailed|ringConversionFailure)|ubTicketNotFound|yncRequestFailed)|T(?:emplateIsLocked|icket(?:IsLocked|TypeNotFound))|U(?:n(?:ableToFindProcess|expectedImagingError|known(?:ColorSpaceModel|DataType|Message)|locked|supportedConnection)|pdateTicketFailed|serOrGroupNotFound)|Val(?:idateTicketFailed|ueOutOfRange)|WriteFailed|XMLParseError)|OSIXError(?:Base|E(?:2BIG|A(?:CCES|DDR(?:INUSE|NOTAVAIL)|FNOSUPPORT|GAIN|LREADY|UTH)|B(?:AD(?:ARCH|EXEC|F|M(?:ACHO|SG)|RPC)|USY)|C(?:ANCELED|HILD|ONN(?:ABORTED|RE(?:FUSED|SET)))|D(?:E(?:ADLK|STADDRREQ|VERR)|OM|QUOT)|EXIST|F(?:AULT|BIG|TYPE)|HOST(?:DOWN|UNREACH)|I(?:DRM|LSEQ|N(?:PROGRESS|TR|VAL)|O|S(?:CONN|DIR))|LOOP|M(?:FILE|LINK|SGSIZE|ULTIHOP)|N(?:AMETOOLONG|E(?:EDAUTH|T(?:DOWN|RESET|UNREACH))|FILE|O(?:ATTR|BUFS|D(?:ATA|EV)|E(?:NT|XEC)|L(?:CK|INK)|M(?:EM|SG)|PROTOOPT|S(?:PC|R|TR|YS)|T(?:BLK|CONN|DIR|EMPTY|S(?:OCK|UP)|TY))|XIO)|O(?:PNOTSUPP|VERFLOW)|P(?:ERM|FNOSUPPORT|IPE|RO(?:C(?:LIM|UNAVAIL)|G(?:MISMATCH|UNAVAIL)|TO(?:NOSUPPORT|TYPE)?)|WROFF)|R(?:ANGE|EMOTE|OFS|PCMISMATCH)|S(?:H(?:LIBVERS|UTDOWN)|OCKTNOSUPPORT|PIPE|RCH|TALE)|T(?:IME(?:DOUT)?|OOMANYREFS|XTBSY)|USERS|XDEV))|ROP(?:A(?:LDirectionClass|NDirectionClass)|BNDirectionClass|C(?:SDirectionClass|anHang(?:LTMask|RBMask)|urrentVersion)|DirectionMask|E(?:NDirectionClass|SDirectionClass|TDirectionClass)|IsFloaterMask|L(?:DirectionClass|R(?:EDirectionClass|ODirectionClass))|N(?:SMDirectionClass|umDirectionClasses)|ONDirectionClass|P(?:DFDirectionClass|SDirectionClass|airOffset(?:Mask|S(?:hift|ign)))|R(?:DirectionClass|L(?:EDirectionClass|ODirectionClass)|ightConnectMask)|S(?:DirectionClass|ENDirectionClass)|Tag|UseRLPairMask|WSDirectionClass|ZeroReserved)|a(?:ckageAliasType|ge(?:DownCharCode|InMemory|OnDisk|UpCharCode)|nn(?:erParam_(?:Azimuth|CoordScale|Distance|Elevation|Gain|RefDistance)|ingMode_(?:SoundField|VectorBasedPanning))|r(?:amet(?:erEvent_(?:Immediate|Ramped)|ricEQParam_(?:CenterFreq|Gain|Q))|enthesisAnnotationSelector|tiallyConnectedSelector)|s(?:calStackBased|s(?:CallToChainErr|Selector|word(?:ChangedKCEvent(?:Mask)?)?)|teboard(?:ClientIsOwner|Flavor(?:No(?:Flags|tSaved)|Promised|RequestOnly|S(?:ender(?:Only|Translated)|ystemTranslated))|Modified|StandardLocation(?:Trash|Unknown)))|thKCItemAttr)|e(?:ncil(?:LeftUnicode|Unicode)|riod(?:AnnotationSelector|sToEllipsisO(?:ffSelector|nSelector)))|i(?:CharactersSelector|ctureD(?:ialogItem|ocumentsFolderType))|l(?:ain(?:DialogVariantCode|WindowClass)|otIconRefNo(?:Image|Mask|rmalFlags))|o(?:licyKCStopOn|rtKCItemAttr|s(?:2Offset|tCardEventErr)|wer(?:Handler(?:ExistsForDeviceErr|NotFoundFor(?:DeviceErr|ProcErr))|Mgt(?:MessageNotHandled|RequestDenied)|PC(?:ISA|RTA)))|r(?:e(?:MacOS91(?:A(?:ppl(?:eExtrasFolderType|icationsFolderType)|ssistantsFolderType|utomountedServersFolderType)|In(?:stallerLogsFolderType|ternetFolderType)|MacOSReadMesFolderType|StationeryFolderType|UtilitiesFolderType)|emptiveThread|f(?:erence(?:PanesFolderType|sFolder(?:AliasType|Icon(?:Resource)?|Type))|lightThenPause)|v(?:entOverlapO(?:ffSelector|nSelector)|ious(?:Body|WindowGroup)))|i(?:nt(?:Monitor(?:DocsFolder(?:AliasType|Type)|FolderIcon(?:Resource)?)|er(?:D(?:escriptionFolder(?:Icon|Type)|riverFolder(?:Icon|Type))|sFolderType)|ingPlugInsFolderType)|v(?:ateF(?:olderIcon(?:Resource)?|rameworksFolderType)|ilegeViolationException))|o(?:c(?:DescriptorIs(?:Absolute|Index|ProcPtr|Relative)|ess(?:DictionaryIncludeAllInformationMask|TransformTo(?:BackgroundApplication|ForegroundApplication|UIElementApplication)|orTempRoutineRequiresMPLib2))|gramTargetLevel_(?:Minus(?:2(?:0dB|3dB)|31dB)|None)|portional(?:CJKRomanSelector|IdeographsSelector|KanaSelector|NumbersSelector|TextSelector)|t(?:ected(?:ApplicationFolderIcon|SystemFolderIcon)|ocolKCItemAttr)))|ublic(?:Folder(?:Icon|Type)|KeyHashKCItemAttr|ThemeFontCount))|Q(?:D(?:C(?:orruptPICTDataErr|ursor(?:AlreadyRegistered|NotRegistered))|No(?:ColorHWCursorSupport|Palette))|LPreviewPDF(?:PagesWithThumbnailsOn(?:LeftStyle|RightStyle)|StandardStyle)|TSSUnknownErr|u(?:arterWidth(?:NumbersSelector|TextSelector)|estionMarkIcon|i(?:ck(?:LookFolderType|Time(?:ComponentsFolderType|ExtensionsFolderType))|t(?:AtNormalTimeMask|Before(?:FBAsQuitMask|NormalTimeMask|ShellQuitsMask|TerminatorAppQuitsMask)|N(?:everMask|otQuitDuring(?:InstallMask|LogoutMask))|OptionsMask))))|R(?:A(?:ATalkInactive|C(?:allBackFailed|on(?:figurationDBInitErr|nectionCanceled))|DuplicateIPAddr|ExtAuthenticationFailed|In(?:compatiblePrefs|itOpenTransportFailed|stallationDamaged|ternalError|valid(?:P(?:a(?:rameter|ssword)|ort(?:State)?)|SerialProtocol))|MissingResources|N(?:CPRejectedbyPeer|ot(?:Connected|Enabled|PrimaryInterface|Supported))|OutOfMemory|P(?:PP(?:AuthenticationFailed|NegotiationFailed|P(?:eerDisconnected|rotocolRejected)|UserDisconnected)|eerNotResponding|ort(?:Busy|SetupFailed))|RemoteAccessNotReady|StartupFailed|TCPIP(?:Inactive|NotConfigured)|U(?:nknown(?:PortState|User)|ser(?:InteractionRequired|LoginDisabled|Pwd(?:ChangeRequired|EntryRequired))))|a(?:dioButtonDialogItem|ndomParam_(?:Bound(?:A|B)|Curve)|reLigaturesO(?:ffSelector|nSelector))|dPermKCStatus|e(?:ad(?:ExtensionTermsMask|FailureErr|OnlyMemoryException|Reference|yThreadState)|busPicturesO(?:ffSelector|nSelector)|cent(?:ApplicationsFolder(?:Icon|Type)|DocumentsFolder(?:Icon|Type)|ItemsIcon|ServersFolder(?:Icon|Type))|d(?:irectedRelativeFolder|rawHighlighting)|gister(?:A(?:0|1|2|3|4|5|6)|Based|D(?:0|1|2|3|4|5|6|7)|Parameter(?:Mask|Phase|Size(?:Phase|Width)|W(?:hich(?:Phase|Width)|idth))|ResultLocation(?:Phase|Width))|lativeFolder|nderQuality_(?:High|Low|M(?:ax|edium|in))|quiredLigaturesO(?:ffSelector|nSelector)|s(?:FileNotOpened|o(?:lveAlias(?:FileNoUI|TryFileIDFirst)|urceControlDialogItem)|ultSize(?:Mask|Phase|Width))|turn(?:CharCode|Next(?:Group|U(?:G|ser)))|verb(?:2Param_(?:D(?:ecayTimeAt(?:0Hz|Nyquist)|ryWetMix)|Gain|M(?:axDelayTime|inDelayTime)|RandomizeReflections)|Param_(?:DryWetMix|Filter(?:Bandwidth|Enable|Frequency|Gain|Type)|Large(?:Brightness|De(?:lay(?:Range)?|nsity)|Size)|Modulation(?:Depth|Rate)|PreDelay|Small(?:Brightness|De(?:layRange|nsity)|LargeMix|Size))|RoomType_(?:Cathedral|Large(?:Chamber|Hall(?:2)?|Room(?:2)?)|Medium(?:Chamber|Hall(?:2|3)?|Room)|Plate|SmallRoom)))|ight(?:ArrowCharCode|ContainerArrowIcon|ToLeft)|o(?:gerBeepParam_(?:InGateThreshold(?:Time)?|OutGateThreshold(?:Time)?|Roger(?:Gain|Type)|Sensitivity)|lloverIconVariant|man(?:NumeralAnnotationSelector|izationTo(?:HiraganaSelector|KatakanaSelector))|otFolder|u(?:nd(?:TripAACParam_(?:BitRate|CompressedFormatSampleRate|EncodingStrategy|Format|Quality|RateOrQuality)|WindowDefinition|edBoxAnnotationSelector)|tin(?:e(?:DescriptorVersion|Is(?:DispatchedDefaultRoutine|NotDispatchedDefaultRoutine))|gResource(?:ID|Type))))|srcChain(?:AboveA(?:llMaps|pplicationMap)|Below(?:ApplicationMap|SystemMap))|u(?:byKana(?:O(?:ffSelector|nSelector)|Selector|Type)|nningThreadState))|S(?:C(?:BondStatus(?:LinkInvalid|No(?:Partner|tInActiveGroup)|OK|Unknown)|Network(?:Connection(?:Connect(?:ed|ing)|Disconnect(?:ed|ing)|Invalid|PPP(?:Authenticating|Connect(?:ed|ingLink)|Di(?:alOnTraffic|sconnect(?:ed|ingLink))|HoldingLinkOff|Initializing|Negotiating(?:Link|Network)|Suspended|Terminating|WaitingFor(?:CallBack|Redial)))|Flags(?:Connection(?:Automatic|Required)|I(?:nterventionRequired|s(?:Direct|LocalAddress))|Reachable|TransientConnection)|ReachabilityFlags(?:Connection(?:Automatic|On(?:Demand|Traffic)|Required)|I(?:nterventionRequired|s(?:Direct|LocalAddress|WWAN))|Reachable|TransientConnection))|PreferencesNotification(?:Apply|Commit)|Status(?:AccessError|Connection(?:Ignore|NoService)|Failed|InvalidArgument|KeyExists|Locked|MaxLink|N(?:eedLock|o(?:ConfigFile|Key|Link|PrefsSession|StoreSe(?:rver|ssion)|tifierActive))|OK|PrefsBusy|ReachabilityUnknown|Stale))|FNTLookup(?:S(?:egment(?:Array|Single)|i(?:mpleArray|ngleTable))|TrimmedArray|Vector)|K(?:DocumentState(?:AddPending|DeletePending|Indexed|NotIndexed)|Index(?:Inverted(?:Vector)?|Unknown|Vector)|Search(?:BooleanRanked|Option(?:Default|FindSimilar|NoRelevanceScores|SpaceMeansOR)|PrefixRanked|R(?:anked|equiredRanked)))|MPTETime(?:Running|Type(?:2(?:398|4|5|997(?:Drop)?)|30(?:Drop)?|5(?:0|994(?:Drop)?)|60(?:Drop)?)|Unknown|Valid)|O(?:AP(?:1999Schema|2001Schema)|CKS5NoAcceptableMethod)|R(?:A(?:lready(?:Finished|Listening|Released)|utoFinishingParam)|B(?:ad(?:Parameter|Selector)|lock(?:Background|Modally)|ufferTooSmall)|C(?:a(?:llBackParam|n(?:celOnSoundOut|ned22kHzSpeechSource|t(?:Add|GetProperty|ReadLanguageObject|Set(?:DuringRecognition|Property))))|leanupOnClientExit|omponentNotFound)|Default(?:Re(?:cognitionSystemID|jectionLevel)|SpeechSource)|E(?:nabled|xpansionTooDeep)|F(?:eedback(?:AndListeningModes|NotAvail)|oregroundOnly)|Has(?:FeedbackHasListenModes|NoSubItems)|I(?:dleRecognizer|nternalError)|Key(?:Expected|Word)|L(?:MObjType|anguageModel(?:Format|T(?:ooBig|ype))|i(?:stenKey(?:Combo|Mode|Name)|veDesktopSpeechSource))|M(?:odelMismatch|ustCancelSearch)|No(?:ClientLanguageModel|Feedback(?:HasListenModes|NoListenModes)|PendingUtterances|t(?:A(?:RecSystem|SpeechObject|vailable)|FinishedWithRejection|ImplementedYet|ListeningState|if(?:icationParam|yRecognition(?:Beginning|Done))))|O(?:ptional|therRecAlreadyModal|utOfMemory)|P(?:a(?:ramOutOfRange|th(?:Format|Type))|endingSearch|hrase(?:Format|Type))|Re(?:adAudio(?:FSSpec|URL)|cognition(?:Canceled|Done)|fCon|ject(?:able|edWord|ionLevel)|peatable)|S(?:earch(?:InProgress|StatusParam|WaitForAllClients)|ndInSourceDisconnected|oundInVolume|pe(?:edVsAccuracyParam|lling)|ubItemNotFound)|T(?:EXTFormat|ooManyElements)|Use(?:PushToTalk|ToggleListen)|W(?:ants(?:AutoFBGestures|ResultTextDrawn)|ord(?:NotFound|Type)))|S(?:LCiphersuiteGroup(?:ATS(?:Compatibility)?|Compatibility|Default|Legacy)|p(?:CantInstallErr|InternalErr|ParallelUpVectorErr|ScaleToZeroErr|VersionErr))|T(?:Class(?:DeletedGlyph|EndOf(?:Line|Text)|OutOfBounds)|KCrossStreamReset|LigActionMask|MarkEnd|NoAdvance|RearrVerbMask|SetMark|XHasLigAction)|c(?:heduledAudioSliceFlag_(?:BeganToRender(?:Late)?|Complete|Interrupt(?:AtLoop)?|Loop)|ientificInferiorsSelector|r(?:ap(?:ClearNamedScrap|Flavor(?:Mask(?:None|SenderOnly|Translated)|SizeUnknown|Type(?:Movie|Picture|Sound|Text(?:Style)?|U(?:TF16External|nicode(?:Style)?)))|GetNamedScrap|ReservedFlavorType)|eenSaversFolderType|ipt(?:CodeKCItemAttr|ingAdditionsFolder(?:Icon|Type)|sFolder(?:Icon|Type))|oll(?:Bars(?:AlwaysActive|SyncWithFocus)|Window(?:EraseToPortBackground|Invalidate|NoOptions))))|e(?:c(?:3DES192|A(?:ES(?:1(?:28|92)|256)|ccountItemAttr|dd(?:Event(?:Mask)?|ressItemAttr)|lias|uthenticationType(?:Any|D(?:PA|efault)|HT(?:MLForm|TP(?:Basic|Digest))|ItemAttr|MSN|NTLM|RPA))|C(?:S(?:BasicValidateOnly|C(?:alculateCMSDigest|heck(?:AllArchitectures|GatekeeperArchitectures|NestedCode|TrustedAnchors)|on(?:siderExpiration|tentInformation))|D(?:e(?:dicatedHost|faultFlags)|oNotValidate(?:Executable|Resources)|ynamicInformation)|EnforceRevocationChecks|FullReport|GenerateGuestHash|InternalInformation|NoNetworkAccess|QuickCheck|Re(?:portProgress|quirementInformation|strict(?:S(?:idebandData|ymlinks)|ToAppLike))|S(?:i(?:gningInformation|ngleThreaded)|kipResourceDirectory|trictValidate)|Use(?:AllArchitectures|SoftwareSigningCert)|ValidatePEH)|ert(?:EncodingItemAttr|TypeItemAttr|ificate(?:Encoding|ItemClass|Type))|o(?:deS(?:ignature(?:Adhoc|Enforcement|Force(?:Expiration|Hard|Kill)|H(?:ashSHA(?:1|256(?:Truncated)?|384|512)|ost)|LibraryValidation|NoHash|R(?:estrict|untime))|tatus(?:Debugged|Hard|Kill|Platform|Valid))|mmentItemAttr)|r(?:e(?:at(?:ionDateItemAttr|orItemAttr)|dentialType(?:Default|NoUI|WithUI))|l(?:Encoding|Type))|ustomIconItemAttr)|De(?:fault(?:ChangedEvent(?:Mask)?|KeySize)|leteEvent(?:Mask)?|s(?:criptionItemAttr|ignatedRequirementType))|EveryEventMask|Format(?:BSAFE|NetscapeCertSequence|OpenSSL|P(?:EMSequence|KCS(?:12|7))|RawKey|SSH(?:v2)?|Unknown|Wrapped(?:LSH|OpenSSL|PKCS8|SSH)|X509Cert)|G(?:eneric(?:ItemAttr|PasswordItemClass)|uestRequirementType)|Ho(?:norRoot|stRequirementType)|I(?:n(?:ternetPasswordItemClass|v(?:alidRequirementType|isibleItemAttr))|ssuerItemAttr|tem(?:PemArmour|Type(?:Aggregate|Certificate|P(?:rivateKey|ublicKey)|SessionKey|Unknown)))|Key(?:A(?:l(?:ias|waysSensitive)|pplicationTag)|De(?:crypt|rive)|E(?:ffectiveKeySize|n(?:crypt|dDate)|xtractable)|ImportOnlyOne|Key(?:C(?:lass|reator)|SizeInBits|Type)|Label|Modifiable|N(?:everExtractable|oAccessControl)|P(?:ermanent|ri(?:ntName|vate))|S(?:e(?:curePassphrase|nsitive)|ign(?:Recover)?|tartDate)|U(?:nwrap|sage(?:All|C(?:RLSign|ontentCommitment|ritical)|D(?:ataEncipherment|ecipherOnly|igitalSignature)|EncipherOnly|Key(?:Agreement|CertSign|Encipherment)|NonRepudiation|Unspecified))|Verify(?:Recover)?|Wrap|chain(?:ListChanged(?:Event|Mask)|Prompt(?:Invalid(?:Act)?|RequirePassphase|Unsigned(?:Act)?)))|L(?:abelItemAttr|ibraryRequirementType|ockEvent(?:Mask)?)|M(?:atchBits|odDateItemAttr)|N(?:egativeItemAttr|oGuest)|OptionReserved|P(?:a(?:dding(?:None|OAEP|PKCS1(?:MD(?:2|5)|SHA(?:1|2(?:24|56)|384|512))?|SigRaw)|sswordChangedEvent(?:Mask)?|thItemAttr)|luginRequirementType|ortItemAttr|r(?:eferencesDomain(?:Common|Dynamic|System|User)|ivateKeyItemClass|otocol(?:ItemAttr|Type(?:A(?:FP|ny|ppleTalk)|C(?:IFS|VSpserver)|DAAP|EPPC|FTP(?:Account|Proxy|S)?|HTTP(?:Proxy|S(?:Proxy)?)?|I(?:MAP(?:S)?|PP|RC(?:S)?)|LDAP(?:S)?|NNTP(?:S)?|POP3(?:S)?|RTSP(?:Proxy)?|S(?:M(?:B|TP)|OCKS|SH|VN)|Telnet(?:S)?)))|ublicKey(?:HashItemAttr|ItemClass))|R(?:SAM(?:ax|in)|e(?:adPermStatus|quirementTypeCount|vocation(?:CRLMethod|NetworkAccessDisabled|OCSPMethod|PreferCRL|RequirePositiveResponse|UseAnyAvailableMethod)))|S(?:criptCodeItemAttr|e(?:curityDomainItemAttr|r(?:ialNumberItemAttr|v(?:erItemAttr|iceItemAttr)))|ignatureItemAttr|ubject(?:ItemAttr|KeyIdentifierItemAttr)|ymmetricKeyItemClass)|T(?:r(?:ansform(?:Error(?:A(?:bort(?:InProgress|ed)|ttributeNotFound)|Invalid(?:Algorithm|Connection|Input(?:Dictionary)?|Length|Operation|Type)|M(?:issingParameter|oreThanOneOutput)|N(?:ameAlreadyRegistered|otInitializedCorrectly)|UnsupportedAttribute)|Invalid(?:Argument|Override)|MetaAttribute(?:CanCycle|Deferred|Externalize|Has(?:InboundConnection|OutboundConnections)|Name|Re(?:f|quire(?:d|sOutboundConnection))|Stream|Value)|OperationNotSupportedOnGroup|TransformIs(?:Executing|NotRegistered))|ust(?:Option(?:AllowExpired(?:Root)?|FetchIssuerFromNet|ImplicitAnchors|LeafIsCA|RequireRevPerCert|UseTrustSettings)|Result(?:Deny|FatalTrustFailure|Invalid|OtherError|Proceed|RecoverableTrustFailure|Unspecified)|Settings(?:ChangedEvent(?:Mask)?|Domain(?:Admin|System|User)|KeyUse(?:Any|EnDecrypt(?:Data|Key)|KeyExchange|Sign(?:Cert|Revocation|ature))|Result(?:Deny|Invalid|Trust(?:AsRoot|Root)|Unspecified))))|ypeItemAttr)|U(?:nlock(?:Event(?:Mask)?|StateStatus)|pdateEvent(?:Mask)?|seOnly(?:GID|UID))|VolumeItemAttr|WritePermStatus|ondScale|p(?:192r1|256r1|384r1|521r1)|urityDomainKCItemAttr)|lector(?:All(?:1BitData|32BitData|4BitData|8BitData|AvailableData|HugeData|LargeData|MiniData|SmallData)|Huge(?:1Bit|32Bit|4Bit|8Bit(?:Mask)?)|Large(?:1Bit|32Bit|4Bit|8Bit(?:Mask)?)|Mini(?:1Bit|4Bit|8Bit)|Small(?:1Bit|32Bit|4Bit|8Bit(?:Mask)?)|sAre(?:Indexable|NotIndexable))|quenceTrackProperty_(?:AutomatedParameters|LoopInfo|MuteStatus|OffsetTime|SoloStatus|T(?:imeResolution|rackLength))|r(?:ialNumberKCItemAttr|v(?:erKCItemAttr|ice(?:KCItemAttr|sFolderType)))|t(?:CLUT(?:ByValue|Immediately|WithLuminance)|DebugOption|FrontProcess(?:CausedByUser|FrontWindowOnly)|PowerLevel))|h(?:a(?:dowDialogVariantCode|r(?:ed(?:BadgeIcon|Folder(?:AliasType|Icon(?:Resource)?)|LibrariesFolder(?:Icon|Type)|UserDataFolderType)|ingPrivs(?:NotApplicableIcon|Read(?:OnlyIcon|WriteIcon)|UnknownIcon|WritableIcon)))|eet(?:AlertWindowClass|WindowClass)|ift(?:JIS_(?:BasicVariant|DOSVariant|MusicCDVariant)|Unicode)|o(?:rtcutIcon|w(?:DiacriticsSelector|HideInputWindow))|utdown(?:FolderType|Items(?:DisabledFolder(?:Icon|Type)|FolderIcon)))|i(?:deFloaterVariantCode|gn(?:KCItemAttr|atureKCItemAttr)|mpl(?:eWindowClass|ifiedCharactersSelector))|l(?:ash(?:ToDivideO(?:ffSelector|nSelector)|edZeroO(?:ffSelector|nSelector))|eep(?:De(?:mand|ny)|Now|Re(?:quest|voke)|Unlock|WakeUp))|ma(?:ll(?:1BitMask|32BitData|4Bit(?:Data|IconSize)|8Bit(?:Data|IconSize|Mask)|CapsSelector|IconSize)|rt(?:QuotesO(?:ffSelector|nSelector)|SwashType))|o(?:rt(?:AscendingIcon|DescendingIcon)|und(?:FileIcon|SetsFolderType))|p(?:a(?:ceCharCode|tial(?:Mixer(?:AttenuationCurve_(?:Exponential|Inverse|Linear|Power)|Param_(?:Azimuth|Distance|E(?:levation|nable)|G(?:ain|lobalReverbGain)|M(?:axGain|inGain)|O(?:bstructionAttenuation|cclusionAttenuation)|PlaybackRate|ReverbBlend)|RenderingFlags_(?:DistanceAttenuation|InterAuralDelay))|izationAlgorithm_(?:EqualPowerPanning|HRTF(?:HQ)?|S(?:oundField|phericalHead|tereoPassThrough)|VectorBasedPanning)))|e(?:ak(?:ableItemsFolder(?:Type)?|erConfiguration_(?:5_(?:0|1)|HeadPhones|Quad|Stereo))|cial(?:Case(?:CaretHook|DrawHook|EOLHook|GNEFilterProc|Hi(?:ghHook|tTestHook)|MBarHook|NWidthHook|ProtocolHandler|S(?:elector(?:Mask|Phase|Width)|ocketListener)|T(?:E(?:DoText|FindWord|Recalc)|extWidthHook)|WidthHook)?|Folder)|ech(?:FolderType|GenerateTune|InputMethodClass|Relative(?:Duration|Pitch)|ShowSyllables))|otlight(?:ImportersFolderType|MetadataCacheFolderType|SavedSearchesFolderType))|quaredLigaturesO(?:ffSelector|nSelector)|t(?:a(?:ck(?:DispatchedPascalStackBased|OverflowException|Parameter(?:Mask|Phase|Width))|ndardWindowDefinition|rt(?:DateKCItemAttr|up(?:Folder(?:AliasType|IconResource|Type)|Items(?:DisabledFolder(?:Icon|Type)|FolderIcon)))|ti(?:cTextDialogItem|oneryFolderType))|d(?:AlertDoNot(?:AnimateOn(?:Cancel|Default|Other)|CloseOnHelp|DisposeSheet)|C(?:FStringAlertVersion(?:One|Two)|ancelItemIndex)|OkItemIndex)|ereoMixerParam_(?:P(?:an|ost(?:AveragePower|PeakHoldLevel)|re(?:AveragePower|PeakHoldLevel))|Volume)|illIdle|o(?:p(?:Icon|pedThreadState)|red(?:BasicWindowDescriptionID|Window(?:PascalTitleID|SystemTag|TitleCFStringID)))|yl(?:eOptionsType|isticAlt(?:E(?:ight(?:O(?:ffSelector|nSelector)|eenO(?:ffSelector|nSelector))|levenO(?:ffSelector|nSelector))|F(?:i(?:fteenO(?:ffSelector|nSelector)|veO(?:ffSelector|nSelector))|our(?:O(?:ffSelector|nSelector)|teenO(?:ffSelector|nSelector)))|Nine(?:O(?:ffSelector|nSelector)|teenO(?:ffSelector|nSelector))|OneO(?:ffSelector|nSelector)|S(?:even(?:O(?:ffSelector|nSelector)|teenO(?:ffSelector|nSelector))|ix(?:O(?:ffSelector|nSelector)|teenO(?:ffSelector|nSelector)))|T(?:enO(?:ffSelector|nSelector)|h(?:irteenO(?:ffSelector|nSelector)|reeO(?:ffSelector|nSelector))|w(?:e(?:lveO(?:ffSelector|nSelector)|ntyO(?:ffSelector|nSelector))|oO(?:ffSelector|nSelector)))|ernativesType)))|u(?:b(?:jectKCItemAttr|stituteVerticalFormsO(?:ffSelector|nSelector))|p(?:eriorsSelector|ports(?:FileTranslation|ScrapTranslation))|spend(?:Demand|Re(?:quest|voke)|Wake(?:ToDoze|Up)))|washAlternatesO(?:ffSelector|nSelector)|y(?:m(?:Link(?:Creator|FileType)|bolLigaturesO(?:ffSelector|nSelector))|s(?:SWTooOld|tem(?:ControlPanelFolderType|D(?:esktopFolderType|omain)|E(?:ventKCEventMask|xtensionDisabledFolder(?:Icon|Type))|Folder(?:AliasType|Icon(?:Resource)?|Type)|IconsCreator|KCEvent|P(?:PDDomain|r(?:eferencesFolderType|ocess))|ResFile|S(?:ound(?:ID_(?:FlashScreen|UserPreferredAlert|Vibrate)|sFolderType)|uitcaseIcon)|TrashFolderType))))|T(?:EC(?:A(?:dd(?:F(?:allbackInterrupt(?:Bit|Mask)|orceASCIIChanges(?:Bit|Mask))|TextRunHeuristics(?:Bit|Mask))|rrayFullErr|vailable(?:EncodingsResType|SniffersResType))|B(?:adTextRunErr|ufferBelowMinimumSizeErr)|C(?:hinesePluginSignature|o(?:nversionInfoResType|rruptConverterErr))|Di(?:rectionErr|sable(?:Fallbacks(?:Bit|Mask)|LooseMappings(?:Bit|Mask)))|FallbackTextLengthFix(?:Bit|Mask)|GlobalsUnavailableErr|I(?:n(?:completeElementErr|foCurrentFormat|ternetName(?:DefaultUsageMask|StrictUsageMask|TolerantUsageMask|sResType))|temUnavailableErr)|JapanesePluginSignature|K(?:eepInfoFix(?:Bit|Mask)|oreanPluginSignature)|M(?:ailEncodingsResType|issingTableErr)|N(?:eedFlushStatus|oConversionPathErr)|OutputBufferFullStatus|P(?:artialCharErr|lugin(?:Creator|DispatchTable(?:CurrentVersion|Version1(?:_(?:1|2))?)|ManyToOne|OneTo(?:Many|One)|SniffObj|Type)|referredEncodingFix(?:Bit|Mask))|ResourceID|S(?:ignature|ubTextEncodingsResType)|T(?:able(?:ChecksumErr|FormatErr)|ext(?:RunBitClearFix(?:Bit|Mask)|ToUnicodeScanFix(?:Bit|Mask)))|U(?:n(?:icodePluginSignature|mappableElementErr)|sedFallbacksStatus)|WebEncodingsResType|_MIBEnumDontCare)|MTaskActive|RAK(?:CurrentVersion|Tag|UniformFormat)|SM(?:15Version|2(?:0Version|2Version|3Version|4Version)|Doc(?:Access(?:EffectiveRangeAttribute(?:Bit)?|FontSizeAttribute(?:Bit)?)|ument(?:EnabledInputSourcesPropertyTag|Input(?:ModePropertyTag|SourceOverridePropertyTag)|Property(?:SupportGlyphInfo|UnicodeInputWindow)|RefconPropertyTag|Support(?:DocumentAccessPropertyTag|GlyphInfoPropertyTag)|T(?:SMTEPropertyTag|extServicePropertyTag)|U(?:nicode(?:InputWindowPropertyTag|PropertyTag)|seFloatingWindowPropertyTag)|WindowLevelPropertyTag))|Hilite(?:BlockFillText|C(?:aretPosition|onvertedText)|NoHilite|OutlineText|RawText|Selected(?:ConvertedText|RawText|Text))|InsideOf(?:ActiveInputArea|Body)|OutsideOfBody|TEDocumentInterfaceType|Version)|XN(?:A(?:IFFFile|TSUI(?:Font(?:FeaturesAttribute|VariationsAttribute)|IsNotInstalledErr|Style(?:Continuous(?:Bit|Mask)|Size)?)|l(?:ign(?:CenterAction|LeftAction|RightAction)|lCountMask|readyInitializedErr|waysWrapAtViewEdge(?:Bit|Mask))|ttributeTagInvalidForRunErr|uto(?:Indent(?:O(?:ff|n)|StateTag)|Scroll(?:BehaviorTag|InsertionIntoView|Never|WhenInsertionVisible)|Wrap))|Ba(?:ckgroundTypeRGB|dDefaultFileTypeWarning)|C(?:annot(?:AddFrameErr|SetAutoIndentErr|TurnTSMOffWhenUsingUnicodeErr)|enter(?:Tab)?|hange(?:Font(?:Action|ColorAction|SizeAction)|StyleAction)|lear(?:Action|Th(?:eseFontFeatures|isControl))|o(?:lorContinuous(?:Bit|Mask)|pyNotAllowedInEchoModeErr)|utAction)|D(?:ataTypeNotAllowedErr|e(?:crementTypeSize|stinationRectKey)|isable(?:DragAndDrop(?:Bit|Mask|Tag)?|LayoutAndDraw(?:Tag)?|dFunctionalityErr)|o(?:FontSubstitution(?:Bit|Mask)?|NotInstallDragProcs(?:Bit|Mask)|nt(?:CareTypeS(?:ize|tyle)|Draw(?:CaretWhenInactive(?:Bit|Mask)?|SelectionWhenInactive(?:Bit|Mask)?)))|r(?:aw(?:CaretWhenInactive(?:Tag)?|GrowIcon(?:Bit|Mask)|Item(?:AllMask|Scrollbars(?:Bit|Mask)|Text(?:AndSelection(?:Bit|Mask)|Bit|Mask))|SelectionWhenInactive(?:Tag)?)|opAction))|En(?:able(?:DragAndDrop|LayoutAndDraw)|d(?:IterationErr|Offset)|tireWord(?:Bit|Mask))|F(?:l(?:attenMoviesTag|ush(?:Default|Left|Right))|o(?:nt(?:Continuous(?:Bit|Mask)|FeatureAction|SizeAttributeSize|VariationAction)|rceFullJust)|ullJust)|Horizontal(?:ScrollBarRectKey)?|I(?:OPrivilegesTag|gnoreCase(?:Bit|Mask)|llegalToCrossDataBoundariesErr|mageWithQD(?:Bit|Mask)|n(?:crementTypeSize|lineStateTag|valid(?:FrameIDErr|RunIndex)))|JustificationTag|L(?:eftT(?:ab|oRight)|in(?:eDirectionTag|k(?:NotPressed|Tracking|WasPressed)))|M(?:a(?:cOSEncoding|rginsTag)|o(?:nostyledText(?:Bit|Mask)|veAction)|ultiple(?:FrameType|StylesPerTextDocumentResType))|No(?:A(?:ppleEventHandlers(?:Bit|Mask)|utoWrap)|FontVariations|MatchErr|Selection(?:Bit|Mask)|TSMEver(?:Bit|Mask)|UserIOTag)|O(?:perationNotAllowedErr|utsideOf(?:FrameErr|LineErr))|Pa(?:geFrameType|steAction)|QDFont(?:ColorAttribute(?:Size)?|FamilyIDAttribute(?:Size)?|NameAttribute(?:Size)?|S(?:izeAttribute(?:Size)?|tyleAttribute(?:Size)?))|R(?:e(?:ad(?:Only(?:Bit|Mask)?|Write)|fConTag|startAppleEventHandlers(?:Bit|Mask))|i(?:chTextFormatData|ghtT(?:ab|oLeft))|un(?:Count(?:Bit|Mask)|IndexOutofBoundsErr))|S(?:aveStylesAsSTYLResource(?:Bit|Mask)|crollUnitsIn(?:Lines|Pixels|ViewRects)|election(?:O(?:ff|n)|StateTag)|how(?:End|Start|Window(?:Bit|Mask))|i(?:ngle(?:L(?:evelUndoTag|ineOnly(?:Bit|Mask))|StylePerTextDocumentResType)|zeContinuous(?:Bit|Mask))|omeOrAllTagsInvalidForRunErr|t(?:artOffset|yleContinuous(?:Bit|Mask))|upport(?:EditCommand(?:Processing|Updating)|FontCommand(?:Processing|Updating)|SpellCheckCommand(?:Processing|Updating))|ystemDefaultEncoding)|T(?:abSettingsTag|ext(?:Data|E(?:ditStyleFrameType|ncodingAttribute(?:Size)?)|File|InputCount(?:Bit|Mask)|RectKey|ensionFile)|ypingAction)|U(?:RLAttribute|n(?:doLastAction|icode(?:Encoding|Text(?:Data|File)))|se(?:Bottomline|C(?:arbonEvents|urrentSelection)|EncodingWordRules(?:Bit|Mask)|Inline|QDforImaging(?:Bit|Mask)|ScriptDefaultValue|rCanceledOperationErr))|V(?:ertical(?:ScrollBarRectKey)?|i(?:ewRectKey|sibilityTag))|W(?:ant(?:HScrollBar(?:Bit|Mask)|VScrollBar(?:Bit|Mask))|illDefaultTo(?:ATSUI(?:Bit|Mask)|CarbonEvent(?:Bit|Mask))|ordWrapStateTag))|a(?:bCharCode|llCapsSelector|sk(?:CreationException|TerminationException))|e(?:mporary(?:FolderType|ItemsIn(?:CacheDataFolderType|UserDomainFolderType))|xt(?:Center|Encoding(?:ANSEL|B(?:aseName|ig5(?:_(?:E|HKSCS_1999))?)|CNS_11643_92_P(?:1|2|3)|D(?:OS(?:Arabic|BalticRim|C(?:anadianFrench|hinese(?:Simplif|Trad)|yrillic)|Greek(?:1|2)?|Hebrew|Icelandic|Japanese|Korean|Latin(?:1|2|US)|Nordic|Portuguese|Russian|T(?:hai|urkish))|efault(?:Format|Variant))|E(?:BCDIC_(?:CP037|LatinCore|US)|UC_(?:CN|JP|KR|TW))|F(?:ormatName|ullName)|GB(?:K_95|_(?:18030_200(?:0|5)|2312_80))|HZ_GB_2312|ISO(?:10646_1993|Latin(?:1(?:0)?|2|3|4|5|6|7|8|9|Arabic|Cyrillic|Greek|Hebrew)|_2022_(?:CN(?:_EXT)?|JP(?:_(?:1|2|3))?|KR))|JIS_(?:C6226_78|X02(?:0(?:1_76|8_(?:83|90))|1(?:2_90|3_MenKuTen)))|K(?:OI8_(?:R|U)|SC_5601_(?:87|92_Johab))|M(?:ac(?:Ar(?:abic|menian)|B(?:engali|urmese)|C(?:e(?:ltic|ntralEurRoman)|hinese(?:Simp|Trad)|roatian|yrillic)|D(?:evanagari|ingbats)|E(?:astEurRoman|thiopic|xtArabic)|Farsi|G(?:aelic|e(?:ez|orgian)|reek|u(?:jarati|rmukhi))|H(?:FS|ebrew)|I(?:celandic|nuit)|Japanese|K(?:annada|eyboardGlyphs|hmer|orean)|Laotian|M(?:alayalam|ongolian)|Oriya|R(?:Symbol|oman(?:Latin1|ian)?)|S(?:i(?:mpChinese|nhalese)|ymbol)|T(?:amil|elugu|hai|ibetan|radChinese|urkish)|U(?:krainian|ni(?:code|nterp))|V(?:T100|ietnamese))|ultiRun)|NextStep(?:Japanese|Latin)|ShiftJIS(?:_X0213(?:_00)?)?|U(?:S_ASCII|n(?:icode(?:Default|V(?:1(?:0_0|1_0|2_1|_1)|2_(?:0|1)|3_(?:0|1|2)|4_0|5_(?:0|1)|6_(?:0|1|3)|7_0|8_0|9_0))|known))|V(?:ISCII|ariantName)|Windows(?:A(?:NSI|rabic)|BalticRim|Cyrillic|Greek|Hebrew|KoreanJohab|Latin(?:1|2|5)|Vietnamese)|sFolder(?:Icon|Type))|Flush(?:Default|Left|Right)|LanguageDontCare|MalformedInputErr|RegionDontCare|S(?:criptDontCare|ervice(?:Class|DocumentInterfaceType|InputModePropertyTag|JaTypingMethodPropertyTag)?|pacingType)|ToSpeech(?:SynthType|Voice(?:BundleType|FileType|Type))|Un(?:definedElementErr|supportedEncodingErr)))|h(?:eme(?:A(?:ctive(?:Alert(?:BackgroundBrush|TextColor)|BevelButtonTextColor|D(?:ialog(?:BackgroundBrush|TextColor)|ocumentWindowTitleTextColor)|M(?:enuItemTextColor|o(?:delessDialog(?:BackgroundBrush|TextColor)|vableModalWindowTitleTextColor))|P(?:lacardTextColor|opup(?:ArrowBrush|ButtonTextColor|LabelTextColor|WindowTitleColor)|ushButtonTextColor)|RootMenuTextColor|ScrollBarDelimiterBrush|UtilityWindow(?:BackgroundBrush|TitleTextColor)|WindowHeaderTextColor)|dornment(?:Arrow(?:Do(?:ubleArrow|wnArrow)|LeftArrow|RightArrow|UpArrow)|D(?:efault|rawIndicatorOnly)|Focus|Header(?:Button(?:LeftNeighborSelected|NoS(?:hadow|ortArrow)|RightNeighborSelected|S(?:hadowOnly|ortUp))|MenuButton)|No(?:Shadow|ne)|RightToLeft|ShadowOnly)|l(?:ert(?:HeaderFont|Window)|iasArrowCursor)|pp(?:earanceFileNameTag|l(?:eGuideCoachmarkBrush|icationFont))|rrow(?:3pt|5pt|7pt|9pt|Button(?:Mini|Small)?|Cursor|Down|Left|Right|Up))|B(?:ackground(?:ListViewWindowHeader|Metal|Placard|SecondaryGroupBox|TabPane|WindowHeader)|evelButton(?:Inset|Large|Medium|Small)?|ottom(?:InsideArrowPressed|OutsideArrowPressed|TrackPressed)|rush(?:A(?:ctiveAreaFill|l(?:ertBackground(?:Active|Inactive)|ternatePrimaryHighlightColor)|ppleGuideCoachmark)|B(?:evel(?:Active(?:Dark|Light)|Inactive(?:Dark|Light))|lack|utton(?:Active(?:Dark(?:Highlight|Shadow)|Light(?:Highlight|Shadow))|F(?:ace(?:Active|Inactive|Pressed)|rame(?:Active|Inactive))|Inactive(?:Dark(?:Highlight|Shadow)|Light(?:Highlight|Shadow))|Pressed(?:Dark(?:Highlight|Shadow)|Light(?:Highlight|Shadow))))|ChasingArrows|D(?:ialogBackground(?:Active|Inactive)|ocumentWindowBackground|ra(?:gHilite|werBackground))|F(?:inderWindowBackground|ocusHighlight)|IconLabelBackground(?:Selected)?|ListView(?:Background|ColumnDivider|EvenRowBackground|OddRowBackground|S(?:eparator|ortColumnBackground))|M(?:enuBackground(?:Selected)?|o(?:delessDialogBackground(?:Active|Inactive)|vableModalBackground))|NotificationWindowBackground|P(?:assiveAreaFill|opupArrow(?:Active|Inactive|Pressed)|rimaryHighlightColor)|S(?:crollBarDelimiter(?:Active|Inactive)|econdaryHighlightColor|heetBackground(?:Opaque|Transparent)?|taticAreaFill)|ToolbarBackground|UtilityWindowBackground(?:Active|Inactive)|White)|utton(?:Mixed|O(?:ff|n)))|C(?:h(?:asingArrowsBrush|eckBox(?:C(?:heckMark|lassicX)|Mini|Small)?)|losedHandCursor|o(?:mboBox(?:Mini|Small)?|nt(?:extualMenuArrowCursor|rolSoundsMask)|pyArrowCursor|unting(?:DownHandCursor|Up(?:AndDownHandCursor|HandCursor)))|rossCursor|u(?:rrentPortFont|stomThemesFileType))|D(?:ataFileType|blClickCollapseTag|e(?:faultAdornment|sktopP(?:attern(?:NameTag|Tag)|icture(?:Ali(?:asTag|gnmentTag)|NameTag)))|i(?:alogWindow|s(?:abled(?:MenuItemTextColor|RootMenuTextColor)|closure(?:Button|Down|Left|Right|Triangle)))|ocumentWindow(?:BackgroundBrush)?|ra(?:g(?:HiliteBrush|Sound(?:Dragging|Grow(?:UtilWindow|Window)|Move(?:Alert|Dialog|Icon|UtilWindow|Window)|None|S(?:crollBar(?:Arrow(?:Decreasing|Increasing)|Ghost|Thumb)|lider(?:Ghost|Thumb))))|w(?:IndicatorOnly|erWindow)))|E(?:mphasizedSystemFont|xamplePictureIDTag)|F(?:inder(?:SoundsMask|WindowBackgroundBrush)|ocus(?:Adornment|HighlightBrush))|Grow(?:Down|Left|Right|Up)|HighlightColor(?:NameTag|Tag)|I(?:BeamCursor|conLabel(?:BackgroundBrush|TextColor)|n(?:active(?:Alert(?:BackgroundBrush|TextColor)|BevelButtonTextColor|D(?:ialog(?:BackgroundBrush|TextColor)|ocumentWindowTitleTextColor)|Mo(?:delessDialog(?:BackgroundBrush|TextColor)|vableModalWindowTitleTextColor)|P(?:lacardTextColor|opup(?:ArrowBrush|ButtonTextColor|LabelTextColor|WindowTitleColor)|ushButtonTextColor)|ScrollBarDelimiterBrush|UtilityWindow(?:BackgroundBrush|TitleTextColor)|WindowHeaderTextColor)|cDecButton(?:Mini|Small)?|determinateBar(?:Large|M(?:edium|ini))?))|L(?:a(?:belFont|rge(?:BevelButton|IndeterminateBar|ProgressBar|RoundButton|TabHeight(?:Max)?))|eft(?:InsideArrowPressed|OutsideArrowPressed|TrackPressed)|ist(?:HeaderButton|View(?:BackgroundBrush|S(?:eparatorBrush|ortColumnBackgroundBrush)|TextColor)))|M(?:e(?:dium(?:BevelButton|IndeterminateBar|ProgressBar|S(?:crollBar|lider))|nu(?:Active|Bar(?:Inactive|Normal|Selected)|Disabled|Item(?:A(?:lignRight|t(?:Bottom|Top))|CmdKeyFont|Font|H(?:asIcon|ier(?:Background|archical))|MarkFont|NoBackground|P(?:lain|opUpBackground)|Scroll(?:DownArrow|UpArrow))|S(?:elected|oundsMask|quareMenuBar)|T(?:itleFont|ype(?:Hierarchical|Inactive|P(?:opUp|ullDown))))|tric(?:B(?:estListHeaderHeight|uttonRounded(?:Height|RecessedHeight))|C(?:heckBox(?:GlyphHeight|Height|Width)|omboBox(?:Large(?:BottomShadowOffset|DisclosureWidth|RightShadowOffset)|Mini(?:BottomShadowOffset|DisclosureWidth|RightShadowOffset)|Small(?:BottomShadowOffset|DisclosureWidth|RightShadowOffset)))|Disclosure(?:Button(?:Height|Size|Width)|Triangle(?:Height|Width))|EditText(?:FrameOutset|Whitespace)|FocusRectOutset|HSlider(?:Height|Tick(?:Height|Offset))|ImageWellThickness|L(?:arge(?:ProgressBarThickness|RoundButtonSize|Tab(?:CapsWidth|Height))|i(?:st(?:BoxFrameOutset|HeaderHeight)|ttleArrows(?:Height|Mini(?:Height|Width)|Small(?:Height|Width)|Width)))|M(?:enu(?:ExcludedMarkColumnWidth|I(?:conTrailingEdgeMargin|ndentWidth)|Mark(?:ColumnWidth|Indent)|Text(?:LeadingEdgeMargin|TrailingEdgeMargin))|ini(?:CheckBox(?:Height|Width)|DisclosureButton(?:Height|Width)|HSlider(?:Height|MinThumbWidth|Tick(?:Height|Offset))|P(?:opupButtonHeight|u(?:llDownHeight|shButtonHeight))|RadioButton(?:Height|Width)|Tab(?:CapsWidth|FrameOverlap|Height|Overlap)|VSlider(?:MinThumbHeight|Tick(?:Offset|Width)|Width)))|NormalProgressBarThickness|P(?:aneSplitterHeight|opupButtonHeight|r(?:imaryGroupBoxContentInset|ogressBar(?:ShadowOutset|Thickness))|u(?:llDownHeight|shButtonHeight))|R(?:adioButton(?:GlyphHeight|Height|Width)|e(?:levanceIndicatorHeight|sizeControlHeight)|ound(?:ButtonSize|TextField(?:Content(?:Height|Inset(?:Bottom|Left|Right|Top|WithIcon(?:Left|Right)))|MiniContent(?:Height|Inset(?:Bottom|Left|Right|Top|WithIcon(?:Left|Right)))|SmallContent(?:Height|Inset(?:Bottom|Left|Right|Top|WithIcon(?:Left|Right))))))|S(?:crollBar(?:MinThumb(?:Height|Width)|Overlap|Width)|e(?:condaryGroupBoxContentInset|paratorSize)|liderMinThumb(?:Height|Width)|mall(?:CheckBox(?:Height|Width)|DisclosureButton(?:Height|Width)|HSlider(?:Height|MinThumbWidth|Tick(?:Height|Offset))|P(?:aneSplitterHeight|opupButtonHeight|rogressBar(?:ShadowOutset|Thickness)|u(?:llDownHeight|shButtonHeight))|R(?:adioButton(?:Height|Width)|esizeControlHeight)|ScrollBar(?:MinThumb(?:Height|Width)|Width)|Tab(?:CapsWidth|FrameOverlap|Height|Overlap)|VSlider(?:MinThumbHeight|Tick(?:Offset|Width)|Width)))|T(?:ab(?:FrameOverlap|IndentOrStyle|Overlap)|extured(?:PushButtonHeight|SmallPushButtonHeight)|itleBarControlsHeight)|VSlider(?:Tick(?:Offset|Width)|Width)))|ini(?:CheckBox|IndeterminateBar|ProgressBar|RadioButton|S(?:crollBar|lider|ystemFont))|ovable(?:AlertWindow|DialogWindow))|N(?:ameTag|o(?:Adornment|Sounds|rmal(?:CheckBox|RadioButton)|tAllowedCursor))|OpenHandCursor|P(?:l(?:a(?:inDialogWindow|tinumFileType)|usCursor)|o(?:intingHandCursor|ofCursor|pup(?:Button(?:Mini|Normal|Small)?|Tab(?:CenterOn(?:Offset|Window)|NormalPosition)|Window))|r(?:essed(?:BevelButtonTextColor|P(?:lacardTextColor|opup(?:ArrowBrush|ButtonTextColor)|ushButtonTextColor))|ogressBar(?:Large|M(?:edium|ini))?)|ushButton(?:Font|Inset(?:Small)?|Mini|Normal|Small|Textured(?:Small)?)?)|R(?:adioButton(?:Mini|Small)?|e(?:levanceBar|size(?:DownCursor|Left(?:Cursor|RightCursor)|RightCursor|Up(?:Cursor|DownCursor)))|ight(?:InsideArrowPressed|OutsideArrowPressed|T(?:oLeftAdornment|rackPressed))|ound(?:Button(?:Help|Large)?|edBevelButton))|S(?:avvyMenuResponse|crollBar(?:Arrow(?:StyleTag|s(?:LowerRight|Single))|M(?:edium|ini)|Small|Thumb(?:Normal|Proportional|StyleTag))?|elected(?:MenuItemTextColor|RootMenuTextColor)|h(?:adowDialogWindow|eetWindow)|lider(?:M(?:edium|ini)|Small)?|m(?:all(?:BevelButton|CheckBox|EmphasizedSystemFont|RadioButton|S(?:crollBar|lider|ystemFont(?:Tag)?)|TabHeight(?:Max)?)|oothFont(?:EnabledTag|MinSizeTag))|ound(?:Alert(?:Close|Open)|B(?:alloon(?:Close|Open)|evel(?:E(?:nter|xit)|Press|Release)|utton(?:E(?:nter|xit)|Press|Release))|C(?:ancelButton(?:E(?:nter|xit)|Press|Release)|heckbox(?:E(?:nter|xit)|Press|Release)|opyDone)|D(?:efaultButton(?:E(?:nter|xit)|Press|Release)|i(?:alog(?:Close|Open)|s(?:closure(?:E(?:nter|xit)|Press|Release)|k(?:Eject|Insert)))|ragTarget(?:Drop|Hilite|Unhilite))|EmptyTrash|FinderDragO(?:ffIcon|nIcon)|L(?:aunchApp|ittleArrow(?:Dn(?:Press|Release)|E(?:nter|xit)|Up(?:Press|Release)))|M(?:askTag|enu(?:Close|Item(?:Hilite|Release)|Open))|N(?:ewItem|one)|Popup(?:E(?:nter|xit)|Press|Release|Window(?:Close|Open))|R(?:adio(?:E(?:nter|xit)|Press|Release)|e(?:ceiveDrop|solveAlias))|S(?:croll(?:Arrow(?:E(?:nter|xit)|Press|Release)|EndOfTrack|TrackPress)|electItem|lider(?:EndOfTrack|TrackPress))|T(?:ab(?:E(?:nter|xit)|Pressed|Release)|rack(?:FileType|NameTag))|UtilWin(?:C(?:lose(?:E(?:nter|xit)|Press|Release)|ollapse(?:E(?:nter|xit)|Press|Release))|DragBoundary|Zoom(?:E(?:nter|xit)|Press|Release)|dow(?:Activate|C(?:lose|ollapse(?:Down|Up))|Open|Zoom(?:In|Out)))|Window(?:Activate|C(?:lose(?:E(?:nter|xit)|Press|Release)?|ollapse(?:Down|E(?:nter|xit)|Press|Release|Up))|DragBoundary|Open|Zoom(?:E(?:nter|xit)|In|Out|Press|Release))|sEnabledTag)|p(?:ecifiedFont|inningCursor)|tate(?:Active|Disabled|Inactive|Pressed(?:Down|Up)?|Rollover|Unavailable(?:Inactive)?)|ystemFont(?:Detail(?:Emphasized)?|Tag)?)|T(?:ab(?:East|Front(?:Inactive|Unavailable)?|No(?:nFront(?:Inactive|Pressed|Unavailable)?|rth)|PaneOverlap|South|West)|extColor(?:Alert(?:Active|Inactive)|B(?:evelButton(?:Active|Inactive|Pressed|Sticky(?:Active|Inactive))|lack)|D(?:ialog(?:Active|Inactive)|ocumentWindowTitle(?:Active|Inactive))|IconLabel(?:Selected)?|ListView|M(?:enuItem(?:Active|Disabled|Selected)|o(?:delessDialog(?:Active|Inactive)|vableModalWindowTitle(?:Active|Inactive)))|Notification|P(?:lacard(?:Active|Inactive|Pressed)|opup(?:Button(?:Active|Inactive|Pressed)|Label(?:Active|Inactive)|WindowTitle(?:Active|Inactive))|ushButton(?:Active|Inactive|Pressed))|RootMenu(?:Active|Disabled|Selected)|SystemDetail|Tab(?:Front(?:Active|Inactive)|NonFront(?:Active|Inactive|Pressed))|UtilityWindowTitle(?:Active|Inactive)|W(?:hite|indowHeader(?:Active|Inactive)))|humb(?:Downward|P(?:lain|ressed)|Upward)|o(?:olbarFont|p(?:InsideArrowPressed|OutsideArrowPressed|TrackPressed))|rack(?:Active|Disabled|H(?:asFocus|ideTrack|orizontal)|Inactive|No(?:ScrollBarArrows|thingToScroll)|RightToLeft|ShowThumb|ThumbRgnIsNotGhost))|U(?:serDefinedTag|tility(?:SideWindow|Window(?:TitleFont)?))|V(?:ariant(?:BaseTintTag|NameTag)|iewsFont(?:SizeTag|Tag)?)|W(?:atchCursor|i(?:dget(?:C(?:loseBox|ollapseBox)|DirtyCloseBox|ToolbarButton|ZoomBox)|ndow(?:Has(?:C(?:loseBox|ollapseBox)|Dirty|FullZoom|Grow|HorizontalZoom|T(?:itleText|oolbarButton)|VerticalZoom)|IsCollapsed|SoundsMask|TitleFont)))|sFolderType)|i(?:nkCStackBased|rdWidth(?:NumbersSelector|TextSelector))|umbnail(?:32BitData|8BitMask))|i(?:ckScale|le(?:IconVariant|dOnScreen)|mePitchParam_(?:EffectBlend|Pitch|Rate)|tlingCapsSelector)|oo(?:ManyIOWindowsErr|lbar(?:A(?:dvancedIcon|pplicationsFolderIcon)|CustomizeIcon|D(?:e(?:leteIcon|sktopFolderIcon)|o(?:cumentsFolderIcon|wnloadsFolderIcon))|FavoritesIcon|HomeIcon|InfoIcon|L(?:abelsIcon|ibraryFolderIcon)|M(?:ovieFolderIcon|usicFolderIcon)|P(?:icturesFolderIcon|ublicFolderIcon)|SitesFolderIcon|UtilitiesFolderIcon|WindowClass))|r(?:a(?:c(?:eException|kMouseLocationOption(?:DontConsumeMouseUp|IncludeScrollWheel))|ditional(?:Alt(?:F(?:iveSelector|ourSelector)|OneSelector|T(?:hreeSelector|woSelector))|CharactersSelector|NamesCharactersSelector)|ns(?:codingCompositionO(?:ffSelector|nSelector)|form(?:Disabled|Label(?:1|2|3|4|5|6|7)|None|O(?:ffline|pen)|Selected(?:Disabled|O(?:ffline|pen))?)|l(?:at(?:e(?:Get(?:FileTranslationList|ScrapTranslationList(?:ConsideringData)?|TranslatedFilename)|Identify(?:File|Scrap)|Translate(?:File|Scrap))|ion(?:DataTranslation|FileTranslation|ScrapProgressDialogID)|orCanGenerateFilename)|iterationType)|parentEncod(?:edPixel|ing(?:Shift)?))|pException|sh(?:FolderType|Icon(?:Resource)?))|ueType(?:F(?:latFontIcon|ontIcon)|MultiFlatFontIcon)|yAuthenticate)|wo(?:ByteCode|WayEncryptPassword)|yp(?:eKCItemAttr|ographicExtrasType))|U(?:AZoomFocusType(?:InsertionPoint|Other)|C(?:BidiCat(?:ArabicNumber|B(?:lockSeparator|oundaryNeutral)|CommonNumberSeparator|EuroNumber(?:Separator|Terminator)?|FirstStrongIsolate|LeftRight(?:Embedding|Isolate|Override)?|No(?:nSpacingMark|tApplicable)|OtherNeutral|PopDirectional(?:Format|Isolate)|RightLeft(?:Arabic|Embedding|Isolate|Override)?|SegmentSeparator|Whitespace)|C(?:harPropType(?:BidiCategory|CombiningClass|DecimalDigitValue|GenlCategory)|ollate(?:C(?:aseInsensitiveMask|omposeInsensitiveMask)|Di(?:acritInsensitiveMask|gits(?:AsNumberMask|OverrideMask))|PunctuationSignificantMask|StandardOptions|Type(?:HFSExtended|Mask|S(?:hiftBits|ourceMask))|WidthInsensitiveMask))|GenlCat(?:Letter(?:Lowercase|Modifier|Other|Titlecase|Uppercase)|Mark(?:Enclosing|NonSpacing|SpacingCombining)|Number(?:DecimalDigit|Letter|Other)|Other(?:Control|Format|NotAssigned|PrivateUse|Surrogate)|Punct(?:C(?:lose|onnector)|Dash|FinalQuote|InitialQuote|O(?:pen|ther))|S(?:eparator(?:Line|Paragraph|Space)|ymbol(?:Currency|M(?:ath|odifier)|Other)))|HighSurrogateRange(?:End|Start)|Key(?:Action(?:AutoKey|D(?:isplay|own)|Up)|Layout(?:FeatureInfoFormat|HeaderFormat)|ModifiersToTableNumFormat|Output(?:GetIndexMask|S(?:equenceIndexMask|tateIndexMask)|TestForIndexMask)|S(?:equenceDataIndexFormat|tate(?:Entry(?:RangeFormat|TerminalFormat)|RecordsIndexFormat|TerminatorsFormat))|T(?:oCharTableIndexFormat|ranslateNoDeadKeys(?:Bit|Mask)))|LowSurrogateRange(?:End|Start)|OutputBufferTooSmall|T(?:S(?:Direction(?:Next|Previous)|NoKeysAddedToObjectErr|Options(?:DataIsOrderedMask|NoneMask|ReleaseStringMask)|SearchListErr)|extBreak(?:C(?:harMask|lusterMask)|GoBackwardsMask|IterateMask|L(?:eadingEdgeMask|ineMask|ocatorMissingType)|ParagraphMask|WordMask)|oken(?:NotFound|izer(?:IterationFinished|UnknownLang))|ypeSelectMaxListSize))|I(?:Mode(?:All(?:Hidden|Suppressed)|Content(?:Hidden|Suppressed)|Normal)|Option(?:A(?:nimateMenuBar|utoShowMenuBar)|Disable(?:AppleMenu|ForceQuit|Hide|MenuBarTransparency|ProcessSwitch|SessionTerminate)))|RL(?:68kNotSupportedError|A(?:bort(?:Initiated(?:Event|Mask)|ingState)|ccessNotAvailableError|ll(?:BufferEventsMask|EventsMask|NonBufferEventsMask)|uthenticationError)|BinHexFileFlag|Co(?:mpleted(?:Event(?:Mask)?|State)|nnectingState)|D(?:ataAvailable(?:Event(?:Mask)?|State)|e(?:binhexOnlyFlag|stinationExistsError)|i(?:rectoryListingFlag|splay(?:AuthFlag|ProgressFlag))|o(?:Not(?:DeleteOnErrorFlag|TryAnonymousFlag)|wnloading(?:Event|Mask|State)))|E(?:rrorOccurred(?:Event(?:Mask)?|State)|x(?:pand(?:AndVerifyFlag|FileFlag)|tensionFailureError))|FileEmptyError|I(?:n(?:itiat(?:edEvent(?:Mask)?|ingState)|valid(?:C(?:allError|onfigurationError)|URL(?:Error|ReferenceError)))|sDirectoryHintFlag)|LookingUpHostState|N(?:oAutoRedirectFlag|ullState)|P(?:er(?:centEvent(?:Mask)?|iodicEvent(?:Mask)?)|ro(?:gressAlreadyDisplayedError|perty(?:BufferTooSmallError|ChangedEvent(?:Mask)?|NotYetKnownError)))|Re(?:placeExistingFlag|s(?:ervedFlag|ourceFound(?:Event(?:Mask)?|State)|umeDownloadFlag))|S(?:erverBusyError|ystemEvent(?:Mask)?)|TransactionComplete(?:Event(?:Mask)?|State)|U(?:n(?:knownPropertyError|s(?:ettablePropertyError|upportedSchemeError))|pload(?:Flag|ing(?:Event|Mask|State))))|SB(?:A(?:bortedError|lreadyOpenErr)|B(?:adDispatchTable|itstufErr|uf(?:OvrRunErr|UnderRunErr))|C(?:RCErr|ompletionError)|D(?:ataToggleErr|evice(?:Busy|Disconnected|Err|NotSuspended|PowerProblem|Suspended))|EndpointStallErr|FlagsError|In(?:correctTypeErr|ternal(?:Err|Reserved(?:1(?:0)?|2|3|4|5|6|7|8|9))|validBuffer)|LinkErr|No(?:BandwidthError|De(?:lay|viceErr)|Err|Tran|t(?:Found|Handled|RespondingErr|Sent(?:1Err|2Err)))|O(?:utOfMemoryErr|verRunErr)|P(?:B(?:LengthError|VersionError)|IDCheckErr|ending|ipe(?:IdleError|StalledError)|ortDisabled)|Queue(?:Aborted|Full)|R(?:es(?:1Err|2Err)|qErr)|T(?:imedOut|ooMany(?:PipesErr|TransactionsErr))|Un(?:derRunErr|known(?:DeviceErr|InterfaceErr|Notification|PipeErr|RequestErr))|WrongPIDErr)|TC(?:DefaultOptions|OverflowErr|UnderflowErr)|YVY422PixelFormat|n(?:connectedSelector|icode(?:16BitFormat|32BitFormat|ByteOrderMark|C(?:anonical(?:CompVariant|DecompVariant)|ollationClass)|D(?:e(?:compositionType|faultDirection(?:Mask)?)|irectionality(?:Bits|Mask)|ocument(?:InterfaceType)?)|F(?:allback(?:Custom(?:First|Only)|Default(?:First|Only)|InterruptSafeMask|Sequencing(?:Bits|Mask))|orceASCIIRange(?:Bit|Mask))|HFSPlus(?:CompVariant|DecompVariant)|Keep(?:Info(?:Bit|Mask)|SameEncoding(?:Bit|Mask))|L(?:eftToRight(?:Mask)?|ooseMappings(?:Bit|Mask))|Ma(?:pLineFeedToReturn(?:Bit|Mask)|tch(?:Other(?:Base(?:Bit|Mask)|Format(?:Bit|Mask)|Variant(?:Bit|Mask))|Unicode(?:Base(?:Bit|Mask)|Format(?:Bit|Mask)|Variant(?:Bit|Mask)))|xDecomposedVariant)|No(?:Co(?:mp(?:atibilityVariant|osedVariant)|rporateVariant)|HalfwidthChars(?:Bit|Mask)|Subset|rmalizationForm(?:C|D)|t(?:AChar|FromInputMethod))|ObjectReplacement|R(?:eplacementChar|ightToLeft(?:Mask)?)|S(?:CSUFormat|tringUnterminated(?:Bit|Mask)|wappedByteOrderMark)|Text(?:BreakClass|Run(?:Bit|Heuristics(?:Bit|Mask)|Mask))|U(?:TF(?:16(?:BEFormat|Format|LEFormat)|32(?:BEFormat|Format|LEFormat)|7Format|8Format)|se(?:ExternalEncodingForm(?:Bit|Mask)|Fallbacks(?:Bit|Mask)|HFSPlusMapping|LatestMapping))|VerticalForm(?:Bit|Mask))|known(?:Exception|FSObjectIcon|Language|Script)|lock(?:KCEvent(?:Mask)?|StateKCStatus|edIcon)|mappedMemoryException|resolvablePageFaultException|supported(?:CardErr|FunctionErr|ModeErr|VsErr)|wrapKCItemAttr)|p(?:ArrowCharCode|date(?:A(?:E(?:TE|UT)|ctiveInputArea)|KCEvent(?:Mask)?)|per(?:AndLowerCaseSelector|Case(?:NumbersSelector|PetiteCapsSelector|SmallCapsSelector|Type)))|se(?:AtoB|B(?:estGuess|to(?:A|B))|CurrentISA|NativeISA|Pr(?:emadeThread|ofileIntent)|WidePositioning|r(?:D(?:ialogItem|omain)|FolderIcon|I(?:DiskIcon|con)|NameAndPasswordFlag|P(?:PDDomain|referredAlert)|SpecificTmpFolderType|sFolder(?:Icon|Type)))|tilit(?:iesFolder(?:Icon|Type)|yWindowClass))|V(?:CBFlags(?:H(?:FSPlusAPIs(?:Bit|Mask)|ardwareGone(?:Bit|Mask))|IdleFlush(?:Bit|Mask)|VolumeDirty(?:Bit|Mask))|K_(?:ANSI_(?:0|1|2|3|4|5|6|7|8|9|A|B(?:ackslash)?|C(?:omma)?|D|E(?:qual)?|F|G(?:rave)?|H|I|J|K(?:eypad(?:0|1|2|3|4|5|6|7|8|9|Clear|D(?:ecimal|ivide)|E(?:nter|quals)|M(?:inus|ultiply)|Plus))?|L(?:eftBracket)?|M(?:inus)?|N|O|P(?:eriod)?|Q(?:uote)?|R(?:ightBracket)?|S(?:emicolon|lash)?|T|U|V|W|X|Y|Z)|C(?:apsLock|o(?:mmand|ntrol))|D(?:elete|ownArrow)|E(?:nd|scape)|F(?:1(?:0|1|2|3|4|5|6|7|8|9)?|2(?:0)?|3|4|5|6|7|8|9|orwardDelete|unction)|H(?:elp|ome)|ISO_Section|JIS_(?:Eisu|K(?:ana|eypadComma)|Underscore|Yen)|LeftArrow|Mute|Option|Page(?:Down|Up)|R(?:eturn|ight(?:Arrow|Co(?:mmand|ntrol)|Option|Shift))|S(?:hift|pace)|Tab|UpArrow|Volume(?:Down|Up))|LibTag2|arispeedParam_Playback(?:Cents|Rate)|er(?:ifyKCItemAttr|tical(?:Constraint|FractionsSelector|PositionType|SubstitutionType|TabCharCode))|o(?:icesFolder(?:Icon|Type)|lume(?:KCItemAttr|RootFolderType|SettingsFolderType)))|W(?:akeToDoze|hereToEmptyTrashFolderType|i(?:d(?:ePosOffsetBit|getsFolderType)|ndow(?:A(?:ctivationScope(?:All|Independent|None)|lertP(?:osition(?:MainScreen|On(?:MainScreen|ParentWindow(?:Screen)?)|ParentWindow(?:Screen)?)|roc)|syncDragAttribute)|BoundsChange(?:OriginChanged|SizeChanged|User(?:Drag|Resize)|Zoom)|C(?:a(?:n(?:BeVisibleWithoutLoginAttribute|Collapse|DrawInCurrentPort|G(?:etWindowRegion|row)|MeasureTitle|SetupProxyDragImage|Zoom)|scade(?:On(?:MainScreen|ParentWindow(?:Screen)?)|StartAtParentWindowScreen))|enter(?:MainScreen|On(?:MainScreen|ParentWindow(?:Screen)?)|ParentWindow(?:Screen)?)|loseBox(?:Attribute|Rgn)|o(?:llapseBox(?:Attribute|Rgn)|mpositingAttribute|n(?:strain(?:AllowPartial|CalcOnly|M(?:ayResize|ove(?:Minimum|RegardlessOfFit))|StandardOptions|Use(?:SpecifiedBounds|TransitionWindow))|tentRgn)))|D(?:ef(?:HIView|ObjectClass|Proc(?:ID|Ptr|Type)|SupportsColorGrafPort|aultPosition|initionVersion(?:One|Two))|ialogDefProcResID|o(?:cument(?:DefProcResID|Proc)|esNotCycleAttribute)|ra(?:gRgn|wer(?:Clos(?:ed|ing)|Open(?:ing)?)))|Edge(?:Bottom|Default|Left|Right|Top)|F(?:adeTransitionEffect|loat(?:FullZoom(?:GrowProc|Proc)|GrowProc|HorizZoom(?:GrowProc|Proc)|Proc|Side(?:FullZoom(?:GrowProc|Proc)|GrowProc|HorizZoom(?:GrowProc|Proc)|Proc|VertZoom(?:GrowProc|Proc))|VertZoom(?:GrowProc|Proc))|rameworkScaledAttribute|ullZoom(?:Attribute|DocumentProc|GrowDocumentProc))|G(?:enieTransitionEffect|lobalPortRgn|ro(?:up(?:Attr(?:FixedLevel|HideOnCollapse|LayerTogether|MoveTogether|PositionFixed|S(?:elect(?:AsLayer|able)|haredActivation)|ZOrderFixed)|Contents(?:Re(?:curse|turnWindows)|Visible)|Level(?:Active|Inactive|Promoted))|w(?:DocumentProc|Rgn)))|H(?:as(?:RoundBottomBarCornersAttribute|TitleBar)|i(?:de(?:On(?:FullScreenAttribute|SuspendAttribute)|TransitionAction)|ghResolutionCapableAttribute)|oriz(?:Zoom(?:DocumentProc|GrowDocumentProc)|ontalZoomAttribute))|I(?:gnoreClicksAttribute|nWindowMenuAttribute|s(?:Alert|CollapsedState|Modal|Opaque))|L(?:atentVisible(?:AppHidden|Collapsed(?:Group|Owner)|F(?:loater|ullScreen)|Suspend)|iveResizeAttribute)|M(?:e(?:nuIncludeRotate|tal(?:Attribute|NoContentSeparatorAttribute))|o(?:dal(?:DialogProc|ity(?:AppModal|None|SystemModal|WindowModal))|v(?:able(?:AlertProc|Modal(?:DialogProc|GrowProc))|eTransitionAction))|sg(?:C(?:alculateShape|leanUp)|Dra(?:gHilite|w(?:Grow(?:Box|Outline)|InCurrentPort)?)|Get(?:Features|GrowImageRegion|Region)|HitTest|Initialize|M(?:easureTitle|odified)|S(?:etupProxyDragImage|tateChanged)))|No(?:A(?:ctivatesAttribute|ttributes)|ConstrainAttribute|Position|ShadowAttribute|TitleBarAttribute|UpdatesAttribute)|O(?:paque(?:ForEventsAttribute|Rgn)|verlayProc)|P(?:aintProcOptionsNone|lainDialogProc|ropertyPersistent)|Resiz(?:ableAttribute|eTransitionAction)|S(?:h(?:adowDialogProc|eet(?:Alert(?:DefProcResID|Proc)|DefProcResID|Proc|TransitionEffect)|owTransitionAction)|i(?:deTitlebarAttribute|mple(?:DefProcResID|FrameProc|Proc))|lideTransitionEffect|t(?:a(?:gger(?:MainScreen|ParentWindow(?:Screen)?)|ndard(?:DocumentAttributes|FloatingAttributes|HandlerAttribute)|teTitleChanged)|ructureRgn)|upports(?:DragHilite|GetGrowImageRegion|ModifiedBit))|T(?:exturedSquareCornersAttribute|itle(?:BarRgn|ProxyIconRgn|TextRgn)|oolbarButton(?:Attribute|Rgn))|U(?:nifiedTitleAndToolbarAttribute|pdateRgn|tility(?:DefProcResID|SideTitleDefProcResID))|Vert(?:Zoom(?:DocumentProc|GrowDocumentProc)|icalZoomAttribute)|WantsDisposeAtProcessDeath|Zoom(?:BoxRgn|TransitionEffect)|sLatin1(?:PalmVariant|StandardVariant)))|or(?:d(?:FinalSwashesO(?:ffSelector|nSelector)|InitialSwashesO(?:ffSelector|nSelector))|kgroupFolderIcon)|r(?:PermKCStatus|apKCItemAttr|ite(?:FailureErr|ProtectedErr|Reference)))|X(?:86(?:ISA|RTA)|Lib(?:Tag1|Version))|Y(?:UV(?:211PixelFormat|411PixelFormat|SPixelFormat|UPixelFormat)|V(?:U9PixelFormat|YU422PixelFormat))|Zoom(?:Accelerate|Decelerate|NoAcceleration)|administratorUser|e(?:rnel(?:A(?:lreadyFreeErr|sync(?:ReceiveLimitErr|SendLimitErr)|ttributeErr)|CanceledErr|DeletePermissionErr|Ex(?:ceptionErr|ecut(?:ePermissionErr|ionLevelErr))|I(?:DErr|n(?:UseErr|completeErr))|O(?:bjectExistsErr|ptionsErr)|PrivilegeErr|Re(?:adPermissionErr|turnValueErr)|T(?:erminatedErr|imeoutErr)|Un(?:recoverableErr|supportedErr)|WritePermissionErr)|y(?:32BitIcon|4BitIcon|8Bit(?:Icon|Mask)|A(?:E(?:A(?:djustMarksProc|ngle|rcAngle|ttaching)|B(?:aseAddr|estType|gnd(?:Color|Pattern)|ounds|ufferSize)|C(?:ellList|la(?:ssID|useOffsets)|o(?:lor(?:Table)?|mp(?:Operator|areProc)|ntainer|untProc)|ur(?:rentPoint|ve(?:Height|Width)))|D(?:a(?:shStyle|ta)|e(?:f(?:aultType|initionRect)|s(?:cType|iredClass|tination))|o(?:AntiAlias|Dithered|Rotate|Scale|Translate)|ragging)|E(?:ditionFileLoc|lements|ndPoint|rrorObject|vent(?:Class|ID))|F(?:i(?:l(?:e(?:Type)?|l(?:Color|Pattern))|xLength)|lip(?:Horizontal|Vertical)|o(?:nt|rmula))|G(?:etErrDescProc|raphicObjects)|H(?:iliteRange|omograph(?:Accent|DicInfo|Weight))|I(?:D|mageQuality|n(?:dex|sertHere))|Key(?:Data|Form(?:s)?|word)|L(?:A(?:Homograph|Morpheme(?:Bundle|Path)?)|aunchedAs(?:LogInItem|ServiceItem)|e(?:ftSide|vel)|ineArrow|ogical(?:Operator|Terms))|M(?:ark(?:Proc|TokenProc)|o(?:rpheme(?:PartOfSpeechCode|TextRange)|veView))|N(?:ame|e(?:wElementLoc|xtBody)|oAutoRouting)|O(?:bject(?:1|2|Class)?|ff(?:Styles|set)|nStyles)|P(?:MTable|OSTHeaderData|aram(?:Flags|eters)|en(?:Color|Pattern|Width)|i(?:nRange|x(?:MapMinus|elDepth))|o(?:int(?:List|Size)?|sition)|ro(?:p(?:Data|Flags|ID|ert(?:ies|y))|tection))|R(?:angeSt(?:art|op)|e(?:corderCount|gionClass|nderAs|pl(?:acing|yHeaderData)|questedType|sult(?:Info)?)|o(?:t(?:Point|ation)|wList))|S(?:aveOptions|c(?:ale|riptTag)|e(?:archText|rverInstance)|howWhere|t(?:art(?:Angle|Point)|yles)|uiteID)|T(?:SM(?:DocumentRefcon|EventRe(?:cord|f)|GlyphInfoArray|ScriptTag|Text(?:F(?:MFont|ont)|PointSize))|arget|e(?:st|xt(?:Color|Font|Line(?:Ascent|Height)|PointSize|S(?:ervice(?:Encoding|MacEncoding)|tyles))?)|he(?:Data|Text)|r(?:ans(?:ferMode|lation)|yAsStructGraf))|U(?:niformStyles|pdate(?:On|Range)|s(?:erTerm|ing))|Version|W(?:hoseRangeSt(?:art|op)|indow|ritingCode)|XMLRe(?:plyData|questData))|S(?:Arg|P(?:ositionalArgs|reposition(?:A(?:bo(?:ut|ve)|gainst|partFrom|round|sideFrom|t)|B(?:e(?:low|neath|side|tween)|y)|F(?:or|rom)|Given|Has|In(?:steadOf|to)?|O(?:n(?:to)?|utOf|ver)|Since|T(?:hr(?:ough|u)|o)|Un(?:der|til)|With(?:out)?))|Returning|SubroutineName|UserRecordFields)|c(?:ceptTimeoutAttr|tualSenderAuditToken)|dd(?:itionalHTTPHeaders|ressAttr)|ll|pp(?:HandledCoercion|leEventAttributesAttr))|C(?:loseAllWindows|o(?:deMask|ntextualMenu(?:Attributes|CommandID|Modifiers|Name|Submenu)))|D(?:CM(?:Field(?:Attributes|DefaultData|FindMethods|Name|T(?:ag|ype))|MaxRecordSize)|i(?:rectObject|s(?:ableAuthenticationAttr|poseTokenProc))|own(?:Mask)?|riveNumber)|E(?:rror(?:Code|Number|String)|v(?:ent(?:ClassAttr|IDAttr|SourceAttr)|tDev))|GlobalPositionList|HighLevel(?:Class|ID)|I(?:CEditPreferenceDestination|conAndMask|nteractLevelAttr)|Key(?:Code|board)?|Local(?:PositionList|Where)|M(?:enuI(?:D|tem)|i(?:ni(?:1BitMask|4BitIcon|8BitIcon)|s(?:cellaneous|sedKeywordAttr))|odifiers)|NewBounds|O(?:SA(?:Dialect(?:Code|LangCode|Name|ScriptCode)|Source(?:End|Start))|ldFinderItems|ptionalKeywordAttr|riginal(?:AddressAttr|Bounds))|Pr(?:eDispatch|ocessSerialNumber)|R(?:PCMethod(?:Name|Param(?:Order)?)|e(?:directedDocumentList|ply(?:PortAttr|RequestedAttr)|turnIDAttr))|S(?:OAP(?:Action|MethodNameSpace(?:URI)?|S(?:MD(?:Namespace(?:URI)?|Type)|chemaVersion|tructureMetaData))|R(?:Recognizer|Speech(?:Result|Status))|cszResource|e(?:lect(?:Proc|ion)|nder(?:A(?:ppl(?:escriptEntitlementsAttr|ication(?:IdentifierEntitlementAttr|Sandboxed))|uditTokenAttr)|E(?:GIDAttr|UIDAttr)|GIDAttr|PIDAttr|UIDAttr))|mall(?:32BitIcon|4BitIcon|8Bit(?:Icon|Mask)|IconAndMask)|ubjectAttr)|T(?:imeoutAttr|ransactionIDAttr)|U(?:p(?:Mask)?|ser(?:NameAttr|PasswordAttr))|W(?:he(?:n|re)|indow)|XMLDebuggingAttr))|fullPrivileges|i(?:Movie(?:FolderType|PlugInsFolderType|SoundEffectsFolderType)|o(?:AC(?:Access(?:BlankAccess(?:Bit|Mask)|Everyone(?:Read(?:Bit|Mask)|Search(?:Bit|Mask)|Write(?:Bit|Mask))|Group(?:Read(?:Bit|Mask)|Search(?:Bit|Mask)|Write(?:Bit|Mask))|Owner(?:Bit|Mask|Read(?:Bit|Mask)|Search(?:Bit|Mask)|Write(?:Bit|Mask))|User(?:Read(?:Bit|Mask)|Search(?:Bit|Mask)|Write(?:Bit|Mask)))|UserNo(?:MakeChanges(?:Bit|Mask)|SeeF(?:iles(?:Bit|Mask)|older(?:Bit|Mask))|tOwner(?:Bit|Mask)))|F(?:CB(?:FileLocked(?:Bit|Mask)|LargeFile(?:Bit|Mask)|Modified(?:Bit|Mask)|OwnClump(?:Bit|Mask)|Resource(?:Bit|Mask)|SharedWrite(?:Bit|Mask)|Write(?:Bit|Locked(?:Bit|Mask)|Mask))|lAttrib(?:CopyProt(?:Bit|Mask)|D(?:ataOpen(?:Bit|Mask)|ir(?:Bit|Mask))|FileOpen(?:Bit|Mask)|InShared(?:Bit|Mask)|Locked(?:Bit|Mask)|Mounted(?:Bit|Mask)|ResOpen(?:Bit|Mask)|SharePoint(?:Bit|Mask)))|VAtrb(?:DefaultVolume(?:Bit|Mask)|FilesOpen(?:Bit|Mask)|HardwareLocked(?:Bit|Mask)|SoftwareLocked(?:Bit|Mask))))|no(?:Group|User)|ownerPrivileges)|l(?:CloseMsg|D(?:o(?:HAutoscroll(?:Bit)?|VAutoscroll(?:Bit)?)|raw(?:Msg|ingModeOff(?:Bit)?))|ExtendDrag(?:Bit)?|HiliteMsg|InitMsg|No(?:Disjoint(?:Bit)?|Extend(?:Bit)?|NilHilite(?:Bit)?|Rect(?:Bit)?)|OnlyOne(?:Bit)?|UseSense(?:Bit)?|a(?:Dictionary(?:NotOpenedErr|TooManyErr|UnknownErr)|En(?:gineNotFoundErr|vironment(?:BusyErr|ExistErr|NotFoundErr))|FailAnalysisErr|InvalidPathErr|NoMoreMorphemeErr|Property(?:Err|IsReadOnlyErr|NotFoundErr|UnknownErr|ValueErr)|T(?:extOverFlowErr|ooSmallBufferErr)|ng(?:A(?:fri(?:caans|kaans)|lbanian|mharic|r(?:abic|menian)|ssamese|ymara|zerbaijan(?:Ar|Roman|i))|B(?:asque|e(?:lorussian|ngali)|reton|u(?:lgarian|rmese)|yelorussian)|C(?:atalan|h(?:ewa|inese)|roatian|zech)|D(?:anish|utch|zongkha)|E(?:nglish|s(?:peranto|tonian))|F(?:a(?:eroese|r(?:oese|si))|innish|lemish|rench)|G(?:al(?:ician|la)|e(?:orgian|rman)|ree(?:k(?:Ancient|Poly)?|nlandic)|u(?:arani|jarati))|H(?:ebrew|indi|ungarian)|I(?:celandic|n(?:donesian|uktitut)|rish(?:Gaelic(?:Script)?)?|talian)|Ja(?:panese|vaneseRom)|K(?:a(?:nnada|shmiri|zakh)|hmer|i(?:nyarwanda|rghiz)|orean|urdish)|L(?:a(?:o|pp(?:ish|onian)|t(?:in|vian))|ettish|ithuanian)|M(?:a(?:cedonian|l(?:a(?:gasy|y(?:Arabic|Roman|alam))|t(?:a|ese))|nxGaelic|rathi)|o(?:ldavian|ngolian(?:Cyr)?))|N(?:epali|orwegian|y(?:anja|norsk))|Or(?:iya|omo)|P(?:ashto|ersian|o(?:lish|rtug(?:ese|uese))|unjabi)|Quechua|R(?:omanian|u(?:anda|ndi|ssian))|S(?:a(?:amisk|mi|nskrit)|cottishGaelic|erbian|i(?:mpChinese|n(?:dhi|halese))|lov(?:ak|enian)|omali|panish|undaneseRom|w(?:ahili|edish))|T(?:a(?:galog|jiki|mil|tar)|elugu|hai|i(?:betan|grinya)|ongan|radChinese|urk(?:ish|men))|U(?:ighur|krainian|nspecified|rdu|zbek)|Vietnamese|Welsh|Y(?:iddish|ugoslavian))|pProtErr|rge(?:1BitMask|4BitData|8BitData)|stDskErr|unch(?:Allow24Bit|Continue|DontSwitch|InhibitDaemon|NoFileFlags|UseMinimum))|eft(?:OverChars|SingGuillemet)|imitReachedErr|o(?:c(?:alOnlyErr|kPortBits(?:Bad(?:PortErr|SurfaceErr)|SurfaceLostErr|W(?:indow(?:ClippedErr|MovedErr|ResizedErr)|rongGDeviceErr)))|ng(?:Da(?:te(?:Found)?|y)|Month|Week|Year)))|m(?:BarNFnd|CalcItemMsg|D(?:ownMask|rawMsg)|FulErr|PopUpMsg|SizeMsg|UpMask|a(?:c(?:Dev|ron)|p(?:C(?:hanged(?:Bit)?|ompact(?:Bit)?)|Read(?:Err|Only(?:Bit)?))|trixErr|x(?:Country|DateField|SizeToGrowTooSmall))|ct(?:AllItems|LastIDIndic)|dy|e(?:diaTypesDontMatch|m(?:A(?:ZErr|drErr)|BCErr|F(?:ragErr|ullErr)|LockedErr|P(?:CErr|urErr)|ROZ(?:Err(?:or)?|Warn)|SCErr|WZErr)|nu(?:I(?:nvalidErr|temNotFoundErr)|NotFoundErr|Pr(?:gErr|operty(?:Invalid(?:Err)?|NotFoundErr))|UsesSystemDefErr))|i(?:di(?:DupIDErr|InvalidCmdErr|ManagerAbsentOSErr|N(?:ameLenErr|o(?:C(?:lientErr|onErr)|PortErr))|TooMany(?:ConsErr|PortsErr)|VConnect(?:Err|Made|Rmvd)|WriteErr)|n(?:Country|LeadingZ|i(?:1BitMask|4BitData|8BitData)|ute(?:Field|Mask))|ssingRequiredParameterErr)|mInternalError|ntLdingZ|o(?:de(?:32BitCompatible|C(?:anBackground|ontrolPanel)|D(?:eskAccessory|isplayManagerAware|oesActivateOnFGSwitch)|Get(?:AppDiedMsg|FrontClicks)|HighLevelEventAware|L(?:aunchDontSwitch|iteral|ocalAndRemoteHLEvents)|MultiLaunch|N(?:eedSuspendResume|ormal)|OnlyBackground|Phonemes|Reserved|StationeryAware|T(?:ext|une)|UseTextEditServices)|nth(?:Field|Mask)|u(?:ntedFolderIconResource|se(?:Down|MovedMessage|Up))|v(?:ableDBoxProc|ieT(?:extNotFoundErr|oolboxUninitialized)))|pWorkFlag(?:CopyWorkBlock|Do(?:Completion|Work|ntBlock)|Get(?:IsRunning|ProcessorCount))|ultiplePublisherWrn|yd)|n(?:WIDTHHook|ame(?:FontTableTag|TypeErr)|bp(?:BuffOvr|ConfDiff|Duplicate|N(?:ISErr|o(?:Confirm|tFound)))|e(?:edClearScrapErr|gZcbFreeErr|twork(?:E(?:rr|vt)|Mask)|wLine(?:Bit|CharMask|Mask))|il(?:HandleErr|ScrapFlavorDataErr)|mTyp(?:Err|e)|o(?:AdrMkErr|BridgeErr|C(?:a(?:che(?:Bit|Mask)|lls)|o(?:decErr|nstraint))|D(?:MAErr|ata(?:Area|Handler)|e(?:fault(?:DataRef|UserErr)|viceForChannel)|riveErr|taMkErr)|ExportProcAvailableErr|G(?:lobalsErr|rowDocProc)|H(?:ardware(?:Err)?|elpForItem)|I(?:conDataAvailableErr|nformErr)|M(?:MUErr|PPErr|a(?:c(?:DskErr|hineNameErr)|rk|skFoundErr)|e(?:diaHandler|m(?:ForPictPlaybackErr|oryNodeFailedInitialize))|o(?:re(?:FolderDescErr|KeyColorsErr|RealTime)|vieFound))|NybErr|OutstandingHLE|P(?:a(?:steboardPromiseKeeperErr|thMappingErr)|ortErr|refAppErr)|Re(?:cordOfApp|lErr|quest|sponseErr)|S(?:crap(?:Err|PromiseKeeperErr)|e(?:curitySession|ndResp|ssionErr)|ou(?:ndTrackInMovieErr|rceTreeFoundErr)|u(?:chIconErr|itableDisplaysErr)|ynthFound)|T(?:humbnailFoundErr|oolboxNameErr|ranslationPathErr|ypeErr)|User(?:InteractionAllowed|NameErr|Re(?:cErr|fErr))|VideoTrackInMovieErr|n(?:DragOriginatorErr|GlyphID|MatchingEditState)|t(?:A(?:FileErr|QTVRMovieErr|RemountErr|llowedToSaveMovieErr|ppropriateForClassic)|BTree|E(?:nough(?:BufferSpace|D(?:ataErr|iskSpaceToGrab)|Hardware(?:Err)?|Memory(?:Err|ToGrab))|xact(?:MatrixErr|SizeErr))|HeldErr|I(?:mplementedMusicOSErr|nitErr)|L(?:eafAtomErr|o(?:ckedErr|ggedInErr))|OpenErr|PasteboardOwnerErr|RegisteredSectionErr|ThePublisherWrn|e(?:ChannelNotAllocatedOSErr|Icon)))|r(?:CallNotSupported|DataTruncatedErr|ExitedIteratorScope|I(?:nvalid(?:EntryIterationOp|NodeErr)|terationDone)|LockedErr|N(?:ameErr|ot(?:CreatedErr|EnoughMemoryErr|FoundErr|ModifiedErr|SlotDeviceErr))|OverrunErr|P(?:ath(?:BufferTooSmall|NotFound)|ower(?:Err|SwitchAbortErr)|ropertyAlreadyExists)|ResultCodeBase|T(?:ransactionAborted|ypeMismatchErr))|s(?:DrvErr|StackErr|vErr)|u(?:l(?:Dev|lEvent)|mberFor(?:matting(?:Bad(?:CurrencyPositionErr|FormatErr|NumberFormattingObjectErr|OptionsErr|TokenErr)|DelimiterMissingErr|EmptyFormatErr|LiteralMissingErr|NotA(?:DigitErr|NumberErr)|OverflowInDestinationErr|SpuriousCharErr|UnOrd(?:eredCurrencyRangeErr|redCurrencyRangeErr))|tmattingNotADigitErr)))|o(?:ffLinErr|gonek|k|p(?:WrErr|en(?:Err|FolderIconResource)|tionKey(?:Bit)?)|s(?:2FontTableTag|Evt(?:MessageMask)?|Mask)|ver(?:Dot|layDITL)|wnedFolderIconResource)|p(?:A(?:RADialIn|S(?:Da(?:teString|y(?:s)?)|Hours|It|M(?:e|inutes|onth)|P(?:arent|i|rint(?:Depth|Length))|Quote|Re(?:quiredImportItems|sult|turn)|S(?:econds|pace)|T(?:ab|ime(?:String)?|opLevelScript)|Week(?:day|s)|Year)|T(?:Machine|Type|Zone)|boutMacintosh|pp(?:Partition|l(?:eMenuItemsFolder|icationFile))|r(?:cAngle|ePrivilegesInherited))|B(?:ackground(?:Color|Pattern)|estType|ounds|uttonViewArrangement|y(?:CreationDateArrangement|KindArrangement|LabelArrangement|ModificationDateArrangement|NameArrangement|SizeArrangement))|C(?:a(?:llBackNumber|n(?:C(?:hangePassword|onnect)|DoProgramLinking)|pacity)|l(?:ass|ipboard)|o(?:lor(?:Table)?|m(?:ment|pletelyExpanded)|n(?:duit|t(?:ainer(?:Window)?|ent(?:Space|s)|rolPanelsFolder))|rnerCurve(?:Height|Width))|reationDate(?:Old)?)|D(?:CM(?:AccessMethod|C(?:lass|opyright)|L(?:isting|ocale)|Maintenance|Permission)|NS(?:Form)?|ashStyle|e(?:f(?:ault(?:ButtonViewIconSize|IconViewIconSize|ListViewIconSize|Type)|initionRect)|layBeforeSpringing|s(?:cription|k(?:AccessoryFile|top))|vice(?:Address|Type))|isk|ottedDecimal)|E(?:jectable|n(?:abled|dPoint|tireContents)|x(?:p(?:and(?:able|ed)|orted)|tensionsFolder))|F(?:TPKind|i(?:l(?:e(?:Creator|Share(?:On|StartingUp)|Type(?:Old)?)?|l(?:Color|Pattern))|nderPreferences)|o(?:lder(?:Old)?|nt(?:sFolder(?:PreAllegro)?)?|rmula)|reeSpace)|G(?:r(?:aphicObjects|id(?:Icons)?|oup(?:Privileges)?)|uestPrivileges)|H(?:as(?:CloseBox|ScriptingTerminology|TitleBar)|ost)|I(?:D|con(?:Bitmap|Size|ViewArrangement)|n(?:dex|fo(?:Panel|Window)|herits|sertionLoc|ternetLocation)|s(?:Collapsed|F(?:loating|rontProcess)|Locked(?:Old)?|Mod(?:al|ified)|Owner|P(?:opup|ulledOpen)|Resizable|S(?:criptable|elected|ta(?:rtup|tioneryPad))|Zoom(?:able|ed(?:Full)?))|temNumber)|Justification|K(?:e(?:epArranged(?:By)?|y(?:Kind|strokeKey))|ind)|L(?:a(?:bel(?:1|2|3|4|5|6|7|Index)|ngCode|rge(?:Button|stFreeBlock))|ength|i(?:neArrow|stViewIconSize)|ocal(?:AndRemoteEvents)?)|M(?:akeChanges|enuID|inAppPartition|o(?:difi(?:cationDate(?:Old)?|ers)|unted))|N(?:ame|e(?:twork|wElementLoc)|o(?:Arrangement|de))|O(?:bject|riginalItem|wner(?:Privileges)?)|P(?:a(?:rtitionSpaceUsed|th)|en(?:Color|Pattern|Width)|hysicalSize|ixelDepth|o(?:int(?:List|Size)|rt|sition)|r(?:e(?:ferences(?:Folder|Window)|viousView)|o(?:ductVersion|gramLinkingOn|perties|t(?:ection|ocol))))|R(?:e(?:st|verse)|otation)|S(?:CSI(?:Bus|LUN)|c(?:ale|heme|ript(?:Code|Tag)?)|e(?:eF(?:iles|olders)|lect(?:ed|ion))|h(?:ar(?:ableContainer|ing(?:Protection|Window)?)|o(?:rtCuts|uldCallBack|w(?:C(?:omment|reationDate)|D(?:ate|iskInfo)|FolderSize|Kind|Label|ModificationDate|Size|Version))|utdownFolder)|ize|mall(?:Button|Icon)|napToGridArrangement|o(?:cket|rtDirection|und)|pringOpenFolders|ta(?:ggerIcons|rt(?:Angle|Point|ingUp|up(?:Disk|ItemsFolder)))|uggestedAppPartition|ystemFolder)|T(?:e(?:mporaryFolder|xt(?:Color|Encoding|Font|ItemDelimiters|PointSize|Styles))|ra(?:ns(?:ferMode|lation)|sh))|U(?:RL|niformStyles|pdateOn|se(?:RelativeDate|ShortMenus|WideGrid|r(?:Name|Password|Selection)))|V(?:ersion|i(?:ew(?:Font(?:Size)?|Preferences)?|sible))|W(?:arnOnEmpty|indow)|a(?:ramErr|steDev|th(?:NotVerifiedErr|TooLongErr))|er(?:Thousand|mErr)|i(?:c(?:Item|ker(?:CantLive|ResourceError)|t(?:Info(?:IDErr|Ver(?:bErr|sionErr))|ureDataErr))|xMapTooDeepErr)|l(?:a(?:inDBox|tform(?:68k|AIXppc|I(?:A32NativeEntryPoint|RIXmips|nterpreted)|Linux(?:intel|ppc)|MacOSx86|NeXT(?:68k|Intel|ppc|sparc)|PowerPC(?:64NativeEntryPoint|NativeEntryPoint)?|SunOS(?:intel|sparc)|Win32|X86_64NativeEntryPoint))|easeCache(?:Bit|Mask))|m(?:BusyErr|Field|Mask|Re(?:cv(?:EndErr|StartErr)|plyTOErr)|Send(?:EndErr|StartErr))|o(?:pup(?:FixedWidth|MenuProc|Title(?:Bold|C(?:enterJust|ondense)|Extend|Italic|LeftJust|NoStyle|Outline|RightJust|Shadow|Underline)|Use(?:AddResMenu|WFont)|VariableWidth)|rt(?:ClosedErr|InUse|N(?:ameExistsErr|ot(?:Cf|Pwr)))|sErr)|r(?:InitErr|WrErr|eferencesFolderIconResource|i(?:nt(?:MonitorFolderIconResource|erStatusOpCodeNotSupportedErr)|vateFolderIconResource)|o(?:c(?:NotFound|essStateIncorrectErr)|gressProcAborted|pertyNotSupportedByNodeErr|tocolErr))|ushButProc)|q(?:Err|fcbNot(?:CreatedErr|FoundErr)|t(?:ActionNotHandledErr|NetworkAlreadyAllocatedErr|ParamErr|XML(?:ApplicationErr|ParseErr)|ml(?:Dll(?:EntryNotFoundErr|LoadErr)|Uninitialized)|s(?:AddressBusyErr|Bad(?:DataErr|S(?:electorErr|tateErr))|ConnectionFailedErr|T(?:imeoutErr|ooMuchDataErr)|Un(?:knownValueErr|supported(?:DataTypeErr|FeatureErr|RateErr)))|vr(?:LibraryLoadErr|Uninitialized))|ueueFull)|r(?:AliasType|ad(?:Ctrl|ioButProc)|c(?:DB(?:AsyncNotSupp|B(?:ad(?:AsyncPB|DDEV|Sess(?:ID|Num)|Type)|reak)|E(?:rror|xec)|N(?:oHandler|ull)|PackNotInited|Value|WrongVersion)|vrErr)|dVerify(?:Bit|Mask)?|e(?:ad(?:Err|QErr|Reference)|c(?:NotFnd|ordDataTooBigErr)|gisterComponent(?:A(?:fterExisting|liasesOnly)|Global|NoDuplicates)|q(?:Aborted|Failed|uiredFlagsDontMatch)|s(?:1Field|2Field|3Field|AttrErr|C(?:hanged(?:Bit)?|trl)|FNotFound|Locked(?:Bit)?|NotFound|P(?:r(?:eload(?:Bit)?|o(?:blem|tected(?:Bit)?))|urgeable(?:Bit)?)|Sys(?:Heap(?:Bit)?|RefBit)|ourceInMemory|umeFlag)|tryComponentRegistrationErr)|fNumErr|gn(?:OverflowErr|TooBigErr(?:or)?)|i(?:ght(?:ControlKey(?:Bit)?|OptionKey(?:Bit)?|S(?:hiftKey(?:Bit)?|ingGuillemet))|ngMark)|mvRe(?:fFailed|sFailed)|o(?:man(?:AppFond|Flags|SysFond)|utingNotFoundErr))|s(?:IQType|am(?:eFileErr|plesAlreadyInMediaErr)|c(?:TypeNotFoundErr|r(?:ap(?:Flavor(?:FlagsMismatchErr|NotFoundErr|SizeMismatchErr)|PromiseNotKeptErr)|ipt(?:CurLang|DefLang)|ollBarProc))|dm(?:InitErr|JTInitErr|P(?:RAMInitErr|riInitErr)|SRTInitErr)|e(?:NoDB|c(?:LeadingZ|ond(?:Field|Mask)|tNFErr)|ekErr|lectorNotSupportedByNodeErr|pNot(?:Consistent|IntlSep)|qGrabInfoNotAvailable|ss(?:ClosedErr|TableErr|ion(?:Has(?:GraphicAccess|TTY)|IsR(?:emote|oot)|KeepCurrentBootstrap))|ttingNotSupportedByNodeErr)|h(?:aredFolderIconResource|iftKey(?:Bit)?|ortDate|utDownAlert)|i(?:Bad(?:DeviceName|RefNum|SoundInDevice)|DeviceBusyErr|HardDriveTooSlow|In(?:it(?:S(?:DTblErr|PTblErr)|VBLQsErr)|putDeviceErr|valid(?:Compression|Sample(?:Rate|Size)))|No(?:BufferSpecified|SoundInHardware)|Unknown(?:InfoType|Quality)|VBRCompressionNotSupported|ze(?:Bit|of_sfnt(?:CMap(?:E(?:ncoding|xtendedSubHeader)|Header|SubHeader)|D(?:escriptorHeader|irectory)|Instance|Name(?:Header|Record)|Variation(?:Axis|Header))))|ktClosedErr|l(?:eepQType|otNumErr|pQType)|m(?:A(?:llScripts|mharic|r(?:abic|menian))|B(?:LFieldBad|ad(?:BoardId|RefId|Script|Verb|s(?:List|PtrErr))|engali|lkMoveErr|u(?:rmese|sErrTO)|yteLanesErr)|C(?:PUErr|RCFail|entralEuroRoman|h(?:ar(?:1byte|2byte|Ascii|B(?:idirect|opomofo)|ContextualLR|E(?:uro|xtAscii)|FIS(?:G(?:ana|reek)|Ideo|Kana|Russian)|GanaKana|H(?:angul|iragana|orizontal)|Ideographic|Jamo|Katakana|L(?:eft|ower)|NonContextualLR|Punct|Right|TwoByte(?:Greek|Russian)|Upper|Vertical)|inese)|kStatusErr|odeRevErr|urrentScript|yrillic)|D(?:evanagari|is(?:DrvrNamErr|abledSlot|posePErr))|E(?:astEurRoman|mptySlot|thiopic|xtArabic)|F(?:HBl(?:kDispErr|ockRdErr)|ISClass(?:Lvl(?:1|2)|User)|irstByte|o(?:nd(?:End|Start)|rmatErr))|G(?:e(?:ez|orgian|t(?:DrvrNamErr|PRErr))|reek|u(?:jarati|rmukhi))|Hebrew|I(?:deographic(?:Level(?:1|2)|User)|nit(?:StatVErr|TblVErr))|Ja(?:mo(?:Bog(?:Jaeum|Moeum)|Jaeum|Moeum)|panese)|K(?:CHRCache|an(?:a(?:HardOK|S(?:mall|oftOK))|nada)|ey(?:DisableKybd(?:Switch|s)|EnableKybds|ForceKeyScript(?:Bit|Mask)|Next(?:InputMethod|Kybd|Script)|Roman|S(?:cript|etDir(?:LeftRight|RightLeft)|wap(?:InputMethod|Kybd|Script)|ysScript)|Toggle(?:Direction|Inline))|hmer|lingon|orean)|La(?:o(?:tian)?|stByte)|M(?:a(?:layalam|sk(?:A(?:ll|scii(?:1|2)?)|Bopomofo2|Gana2|Hangul2|Jamo2|Kana(?:1|2)|Native))|iddleByte|ongolian)|N(?:ewPErr|ilsBlockErr|o(?:Board(?:Id|SRsrc)|Dir|GoodOpens|JmpTbl|MoresRsrcs|sInfoArray|tInstalled)|umberPartsTable)|O(?:ffsetErr|riya)|P(?:RAMInitErr|riInitErr|unct(?:Blank|Graphic|N(?:ormal|umber)|Repeat|Symbol))|R(?:Symbol|e(?:cNotFnd|gionCode|s(?:erved(?:Err|Slot)|rvErr)|visionErr)|oman|ussian)|S(?:DMInitErr|RT(?:InitErr|OvrFlErr)|elOOBErr|i(?:mpChinese|n(?:dhi|gleByte|halese))|l(?:avic|otOOBErr)|ys(?:Script|temScript))|T(?:amil|elugu|hai|ibetan|ra(?:dChinese|ns(?:Ascii(?:1|2)?|Bopomofo2|Case|Gana2|Hangul(?:2|Format)|Jamo2|Kana(?:1|2)|Lower|Native|Pre(?:DoubleByting|LowerCasing)|RuleBaseFormat|System|Upper)))|U(?:n(?:ExBusErr|TokenTable|i(?:codeScript|nterp))|prHalfCharSet)|Vietnamese|W(?:hiteSpaceList|ord(?:SelectTable|WrapTable))|all(?:1BitMask|4BitData|8BitData|DateBit)|c(?:ClassMask|DoubleMask|OrientationMask|R(?:eserved|ightMask)|TypeMask|UpperMask)|f(?:D(?:isableKeyScriptSync(?:Mask)?|ualCaret)|NameTagEnab|ShowIcon|UseAssocFontInfo)|s(?:GetDrvrErr|PointerNil|f(?:AutoInit|B0Digits|Context|Forms|IntellCP|Ligatures|N(?:atCase|oForceFont)|Reverse|S(?:ingByte|ynchUnstyledTE)|UnivExt)))|o(?:C(?:haracterMode|ommandDelimiter|urrent(?:A5|Voice))|Error(?:CallBack|s)|InputMode|NumberMode|OutputTo(?:AudioDevice|ExtAudioFile|FileWithCFURL)|P(?:honeme(?:CallBack|Options|Symbols)|itch(?:Base|Mod))|R(?:ate|e(?:centSync|fCon|set))|S(?:oundOutput|peechDoneCallBack|tatus|yn(?:cCallBack|th(?:Extension|Type)))|TextDoneCallBack|Vo(?:ice(?:Description|File)|lume)|WordCallBack|rts(?:After|Before|Equal)|u(?:ndSupportNotAvailableErr|rceNotFoundErr))|pdAdjErr|rcCopy|t(?:a(?:leEditState|rtupFolderIconResource|t(?:Text|usErr))|opIcon|r(?:UserBreak|eamingNodeNotReadyErr|ingOverflow))|u(?:p(?:Day|Month|Week|Year)|spendResumeMessage)|v(?:All(?:1BitData|4BitData|8BitData|AvailableData|LargeData|MiniData|SmallData)|Disabled|Large(?:1Bit|4Bit|8Bit)|Mini(?:1Bit|4Bit|8Bit)|Small(?:1Bit|4Bit|8Bit)|TempDisable)|y(?:nth(?:NotReady|OpenFailed|esizer(?:NotRespondingOSErr|OSErr))|stem(?:CurLang|DefLang|FolderIconResource)))|t(?:aDst(?:DocNeedsResourceFork|IsAppTranslation)|e(?:Bit(?:Clear|Set|Test)|C(?:aret|enter)|Draw|F(?:AutoScroll|I(?:dleWithEventLoopTimer|nlineInput(?:AutoScroll)?)|OutlineHilite|TextBuffering|Use(?:InlineInput|TextServices|WhiteBackground)|ind|lush(?:Default|Left|Right)|orceLeft|rom(?:Find|Recal))|Highlight|Just(?:Center|Left|Right)|ScrapSizeErr|Word(?:Drag|Select)|l(?:A(?:PattNotSupp|lreadyOpen|utoAnsNotOn)|Bad(?:APattErr|BearerType|C(?:AErr|odeResource)|D(?:N(?:DType|Err|Type)|isplayMode)|F(?:eatureID|unction|wdType)|H(?:TypeErr|andErr)|In(?:dex|t(?:Ext|ercomID))|LevelErr|P(?:a(?:geID|rkID)|ickupGroupID|roc(?:Err|ID))|Rate|S(?:WErr|ampleRate|elect|tateErr)|TermErr|VTypeErr)|C(?:A(?:Not(?:Acceptable|Deflectable|Rejectable)|Unavail)|BErr|onf(?:Err|LimitE(?:rr|xceeded)|NoLimit|Rej))|D(?:N(?:DTypeNotSupp|TypeNotSupp)|e(?:tAlreadyOn|viceNotFound)|isplayModeNotSupp)|F(?:eat(?:Active|Not(?:Avail|Su(?:b|pp)))|wdTypeNotSupp)|GenericError|HTypeNotSupp|In(?:dexNotSupp|itFailed|tExtNotSupp)|No(?:C(?:allbackRef|ommFolder)|Err|MemErr|OpenErr|SuchTool|Tools|tEnoughdspBW)|PBErr|St(?:ateNotSupp|illNeeded)|T(?:ermNotOpen|ransfer(?:Err|Rej))|UnknownErr|V(?:TypeNotSupp|alidateFailed))|xt(?:MenuProc|Parser(?:Bad(?:Par(?:amErr|serObjectErr)|T(?:ext(?:EncodingErr|LanguageErr)|okenValueErr))|No(?:MoreT(?:extErr|okensErr)|SuchTokenFoundErr)|ObjectNotFoundErr|ParamErr)))|h(?:eme(?:Bad(?:CursorIndexErr|TextColorErr)|HasNoAccentsErr|InvalidBrushErr|MonitorDepthNotSupportedErr|NoAppropriateBrushErr|Process(?:NotRegisteredErr|RegisteredErr)|ScriptFontNotFoundErr)|read(?:BadAppContextErr|NotFoundErr|ProtocolErr|TooManyReqsErr))|i(?:lde|me(?:Cycle(?:12|24|Zero)|NotIn(?:Media|Track|ViewErr)))|k0BadErr|ls_(?:ciphersuite_(?:AES_(?:128_GCM_SHA256|256_GCM_SHA384)|CHACHA20_POLY1305_SHA256|ECDHE_(?:ECDSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|CHACHA20_POLY1305_SHA256)|RSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:384)?|GCM_SHA384))|CHACHA20_POLY1305_SHA256))|RSA_WITH_(?:3DES_EDE_CBC_SHA|AES_(?:128_(?:CBC_SHA(?:256)?|GCM_SHA256)|256_(?:CBC_SHA(?:256)?|GCM_SHA384)))|group_(?:ats(?:_compatibility)?|compatibility|default|legacy))|protocol_version_(?:DTLSv1(?:0|2)|TLSv1(?:0|1|2|3)))|m(?:foErr|wdoErr)|o(?:g(?:Char(?:12HourBit|ZCycleBit)|Delta12HourBit|gle(?:B(?:ad(?:Char|Delta|Field|Num)|it)|Err(?:3|4|5)|O(?:K|utOfRange)|Un(?:defined|known)))|k(?:DecPoint|E(?:Minus|Plus|scape)|Le(?:ad(?:Placer|er)|ftQuote)|M(?:axSymbols|inusSign)|NonLeader|P(?:ercent|lusSign)|R(?:eserved|ightQuote)|Separator|Thousands|ZeroLead|en(?:1Quote|2(?:Equal|Quote)|A(?:l(?:pha|t(?:Num|Real))|mpersand|sterisk|tSign)|Ba(?:ckSlash|r)|C(?:a(?:pPi|r(?:at|et))|enterDot|o(?:lon(?:Equal)?|mma))|D(?:ivide|ollar)|E(?:llipsis|mpty|qual|rr|scape|xclam(?:Equal)?)|Fraction|Great(?:Equal(?:1|2))?|Hash|In(?:finity|t(?:egral|l(?:Currency)?))|L(?:e(?:ft(?:1Quote|2Quote|Bracket|C(?:omment|urly)|Enclose|Lit|Paren|SingGuillemet)|ss(?:Equal(?:1|2)|Great)?)|iteral)|Mi(?:cro|nus)|N(?:ewLine|il|o(?:BreakSpace|tEqual)|umeric)|O(?:K|verflow)|P(?:er(?:Thousand|cent|iod)|i|lus(?:Minus)?)|Question|R(?:e(?:alNum|serve(?:1|2))|ight(?:1Quote|2Quote|Bracket|C(?:omment|urly)|Enclose|Lit|Paren|SingGuillemet)|oot)|S(?:emicolon|igma|lash)|Tild(?:a|e)|Un(?:derline|known)|White))|oMany(?:Reqs|S(?:eps|kts)))|ra(?:ck(?:IDNotFound|NotInMovie)|shIconResource)|s(?:N(?:extSelectMode|ormalSelectMode)|PreviousSelectMode|m(?:AlreadyRegisteredErr|C(?:ant(?:ChangeForcedClassStateErr|OpenComponentErr)|omponent(?:AlreadyOpenErr|NoErr|Property(?:NotFoundErr|UnsupportedErr)))|D(?:efaultIsNotInputMethodErr|oc(?:NotActiveErr|Property(?:BufferTooSmallErr|NotFoundErr)|umentOpenErr))|In(?:putM(?:ethod(?:IsOldErr|NotFoundErr)|odeChangeFailedErr)|valid(?:Context|DocIDErr))|N(?:everRegisteredErr|o(?:Handler|MoreTokens|OpenTSErr|Stem|tAnAppErr))|ScriptHasNoIMErr|T(?:S(?:HasNoMenuErr|MDocBusyErr|NotOpenErr)|extServiceNotFoundErr)|U(?:n(?:knownErr|sup(?:ScriptLanguageErr|portedTypeErr))|seInputWindowErr)))|t(?:Disabled|Label(?:1|2|3|4|5|6|7)|None|O(?:ffline|pen)|Selected(?:Disabled|O(?:ffline|pen))?)|uneP(?:arseOSErr|layerFullOSErr)|woSideErr|ype(?:128BitFloatingPoint|32BitIcon|4BitIcon|8Bit(?:Icon|Mask)|A(?:E(?:Homograph(?:Accent|DicInfo|Weight)|List|Morpheme(?:PartOfSpeechCode|TextRange)|Record|T(?:E|ext)|UT)|SStorage|TS(?:FontRef|U(?:FontID|Size))|bsoluteOrdinal|lias|pp(?:Parameters|l(?:Signature|e(?:Event|Script)|ication(?:BundleID|URL)))|rc|uditToken)|B(?:est|oo(?:kmarkData|lean)|yte(?:Count|Offset))|C(?:F(?:A(?:bsoluteTime|rrayRef|ttributedStringRef)|BooleanRef|DictionaryRef|Index|Mutable(?:A(?:rrayRef|ttributedStringRef)|DictionaryRef|StringRef)|NumberRef|Range|StringRef|TypeRef)|G(?:ContextRef|Display(?:ChangeFlags|ID)|Float(?:72DPIGlobal|ScreenPixel)?|ImageRef)|String|T(?:Font(?:DescriptorRef|Ref)|GlyphInfoRef)|e(?:ll|ntimeters)|har|l(?:assInfo|ickActivationResult)|o(?:l(?:lection|orTable|umn)|mp(?:Descriptor|onentInstance)|n(?:ceptualTime|trol(?:ActionUPP|FrameMetrics|PartCode|Ref)))|u(?:bic(?:Centimeter|Feet|Inches|Meters|Yards)|rrentContainer))|D(?:CMFi(?:eldAttributes|ndMethod)|a(?:shStyle|ta)|e(?:cimalStruct|grees(?:C|F|K))|ra(?:gRef|wingArea))|E(?:PS|lemInfo|n(?:codedString|umerat(?:ed|ion))|vent(?:HotKeyID|Info|Re(?:cord|f)|Target(?:Options|Ref)))|F(?:MFont(?:Family|S(?:ize|tyle))|S(?:Ref|VolumeRefNum)|alse|eet|i(?:leURL|nderWindow|xed(?:Point|Rectangle)?)|ontColor)|G(?:DHandle|IF|WorldPtr|allons|lyph(?:InfoArray|Selector)|r(?:a(?:fPtr|ms|phic(?:Line|Text))|oupedGraphic))|HI(?:Command|Menu|ObjectRef|Point(?:72DPIGlobal|ScreenPixel)?|Rect(?:72DPIGlobal|ScreenPixel)?|S(?:hapeRef|ize(?:72DPIGlobal|ScreenPixel)?)|Toolbar(?:Display(?:Mode|Size)|ItemRef|Ref)|ViewTrackingAreaRef|Window)|I(?:EEE(?:32BitFloatingPoint|64BitFloatingPoint)|SO8601DateTime|con(?:AndMask|Family)|n(?:ches|d(?:exDescriptor|icatorDragConstraint)|sertionLoc|tl(?:Text|WritingCode)))|JPEG|K(?:e(?:rnelProcessID|yword)|ilo(?:grams|meters))|L(?:A(?:Homograph|Morpheme(?:Bundle|Path)?)|iters|o(?:gicalDescriptor|ng(?:DateTime|Fixed(?:Point|Rectangle)?|Point|Rectangle)|wLevelEventRecord))|M(?:ach(?:Port|ineLoc)|e(?:nu(?:Command|Direction|EventOptions|ItemIndex|Ref|TrackingMode)|ters)|iles|o(?:dalClickResult|use(?:Button|TrackingRef|WheelAxis)))|Null|O(?:S(?:A(?:DialectInfo|ErrorRange|GenericStorage)|LTokenList|Status)|bject(?:BeingExamined|Specifier)|ffsetArray|unces|val)|P(?:String|a(?:ramInfo|steboardRef)|i(?:ct|x(?:MapMinus|elMap))|o(?:lygon|unds)|ro(?:cessSerialNumber|p(?:Info|erty))|tr)|Q(?:D(?:Point|R(?:e(?:ctangle|gion)|gnHandle))|uarts)|R(?:GB(?:16|96|Color)|angeDescriptor|e(?:ctangle|fCon|lative(?:Descriptor|Time)|plyPortAttr)|o(?:tation|undedRectangle|w))|S(?:Int(?:16|32|64)|R(?:Recognizer|SpeechResult)|c(?:r(?:ap(?:Ref|Styles)|ipt)|szResource)|ec(?:IdentityRef|tionH)|ignedByte(?:Count|Offset)|mall(?:32BitIcon|4BitIcon|8Bit(?:Icon|Mask)|IconAndMask)|ound|quare(?:Feet|Kilometers|M(?:eters|iles)|Yards)|tyled(?:Text|UnicodeText)|uiteInfo)|T(?:IFF|able(?:tP(?:oint(?:Rec|erRec)|roximityRec))?|ext(?:Range(?:Array)?|Styles)?|hemeMenu(?:ItemType|State|Type)|oken|rue|ype)|U(?:Int(?:16|32|64)|TF(?:16ExternalRepresentation|8Text)|nicodeText|serRecordFields)|V(?:ersion|oidPtr)|W(?:hose(?:Descriptor|Range)|i(?:ldCard|ndow(?:DefPartCode|Modality|PartCode|Re(?:f|gionCode)|Transition(?:Action|Effect))))|Yards))|u(?:n(?:doDev|i(?:code(?:BufErr|C(?:h(?:arErr|ecksumErr)|ontextualErr)|DirectionErr|ElementErr|FallbacksErr|No(?:TableErr|tFoundErr)|PartConvertErr|T(?:ableFormatErr|extEncodingDataErr)|VariantErr)|mpErr|t(?:EmptyErr|TblFullErr))|known(?:FormatErr|InsertModeErr)|resolvedComponentDLLErr|supported(?:AuxiliaryImportData|ForPlatformErr|OSErr|ProcessorErr))|p(?:d(?:PixMemErr|ate(?:Dev|Evt|Mask))|p(?:C(?:allComponent(?:C(?:anDoProcInfo|loseProcInfo)|Get(?:MPWorkFunctionProcInfo|PublicResourceProcInfo)|OpenProcInfo|RegisterProcInfo|TargetProcInfo|UnregisterProcInfo|VersionProcInfo)|omponent(?:FunctionImplementedProcInfo|SetTargetProcInfo))|GetComponentVersionProcInfo))|rlDataH(?:FTP(?:Bad(?:NameListErr|PasswordErr|UserErr)|DataConnectionErr|FilenameErr|N(?:eedPasswordErr|o(?:DirectoryErr|NetDriverErr|PasswordErr))|P(?:ermissionsErr|rotocolErr)|QuotaErr|S(?:erver(?:DisconnectedErr|Err)|hutdownErr)|URLErr)|HTTP(?:NoNetDriverErr|ProtocolErr|RedirectErr|URLErr))|se(?:A(?:Talk|sync)|ExtClk|Free|MIDI|r(?:Break|CanceledErr|DataItemNotFound|Item|Kind|RejectErr)))|v(?:AxisOnly|LckdErr|Typ(?:Err|e)|a(?:lid(?:DateFields|InstancesExist)|riationFontTableTag)|er(?:A(?:frikaans|lternateGr|r(?:abi(?:a|c)|menia(?:n)?)|ustr(?:alia|ia(?:German)?))|B(?:e(?:l(?:arus|giumLux(?:Point)?)|ngali)|hutan|r(?:azil|eton|it(?:ain|tany))|ulgaria|yeloRussian)|C(?:a(?:nada(?:Comma|Point)|talonia)|hina|roatia|yprus|zech)|Denmark|E(?:astAsiaGeneric|ngCanada|rr|s(?:peranto|tonia))|F(?:a(?:eroeIsl|r(?:EastGeneric|oeIsl))|inland|lemish(?:Point)?|r(?:Belgium(?:Lux)?|Canada|Swiss|ance|enchUniversal))|G(?:e(?:nericFE|orgia(?:n)?|rman(?:Reformed|y))|r(?:Swiss|ee(?:ce(?:Alt|Poly)?|kAncient|nland))|ujarati)|Hungary|I(?:celand|n(?:dia(?:Hindi|Urdu)?|ternational)|r(?:an|eland(?:English)?|ishGaelicScript)|srael|tal(?:ianSwiss|y))|Japan|Korea|L(?:a(?:pland|tvia)|ithuania)|M(?:a(?:cedonia(?:n)?|gyar|lta|nxGaelic|rathi)|ultilingual)|N(?:e(?:pal|therlands(?:Comma)?)|orway|unavut|ynorsk)|P(?:akistan(?:Urdu)?|o(?:land|rtugal)|unjabi)|R(?:omania|u(?:mania|ssia))|S(?:ami|c(?:ottishGaelic|riptGeneric)|erbia(?:n)?|ingapore|lov(?:ak|enia(?:n)?)|p(?:LatinAmerica|ain)|weden)|T(?:aiwan|hailand|ibet(?:an)?|onga|urk(?:ey|ishModified))|U(?:S|kra(?:ine|nia)|nspecified|zbek)|Vietnam|W(?:ales|elsh)|Yugo(?:Croatian|slavia)|variant(?:Denmark|Norway|Portugal))|ideoOutputInUseErr|m(?:AddressNotInFileViewErr|B(?:adDriver|usyBackingFileErr)|FileViewAccessErr|Invalid(?:BackingFileIDErr|FileViewIDErr|OwningProcessErr)|KernelMMUInitErr|M(?:appingPrivilegesErr|emLckdErr|orePhysicalThanVirtualErr)|No(?:More(?:BackingFilesErr|FileViewsErr)|VectorErr)|OffErr)|o(?:iceNotFound|l(?:GoneErr|Mount(?:Changed(?:Bit|Mask)|ExtendedFlags(?:Bit|Mask)|FSReservedMask|Interact(?:Bit|Mask)|NoLoginMsgFlag(?:Bit|Mask)|SysReservedMask)|O(?:ffLinErr|nLinErr)|VMBusyErr)))|w(?:C(?:alcRgns|ontentColor)|D(?:ispose|raw(?:GIcon)?)|FrameColor|Grow|Hi(?:liteColor|t)|In(?:Co(?:llapseBox|ntent)|Drag|G(?:oAway|row)|ProxyIcon|Structure|ToolbarButton|Zoom(?:In|Out))|N(?:ew|oHit)|PrErr|T(?:extColor|itleBarColor)|ack(?:Bad(?:FileErr|MetaDataErr)|ForkNotFoundErr)|eekOfYear(?:Field|Mask)|fFileNotFound|indow(?:A(?:ppModalStateAlreadyExistsErr|ttribute(?:ImmutableErr|sConflictErr))|GroupInvalidErr|ManagerInternalErr|NoAppModalStateErr|WrongStateErr)|r(?:PermErr|Underrun|gVolTypErr|it(?:Err|eReference|ingPastEnd)|ongApplicationPlatform))|y(?:dm|ear(?:Field|Mask)|md)|z(?:eroCycle|oom(?:DocProc|NoGrow)))\\b", + "name": "support.constant.c" + }, { "match": "\\bkCFNumberFormatter(?:Currency(?:AccountingStyle|ISOCodeStyle|PluralStyle)|OrdinalStyle)\\b", "name": "support.constant.cf.10.11.c" @@ -57,6 +209,14 @@ "match": "\\bkCFISO8601DateFormatWith(?:ColonSeparatorInTime(?:Zone)?|Da(?:shSeparatorInDate|y)|Full(?:Date|Time)|InternetDateTime|Month|SpaceBetweenDateAndTime|Time(?:Zone)?|WeekOfYear|Year)\\b", "name": "support.constant.cf.10.12.c" }, + { + "match": "\\bkCFISO8601DateFormatWithFractionalSeconds\\b", + "name": "support.constant.cf.10.13.c" + }, + { + "match": "\\bkCFURLEnumeratorGenerateRelativePathURLs\\b", + "name": "support.constant.cf.10.15.c" + }, { "match": "\\bkCFFileSecurityClear(?:AccessControlList|Group(?:UUID)?|Mode|Owner(?:UUID)?)\\b", "name": "support.constant.cf.10.8.c" @@ -65,6 +225,10 @@ "match": "\\b(?:CF(?:ByteOrder(?:BigEndian|LittleEndian|Unknown)|NotificationSuspensionBehavior(?:Coalesce|D(?:eliverImmediately|rop)|Hold))|kCF(?:B(?:ookmarkResolutionWithout(?:MountingMask|UIMask)|undleExecutableArchitecture(?:I386|PPC(?:64)?|X86_64))|C(?:alendar(?:ComponentsWrap|Unit(?:Day|Era|Hour|M(?:inute|onth)|Quarter|Second|Week(?:Of(?:Month|Year)|day(?:Ordinal)?)|Year(?:ForWeekOfYear)?))|haracterSet(?:AlphaNumeric|C(?:apitalizedLetter|ontrol)|Dec(?:imalDigit|omposable)|Illegal|L(?:etter|owercaseLetter)|N(?:ewline|onBase)|Punctuation|Symbol|UppercaseLetter|Whitespace(?:AndNewline)?)|ompare(?:Anchored|Backwards|CaseInsensitive|DiacriticInsensitive|EqualTo|ForcedOrdering|GreaterThan|L(?:essThan|ocalized)|N(?:onliteral|umerically)|WidthInsensitive))|Dat(?:aSearch(?:Anchored|Backwards)|eFormatter(?:FullStyle|LongStyle|MediumStyle|NoStyle|ShortStyle))|FileDescriptor(?:ReadCallBack|WriteCallBack)|LocaleLanguageDirection(?:BottomToTop|LeftToRight|RightToLeft|TopToBottom|Unknown)|MessagePort(?:BecameInvalidError|IsInvalid|ReceiveTimeout|S(?:endTimeout|uccess)|TransportError)|N(?:otification(?:DeliverImmediately|PostToAllSessions)|umber(?:C(?:FIndexType|GFloatType|harType)|DoubleType|F(?:loat(?:32Type|64Type|Type)|ormatter(?:CurrencyStyle|DecimalStyle|NoStyle|P(?:a(?:d(?:After(?:Prefix|Suffix)|Before(?:Prefix|Suffix))|rseIntegersOnly)|ercentStyle)|Round(?:Ceiling|Down|Floor|Half(?:Down|Even|Up)|Up)|S(?:cientificStyle|pellOutStyle)))|IntType|Long(?:LongType|Type)|MaxType|NSIntegerType|S(?:Int(?:16Type|32Type|64Type|8Type)|hortType)))|PropertyList(?:BinaryFormat_v1_0|Immutable|MutableContainers(?:AndLeaves)?|OpenStepFormat|Read(?:CorruptError|StreamError|UnknownVersionError)|WriteStreamError|XMLFormat_v1_0)|RunLoop(?:A(?:fterWaiting|llActivities)|Before(?:Sources|Timers|Waiting)|E(?:ntry|xit)|Run(?:Finished|HandledSource|Stopped|TimedOut))|S(?:ocket(?:A(?:cceptCallBack|utomaticallyReenable(?:AcceptCallBack|DataCallBack|ReadCallBack|WriteCallBack))|C(?:loseOnInvalidate|onnectCallBack)|DataCallBack|Error|LeaveErrors|NoCallBack|ReadCallBack|Success|Timeout|WriteCallBack)|tr(?:eam(?:E(?:rrorDomain(?:Custom|MacOSStatus|POSIX)|vent(?:CanAcceptBytes|E(?:ndEncountered|rrorOccurred)|HasBytesAvailable|None|OpenCompleted))|Status(?:AtEnd|Closed|Error|NotOpen|Open(?:ing)?|Reading|Writing))|ing(?:Encoding(?:A(?:NSEL|SCII)|Big5(?:_(?:E|HKSCS_1999))?|CNS_11643_92_P(?:1|2|3)|DOS(?:Arabic|BalticRim|C(?:anadianFrench|hinese(?:Simplif|Trad)|yrillic)|Greek(?:1|2)?|Hebrew|Icelandic|Japanese|Korean|Latin(?:1|2|US)|Nordic|Portuguese|Russian|T(?:hai|urkish))|E(?:BCDIC_(?:CP037|US)|UC_(?:CN|JP|KR|TW))|GB(?:K_95|_(?:18030_2000|2312_80))|HZ_GB_2312|ISO(?:Latin(?:1(?:0)?|2|3|4|5|6|7|8|9|Arabic|Cyrillic|Greek|Hebrew|Thai)|_2022_(?:CN(?:_EXT)?|JP(?:_(?:1|2|3))?|KR))|JIS_(?:C6226_78|X02(?:0(?:1_76|8_(?:83|90))|12_90))|K(?:OI8_(?:R|U)|SC_5601_(?:87|92_Johab))|Mac(?:Ar(?:abic|menian)|B(?:engali|urmese)|C(?:e(?:ltic|ntralEurRoman)|hinese(?:Simp|Trad)|roatian|yrillic)|D(?:evanagari|ingbats)|E(?:thiopic|xtArabic)|Farsi|G(?:aelic|eorgian|reek|u(?:jarati|rmukhi))|H(?:FS|ebrew)|I(?:celandic|nuit)|Japanese|K(?:annada|hmer|orean)|Laotian|M(?:alayalam|ongolian)|Oriya|Roman(?:Latin1|ian)?|S(?:inhalese|ymbol)|T(?:amil|elugu|hai|ibetan|urkish)|Ukrainian|V(?:T100|ietnamese))|N(?:extStep(?:Japanese|Latin)|onLossyASCII)|ShiftJIS(?:_X0213(?:_(?:00|MenKuTen))?)?|U(?:TF(?:16(?:BE|LE)?|32(?:BE|LE)?|7(?:_IMAP)?|8)|nicode)|VISCII|Windows(?:Arabic|BalticRim|Cyrillic|Greek|Hebrew|KoreanJohab|Latin(?:1|2|5)|Vietnamese))|NormalizationForm(?:C|D|K(?:C|D))|Tokenizer(?:AttributeLa(?:nguage|tinTranscription)|Token(?:Has(?:DerivedSubTokensMask|HasNumbersMask|NonLettersMask|SubTokensMask)|IsCJWordMask|No(?:ne|rmal))|Unit(?:LineBreak|Paragraph|Sentence|Word(?:Boundary)?)))))|TimeZoneNameStyle(?:DaylightSaving|Generic|S(?:hort(?:DaylightSaving|Generic|Standard)|tandard))|U(?:RL(?:Bookmark(?:Creation(?:MinimalBookmarkMask|S(?:ecurityScopeAllowOnlyReadAccess|uitableForBookmarkFile)|WithSecurityScope)|ResolutionWith(?:SecurityScope|out(?:MountingMask|UIMask)))|Component(?:Fragment|Host|NetLocation|P(?:a(?:rameterString|ssword|th)|ort)|Query|ResourceSpecifier|Scheme|User(?:Info)?)|Enumerator(?:D(?:e(?:faultBehavior|scendRecursively)|irectoryPostOrderSuccess)|E(?:nd|rror)|GenerateFileReferenceURLs|IncludeDirectoriesP(?:ostOrder|reOrder)|S(?:kip(?:Invisibles|PackageContents)|uccess))|POSIXPathStyle|WindowsPathStyle)|serNotification(?:AlternateResponse|Ca(?:ncelResponse|utionAlertLevel)|DefaultResponse|No(?:DefaultButtonFlag|teAlertLevel)|OtherResponse|PlainAlertLevel|StopAlertLevel|UseRadioButtonsFlag))|XML(?:E(?:ntityType(?:Character|Par(?:ameter|sed(?:External|Internal))|Unparsed)|rror(?:E(?:lementlessDocument|ncodingConversionFailure)|Malformed(?:C(?:DSect|haracterReference|loseTag|omment)|D(?:TD|ocument)|Name|P(?:arsedCharacterData|rocessingInstruction)|StartTag)|NoData|Un(?:expectedEOF|knownEncoding)))|Node(?:CurrentVersion|Type(?:Attribute(?:ListDeclaration)?|C(?:DATASection|omment)|Document(?:Fragment|Type)?|E(?:lement(?:TypeDeclaration)?|ntity(?:Reference)?)|Notation|ProcessingInstruction|Text|Whitespace))|Parser(?:A(?:ddImpliedAttributes|llOptions)|NoOptions|Re(?:placePhysicalEntities|solveExternalEntities)|Skip(?:MetaData|Whitespace)|ValidateDocument)|StatusParse(?:InProgress|NotBegun|Successful))))\\b", "name": "support.constant.cf.c" }, + { + "match": "\\bDISPATCH_WALLTIME_NOW\\b", + "name": "support.constant.clib.10.14.c" + }, { "match": "\\b(?:FILESEC_(?:ACL(?:_(?:ALLOCSIZE|RAW))?|GR(?:OUP|PUUID)|MODE|OWNER|UUID)|P_(?:ALL|P(?:GID|ID)))\\b", "name": "support.constant.clib.c" @@ -86,23 +250,39 @@ "name": "support.constant.os.c" }, { - "match": "\\bkCGImageByteOrder(?:16(?:Big|Little)|32(?:Big|Little)|Mask)\\b", - "name": "support.constant.quartz.10.12.c" + "match": "\\bkCGImagePixelFormat(?:Mask|Packed|RGB(?:101010|5(?:55|65)|CIF10))\\b", + "name": "support.constant.quartz.10.14.c" }, { - "match": "\\b(?:CG(?:GlyphM(?:ax|in)|PDFDataFormat(?:JPEG(?:2000|Encoded)|Raw)|RectM(?:ax(?:XEdge|YEdge)|in(?:XEdge|YEdge)))|kCG(?:A(?:nnotatedSessionEventTap|ssistiveTechHighWindowLevelKey)|B(?:a(?:ck(?:ingStore(?:Buffered|Nonretained|Retained)|stopMenuLevelKey)|seWindowLevelKey)|itmap(?:AlphaInfoMask|ByteOrder(?:16(?:Big|Little)|32(?:Big|Little)|Default|Mask)|Float(?:Components|InfoMask))|lendMode(?:C(?:lear|o(?:lor(?:Burn|Dodge)?|py))|D(?:arken|estination(?:Atop|In|O(?:ut|ver))|ifference)|Exclusion|H(?:ardLight|ue)|L(?:ighten|uminosity)|Multiply|Normal|Overlay|Plus(?:Darker|Lighter)|S(?:aturation|creen|o(?:ftLight|urce(?:Atop|In|Out)))|XOR))|C(?:aptureNo(?:Fill|Options)|o(?:lor(?:ConversionTransform(?:ApplySpace|FromSpace|ToSpace)|SpaceModel(?:CMYK|DeviceN|Indexed|Lab|Monochrome|Pattern|RGB|Unknown))|nfigure(?:For(?:AppOnly|Session)|Permanently))|ursorWindowLevelKey)|D(?:esktop(?:IconWindowLevelKey|WindowLevelKey)|isplay(?:AddFlag|BeginConfigurationFlag|D(?:esktopShapeChangedFlag|isabledFlag)|EnabledFlag|M(?:irrorFlag|ovedFlag)|RemoveFlag|S(?:etM(?:ainFlag|odeFlag)|tream(?:FrameStatus(?:Frame(?:Blank|Complete|Idle)|Stopped)|Update(?:DirtyRects|MovedRects|Re(?:ducedDirtyRects|freshedRects))))|UnMirrorFlag)|ockWindowLevelKey|raggingWindowLevelKey)|E(?:rror(?:CannotComplete|Failure|I(?:llegalArgument|nvalid(?:Con(?:nection|text)|Operation))|No(?:neAvailable|tImplemented)|RangeCheck|Success|TypeCheck)|vent(?:F(?:ilterMaskPermit(?:Local(?:KeyboardEvents|MouseEvents)|SystemDefinedEvents)|lag(?:Mask(?:Al(?:phaShift|ternate)|Co(?:mmand|ntrol)|Help|N(?:onCoalesced|umericPad)|S(?:econdaryFn|hift))|sChanged))|Key(?:Down|Up)|LeftMouse(?:D(?:own|ragged)|Up)|Mouse(?:Moved|Subtype(?:Default|TabletP(?:oint|roximity)))|Null|OtherMouse(?:D(?:own|ragged)|Up)|RightMouse(?:D(?:own|ragged)|Up)|S(?:crollWheel|ource(?:GroupID|State(?:CombinedSessionState|HIDSystemState|ID|Private)|U(?:nixProcessID|ser(?:Data|ID)))|uppressionState(?:RemoteMouseDrag|SuppressionInterval))|Ta(?:bletP(?:ointer|roximity)|p(?:DisabledBy(?:Timeout|UserInput)|Option(?:Default|ListenOnly))|rget(?:ProcessSerialNumber|UnixProcessID))))|F(?:loatingWindowLevelKey|ontPostScriptFormatType(?:1|3|42))|G(?:esturePhase(?:Began|C(?:ancelled|hanged)|Ended|MayBegin|None)|radientDraws(?:AfterEndLocation|BeforeStartLocation))|H(?:IDEventTap|e(?:adInsertEventTap|lpWindowLevelKey))|I(?:mageAlpha(?:First|Last|None(?:Skip(?:First|Last))?|Only|Premultiplied(?:First|Last))|nterpolation(?:Default|High|Low|Medium|None))|KeyboardEvent(?:Autorepeat|Key(?:boardType|code))|Line(?:Cap(?:Butt|Round|Square)|Join(?:Bevel|Miter|Round))|M(?:a(?:inMenuWindowLevelKey|ximumWindowLevelKey)|inimumWindowLevelKey|o(?:dalPanelWindowLevelKey|mentumScrollPhase(?:Begin|Continue|End|None)|use(?:Button(?:Center|Left|Right)|Event(?:ButtonNumber|ClickState|Delta(?:X|Y)|InstantMouser|Number|Pressure|Subtype|WindowUnderMousePointer(?:ThatCanHandleThisEvent)?))))|N(?:ormalWindowLevelKey|umberOf(?:EventSuppressionStates|WindowLevelKeys))|OverlayWindowLevelKey|P(?:DF(?:ArtBox|BleedBox|CropBox|MediaBox|ObjectType(?:Array|Boolean|Dictionary|Integer|N(?:ame|ull)|Real|Str(?:eam|ing))|TrimBox)|at(?:h(?:E(?:OFill(?:Stroke)?|lement(?:Add(?:CurveToPoint|LineToPoint|QuadCurveToPoint)|CloseSubpath|MoveToPoint))|Fill(?:Stroke)?|Stroke)|ternTiling(?:ConstantSpacing(?:MinimalDistortion)?|NoDistortion))|opUpMenuWindowLevelKey)|RenderingIntent(?:AbsoluteColorimetric|Default|Perceptual|RelativeColorimetric|Saturation)|S(?:cr(?:een(?:SaverWindowLevelKey|UpdateOperation(?:Move|Re(?:ducedDirtyRectangleCount|fresh)))|oll(?:EventUnit(?:Line|Pixel)|Phase(?:Began|C(?:ancelled|hanged)|Ended|MayBegin)|WheelEvent(?:DeltaAxis(?:1|2|3)|FixedPtDeltaAxis(?:1|2|3)|I(?:nstantMouser|sContinuous)|MomentumPhase|PointDeltaAxis(?:1|2|3)|Scroll(?:Count|Phase))))|essionEventTap|tatusWindowLevelKey)|T(?:a(?:blet(?:Event(?:DeviceID|Point(?:Buttons|Pressure|X|Y|Z)|Rotation|T(?:angentialPressure|ilt(?:X|Y))|Vendor(?:1|2|3))|ProximityEvent(?:CapabilityMask|DeviceID|EnterProximity|Pointer(?:ID|Type)|SystemTabletID|TabletID|Vendor(?:ID|Pointer(?:SerialNumber|Type)|UniqueID)))|ilAppendEventTap)|ext(?:Clip|Fill(?:Clip|Stroke(?:Clip)?)?|Invisible|Stroke(?:Clip)?)|ornOffMenuWindowLevelKey)|UtilityWindowLevelKey|Window(?:Image(?:B(?:estResolution|oundsIgnoreFraming)|Default|NominalResolution|OnlyShadows|ShouldBeOpaque)|List(?:ExcludeDesktopElements|Option(?:All|IncludingWindow|OnScreen(?:AboveWindow|BelowWindow|Only)))|Sharing(?:None|Read(?:Only|Write)))))\\b", + "match": "\\bCGPDFTagType(?:A(?:nnotation|rt)|B(?:ibliography|lockQuote)|C(?:aption|ode)|D(?:iv|ocument)|F(?:igure|orm(?:ula)?)|Header(?:1|2|3|4|5|6)?|Index|L(?:abel|i(?:nk|st(?:Body|Item)?))|No(?:nStructure|te)|P(?:ar(?:agraph|t)|rivate)|Quote|R(?:eference|uby(?:AnnotationText|BaseText|Punctuation)?)|S(?:ection|pan)|T(?:OC(?:I)?|able(?:Body|DataCell|Footer|Header(?:Cell)?|Row)?)|Warichu(?:Punctiation|Text)?)\\b", + "name": "support.constant.quartz.10.15.c" + }, + { + "match": "\\b(?:CG(?:GlyphM(?:ax|in)|PDFDataFormat(?:JPEG(?:2000|Encoded)|Raw)|RectM(?:ax(?:XEdge|YEdge)|in(?:XEdge|YEdge)))|kCG(?:A(?:nnotatedSessionEventTap|ssistiveTechHighWindowLevelKey)|B(?:a(?:ck(?:ingStore(?:Buffered|Nonretained|Retained)|stopMenuLevelKey)|seWindowLevelKey)|itmap(?:AlphaInfoMask|ByteOrder(?:16(?:Big|Little)|32(?:Big|Little)|Default|Mask)|Float(?:Components|InfoMask))|lendMode(?:C(?:lear|o(?:lor(?:Burn|Dodge)?|py))|D(?:arken|estination(?:Atop|In|O(?:ut|ver))|ifference)|Exclusion|H(?:ardLight|ue)|L(?:ighten|uminosity)|Multiply|Normal|Overlay|Plus(?:Darker|Lighter)|S(?:aturation|creen|o(?:ftLight|urce(?:Atop|In|Out)))|XOR))|C(?:aptureNo(?:Fill|Options)|o(?:lor(?:ConversionTransform(?:ApplySpace|FromSpace|ToSpace)|SpaceModel(?:CMYK|DeviceN|Indexed|Lab|Monochrome|Pattern|RGB|Unknown|XYZ))|nfigure(?:For(?:AppOnly|Session)|Permanently))|ursorWindowLevelKey)|D(?:esktop(?:IconWindowLevelKey|WindowLevelKey)|isplay(?:AddFlag|BeginConfigurationFlag|D(?:esktopShapeChangedFlag|isabledFlag)|EnabledFlag|M(?:irrorFlag|ovedFlag)|RemoveFlag|S(?:etM(?:ainFlag|odeFlag)|tream(?:FrameStatus(?:Frame(?:Blank|Complete|Idle)|Stopped)|Update(?:DirtyRects|MovedRects|Re(?:ducedDirtyRects|freshedRects))))|UnMirrorFlag)|ockWindowLevelKey|raggingWindowLevelKey)|E(?:rror(?:CannotComplete|Failure|I(?:llegalArgument|nvalid(?:Con(?:nection|text)|Operation))|No(?:neAvailable|tImplemented)|RangeCheck|Success|TypeCheck)|vent(?:F(?:ilterMaskPermit(?:Local(?:KeyboardEvents|MouseEvents)|SystemDefinedEvents)|lag(?:Mask(?:Al(?:phaShift|ternate)|Co(?:mmand|ntrol)|Help|N(?:onCoalesced|umericPad)|S(?:econdaryFn|hift))|sChanged))|Key(?:Down|Up)|LeftMouse(?:D(?:own|ragged)|Up)|Mouse(?:Moved|Subtype(?:Default|TabletP(?:oint|roximity)))|Null|OtherMouse(?:D(?:own|ragged)|Up)|RightMouse(?:D(?:own|ragged)|Up)|S(?:crollWheel|ource(?:GroupID|State(?:CombinedSessionState|HIDSystemState|ID|Private)|U(?:nixProcessID|ser(?:Data|ID)))|uppressionState(?:RemoteMouseDrag|SuppressionInterval))|Ta(?:bletP(?:ointer|roximity)|p(?:DisabledBy(?:Timeout|UserInput)|Option(?:Default|ListenOnly))|rget(?:ProcessSerialNumber|UnixProcessID))|UnacceleratedPointerMovement(?:X|Y)))|F(?:loatingWindowLevelKey|ontPostScriptFormatType(?:1|3|42))|G(?:esturePhase(?:Began|C(?:ancelled|hanged)|Ended|MayBegin|None)|radientDraws(?:AfterEndLocation|BeforeStartLocation))|H(?:IDEventTap|e(?:adInsertEventTap|lpWindowLevelKey))|I(?:mage(?:Alpha(?:First|Last|None(?:Skip(?:First|Last))?|Only|Premultiplied(?:First|Last))|ByteOrder(?:16(?:Big|Little)|32(?:Big|Little)|Default|Mask))|nterpolation(?:Default|High|Low|Medium|None))|KeyboardEvent(?:Autorepeat|Key(?:boardType|code))|Line(?:Cap(?:Butt|Round|Square)|Join(?:Bevel|Miter|Round))|M(?:a(?:inMenuWindowLevelKey|ximumWindowLevelKey)|inimumWindowLevelKey|o(?:dalPanelWindowLevelKey|mentumScrollPhase(?:Begin|Continue|End|None)|use(?:Button(?:Center|Left|Right)|Event(?:ButtonNumber|ClickState|Delta(?:X|Y)|InstantMouser|Number|Pressure|Subtype|WindowUnderMousePointer(?:ThatCanHandleThisEvent)?))))|N(?:ormalWindowLevelKey|umberOf(?:EventSuppressionStates|WindowLevelKeys))|OverlayWindowLevelKey|P(?:DF(?:A(?:llows(?:Co(?:mmenting|ntent(?:Accessibility|Copying))|Document(?:Assembly|Changes)|FormFieldEntry|HighQualityPrinting|LowQualityPrinting)|rtBox)|BleedBox|CropBox|MediaBox|ObjectType(?:Array|Boolean|Dictionary|Integer|N(?:ame|ull)|Real|Str(?:eam|ing))|TrimBox)|at(?:h(?:E(?:OFill(?:Stroke)?|lement(?:Add(?:CurveToPoint|LineToPoint|QuadCurveToPoint)|CloseSubpath|MoveToPoint))|Fill(?:Stroke)?|Stroke)|ternTiling(?:ConstantSpacing(?:MinimalDistortion)?|NoDistortion))|opUpMenuWindowLevelKey)|RenderingIntent(?:AbsoluteColorimetric|Default|Perceptual|RelativeColorimetric|Saturation)|S(?:cr(?:een(?:SaverWindowLevelKey|UpdateOperation(?:Move|Re(?:ducedDirtyRectangleCount|fresh)))|oll(?:EventUnit(?:Line|Pixel)|Phase(?:Began|C(?:ancelled|hanged)|Ended|MayBegin)|WheelEvent(?:DeltaAxis(?:1|2|3)|FixedPtDeltaAxis(?:1|2|3)|I(?:nstantMouser|sContinuous)|MomentumPhase|PointDeltaAxis(?:1|2|3)|Scroll(?:Count|Phase))))|essionEventTap|tatusWindowLevelKey)|T(?:a(?:blet(?:Event(?:DeviceID|Point(?:Buttons|Pressure|X|Y|Z)|Rotation|T(?:angentialPressure|ilt(?:X|Y))|Vendor(?:1|2|3))|ProximityEvent(?:CapabilityMask|DeviceID|EnterProximity|Pointer(?:ID|Type)|SystemTabletID|TabletID|Vendor(?:ID|Pointer(?:SerialNumber|Type)|UniqueID)))|ilAppendEventTap)|ext(?:Clip|Fill(?:Clip|Stroke(?:Clip)?)?|Invisible|Stroke(?:Clip)?)|ornOffMenuWindowLevelKey)|UtilityWindowLevelKey|Window(?:Image(?:B(?:estResolution|oundsIgnoreFraming)|Default|NominalResolution|OnlyShadows|ShouldBeOpaque)|List(?:ExcludeDesktopElements|Option(?:All|IncludingWindow|OnScreen(?:AboveWindow|BelowWindow|Only)))|Sharing(?:None|Read(?:Only|Write)))))\\b", "name": "support.constant.quartz.c" }, + { + "match": "\\bcl_device_id\\b", + "name": "support.type.10.10.c" + }, + { + "match": "\\b(?:JSTypedArrayType|SecKey(?:Algorithm|KeyExchangeParameter)|os_unfair_lock(?:_t)?)\\b", + "name": "support.type.10.12.c" + }, + { + "match": "\\b(?:A(?:E(?:A(?:ddressDesc|rray(?:Data(?:Pointer)?|Type))|BuildError(?:Code)?|Coerc(?:e(?:Desc(?:ProcPtr|UPP)|Ptr(?:ProcPtr|UPP))|ionHandlerUPP)|D(?:ataStorage(?:Type)?|esc(?:List|Ptr)?|isposeExternal(?:ProcPtr|UPP))|Event(?:Class|Handler(?:ProcPtr|UPP)|ID|Source)|Filter(?:ProcPtr|UPP)|I(?:dle(?:ProcPtr|UPP)|nteractAllowed)|Key(?:Desc|word)|Re(?:cord|moteProcessResolver(?:C(?:allback|ontext)|Ref)?|turnID)|S(?:end(?:Mode|Priority)|treamRef)|TransactionID)|FP(?:AlternateAddress|ServerSignature|TagData|VolMountInfo(?:Ptr)?|XVolMountInfo(?:Ptr)?)|HTOCType|IFFLoop|LMX(?:GlyphEntry|Header)|TS(?:Cu(?:bic(?:C(?:losePath(?:ProcPtr|UPP)|urveTo(?:ProcPtr|UPP))|LineTo(?:ProcPtr|UPP)|MoveTo(?:ProcPtr|UPP))|rveType)|F(?:SSpec|latData(?:Font(?:NameDataHeader|Spec(?:RawNameData(?:Header)?|iferType))|L(?:ayoutControlsDataHeader|ineInfo(?:Data|Header))|MainHeaderBlock|Style(?:List(?:FeatureData|Header|StyleDataHeader|VariationData)|RunDataHeader)|TextLayout(?:DataHeader|Header))|ont(?:A(?:pplierFunction|utoActivationSetting)|Cont(?:ainerRef|ext)|F(?:amily(?:ApplierFunction|Iterator(?:_)?|Ref)|ilter(?:Selector)?|ormat)|Iterator(?:_)?|Metrics|Notif(?:ication(?:InfoRef(?:_)?|Ref(?:_)?)|y(?:Action|Option))|Query(?:Callback|MessageID|SourceContext)|Ref|Size))|G(?:eneration|lyph(?:I(?:dealMetrics|nfoFlags)|Ref|ScreenMetrics|Vector))|Just(?:PriorityWidthDeltaOverrides|WidthDeltaEntryOverride)|L(?:ayoutRecord|ineLayoutOptions)|NotificationCallback|OptionFlags|Point|Quadratic(?:C(?:losePath(?:ProcPtr|UPP)|urve(?:ProcPtr|UPP))|Line(?:ProcPtr|UPP)|NewPath(?:ProcPtr|UPP))|StyleRenderingOptions|Trapezoid|U(?:Attribute(?:Info|Tag|ValuePtr)|Background(?:Color|Data(?:Type)?)|C(?:aret|ur(?:sorMovementType|vePath(?:s)?))|Direct(?:DataSelector|LayoutOperationOverride(?:ProcPtr|UPP))|F(?:latten(?:StyleRunOptions|edDataStreamFormat)|ont(?:F(?:allback(?:Method|s)|eature(?:Selector|Type))|ID|Variation(?:Axis|Value)))|Glyph(?:Info(?:Array)?|Selector)|HighlightMethod|L(?:ayoutOperation(?:CallbackStatus|OverrideSpecifier|Selector)|ine(?:Ref|Truncation))|RGBAlphaColor|Style(?:Comparison|LineCountType|RunInfo|SettingRef)?|T(?:ab(?:Type)?|ext(?:Layout|Measurement))|Un(?:FlattenStyleRunOptions|highlightData)|VerticalCharacterType))|U(?:3DMixer(?:AttenuationCurve|RenderingFlags)|ChannelInfo|D(?:ependentParameter|istanceAttenuationData)|EventListener(?:Block|Proc|Ref)|Graph|Host(?:Identifier|VersionIdentifier)|InputSamplesInOutputCallback(?:Struct)?|ListenerBase|MIDIOutputCallback(?:Struct)?|N(?:ode(?:Connection|Interaction|RenderCallback)?|umVersion)|P(?:arameter(?:EventType|Listener(?:Block|Proc|Ref)|MIDIMapping(?:Flags)?)|reset(?:Event)?)|Re(?:nderCallback(?:Struct)?|verbRoomType)|S(?:ampler(?:BankPresetData|InstrumentData)|cheduledAudioSliceFlags|patial(?:Mixer(?:AttenuationCurve|RenderingFlags)|izationAlgorithm)))|V(?:Audio(?:Integer|SessionErrorCode|UInteger)|L(?:CompareItems(?:ProcPtr|UPP)|DisposeItem(?:ProcPtr|UPP)|ItemSize(?:ProcPtr|UPP)|NodeType|Order|Tree(?:Ptr|Struct)|VisitStage|Walk(?:ProcPtr|UPP)))|X(?:CopyMultipleAttributeOptions|Error|MenuItemModifiers|Observer(?:Callback(?:WithInfo)?|Ref)|Priority|U(?:IElementRef|nderlineStyle)|Value(?:Ref|Type))|l(?:ert(?:Std(?:AlertParam(?:Ptr|Rec)|CFStringAlertParam(?:Ptr|Rec))|T(?:Hndl|Ptr|emplate|ype))|ias(?:Handle|InfoType|Ptr|Record))|n(?:chorPoint(?:Table)?|krTable)|pp(?:Parameters(?:Ptr)?|earance(?:PartCode|RegionCode)|l(?:eEvent(?:Ptr)?|icationSpecificChunk(?:Ptr)?))|reaID|sscEntry|u(?:dio(?:B(?:alanceFade(?:Type)?|uffer(?:List)?|ytePacketTranslation(?:Flags)?)|C(?:hannel(?:Bitmap|CoordinateIndex|Description|Flags|La(?:bel|yout(?:Tag)?))|lass(?:Description|ID)|o(?:dec(?:AppendInput(?:BufferListProc|DataProc)|GetProperty(?:InfoProc|Proc)|InitializeProc|MagicCookieInfo|Pr(?:imeInfo|o(?:duceOutput(?:BufferListProc|PacketsProc)|pertyID))|ResetProc|SetPropertyProc|UninitializeProc)?|mponent(?:Description|F(?:actoryFunction|lags)|Instan(?:ce|tiationOptions)|Method|PlugInInterface|ValidationResult)?|nverter(?:ComplexInputDataProc|InputDataProc|Pr(?:imeInfo|opertyID)|Ref)))|Device(?:I(?:D|O(?:Block|Proc(?:ID)?))|Property(?:ID|ListenerProc))|F(?:ile(?:Component(?:C(?:loseProc|ountUserDataProc|reateURLProc)|ExtensionIsThisFormatProc|FileDataIsThisFormatProc|Get(?:GlobalInfo(?:Proc|SizeProc)|Property(?:InfoProc|Proc)|UserData(?:Proc|SizeProc))|InitializeWithCallbacksProc|Op(?:en(?:URLProc|WithCallbacksProc)|timizeProc)|PropertyID|Re(?:ad(?:BytesProc|Packet(?:DataProc|sProc))|moveUserDataProc)|Set(?:PropertyProc|UserDataProc)|Write(?:BytesProc|PacketsProc))?|F(?:DFTable(?:Extended)?|lags)|ID|Marker(?:List)?|P(?:acketTableInfo|ermissions|ropertyID)|Region(?:Flags|List)?|Stream(?:ID|P(?:arseFlags|roperty(?:Flags|ID))|SeekFlags|_P(?:acketsProc|ropertyListenerProc))|Type(?:AndFormatID|ID)|_(?:GetSizeProc|ReadProc|S(?:MPTE_Time|etSizeProc)|WriteProc))|ormat(?:Flags|I(?:D|nfo)|ListItem|PropertyID)|ramePacketTranslation)|Hardware(?:IOProcStreamUsage|P(?:owerHint|roperty(?:ID|ListenerProc)))|IndependentPacketTranslation|LevelControlTransferFunction|O(?:bject(?:ID|Property(?:Address|Element|Listener(?:Block|Proc)|S(?:cope|elector)))|utputUnitSt(?:art(?:AtTimeParams|Proc)|opProc))|Pa(?:cket(?:DependencyInfoTranslation|R(?:angeByteCountTranslation|ollDistanceTranslation))|nning(?:Info|Mode))|Queue(?:Buffer(?:Ref)?|ChannelAssignment|InputCallback(?:Block)?|LevelMeterState|OutputCallback(?:Block)?|P(?:arameter(?:Event|ID|Value)|ro(?:cessingTap(?:Callback|Flags|Ref)|perty(?:ID|ListenerProc)))|Ref|TimelineRef)|RecordingChunk(?:Ptr)?|S(?:ampleType|e(?:rvices(?:PropertyID|SystemSoundCompletionProc)|ttingsFlags)|tream(?:BasicDescription|ID|P(?:acketDescription|ropertyListenerProc)|RangedDescription))|TimeStamp(?:Flags)?|Unit(?:Add(?:PropertyListenerProc|RenderNotifyProc)|Co(?:coaViewInfo|mplexRenderProc|nnection)|E(?:lement|vent(?:Type)?|xternalBuffer)|FrequencyResponseBin|GetP(?:arameterProc|roperty(?:InfoProc|Proc))|InitializeProc|M(?:IDIControlMapping|eterClipping)|NodeConnection|OtherPluginDesc|P(?:arameter(?:Event|HistoryInfo|I(?:D(?:Name)?|nfo)|NameInfo|Options|StringFromValue|Unit|Value(?:FromString|Name|Translation)?)?|r(?:esetMAS_Setting(?:Data|s)|o(?:cess(?:MultipleProc|Proc)|perty(?:ID|ListenerProc)?)))|Re(?:move(?:PropertyListener(?:Proc|WithUserDataProc)|RenderNotifyProc)|nder(?:ActionFlags|Proc)|setProc)|S(?:ampleType|c(?:heduleParametersProc|ope)|etP(?:arameterProc|ropertyProc))|UninitializeProc)?|Value(?:Range|Translation))|thorization(?:AsyncCallback|E(?:nvironment|xternalForm)|Flags|Item(?:Set)?|OpaqueRef|R(?:ef|ights)|String)))|B(?:T(?:HeaderRec|NodeDescriptor|reeKey(?:Limits)?)|asicWindowDescription|i(?:gEndian(?:Fixed|Long|OSType|Short|U(?:Int32|nsigned(?:Fixed|Long|Short)))|tMap(?:Handle|Ptr)?)|sln(?:Baseline(?:Class|Record)|Format(?:0Part|1Part|2Part|3Part|Union)|Table(?:Format|Ptr)?))|C(?:A(?:BarBeatTime|Clock(?:Beats|ListenerProc|Message|PropertyID|Ref|S(?:MPTEFormat|amples|econds|yncMode)|T(?:empo|ime(?:Format|base)?))|F(?:Audio(?:Description|FormatListItem)|ChunkHeader|DataChunk|F(?:ileHeader|ormatFlags)|In(?:foStrings|strumentChunk)|Marker(?:Chunk)?|Overview(?:Chunk|Sample)|P(?:acketTableHeader|eakChunk|ositionPeak)|Region(?:Chunk|Flags)?|String(?:ID|s)|UMIDChunk|_(?:SMPTE_Time|UUID_ChunkHeader))|MeterTrackEntry|T(?:empoMapEntry|ransform3D))|C(?:Tab(?:Handle|Ptr)|_(?:LONG(?:64)?|MD(?:2(?:_CTX|state_st)|4(?:_CTX|state_st)|5(?:_CTX|state_st))|SHA(?:1(?:_CTX|state_st)|256(?:_CTX|state_st)|512(?:_CTX|state_st))))|E_(?:CrlNumber|D(?:ataType|eltaCrl)|ExtendedKeyUsage|GeneralNameType)|F(?:H(?:TTP(?:AuthenticationRef|MessageRef)|ost(?:ClientC(?:allBack|ontext)|InfoType|Ref))|Net(?:Diagnostic(?:Ref|StatusValues)|Service(?:Browser(?:ClientCallBack|Flags|Ref)|ClientC(?:allBack|ontext)|Monitor(?:ClientCallBack|Ref|Type)|Re(?:f|gisterFlags)|sError)|workErrors)|ProxyAutoConfigurationResultCallback|StreamErrorHTTP(?:Authentication)?)|G(?:Image(?:AnimationStatus|Destination(?:Ref)?|Metadata(?:Errors|Ref|T(?:ag(?:Ref)?|ype))?|PropertyOrientation|Source(?:AnimationBlock|Ref|Status)?)|L(?:C(?:PContextPriorityRequest|ontext(?:Enable|Obj|Parameter))|Error|G(?:PURestartStatus|lobalOption)|OpenGLProfile|P(?:BufferObj|ixelFormat(?:Attribute|Obj))|Renderer(?:InfoObj|Property)|ShareGroup(?:Obj|Rec))|MutableImageMetadataRef|rafP(?:ort|tr))|M(?:2(?:Header|Profile(?:Ptr)?)|4Header|AdaptationMatrixType|B(?:itmap|ufferLocation)|C(?:MY(?:Color|KColor)|oncatProfileSet|urveType)|D(?:at(?:aType|eTime(?:Type)?)|evice(?:Class|Info|Profile(?:Array|Info)|Scope))|F(?:ixedXY(?:Color|ZColor)|l(?:atten(?:ProcPtr|UPP)|oatBitmap(?:Flags)?))|GrayColor|H(?:LSColor|SVColor|andleLocation)|IntentCRDVMSize|L(?:abColor|u(?:t(?:16Type|8Type)|vColor))|M(?:CreateTransformPropertyProc|Info|akeAndModel(?:Type)?|easurementType|ulti(?:Funct(?:CLUTType|Lut(?:A2BType|Type))|LocalizedUniCode(?:EntryRec|Type)|channel(?:5Color|6Color|7Color|8Color)))|Na(?:medColor(?:2(?:EntryType|Type)|Type)?|tiveDisplayInfo(?:Type)?)|P(?:S2CRDVMSizeType|a(?:rametricCurveType|thLocation)|rofile(?:IterateData|Location|SequenceDescType))|RGBColor|S(?:15Fixed16ArrayType|CertificateChainMode|DecoderRef|EncoderRef|Signe(?:dAttributes|rStatus)|creening(?:ChannelRec|Type)|ignatureType)|T(?:ag(?:ElemTable|Record)|ext(?:DescriptionType|Type))|U(?:16Fixed16ArrayType|Int(?:16ArrayType|32ArrayType|64ArrayType|8ArrayType)|crBgType|nicodeTextType)|Vi(?:deoCardGamma(?:Formula|T(?:able|ype))?|ewingConditionsType)|XYZ(?:Co(?:lor|mponent)|Type)|YxyColor)|QDProcs(?:Ptr)?|S(?:ComponentsThreadMode|DiskSpaceRecovery(?:Callback|Options)|Identity(?:AuthorityRef|Cl(?:ass|ientContext)|Flags|Query(?:ClientContext|Event|Flags|Re(?:ceiveEventCallback|f)|StringComparisonMethod)|Ref|StatusUpdatedCallback)|SM_(?:A(?:C(?:L_(?:AUTHORIZATION_TAG|EDIT_MODE|HANDLE|KEYCHAIN_PROMPT_SELECTOR|PR(?:EAUTH_TRACKING_STATE|OCESS_SUBJECT_SELECTOR)|SUBJECT_TYPE)|_HANDLE)|LGORITHMS|PPLE(?:CSPDL_DB_(?:CHANGE_PASSWORD_PARAMETERS(?:_PTR)?|IS_LOCKED_PARAMETERS(?:_PTR)?|SETTINGS_PARAMETERS(?:_PTR)?)|DL_OPEN_PARAMETERS(?:_PTR)?|_(?:CL_CSR_REQUEST|TP_(?:ACTION_(?:DATA|FLAGS)|C(?:ERT_REQUEST|RL_OPT(?:IONS|_FLAGS))|NAME_OID|S(?:MIME_OPTIONS|SL_OPTIONS))))|TT(?:ACH_FLAGS|RIBUTE_TYPE))|B(?:ER_TAG|ITMASK|OOL)|C(?:ALLOC|C_HANDLE|ERT(?:GROUP_TYPE(?:_PTR)?|_(?:BUNDLE_(?:ENCODING|TYPE)|ENCODING(?:_PTR)?|PARSE_FORMAT(?:_PTR)?|TYPE(?:_PTR)?))|L_(?:HANDLE|TEMPLATE_TYPE)|ONTEXT_(?:EVENT|TYPE)|RL(?:GROUP_TYPE(?:_PTR)?|_(?:ENCODING(?:_PTR)?|PARSE_FORMAT(?:_PTR)?|TYPE(?:_PTR)?))|SP(?:TYPE|_(?:FLAGS|HANDLE|READER_FLAGS)))|D(?:B_(?:A(?:CCESS_TYPE(?:_PTR)?|TTRIBUTE_(?:FORMAT(?:_PTR)?|NAME_FORMAT(?:_PTR)?))|CONJUNCTIVE(?:_PTR)?|HANDLE|INDEX(?:ED_DATA_LOCATION|_TYPE)|MODIFY_MODE|OPERATOR(?:_PTR)?|RE(?:CORDTYPE|TRIEVAL_MODES))|L(?:TYPE(?:_PTR)?|_(?:CUSTOM_ATTRIBUTES|FFS_ATTRIBUTES|HANDLE|LDAP_ATTRIBUTES|ODBC_ATTRIBUTES|PKCS11_ATTRIBUTE(?:_PTR)?)))|E(?:NCRYPT_MODE|VIDENCE_FORM)|FREE|H(?:ANDLE(?:_PTR)?|EADERVERSION)|INTPTR|K(?:EY(?:ATTR_FLAGS|BLOB_(?:FORMAT|TYPE)|CLASS|USE|_(?:HIERARCHY|TYPE))|R(?:SP_HANDLE|_POLICY_(?:FLAGS|TYPE)))|L(?:IST_(?:ELEMENT_(?:PTR|TYPE(?:_PTR)?)|TYPE(?:_PTR)?)|ONG_HANDLE(?:_PTR)?)|M(?:A(?:LLOC|NAGER_EVENT_TYPES)|ODULE_(?:EVENT(?:_PTR)?|HANDLE(?:_PTR)?))|NET_(?:ADDRESS_TYPE|PROTOCOL)|P(?:ADDING|KCS(?:5_PBKDF2_PRF|_OAEP_(?:MGF|PSOURCE))|R(?:IVILEGE(?:_SCOPE)?|OC_ADDR(?:_PTR)?)|VC_MODE)|QUERY_FLAGS|RE(?:ALLOC|TURN)|S(?:AMPLE_TYPE|C_FLAGS|ERVICE_(?:MASK|TYPE)|IZE|TRING)|T(?:IMESTRING|P_(?:A(?:CTION|PPLE_(?:CERT_STATUS|EVIDENCE_HEADER)|UTHORITY_REQUEST_TYPE(?:_PTR)?)|C(?:ERT(?:CHANGE_(?:ACTION|REASON|STATUS)|ISSUE_STATUS|NOTARIZE_STATUS|RECLAIM_STATUS|VERIFY_STATUS)|ONFIRM_STATUS(?:_PTR)?|RLISSUE_STATUS)|FORM_TYPE|HANDLE|S(?:ERVICES|TOP_ON)))|USEE_TAG|WORDID_TYPE|X509(?:EXT_DATA_FORMAT|_OPTION))|pecArray)|T(?:CharacterCollection|F(?:ont(?:Collection(?:CopyOptions|Ref|SortDescriptorsCallback)|Descriptor(?:MatchingState|Ref)|Format|Manager(?:AutoActivationSetting|Error|Scope)|O(?:ptions|rientation)|Priority|Ref|S(?:tylisticClass|ymbolicTraits)|Table(?:Options|Tag)|UIFontType)|rame(?:P(?:athFillRule|rogression)|Ref|setterRef))|GlyphInfoRef|Line(?:B(?:oundsOptions|reakMode)|Ref|TruncationType)|MutableFontCollectionRef|ParagraphStyle(?:Ref|S(?:etting|pecifier))|Ru(?:by(?:A(?:lignment|nnotationRef)|Overhang|Position)|n(?:Delegate(?:Callbacks|DeallocateCallback|Get(?:AscentCallback|DescentCallback|WidthCallback)|Ref)|Ref|Status))|T(?:ext(?:Alignment|TabRef)|ypesetterRef)|UnderlineStyle(?:Modifiers)?|WritingDirection|ab(?:Handle|Ptr))|V(?:AttachmentMode|BufferRef|DisplayLink(?:Output(?:Callback|Handler)|Ref)|FillExtendedPixelsCallBack(?:Data)?|ImageBufferRef|Op(?:enGL(?:Buffer(?:PoolRef|Ref)|Texture(?:CacheRef|Ref))|tionFlags)|P(?:ixelBuffer(?:LockFlags|Pool(?:FlushFlags|Ref)|Re(?:f|lease(?:BytesCallback|PlanarBytesCallback)))|lanar(?:ComponentInfo|PixelBufferInfo(?:_YCbCr(?:BiPlanar|Planar))?))|Return|SMPTETime(?:Flags|Type)?|Time(?:Flags|Stamp(?:Flags)?)?)|a(?:l(?:ibrat(?:e(?:Event(?:ProcPtr|UPP)|ProcPtr|UPP)|orInfo)|lingConventionType)|nCalibrate(?:ProcPtr|UPP)|retHook(?:ProcPtr|UPP)|tPositionRec)|ell|h(?:ar(?:ByteTable|s(?:Handle|Ptr)?)|unkHeader)|lickActivationResult|o(?:l(?:l(?:atorRef|ection(?:Exception(?:ProcPtr|UPP)|Flatten(?:ProcPtr|UPP)|Tag)?)|or(?:C(?:hangedUPP|omplement(?:ProcPtr|UPP))|S(?:earch(?:ProcPtr|UPP)|pec(?:Ptr)?|ync(?:AlphaInfo|CMM(?:Ref)?|Data(?:Depth|Layout)|M(?:D5|utableProfileRef)|Profile(?:Ref)?|Transform(?:Ref)?))|Table))|m(?:m(?:ent(?:Type|sChunk(?:Ptr)?)?|onChunk(?:Ptr)?)|ponent(?:AliasResource|Description|FunctionUPP|Instance(?:Record)?|MPWorkFunction(?:HeaderRecord(?:Ptr)?|ProcPtr|UPP)|P(?:arameters|latformInfo(?:Array)?)|R(?:e(?:cord|s(?:ource(?:Extension|Handle|Ptr)?|ult))|outine(?:ProcPtr|UPP)))?)|n(?:st(?:ATSUAttributeValuePtr|FS(?:EventStreamRef|SpecPtr)|HFSUniStr255Param|ScriptCodeRunPtr|Text(?:EncodingRunPtr|Ptr|ToUnicodeInfo)|Uni(?:CharArrayPtr|code(?:MappingPtr|ToTextInfo)))|t(?:ainerChunk|extualMenuInterfaceStruct|rol(?:Action(?:ProcPtr|UPP)|B(?:evel(?:Button(?:Behavior|Menu(?:Behavior|Placement))|Thickness)|utton(?:ContentInfo(?:Ptr)?|GraphicAlignment|Text(?:Alignment|Placement)))|C(?:lock(?:Flags|Type)|ontentType)|DisclosureTriangleOrientation|EditText(?:Selection(?:Ptr|Rec)|Validation(?:ProcPtr|UPP))|Fo(?:cusPart|ntStyle(?:Ptr|Rec))|Handle|I(?:D|mageContentInfo(?:Ptr)?)|K(?:ey(?:Filter(?:ProcPtr|Result|UPP)|ScriptBehavior)|ind)|P(?:artCode|opupArrow(?:Orientation|Size)|ushButtonIconAlignment)|R(?:ef|oundButtonSize)|S(?:ize|liderOrientation)|T(?:ab(?:Direction|Entry|InfoRec(?:V1)?|Size)|emplate(?:Handle|Ptr)?)|UserPane(?:Activate(?:ProcPtr|UPP)|Draw(?:ProcPtr|UPP)|Focus(?:ProcPtr|UPP)|HitTest(?:ProcPtr|UPP)|Idle(?:ProcPtr|UPP)|KeyDown(?:ProcPtr|UPP)|Tracking(?:ProcPtr|UPP))|Variant)))|reEndianFlipProc|untUserDataFDF)|tlCTab|ustomBadgeResource(?:Handle|Ptr)?)|D(?:A(?:ApprovalSessionRef|DiskRef|SessionRef)|C(?:M(?:AccessMethod(?:Feature|I(?:D|terator))|Dictionary(?:Header|I(?:D|terator)|Ref|StreamRef)|F(?:i(?:eld(?:Attributes|T(?:ag|ype))|ndMethod)|oundRecordIterator)|Object(?:I(?:D|terator)|Ref)|ProgressFilter(?:ProcPtr|UPP)|UniqueID)|SDictionaryRef)|ER(?:Byte|Item|Size)|I(?:TLMethod|nfo)|R(?:AudioTrackRef|BurnRef|CDTextBlockRef|DeviceRef|EraseRef|F(?:SObjectRef|ile(?:Fork(?:Index|Size(?:Info|Query))|Message|Pro(?:c|ductionInfo)|Ref|system(?:Mask|TrackRef))|olderRef)|LinkType|NotificationC(?:allback|enterRef)|RefCon(?:Callbacks|Re(?:leaseCallback|tainCallback))|T(?:rack(?:CallbackProc|Message|ProductionInfo|Ref)|ypeRef))|XInfo|at(?:a(?:Array|Browser(?:A(?:cce(?:ptDrag(?:ProcPtr|UPP)|ssibilityItemInfo(?:V(?:0|1))?)|ddDragItem(?:ProcPtr|UPP))|C(?:allbacks|ustomCallbacks)|Dra(?:gFlags|wItem(?:ProcPtr|UPP))|Edit(?:Command|Item(?:ProcPtr|UPP))|GetContextualMenu(?:ProcPtr|UPP)|HitTest(?:ProcPtr|UPP)|Item(?:AcceptDrag(?:ProcPtr|UPP)|Compare(?:ProcPtr|UPP)|D(?:ata(?:ProcPtr|Ref|UPP)|ragRgn(?:ProcPtr|UPP))|HelpContent(?:ProcPtr|UPP)|ID|Notification(?:ProcPtr|UPP|WithItem(?:ProcPtr|UPP))?|ProcPtr|ReceiveDrag(?:ProcPtr|UPP)|State|UPP)|ListView(?:ColumnDesc|HeaderDesc|PropertyFlags)|Metric|P(?:ostProcessDrag(?:ProcPtr|UPP)|roperty(?:Desc|Flags|ID|Part|Type))|Re(?:ceiveDrag(?:ProcPtr|UPP)|vealOptions)|S(?:e(?:lect(?:ContextualMenu(?:ProcPtr|UPP)|ion(?:AnchorDirection|Flags))|tOption)|ortOrder)|T(?:ableView(?:Column(?:Desc|I(?:D|ndex))|HiliteStyle|PropertyFlags|RowIndex)|racking(?:ProcPtr|Result|UPP))|ViewStyle)|Handle|Ptr)|e(?:Cache(?:Ptr|Record)|Delta|Form|Orders|TimeRec))|e(?:bug(?:AssertOutputHandler(?:ProcPtr|UPP)|ComponentCallback(?:ProcPtr|UPP)|ger(?:DisposeThread(?:ProcPtr|TPP|UPP)|NewThread(?:ProcPtr|TPP|UPP)|ThreadScheduler(?:ProcPtr|TPP|UPP)))|ferredTask(?:P(?:rocPtr|tr)|UPP)?|lim(?:Type|iterInfo)|s(?:cType|kHook(?:ProcPtr|UPP)))|ialog(?:Item(?:Index(?:ZeroBased)?|Type)|P(?:lacementSpec|tr)|Ref|T(?:Hndl|Ptr|emplate))|o(?:Get(?:FileTranslationListProcPtr|ScrapTranslationListProcPtr|TranslatedFilenameProcPtr)|Identify(?:FileProcPtr|ScrapProcPtr)|Translate(?:FileProcPtr|ScrapProcPtr)|cOpenMethod)|ra(?:g(?:A(?:ctions|ttributes)|Behaviors|Constraint|Drawing(?:ProcPtr|UPP)|GrayRgn(?:ProcPtr|UPP)|I(?:mageFlags|nput(?:ProcPtr|UPP)|temRef)|Re(?:ceiveHandler(?:ProcPtr|UPP)|f(?:erence)?|gionMessage)|SendData(?:ProcPtr|UPP)|Tracking(?:Handler(?:ProcPtr|UPP)|Message))|wHook(?:ProcPtr|UPP)))|E(?:OLHook(?:ProcPtr|UPP)|ditUnicodePostUpdate(?:ProcPtr|UPP)|v(?:Cmd|QEl(?:Ptr)?|ent(?:Attributes|C(?:lass(?:ID)?|omparator(?:ProcPtr|UPP))|H(?:andler(?:CallRef|ProcPtr|Ref|UPP)|otKey(?:ID|Ref))|Kind|Loop(?:IdleTimer(?:Message|ProcPtr|UPP)|Ref|Timer(?:ProcPtr|Ref|UPP))|M(?:ask|o(?:difiers|use(?:Button|WheelAxis)))|P(?:aram(?:Name|Type)|riority)|QueueRef|Re(?:cord|f)|T(?:argetRef|ime(?:out|rInterval)?|ype(?:Spec)?)))|x(?:ception(?:Handler(?:ProcPtr|TPP|UPP)?|Info(?:rmation(?:PowerPC)?)?|Kind)|t(?:AudioFile(?:PropertyID|Ref)|Com(?:monChunk(?:Ptr)?|ponentResource(?:Handle|Ptr)?)|ended(?:AudioFormatInfo|ControlEvent|F(?:ileInfo|olderInfo)|NoteOnEvent|TempoEvent))))|F(?:CFontDescriptorRef|I(?:LE|nfo)|KEY(?:ProcPtr|UPP)|M(?:F(?:ilter(?:Selector)?|ont(?:CallbackFilter(?:ProcPtr|UPP)|DirectoryFilter|Family(?:CallbackFilter(?:ProcPtr|UPP)|I(?:nstance(?:Iterator)?|terator))?|Iterator|S(?:ize|tyle))?)|Generation|Input)|N(?:Message|Subscription(?:ProcPtr|Ref|UPP))|P(?:RegIntel|UInformation(?:Intel64|PowerPC)?)|S(?:Al(?:ias(?:FilterProcPtr|Info(?:Bitmap|Ptr)?)|locationFlags)|Catalog(?:BulkParam(?:Ptr)?|Info(?:Bitmap|Ptr)?)|E(?:jectStatus|ventStream(?:C(?:allback|ontext|reateFlags)|Event(?:Flags|Id)|Ref))|F(?:ile(?:Operation(?:ClientContext|Ref|Sta(?:ge|tusProcPtr))|SecurityRef)|ork(?:CBInfoParam(?:Ptr)?|I(?:OParam(?:Ptr)?|nfo(?:Flags|Ptr)?)))|I(?:ORefNum|terator(?:Flags)?)|MountStatus|P(?:athFileOperationStatusProcPtr|ermissionInfo)|R(?:angeLockParam(?:Ptr)?|ef(?:ForkIOParam(?:Ptr)?|P(?:aram(?:Ptr)?|tr))?)|S(?:earchParams(?:Ptr)?|pec(?:ArrayPtr|Handle|Ptr)?)|UnmountStatus|Volume(?:Eject(?:ProcPtr|UPP)|Info(?:Bitmap|P(?:aram(?:Ptr)?|tr))?|Mount(?:ProcPtr|UPP)|Operation|RefNum|Unmount(?:ProcPtr|UPP)))|Vector|XInfo|amRec|ile(?:Info|T(?:ranslation(?:List(?:Handle|Ptr)?|Spec(?:Array(?:Handle|Ptr))?)|ype(?:Spec)?))|lavor(?:Flags|Type)|ndr(?:DirInfo|Extended(?:DirInfo|FileInfo)|FileInfo|OpaqueInfo)|o(?:lder(?:Class|Desc(?:Flags|Ptr)?|Info|Location|ManagerNotification(?:ProcPtr|UPP)|Routing(?:Ptr)?|Type)|nt(?:Assoc|Info|LanguageCode|NameCode|PlatformCode|Rec(?:Hdl|Ptr)?|S(?:criptCode|electionQDStyle(?:Ptr)?)|Variation)|rmat(?:Class|ResultType|Status|VersionChunk(?:Ptr)?)))|G(?:D(?:Handle|Ptr|evice)|L(?:b(?:itfield|oolean|yte)|c(?:har(?:ARB)?|lamp(?:d|f))|double|enum|f(?:ixed|loat)|ha(?:lf(?:ARB)?|ndleARB)|int(?:64(?:EXT)?|ptr(?:ARB)?)?|s(?:hort|izei(?:ptr(?:ARB)?)?|ync)|u(?:byte|int(?:64(?:EXT)?)?|short)|void)|NEFilterUPP|World(?:Flags|Ptr)|e(?:nericID|t(?:GrowImageRegionRec|MissingComponentResource(?:ProcPtr|UPP)|NextEventFilter(?:ProcPtr|UPP)|Property(?:FDF|InfoFDF)|ScrapData(?:ProcPtr|UPP)?|UserData(?:FDF|SizeFDF)|VolParmsInfoBuffer|WindowRegion(?:Ptr|Rec(?:Ptr)?)))|lyph(?:Collection|ID)|raf(?:P(?:ort|tr)|Verb))|H(?:FS(?:Catalog(?:F(?:ile|older)|Key|NodeID|Thread)|Extent(?:Descriptor|Key|Record)|Flavor|MasterDirectoryBlock|Plus(?:Attr(?:Data|Extents|ForkData|InlineData|Key|Record)|BSDInfo|Catalog(?:F(?:ile|older)|Key|Thread)|Extent(?:Descriptor|Key|Record)|ForkData|VolumeHeader)|UniStr255)|I(?:A(?:rchiveRef|xis(?:Position|Scale))|Binding(?:Kind)?|Co(?:mmand(?:Extended)?|ntentBorderMetrics|ordinateSpace)|DelegatePosition|ImageViewAutoTransformOptions|LayoutInfo|M(?:odalClickResult|utableShapeRef)|Object(?:ClassRef|Ref)|Po(?:int|sition(?:Kind|ing))|Rect|S(?:c(?:al(?:eKind|ing)|roll(?:BarTrackInfo|ViewAction))|egmentBehavior|hape(?:EnumerateProcPtr|Ref)|i(?:deBinding|ze))|T(?:heme(?:Animation(?:FrameInfo|TimeInfo)|B(?:ackgroundDrawInfo(?:Ptr)?|uttonDrawInfo(?:Ptr)?)|ChasingArrowsDrawInfo(?:Ptr)?|F(?:ocusRing|rame(?:DrawInfo(?:Ptr)?|Kind))|Gr(?:abberDrawInfo(?:Ptr)?|o(?:upBox(?:DrawInfo(?:Ptr)?|Kind)|wBox(?:DrawInfo(?:Ptr)?|Kind|Size)))|Header(?:DrawInfo(?:Ptr)?|Kind)|Menu(?:BarDrawInfo(?:Ptr)?|DrawInfo(?:Ptr|VersionZero(?:Ptr)?)?|ItemDrawInfo(?:Ptr)?|TitleDrawInfo(?:Ptr)?)|Orientation|P(?:lacardDrawInfo(?:Ptr)?|opupArrowDrawInfo(?:Ptr)?)|S(?:crollBarDelimitersDrawInfo(?:Ptr)?|e(?:gment(?:Adornment|DrawInfo(?:Ptr)?|Kind|Position|Size)|paratorDrawInfo(?:Ptr)?)|plitter(?:Adornment|DrawInfo(?:Ptr)?))|T(?:ab(?:Adornment|DrawInfo(?:VersionZero)?|Kind|P(?:ane(?:Adornment|DrawInfo(?:VersionZero)?)|osition)|Size)|ext(?:BoxOptions|HorizontalFlush|Info|Truncation|VerticalFlush)|ickMarkDrawInfo(?:Ptr)?|rackDrawInfo)|Window(?:DrawInfo(?:Ptr)?|WidgetDrawInfo(?:Ptr)?))|oolbar(?:Display(?:Mode|Size)|ItemRef|Ref)|ypeAndCreator)|View(?:Content(?:Info(?:Ptr)?|Type)|F(?:eatures|rameMetrics)|I(?:D|mageContent(?:Info|Type))|Kind|PartCode|Ref|TrackingArea(?:ID|Ref)|ZOrderOp)|Window(?:Availability|BackingLocation|Depth|Ref|S(?:caleMode|haringType)))|M(?:Cont(?:ent(?:ProvidedType|Request|Type)|rolContent(?:ProcPtr|UPP))|HelpContent(?:Ptr|Rec)?|Menu(?:ItemContent(?:ProcPtr|UPP)|TitleContent(?:ProcPtr|UPP))|StringResType|TagDisplaySide|WindowContent(?:ProcPtr|UPP)|enuBar(?:Header|Menu))|i(?:ghHook(?:ProcPtr|UPP)|liteMenuItemData(?:Ptr)?|tTestHook(?:ProcPtr|UPP))|o(?:mograph(?:Accent|DicInfoRec|Weight)|stCallback(?:Info|_Get(?:BeatAndTempo|MusicalTimeLocation|TransportState(?:2)?))))|I(?:BNibRef|C(?:A(?:ppSpec(?:Handle|List(?:Handle|Ptr)?|Ptr)?|ttr)|CharTable(?:Handle|Ptr)?|F(?:i(?:leSpec(?:Handle|Ptr)?|xedLength)|ontRecord(?:Handle|Ptr)?)|Instance|MapEntry(?:Flags|Handle|Ptr)?|P(?:erm|rofileID(?:Ptr)?)|Service(?:Entry(?:Flags|Handle|Ptr)?|s(?:Handle|Ptr)?))|O(?:A(?:ddressRange|lignment|ppleTimingID|syncC(?:allback(?:0|1|2)?|ompletionContent))|ByteCount(?:32|64)?|C(?:acheMode|o(?:lor(?:Component|Entry)|mpletion(?:ProcPtr|UPP)))|D(?:e(?:tailedTimingInformation(?:V(?:1|2))?|viceNumber)|isplay(?:ModeI(?:D|nformation)|ProductID|ScalerInformation|TimingRange(?:V(?:1|2))?|VendorID))|F(?:B(?:D(?:PLinkConfig|isplayModeDescription)|HDRMetaData(?:V1)?)|ixed(?:1616|Point32)?|ramebufferInformation)|G(?:Bounds|Point|Size)|HardwareCursor(?:Descriptor|Info)|I(?:ndex|temCount)|LogicalAddress|N(?:amedValue|otificationPort(?:Ref)?)|OptionBits|P(?:hysical(?:Address(?:32|64)?|Length(?:32|64)?|Range)|ixel(?:Aperture|Encoding|Information))|Return|S(?:e(?:lect|rvice(?:InterestC(?:allback|ontent(?:64)?)|MatchingCallback))|urface(?:Component(?:Name|Range|Type)|ID|LockOptions|PurgeabilityState|Ref|Subsampling))|TimingInformation|V(?:ersion|irtual(?:Address|Range)))|SAType|con(?:A(?:ction(?:ProcPtr|UPP)|lignmentType)|Family(?:Element|Handle|Ptr|Resource)|Getter(?:ProcPtr|UPP)|Ref|Se(?:lectorValue|rvicesUsageFlags)|TransformType)|n(?:d(?:exToUCString(?:ProcPtr|UPP)|icatorDragConstraint(?:Ptr)?)|strumentChunk(?:Ptr)?|t(?:erfaceTypeList|l(?:0(?:Hndl|Ptr|Rec)|1(?:Hndl|Ptr|Rec)|Text)))|t(?:emReference|l(?:1ExtRec|4(?:Handle|Ptr|Rec)|5Record|b(?:ExtRecord|Record)|cRecord)))|J(?:S(?:C(?:har|lass(?:Attributes|Definition|Ref)|ontext(?:GroupRef|Ref))|GlobalContextRef|Object(?:C(?:allAs(?:ConstructorCallback|FunctionCallback)|onvertToTypeCallback)|FinalizeCallback|GetProperty(?:Callback|NamesCallback)|InitializeCallback|Ref)|Property(?:Attributes|NameA(?:ccumulatorRef|rrayRef))|St(?:atic(?:Function|Value)|ringRef)|Type(?:dArrayBytesDeallocator)?|ValueRef)|apanesePartOfSpeech|ournalInfoBlock|ust(?:DirectionTable|P(?:C(?:Action(?:Subrecord|Type)?|ConditionalAddAction|D(?:ecompositionAction|uctilityAction)|GlyphRepeatAddAction|UnconditionalAddAction)|ostcompTable)|Table|WidthDelta(?:Entry|Group)|ificationFlags))|K(?:C(?:A(?:ttr(?:Type|ibute(?:List)?)|uthType)|C(?:allback(?:Info|ProcPtr|UPP)|ert(?:AddOptions|SearchOptions))|Event(?:Mask)?|Item(?:Attr|Class|Ref)|P(?:rotocolType|ublicKeyHash)|Ref|S(?:earchRef|tatus)|VerifyStopOn)|e(?:r(?:n(?:ArrayOffset|Entry|FormatSpecificHeader|IndexArrayHeader|Kerning(?:Pair|Value)|O(?:ffsetTable(?:Ptr)?|rderedList(?:Entry(?:Ptr)?|Header))|Pair|S(?:impleArrayHeader|tate(?:Entry|Header)|ubtable(?:Header(?:Ptr)?|Info))|Table(?:Format|Header(?:Handle|Ptr)?)?|Version0(?:Header|SubtableHeader))|x(?:A(?:nchorPointAction|rrayOffset)|Co(?:ntrolPoint(?:Action|Entry|Header)|ordinateAction)|FormatSpecificHeader|IndexArrayHeader|KerningPair|OrderedList(?:Entry(?:Ptr)?|Header)|S(?:impleArrayHeader|tate(?:Entry|Header)|ubtable(?:Coverage|Header(?:Ptr)?))|TableHeader(?:Handle|Ptr)?))|y(?:Map(?:ByteArray)?|boardLayout(?:Identifier|Kind|PropertyTag|Ref))))|L(?:A(?:ContextRef|EnvironmentRef|Homograph|Morpheme(?:Bundle|Path|Rec|sArray(?:Ptr)?)?|Property(?:Key|Type))|H(?:Element|Handle|Ptr|Table)|LCStyleInfo|S(?:A(?:cceptanceFlags|pplicationParameters)|HandlerOptions|ItemInfo(?:Flags|Record)|Launch(?:F(?:SRefSpec|lags)|URLSpec)|R(?:equestedInfo|olesMask)|SharedFileList(?:ChangedProcPtr|ItemRef|Re(?:f|solutionFlags)))|aunch(?:Flags|P(?:BPtr|aramBlockRec))|carCaret(?:ClassEntry|Table(?:Ptr)?)|ist(?:Bounds|ClickLoop(?:ProcPtr|UPP)|Def(?:ProcPtr|Spec(?:Ptr)?|Type|UPP)|Handle|Ptr|Re(?:c|f)|Search(?:ProcPtr|UPP))|o(?:cal(?:DateTime(?:Handle|Ptr)?|e(?:AndVariant|NameMask|Operation(?:Class|Variant)|PartMask|Ref))|ngDate(?:Cvt|Field|Rec|Time))|tag(?:StringRange|Table))|M(?:BarHook(?:ProcPtr|UPP)|C(?:Entry(?:Ptr)?|Table(?:Handle|Ptr)?)|D(?:EF(?:Draw(?:Data(?:Ptr)?|ItemsData(?:Ptr)?)|FindItemData(?:Ptr)?|HiliteItemData(?:Ptr)?)|ItemRef|Label(?:Domain|Ref)|Query(?:BatchingParams|Create(?:ResultFunction|ValueFunction)|OptionFlags|Ref|Sort(?:ComparatorFunction|OptionFlags))|S_HANDLE)|IDI(?:C(?:hannelMessage|lientRef|ompletionProc)|D(?:ataChunk(?:Ptr)?|eviceRef)|En(?:dpointRef|tityRef)|IOErrorNotification|MetaEvent|Not(?:eMessage|if(?:ication(?:MessageID)?|y(?:Block|Proc)))|Object(?:AddRemoveNotification|PropertyChangeNotification|Ref|Type)|P(?:acket(?:List)?|ortRef)|R(?:awData|ead(?:Block|Proc))|SysexSendRequest|TimeStamp|UniqueID)|P(?:A(?:ddressSpaceI(?:D|nfo)|reaID)|C(?:o(?:herenceID|nsoleID)|puID|riticalRegionI(?:D|nfo))|DebuggerLevel|E(?:G4ObjectID|vent(?:Flags|I(?:D|nfo))|xceptionKind)|IsFullyInitializedProc|NotificationI(?:D|nfo)|OpaqueID(?:Class)?|P(?:ageSizeClass|rocessID)|QueueI(?:D|nfo)|Remote(?:Context|Procedure)|Semaphore(?:Count|I(?:D|nfo))|T(?:ask(?:I(?:D|nfo(?:Version2)?)|Options|StateKind|Weight)|imerID))|a(?:c(?:Polygon|hine(?:Information(?:Intel64|PowerPC)?|Location))|gicCookieInfo|rker(?:Chunk(?:Ptr)?|IdType)?)|e(?:asureWindowTitleRec(?:Ptr)?|mory(?:ExceptionInformation|ReferenceKind)|nu(?:Attributes|Bar(?:Def(?:ProcPtr|UPP)|H(?:andle|eader)|Menu)|C(?:Rsrc(?:Handle|Ptr)?|ommand)|Def(?:Spec(?:Ptr)?|Type|UPP)|EventOptions|H(?:andle|ook(?:ProcPtr|UPP))|I(?:D|tem(?:Attributes|D(?:ata(?:Flags|Ptr|Rec)|rawing(?:ProcPtr|UPP))|I(?:D|ndex)))|Ref|T(?:itleDrawing(?:ProcPtr|UPP)|racking(?:Data(?:Ptr)?|Mode))))|ixe(?:dModeStateRecord|rDistanceParams)|o(?:dalFilter(?:ProcPtr|UPP|YD(?:ProcPtr|UPP))|r(?:pheme(?:PartOfSpeech|TextRange)|t(?:C(?:hain|ontextualSubtable)|FeatureEntry|InsertionSubtable|Ligature(?:ActionEntry|Subtable)|RearrangementSubtable|S(?:pecificSubtable|ubtable(?:MaskFlags)?|washSubtable)|Table)|x(?:C(?:hain|ontextualSubtable)|InsertionSubtable|LigatureSubtable|RearrangementSubtable|S(?:pecificSubtable|ubtable)|Table))|useTrackingResult)|usic(?:Device(?:Component|GroupID|InstrumentID|MIDIEventProc|NoteParams|S(?:t(?:artNoteProc|dNoteParams|opNoteProc)|ysExProc))|Event(?:Iterator|Type|UserData)|Player|Sequence(?:File(?:Flags|TypeID)|LoadFlags|Type|UserCallback)?|T(?:imeStamp|rack(?:LoopInfo)?)))|N(?:C(?:M(?:ConcatProfileS(?:et|pec)|DeviceProfileInfo)|olor(?:Changed(?:ProcPtr|UPP)|PickerInfo))|DR_record_t|Itl4(?:Handle|Ptr|Rec)|M(?:ProcPtr|Rec(?:Ptr)?|UPP)|PMColor(?:Ptr)?|WidthHook(?:ProcPtr|UPP)|X(?:ByteOrder|Coord|Event(?:Data|Ext(?:ension)?|Ptr|System(?:Device(?:List)?|Info(?:Data|Type)))?|KeyMapping|Mouse(?:Button|Scaling)|Point|S(?:ize|wapped(?:Double|Float))|TabletP(?:ointData(?:Ptr)?|roximityData(?:Ptr)?))|a(?:meTable|noseconds)|ote(?:InstanceID|ParamsControlValue)|u(?:llSt(?:Handle|Ptr|Rec)|m(?:FormatString(?:Rec)?|berParts(?:Ptr)?)))|O(?:S(?:A(?:Active(?:ProcPtr|UPP)|CreateAppleEvent(?:ProcPtr|UPP)|Error|ID|Send(?:ProcPtr|UPP)|syncReference(?:64)?|tomic_int64_aligned64_t)|FifoQueueHead|L(?:A(?:ccessor(?:ProcPtr|UPP)|djustMarks(?:ProcPtr|UPP))|Co(?:mpare(?:ProcPtr|UPP)|unt(?:ProcPtr|UPP))|DisposeToken(?:ProcPtr|UPP)|Get(?:ErrDesc(?:ProcPtr|UPP)|MarkToken(?:ProcPtr|UPP))|Mark(?:ProcPtr|UPP))|NotificationHeader(?:64)?|QueueHead)|ff(?:Pair|set(?:Array(?:Handle|Ptr)?|Table))|p(?:aque(?:A(?:E(?:DataStorageType|StreamRef)|TSU(?:FontFallbacks|Style|TextLayout)|UGraph|reaID|udio(?:Co(?:mponent|nverter)|FileStreamID|Queue(?:ProcessingTap|Timeline)?))|C(?:AClock|M(?:ProfileRef|WorldRef)|o(?:ll(?:atorRef|ection)|ntrolRef))|D(?:CM(?:FoundRecordIterator|Object(?:I(?:D|terator)|Ref))|ialogPtr|ragRef)|E(?:vent(?:H(?:andler(?:CallRef|Ref)|otKeyRef)|LoopRef|QueueRef|Ref|TargetRef)|xtAudioFile)|F(?:CFontDescriptorRef|NSubscriptionRef|S(?:Iterator|VolumeOperation))|GrafPtr|HI(?:ArchiveRef|Object(?:ClassRef|Ref)|ViewTrackingAreaRef)|I(?:BNibRef|CInstance|conRef)|JS(?:C(?:lass|ontext(?:Group)?)|PropertyNameA(?:ccumulator|rray)|String|Value)|KeyboardLayoutRef|L(?:A(?:ContextRef|EnvironmentRef)|SSharedFileList(?:ItemRef|Ref)|ocaleRef)|M(?:P(?:A(?:ddressSpaceID|reaID)|C(?:o(?:herenceID|nsoleID)|puID|riticalRegionID)|EventID|NotificationID|OpaqueID|ProcessID|QueueID|SemaphoreID|T(?:askID|imerID))|enuRef|usic(?:EventIterator|Player|Sequence|Track))|P(?:M(?:P(?:a(?:geFormat|per)|r(?:eset|int(?:Se(?:ssion|ttings)|er)))|Server)|asteboardRef|icker|olicySearchRef)|RgnHandle|S(?:RSpeechObject|crapRef|ec(?:AccessRef|CertificateRef|Identity(?:Ref|SearchRef)|KeyRef|TransformImplementation))|T(?:EC(?:ObjectRef|SnifferObjectRef)|SMDocumentID|XNObject|ext(?:BreakLocatorRef|ToUnicodeInfo)|hemeDrawingState|oolboxObjectClassRef|ranslationRef)|U(?:CTypeSelectRef|RLReference|nicodeToText(?:Info|RunInfo))|W(?:S(?:MethodInvocationRef|ProtocolHandlerRef)|indow(?:GroupRef|Ptr)))|bd(?:SideValues|Table(?:Format)?)|enCPicParams))|P(?:EF(?:ContainerHeader|ExportedSymbol(?:HashSlot|Key)?|Imported(?:Library|Symbol)|Loader(?:InfoHeader|RelocationHeader)|RelocChunk|S(?:ectionHeader|plitHashWord))|M(?:BorderType|ColorSpaceModel|D(?:ataFormat|estinationType|uplexMode)|La(?:nguageInfo|youtDirection)|O(?:bject|rientation)|P(?:PDDomain|a(?:ge(?:Format|ToPaperMappingType)|per(?:Margins|Type)?)|r(?:eset|int(?:DialogOptionFlags|Se(?:ssion|ttings)|er(?:State)?)))|QualityMode|Re(?:ct|solution)|S(?:calingAlignment|erver))|a(?:r(?:am(?:BlockRec|eterEvent)|mBlkPtr)|steboard(?:FlavorFlags|ItemID|PromiseKeeperProcPtr|Ref|S(?:tandardLocation|yncFlags))|t(?:Handle|Ptr|tern))|h(?:oneme(?:Descriptor|Info)|ysicalKeyboardLayoutType)|i(?:c(?:Handle|Ptr|ker(?:MenuItemInfo)?|ture)|x(?:Map(?:Handle|Ptr)?|Pat(?:Handle|Ptr)?))|lotIconRefFlags|oly(?:Handle|Ptr|gon)|r(?:interStatusOpcode|o(?:c(?:InfoType|ess(?:ApplicationTransformState|Info(?:ExtendedRec(?:Ptr)?|Rec(?:Ptr)?)))|gressTrackInfo|miseHFSFlavor|p(?:CharProperties|LookupS(?:egment|ingle)|Table|erty(?:Creator|Tag)))))|Q(?:D(?:Arc(?:ProcPtr|UPP)|Bits(?:ProcPtr|UPP)|Comment(?:ProcPtr|UPP)|Err|GetPic(?:ProcPtr|UPP)|JShieldCursor(?:ProcPtr|UPP)|Line(?:ProcPtr|UPP)|O(?:pcode(?:ProcPtr|UPP)|val(?:ProcPtr|UPP))|P(?:oly(?:ProcPtr|UPP)|rinterStatus(?:ProcPtr|UPP)|utPic(?:ProcPtr|UPP))|R(?:Rect(?:ProcPtr|UPP)|e(?:ct(?:ProcPtr|UPP)|gionParseDirection)|gn(?:ProcPtr|UPP))|StdGlyphs(?:ProcPtr|UPP)|T(?:ext(?:ProcPtr|UPP)|xMeas(?:ProcPtr|UPP)))|Elem(?:Ptr)?|Hdr(?:Ptr)?|L(?:Preview(?:PDFStyle|RequestRef)|ThumbnailRe(?:f|questRef))|Types)|R(?:DFlagsType|GBColor|OTA(?:GlyphEntry|Header)|TAType|e(?:ad(?:BytesFDF|Packet(?:DataFDF|sFDF))|drawBackground(?:ProcPtr|UPP)|gi(?:onToRects(?:ProcPtr|UPP)|ster(?:Information(?:Intel64|PowerPC)?|edComponent(?:InstanceRecord(?:Ptr)?|Record(?:Ptr)?)))|s(?:Attributes|Err(?:ProcPtr|UPP)|File(?:Attributes|RefNum)|ID|ource(?:Count|EndianFilterPtr|Index|Spec)))|gnHandle|outin(?:e(?:Descriptor(?:Handle|Ptr)?|FlagsType|Record(?:Handle|Ptr)?)|g(?:Flags|Resource(?:Entry|Handle|Ptr)))|srcChainLocation|uleBasedTrslRecord)|S(?:C(?:Bond(?:InterfaceRef|StatusRef)|DynamicStore(?:C(?:allBack|ontext)|Ref)|Network(?:Connection(?:C(?:allBack|ontext)|Flags|PPPStatus|Ref|Status)|InterfaceRef|ProtocolRef|Reachability(?:C(?:allBack|ontext)|Flags|Ref)|Se(?:rviceRef|tRef))|Preferences(?:C(?:allBack|ontext)|Notification|Ref)|VLANInterfaceRef)|FNTLookup(?:ArrayHeader|BinarySearchHeader|FormatSpecificHeader|Kind|Offset|S(?:egment(?:Header)?|ingle(?:Header)?)|T(?:able(?:Format|Handle|Ptr)?|rimmedArrayHeader)|V(?:alue|ectorHeader))|Int|K(?:Document(?:I(?:D|ndexState)|Ref)|Index(?:DocumentIteratorRef|Ref|Type)|S(?:earch(?:GroupRef|Options|Re(?:f|sults(?:FilterCallBack|Ref))|Type)|ummaryRef))|MPTETime(?:Flags|Type)?|R(?:CallBack(?:P(?:aram|rocPtr)|Struct|UPP)|Language(?:Model|Object)|P(?:ath|hrase)|Re(?:cogni(?:tion(?:Result|System)|zer)|jectionLevel)|Spee(?:ch(?:Object|Source)|dSetting)|Word)|SL(?:Authenticate|C(?:ipher(?:Suite|suiteGroup)|lientCertificateState|on(?:nection(?:Ref|Type)|text(?:Ref)?))|Protocol(?:Side)?|ReadFunc|Session(?:Option|State)|WriteFunc)|T(?:Class(?:Table)?|E(?:lement|ntry(?:Index|One|Two|Zero))|H(?:andle|eader)|Ptr|X(?:Class(?:Table)?|Entry(?:Index|One|Two|Zero)|Header|StateIndex))|c(?:hedule(?:dAudio(?:FileRegion(?:CompletionProc)?|Slice(?:CompletionProc)?)|rInfoRec(?:Ptr)?)|r(?:ap(?:Flavor(?:Flags|Info|Type)|PromiseKeeper(?:ProcPtr|UPP)|Ref|T(?:ranslationList(?:Handle|Ptr)?|ype(?:Spec)?))|ipt(?:CodeRun(?:Ptr)?|Language(?:Record|Support(?:Handle|Ptr)?)|TokenType|ingComponentSelector)|oll(?:BarTrackInfo|WindowOptions)|pST(?:Element|Table)))|e(?:c(?:A(?:CLRef|FPServerSignature|ccess(?:Control(?:CreateFlags|Ref)|OwnerType|Ref)|sn1(?:AlgId|Item|Oid|PubKeyInfo|Template(?:Chooser(?:Ptr)?|_struct)?)|uthenticationType)|C(?:S(?:DigestAlgorithm|Flags)|ertificateRef|ode(?:Ref|S(?:ignatureFlags|tatus))|redentialType)|External(?:Format|ItemType)|G(?:roupTransformRef|uestRef)|I(?:dentity(?:Ref|SearchRef)|tem(?:Attr|Class|ImportExport(?:Flags|KeyParameters)))|Key(?:GeneratePairBlock|ImportExport(?:Flags|Parameters)|OperationType|Ref|Sizes|Usage|chain(?:Attr(?:Type|ibute(?:Info|List|Ptr)?)|Callback(?:Info)?|Event(?:Mask)?|ItemRef|PromptSelector|Ref|S(?:e(?:archRef|ttings)|tatus)))|MessageBlock|P(?:a(?:dding|sswordRef)|olicy(?:Ref|SearchRef)|r(?:eferencesDomain|otocolType)|ublicKeyHash)|R(?:andomRef|equirement(?:Ref|Type))|StaticCodeRef|T(?:askRef|r(?:ansform(?:A(?:ctionBlock|ttribute(?:ActionBlock|Ref))|CreateFP|DataBlock|I(?:mplementationRef|nstanceBlock)|MetaAttributeType|Ref|StringOrAttributeRef)|ust(?:Callback|OptionFlags|Re(?:f|sultType)|Settings(?:Domain|KeyUsage|Result)|WithErrorCallback|edApplicationRef)))|uritySessionId)|lectorFunction(?:ProcPtr|UPP)|ssion(?:AttributeBits|CreationFlags)|t(?:PropertyFDF|UserDataFDF|upWindowProxyDragImageRec))|izeResourceRec(?:Handle|Ptr)?|l(?:eepQ(?:ProcPtr|Rec(?:Ptr)?|UPP)|iderTrackInfo)|ound(?:DataChunk(?:Ptr)?|ProcPtr|UPP)|peech(?:Channel(?:Record)?|Done(?:ProcPtr|UPP)|Error(?:CFProcPtr|Info|ProcPtr|UPP)|Phoneme(?:ProcPtr|UPP)|S(?:tatusInfo|ync(?:ProcPtr|UPP))|TextDone(?:ProcPtr|UPP)|VersionInfo|Word(?:CFProcPtr|ProcPtr|UPP)|XtndData)|t(?:Scrp(?:Handle|Ptr|Rec)|a(?:geList|ndard(?:DropLocation|IconListCellData(?:Ptr|Rec)))|ring(?:2DateStatus|ToDateStatus)|yle(?:Run|Table))|ys(?:PPtr|tem(?:SoundID|UI(?:Mode|Options))))|T(?:E(?:C(?:BufferContextRec|Conver(?:sionInfo|terContextRec)|Encoding(?:Pair(?:Rec|s(?:Handle|Ptr|Rec)?)|sList(?:Handle|Ptr|Rec))|In(?:fo(?:Handle|Ptr)?|ternetName(?:Rec|UsageMask|s(?:Handle|Ptr|Rec)))|Locale(?:ListToEncodingList(?:Ptr|Rec)|ToEncodingsList(?:Handle|Ptr|Rec))|ObjectRef|Plugin(?:C(?:lear(?:ContextInfoPtr|SnifferContextInfoPtr)|onvertTextEncodingPtr)|Disp(?:atchTable|oseEncoding(?:ConverterPtr|SnifferPtr))|FlushConversionPtr|Get(?:Count(?:Available(?:SniffersPtr|TextEncoding(?:PairsPtr|sPtr))|DestinationTextEncodingsPtr|MailEncodingsPtr|SubTextEncodingsPtr|WebEncodingsPtr)|PluginDispatchTablePtr|TextEncoding(?:FromInternetNamePtr|InternetNamePtr))|NewEncoding(?:ConverterPtr|SnifferPtr)|S(?:ig(?:nature)?|niffTextEncodingPtr|tateRec)|Version)|S(?:niffer(?:ContextRec|ObjectRef)|ubTextEncoding(?:Rec|s(?:Handle|Ptr|Rec)))|lickLoop(?:ProcPtr|UPP))|DoText(?:ProcPtr|UPP)|FindWord(?:ProcPtr|UPP)|Handle|IntHook|Ptr|Rec(?:alc(?:ProcPtr|UPP))?|Style(?:Handle|Ptr|Rec|Table))|ISInputSourceRef|MTask(?:Ptr)?|S(?:Code|M(?:Doc(?:AccessAttributes|ument(?:I(?:D|nterfaceType)|PropertyTag))|GlyphInfo(?:Array)?)|criptingSizeResource)|X(?:N(?:A(?:TSUI(?:Features|Variations)|ction(?:Key(?:Mapper(?:ProcPtr|UPP))?|NameMapper(?:ProcPtr|UPP))|ttributeData|utoScrollBehavior)|Background(?:Data|Type)?|C(?:arbonEventInfo|o(?:mmandEventSupportOptions|nt(?:extualMenuSetup(?:ProcPtr|UPP)|inuousFlags|rol(?:Data|Tag))|untOptions))|D(?:ataType|rawItems)|Errors|F(?:eatureBits|i(?:leType|nd(?:ProcPtr|UPP))|rame(?:ID|Options|Type))|HyperLinkState|LongRect|Ma(?:rgins|tch(?:Options|TextRecord))|O(?:bject(?:Refcon)?|ffset)|PermanentTextEncodingType|RectKey|Scroll(?:Bar(?:Orientation|State)|Info(?:ProcPtr|UPP)|Unit)|T(?:ab(?:Type)?|ype(?:Attributes|RunAttribute(?:Sizes|s)))|VersionValue)|TNTag)|a(?:ble(?:DirectoryRecord|tP(?:oint(?:Rec|erRec)|roximityRec))|sk(?:Proc|Storage(?:Index|Value)))|ext(?:BreakLocatorRef|Chunk(?:Ptr)?|Encoding(?:Base|Format|NameSelector|R(?:ec|un(?:Ptr)?)|Variant)?|Ptr|Range(?:Array(?:Handle|Ptr)?|Handle|Ptr)?|S(?:ervice(?:Class|Info(?:Ptr)?|List(?:Handle|Ptr)?|Property(?:Tag|Value))|tyle(?:Handle|Ptr)?)|ToUnicodeInfo|WidthHook(?:ProcPtr|UPP))|h(?:eme(?:ArrowOrientation|B(?:ackgroundKind|rush|utton(?:Adornment|Draw(?:Info(?:Ptr)?|ProcPtr|UPP)|Kind|Value))|C(?:heckBoxStyle|ursor)|Dra(?:gSoundKind|w(?:State|ingState))|Erase(?:ProcPtr|UPP)|FontID|GrowDirection|Iterator(?:ProcPtr|UPP)|Me(?:nu(?:BarState|ItemType|State|Type)|tric)|PopupArrowSize|S(?:crollBar(?:ArrowStyle|ThumbStyle)|oundKind)|T(?:ab(?:Direction|Style|TitleDraw(?:ProcPtr|UPP))|extColor|humbDirection|itleBarWidget|rack(?:Attributes|DrawInfo|EnableState|Kind|PressState))|Window(?:Attributes|Metrics(?:Ptr)?|Type))|read(?:Entry(?:ProcPtr|TPP|UPP)|ID|Options|S(?:cheduler(?:ProcPtr|TPP|UPP)|t(?:ate|yle)|witch(?:ProcPtr|TPP|UPP))|T(?:askRef|ermination(?:ProcPtr|TPP|UPP))))|imer(?:ProcPtr|UPP)|o(?:ggle(?:PB|Results)|ken(?:Block(?:Ptr)?|Re(?:c(?:Ptr)?|sults))|olboxObjectClassRef)|r(?:a(?:k(?:Table(?:Data|Entry)?|Value)|ns(?:itionWindowOptions|lation(?:Attributes|Flags|Ref(?:Num)?)))|ipleInt|uncCode)|ype(?:SelectRecord|sBlock(?:Ptr)?))|U(?:AZoomChangeFocusType|C(?:C(?:harProperty(?:Type|Value)|ollat(?:eOptions|ionValue))|Key(?:CharSeq|LayoutFeatureInfo|ModifiersToTableNum|Output|S(?:equenceDataIndex|tate(?:Entry(?:Range|Terminal)|Record(?:sIndex)?|Terminators))|ToCharTableIndex|board(?:Layout|TypeHeader))|T(?:SWalkDirection|extBreak(?:Options|Type)|ypeSelect(?:CompareResult|Options|Ref)))|Int|NDServerRef|RL(?:CallbackInfo|Event(?:Mask)?|Notify(?:ProcPtr|UPP)|OpenFlags|Reference|S(?:tate|ystemEvent(?:ProcPtr|UPP)))|TCDateTime(?:Handle|Ptr)?|n(?:i(?:CharArray(?:Handle|Offset|Ptr)|code(?:Map(?:Version|ping(?:Ptr)?)|ToText(?:Fallback(?:ProcPtr|UPP)|Info|RunInfo)))|tokenTable(?:Handle|Ptr)?)|ser(?:EventUPP|Item(?:ProcPtr|UPP)))|V(?:DGam(?:RecPtr|maRecord)|ector(?:128(?:Intel)?|Information(?:Intel64|PowerPC)?)|o(?:ice(?:Description|FileInfo|Spec(?:Ptr)?)|l(?:MountInfo(?:Header|Ptr)|ume(?:MountInfoHeader(?:Ptr)?|Type))))|W(?:CTab(?:Handle|Ptr)|S(?:ClientContext(?:CopyDescriptionCallBackProcPtr|Re(?:leaseCallBackProcPtr|tainCallBackProcPtr))?|MethodInvocationRef|ProtocolHandler(?:DeserializationProcPtr|Ref|SerializationProcPtr)|TypeID|tateData(?:Handle|Ptr)?)|i(?:d(?:eChar(?:Arr)?|thHook(?:ProcPtr|UPP))|n(?:CTab|dow(?:A(?:ctivationScope|ttributes)|C(?:lass|onstrainOptions)|D(?:ef(?:PartCode|Spec(?:Ptr)?|Type|UPP)|rawerState)|Group(?:Attributes|ContentOptions|Ref)|LatentVisibility|Modality|P(?:a(?:int(?:Proc(?:Options|Ptr)|UPP)|rtCode)|ositionMethod|tr)|Re(?:f|gionCode)|T(?:itleDrawing(?:ProcPtr|UPP)|ransition(?:Action|Effect)))))|ordBreak(?:ProcPtr|UPP)|rit(?:e(?:BytesFDF|PacketsFDF)|ingCode))|XLib(?:ContainerHeader|ExportedSymbol(?:HashSlot|Key)?)|ZoomAcceleration|a(?:cl_(?:entry_(?:id_t|t)|flag(?:_t|set_t)|perm(?:_t|set_(?:mask_t|t))|t(?:ag_t|ype_t)?)|ddr64_t|larm_(?:port_t|t(?:ype_t)?)|rcade_register_t|u(?:_(?:as(?:flgs_t|id_t)|c(?:lass_t|tlmode_t)|e(?:mod_t|v(?:class_map(?:_t)?|ent_t)|xpire_after(?:_t)?)|fstat_t|id_t|mask(?:_t)?|qctrl(?:_t)?|s(?:ession(?:_t)?|tat_t)|t(?:id(?:_(?:addr(?:_t)?|t))?|oken))|dit(?:_(?:fstat|stat|token_t)|info(?:_(?:addr(?:_t)?|t))?|pinfo(?:_(?:addr(?:_t)?|t))?)))|b(?:oo(?:lean_t|tstrap_t)|uild_(?:tool_version|version_command))|c(?:cntTokenRec(?:Handle|Ptr|ord)|lock_(?:attr_t|ctrl_(?:port_t|t)|flavor_t|id_t|re(?:ply_t|s_t)|serv_(?:port_t|t))|msghdr|oalition_t|pu_(?:subtype_t|t(?:hreadtype_t|ype_t))|ssm_(?:a(?:cl_(?:keychain_prompt_selector|process_subject_selector)|pple(?:cspdl_db_(?:change_password_parameters|is_locked_parameters|settings_parameters)|dl_open_parameters(?:_mask)?)|uthorizationgroup)|csp_operational_statistics|d(?:at(?:a|e)|b_schema_index_info|l_(?:db_handle|pkcs11_attributes))|func_name_addr|guid|k(?:ey_size|r_name)|list(?:_element)?|memory_funcs|name_list|parsed_c(?:ert|rl)|query_size_data|range|tp_result_set|version))|d(?:ata_in_code_entry|ec(?:form|imal)|y(?:l(?:d_(?:info_command|kernel_(?:image_info(?:_(?:array_t|t))?|process_info(?:_t)?))|i(?:b(?:_(?:command|module(?:_64)?|reference|table_of_contents))?|nker_command))|symtab_command))|e(?:mulation_vector_t|n(?:cryption_info_command(?:_64)?|try_point_command)|vsio(?:Keymapping|MouseScaling)|x(?:ception_(?:behavior_(?:array_t|t)|data_t(?:ype_t)?|flavor_array_t|handler_(?:array_t|t)|mask_(?:array_t|t)|port_(?:arra(?:ry_t|y_t)|t)|type_t)|tension_data_format))|f(?:e(?:nv_t|xcept_t)|pos_t|vm(?:file_command|lib(?:_command)?))|gpu_energy_data(?:_t)?|h(?:ash_info_bucket(?:_(?:array_t|t))?|ost_(?:basic_info(?:_(?:data_t|t))?|c(?:an_has_debugger_info(?:_(?:data_t|t))?|pu_load_info(?:_(?:data_t|t))?)|flavor_t|info(?:64_t|_(?:data_t|t))|load_info(?:_(?:data_t|t))?|name_(?:port_t|t)|p(?:r(?:eferred_user_arch(?:_(?:data_t|t))?|i(?:ority_info(?:_(?:data_t|t))?|v_t))|urgable_info_(?:data_t|t))|s(?:ched_info(?:_(?:data_t|t))?|ecurity_t)|t))|i(?:386_(?:exception_state_t|float_state_t|thread_state_t)|dent_command|maxdiv_t|nteger_t|o_(?:async_ref(?:64_t|_t)|buf_ptr_t|connect_t|enumerator_t|iterator_t|master_t|name_t|object_t|registry_entry_t|s(?:calar_inband(?:64_t|_t)|ervice_t|t(?:at_(?:entry|info(?:_t)?)|r(?:ing_(?:inband_t|t)|uct_inband_t)))|user_(?:reference_t|scalar_t))|pc_(?:info_(?:name(?:_(?:array_t|t))?|space(?:_(?:basic(?:_t)?|t))?|tree_name(?:_(?:array_t|t))?)|space_(?:inspect_t|port_t|t)|voucher_(?:attr_(?:control_t|manager_t)|t)))|k(?:auth_(?:ac(?:e(?:_(?:rights_t|t))?|l(?:_t)?)|cache_sizes|filesec(?:_t)?|identity_extlookup)|ern(?:_return_t|el_(?:boot_info_t|resource_sizes(?:_(?:data_t|t))?|version_t))|mod_(?:args_t|control_flavor_t|info(?:_(?:32_v1(?:_t)?|64_v1(?:_t)?|array_t|t))?|reference(?:_t)?|st(?:art_func_t|op_func_t)|t)|object_description_t)|l(?:a(?:belstr_t|unch_data_(?:dict_iterator_t|t(?:ype_t)?))|edger_(?:a(?:mount_t|rray_t)|item_t|port_(?:array_t|t)|t)|in(?:ger|ke(?:dit_data_command|r_option_command))|o(?:ad_command|ck(?:_set_(?:port_t|t)|group_info(?:_(?:array_t|t))?)))|m(?:a(?:ch_(?:core_(?:details|fileheader)|dead_name_notification_t|e(?:rror_(?:fn_t|t)|xception_(?:code_t|data_t(?:ype_t)?|subcode_t))|header(?:_64)?|m(?:emory_info(?:_(?:array_t|t))?|sg_(?:audit_trailer_t|b(?:ase_t|its_t|ody_t)|co(?:ntext_trailer_t|py_options_t)|descriptor_t(?:ype_t)?|empty_(?:rcv_t|send_t|t)|format_0_trailer_t|guard(?:_flags_t|ed_port_descriptor(?:32_t|64_t|_t))|header_t|id_t|ma(?:c_trailer_t|x_trailer_t)|o(?:ol_(?:descriptor(?:32_t|64_t|_t)|ports_descriptor(?:32_t|64_t|_t))|ption(?:_t|s_t))|p(?:ort_descriptor_t|riority_t)|return_t|s(?:e(?:curity_trailer_t|qno_trailer_t)|ize_t)|t(?:imeout_t|railer_(?:info_t|size_t|t(?:ype_t)?)|ype_(?:descriptor_t|n(?:ame_t|umber_t)|size_t))))|no_senders_notification_t|port_(?:array_t|context_t|de(?:l(?:eted_notification_t|ta_t)|stroyed_notification_t)|flavor_t|guard_exception_codes|info_(?:ext(?:_t)?|t)|limits(?:_t)?|ms(?:count_t|gcount_t)|name_(?:array_t|t)|options(?:_(?:ptr_t|t))?|qos(?:_t)?|right(?:_t|s_t)|s(?:eqno_t|rights_t|tatus(?:_t)?)|type_(?:array_t|t)|urefs_t)|send_(?:once_notification_t|possible_notification_t)|t(?:ask_basic_info(?:_(?:data_t|t))?|imespec(?:_t)?)|v(?:m_(?:address_t|info_region(?:_t)?|offset_t|read_entry(?:_t)?|size_t)|oucher_(?:attr_(?:co(?:mmand_t|nt(?:ent_(?:size_t|t)|rol_(?:flags_t|t)))|importance_refs|key_(?:array_t|t)|manager_t|r(?:aw_recipe_(?:array_(?:size_t|t)|size_t|t)|ecipe_(?:command_(?:array_t|t)|data(?:_t)?|size_t|t))|value_(?:flags_t|handle_(?:array_(?:size_t|t)|t)|reference_t))|name_(?:array_t|t)|selector_t|t))|zone_(?:info_(?:array_t|data|t)|name(?:_(?:array_t|t))?))|trix_(?:double(?:2x(?:2|3|4)|3x(?:2|3|4)|4x(?:2|3|4))|float(?:2x(?:2|3|4)|3x(?:2|3|4)|4x(?:2|3|4))))|context_t|em(?:_entry_name_port_t|ory_object_(?:a(?:rray_t|ttr_info(?:_(?:data_t|t))?)|behave_info(?:_(?:data_t|t))?|c(?:luster_size_t|o(?:ntrol_t|py_strategy_t))|default_t|f(?:ault_info_t|lavor_t)|info_(?:data_t|t)|name_t|offset_t|perf_info(?:_(?:data_t|t))?|return_t|size_t|t))|ig_(?:impl_routine_t|r(?:eply_error_t|outine_(?:arg_descriptor_t|descriptor(?:_t)?|t))|s(?:erver_routine_t|tub_routine_t|ubsystem(?:_t)?|ymtab(?:_t)?))|sg(?:_labels_t|hdr))|n(?:atural_t|ot(?:e_command|ify_port_t)|space_path_t|tsid_t)|os_(?:block_t|function_t|log_(?:s|t(?:ype_t)?)|trace_payload_(?:object_t|t)|unfair_lock_s)|p(?:a(?:cked_(?:char(?:16|2|32|4|64|8)|double(?:2|4|8)|float(?:16|2|4|8)|int(?:16|2|4|8)|long(?:2|4|8)|short(?:16|2|32|4|8)|u(?:char(?:16|2|32|4|64|8)|int(?:16|2|4|8)|long(?:2|4|8)|short(?:16|2|32|4|8)))|ge_address_array_t)|icker|o(?:inter_t|licy_(?:base(?:_(?:data_t|t)|s)|fifo_(?:base(?:_(?:data_t|t))?|info(?:_(?:data_t|t))?|limit(?:_(?:data_t|t))?)|info(?:_(?:data_t|t)|s)|limit(?:_(?:data_t|t)|s)|rr_(?:base(?:_(?:data_t|t))?|info(?:_(?:data_t|t))?|limit(?:_(?:data_t|t))?)|t(?:imeshare_(?:base(?:_(?:data_t|t))?|info(?:_(?:data_t|t))?|limit(?:_(?:data_t|t))?))?))|pnum_t|r(?:eb(?:ind_cksum_command|ound_dylib_command)|ocessor_(?:array_t|basic_info(?:_(?:data_t|t))?|cpu_load_info(?:_(?:data_t|t))?|flavor_t|info_(?:array_t|data_t|t)|port_(?:array_t|t)|set_(?:array_t|basic_info(?:_(?:data_t|t))?|control_(?:port_t|t)|flavor_t|info_(?:data_t|t)|load_info(?:_(?:data_t|t))?|name_(?:array_t|port_(?:array_t|t)|t)|port_t|t)|t)))|qos_class_t|r(?:e(?:g(?:64_t|isterSelectorType)|lop)|outine(?:_(?:arg_(?:descriptor(?:_t)?|offset|size|type)|descriptor(?:_t)?)|s_command(?:_64)?)|p(?:ath_command|c_(?:routine_(?:arg_descriptor(?:_t)?|descriptor(?:_t)?)|s(?:ignature|ubsystem(?:_t)?))))|s(?:a(?:_endpoints(?:_t)?|e_(?:associd_t|connid_t))|e(?:c(?:_(?:certificate(?:_t)?|identity(?:_t)?|object(?:_t)?|protocol_(?:challenge_(?:complete_t|t)|key_update_(?:complete_t|t)|metadata(?:_t)?|options(?:_t)?|pre_shared_key_selection_(?:complete_t|t)|verify_(?:complete_t|t))|trust(?:_t)?)|tion(?:_64)?|urity_token_t)|gment_command(?:_64)?|maphore_(?:port_t|t))|f(?:_hdtr|nt(?:CMap(?:E(?:ncoding|xtendedSubHeader)|Header|SubHeader)|D(?:escriptorHeader|irectory(?:Entry)?)|F(?:eature(?:Header|Name)|ont(?:Descriptor|FeatureSetting|RunFeature))|Instance|Name(?:Header|Record)|Variation(?:Axis|Header)))|i(?:md_(?:bool|char(?:1(?:6)?|2|3(?:2)?|4|64|8)|double(?:1|2|3|4|8)|float(?:1(?:6)?|2|3|4|8)|int(?:1(?:6)?|2|3|4|8)|long(?:1|2|3|4|8)|packed_(?:char(?:16|2|32|4|64|8)|double(?:2|4|8)|float(?:16|2|4|8)|int(?:16|2|4|8)|long(?:2|4|8)|short(?:16|2|32|4|8)|u(?:char(?:16|2|32|4|64|8)|int(?:16|2|4|8)|long(?:2|4|8)|short(?:16|2|32|4|8)))|short(?:1(?:6)?|2|3(?:2)?|4|8)|u(?:char(?:1(?:6)?|2|3(?:2)?|4|64|8)|int(?:1(?:6)?|2|3|4|8)|long(?:1|2|3|4|8)|short(?:1(?:6)?|2|3(?:2)?|4|8)))|nt(?:16|32|64|8))|leep_type_t|o(?:_np_extensions|ck(?:addr(?:_storage)?|proto)|urce_version_command)|u(?:b_(?:client_command|framework_command|library_command|umbrella_command)|id_cred_(?:path_t|t|uid_t))|y(?:m(?:seg_command|tab_(?:command|name_t))|nc_policy_t))|t(?:ask_(?:a(?:bsolutetime_info(?:_(?:data_t|t))?|ffinity_tag_info(?:_(?:data_t|t))?|rray_t)|basic_info(?:_(?:32(?:_(?:data_t|t))?|64(?:_(?:data_t|t))?|data_t|t))?|category_policy(?:_(?:data_t|t))?|dyld_info(?:_(?:data_t|t))?|e(?:vents_info(?:_(?:data_t|t))?|x(?:c_guard_behavior_t|tmod_info(?:_(?:data_t|t))?))|fla(?:gs_info(?:_(?:data_t|t))?|vor_t)|in(?:fo_(?:data_t|t)|spect_(?:basic_counts(?:_(?:data_t|t))?|flavor(?:_t)?|info_t|t))|kernelmemory_info(?:_(?:data_t|t))?|latency_qos(?:_t)?|name_t|p(?:o(?:licy_(?:flavor_t|t)|rt_(?:array_t|t)|wer_info(?:_(?:data_t|t|v2(?:_(?:data_t|t))?))?)|urgable_info_t)|qos_policy(?:_t)?|role(?:_t)?|s(?:pecial_port_t|uspension_token_t)|t(?:hr(?:ead_times_info(?:_(?:data_t|t))?|oughput_qos(?:_t)?)|race_memory_info(?:_(?:data_t|t))?)?|vm_info(?:_(?:data_t|t))?|wait_state_info(?:_(?:data_t|t))?|zone_info_(?:array_t|data|t))|hread_(?:a(?:ct_(?:array_t|port_(?:array_t|t)|t)|ffinity_policy(?:_(?:data_t|t))?|rray_t)|ba(?:ckground_policy(?:_(?:data_t|t))?|sic_info(?:_(?:data_t|t))?)|command|extended_(?:info(?:_(?:data_t|t))?|policy(?:_(?:data_t|t))?)|flavor_t|i(?:dentifier_info(?:_(?:data_t|t))?|n(?:fo_(?:data_t|t)|spect_t))|latency_qos_(?:policy(?:_(?:data_t|t))?|t)|p(?:o(?:licy_(?:flavor_t|t)|rt_(?:array_t|t))|recedence_policy(?:_(?:data_t|t))?)|sta(?:ndard_policy(?:_(?:data_t|t))?|te_(?:data_t|flavor_(?:array_t|t)|t))|t(?:hroughput_qos_(?:policy(?:_(?:data_t|t))?|t)|ime_constraint_policy(?:_(?:data_t|t))?)?)|ime_value(?:_t)?|l(?:s_(?:ciphersuite_(?:group_t|t)|protocol_version_t)|v_descriptor)|oken_t|wolevel_hint(?:s_command)?)|u(?:ext_object_t|int(?:16|32|64|8)|pl_t|ser_subsystem_t|uid_(?:command|string_t))|v(?:e(?:ctor_(?:char(?:16|2|3(?:2)?|4|8)|double(?:2|3|4|8)|float(?:16|2|3|4|8)|int(?:16|2|3|4|8)|long(?:1|2|3|4|8)|short(?:16|2|3(?:2)?|4|8)|u(?:char(?:16|2|3(?:2)?|4|8)|int(?:16|2|3|4|8)|long(?:1|2|3|4|8)|short(?:16|2|3(?:2)?|4|8)))|rsion_min_command)|fs_path_t|irtual_memory_guard_exception_codes|m(?:32_object_id_t|_(?:address_t|behavior_t|extmod_statistics(?:_(?:data_t|t))?|in(?:fo_(?:object(?:_(?:array_t|t))?|region(?:_(?:64(?:_t)?|t))?)|herit_t)|ma(?:chine_attribute_(?:t|val_t)|p_(?:address_t|offset_t|size_t|t))|named_entry_t|o(?:bject_(?:id_t|offset_t|size_t)|ffset_t)|p(?:age_info_(?:basic(?:_(?:data_t|t))?|data_t|flavor_t|t)|rot_t|urg(?:able_t|eable_(?:info(?:_t)?|stat(?:_t)?)))|re(?:ad_entry(?:_t)?|gion_(?:basic_info(?:_(?:64(?:_t)?|data_(?:64_t|t)|t))?|extended_info(?:_(?:data_t|t))?|flavor_t|info_(?:64_t|data_t|t)|recurse_info_(?:64_t|t)|submap_(?:info(?:_(?:64(?:_t)?|data_(?:64_t|t)|t))?|short_info_(?:64(?:_t)?|data_64_t))|top_info(?:_(?:data_t|t))?))|s(?:ize_t|tatistics(?:64(?:_(?:data_t|t))?|_(?:data_t|t))?|ync_t)|task_entry_t))|o(?:idPtr|ucher_mach_msg_state_(?:s|t)))|x(?:86_(?:avx(?:512_state(?:32_t|64_t|_t)?|_state(?:32_t|64_t|_t)?)|debug_state(?:32_t|64_t|_t)?|exception_state(?:32_t|64_t|_t)?|float_state(?:32_t|64_t|_t)?|pagein_state_t|state_hdr(?:_t)?|thread_(?:full_state64_t|state(?:32_t|64_t|_t)?))|pc_(?:activity_(?:handler_t|state_t|t)|connection_(?:handler_t|t)|endpoint_t|finalizer_t|handler_t|object_t|type_t))|zone_(?:btrecord(?:_(?:array_t|t))?|info(?:_(?:array_t|t))?|name(?:_(?:array_t|t))?))\\b", + "name": "support.type.c" + }, { "match": "\\b(?:CF(?:A(?:bsoluteTime|llocator(?:AllocateCallBack|Co(?:ntext|pyDescriptionCallBack)|DeallocateCallBack|PreferredSizeCallBack|Re(?:allocateCallBack|f|leaseCallBack|tainCallBack))|rray(?:ApplierFunction|C(?:allBacks|opyDescriptionCallBack)|EqualCallBack|Re(?:f|leaseCallBack|tainCallBack))|ttributedStringRef)|B(?:ag(?:ApplierFunction|C(?:allBacks|opyDescriptionCallBack)|EqualCallBack|HashCallBack|Re(?:f|leaseCallBack|tainCallBack))|i(?:naryHeap(?:ApplierFunction|C(?:allBacks|ompareContext)|Ref)|t(?:VectorRef)?)|ooleanRef|undleRef(?:Num)?|yteOrder)|C(?:alendar(?:Identifier|Ref|Unit)|haracterSet(?:PredefinedSet|Ref)|ompar(?:atorFunction|isonResult))|D(?:at(?:a(?:Ref|SearchFlags)|e(?:Formatter(?:Key|Ref|Style)|Ref))|ictionary(?:ApplierFunction|CopyDescriptionCallBack|EqualCallBack|HashCallBack|KeyCallBacks|Re(?:f|leaseCallBack|tainCallBack)|ValueCallBacks))|Error(?:Domain|Ref)|File(?:Descriptor(?:C(?:allBack|ontext)|NativeDescriptor|Ref)|Security(?:ClearOptions|Ref))|GregorianUnitFlags|HashCode|I(?:SO8601DateFormatOptions|ndex)|Locale(?:Identifier|Key|LanguageDirection|Ref)|M(?:achPort(?:C(?:allBack|ontext)|InvalidationCallBack|Ref)|essagePort(?:C(?:allBack|ontext)|InvalidationCallBack|Ref)|utable(?:A(?:rrayRef|ttributedStringRef)|B(?:agRef|itVectorRef)|CharacterSetRef|D(?:ataRef|ictionaryRef)|S(?:etRef|tringRef)))|N(?:otification(?:C(?:allback|enterRef)|Name|SuspensionBehavior)|u(?:llRef|mber(?:Formatter(?:Key|OptionFlags|PadPosition|R(?:ef|oundingMode)|Style)|Ref|Type)))|OptionFlags|P(?:lugIn(?:DynamicRegisterFunction|FactoryFunction|Instance(?:DeallocateInstanceDataFunction|GetInterfaceFunction|Ref)|Ref|UnloadFunction)|ropertyList(?:Format|MutabilityOptions|Ref))|R(?:ange|eadStream(?:ClientCallBack|Ref)|unLoop(?:Activity|Mode|Observer(?:C(?:allBack|ontext)|Ref)|R(?:ef|unResult)|Source(?:Context(?:1)?|Ref)|Timer(?:C(?:allBack|ontext)|Ref)))|S(?:et(?:ApplierFunction|C(?:allBacks|opyDescriptionCallBack)|EqualCallBack|HashCallBack|Re(?:f|leaseCallBack|tainCallBack))|ocket(?:C(?:allBack(?:Type)?|ontext)|Error|NativeHandle|Ref|Signature)|tr(?:eam(?:ClientContext|E(?:rror(?:Domain)?|ventType)|PropertyKey|Status)|ing(?:BuiltInEncodings|CompareFlags|Encoding(?:s)?|InlineBuffer|NormalizationForm|Ref|Tokenizer(?:Ref|TokenType)))|wappedFloat(?:32|64))|T(?:ime(?:Interval|Zone(?:NameStyle|Ref))|ree(?:ApplierFunction|Co(?:ntext|pyDescriptionCallBack)|Re(?:f|leaseCallBack|tainCallBack))|ype(?:ID|Ref))|U(?:RL(?:Bookmark(?:CreationOptions|FileCreationOptions|ResolutionOptions)|ComponentType|E(?:numerator(?:Options|Re(?:f|sult))|rror)|PathStyle|Ref)|UID(?:Bytes|Ref)|serNotification(?:CallBack|Ref))|WriteStream(?:ClientCallBack|Ref)|XML(?:Attribute(?:DeclarationInfo|ListDeclarationInfo)|Document(?:Info|TypeInfo)|E(?:lement(?:Info|TypeDeclarationInfo)|ntity(?:Info|ReferenceInfo|TypeCode)|xternalID)|No(?:de(?:Ref|TypeCode)|tationInfo)|P(?:arser(?:AddChildCallBack|C(?:allBacks|o(?:ntext|pyDescriptionCallBack)|reateXMLStructureCallBack)|EndXMLStructureCallBack|HandleErrorCallBack|Options|Re(?:f|leaseCallBack|solveExternalEntityCallBack|tainCallBack)|StatusCode)|rocessingInstructionInfo)|TreeRef))|FSRef)\\b", "name": "support.type.cf.c" }, { - "match": "\\b(?:FILE|accessx_descriptor|blk(?:cnt_t|size_t)|c(?:addr_t|lock(?:_t|id_t)|t_rune_t)|d(?:addr_t|ev_t|i(?:spatch_time_t|v_t)|ouble_t)|errno_t|f(?:bootstraptransfer(?:_t)?|c(?:hecklv(?:_t)?|odeblobs(?:_t)?)|d_(?:mask|set)|i(?:lesec_(?:property_t|t)|xpt_t)|lo(?:at_t|ck(?:timeout)?)|pos_t|s(?:blkcnt_t|filcnt_t|i(?:d(?:_t)?|gnatures(?:_t)?)|obj_id(?:_t)?|searchblock|tore(?:_t)?))|g(?:id_t|uid_t)|i(?:d(?:_t|type_t)|n(?:_(?:addr_t|port_t)|o(?:64_t|_t)|t(?:16_t|32_t|64_t|8_t|_(?:fast(?:16_t|32_t|64_t|8_t)|least(?:16_t|32_t|64_t|8_t))|max_t|ptr_t)))|jmp_buf|key_t|l(?:conv|div_t|ldiv_t|og2phys)|m(?:ach_port_t|ode_t)|nlink_t|off_t|p(?:id_t|roc_rlimit_control_wakeupmon|trdiff_t)|q(?:addr_t|uad_t)|r(?:advisory|egister_t|lim(?:_t|it)|size_t|u(?:ne_t|sage(?:_info_(?:current|t|v(?:0|1|2|3)))?))|s(?:e(?:archstate|gsz_t)|i(?:g(?:_(?:atomic_t|t)|action|event|info_t|jmp_buf|s(?:et_t|tack)|vec)|ze_t)|size_t|tack_t|useconds_t|wblk_t|yscall_arg_t)|t(?:ime(?:_t|spec|val)|m)|u(?:_(?:char|int(?:16_t|32_t|64_t|8_t)?|long|quad_t|short)|context_t|i(?:d_t|nt(?:16_t|32_t|64_t|8_t|_(?:fast(?:16_t|32_t|64_t|8_t)|least(?:16_t|32_t|64_t|8_t))|max_t|ptr_t)?)|s(?:e(?:conds_t|r_(?:addr_t|long_t|off_t|s(?:ize_t|size_t)|time_t|ulong_t))|hort)|uid_t)|va_list|wint_t)\\b", + "match": "\\b(?:accessx_descriptor|blk(?:cnt_t|size_t)|c(?:addr_t|lock(?:_t|i(?:d_t|nfo))|t_rune_t)|d(?:addr_t|ev_t|i(?:spatch_time_t|v_t)|ouble_t)|e(?:rrno_t|xception)|f(?:bootstraptransfer(?:_t)?|c(?:hecklv(?:_t)?|odeblobs(?:_t)?)|d_(?:mask|set)|i(?:lesec_(?:property_t|t)|xpt_t)|lo(?:at_t|ck(?:timeout)?)|punchhole(?:_t)?|s(?:blkcnt_t|filcnt_t|i(?:d(?:_t)?|gnatures(?:_t)?)|obj_id(?:_t)?|pecread(?:_t)?|searchblock|tore(?:_t)?)|trimactivefile(?:_t)?)|g(?:id_t|uid_t)|i(?:d(?:_t|type_t)|n(?:_(?:addr_t|port_t)|o(?:64_t|_t)|t(?:16_t|32_t|64_t|8_t|_(?:fast(?:16_t|32_t|64_t|8_t)|least(?:16_t|32_t|64_t|8_t))|max_t|ptr_t))|ovec|timerval)|jmp_buf|key_t|l(?:conv|div_t|ldiv_t|og2phys)|m(?:a(?:ch_port_t|x_align_t)|ode_t)|nlink_t|off_t|p(?:id_t|roc_rlimit_control_wakeupmon|trdiff_t)|q(?:addr_t|uad_t)|r(?:advisory|egister_t|lim(?:_t|it)|size_t|u(?:ne_t|sage(?:_info_(?:current|t|v(?:0|1|2|3|4)))?))|s(?:a_family_t|e(?:archstate|gsz_t)|i(?:g(?:_(?:atomic_t|t)|action|event|info_t|jmp_buf|s(?:et_t|tack)|vec)|md_(?:double(?:2x(?:2|3|4)|3x(?:2|3|4)|4x(?:2|3|4))|float(?:2x(?:2|3|4)|3x(?:2|3|4)|4x(?:2|3|4))|quat(?:d|f))|ze_t)|ocklen_t|size_t|tack_t|useconds_t|wblk_t|yscall_arg_t)|t(?:ime(?:_t|spec|val(?:64)?|zone)|m)|u(?:_(?:char|int(?:16_t|32_t|64_t|8_t)?|long|quad_t|short)|context_t|i(?:d_t|nt(?:16_t|32_t|64_t|8_t|_(?:fast(?:16_t|32_t|64_t|8_t)|least(?:16_t|32_t|64_t|8_t))|max_t|ptr_t)?)|s(?:e(?:conds_t|r_(?:addr_t|long_t|off_t|s(?:ize_t|size_t)|time_t|ulong_t))|hort)|uid_t)|va_list|w(?:char_t|int_t))\\b", "name": "support.type.clib.c" }, { - "match": "\\bdispatch_(?:autorelease_frequency_t|block_(?:flags_t|t)|data_(?:applier_t|s|t)|f(?:d_t|unction_t)|group_(?:s|t)|io_(?:close_flags_t|handler_t|interval_flags_t|s|t(?:ype_t)?)|o(?:bject_(?:s|t)|nce_t)|q(?:os_class_t|ueue_(?:attr_(?:s|t)|priority_t|s|t))|s(?:emaphore_(?:s|t)|ource_(?:m(?:ach_send_flags_t|emorypressure_flags_t)|proc_flags_t|s|t(?:imer_flags_t|ype_(?:s|t))?|vnode_flags_t)))\\b", + "match": "\\bdispatch_(?:autorelease_frequency_t|block_(?:flags_t|t)|channel_s|data_(?:s|t)|f(?:d_t|unction_t)|group_(?:s|t)|io_(?:close_flags_t|handler_t|interval_flags_t|s|t(?:ype_t)?)|mach_(?:msg_s|s)|o(?:bject_(?:s|t)|nce_t)|q(?:os_class_t|ueue_(?:attr_(?:s|t)|concurrent_t|global_t|main_t|priority_t|s(?:erial_t)?|t))|s(?:emaphore_(?:s|t)|ource_(?:m(?:ach_(?:recv_flags_t|send_flags_t)|emorypressure_flags_t)|proc_flags_t|s|t(?:imer_flags_t|ype_(?:s|t))?|vnode_flags_t))|workloop_t)\\b", "name": "support.type.dispatch.c" }, { @@ -110,16 +290,52 @@ "name": "support.type.mac-classic.c" }, { - "match": "\\b(?:pthread_(?:attr_t|cond(?:_t|attr_t)|key_t|mutex(?:_t|attr_t)|o(?:nce_t|verride_(?:s|t))|rwlock(?:_t|attr_t)|t)|sched_param)\\b", + "match": "\\bpthread_(?:attr_t|cond(?:_t|attr_t)|key_t|mutex(?:_t|attr_t)|once_t|rwlock(?:_t|attr_t)|t)\\b", "name": "support.type.pthread.c" }, { - "match": "\\bCGImageByteOrderInfo\\b", - "name": "support.type.quartz.10.12.c" + "match": "\\b(?:CG(?:AffineTransform|B(?:itmap(?:ContextReleaseDataCallback|Info)|lendMode|uttonCount)|C(?:aptureOptions|harCode|o(?:lor(?:ConversionInfo(?:Ref|TransformType)?|Re(?:f|nderingIntent)|Space(?:Model|Ref)?)?|n(?:figureOption|text(?:Ref)?)))|D(?:ata(?:Consumer(?:Callbacks|PutBytesCallback|Re(?:f|leaseInfoCallback))?|Provider(?:DirectCallbacks|GetByte(?:PointerCallback|s(?:AtPositionCallback|Callback))|Re(?:f|lease(?:BytePointerCallback|DataCallback|InfoCallback)|windCallback)|S(?:equentialCallbacks|kipForwardCallback))?)|eviceColor|i(?:rectDisplayID|splay(?:BlendFraction|C(?:hangeSummaryFlags|o(?:nfigRef|unt))|Err|Fade(?:Interval|ReservationToken)|Mode(?:Ref)?|Re(?:configurationCallBack|servationInterval)|Stream(?:Frame(?:AvailableHandler|Status)|Ref|Update(?:Re(?:ctType|f))?)?)))|E(?:rror|vent(?:Err|F(?:i(?:eld|lterMask)|lags)|M(?:ask|ouseSubtype)|Ref|S(?:ource(?:KeyboardType|Ref|StateID)|uppressionState)|T(?:ap(?:CallBack|Information|Location|Options|P(?:lacement|roxy))|imestamp|ype)))|F(?:loat|ont(?:Index|PostScriptFormat|Ref)?|unction(?:Callbacks|EvaluateCallback|Re(?:f|leaseInfoCallback))?)|G(?:ammaValue|esturePhase|lyph(?:DeprecatedEnum)?|radient(?:DrawingOptions|Ref)?)|I(?:mage(?:AlphaInfo|ByteOrderInfo|PixelFormatInfo|Ref)?|nterpolationQuality)|KeyCode|L(?:ayer(?:Ref)?|ine(?:Cap|Join))|M(?:o(?:mentumScrollPhase|useButton)|utablePathRef)|OpenGLDisplayMask|P(?:DF(?:A(?:ccessPermissions|rray(?:Ref)?)|Bo(?:olean|x)|ContentStream(?:Ref)?|D(?:ataFormat|ictionary(?:ApplierFunction|Ref)?|ocument(?:Ref)?)|Integer|O(?:bject(?:Ref|Type)?|perator(?:Callback|Table(?:Ref)?))|Page(?:Ref)?|Real|S(?:canner(?:Ref)?|tr(?:eam(?:Ref)?|ing(?:Ref)?))|Tag(?:Property|Type))|SConverter(?:Begin(?:DocumentCallback|PageCallback)|Callbacks|End(?:DocumentCallback|PageCallback)|MessageCallback|ProgressCallback|Re(?:f|leaseInfoCallback))?|at(?:h(?:Appl(?:ierFunction|yBlock)|DrawingMode|Element(?:Type)?|Ref)?|tern(?:Callbacks|DrawPatternCallback|Re(?:f|leaseInfoCallback)|Tiling)?)|oint)|Re(?:ct(?:Count|Edge)?|freshRate)|S(?:cr(?:een(?:RefreshCallback|Update(?:Move(?:Callback|Delta)|Operation))|oll(?:EventUnit|Phase))|hading(?:Ref)?|ize)|Text(?:DrawingMode|Encoding)|Vector|W(?:heelCount|indow(?:BackingType|I(?:D|mageOption)|L(?:evel(?:Key)?|istOption)|SharingType)))|IOSurfaceRef)\\b", + "name": "support.type.quartz.c" }, { - "match": "\\b(?:CG(?:AffineTransform|B(?:itmap(?:ContextReleaseDataCallback|Info)|lendMode|uttonCount)|C(?:aptureOptions|harCode|o(?:lor(?:ConversionInfo(?:Ref|TransformType)?|Re(?:f|nderingIntent)|Space(?:Model|Ref)?)?|n(?:figureOption|text(?:Ref)?)))|D(?:ata(?:Consumer(?:Callbacks|PutBytesCallback|Re(?:f|leaseInfoCallback))?|Provider(?:DirectCallbacks|GetByte(?:PointerCallback|s(?:AtPositionCallback|Callback))|Re(?:f|lease(?:BytePointerCallback|DataCallback|InfoCallback)|windCallback)|S(?:equentialCallbacks|kipForwardCallback))?)|eviceColor|i(?:rectDisplayID|splay(?:BlendFraction|C(?:hangeSummaryFlags|o(?:nfigRef|unt))|Err|Fade(?:Interval|ReservationToken)|Mode(?:Ref)?|Re(?:configurationCallBack|servationInterval)|Stream(?:Frame(?:AvailableHandler|Status)|Ref|Update(?:Re(?:ctType|f))?)?)))|E(?:rror|vent(?:Err|F(?:i(?:eld|lterMask)|lags)|M(?:ask|ouseSubtype)|Ref|S(?:ource(?:KeyboardType|Ref|StateID)|uppressionState)|T(?:ap(?:CallBack|Information|Location|Options|P(?:lacement|roxy))|imestamp|ype)))|F(?:loat|ont(?:Index|PostScriptFormat|Ref)?|unction(?:Callbacks|EvaluateCallback|Re(?:f|leaseInfoCallback))?)|G(?:ammaValue|esturePhase|lyph(?:DeprecatedEnum)?|radient(?:DrawingOptions|Ref)?)|I(?:mage(?:AlphaInfo|ByteOrderInfo|Ref)?|nterpolationQuality)|KeyCode|L(?:ayer(?:Ref)?|ine(?:Cap|Join))|M(?:o(?:mentumScrollPhase|useButton)|utablePathRef)|OpenGLDisplayMask|P(?:DF(?:Array(?:Ref)?|Bo(?:olean|x)|ContentStream(?:Ref)?|D(?:ataFormat|ictionary(?:ApplierFunction|Ref)?|ocument(?:Ref)?)|Integer|O(?:bject(?:Ref|Type)?|perator(?:Callback|Table(?:Ref)?))|Page(?:Ref)?|Real|S(?:canner(?:Ref)?|tr(?:eam(?:Ref)?|ing(?:Ref)?)))|SConverter(?:Begin(?:DocumentCallback|PageCallback)|Callbacks|End(?:DocumentCallback|PageCallback)|MessageCallback|ProgressCallback|Re(?:f|leaseInfoCallback))?|at(?:h(?:ApplierFunction|DrawingMode|Element(?:Type)?|Ref)?|tern(?:Callbacks|DrawPatternCallback|Re(?:f|leaseInfoCallback)|Tiling)?)|oint)|Re(?:ct(?:Count|Edge)?|freshRate)|S(?:cr(?:een(?:RefreshCallback|Update(?:Move(?:Callback|Delta)|Operation))|oll(?:EventUnit|Phase))|hading(?:Ref)?|ize)|Text(?:DrawingMode|Encoding)|Vector|W(?:heelCount|indow(?:BackingType|I(?:D|mageOption)|L(?:evel(?:Key)?|istOption)|SharingType)))|IOSurfaceRef)\\b", - "name": "support.type.quartz.c" + "match": "\\b(?:k(?:C(?:FHTTPVersion2_0|GImage(?:Destination(?:EmbedThumbnail|ImageMaxPixelSize)|MetadataShouldExcludeGPS|Property(?:8BIMVersion|APNG(?:DelayTime|LoopCount|UnclampedDelayTime)|GPSHPositioningError|MakerAppleDictionary))|T(?:FontOpenTypeFeature(?:Tag|Value)|RubyAnnotationAttributeName)|V(?:ImageBufferAlphaChannelIsOpaque|PixelFormatCo(?:mponentRange(?:_(?:FullRange|VideoRange|WideRange))?|ntains(?:RGB|YCbCr))))|Sec(?:AttrAccess(?:Control|ibleWhenPasscodeSetThisDeviceOnly)|UseOperationPrompt)|UTType(?:3DContent|A(?:VIMovie|pple(?:ProtectedMPEG4Video|Script)|ssemblyLanguageSource|udioInterchangeFileFormat)|B(?:inaryPropertyList|ookmark|zip2Archive)|C(?:alendarEvent|ommaSeparatedText)|DelimitedText|E(?:lectronicPublication|mailMessage)|Font|GNUZipArchive|InternetLocation|J(?:SON|ava(?:Archive|Class|Script))|Log|M(?:3UPlaylist|IDIAudio|PEG2(?:TransportStream|Video))|OSAScript(?:Bundle)?|P(?:HPScript|KCS12|erlScript|l(?:aylist|uginBundle)|r(?:esentation|opertyList)|ythonScript)|QuickLookGenerator|R(?:awImage|ubyScript)|S(?:c(?:alableVectorGraphics|ript)|hellScript|p(?:otlightImporter|readsheet)|ystemPreferencesPane)|T(?:abSeparatedText|oDoItem)|U(?:RLBookmarkData|TF8TabSeparatedText|nixExecutable)|W(?:aveformAudio|indowsExecutable)|X(?:509Certificate|MLPropertyList|PCService)|ZipArchive))|matrix_identity_(?:double(?:2x2|3x3|4x4)|float(?:2x2|3x3|4x4)))\\b", + "name": "support.variable.10.10.c" + }, + { + "match": "\\bk(?:A(?:XListItem(?:IndexTextAttribute|LevelTextAttribute|PrefixTextAttribute)|udioComponent(?:InstanceInvalidationNotification|RegistrationsChangedNotification))|C(?:FStreamPropertySocketExtendedBackgroundIdleMode|GImage(?:Property(?:ExifSubsecTimeOriginal|PNGCompressionFilter|TIFFTile(?:Length|Width))|SourceSubsampleFactor)|V(?:ImageBuffer(?:ColorPrimaries_(?:DCI_P3|ITU_R_2020|P3_D65)|TransferFunction_ITU_R_2020|YCbCrMatrix_(?:DCI_P3|ITU_R_2020|P3_D65))|MetalTextureCacheMaximumTextureAgeKey|PixelBuffer(?:MetalCompatibilityKey|OpenGLTextureCacheCompatibilityKey)))|MDItemHTMLContent|Sec(?:A(?:CLAuthorization(?:Integrity|PartitionID)|ttrSyncViewHint)|PolicyApplePayIssuerEncryption|TrustCertificateTransparency|UseAuthentication(?:Context|UI(?:Allow|Fail|Skip)?))|UTTypeSwiftSource)\\b", + "name": "support.variable.10.11.c" + }, + { + "match": "\\bk(?:C(?:FStreamNetworkServiceTypeCallSignaling|GImage(?:DestinationOptimizeColorForSharing|PropertyDNG(?:AsShot(?:Neutral|WhiteXY)|B(?:aseline(?:Exposure|Noise|Sharpness)|lackLevel)|C(?:a(?:librationIlluminant(?:1|2)|meraCalibration(?:1|2|Signature))|olorMatrix(?:1|2))|FixVignetteRadial|NoiseProfile|Pr(?:ivateData|ofileCalibrationSignature)|W(?:arp(?:Fisheye|Rectilinear)|hiteLevel)))|T(?:BackgroundColorAttributeName|FontDownloadedAttribute|HorizontalInVerticalFormsAttributeName|RubyAnnotationS(?:caleToFitAttributeName|izeFactorAttributeName)|TrackingAttributeName)|VImageBufferTransferFunction_SMPTE_ST_428_1)|IOSurfacePixelSizeCastingAllowed|Sec(?:Attr(?:AccessGroupToken|KeyTypeECSECPrimeRandom|TokenID(?:SecureEnclave)?)|Key(?:Algorithm(?:EC(?:D(?:HKeyExchange(?:Cofactor(?:X963SHA(?:1|2(?:24|56)|384|512))?|Standard(?:X963SHA(?:1|2(?:24|56)|384|512))?)|SASignature(?:DigestX962(?:SHA(?:1|2(?:24|56)|384|512))?|MessageX962SHA(?:1|2(?:24|56)|384|512)|RFC4754))|IESEncryption(?:CofactorX963SHA(?:1AESGCM|2(?:24AESGCM|56AESGCM)|384AESGCM|512AESGCM)|StandardX963SHA(?:1AESGCM|2(?:24AESGCM|56AESGCM)|384AESGCM|512AESGCM)))|RSA(?:Encryption(?:OAEPSHA(?:1(?:AESGCM)?|2(?:24(?:AESGCM)?|56(?:AESGCM)?)|384(?:AESGCM)?|512(?:AESGCM)?)|PKCS1|Raw)|Signature(?:DigestPKCS1v15(?:Raw|SHA(?:1|2(?:24|56)|384|512))|MessagePKCS1v15SHA(?:1|2(?:24|56)|384|512)|Raw)))|KeyExchangeParameter(?:RequestedSize|SharedInfo)))|UTTypeLivePhoto)\\b", + "name": "support.variable.10.12.c" + }, + { + "match": "\\bk(?:C(?:GImage(?:AuxiliaryData(?:Info(?:Data(?:Description)?|Metadata)|TypeD(?:epth|isparity))|Metadata(?:NamespaceIPTCExtension|PrefixIPTCExtension)|Property(?:AuxiliaryData(?:Type)?|BytesPerRow|FileContentsDictionary|Height|I(?:PTCExt(?:A(?:boutCvTerm(?:CvId|Id|Name|RefinedAbout)?|ddlModelInfo|rtwork(?:C(?:ircaDateCreated|o(?:nt(?:entDescription|ributionDescription)|pyright(?:Notice|Owner(?:ID|Name)))|reator(?:ID)?)|DateCreated|Licensor(?:ID|Name)|OrObject|PhysicalDescription|S(?:ource(?:Inv(?:URL|entoryNo))?|tylePeriod)|Title)|udio(?:Bitrate(?:Mode)?|ChannelCount))|C(?:ircaDateCreated|o(?:nt(?:ainerFormat(?:Identifier|Name)?|r(?:ibutor(?:Identifier|Name|Role)?|olledVocabularyTerm))|pyrightYear)|reator(?:Identifier|Name|Role)?)|D(?:ataOnScreen(?:Region(?:D|H|Text|Unit|W|X|Y)?)?|igital(?:ImageGUID|Source(?:FileType|Type))|opesheet(?:Link(?:Link(?:Qualifier)?)?)?)|E(?:mb(?:dEncRightsExpr|eddedEncodedRightsExpr(?:LangID|Type)?)|pisode(?:Identifier|N(?:ame|umber))?|vent|xternalMetadataLink)|FeedIdentifier|Genre(?:Cv(?:Id|Term(?:Id|Name|RefinedAbout)))?|Headline|IPTCLastEdited|L(?:inkedEnc(?:RightsExpr|odedRightsExpr(?:LangID|Type)?)|ocation(?:C(?:ity|ountry(?:Code|Name)|reated)|GPS(?:Altitude|L(?:atitude|ongitude))|Identifier|Location(?:Id|Name)|ProvinceState|S(?:hown|ublocation)|WorldRegion))|M(?:axAvail(?:Height|Width)|odelAge)|OrganisationInImage(?:Code|Name)|P(?:erson(?:Heard(?:Identifier|Name)?|InImage(?:C(?:haracteristic|vTerm(?:CvId|Id|Name|RefinedAbout))|Description|Id|Name|WDetails)?)|roductInImage(?:Description|GTIN|Name)?|ublicationEvent(?:Date|Identifier|Name)?)|R(?:ating(?:R(?:atingRegion|egion(?:C(?:ity|ountry(?:Code|Name))|GPS(?:Altitude|L(?:atitude|ongitude))|Identifier|Location(?:Id|Name)|ProvinceState|Sublocation|WorldRegion))|S(?:caleM(?:axValue|inValue)|ourceLink)|Value(?:LogoLink)?)?|e(?:gistry(?:EntryRole|I(?:D|temID)|OrganisationID)|leaseReady))|S(?:e(?:ason(?:Identifier|N(?:ame|umber))?|ries(?:Identifier|Name)?)|hownEvent(?:Identifier|Name)?|t(?:orylineIdentifier|reamReady|ylePeriod)|upplyChainSource(?:Identifier|Name)?)|T(?:emporalCoverage(?:From|To)?|ranscript(?:Link(?:Link(?:Qualifier)?)?)?)|Vi(?:deo(?:Bitrate(?:Mode)?|DisplayAspectRatio|EncodingProfile|S(?:hotType(?:Identifier|Name)?|treamsCount))|sualColor)|WorkflowTag(?:Cv(?:Id|Term(?:Id|Name|RefinedAbout)))?)|mage(?:Count|s))|NamedColorSpace|P(?:ixelFormat|rimaryImage)|ThumbnailImages|Width))|T(?:BaselineOffsetAttributeName|FontVariationAxisHiddenKey)|V(?:ImageBuffer(?:ContentLightLevelInfoKey|MasteringDisplayColorVolumeKey|TransferFunction_(?:ITU_R_2100_HLG|SMPTE_ST_2084_PQ|sRGB))|MetalTextureUsage))|IOSurface(?:Plane(?:BitsPerElement|Component(?:Bit(?:Depths|Offsets)|Names|Ranges|Types))|Subsampling)|Sec(?:A(?:CLAuthorizationChange(?:ACL|Owner)|ttrPersist(?:antReference|entReference))|KeyAlgorithm(?:ECIESEncryption(?:CofactorVariableIVX963SHA(?:2(?:24AESGCM|56AESGCM)|384AESGCM|512AESGCM)|StandardVariableIVX963SHA(?:2(?:24AESGCM|56AESGCM)|384AESGCM|512AESGCM))|RSASignature(?:DigestPSSSHA(?:1|2(?:24|56)|384|512)|MessagePSSSHA(?:1|2(?:24|56)|384|512)))))\\b", + "name": "support.variable.10.13.c" + }, + { + "match": "\\bkC(?:GImage(?:AuxiliaryDataTypePortraitEffectsMatte|Property(?:DNG(?:A(?:ctiveArea|n(?:alogBalance|tiAliasStrength)|sShot(?:ICCProfile|Pr(?:eProfileMatrix|ofileName)))|B(?:a(?:selineExposureOffset|yerGreenSplit)|estQualityScale|lackLevel(?:Delta(?:H|V)|RepeatDim))|C(?:FA(?:Layout|PlaneColor)|hromaBlurRadius|olorimetricReference|urrent(?:ICCProfile|PreProfileMatrix))|Default(?:BlackRender|Crop(?:Origin|Size)|Scale|UserCrop)|ExtraCameraProfiles|ForwardMatrix(?:1|2)|Linear(?:ResponseLimit|izationTable)|Ma(?:kerNoteSafety|skedAreas)|N(?:ewRawImageDigest|oiseReductionApplied)|O(?:pcodeList(?:1|2|3)|riginal(?:BestQualityFinalSize|Default(?:CropSize|FinalSize)|RawFile(?:D(?:ata|igest)|Name)))|Pr(?:eview(?:Application(?:Name|Version)|ColorSpace|DateTime|Settings(?:Digest|Name))|ofile(?:Copyright|EmbedPolicy|HueSatMap(?:D(?:ata(?:1|2)|ims)|Encoding)|LookTable(?:D(?:ata|ims)|Encoding)|Name|ToneCurve))|R(?:aw(?:DataUniqueID|ImageDigest|ToPreviewGain)|eductionMatrix(?:1|2)|owInterleaveFactor)|S(?:hadowScale|ubTileBlockSize))|PNG(?:Comment|Disclaimer|Source|Warning)))|TTypesetterOptionAllowUnboundedLayout|V(?:ImageBufferTransferFunction_Linear|PixelFormatContainsGrayscale))\\b", + "name": "support.variable.10.14.c" + }, + { + "match": "\\bk(?:C(?:FStreamProperty(?:Allow(?:ConstrainedNetworkAccess|ExpensiveNetworkAccess)|ConnectionIsExpensive)|GImage(?:A(?:nimation(?:DelayTime|LoopCount|StartIndex)|uxiliaryDataTypeSemanticSegmentation(?:HairMatte|SkinMatte|TeethMatte))|Property(?:APNG(?:CanvasPixel(?:Height|Width)|FrameInfoArray)|Exif(?:CompositeImage|OffsetTime(?:Digitized|Original)?|Source(?:ExposureTimesOfCompositeImage|ImageNumberOfCompositeImage))|GIF(?:CanvasPixel(?:Height|Width)|FrameInfoArray)|HEICS(?:CanvasPixel(?:Height|Width)|D(?:elayTime|ictionary)|FrameInfoArray|LoopCount|UnclampedDelayTime)))|TFontFeature(?:SampleTextKey|TooltipTextKey)|V(?:ImageBufferAlphaChannelMode(?:Key|_(?:PremultipliedAlpha|StraightAlpha))|MetalTextureStorageMode))|MIDIPropertyNameConfigurationDictionary|Sec(?:PropertyType(?:Array|Number)|UseDataProtectionKeychain))\\b", + "name": "support.variable.10.15.c" + }, + { + "match": "\\bkColorSyncExtendedRange\\b", + "name": "support.variable.10.16.c" + }, + { + "match": "\\bk(?:C(?:FStream(?:NetworkServiceType(?:AVStreaming|Responsive(?:AV|Data))|Property(?:ConnectionIsCellular|NoCellular))|GImage(?:Destination(?:DateTime|Me(?:rgeMetadata|tadata)|Orientation)|Metadata(?:EnumerateRecursively|Namespace(?:DublinCore|Exif(?:Aux)?|IPTCCore|Photoshop|TIFF|XMP(?:Basic|Rights))|Prefix(?:DublinCore|Exif(?:Aux)?|IPTCCore|Photoshop|TIFF|XMP(?:Basic|Rights))|ShouldExcludeXMP))|T(?:Baseline(?:Class(?:AttributeName|Hanging|Ideographic(?:Centered|High|Low)|Math|Roman)|InfoAttributeName|OriginalFont|Reference(?:Font|InfoAttributeName))|FontD(?:escriptorMatching(?:CurrentAssetSize|Descriptors|Error|Percentage|Result|SourceDescriptor|Total(?:AssetSize|DownloadedSize))|ownloadableAttribute)|WritingDirectionAttributeName)|VImageBufferColorPrimaries_P22)|Sec(?:O(?:AEP(?:EncodingParametersAttributeName|M(?:GF1DigestAlgorithmAttributeName|essageLengthAttributeName))|IDSRVName)|P(?:addingOAEPKey|olicyAppleTimeStamping|rivateKeyAttrs|ublicKeyAttrs)))\\b", + "name": "support.variable.10.8.c" + }, + { + "match": "\\b(?:XPC_ACTIVITY_(?:ALLOW_BATTERY|CHECK_IN|DELAY|GRACE_PERIOD|INTERVAL(?:_(?:1(?:5_MIN|_(?:DAY|HOUR|MIN))|30_MIN|4_HOURS|5_MIN|7_DAYS|8_HOURS))?|PRIORITY(?:_(?:MAINTENANCE|UTILITY))?|RE(?:PEATING|QUIRE_SCREEN_SLEEP))|k(?:AX(?:MarkedMisspelledTextAttribute|TrustedCheckOptionPrompt)|C(?:FStreamPropertySSLContext|GImage(?:Metadata(?:NamespaceExifEX|PrefixExifEX)|Property(?:Exif(?:ISOSpeed(?:Latitude(?:yyy|zzz))?|RecommendedExposureIndex|S(?:ensitivityType|tandardOutputSensitivity))|OpenEXR(?:AspectRatio|Dictionary))|SourceShouldCacheImmediately)|TLanguageAttributeName)|S(?:ec(?:Attr(?:Access(?:Group|ible(?:AfterFirstUnlock(?:ThisDeviceOnly)?|WhenUnlocked(?:ThisDeviceOnly)?)?)|KeyTypeEC|Synchronizable(?:Any)?)|Policy(?:Apple(?:PassbookSigning|Revocation)|RevocationFlags|TeamIdentifier)|Trust(?:E(?:valuationDate|xtendedValidation)|OrganizationName|Re(?:sultValue|vocation(?:Checked|ValidUntilDate))))|peech(?:AudioOutputFormatProperty|Output(?:ChannelMapProperty|ToFileDescriptorProperty)|SynthExtensionProperty)))|vm_kernel_page_(?:mask|s(?:hift|ize)))\\b", + "name": "support.variable.10.9.c" + }, + { + "match": "\\b(?:CATransform3DIdentity|KERNEL_(?:AUDIT_TOKEN|SECURITY_TOKEN)|NDR_record|UUID_NULL|bootstrap_port|gGuid(?:Apple(?:CSP(?:DL)?|DotMac(?:DL|TP)|FileDL|LDAPDL|SdCSPDL|X509(?:CL|TP))|Cssm)|k(?:A(?:ERemoteProcess(?:NameKey|ProcessIDKey|U(?:RLKey|serIDKey))|X(?:A(?:ttachmentTextAttribute|utocorrectedTextAttribute)|BackgroundColorTextAttribute|Fo(?:nt(?:FamilyKey|NameKey|SizeKey|TextAttribute)|reg(?:oundColorTextAttribute|roundColorTextAttribute))|LinkTextAttribute|MisspelledTextAttribute|NaturalLanguageTextAttribute|ReplacementStringTextAttribute|S(?:hadowTextAttribute|trikethrough(?:ColorTextAttribute|TextAttribute)|uperscriptTextAttribute)|Underline(?:ColorTextAttribute|TextAttribute)|V(?:alue(?:AXErrorType|C(?:FRangeType|G(?:PointType|RectType|SizeType))|IllegalType)|isibleNameKey))|u(?:dioStreamAnyRate|thorizationExternalFormLength))|C(?:F(?:DNSServiceFailureKey|ErrorDomain(?:C(?:FNetwork|GImageMetadata)|SystemConfiguration|WinSock)|FTPStatusCodeKey|GetAddrInfoFailureKey|HTTP(?:Authentication(?:AccountDomain|Password|Scheme(?:Basic|Digest|Kerberos|N(?:TLM|egotiate(?:2)?)|XMobileMeAuthToken)|Username)|Version1_(?:0|1))|NetworkProxies(?:Exc(?:eptionsList|ludeSimpleHostnames)|FTP(?:Enable|P(?:assive|ort|roxy))|Gopher(?:Enable|P(?:ort|roxy))|HTTP(?:Enable|P(?:ort|roxy)|S(?:Enable|P(?:ort|roxy)))|ProxyAuto(?:Config(?:Enable|JavaScript|URLString)|DiscoveryEnable)|RTSP(?:Enable|P(?:ort|roxy))|SOCKS(?:Enable|P(?:ort|roxy)))|Proxy(?:AutoConfiguration(?:HTTPResponseKey|JavaScriptKey|URLKey)|HostNameKey|P(?:asswordKey|ortNumberKey)|Type(?:AutoConfiguration(?:JavaScript|URL)|FTP|HTTP(?:S)?|Key|None|SOCKS)|UsernameKey)|S(?:OCKS(?:NegotiationMethodKey|StatusCodeKey|VersionKey)|tream(?:ErrorDomain(?:FTP|HTTP|Mach|Net(?:DB|Services)|SystemConfiguration|WinSock)|NetworkServiceType(?:Background|V(?:ideo|oice))?|Property(?:ProxyLocalBypass|S(?:SL(?:PeerTrust|Settings)|ocketRemote(?:Host|NetService)))|SSL(?:Certificates|IsServer|Level|PeerName|ValidatesCertificateChain)))|URLErrorFailingURL(?:ErrorKey|StringErrorKey))|GImage(?:Destination(?:BackgroundColor|LossyCompressionQuality)|Property(?:8BIM(?:Dictionary|LayerNames)|C(?:IFF(?:C(?:ameraSerialNumber|ontinuousDrive)|D(?:escription|ictionary)|F(?:irmware|lashExposureComp|ocusMode)|Image(?:FileName|Name|SerialNumber)|LensM(?:axMM|inMM|odel)|Me(?:asuredEV|teringMode)|OwnerName|Re(?:cordID|lease(?:Method|Timing))|S(?:elfTimingTime|hootingMode)|WhiteBalanceIndex)|olorModel(?:CMYK|Gray|Lab|RGB)?)|D(?:NG(?:BackwardVersion|CameraSerialNumber|Dictionary|L(?:ensInfo|ocalizedCameraModel)|UniqueCameraModel|Version)|PI(?:Height|Width)|epth)|Exif(?:A(?:pertureValue|ux(?:Dictionary|F(?:irmware|lashCompensation)|ImageNumber|Lens(?:I(?:D|nfo)|Model|SerialNumber)|OwnerName|SerialNumber))|B(?:odySerialNumber|rightnessValue)|C(?:FAPattern|ameraOwnerName|o(?:lorSpace|mp(?:onentsConfiguration|ressedBitsPerPixel)|ntrast)|ustomRendered)|D(?:ateTime(?:Digitized|Original)|eviceSettingDescription|i(?:ctionary|gitalZoomRatio))|Exposure(?:BiasValue|Index|Mode|Program|Time)|F(?:Number|ileSource|lash(?:Energy|PixVersion)?|ocal(?:Len(?:In35mmFilm|gth)|Plane(?:ResolutionUnit|XResolution|YResolution)))|Ga(?:inControl|mma)|I(?:SOSpeedRatings|mageUniqueID)|L(?:ens(?:M(?:ake|odel)|S(?:erialNumber|pecification))|ightSource)|M(?:a(?:kerNote|xApertureValue)|eteringMode)|OECF|Pixel(?:XDimension|YDimension)|RelatedSoundFile|S(?:aturation|cene(?:CaptureType|Type)|ensingMethod|h(?:arpness|utterSpeedValue)|p(?:atialFrequencyResponse|ectralSensitivity)|ub(?:ject(?:Area|Dist(?:Range|ance)|Location)|secTime(?:Digitized)?))|UserComment|Version|WhiteBalance)|FileSize|G(?:IF(?:D(?:elayTime|ictionary)|HasGlobalColorMap|ImageColorMap|LoopCount|UnclampedDelayTime)|PS(?:A(?:ltitude(?:Ref)?|reaInformation)|D(?:OP|ateStamp|est(?:Bearing(?:Ref)?|Distance(?:Ref)?|L(?:atitude(?:Ref)?|ongitude(?:Ref)?))|i(?:ctionary|fferental))|ImgDirection(?:Ref)?|L(?:atitude(?:Ref)?|ongitude(?:Ref)?)|M(?:apDatum|easureMode)|ProcessingMethod|S(?:atellites|peed(?:Ref)?|tatus)|T(?:imeStamp|rack(?:Ref)?)|Version))|HasAlpha|I(?:PTC(?:ActionAdvised|Byline(?:Title)?|C(?:a(?:ptionAbstract|tegory)|ity|o(?:nt(?:act(?:Info(?:Address|C(?:ity|ountry)|Emails|P(?:hones|ostalCode)|StateProvince|WebURLs))?|entLocation(?:Code|Name))|pyrightNotice|untryPrimaryLocation(?:Code|Name))|re(?:atorContactInfo|dit))|D(?:ateCreated|i(?:ctionary|gitalCreation(?:Date|Time)))|E(?:dit(?:Status|orialUpdate)|xpiration(?:Date|Time))|FixtureIdentifier|Headline|Image(?:Orientation|Type)|Keywords|LanguageIdentifier|O(?:bject(?:AttributeReference|Cycle|Name|TypeReference)|rigina(?:lTransmissionReference|tingProgram))|Pro(?:gramVersion|vinceState)|R(?:e(?:ference(?:Date|Number|Service)|lease(?:Date|Time))|ightsUsageTerms)|S(?:cene|ource|pecialInstructions|tarRating|u(?:b(?:Location|jectReference)|pplementalCategory))|TimeCreated|Urgency|WriterEditor)|s(?:Float|Indexed))|JFIF(?:D(?:ensityUnit|ictionary)|IsProgressive|Version|XDensity|YDensity)|Maker(?:Canon(?:AspectRatioInfo|C(?:ameraSerialNumber|ontinuousDrive)|Dictionary|F(?:irmware|lashExposureComp)|ImageSerialNumber|LensModel|OwnerName)|FujiDictionary|MinoltaDictionary|Nikon(?:C(?:ameraSerialNumber|olorMode)|Di(?:ctionary|gitalZoom)|F(?:lash(?:ExposureComp|Setting)|ocus(?:Distance|Mode))|I(?:SOSe(?:lection|tting)|mageAdjustment)|Lens(?:Adapter|Info|Type)|Quality|Sh(?:arpenMode|ootingMode|utterCount)|WhiteBalanceMode)|OlympusDictionary|PentaxDictionary)|Orientation|P(?:NG(?:Author|C(?:hromaticities|opyright|reationTime)|D(?:escription|ictionary)|Gamma|InterlaceType|ModificationTime|Software|Title|XPixelsPerMeter|YPixelsPerMeter|sRGBIntent)|ixel(?:Height|Width)|rofileName)|RawDictionary|TIFF(?:Artist|Co(?:mpression|pyright)|D(?:ateTime|ictionary|ocumentName)|HostComputer|ImageDescription|M(?:ake|odel)|Orientation|P(?:hotometricInterpretation|rimaryChromaticities)|ResolutionUnit|Software|TransferFunction|WhitePoint|XResolution|YResolution))|Source(?:CreateThumbnail(?:FromImage(?:Always|IfAbsent)|WithTransform)|Should(?:AllowFloat|Cache)|T(?:humbnailMaxPixelSize|ypeIdentifierHint)))|M(?:M(?:ApplyTransformProcName|CreateTransformPropertyProcName|Initialize(?:LinkProfileProcName|TransformProcName))|SEncoderDigestAlgorithmSHA(?:1|256))|SIdentity(?:ErrorDomain|GeneratePosixName)|T(?:F(?:o(?:nt(?:AttributeName|BaselineAdjustAttribute|C(?:ascadeListAttribute|haracterSetAttribute|o(?:llection(?:DisallowAutoActivationOption|IncludeDisabledFontsOption|RemoveDuplicatesOption)|pyrightNameKey))|D(?:es(?:criptionNameKey|igner(?:NameKey|URLNameKey))|isplayNameAttribute)|EnabledAttribute|F(?:amilyName(?:Attribute|Key)|eature(?:Se(?:lector(?:DefaultKey|IdentifierKey|NameKey|SettingKey)|ttingsAttribute)|Type(?:ExclusiveKey|IdentifierKey|NameKey|SelectorsKey)|sAttribute)|ixedAdvanceAttribute|ormatAttribute|ullNameKey)|L(?:anguagesAttribute|icense(?:NameKey|URLNameKey))|Ma(?:cintoshEncodingsAttribute|n(?:ager(?:BundleIdentifier|Error(?:Domain|Font(?:AssetNameKey|DescriptorsKey|URLsKey))|RegisteredFontsChangedNotification)|ufacturerNameKey)|trixAttribute)|NameAttribute|OrientationAttribute|P(?:ostScript(?:CIDNameKey|NameKey)|riorityAttribute)|Registration(?:ScopeAttribute|UserInfoAttribute)|S(?:ampleTextNameKey|izeAttribute|lantTrait|tyleName(?:Attribute|Key)|ubFamilyNameKey|ymbolicTrait)|Tra(?:demarkNameKey|itsAttribute)|U(?:RLAttribute|niqueNameKey)|V(?:ariationA(?:ttribute|xis(?:DefaultValueKey|IdentifierKey|M(?:aximumValueKey|inimumValueKey)|NameKey))|e(?:ndorURLNameKey|rsionNameKey))|W(?:eightTrait|idthTrait))|regroundColor(?:AttributeName|FromContextAttributeName))|rame(?:ClippingPathsAttributeName|P(?:ath(?:ClippingPathAttributeName|FillRuleAttributeName|WidthAttributeName)|rogressionAttributeName)))|GlyphInfoAttributeName|KernAttributeName|LigatureAttributeName|ParagraphStyleAttributeName|RunDelegateAttributeName|S(?:troke(?:ColorAttributeName|WidthAttributeName)|uperscriptAttributeName)|T(?:abColumnTerminatorsAttributeName|ypesetterOptionForcedEmbeddingLevel)|Underline(?:ColorAttributeName|StyleAttributeName)|VerticalFormsAttributeName)|V(?:Buffer(?:MovieTimeKey|NonPropagatedAttachmentsKey|PropagatedAttachmentsKey|Time(?:ScaleKey|ValueKey))|I(?:mageBuffer(?:C(?:GColorSpaceKey|hroma(?:Location(?:BottomFieldKey|TopFieldKey|_(?:Bottom(?:Left)?|Center|DV420|Left|Top(?:Left)?))|Subsampling(?:Key|_4(?:11|2(?:0|2))))|leanAperture(?:H(?:eightKey|orizontalOffsetKey)|Key|VerticalOffsetKey|WidthKey)|olorPrimaries(?:Key|_(?:EBU_3213|ITU_R_709_2|SMPTE_C)))|Display(?:DimensionsKey|HeightKey|WidthKey)|Field(?:CountKey|Detail(?:Key|SpatialFirstLine(?:Early|Late)|Temporal(?:BottomFirst|TopFirst)))|GammaLevelKey|ICCProfileKey|P(?:ixelAspectRatio(?:HorizontalSpacingKey|Key|VerticalSpacingKey)|referredCleanApertureKey)|TransferFunction(?:Key|_(?:ITU_R_709_2|SMPTE_240M_1995|UseGamma))|YCbCrMatrix(?:Key|_(?:ITU_R_(?:601_4|709_2)|SMPTE_240M_1995)))|ndefiniteTime)|Pixel(?:Buffer(?:BytesPerRowAlignmentKey|CG(?:BitmapContextCompatibilityKey|ImageCompatibilityKey)|ExtendedPixels(?:BottomKey|LeftKey|RightKey|TopKey)|HeightKey|IOSurface(?:CoreAnimationCompatibilityKey|OpenGL(?:ES(?:FBOCompatibilityKey|TextureCompatibilityKey)|FBOCompatibilityKey|TextureCompatibilityKey)|PropertiesKey)|MemoryAllocatorKey|OpenGL(?:CompatibilityKey|ES(?:CompatibilityKey|TextureCacheCompatibilityKey))|P(?:ixelFormatTypeKey|laneAlignmentKey|ool(?:AllocationThresholdKey|FreeBufferNotification|M(?:aximumBufferAgeKey|inimumBufferCountKey)))|WidthKey)|Format(?:B(?:itsPerBlock|l(?:ackBlock|ock(?:H(?:eight|orizontalAlignment)|VerticalAlignment|Width)))|C(?:G(?:Bitmap(?:ContextCompatibility|Info)|ImageCompatibility)|o(?:decType|n(?:stant|tainsAlpha)))|F(?:illExtendedPixelsCallback|ourCC)|HorizontalSubsampling|Name|OpenGL(?:Compatibility|ESCompatibility|Format|InternalFormat|Type)|Planes|QDCompatibility|VerticalSubsampling))|ZeroTime)|olorSync(?:A(?:CESCGLinearProfile|dobeRGB1998Profile)|B(?:estQuality|lackPointCompensation)|C(?:ameraDeviceClass|onver(?:sion(?:1DLut|3DLut|BPC|ChannelID|GridPoints|InpChan|Matrix|NDLut|OutChan|ParamCurve(?:0|1|2|3|4))|tQuality)|ustomProfiles)|D(?:CIP3Profile|evice(?:Class|De(?:faultProfileID|scription(?:s)?)|HostScope|ID|ModeDescription(?:s)?|Profile(?:I(?:D|s(?:Current|Default|Factory))|URL|sNotification)|RegisteredNotification|U(?:nregisteredNotification|serScope))|isplay(?:Device(?:Class|ProfilesNotification)|P3Profile)|raftQuality)|F(?:actoryProfiles|ixedPointRange)|Generic(?:CMYKProfile|Gray(?:Gamma22Profile|Profile)|LabProfile|RGBProfile|XYZProfile)|ITUR(?:2020Profile|709Profile)|NormalQuality|Pr(?:eferredCMM|interDeviceClass|ofile(?:C(?:lass|o(?:lorSpace|mputerDomain))|Description|H(?:eader|ostScope)|MD5Digest|PCS|RepositoryChangeNotification|U(?:RL|ser(?:Domain|Scope)))?)|R(?:OMMRGBProfile|e(?:gistrationUpdateWindowServer|nderingIntent(?:Absolute|Perceptual|Relative|Saturation|UseProfileHeader)?))|S(?:RGBProfile|cannerDeviceClass|ig(?:A(?:ToB(?:0Tag|1Tag|2Tag)|bstractClass)|B(?:ToA(?:0Tag|1Tag|2Tag)|lue(?:ColorantTag|TRCTag))|C(?:mykData|o(?:lorSpaceClass|pyrightTag))|D(?:eviceM(?:fgDescTag|odelDescTag)|isplayClass)|G(?:amutTag|r(?:ay(?:Data|TRCTag)|een(?:ColorantTag|TRCTag)))|InputClass|L(?:abData|inkClass)|Media(?:BlackPointTag|WhitePointTag)|NamedColor(?:2Tag|Class)|OutputClass|Pr(?:eview(?:0Tag|1Tag|2Tag)|ofile(?:DescriptionTag|SequenceDescTag))|R(?:ed(?:ColorantTag|TRCTag)|gbData)|TechnologyTag|ViewingCond(?:DescTag|itionsTag)|XYZData))|Transform(?:C(?:odeFragment(?:MD5|Type)|reator)|D(?:eviceTo(?:Device|PCS)|stSpace)|FullConversionData|GamutCheck|Info|P(?:CSTo(?:Device|PCS)|arametricConversionData)|S(?:implifiedConversionData|rcSpace)|Tag)))|D(?:ADiskDescription(?:Bus(?:NameKey|PathKey)|Device(?:GUIDKey|InternalKey|ModelKey|P(?:athKey|rotocolKey)|RevisionKey|TDMLockedKey|UnitKey|VendorKey)|Media(?:B(?:SD(?:M(?:ajorKey|inorKey)|NameKey|UnitKey)|lockSizeKey)|ContentKey|E(?:jectableKey|ncrypt(?:edKey|ionDetailKey))|IconKey|KindKey|LeafKey|NameKey|PathKey|RemovableKey|SizeKey|TypeKey|UUIDKey|W(?:holeKey|ritableKey))|Volume(?:KindKey|MountableKey|N(?:ameKey|etworkKey)|PathKey|TypeKey|UUIDKey))|R(?:A(?:bstractFile|ccessDate|llFilesystems|pplicationIdentifier|ttributeModificationDate|udio(?:FourChannelKey|PreEmphasisKey))|B(?:ackupDate|ibliographicFile|lock(?:Size(?:Key)?|TypeKey)|u(?:fferZone1DataKey|rn(?:AppendableKey|CompletionAction(?:Eject|Key|Mount)|DoubleLayerL0DataZoneBlocksKey|FailureAction(?:Eject|Key|None)|Key|OverwriteDiscKey|RequestedSpeedKey|St(?:atusChangedNotification|rategy(?:BDDAO|CD(?:SAO|TAO)|DVDDAO|IsRequiredKey|Key))|TestingKey|UnderrunProtectionKey|VerifyDiscKey)))|C(?:DText(?:ArrangerKey|C(?:FStringEncodingKey|haracterCodeKey|losedKey|o(?:mposerKey|pyrightAssertedFor(?:NamesKey|SpecialMessagesKey|TitlesKey)))|DiscIdentKey|Genre(?:CodeKey|Key)|Key|LanguageKey|MCNISRCKey|PerformerKey|S(?:izeKey|ongwriterKey|pecialMessageKey)|T(?:OC(?:2Key|Key)|itleKey))|o(?:ntentModificationDate|pyrightFile)|reationDate)|D(?:VD(?:CopyrightInfoKey|TimestampKey)|ata(?:FormKey|Preparer)|e(?:faultDate|vice(?:AppearedNotification|BurnSpeed(?:BD1x|CD1x|DVD1x|HDDVD1x|Max|sKey)|C(?:an(?:TestWrite(?:CDKey|DVDKey)|UnderrunProtect(?:CDKey|DVDKey)|Write(?:BD(?:Key|R(?:EKey|Key))|CD(?:Key|R(?:Key|WKey|awKey)|SAOKey|T(?:AOKey|extKey))|DVD(?:DAOKey|Key|PlusR(?:DoubleLayerKey|Key|W(?:DoubleLayerKey|Key))|R(?:AMKey|DualLayerKey|Key|W(?:DualLayerKey|Key)))|HDDVD(?:Key|R(?:AMKey|DualLayerKey|Key|W(?:DualLayerKey|Key)))|I(?:SRCKey|ndexPointsKey)|Key))|urrentWriteSpeedKey)|DisappearedNotification|FirmwareRevisionKey|I(?:ORegistryEntryPathKey|s(?:BusyKey|TrayOpenKey))|LoadingMechanismCan(?:EjectKey|InjectKey|OpenKey)|M(?:aximumWriteSpeedKey|edia(?:B(?:SDNameKey|locks(?:FreeKey|OverwritableKey|UsedKey))|Class(?:BD|CD|DVD|HDDVD|Key|Unknown)|DoubleLayerL0DataZoneBlocksKey|I(?:nfoKey|s(?:AppendableKey|BlankKey|ErasableKey|OverwritableKey|ReservedKey))|S(?:essionCountKey|tate(?:InTransition|Key|MediaPresent|None))|T(?:rackCountKey|ype(?:BDR(?:E|OM)?|CDR(?:OM|W)?|DVD(?:PlusR(?:DoubleLayer|W(?:DoubleLayer)?)?|R(?:AM|DualLayer|OM|W(?:DualLayer)?)?)|HDDVDR(?:AM|DualLayer|OM|W(?:DualLayer)?)?|Key|Unknown))))|P(?:hysicalInterconnect(?:ATAPI|Fi(?:breChannel|reWire)|Key|Location(?:External|Internal|Key|Unknown)|SCSI|USB)|roductNameKey)|S(?:tatusChangedNotification|upportLevel(?:AppleS(?:hipping|upported)|Key|None|Unsupported|VendorSupported))|Track(?:InfoKey|RefsKey)|VendorNameKey|Write(?:BufferSizeKey|CapabilitiesKey))))|E(?:ffectiveDate|r(?:ase(?:StatusChangedNotification|Type(?:Complete|Key|Quick))|rorStatus(?:AdditionalSenseStringKey|Error(?:InfoStringKey|Key|StringKey)|Key|Sense(?:CodeStringKey|Key)))|xpirationDate)|FreeBlocksKey|HFSPlus(?:CatalogNodeID|TextEncodingHint)?|I(?:SO(?:9660(?:Level(?:One|Two)|VersionNumber)?|Level|MacExtensions|RockRidgeExtensions)|n(?:dexPointsKey|visible))|Joliet|M(?:a(?:c(?:ExtendedFinderFlags|Fi(?:le(?:Creator|Type)|nder(?:Flags|HideExtension))|IconLocation|ScrollPosition|Window(?:Bounds|View))|xBurnSpeedKey)|ediaCatalogNumberKey)|NextWritableAddressKey|P(?:osix(?:FileMode|GID|UID)|reGap(?:IsRequiredKey|LengthKey)|ublisher)|Re(?:cordingDate|fConCFTypeCallbacks)|S(?:CMSCopyright(?:Free|Protected(?:Copy|Original))|e(?:rialCopyManagementStateKey|ssion(?:FormatKey|NumberKey))|tatus(?:Current(?:S(?:essionKey|peedKey)|TrackKey)|EraseTypeKey|P(?:ercentCompleteKey|rogress(?:Current(?:KPS|XFactor)|InfoKey))|State(?:Done|Erasing|F(?:ailed|inishing)|Key|None|Preparing|Session(?:Close|Open)|Track(?:Close|Open|Write)|Verifying)|Total(?:SessionsKey|TracksKey))|u(?:bchannelDataForm(?:Key|None|Pack|Raw)|ppressMacSpecificFiles)|y(?:nchronousBehaviorKey|stemIdentifier))|Track(?:I(?:SRCKey|sEmptyKey)|LengthKey|ModeKey|NumberKey|Packet(?:SizeKey|Type(?:Fixed|Key|Variable))|StartAddressKey|Type(?:Closed|In(?:complete|visible)|Key|Reserved))|UDF(?:ApplicationIdentifierSuffix|ExtendedFilePermissions|InterchangeLevel|Max(?:InterchangeLevel|VolumeSequenceNumber)|PrimaryVolumeDescriptorNumber|RealTimeFile|V(?:ersion1(?:02|50)|olumeSe(?:quenceNumber|t(?:I(?:dentifier|mplementationUse)|Timestamp)))|WriteVersion)?|V(?:erificationType(?:Checksum|Key|None|ProduceAgain|ReceiveData)|olume(?:C(?:heckedDate|reationDate)|E(?:ffectiveDate|xpirationDate)|ModificationDate|Set))))|F(?:CFont(?:CGColorAttribute|Fa(?:ceAttribute|milyAttribute)|NameAttribute|SizeAttribute|VisibleNameAttribute)|ontPanel(?:A(?:TSUFontIDKey|ttribute(?:SizesKey|TagsKey|ValuesKey|sKey))|BackgroundColorAttributeName|Feature(?:SelectorsKey|TypesKey)|MouseTrackingState|Variation(?:AxesKey|ValuesKey)))|HI(?:Delegate(?:AfterKey|BeforeKey)|Object(?:CustomData(?:C(?:DEFProcIDKey|lassIDKey)|DelegateGroupParametersKey|Parameter(?:NamesKey|TypesKey|ValuesKey)|SuperClassIDKey)|InitParam(?:Description|Event(?:Name|Type)|UserName))|T(?:extViewClassID|oolboxVersionNumber)|View(?:MenuContentID|Window(?:C(?:loseBoxID|o(?:llapseBoxID|ntentID))|GrowBoxID|T(?:itleID|oolbar(?:ButtonID|ID))|ZoomBoxID)))|IO(?:MasterPortDefault|Surface(?:AllocSize|BytesPer(?:Element|Row)|CacheMode|Element(?:Height|Width)|Height|Offset|P(?:ixelFormat|lane(?:B(?:ase|ytesPer(?:Element|Row))|Element(?:Height|Width)|Height|Info|Offset|Size|Width))|Width))|JSClassDefinitionEmpty|LSQuarantine(?:Agent(?:BundleIdentifierKey|NameKey)|DataURLKey|OriginURLKey|T(?:imeStampKey|ype(?:CalendarEventAttachment|EmailAttachment|InstantMessageAttachment|Key|Other(?:Attachment|Download)|WebDownload)))|M(?:D(?:Attribute(?:AllValues|DisplayValues|MultiValued|Name|ReadOnlyValues|Type)|ExporterAvaliable|Item(?:A(?:cquisitionM(?:ake|odel)|l(?:bum|titude)|p(?:erture|pl(?:eLoop(?:Descriptors|s(?:KeyFilterType|LoopMode|RootKey))|icationCategories))|ttributeChangeDate|u(?:di(?:ences|o(?:BitRate|ChannelCount|EncodingApplication|SampleRate|TrackNumber))|thor(?:Addresses|EmailAddresses|s)))|BitsPerSample|C(?:FBundleIdentifier|ameraOwner|ity|o(?:decs|lorSpace|m(?:ment|poser)|nt(?:actKeywords|ent(?:CreationDate|ModificationDate|Type(?:Tree)?)|ributors)|pyright|untry|verage)|reator)|D(?:ateAdded|e(?:liveryType|scription)|i(?:rector|splayName)|ownloadedDate|u(?:eDate|rationSeconds))|E(?:XIF(?:GPSVersion|Version)|ditors|mailAddresses|ncodingApplications|x(?:ecutable(?:Architectures|Platform)|posure(?:Mode|Program|TimeS(?:econds|tring))))|F(?:Number|S(?:C(?:ontentChangeDate|reationDate)|HasCustomIcon|I(?:nvisible|s(?:ExtensionHidden|Stationery))|Label|N(?:ame|odeCount)|Owner(?:GroupID|UserID)|Size)|inderComment|lashOnOff|o(?:calLength(?:35mm)?|nts))|G(?:PS(?:AreaInformation|D(?:OP|ateStamp|est(?:Bearing|Distance|L(?:atitude|ongitude))|ifferental)|M(?:apDatum|easureMode)|ProcessingMethod|Status|Track)|enre)|H(?:asAlphaChannel|eadline)|I(?:SOSpeed|dentifier|mageDirection|n(?:formation|st(?:antMessageAddresses|ructions))|s(?:ApplicationManaged|GeneralMIDISequence|LikelyJunk))|K(?:ey(?:Signature|words)|ind)|L(?:a(?:nguages|stUsedDate|titude|yerNames)|ensModel|ongitude|yricist)|M(?:axAperture|e(?:diaTypes|teringMode)|usical(?:Genre|Instrument(?:Category|Name)))|N(?:amedLocation|umberOfPages)|Or(?:ganizations|i(?:entation|ginal(?:Format|Source)))|P(?:a(?:ge(?:Height|Width)|rticipants|th)|erformers|honeNumbers|ixel(?:Count|Height|Width)|ro(?:ducer|fileName|jects)|ublishers)|R(?:e(?:c(?:ipient(?:Addresses|EmailAddresses|s)|ording(?:Date|Year))|dEyeOnOff|solution(?:HeightDPI|WidthDPI))|ights)|S(?:ecurityMethod|peed|t(?:a(?:rRating|teOrProvince)|reamable)|ubject)|T(?:e(?:mpo|xtContent)|heme|i(?:me(?:Signature|stamp)|tle)|otalBitRate)|URL|V(?:ersion|ideoBitRate)|Wh(?:ereFroms|iteBalance))|Label(?:AddedNotification|BundleURL|C(?:hangedNotification|ontentChangeDate)|DisplayName|I(?:con(?:Data|UUID)|sMutuallyExclusiveSetMember)|Kind(?:IsMutuallyExclusiveSetKey|VisibilityKey)?|RemovedNotification|SetsFinderColor|UUID|Visibility)|P(?:rivateVisibility|ublicVisibility)|Query(?:Did(?:FinishNotification|UpdateNotification)|ProgressNotification|ResultContentRelevance|Scope(?:AllIndexed|Computer(?:Indexed)?|Home|Network(?:Indexed)?)|Update(?:AddedItems|ChangedItems|RemovedItems)))|IDI(?:ObjectType_ExternalMask|Property(?:AdvanceScheduleTimeMuSec|C(?:anRoute|onnectionUniqueID)|D(?:eviceID|isplayName|river(?:DeviceEditorApp|Owner|Version))|I(?:mage|s(?:Broadcast|DrumMachine|E(?:ffectUnit|mbeddedEntity)|Mixer|Sampler))|M(?:a(?:nufacturer|x(?:ReceiveChannels|SysExSpeed|TransmitChannels))|odel)|Name|Offline|P(?:anDisruptsStereo|rivate)|Receive(?:Channels|s(?:BankSelect(?:LSB|MSB)|Clock|MTC|Notes|ProgramChanges))|S(?:ingleRealtimeEntity|upports(?:GeneralMIDI|MMC|ShowControl))|Transmit(?:Channels|s(?:BankSelect(?:LSB|MSB)|Clock|MTC|Notes|ProgramChanges))|UniqueID)))|QL(?:PreviewPropertyTextEncodingNameKey|ThumbnailOption(?:IconModeKey|ScaleFactorKey))|S(?:C(?:BondStatusDevice(?:AggregationStatus|Collecting|Distributing)|Comp(?:AnyRegex|Global|HostNames|Interface|Network|S(?:ervice|ystem)|Users)|DynamicStore(?:Domain(?:File|P(?:lugin|refs)|S(?:etup|tate))|Prop(?:Net(?:Interfaces|Primary(?:Interface|Service)|ServiceIDs)|Setup(?:CurrentSet|LastUpdated))|UseSessionKeys)|Ent(?:Net(?:6to4|AirPort|D(?:HCP|NS)|Ethernet|FireWire|I(?:P(?:Sec|v(?:4|6))|nterface)|L(?:2TP|ink)|Modem|P(?:PP(?:Serial|oE)?|roxies)|SMB)|UsersConsoleUser)|Network(?:Interface(?:IPv4|Type(?:6to4|B(?:luetooth|ond)|Ethernet|FireWire|I(?:EEE80211|P(?:Sec|v4)|rDA)|L2TP|Modem|PPP|Serial|VLAN|WWAN))|ProtocolType(?:DNS|IPv(?:4|6)|Proxies|SMB))|Pr(?:ef(?:CurrentSet|NetworkServices|S(?:ets|ystem))|op(?:InterfaceName|MACAddress|Net(?:6to4Relay|DNS(?:DomainName|Options|S(?:e(?:arch(?:Domains|Order)|rver(?:Addresses|Port|Timeout))|ortList|upplementalMatch(?:Domains|Orders)))|EthernetM(?:TU|edia(?:Options|SubType))|I(?:P(?:Sec(?:AuthenticationMethod|ConnectTime|Local(?:Certificate|Identifier(?:Type)?)|RemoteAddress|S(?:haredSecret(?:Encryption)?|tatus)|XAuth(?:Enabled|Name|Password(?:Encryption)?))|v(?:4(?:Addresses|BroadcastAddresses|ConfigMethod|D(?:HCPClientID|estAddresses)|Router|SubnetMasks)|6(?:Addresses|ConfigMethod|DestAddresses|Flags|PrefixLength|Router)))|nterface(?:DeviceName|Hardware|SubType|Type|s))|L(?:2TP(?:IPSecSharedSecret(?:Encryption)?|Transport)|ink(?:Active|Detaching)|ocalHostName)|Modem(?:AccessPointName|Connect(?:Speed|ion(?:Personality|Script))|D(?:ataCompression|evice(?:ContextID|Model|Vendor)|ialMode)|ErrorCorrection|Hold(?:CallWaitingAudibleAlert|DisconnectOnAnswer|Enabled|Reminder(?:Time)?)|Note|PulseDial|Spe(?:aker|ed))|OverridePrimary|P(?:PP(?:A(?:CSPEnabled|uth(?:Name|P(?:assword(?:Encryption)?|ro(?:mpt|tocol))))|C(?:CP(?:Enabled|MPPE(?:128Enabled|40Enabled))|o(?:mm(?:AlternateRemoteAddress|ConnectDelay|DisplayTerminalWindow|Re(?:dial(?:Count|Enabled|Interval)|moteAddress)|TerminalScript|UseTerminalScript)|nnectTime))|D(?:eviceLastCause|i(?:alOnDemand|sconnect(?:On(?:FastUserSwitch|Idle(?:Timer)?|Logout|Sleep)|Time)))|I(?:PCP(?:CompressionVJ|UsePeerDNS)|dleReminder(?:Timer)?)|L(?:CP(?:Compression(?:ACField|PField)|Echo(?:Enabled|Failure|Interval)|M(?:RU|TU)|ReceiveACCM|TransmitACCM)|astCause|ogfile)|OverridePrimary|RetryConnectTime|S(?:essionTimer|tatus)|UseSessionTimer|VerboseLogging)|roxies(?:Exc(?:eptionsList|ludeSimpleHostnames)|FTP(?:Enable|P(?:assive|ort|roxy))|Gopher(?:Enable|P(?:ort|roxy))|HTTP(?:Enable|P(?:ort|roxy)|S(?:Enable|P(?:ort|roxy)))|ProxyAuto(?:Config(?:Enable|JavaScript|URLString)|DiscoveryEnable)|RTSP(?:Enable|P(?:ort|roxy))|SOCKS(?:Enable|P(?:ort|roxy))))|S(?:MB(?:NetBIOSN(?:ame|odeType)|W(?:INSAddresses|orkgroup))|erviceOrder))|SystemComputerName(?:Encoding)?|UserDefinedName|Version))|Resv(?:Inactive|Link)|ValNet(?:I(?:P(?:Sec(?:AuthenticationMethod(?:Certificate|Hybrid|SharedSecret)|LocalIdentifierTypeKeyID|SharedSecretEncryptionKeychain|XAuthPasswordEncryption(?:Keychain|Prompt))|v(?:4ConfigMethod(?:Automatic|BOOTP|DHCP|INFORM|LinkLocal|Manual|PPP)|6ConfigMethod(?:6to4|Automatic|LinkLocal|Manual|RouterAdvertisement)))|nterface(?:SubType(?:L2TP|PPP(?:Serial|oE))|Type(?:6to4|Ethernet|FireWire|IPSec|PPP)))|L2TP(?:IPSecSharedSecretEncryptionKeychain|TransportIP(?:Sec)?)|ModemDialMode(?:IgnoreDialTone|Manual|WaitForDialTone)|PPPAuthP(?:asswordEncryption(?:Keychain|Token)|ro(?:mpt(?:After|Before)|tocol(?:CHAP|EAP|MSCHAP(?:1|2)|PAP)))|SMBNetBIOSNodeType(?:Broadcast|Hybrid|Mixed|Peer)))|K(?:EndTermChars|M(?:aximumTerms|inTermLength)|ProximityIndexing|S(?:t(?:artTermChars|opWords)|ubstitutions)|TermChars)|ec(?:A(?:CLAuthorization(?:Any|De(?:crypt|lete|rive)|E(?:ncrypt|xport(?:Clear|Wrapped))|GenKey|Import(?:Clear|Wrapped)|Keychain(?:Create|Delete|Item(?:Delete|Insert|Modify|Read))|Login|MAC|Sign)|ttr(?:A(?:cc(?:ess|ount)|pplication(?:Label|Tag)|uthenticationType(?:D(?:PA|efault)|HT(?:MLForm|TP(?:Basic|Digest))|MSN|NTLM|RPA)?)|C(?:an(?:De(?:crypt|rive)|Encrypt|Sign|Unwrap|Verify|Wrap)|ertificate(?:Encoding|Type)|omment|reat(?:ionDate|or))|Description|EffectiveKeySize|Generic|Is(?:Extractable|Invisible|Negative|Permanent|Sensitive|suer)|Key(?:Class(?:P(?:rivate|ublic)|Symmetric)?|SizeInBits|Type(?:3DES|AES|CAST|D(?:ES|SA)|ECDSA|R(?:C(?:2|4)|SA))?)|Label|ModificationDate|P(?:RF(?:HmacAlgSHA(?:1|2(?:24|56)|384|512))?|ath|ort|rotocol(?:A(?:FP|ppleTalk)|DAAP|EPPC|FTP(?:Account|Proxy|S)?|HTTP(?:Proxy|S(?:Proxy)?)?|I(?:MAP(?:S)?|PP|RC(?:S)?)|LDAP(?:S)?|NNTP(?:S)?|POP3(?:S)?|RTSP(?:Proxy)?|S(?:M(?:B|TP)|OCKS|SH)|Telnet(?:S)?)?|ublicKeyHash)|Rounds|S(?:alt|e(?:curityDomain|r(?:ialNumber|v(?:er|ice)))|ubject(?:KeyID)?)|Type))|Base(?:32Encoding|64Encoding)|C(?:FError(?:Architecture|GuestAttributes|InfoPlist|Pat(?:h|tern)|Re(?:quirementSyntax|source(?:A(?:dded|ltered)|Missing|S(?:eal|ideband))))|lass(?:Certificate|GenericPassword|I(?:dentity|nternetPassword)|Key)?|o(?:de(?:Attribute(?:Architecture|BundleVersion|Subarchitecture|UniversalFileOffset)|Info(?:C(?:MS|dHashes|ertificates|hangedFiles)|D(?:esignatedRequirement|igestAlgorithm(?:s)?)|Entitlements(?:Dict)?|F(?:lags|ormat)|I(?:dentifier|mplicitDesignatedRequirement)|MainExecutable|P(?:List|latformIdentifier)|R(?:equirement(?:Data|s)|untimeVersion)|S(?:ource|tatus)|T(?:eamIdentifier|ime(?:stamp)?|rust)|Unique))|mpressionRatio))|D(?:ecodeTypeAttribute|igest(?:HMAC(?:KeyAttribute|MD5|SHA(?:1|2))|LengthAttribute|MD(?:2|4|5)|SHA(?:1|2)|TypeAttribute))|Enc(?:ode(?:LineLengthAttribute|TypeAttribute)|rypt(?:Key|ionMode))|GuestAttribute(?:A(?:rchitecture|udit)|Canonical|DynamicCode(?:InfoPlist)?|Hash|MachPort|Pid|Subarchitecture)|I(?:VKey|dentityDomain(?:Default|KerberosKDC)|mport(?:Export(?:Access|Keychain|Passphrase)|Item(?:CertChain|Identity|KeyID|Label|Trust))|nputIs(?:AttributeName|Digest|PlainText|Raw))|KeyAttributeName|LineLength(?:64|76)|M(?:atch(?:CaseInsensitive|DiacriticInsensitive|EmailAddressIfPresent|I(?:ssuers|temList)|Limit(?:All|One)?|Policy|S(?:earchList|ubject(?:Contains|EndsWith|StartsWith|WholeString))|TrustedOnly|ValidOnDate|WidthInsensitive)|ode(?:C(?:BCKey|FBKey)|ECBKey|NoneKey|OFBKey))|OID(?:A(?:DC_CERT_POLICY|PPLE_(?:CERT_POLICY|E(?:KU_(?:CODE_SIGNING(?:_DEV)?|ICHAT_(?:ENCRYPTION|SIGNING)|RESOURCE_SIGNING|SYSTEM_IDENTITY)|XTENSION(?:_(?:A(?:AI_INTERMEDIATE|DC_(?:APPLE_SIGNING|DEV_SIGNING)|PPLE(?:ID_INTERMEDIATE|_SIGNING))|CODE_SIGNING|I(?:NTERMEDIATE_MARKER|TMS_INTERMEDIATE)|WWDR_INTERMEDIATE))?))|uthority(?:InfoAccess|KeyIdentifier))|B(?:asicConstraints|iometricInfo)|C(?:SSMKeyStruct|ert(?:Issuer|ificatePolicies)|lientAuth|o(?:llectiveSt(?:ateProvinceName|reetAddress)|mmonName|untryName)|rl(?:DistributionPoints|Number|Reason))|D(?:OTMAC_CERT_(?:E(?:MAIL_(?:ENCRYPT|SIGN)|XTENSION)|IDENTITY|POLICY)|e(?:ltaCrlIndicator|scription))|E(?:KU_IPSec|mail(?:Address|Protection)|xtended(?:KeyUsage(?:Any)?|UseCodeSigning))|GivenName|HoldInstructionCode|I(?:nvalidityDate|ssu(?:erAltName|ingDistributionPoint(?:s)?))|K(?:ERBv5_PKINIT_KP_(?:CLIENT_AUTH|KDC)|eyUsage)|LocalityName|M(?:S_NTPrincipalName|icrosoftSGC)|N(?:ameConstraints|etscape(?:Cert(?:Sequence|Type)|SGC))|O(?:CSPSigning|rganization(?:Name|alUnitName))|P(?:olicy(?:Constraints|Mappings)|rivateKeyUsagePeriod)|QC_Statements|S(?:er(?:ialNumber|verAuth)|t(?:ateProvinceName|reetAddress)|u(?:bject(?:AltName|DirectoryAttributes|EmailAddress|InfoAccess|KeyIdentifier|Picture|SignatureBitmap)|rname))|Ti(?:meStamping|tle)|UseExemptions|X509V(?:1(?:Certificate(?:IssuerUniqueId|SubjectUniqueId)|IssuerName(?:CStruct|LDAP|Std)?|S(?:erialNumber|ignature(?:Algorithm(?:Parameters|TBS)?|CStruct|Struct)?|ubject(?:Name(?:CStruct|LDAP|Std)?|PublicKey(?:Algorithm(?:Parameters)?|CStruct)?))|V(?:alidityNot(?:After|Before)|ersion))|3(?:Certificate(?:CStruct|Extension(?:C(?:Struct|ritical)|Id|Struct|Type|Value|s(?:CStruct|Struct))|NumberOfExtensions)?|SignedCertificate(?:CStruct)?)))|P(?:adding(?:Key|NoneKey|PKCS(?:1Key|5Key|7Key))|olicy(?:Apple(?:CodeSigning|EAP|I(?:DValidation|Psec)|PKINIT(?:Client|Server)|S(?:MIME|SL)|X509Basic)|Client|KU_(?:CRLSign|D(?:ataEncipherment|ecipherOnly|igitalSignature)|EncipherOnly|Key(?:Agreement|CertSign|Encipherment)|NonRepudiation)|MacAppStoreReceipt|Name|Oid)|roperty(?:Key(?:L(?:abel|ocalizedLabel)|Type|Value)|Type(?:Dat(?:a|e)|Error|S(?:ection|tring|uccess)|Title|URL|Warning)))|R(?:andomDefault|eturn(?:Attributes|Data|PersistentRef|Ref))|S(?:haredPassword|ignatureAttributeName)|Transform(?:A(?:bort(?:AttributeName|OriginatorKey)|ction(?:Attribute(?:Notification|Validation)|CanExecute|ExternalizeExtraData|Finalize|InternalizeExtraData|ProcessData|StartingExecution))|DebugAttributeName|ErrorDomain|InputAttributeName|OutputAttributeName|PreviousErrorKey|TransformName)|Use(?:ItemList|Keychain)|Value(?:Data|PersistentRef|Ref)|ZLibEncoding)|peech(?:Audio(?:GraphProperty|UnitProperty)|C(?:haracterModeProperty|ommand(?:DelimiterProperty|Prefix|Suffix)|urrentVoiceProperty)|Dictionary(?:Abbreviations|Entry(?:Phonemes|Spelling)|LocaleIdentifier|ModificationDate|Pronunciations)|Error(?:C(?:FCallBack|allback(?:CharacterOffset|SpokenString)|ount)|Newest(?:CharacterOffset)?|Oldest(?:CharacterOffset)?|sProperty)|InputModeProperty|Mode(?:Literal|Normal|Phoneme|T(?:ext|une))|N(?:o(?:EndingProsody|SpeechInterrupt)|umberModeProperty)|OutputTo(?:AudioDeviceProperty|ExtAudioFileProperty|FileURLProperty)|P(?:honeme(?:CallBack|Info(?:Example|Hilite(?:End|Start)|Opcode|Symbol)|OptionsProperty|SymbolsProperty)|itch(?:BaseProperty|ModProperty)|reflightThenPause)|R(?:ateProperty|e(?:centSyncProperty|fConProperty|setProperty))|S(?:peechDoneCallBack|tatus(?:NumberOfCharactersLeft|Output(?:Busy|Paused)|P(?:honemeCode|roperty))|yn(?:cCallBack|thesizerInfo(?:Identifier|Manufacturer|Property|Version)))|TextDoneCallBack|Vo(?:ice(?:Creator|ID)|lumeProperty)|WordCFCallBack))|T(?:IS(?:Category(?:InkInputSource|KeyboardInputSource|PaletteInputSource)|Notify(?:EnabledKeyboardInputSourcesChanged|SelectedKeyboardInputSourceChanged)|Property(?:BundleID|I(?:con(?:ImageURL|Ref)|nput(?:ModeID|Source(?:Category|I(?:D|s(?:ASCIICapable|Enable(?:Capable|d)|Select(?:Capable|ed)))|Languages|Type)))|LocalizedName|UnicodeKeyLayoutData)|Type(?:CharacterPalette|Ink|Keyboard(?:InputM(?:ethod(?:ModeEnabled|WithoutModes)|ode)|Layout|Viewer)))|XN(?:Action(?:Align(?:Center|Left|Right)|C(?:hange(?:Color|Font(?:Feature|Variation)?|GlyphVariation|S(?:ize|tyle)|TextPosition)|lear|ountOf(?:AllChanges|StyleChanges|TextChanges)|ut)|Drop|Move|Paste|Typing|UndoLast)|D(?:ataOption(?:CharacterEncodingKey|DocumentTypeKey)|ocumentAttribute(?:AuthorKey|C(?:o(?:m(?:mentKey|panyNameKey)|pyrightKey)|reationTimeKey)|EditorKey|KeywordsKey|ModificationTimeKey|SubjectKey|TitleKey))|MLTEDocumentType|PlainTextDocumentType|QuickTimeDocumentType|RTFDocumentType))|UT(?:ExportedTypeDeclarationsKey|ImportedTypeDeclarationsKey|T(?:agClass(?:FilenameExtension|MIMEType|NSPboardType|OSType)|ype(?:A(?:lias(?:File|Record)|ppl(?:e(?:ICNS|ProtectedMPEG4Audio)|ication(?:Bundle|File)?)|rchive|udio(?:visualContent)?)|B(?:MP|undle)|C(?:Header|PlusPlus(?:Header|Source)|Source|o(?:mpositeContent|n(?:formsToKey|t(?:act|ent))))|D(?:ata(?:base)?|escriptionKey|i(?:rectory|skImage))|Executable|F(?:ileURL|latRTFD|older|ramework)|GIF|HTML|I(?:CO|conFileKey|dentifierKey|mage|nkText|tem)|J(?:PEG(?:2000)?|avaSource)|M(?:P(?:3|EG(?:4(?:Audio)?)?)|essage|o(?:untPoint|vie))|ObjectiveC(?:PlusPlusSource|Source)|P(?:DF|ICT|NG|ackage|lainText)|QuickTime(?:Image|Movie)|R(?:TF(?:D)?|e(?:ferenceURLKey|solvable))|S(?:ourceCode|ymLink)|T(?:IFF|XNTextAndMultimediaData|agSpecificationKey|ext)|U(?:RL|TF(?:16(?:ExternalPlainText|PlainText)|8PlainText))|V(?:Card|ersionKey|ideo|olume)|WebArchive|XML))))|mach_task_self_|oid(?:A(?:d(?:CAIssuer|OCSP)|n(?:sip(?:384r1|521r1)|y(?:ExtendedKeyUsage|Policy))|uthority(?:InfoAccess|KeyIdentifier))|BasicConstraints|C(?:ertificatePolicies|o(?:mmonName|untryName)|rlDistributionPoints)|Description|E(?:cP(?:rime(?:192v1|256v1)|ubKey)|mailAddress|ntrustVersInfo|xtendedKeyUsage(?:C(?:lientAuth|odeSigning)|EmailProtection|IPSec|MicrosoftSGC|NetscapeSGC|OCSPSigning|ServerAuth|TimeStamping)?)|F(?:ee|riendlyName)|Google(?:EmbeddedSignedCertificateTimestamp|OCSPSignedCertificateTimestamp)|I(?:nhibitAnyPolicy|ssuerAltName)|KeyUsage|Local(?:KeyId|ityName)|M(?:SNTPrincipalName|d(?:2(?:Rsa)?|4(?:Rsa)?|5(?:Fee|Rsa)?))|N(?:ameConstraints|etscapeCertType)|Organization(?:Name|alUnitName)|P(?:olicy(?:Constraints|Mappings)|rivateKeyUsagePeriod)|Qt(?:Cps|UNotice)|Rsa|S(?:ha(?:1(?:Dsa(?:CommonOIW|OIW)?|Ecdsa|Fee|Rsa(?:OIW)?)?|2(?:24(?:Ecdsa|Rsa)?|56(?:Ecdsa|Rsa)?)|384(?:Ecdsa|Rsa)?|512(?:Ecdsa|Rsa)?)|tateOrProvinceName|ubject(?:AltName|InfoAccess|KeyIdentifier)))|v(?:m_page_(?:mask|s(?:hift|ize))|printf_stderr_func))\\b", + "name": "support.variable.c" }, { "match": "\\bkCF(?:Islamic(?:TabularCalendar|UmmAlQuraCalendar)|URL(?:AddedToDirectoryDateKey|DocumentIdentifierKey|GenerationIdentifierKey|QuarantinePropertiesKey))\\b", @@ -133,6 +349,10 @@ "match": "\\bkCFURL(?:CanonicalPathKey|Volume(?:Is(?:EncryptedKey|RootFileSystemKey)|Supports(?:CompressionKey|ExclusiveRenamingKey|FileCloningKey|SwapRenamingKey)))\\b", "name": "support.variable.cf.10.12.c" }, + { + "match": "\\bkCF(?:ErrorLocalizedFailureKey|URLVolume(?:AvailableCapacityFor(?:ImportantUsageKey|OpportunisticUsageKey)|Supports(?:AccessPermissionsKey|ImmutableFilesKey)))\\b", + "name": "support.variable.cf.10.13.c" + }, { "match": "\\bkCFURL(?:IsExcludedFromBackupKey|PathKey)\\b", "name": "support.variable.cf.10.8.c" @@ -142,7 +362,7 @@ "name": "support.variable.cf.10.9.c" }, { - "match": "\\bkCF(?:A(?:bsoluteTimeIntervalSince19(?:04|70)|llocator(?:Default|Malloc(?:Zone)?|Null|SystemDefault|UseContext))|B(?:oolean(?:False|True)|u(?:ddhistCalendar|ndle(?:DevelopmentRegionKey|ExecutableKey|I(?:dentifierKey|nfoDictionaryVersionKey)|LocalizationsKey|NameKey|VersionKey)))|C(?:hineseCalendar|o(?:pyString(?:BagCallBacks|DictionaryKeyCallBacks|SetCallBacks)|reFoundationVersionNumber))|DateFormatter(?:AMSymbol|Calendar(?:Name)?|D(?:efault(?:Date|Format)|oesRelativeDateFormattingKey)|EraSymbols|GregorianStartDate|IsLenient|LongEraSymbols|MonthSymbols|PMSymbol|QuarterSymbols|S(?:hort(?:MonthSymbols|QuarterSymbols|Standalone(?:MonthSymbols|QuarterSymbols|WeekdaySymbols)|WeekdaySymbols)|tandalone(?:MonthSymbols|QuarterSymbols|WeekdaySymbols))|T(?:imeZone|woDigitStartDate)|VeryShort(?:MonthSymbols|Standalone(?:MonthSymbols|WeekdaySymbols)|WeekdaySymbols)|WeekdaySymbols)|Error(?:D(?:escriptionKey|omain(?:Cocoa|Mach|OSStatus|POSIX))|FilePathKey|Localized(?:DescriptionKey|FailureReasonKey|RecoverySuggestionKey)|U(?:RLKey|nderlyingErrorKey))|GregorianCalendar|HebrewCalendar|I(?:SO8601Calendar|ndianCalendar|slamicC(?:alendar|ivilCalendar))|JapaneseCalendar|Locale(?:AlternateQuotation(?:BeginDelimiterKey|EndDelimiterKey)|C(?:alendar(?:Identifier)?|o(?:llat(?:ionIdentifier|orIdentifier)|untryCode)|urren(?:cy(?:Code|Symbol)|tLocaleDidChangeNotification))|DecimalSeparator|ExemplarCharacterSet|GroupingSeparator|Identifier|LanguageCode|MeasurementSystem|Quotation(?:BeginDelimiterKey|EndDelimiterKey)|ScriptCode|UsesMetricSystem|VariantCode)|N(?:otFound|u(?:ll|mber(?:Formatter(?:AlwaysShowDecimalSeparator|Currency(?:Code|DecimalSeparator|GroupingSeparator|Symbol)|De(?:cimalSeparator|faultFormat)|ExponentSymbol|FormatWidth|GroupingS(?:eparator|ize)|I(?:n(?:finitySymbol|ternationalCurrencySymbol)|sLenient)|M(?:ax(?:FractionDigits|IntegerDigits|SignificantDigits)|in(?:FractionDigits|IntegerDigits|SignificantDigits|usSign)|ultiplier)|N(?:aNSymbol|egative(?:Prefix|Suffix))|P(?:adding(?:Character|Position)|er(?:MillSymbol|centSymbol)|lusSign|ositive(?:Prefix|Suffix))|Rounding(?:Increment|Mode)|SecondaryGroupingSize|Use(?:GroupingSeparator|SignificantDigits)|ZeroSymbol)|N(?:aN|egativeInfinity)|PositiveInfinity)))|P(?:ersianCalendar|lugIn(?:DynamicRegist(?:erFunctionKey|rationKey)|FactoriesKey|TypesKey|UnloadFunctionKey)|references(?:Any(?:Application|Host|User)|Current(?:Application|Host|User)))|R(?:epublicOfChinaCalendar|unLoop(?:CommonModes|DefaultMode))|S(?:ocket(?:CommandKey|ErrorKey|NameKey|Re(?:gisterCommand|sultKey|trieveCommand)|ValueKey)|tr(?:eamProperty(?:AppendToFile|DataWritten|FileCurrentOffset|Socket(?:NativeHandle|Remote(?:HostName|PortNumber)))|ing(?:BinaryHeapCallBacks|Transform(?:FullwidthHalfwidth|HiraganaKatakana|Latin(?:Arabic|Cyrillic|Greek|H(?:angul|ebrew|iragana)|Katakana|Thai)|MandarinLatin|Strip(?:CombiningMarks|Diacritics)|To(?:Latin|UnicodeName|XMLHex)))))|T(?:imeZoneSystemTimeZoneDidChangeNotification|ype(?:ArrayCallBacks|BagCallBacks|Dictionary(?:KeyCallBacks|ValueCallBacks)|SetCallBacks))|U(?:RL(?:AttributeModificationDateKey|C(?:ontent(?:AccessDateKey|ModificationDateKey)|reationDateKey)|File(?:AllocatedSizeKey|Protection(?:Complete(?:Un(?:lessOpen|tilFirstUserAuthentication))?|Key|None)|Resource(?:IdentifierKey|Type(?:BlockSpecial|CharacterSpecial|Directory|Key|NamedPipe|Regular|S(?:ocket|ymbolicLink)|Unknown))|S(?:ecurityKey|izeKey))|HasHiddenExtensionKey|Is(?:AliasFileKey|DirectoryKey|ExecutableKey|HiddenKey|MountTriggerKey|PackageKey|Re(?:adableKey|gularFileKey)|Sy(?:mbolicLinkKey|stemImmutableKey)|U(?:biquitousItemKey|serImmutableKey)|VolumeKey|WritableKey)|KeysOfUnsetValuesKey|L(?:abelNumberKey|inkCountKey|ocalized(?:LabelKey|NameKey|TypeDescriptionKey))|NameKey|P(?:arentDirectoryURLKey|referredIOBlockSizeKey)|T(?:otalFile(?:AllocatedSizeKey|SizeKey)|ypeIdentifierKey)|UbiquitousItem(?:HasUnresolvedConflictsKey|Is(?:DownloadingKey|Upload(?:edKey|ingKey)))|Volume(?:AvailableCapacityKey|CreationDateKey|I(?:dentifierKey|s(?:AutomountedKey|BrowsableKey|EjectableKey|InternalKey|JournalingKey|LocalKey|Re(?:adOnlyKey|movableKey)))|Localized(?:FormatDescriptionKey|NameKey)|MaximumFileSizeKey|NameKey|ResourceCountKey|Supports(?:AdvisoryFileLockingKey|Case(?:PreservedNamesKey|SensitiveNamesKey)|ExtendedSecurityKey|HardLinksKey|JournalingKey|PersistentIDsKey|R(?:enamingKey|ootDirectoryDatesKey)|S(?:parseFilesKey|ymbolicLinksKey)|VolumeSizesKey|ZeroRunsKey)|TotalCapacityKey|U(?:RL(?:ForRemountingKey|Key)|UIDStringKey)))|serNotification(?:Al(?:ert(?:HeaderKey|MessageKey)|ternateButtonTitleKey)|CheckBoxTitlesKey|DefaultButtonTitleKey|IconURLKey|LocalizationURLKey|OtherButtonTitleKey|P(?:opUp(?:SelectionKey|TitlesKey)|rogressIndicatorValueKey)|SoundURLKey|TextField(?:TitlesKey|ValuesKey)))|XMLTreeError(?:Description|L(?:ineNumber|ocation)|StatusCode))\\b", + "match": "\\bkCF(?:A(?:bsoluteTimeIntervalSince19(?:04|70)|llocator(?:Default|Malloc(?:Zone)?|Null|SystemDefault|UseContext))|B(?:oolean(?:False|True)|u(?:ddhistCalendar|ndle(?:DevelopmentRegionKey|ExecutableKey|I(?:dentifierKey|nfoDictionaryVersionKey)|LocalizationsKey|NameKey|VersionKey)))|C(?:hineseCalendar|o(?:pyString(?:BagCallBacks|DictionaryKeyCallBacks|SetCallBacks)|reFoundationVersionNumber))|DateFormatter(?:AMSymbol|Calendar(?:Name)?|D(?:efault(?:Date|Format)|oesRelativeDateFormattingKey)|EraSymbols|GregorianStartDate|IsLenient|LongEraSymbols|MonthSymbols|PMSymbol|QuarterSymbols|S(?:hort(?:MonthSymbols|QuarterSymbols|Standalone(?:MonthSymbols|QuarterSymbols|WeekdaySymbols)|WeekdaySymbols)|tandalone(?:MonthSymbols|QuarterSymbols|WeekdaySymbols))|T(?:imeZone|woDigitStartDate)|VeryShort(?:MonthSymbols|Standalone(?:MonthSymbols|WeekdaySymbols)|WeekdaySymbols)|WeekdaySymbols)|Error(?:D(?:escriptionKey|omain(?:Cocoa|Mach|OSStatus|POSIX))|FilePathKey|Localized(?:DescriptionKey|FailureReasonKey|RecoverySuggestionKey)|U(?:RLKey|nderlyingErrorKey))|GregorianCalendar|HebrewCalendar|I(?:SO8601Calendar|ndianCalendar|slamicC(?:alendar|ivilCalendar))|JapaneseCalendar|Locale(?:AlternateQuotation(?:BeginDelimiterKey|EndDelimiterKey)|C(?:alendar(?:Identifier)?|o(?:llat(?:ionIdentifier|orIdentifier)|untryCode)|urren(?:cy(?:Code|Symbol)|tLocaleDidChangeNotification))|DecimalSeparator|ExemplarCharacterSet|GroupingSeparator|Identifier|LanguageCode|MeasurementSystem|Quotation(?:BeginDelimiterKey|EndDelimiterKey)|ScriptCode|UsesMetricSystem|VariantCode)|N(?:otFound|u(?:ll|mber(?:Formatter(?:AlwaysShowDecimalSeparator|Currency(?:Code|DecimalSeparator|GroupingSeparator|Symbol)|De(?:cimalSeparator|faultFormat)|ExponentSymbol|FormatWidth|GroupingS(?:eparator|ize)|I(?:n(?:finitySymbol|ternationalCurrencySymbol)|sLenient)|M(?:ax(?:FractionDigits|IntegerDigits|SignificantDigits)|in(?:FractionDigits|IntegerDigits|SignificantDigits|usSign)|ultiplier)|N(?:aNSymbol|egative(?:Prefix|Suffix))|P(?:adding(?:Character|Position)|er(?:MillSymbol|centSymbol)|lusSign|ositive(?:Prefix|Suffix))|Rounding(?:Increment|Mode)|SecondaryGroupingSize|Use(?:GroupingSeparator|SignificantDigits)|ZeroSymbol)|N(?:aN|egativeInfinity)|PositiveInfinity)))|P(?:ersianCalendar|lugIn(?:DynamicRegist(?:erFunctionKey|rationKey)|FactoriesKey|TypesKey|UnloadFunctionKey)|references(?:Any(?:Application|Host|User)|Current(?:Application|Host|User)))|R(?:epublicOfChinaCalendar|unLoop(?:CommonModes|DefaultMode))|S(?:ocket(?:CommandKey|ErrorKey|NameKey|Re(?:gisterCommand|sultKey|trieveCommand)|ValueKey)|tr(?:eam(?:ErrorDomainS(?:OCKS|SL)|Property(?:AppendToFile|DataWritten|FileCurrentOffset|S(?:OCKS(?:P(?:assword|roxy(?:Host|Port)?)|User|Version)|houldCloseNativeSocket|ocket(?:NativeHandle|Remote(?:HostName|PortNumber)|SecurityLevel)))|SocketS(?:OCKSVersion(?:4|5)|ecurityLevel(?:N(?:egotiatedSSL|one)|TLSv1)))|ing(?:BinaryHeapCallBacks|Transform(?:FullwidthHalfwidth|HiraganaKatakana|Latin(?:Arabic|Cyrillic|Greek|H(?:angul|ebrew|iragana)|Katakana|Thai)|MandarinLatin|Strip(?:CombiningMarks|Diacritics)|To(?:Latin|UnicodeName|XMLHex)))))|T(?:imeZoneSystemTimeZoneDidChangeNotification|ype(?:ArrayCallBacks|BagCallBacks|Dictionary(?:KeyCallBacks|ValueCallBacks)|SetCallBacks))|U(?:RL(?:AttributeModificationDateKey|C(?:ontent(?:AccessDateKey|ModificationDateKey)|reationDateKey)|File(?:AllocatedSizeKey|Protection(?:Complete(?:Un(?:lessOpen|tilFirstUserAuthentication))?|Key|None)|Resource(?:IdentifierKey|Type(?:BlockSpecial|CharacterSpecial|Directory|Key|NamedPipe|Regular|S(?:ocket|ymbolicLink)|Unknown))|S(?:ecurityKey|izeKey))|HasHiddenExtensionKey|Is(?:AliasFileKey|DirectoryKey|ExecutableKey|HiddenKey|MountTriggerKey|PackageKey|Re(?:adableKey|gularFileKey)|Sy(?:mbolicLinkKey|stemImmutableKey)|U(?:biquitousItemKey|serImmutableKey)|VolumeKey|WritableKey)|KeysOfUnsetValuesKey|L(?:abelNumberKey|inkCountKey|ocalized(?:LabelKey|NameKey|TypeDescriptionKey))|NameKey|P(?:arentDirectoryURLKey|referredIOBlockSizeKey)|T(?:otalFile(?:AllocatedSizeKey|SizeKey)|ypeIdentifierKey)|UbiquitousItem(?:HasUnresolvedConflictsKey|Is(?:DownloadingKey|Upload(?:edKey|ingKey)))|Volume(?:AvailableCapacityKey|CreationDateKey|I(?:dentifierKey|s(?:AutomountedKey|BrowsableKey|EjectableKey|InternalKey|JournalingKey|LocalKey|Re(?:adOnlyKey|movableKey)))|Localized(?:FormatDescriptionKey|NameKey)|MaximumFileSizeKey|NameKey|ResourceCountKey|Supports(?:AdvisoryFileLockingKey|Case(?:PreservedNamesKey|SensitiveNamesKey)|ExtendedSecurityKey|HardLinksKey|JournalingKey|PersistentIDsKey|R(?:enamingKey|ootDirectoryDatesKey)|S(?:parseFilesKey|ymbolicLinksKey)|VolumeSizesKey|ZeroRunsKey)|TotalCapacityKey|U(?:RL(?:ForRemountingKey|Key)|UIDStringKey)))|serNotification(?:Al(?:ert(?:HeaderKey|MessageKey|TopMostKey)|ternateButtonTitleKey)|CheckBoxTitlesKey|DefaultButtonTitleKey|IconURLKey|KeyboardTypesKey|LocalizationURLKey|OtherButtonTitleKey|P(?:opUp(?:SelectionKey|TitlesKey)|rogressIndicatorValueKey)|SoundURLKey|TextField(?:TitlesKey|ValuesKey)))|XMLTreeError(?:Description|L(?:ineNumber|ocation)|StatusCode))\\b", "name": "support.variable.cf.c" }, { @@ -157,6 +377,22 @@ "match": "\\bkCGColor(?:ConversionBlackPointCompensation|Space(?:Extended(?:Gray|Linear(?:Gray|SRGB)|SRGB)|Linear(?:Gray|SRGB)))\\b", "name": "support.variable.quartz.10.12.c" }, + { + "match": "\\bkCG(?:Color(?:ConversionTRCSize|SpaceGenericLab)|PDF(?:ContextAccessPermissions|Outline(?:Children|Destination(?:Rect)?|Title)))\\b", + "name": "support.variable.quartz.10.13.c" + }, + { + "match": "\\bkCGColorSpace(?:DisplayP3_HLG|ExtendedLinear(?:DisplayP3|ITUR_2020)|ITUR_2020_HLG)\\b", + "name": "support.variable.quartz.10.14.c" + }, + { + "match": "\\bkCGPDFTagProperty(?:A(?:ctualText|lternativeText)|LanguageText|TitleText)\\b", + "name": "support.variable.quartz.10.15.c" + }, + { + "match": "\\bkCGColorSpace(?:DisplayP3_PQ|ITUR_2020_PQ)\\b", + "name": "support.variable.quartz.10.16.c" + }, { "match": "\\bkCGDisplayS(?:howDuplicateLowResolutionModes|tream(?:ColorSpace|DestinationRect|MinimumFrameTime|PreserveAspectRatio|QueueDepth|S(?:howCursor|ourceRect)|YCbCrMatrix(?:_(?:ITU_R_(?:601_4|709_2)|SMPTE_240M_1995))?))\\b", "name": "support.variable.quartz.10.8.c" @@ -169,6 +405,17 @@ "repository": { "functions": { "patterns": [ + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.10.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:AudioFileReadPackets|LS(?:C(?:anRefAcceptItem|opy(?:ApplicationForMIMEType|DisplayNameForRef|Item(?:Attribute(?:s)?|InfoForRef)|KindStringFor(?:MIMEType|Ref|TypeInfo)))|FindApplicationForInfo|GetApplicationFor(?:I(?:nfo|tem)|URL)|Open(?:Application|F(?:SRef|romRefSpec)|ItemsWithRole|URLsWithRole)|RegisterFSRef|S(?:et(?:ExtensionHiddenForRef|ItemAttribute)|haredFileListI(?:nsertItemFSRef|temResolve)))|launch_(?:data_(?:a(?:lloc|rray_(?:get_(?:count|index)|set_index))|copy|dict_(?:get_count|i(?:nsert|terate)|lookup|remove)|free|get_(?:bool|errno|fd|integer|machport|opaque(?:_size)?|real|string|type)|new_(?:bool|fd|integer|machport|opaque|real|string)|set_(?:bool|fd|integer|machport|opaque|real|string))|get_fd|msg))\\b)" + }, { "captures": { "1": { @@ -180,6 +427,17 @@ }, "match": "(\\s*)(\\bCF(?:AbsoluteTime(?:AddGregorianUnits|Get(?:D(?:ayOf(?:Week|Year)|ifferenceAsGregorianUnits)|GregorianDate|WeekOfYear))|GregorianDate(?:GetAbsoluteTime|IsValid)|PropertyList(?:Create(?:From(?:Stream|XMLData)|XMLData)|WriteToStream))\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.11.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:AudioHardwareService(?:AddPropertyListener|GetPropertyData(?:Size)?|HasProperty|IsPropertySettable|RemovePropertyListener|SetPropertyData)|CF(?:FTPCreateParsedResourceListing|ReadStreamCreate(?:For(?:HTTPRequest|StreamedHTTPRequest)|WithFTPURL)|WriteStreamCreateWithFTPURL)|LS(?:Copy(?:DisplayNameForURL|ItemInfoForURL|KindStringForURL)|Get(?:ExtensionInfo|HandlerOptionsForContentType)|S(?:et(?:ExtensionHiddenForURL|HandlerOptionsForContentType)|haredFileList(?:AddObserver|C(?:opy(?:Property|Snapshot)|reate)|Get(?:SeedValue|TypeID)|I(?:nsertItemURL|tem(?:Copy(?:DisplayName|IconRef|Property|ResolvedURL)|Get(?:ID|TypeID)|Move|Remove|SetProperty))|Remove(?:AllItems|Observer)|Set(?:Authorization|Property))))|SSLSetEncryptionCertificate)\\b)" + }, { "captures": { "1": { @@ -202,6 +460,17 @@ }, "match": "(\\s*)(\\bCGDisplayModeCopyPixelEncoding\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.12.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:OS(?:Atomic(?:A(?:dd(?:32(?:Barrier)?|64(?:Barrier)?)|nd32(?:Barrier|Orig(?:Barrier)?)?)|CompareAndSwap(?:32(?:Barrier)?|64(?:Barrier)?|Int(?:Barrier)?|Long(?:Barrier)?|Ptr(?:Barrier)?)|Decrement(?:32(?:Barrier)?|64(?:Barrier)?)|Increment(?:32(?:Barrier)?|64(?:Barrier)?)|Or32(?:Barrier|Orig(?:Barrier)?)?|TestAnd(?:Clear(?:Barrier)?|Set(?:Barrier)?)|Xor32(?:Barrier|Orig(?:Barrier)?)?)|MemoryBarrier|SpinLock(?:Lock|Try|Unlock))|SecCertificateCopyNormalized(?:IssuerContent|SubjectContent)|os_log_is_(?:debug_enabled|enabled))\\b)" + }, { "captures": { "1": { @@ -211,7 +480,106 @@ "name": "invalid.deprecated.10.12.support.function.clib.c" } }, - "match": "(\\s*)(\\bsyscall\\b)" + "match": "(\\s*)(\\b(?:arc4random_addrandom|syscall)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.13.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:C(?:FNetDiagnostic(?:C(?:opyNetworkStatusPassively|reateWith(?:Streams|URL))|DiagnoseProblemInteractively|SetName)|MSDecoderSetSearchKeychain)|DisposeSRCallBackUPP|GetIconRefFromFileInfo|InvokeSRCallBackUPP|NewSRCallBackUPP|Re(?:adIconFromFSRef|gisterIconRefFromFSRef)|S(?:R(?:Add(?:LanguageObject|Text)|C(?:ancelRecognition|hangeLanguageObject|loseRecognitionSystem|o(?:ntinueRecognition|untItems))|Draw(?:RecognizedText|Text)|EmptyLanguageObject|Get(?:IndexedItem|LanguageModel|Property|Reference)|Idle|New(?:Language(?:Model|ObjectFrom(?:DataFile|Handle))|P(?:ath|hrase)|Recognizer|Word)|OpenRecognitionSystem|P(?:rocess(?:Begin|End)|utLanguageObjectInto(?:DataFile|Handle))|Re(?:leaseObject|move(?:IndexedItem|LanguageObject))|S(?:et(?:IndexedItem|LanguageModel|Property)|pe(?:ak(?:AndDrawText|Text)|echBusy)|t(?:artListening|op(?:Listening|Speech))))|ec(?:CertificateCopySerialNumber|Keychain(?:CopyAccess|SetAccess)|TrustSetKeychains))|UnregisterIconRef|os_trace_(?:debug_enabled|info_enabled|type_enabled))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.13.support.function.quartz.c" + } + }, + "match": "(\\s*)(\\bCGColorSpaceC(?:opyICCProfile|reateWithICCProfile)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.14.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:CVOpenGL(?:Buffer(?:Attach|Create|Get(?:Attributes|TypeID)|Pool(?:Create(?:OpenGLBuffer)?|Get(?:Attributes|OpenGLBufferAttributes|TypeID)|Re(?:lease|tain))|Re(?:lease|tain))|Texture(?:Cache(?:Create(?:TextureFromImage)?|Flush|GetTypeID|Re(?:lease|tain))|Get(?:CleanTexCoords|Name|T(?:arget|ypeID))|IsFlipped|Re(?:lease|tain)))|DR(?:AudioTrackCreate|F(?:SObjectGetRealFSRef|ileCreateReal|olderCreateReal))|SecCertificateCopyPublicKey)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.15.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:AcquireIconRef|C(?:C_MD(?:2(?:_(?:Final|Init|Update))?|4(?:_(?:Final|Init|Update))?|5(?:_(?:Final|Init|Update))?)|TFont(?:CreateWithQuickdrawInstance|Manager(?:RegisterFontsForURLs|UnregisterFontsForURLs))|ompositeIconRef)|Get(?:CustomIconsEnabled|IconRef(?:From(?:Component|Folder|IconFamilyPtr|TypeInfo)|Owners)?)|Is(?:DataAvailableInIconRef|IconRefComposite|ValidIconRef)|LSCopy(?:AllHandlersForURLScheme|DefaultHandlerForURLScheme)|OverrideIconRef|Re(?:gisterIconRefFromIconFamily|leaseIconRef|moveIconRefOverride)|S(?:SL(?:AddDistinguishedName|C(?:lose|o(?:ntextGetTypeID|py(?:ALPNProtocols|CertificateAuthorities|DistinguishedNames|PeerTrust|RequestedPeerName(?:Length)?))|reateContext)|Get(?:BufferedReadSize|C(?:lientCertificateState|onnection)|D(?:atagramWriteSize|iffieHellmanParams)|EnabledCiphers|MaxDatagramRecordSize|N(?:egotiated(?:Cipher|ProtocolVersion)|umber(?:EnabledCiphers|SupportedCiphers))|P(?:eer(?:DomainName(?:Length)?|ID)|rotocolVersionM(?:ax|in))|S(?:ession(?:Option|State)|upportedCiphers))|Handshake|Re(?:Handshake|ad)|Set(?:ALPNProtocols|C(?:ertificate(?:Authorities)?|lientSideAuthenticate|onnection)|D(?:atagramHelloCookie|iffieHellmanParams)|E(?:nabledCiphers|rror)|IOFuncs|MaxDatagramRecordSize|OCSPResponse|P(?:eer(?:DomainName|ID)|rotocolVersionM(?:ax|in))|Session(?:Config|Option|TicketsEnabled))|Write)|e(?:cTrust(?:Evaluate(?:Async)?|edApplication(?:C(?:opyData|reateFromPath)|SetData))|tCustomIconsEnabled))|UpdateIconRef|sec_protocol_(?:metadata_get_negotiated_(?:ciphersuite|protocol_version)|options_(?:add_tls_ciphersuite(?:_group)?|set_tls_(?:diffie_hellman_parameters|m(?:ax_version|in_version)))))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.15.support.function.cf.c" + } + }, + "match": "(\\s*)(\\bCF(?:Bundle(?:CloseBundleResourceMap|OpenBundleResource(?:Files|Map))|URLCopyParameterString)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.15.support.function.quartz.c" + } + }, + "match": "(\\s*)(\\bCGColorSpaceIsHDR\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.3.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:DisposeGetScrapDataUPP|InvokeGetScrapDataUPP|NewGetScrapDataUPP|ReleaseFolder)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.4.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:AH(?:GotoMainTOC|RegisterHelpBook)|CFNetServiceRe(?:gister|solve)|Dispose(?:CaretHookUPP|DrawHookUPP|EOLHookUPP|Hi(?:ghHookUPP|tTestHookUPP)|NWidthHookUPP|T(?:E(?:ClickLoopUPP|DoTextUPP|FindWordUPP|RecalcUPP)|XNActionKeyMapperUPP|extWidthHookUPP)|URL(?:NotifyUPP|SystemEventUPP)|WidthHookUPP)|In(?:s(?:Time|XTime|tall(?:TimeTask|XTimeTask))|voke(?:CaretHookUPP|DrawHookUPP|EOLHookUPP|Hi(?:ghHookUPP|tTestHookUPP)|NWidthHookUPP|T(?:E(?:ClickLoopUPP|DoTextUPP|FindWordUPP|RecalcUPP)|XNActionKeyMapperUPP|extWidthHookUPP)|URL(?:NotifyUPP|SystemEventUPP)|WidthHookUPP))|LM(?:Get(?:ApFontID|SysFontSize)|Set(?:ApFontID|SysFontFam))|New(?:CaretHookUPP|DrawHookUPP|EOLHookUPP|Hi(?:ghHookUPP|tTestHookUPP)|NWidthHookUPP|T(?:E(?:ClickLoopUPP|DoTextUPP|FindWordUPP|RecalcUPP)|XNActionKeyMapperUPP|extWidthHookUPP)|URL(?:NotifyUPP|SystemEventUPP)|WidthHookUPP)|P(?:L(?:pos|str(?:c(?:at|hr|mp|py)|len|nc(?:at|mp|py)|pbrk|rchr|s(?:pn|tr)))|rimeTime(?:Task)?)|R(?:emoveTimeTask|mvTime)|SKSearch(?:Group(?:C(?:opyIndexes|reate)|GetTypeID)|Results(?:C(?:opyMatchingTerms|reateWith(?:Documents|Query))|Get(?:Count|InfoInRange|TypeID))))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.5.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:A(?:S(?:GetSourceStyles|SetSourceStyles)|UGraph(?:CountNodeConnections|Get(?:ConnectionInfo|N(?:ode(?:Connections|Info)|umberOfConnections))|NewNode)|udio(?:ConverterFillBuffer|Device(?:AddIOProc|Re(?:ad|moveIOProc))|FileComponent(?:DataIsThisFormat|FileIsThisFormat)))|Dispose(?:AVL(?:CompareItemsUPP|DisposeItemUPP|ItemSizeUPP|WalkUPP)|Drag(?:DrawingUPP|ReceiveHandlerUPP|SendDataUPP|TrackingHandlerUPP)|List(?:ClickLoopUPP|DefUPP|SearchUPP)|Menu(?:ItemDrawingUPP|TitleDrawingUPP)|S(?:crapPromiseKeeperUPP|leepQUPP)|Theme(?:ButtonDrawUPP|EraseUPP|IteratorUPP|TabTitleDrawUPP)|Window(?:PaintUPP|TitleDrawingUPP))|Get(?:NameFromSoundBank|ScriptManagerVariable)|Invoke(?:AVL(?:CompareItemsUPP|DisposeItemUPP|ItemSizeUPP|WalkUPP)|Drag(?:DrawingUPP|ReceiveHandlerUPP|SendDataUPP|TrackingHandlerUPP)|List(?:ClickLoopUPP|DefUPP|SearchUPP)|Menu(?:ItemDrawingUPP|TitleDrawingUPP)|S(?:crapPromiseKeeperUPP|leepQUPP)|Theme(?:ButtonDrawUPP|EraseUPP|IteratorUPP|TabTitleDrawUPP)|Window(?:PaintUPP|TitleDrawingUPP))|Music(?:Device(?:PrepareInstrument|ReleaseInstrument)|Sequence(?:LoadSMF(?:DataWithFlags|WithFlags)|Save(?:MIDIFile|SMFData)))|New(?:AVL(?:CompareItemsUPP|DisposeItemUPP|ItemSizeUPP|WalkUPP)|Drag(?:DrawingUPP|ReceiveHandlerUPP|SendDataUPP|TrackingHandlerUPP)|List(?:ClickLoopUPP|DefUPP|SearchUPP)|Menu(?:ItemDrawingUPP|TitleDrawingUPP)|S(?:crapPromiseKeeperUPP|leepQUPP)|Theme(?:ButtonDrawUPP|EraseUPP|IteratorUPP|TabTitleDrawUPP)|Window(?:PaintUPP|TitleDrawingUPP))|S(?:CNetworkInterfaceRefreshConfiguration|etScriptManagerVariable))\\b)" }, { "captures": { @@ -235,6 +603,17 @@ }, "match": "(\\s*)(\\bCG(?:ContextDrawPDFDocument|PDFDocumentGet(?:ArtBox|BleedBox|CropBox|MediaBox|RotationAngle|TrimBox))\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.6.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:Audio(?:Device(?:AddPropertyListener|GetProperty(?:Info)?|RemovePropertyListener|SetProperty)|File(?:C(?:omponent(?:Create|Initialize|OpenFile)|reate)|Initialize|Open)|Hardware(?:AddPropertyListener|GetProperty(?:Info)?|RemovePropertyListener|SetProperty)|Stream(?:AddPropertyListener|GetProperty(?:Info)?|RemovePropertyListener|SetProperty))|Button|DisposeKCCallbackUPP|ExtAudioFile(?:CreateNew|Open)|FlushEvents|I(?:nvokeKCCallbackUPP|sCmdChar)|KC(?:Add(?:AppleSharePassword|Callback|GenericPassword|I(?:nternetPassword(?:WithPath)?|tem))|C(?:hangeSettings|o(?:pyItem|untKeychains)|reateKeychain)|DeleteItem|Find(?:AppleSharePassword|FirstItem|GenericPassword|InternetPassword(?:WithPath)?|NextItem)|Get(?:Attribute|D(?:ata|efaultKeychain)|IndKeychain|Keychain(?:ManagerVersion|Name)?|Status)|IsInteractionAllowed|Lock|Make(?:AliasFromKCRef|KCRefFrom(?:Alias|FSRef))|NewItem|Re(?:lease(?:Item|Keychain|Search)|moveCallback)|Set(?:Attribute|D(?:ata|efaultKeychain)|InteractionAllowed)|U(?:nlock|pdateItem))|Munger|New(?:KCCallbackUPP|MusicTrackFrom)|S(?:CNetworkCheckReachabilityBy(?:Address|Name)|ecHost(?:CreateGuest|RemoveGuest|Se(?:lect(?:Guest|edGuest)|t(?:GuestStatus|HostingPort))))|UC(?:CreateTextBreakLocator|DisposeTextBreakLocator|FindTextBreak)|kc(?:add(?:applesharepassword|genericpassword|internetpassword(?:withpath)?)|createkeychain|find(?:applesharepassword|genericpassword|internetpassword(?:withpath)?)|getkeychainname|unlock))\\b)" + }, { "captures": { "1": { @@ -246,6 +625,17 @@ }, "match": "(\\s*)(\\bCG(?:ConfigureDisplayMode|Display(?:AvailableModes|BestModeForParameters(?:AndRefreshRate)?|CurrentMode|SwitchToMode)|EnableEventStateCombining|FontCreateWithPlatformFont|InhibitLocalEvents|Post(?:KeyboardEvent|MouseEvent|ScrollWheelEvent)|SetLocalEvents(?:FilterDuringSuppressionState|SuppressionInterval))\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.7.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:Au(?:dioHardware(?:AddRunLoopSource|RemoveRunLoopSource)|thorization(?:CopyPrivilegedReference|ExecuteWithPrivileges))|C(?:MSEncode(?:rSetEncapsulatedContentType)?|SSM_(?:AC_(?:AuthCompute|PassThrough)|C(?:L_(?:C(?:ert(?:Abort(?:Cache|Query)|C(?:ache|reateTemplate)|DescribeFormat|G(?:et(?:All(?:Fields|TemplateFields)|First(?:CachedFieldValue|FieldValue)|KeyInfo|Next(?:CachedFieldValue|FieldValue))|roup(?:FromVerifiedBundle|ToSignedBundle))|Sign|Verify(?:WithKey)?)|rl(?:A(?:bort(?:Cache|Query)|ddCert)|C(?:ache|reateTemplate)|DescribeFormat|Get(?:All(?:CachedRecordFields|Fields)|First(?:CachedFieldValue|FieldValue)|Next(?:CachedFieldValue|FieldValue))|RemoveCert|S(?:etFields|ign)|Verify(?:WithKey)?))|FreeField(?:Value|s)|IsCertInC(?:achedCrl|rl)|PassThrough)|SP_(?:C(?:hangeLogin(?:Acl|Owner)|reate(?:AsymmetricContext|D(?:eriveKeyContext|igestContext)|KeyGenContext|MacContext|PassThroughContext|RandomGenContext|S(?:ignatureContext|ymmetricContext)))|Get(?:Login(?:Acl|Owner)|OperationalStatistics)|Log(?:in|out)|ObtainPrivateKeyFromPublicKey|PassThrough)|hangeKey(?:Acl|Owner))|D(?:L_(?:Authenticate|C(?:hangeDb(?:Acl|Owner)|reateRelation)|D(?:ata(?:AbortQuery|Delete|Get(?:F(?:irst|romUniqueRecordId)|Next)|Insert|Modify)|b(?:C(?:lose|reate)|Delete|Open)|estroyRelation)|Free(?:NameList|UniqueRecord)|GetDb(?:Acl|Name(?:FromHandle|s)|Owner)|PassThrough)|e(?:cryptData(?:Final|Init(?:P)?|P|Update)?|leteContext(?:Attributes)?|riveKey)|igestData(?:Clone|Final|Init|Update)?)|EncryptData(?:Final|Init(?:P)?|P|Update)?|Free(?:Context|Key)|Ge(?:nerate(?:AlgorithmParams|Key(?:P(?:air(?:P)?)?)?|Mac(?:Final|Init|Update)?|Random)|t(?:APIMemoryFunctions|Context(?:Attribute)?|Key(?:Acl|Owner)|ModuleGUIDFromHandle|Privilege|SubserviceUIDFromHandle|TimeValue))|In(?:it|troduce)|ListAttachedModuleManagers|Module(?:Attach|Detach|Load|Unload)|Query(?:KeySizeInBits|Size)|Retrieve(?:Counter|UniqueId)|S(?:et(?:Context|Privilege)|ignData(?:Final|Init|Update)?)|T(?:P_(?:ApplyCrlToDb|C(?:ert(?:CreateTemplate|G(?:etAllTemplateFields|roup(?:Construct|Prune|ToTupleGroup|Verify))|Re(?:claim(?:Abort|Key)|moveFromCrlTemplate|voke)|Sign)|onfirmCredResult|rl(?:CreateTemplate|Sign|Verify))|Form(?:Request|Submit)|PassThrough|Re(?:ceiveConfirmation|trieveCredResult)|SubmitCredRequest|TupleGroupToCertGroup)|erminate)|U(?:n(?:introduce|wrapKey(?:P)?)|pdateContextAttributes)|Verify(?:D(?:ata(?:Final|Init|Update)?|evice)|Mac(?:Final|Init|Update)?)|WrapKey(?:P)?)|reateThreadPool)|Dispose(?:Debugger(?:DisposeThreadUPP|NewThreadUPP|ThreadSchedulerUPP)|Thread(?:EntryUPP|S(?:chedulerUPP|witchUPP)|TerminationUPP)?)|Get(?:CurrentThread|DefaultThreadStackSize|Thread(?:CurrentTaskRef|State(?:GivenTaskRef)?))|I(?:C(?:Add(?:MapEntry|Profile)|Begin|C(?:ount(?:MapEntries|Pr(?:ef|ofiles))|reateGURLEvent)|Delete(?:MapEntry|Pr(?:ef|ofile))|E(?:ditPreferences|nd)|FindPrefHandle|Get(?:C(?:onfigName|urrentProfile)|DefaultPref|Ind(?:MapEntry|Pr(?:ef|ofile))|MapEntry|P(?:erm|r(?:ef(?:Handle)?|ofileName))|Seed|Version)|LaunchURL|Map(?:Entries(?:Filename|TypeCreator)|Filename|TypeCreator)|ParseURL|S(?:e(?:ndGURLEvent|t(?:CurrentProfile|MapEntry|Pr(?:ef(?:Handle)?|ofileName)))|t(?:art|op)))|nvoke(?:Debugger(?:DisposeThreadUPP|NewThreadUPP|ThreadSchedulerUPP)|Thread(?:EntryUPP|S(?:chedulerUPP|witchUPP)|TerminationUPP))|sMetric)|M(?:DS_(?:In(?:itialize|stall)|Terminate|Uninstall)|P(?:A(?:llocate(?:Aligned|TaskStorageIndex)?|rmTimer)|BlockC(?:lear|opy)|C(?:a(?:ncelTimer|useNotification)|reate(?:CriticalRegion|Event|Notification|Queue|Semaphore|T(?:ask|imer))|urrentTaskID)|D(?:e(?:allocateTaskStorageIndex|l(?:ayUntil|ete(?:CriticalRegion|Event|Notification|Queue|Semaphore|Timer)))|isposeTaskException)|E(?:nterCriticalRegion|x(?:it(?:CriticalRegion)?|tractTaskState))|Free|Get(?:AllocatedBlockSize|Next(?:CpuID|TaskID)|TaskStorageValue)|ModifyNotification(?:Parameters)?|NotifyQueue|Processors(?:Scheduled)?|Re(?:gisterDebugger|moteCall(?:CFM)?)|S(?:et(?:E(?:vent|xceptionHandler)|QueueReserve|T(?:ask(?:St(?:ate|orageValue)|Weight)|imerNotify))|ignalSemaphore)|T(?:askIsPreemptive|erminateTask|hrowException)|UnregisterDebugger|Wait(?:ForEvent|On(?:Queue|Semaphore))|Yield)|usicTrackNewExtendedControlEvent)|New(?:Debugger(?:DisposeThreadUPP|NewThreadUPP|ThreadSchedulerUPP)|Thread(?:EntryUPP|S(?:chedulerUPP|witchUPP)|TerminationUPP)?)|Se(?:c(?:A(?:CL(?:C(?:opySimpleContents|reateFromSimpleContents)|GetAuthorizations|Set(?:Authorizations|SimpleContents))|ccess(?:C(?:opySelectedACLList|reateFromOwnerAndACL)|GetOwnerAndACL))|Certificate(?:C(?:opyPreference|reateFromData)|Get(?:AlgorithmID|CLHandle|Data|Issuer|Subject|Type)|SetPreference)|Identity(?:CopyPreference|Se(?:arch(?:C(?:opyNext|reate)|GetTypeID)|tPreference))|Key(?:CreatePair|Ge(?:nerate|tC(?:S(?:PHandle|SMKey)|redentials))|chain(?:Get(?:CSPHandle|DLDBHandle)|Item(?:Export|Get(?:DLDBHandle|UniqueRecordID)|Import)|Search(?:C(?:opyNext|reateFromAttributes)|GetTypeID)))|Policy(?:Get(?:OID|TPHandle|Value)|Se(?:arch(?:C(?:opyNext|reate)|GetTypeID)|tValue))|Trust(?:Get(?:CssmResult(?:Code)?|Result|TPHandle)|SetParameters))|t(?:DebuggerNotificationProcs|Thread(?:ReadyGivenTaskRef|S(?:cheduler|tate(?:EndCritical)?|witcher)|Terminator)))|Thread(?:BeginCritical|CurrentStackSpace|EndCritical)|YieldTo(?:AnyThread|Thread))\\b)" + }, { "captures": { "1": { @@ -257,6 +647,17 @@ }, "match": "(\\s*)(\\bCFURLEnumeratorGetSourceDidChange\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.8.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:A(?:TS(?:CreateFontQueryRunLoopSource|Font(?:A(?:ctivateFrom(?:FileReference|Memory)|pplyFunction)|Deactivate|F(?:amily(?:ApplyFunction|FindFrom(?:Name|QuickDrawName)|Get(?:Encoding|Generation|Name|QuickDrawName)|Iterator(?:Create|Next|Re(?:lease|set)))|indFrom(?:Container|Name|PostScriptName))|Get(?:AutoActivationSettingForApplication|Container(?:FromFileReference)?|F(?:ileReference|ontFamilyResource)|G(?:eneration|lobalAutoActivationSetting)|HorizontalMetrics|Name|PostScriptName|Table(?:Directory)?|VerticalMetrics)|I(?:sEnabled|terator(?:Create|Next|Re(?:lease|set)))|Notif(?:ication(?:Subscribe|Unsubscribe)|y)|Set(?:AutoActivationSettingForApplication|Enabled|GlobalAutoActivationSetting))|GetGeneration)|bsolute(?:DeltaTo(?:Duration|Nanoseconds)|To(?:Duration|Nanoseconds))|dd(?:A(?:bsoluteToAbsolute|tomic(?:16|8)?)|CollectionItem(?:Hdl)?|DurationToAbsolute|FolderDescriptor|NanosecondsToAbsolute|Resource))|B(?:atteryCount|it(?:And(?:Atomic(?:16|8)?)?|Clr|Not|Or(?:Atomic(?:16|8)?)?|S(?:et|hift)|Tst|Xor(?:Atomic(?:16|8)?)?))|C(?:S(?:Copy(?:MachineName|UserName)|GetComponentsThreadMode|SetComponentsThreadMode)|a(?:llComponent(?:C(?:anDo|lose)|Dispatch|Function(?:WithStorage(?:ProcInfo)?)?|Get(?:MPWorkFunction|PublicResource)|Open|Register|Target|Unregister|Version)|ptureComponent)|hangedResource|lo(?:neCollection|se(?:Component(?:ResFile)?|ResFile))|o(?:llectionTagExists|mpareAndSwap|pyCollection|reEndian(?:FlipData|GetFlipper|InstallFlipper)|unt(?:1(?:Resources|Types)|Co(?:llection(?:Items|Owners|Tags)|mponent(?:Instances|s))|Resources|T(?:aggedCollectionItems|ypes)))|ur(?:ResFile|rentProcessorSpeed))|D(?:e(?:bugAssert|crementAtomic(?:16|8)?|l(?:ay|e(?:gateComponentCall|teGestaltValue))|queue|t(?:achResource(?:File)?|ermineIfPathIsEnclosedByFolder))|ispose(?:Co(?:llection(?:ExceptionUPP|FlattenUPP)?|mponent(?:FunctionUPP|MPWorkFunctionUPP|RoutineUPP))|De(?:bug(?:AssertOutputHandlerUPP|Component(?:CallbackUPP)?)|ferredTaskUPP)|ExceptionHandlerUPP|F(?:NSubscriptionUPP|SVolume(?:EjectUPP|MountUPP|UnmountUPP)|olderManagerNotificationUPP)|GetMissingComponentResourceUPP|Handle|IOCompletionUPP|Ptr|ResErrUPP|S(?:electorFunctionUPP|peech(?:DoneUPP|ErrorUPP|PhonemeUPP|SyncUPP|TextDoneUPP|WordUPP))|TimerUPP)|urationTo(?:Absolute|Nanoseconds))|E(?:mpty(?:Collection|Handle)|nqueue)|F(?:N(?:GetDirectoryForSubscription|Notify(?:All|ByPath)?|Subscribe(?:ByPath)?|Unsubscribe)|S(?:AllocateFork|C(?:a(?:ncelVolumeOperation|talogSearch)|lose(?:Fork|Iterator)|o(?:mpareFSRefs|py(?:AliasInfo|D(?:ADiskForVolume|iskIDForVolume)|Object(?:Async|Sync)|URLForVolume))|reate(?:DirectoryUnicode|F(?:ile(?:AndOpenForkUnicode|Unicode)|ork)|Res(?:File|ourceF(?:ile|ork))|StringFromHFSUniStr|VolumeOperation))|D(?:e(?:lete(?:Fork|Object)|termineIfRefIsEnclosedByFolder)|isposeVolumeOperation)|E(?:jectVolume(?:Async|Sync)|xchangeObjects)|F(?:i(?:le(?:Operation(?:C(?:ancel|opyStatus|reate)|GetTypeID|ScheduleWithRunLoop|UnscheduleFromRunLoop)|Security(?:C(?:opyAccessControlList|reate(?:WithFSPermissionInfo)?)|Get(?:Group(?:UUID)?|Mode|Owner(?:UUID)?|TypeID)|RefCreateCopy|Set(?:AccessControlList|Group(?:UUID)?|Mode|Owner(?:UUID)?)))|ndFolder)|lush(?:Fork|Volume)|ollowFinderAlias)|Get(?:Async(?:EjectStatus|MountStatus|UnmountStatus)|CatalogInfo(?:Bulk)?|DataForkName|Fork(?:CBInfo|Position|Size)|HFSUniStrFromString|ResourceForkName|TemporaryDirectoryForReplaceObject|Volume(?:ForD(?:ADisk|iskID)|Info|MountInfo(?:Size)?|Parms))|I(?:s(?:AliasFile|FSRefValid)|terateForks)|LockRange|M(?:a(?:keFSRefUnicode|tchAliasBulk)|o(?:unt(?:LocalVolume(?:Async|Sync)|ServerVolume(?:Async|Sync))|veObject(?:Async|Sync|ToTrash(?:Async|Sync))?))|NewAlias(?:FromPath|Minimal(?:Unicode)?|Unicode)?|Open(?:Fork|Iterator|OrphanResFile|Res(?:File|ourceFile))|Path(?:CopyObject(?:Async|Sync)|FileOperationCopyStatus|GetTemporaryDirectoryForReplaceObject|M(?:akeRef(?:WithOptions)?|oveObject(?:Async|Sync|ToTrash(?:Async|Sync)))|ReplaceObject)|Re(?:adFork|fMakePath|nameUnicode|placeObject|so(?:lve(?:Alias(?:File(?:WithMountFlags)?|WithMountFlags)?|NodeID)|urceFileAlreadyOpen))|Set(?:CatalogInfo|Fork(?:Position|Size)|VolumeInfo)|U(?:n(?:l(?:inkObject|ockRange)|mountVolume(?:Async|Sync))|pdateAlias)|VolumeMount|WriteFork)|i(?:nd(?:Folder|NextComponent)|x(?:2(?:Frac|Long|X)|ATan2|Div|Mul|R(?:atio|ound)))|latten(?:Collection(?:ToHdl)?|PartialCollection)|rac(?:2(?:Fix|X)|Cos|Div|Mul|S(?:in|qrt)))|Ge(?:stalt|t(?:1(?:Ind(?:Resource|Type)|NamedResource|Resource)|Alias(?:Size(?:FromPtr)?|UserType(?:FromPtr)?)|C(?:PUSpeed|o(?:llection(?:DefaultAttributes|ExceptionProc|Item(?:Hdl|Info)?|RetainCount)|mponent(?:In(?:dString|fo|stance(?:Error|Storage))|ListModSeed|Public(?:IndString|Resource(?:List)?)|Re(?:fcon|source)|TypeModSeed)))|Debug(?:ComponentInfo|OptionInfo)|Folder(?:NameUnicode|Types)|HandleSize|Ind(?:Resource|Type|exedCollection(?:Item(?:Hdl|Info)?|Tag))|Ma(?:cOSStatus(?:CommentString|ErrorString)|xResourceSize)|N(?:amedResource|e(?:wCollection|xt(?:FOND|ResourceFile)))|PtrSize|Res(?:Attrs|FileAttrs|Info|ource(?:SizeOnDisk)?)|SpeechInfo|T(?:aggedCollectionItem(?:Info)?|opResourceFile)))|H(?:ClrRBit|GetState|Lock(?:Hi)?|Set(?:RBit|State)|Unlock|and(?:AndHand|ToHand)|omeResFile)|I(?:dentifyFolder|n(?:crementAtomic(?:16|8)?|s(?:ertResourceFile|tall(?:DebugAssertOutputHandler|ExceptionHandler))|v(?:alidateFolderDescriptorCache|oke(?:Co(?:llection(?:ExceptionUPP|FlattenUPP)|mponent(?:MPWorkFunctionUPP|RoutineUPP))|De(?:bug(?:AssertOutputHandlerUPP|ComponentCallbackUPP)|ferredTaskUPP)|ExceptionHandlerUPP|F(?:NSubscriptionUPP|SVolume(?:EjectUPP|MountUPP|UnmountUPP)|olderManagerNotificationUPP)|GetMissingComponentResourceUPP|IOCompletionUPP|ResErrUPP|S(?:electorFunctionUPP|peech(?:DoneUPP|ErrorUPP|PhonemeUPP|SyncUPP|TextDoneUPP|WordUPP))|TimerUPP)))|s(?:H(?:andleValid|eapValid)|PointerValid))|L(?:M(?:Get(?:BootDrive|IntlSpec|MemErr|Res(?:Err|Load)|SysMap|TmpResLoad)|Set(?:BootDrive|IntlSpec|MemErr|Res(?:Err|Load)|Sys(?:FontSize|Map)|TmpResLoad))|o(?:adResource|cale(?:CountNames|Get(?:IndName|Name)|Operation(?:CountLocales|GetLocales))|ng2Fix))|M(?:PSetTaskType|aximumProcessorSpeed|emError|i(?:croseconds|nimumProcessorSpeed))|N(?:anosecondsTo(?:Absolute|Duration)|ew(?:Co(?:llection(?:ExceptionUPP|FlattenUPP)?|mponent(?:FunctionUPP|MPWorkFunctionUPP|RoutineUPP))|De(?:bug(?:AssertOutputHandlerUPP|Component(?:CallbackUPP)?|Option)|ferredTaskUPP)|E(?:mptyHandle|xceptionHandlerUPP)|F(?:NSubscriptionUPP|SVolume(?:EjectUPP|MountUPP|UnmountUPP)|olderManagerNotificationUPP)|Ge(?:staltValue|tMissingComponentResourceUPP)|Handle(?:Clear)?|IOCompletionUPP|Ptr(?:Clear)?|ResErrUPP|S(?:electorFunctionUPP|peech(?:DoneUPP|ErrorUPP|PhonemeUPP|SyncUPP|TextDoneUPP|WordUPP))|TimerUPP))|Open(?:A(?:Component(?:ResFile)?|DefaultComponent)|Component(?:ResFile)?|DefaultComponent)|P(?:B(?:AllocateFork(?:Async|Sync)|C(?:atalogSearch(?:Async|Sync)|lose(?:Fork(?:Async|Sync)|Iterator(?:Async|Sync))|ompareFSRefs(?:Async|Sync)|reate(?:DirectoryUnicode(?:Async|Sync)|F(?:ile(?:AndOpenForkUnicode(?:Async|Sync)|Unicode(?:Async|Sync))|ork(?:Async|Sync))))|Delete(?:Fork(?:Async|Sync)|Object(?:Async|Sync))|ExchangeObjects(?:Async|Sync)|F(?:S(?:CopyFile(?:Async|Sync)|ResolveNodeID(?:Async|Sync))|lush(?:Fork(?:Async|Sync)|Volume(?:Async|Sync)))|Get(?:CatalogInfo(?:Async|Bulk(?:Async|Sync)|Sync)|Fork(?:CBInfo(?:Async|Sync)|Position(?:Async|Sync)|Size(?:Async|Sync))|VolumeInfo(?:Async|Sync))|IterateForks(?:Async|Sync)|M(?:akeFSRefUnicode(?:Async|Sync)|oveObject(?:Async|Sync))|Open(?:Fork(?:Async|Sync)|Iterator(?:Async|Sync))|Re(?:adFork(?:Async|Sync)|nameUnicode(?:Async|Sync))|Set(?:CatalogInfo(?:Async|Sync)|Fork(?:Position(?:Async|Sync)|Size(?:Async|Sync))|VolumeInfo(?:Async|Sync))|UnlinkObject(?:Async|Sync)|WriteFork(?:Async|Sync)|X(?:LockRange(?:Async|Sync)|UnlockRange(?:Async|Sync)))|tr(?:AndHand|To(?:Hand|XHand))|urgeCollection(?:Tag)?)|Re(?:a(?:d(?:Location|PartialResource)|llocateHandle)|coverHandle|gisterComponent(?:FileRef(?:Entries)?|Resource(?:File)?)?|lease(?:Collection|Resource)|move(?:CollectionItem|FolderDescriptor|IndexedCollectionItem|Resource)|place(?:GestaltValue|IndexedCollectionItem(?:Hdl)?)|s(?:Error|olveComponentAlias)|tainCollection)|S(?:64Compare|SL(?:GetProtocolVersion|SetProtocolVersion)|e(?:cTranformCustomGetAttribute|t(?:AliasUserType(?:WithPtr)?|Co(?:llection(?:DefaultAttributes|ExceptionProc|ItemInfo)|mponent(?:Instance(?:Error|Storage)|Refcon))|De(?:bugOptionValue|faultComponent)|GestaltValue|HandleSize|IndexedCollectionItemInfo|PtrSize|Res(?:Attrs|FileAttrs|Info|Load|Purge|ourceSize)|SpeechInfo))|leepQ(?:Install|Remove)|peak(?:Buffer|String|Text)|ub(?:AbsoluteFromAbsolute|DurationFromAbsolute|NanosecondsFromAbsolute)|ysError)|T(?:askLevel|e(?:mpNewHandle|stAnd(?:Clear|Set)|xtToPhonemes)|ickCount)|U(?:64Compare|n(?:captureComponent|flattenCollection(?:FromHdl)?|ique(?:1ID|ID)|registerComponent|signedFixedMulDiv)|p(?:Time|date(?:ResFile|SystemActivity))|se(?:Dictionary|ResFile))|W(?:S(?:Get(?:CFTypeIDFromWSTypeID|WSTypeIDFromCFType)|Method(?:Invocation(?:Add(?:DeserializationOverride|SerializationOverride)|C(?:opy(?:P(?:arameters|roperty)|Serialization)|reate(?:FromSerialization)?)|GetTypeID|Invoke|S(?:cheduleWithRunLoop|et(?:CallBack|P(?:arameters|roperty)))|UnscheduleFromRunLoop)|ResultIsFault)|ProtocolHandler(?:C(?:opy(?:FaultDocument|Property|Re(?:plyD(?:ictionary|ocument)|questD(?:ictionary|ocument)))|reate)|GetTypeID|Set(?:DeserializationOverride|Property|SerializationOverride)))|ide(?:Add|BitShift|Compare|Divide|Multiply|Negate|S(?:hift|quareRoot|ubtract)|WideDivide)|rite(?:PartialResource|Resource))|X2F(?:ix|rac)|annuity|compound|d(?:ec2(?:f|l|num|s(?:tr)?)|tox80)|getaudit|num(?:2dec|tostring)|r(?:andomx|elation)|s(?:etaudit|tr2dec)|x80tod)\\b)" + }, { "captures": { "1": { @@ -290,6 +691,17 @@ }, "match": "(\\s*)(\\bCG(?:Re(?:gisterScreenRefreshCallback|leaseScreenRefreshRects)|Screen(?:RegisterMoveCallback|UnregisterMoveCallback)|UnregisterScreenRefreshCallback|W(?:aitForScreen(?:RefreshRects|UpdateRects)|indowServerCFMachPort))\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.10.9.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:AX(?:APIEnabled|MakeProcessTrusted|UIElementPostKeyboardEvent)|CopyProcessName|ExitToShell|Get(?:CurrentProcess|FrontProcess|NextProcess|Process(?:BundleLocation|ForPID|Information|PID))|IsProcessVisible|KillProcess|LaunchApplication|ProcessInformationCopyDictionary|S(?:SL(?:Copy(?:PeerCertificates|TrustedRoots)|DisposeContext|Get(?:Allows(?:AnyRoot|Expired(?:Certs|Roots))|EnableCertVerify|ProtocolVersionEnabled|RsaBlinding)|NewContext|Set(?:Allows(?:AnyRoot|Expired(?:Certs|Roots))|EnableCertVerify|ProtocolVersionEnabled|RsaBlinding|TrustedRoots))|ameProcess|e(?:c(?:ChooseIdentity(?:AsSheet)?|DisplayCertificate(?:Group)?|EditTrust(?:AsSheet)?|Policy(?:CreateWithOID|SetProperties))|tFrontProcess(?:WithOptions)?)|howHideProcess)|WakeUpProcess)\\b)" + }, { "captures": { "1": { @@ -334,6 +746,116 @@ }, "match": "(\\s*)(\\bCG(?:C(?:ontextS(?:electFont|how(?:Glyphs(?:AtPoint|WithAdvances)?|Text(?:AtPoint)?))|ursorIs(?:DrawnInFramebuffer|Visible))|Display(?:FadeOperationInProgress|I(?:OServicePort|sCaptured)))\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "invalid.deprecated.tba.support.function.c" + } + }, + "match": "(\\s*)(\\b(?:AUGraph(?:Add(?:Node|RenderNotify)|C(?:l(?:earConnections|ose)|o(?:nnectNodeInput|untNodeInteractions))|DisconnectNodeInput|Get(?:CPULoad|In(?:dNode|teractionInfo)|MaxCPULoad|N(?:ode(?:Count|In(?:foSubGraph|teractions))|umberOfInteractions))|I(?:nitialize|s(?:Initialized|NodeSubGraph|Open|Running))|N(?:ewNodeSubGraph|odeInfo)|Open|Remove(?:Node|RenderNotify)|S(?:etNodeInputCallback|t(?:art|op))|U(?:ninitialize|pdate))|DisposeAUGraph|NewAUGraph|QL(?:PreviewRequest(?:C(?:opy(?:ContentUTI|Options|URL)|reate(?:Context|PDFContext))|FlushContext|Get(?:DocumentObject|GeneratorBundle|TypeID)|IsCancelled|Set(?:D(?:ataRepresentation|ocumentObject)|URLRepresentation))|Thumbnail(?:C(?:ancel|opy(?:DocumentURL|Image|Options)|reate)|DispatchAsync|Get(?:ContentRect|MaximumSize|TypeID)|IsCancelled|Request(?:C(?:opy(?:ContentUTI|Options|URL)|reateContext)|FlushContext|Get(?:DocumentObject|GeneratorBundle|MaximumSize|TypeID)|IsCancelled|Set(?:DocumentObject|Image(?:AtURL|WithData)?|ThumbnailWith(?:DataRepresentation|URLRepresentation))))))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.10.10.c" + } + }, + "match": "(\\s*)(\\b(?:C(?:GLGetDeviceFromGLRenderer|MS(?:DecoderCopySignerTimestampWithPolicy|EncoderCopySignerTimestampWithPolicy)|TRubyAnnotation(?:Create(?:Copy)?|Get(?:Alignment|Overhang|SizeFactor|T(?:extForPosition|ypeID))))|JSGlobalContext(?:CopyName|SetName)|LSCopy(?:ApplicationURLsForBundleIdentifier|DefaultApplicationURLFor(?:ContentType|URL))|SecAccessControl(?:CreateWithFlags|GetTypeID)|UTType(?:CopyAllTagsWithClass|IsD(?:eclared|ynamic))|launch_activate_socket|os_re(?:lease|tain)|qos_class_(?:main|self)|simd_inverse)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.10.11.c" + } + }, + "match": "(\\s*)(\\b(?:Audio(?:ComponentInstantiate|ServicesPlay(?:AlertSoundWithCompletion|SystemSoundWithCompletion))|C(?:MSEncoderSetSignerAlgorithm|T(?:LineEnumerateCaretOffsets|RunGetBaseAdvancesAndOrigins))|IORegistryEntryCopy(?:FromPath|Path)|JSValueIs(?:Array|Date)|MIDI(?:ClientCreateWithBlock|DestinationCreateWithBlock|InputPortCreateWithBlock)|connectx|disconnectx|xpc_(?:array_get_(?:array|dictionary)|dictionary_get_(?:array|dictionary)))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.10.12.c" + } + }, + "match": "(\\s*)(\\b(?:CTRubyAnnotationCreateWithAttributes|IOSurface(?:AllowsPixelSizeCasting|SetPurgeable)|JS(?:Object(?:Get(?:ArrayBufferByte(?:Length|sPtr)|TypedArray(?:B(?:uffer|yte(?:Length|Offset|sPtr))|Length))|Make(?:ArrayBufferWithBytesNoCopy|TypedArray(?:With(?:ArrayBuffer(?:AndOffset)?|BytesNoCopy))?))|ValueGetTypedArrayType)|MDItemsCopyAttributes|Sec(?:CertificateCopyNormalized(?:IssuerSequence|SubjectSequence)|Key(?:C(?:opy(?:Attributes|ExternalRepresentation|KeyExchangeResult|PublicKey)|reate(?:DecryptedData|EncryptedData|RandomKey|Signature|WithData))|IsAlgorithmSupported|VerifySignature))|os_(?:log_(?:create|type_enabled)|unfair_lock_(?:assert_(?:not_owner|owner)|lock|trylock|unlock))|xpc_connection_activate)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.10.13.c" + } + }, + "match": "(\\s*)(\\b(?:AudioUnitExtension(?:CopyComponentList|SetComponentList)|C(?:GImage(?:DestinationAddAuxiliaryDataInfo|SourceCopyAuxiliaryDataInfoAtIndex)|TFontManagerCreateFontDescriptorsFromData|V(?:ColorPrimariesGet(?:IntegerCodePointForString|StringForIntegerCodePoint)|TransferFunctionGet(?:IntegerCodePointForString|StringForIntegerCodePoint)|YCbCrMatrixGet(?:IntegerCodePointForString|StringForIntegerCodePoint)))|IOSurfaceGet(?:Bit(?:DepthOfComponentOfPlane|OffsetOfComponentOfPlane)|N(?:ameOfComponentOfPlane|umberOfComponentsOfPlane)|RangeOfComponentOfPlane|Subsampling|TypeOfComponentOfPlane)|SecCertificateCopySerialNumberData)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.10.14.c" + } + }, + "match": "(\\s*)(\\b(?:AEDeterminePermissionToAutomateTarget|C(?:GImageSourceGetPrimaryImageIndex|TFramesetterCreateWithTypesetter)|Sec(?:CertificateCopyKey|Trust(?:EvaluateWithError|SetSignedCertificateTimestamps))|sec_(?:certificate_c(?:opy_ref|reate)|identity_c(?:opy_(?:certificates_ref|ref)|reate(?:_with_certificates)?)|protocol_(?:metadata_(?:access_(?:distinguished_names|ocsp_response|peer_certificate_chain|supported_signature_algorithms)|c(?:hallenge_parameters_are_equal|opy_peer_public_key|reate_secret(?:_with_context)?)|get_(?:early_data_accepted|negotiated_(?:protocol|tls_ciphersuite)|server_name)|peers_are_equal)|options_(?:add_(?:pre_shared_key|tls_application_protocol)|set_(?:challenge_block|key_update_block|local_identity|peer_authentication_required|tls_(?:false_start_enabled|is_fallback_attempt|ocsp_enabled|re(?:negotiation_enabled|sumption_enabled)|s(?:ct_enabled|erver_name)|tickets_enabled)|verify_block)))|trust_c(?:opy_ref|reate)))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.10.15.c" + } + }, + "match": "(\\s*)(\\b(?:C(?:GAnimateImage(?:AtURLWithBlock|DataWithBlock)|T(?:FontManager(?:RegisterFont(?:Descriptors|URLs)|UnregisterFont(?:Descriptors|URLs))|GlyphInfoGetGlyph))|JS(?:Object(?:DeletePropertyForKey|GetPropertyForKey|HasPropertyForKey|MakeDeferredPromise|SetPropertyForKey)|Value(?:IsSymbol|MakeSymbol))|SecTrustEvaluateAsyncWithError|aligned_alloc|sec_(?:identity_access_certificates|protocol_(?:metadata_(?:access_pre_shared_keys|get_negotiated_tls_protocol_version)|options_(?:a(?:ppend_tls_ciphersuite(?:_group)?|re_equal)|get_default_m(?:ax_(?:dtls_protocol_version|tls_protocol_version)|in_(?:dtls_protocol_version|tls_protocol_version))|set_(?:m(?:ax_tls_protocol_version|in_tls_protocol_version)|pre_shared_key_selection_block|tls_pre_shared_key_identity_hint))))|xpc_type_get_name)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.10.8.c" + } + }, + "match": "(\\s*)(\\b(?:A(?:ECompareDesc|udioQueueProcessingTapGetQueueTime)|C(?:GImage(?:Destination(?:AddImageAndMetadata|CopyImageSource)|Metadata(?:C(?:opy(?:StringValueWithPath|Tag(?:MatchingImageProperty|WithPath|s))|reate(?:FromXMPData|Mutable(?:Copy)?|XMPData))|EnumerateTagsUsingBlock|Re(?:gisterNamespaceForPrefix|moveTagWithPath)|Set(?:TagWithPath|Value(?:MatchingImageProperty|WithPath))|Tag(?:C(?:opy(?:Name(?:space)?|Prefix|Qualifiers|Value)|reate)|GetType(?:ID)?))|SourceCopyMetadataAtIndex)|MS(?:DecoderCopySigner(?:SigningTime|Timestamp(?:Certificates)?)|EncoderCopySignerTimestamp)|T(?:Font(?:CopyDefaultCascadeListForLanguages|GetOpticalBoundsForGlyphs|Manager(?:RegisterGraphicsFont|UnregisterGraphicsFont))|LineGetBoundsWithOptions)|VImageBufferCreateColorSpaceFromAttachments|opyInstrumentInfoFromSoundBank))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.10.9.c" + } + }, + "match": "(\\s*)(\\b(?:A(?:XIsProcessTrustedWithOptions|udioHardware(?:CreateAggregateDevice|DestroyAggregateDevice))|C(?:GImageSourceRemoveCacheAtIndex|TFont(?:CreateForStringWithLanguage|Descriptor(?:CreateCopyWith(?:Family|SymbolicTraits)|MatchFontDescriptorsWithProgressHandler)))|FSEventStreamSetExclusionPaths|Sec(?:PolicyCreate(?:Revocation|WithProperties)|Trust(?:Copy(?:Exceptions|Result)|GetNetworkFetchAllowed|Set(?:Exceptions|NetworkFetchAllowed|OCSPResponse)))|xpc_activity_(?:copy_criteria|get_state|register|s(?:et_(?:criteria|state)|hould_defer)|unregister))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.c" + } + }, + "match": "(\\s*)(\\b(?:A(?:E(?:Build(?:AppleEvent|Desc|Parameters)|C(?:allObjectAccessor|heckIsRecord|o(?:erce(?:Desc|Ptr)|untItems)|reate(?:AppleEvent|Desc(?:FromExternalPtr)?|List|RemoteProcessResolver))|D(?:e(?:codeMessage|lete(?:Item|Param))|ispose(?:Desc|RemoteProcessResolver|Token)|uplicateDesc)|FlattenDesc|Get(?:A(?:rray|ttribute(?:Desc|Ptr))|CoercionHandler|DescData(?:Range|Size)?|EventHandler|InteractionAllowed|Nth(?:Desc|Ptr)|ObjectAccessor|Param(?:Desc|Ptr)|RegisteredMachPort|SpecialHandler|TheCurrentEvent)|In(?:itializeDesc|stall(?:CoercionHandler|EventHandler|ObjectAccessor|SpecialHandler)|teractWithUser)|ManagerInfo|ObjectInit|P(?:r(?:intDescToHandle|ocess(?:AppleEvent|Event|Message))|ut(?:A(?:rray|ttribute(?:Desc|Ptr))|Desc|P(?:aram(?:Desc|Ptr)|tr)))|Re(?:mo(?:teProcessResolver(?:GetProcesses|ScheduleWithRunLoop)|ve(?:CoercionHandler|EventHandler|ObjectAccessor|SpecialHandler))|placeDescData|s(?:etTimer|olve|umeTheCurrentEvent))|S(?:e(?:nd(?:Message)?|t(?:InteractionAllowed|ObjectCallbacks|TheCurrentEvent))|izeOf(?:Attribute|FlattenedDesc|NthItem|Param)|tream(?:C(?:lose(?:Desc|List|Record)?|reateEvent)|Op(?:en(?:Desc|Event|KeyDesc|List|Record)?|tionalParam)|SetRecordType|Write(?:AEDesc|D(?:ata|esc)|Key(?:Desc)?))|uspendTheCurrentEvent)|UnflattenDesc)|H(?:GotoPage|LookupAnchor|RegisterHelpBookWithURL|Search)|S(?:CopySourceAttributes|GetSourceStyleNames|Init|SetSourceAttributes)|U(?:EventListener(?:AddEventType|Create(?:WithDispatchQueue)?|Notify|RemoveEventType)|Listener(?:AddParameter|Create(?:WithDispatchQueue)?|Dispose|RemoveParameter)|Parameter(?:FormatValue|ListenerNotify|Set|Value(?:FromLinear|ToLinear)))|X(?:IsProcessTrusted|Observer(?:AddNotification|Create(?:WithInfoCallback)?|Get(?:RunLoopSource|TypeID)|RemoveNotification)|UIElement(?:C(?:opy(?:A(?:ction(?:Description|Names)|ttribute(?:Names|Value(?:s)?))|ElementAtPosition|MultipleAttributeValues|ParameterizedAttribute(?:Names|Value))|reate(?:Application|SystemWide))|Get(?:AttributeValueCount|Pid|TypeID)|IsAttributeSettable|PerformAction|Set(?:AttributeValue|MessagingTimeout))|Value(?:Create|Get(?:Type(?:ID)?|Value)))|cquireFirstMatchingEventInQueue|ddEventTypesToHandler|u(?:dio(?:C(?:hannelLayoutTag_GetNumberOfChannels|o(?:dec(?:AppendInput(?:BufferList|Data)|GetProperty(?:Info)?|Initialize|ProduceOutput(?:BufferList|Packets)|Reset|SetProperty|Uninitialize)|mponent(?:Co(?:py(?:ConfigurationInfo|Name)|unt)|FindNext|Get(?:Description|Version)|Instance(?:CanDo|Dispose|GetComponent|New)|Register|Validate)|nverter(?:Convert(?:Buffer|ComplexBuffer)|Dispose|FillComplexBuffer|GetProperty(?:Info)?|New(?:Specific)?|Reset|SetProperty)))|Device(?:CreateIOProcID(?:WithBlock)?|DestroyIOProcID|Get(?:CurrentTime|NearestStartTime)|St(?:art(?:AtTime)?|op)|TranslateTime)|F(?:ile(?:C(?:lose|o(?:mponent(?:C(?:loseFile|ountUserData|reateURL)|ExtensionIsThisFormat|FileDataIsThisFormat|Get(?:GlobalInfo(?:Size)?|Property(?:Info)?|UserData(?:Size)?)|InitializeWithCallbacks|Op(?:en(?:URL|WithCallbacks)|timize)|Re(?:ad(?:Bytes|Packet(?:Data|s))|moveUserData)|Set(?:Property|UserData)|Write(?:Bytes|Packets))|untUserData)|reateWithURL)|Get(?:GlobalInfo(?:Size)?|Property(?:Info)?|UserData(?:Size)?)|InitializeWithCallbacks|Op(?:en(?:URL|WithCallbacks)|timize)|Re(?:ad(?:Bytes|PacketData)|moveUserData)|S(?:et(?:Property|UserData)|tream(?:Close|GetProperty(?:Info)?|Open|ParseBytes|Se(?:ek|tProperty)))|Write(?:Bytes|Packets))|ormatGetProperty(?:Info)?)|HardwareUnload|O(?:bject(?:AddPropertyListener(?:Block)?|GetPropertyData(?:Size)?|HasProperty|IsPropertySettable|RemovePropertyListener(?:Block)?|S(?:etPropertyData|how))|utputUnitSt(?:art|op))|Queue(?:A(?:ddPropertyListener|llocateBuffer(?:WithPacketDescriptions)?)|CreateTimeline|D(?:evice(?:Get(?:CurrentTime|NearestStartTime)|TranslateTime)|ispose(?:Timeline)?)|EnqueueBuffer(?:WithParameters)?|F(?:lush|reeBuffer)|Get(?:CurrentTime|P(?:arameter|roperty(?:Size)?))|New(?:Input(?:WithDispatchQueue)?|Output(?:WithDispatchQueue)?)|OfflineRender|P(?:ause|r(?:ime|ocessingTap(?:Dispose|GetSourceAudio|New)))|Re(?:movePropertyListener|set)|S(?:et(?:OfflineRenderFormat|P(?:arameter|roperty))|t(?:art|op)))|Services(?:AddSystemSoundCompletion|CreateSystemSoundID|DisposeSystemSoundID|GetProperty(?:Info)?|Play(?:AlertSound|SystemSound)|RemoveSystemSoundCompletion|SetProperty)|Unit(?:Add(?:PropertyListener|RenderNotify)|GetP(?:arameter|roperty(?:Info)?)|Initialize|Process(?:Multiple)?|Re(?:move(?:PropertyListenerWithUserData|RenderNotify)|nder|set)|S(?:cheduleParameters|etP(?:arameter|roperty))|Uninitialize))|thorization(?:C(?:opy(?:Info|Rights(?:Async)?)|reate(?:FromExternalForm)?)|Free(?:ItemSet)?|MakeExternalForm|Right(?:Get|Remove|Set))))|C(?:A(?:C(?:lock(?:A(?:ddListener|rm)|B(?:arBeatTimeToBeats|eatsToBarBeatTime)|Dis(?:arm|pose)|Get(?:CurrentT(?:empo|ime)|P(?:layRate|roperty(?:Info)?)|StartTime)|New|ParseMIDI|RemoveListener|S(?:MPTETimeToSeconds|e(?:condsToSMPTETime|t(?:CurrentT(?:empo|ime)|P(?:layRate|roperty)))|t(?:art|op))|TranslateTime)|urrentMediaTime)|Show(?:File)?|Transform3D(?:Concat|EqualToTransform|GetAffineTransform|I(?:nvert|s(?:Affine|Identity))|Make(?:AffineTransform|Rotation|Scale|Translation)|Rotate|Scale|Translate))|C_SHA(?:1(?:_(?:Final|Init|Update))?|2(?:24(?:_(?:Final|Init|Update))?|56(?:_(?:Final|Init|Update))?)|384(?:_(?:Final|Init|Update))?|512(?:_(?:Final|Init|Update))?)|F(?:H(?:TTP(?:Authentication(?:AppliesToRequest|C(?:opy(?:Domains|Method|Realm)|reateFromResponse)|GetTypeID|IsValid|Requires(?:AccountDomain|OrderedRequests|UserNameAndPassword))|Message(?:A(?:ddAuthentication|pp(?:endBytes|lyCredential(?:Dictionary|s)))|C(?:opy(?:AllHeaderFields|Body|HeaderFieldValue|Re(?:quest(?:Method|URL)|sponseStatusLine)|SerializedMessage|Version)|reate(?:Copy|Empty|Re(?:quest|sponse)))|Get(?:ResponseStatusCode|TypeID)|Is(?:HeaderComplete|Request)|Set(?:Body|HeaderFieldValue)))|ost(?:C(?:ancelInfoResolution|reate(?:Copy|With(?:Address|Name)))|Get(?:Addressing|Names|Reachability|TypeID)|S(?:cheduleWithRunLoop|etClient|tartInfoResolution)|UnscheduleFromRunLoop))|Net(?:Service(?:Browser(?:Create|GetTypeID|Invalidate|S(?:cheduleWithRunLoop|earchFor(?:Domains|Services)|topSearch)|UnscheduleFromRunLoop)|C(?:ancel|reate(?:Copy|DictionaryWithTXTData|TXTDataWithDictionary)?)|Get(?:Addressing|Domain|Name|PortNumber|T(?:XTData|argetHost|ype(?:ID)?))|Monitor(?:Create|GetTypeID|Invalidate|S(?:cheduleWithRunLoop|t(?:art|op))|UnscheduleFromRunLoop)|Re(?:gisterWithOptions|solveWithTimeout)|S(?:cheduleWithRunLoop|et(?:Client|TXTData))|UnscheduleFromRunLoop)|work(?:Copy(?:ProxiesFor(?:AutoConfigurationScript|URL)|SystemProxySettings)|ExecuteProxyAutoConfiguration(?:Script|URL)))|S(?:ocketStreamSOCKSGetError(?:Subdomain)?|treamCreatePairWithSocketTo(?:CFHost|NetService)))|G(?:Display(?:CreateUUIDFromDisplayID|GetDisplayIDFromUUID)|Image(?:Destination(?:AddImage(?:FromSource)?|C(?:opyTypeIdentifiers|reateWith(?:Data(?:Consumer)?|URL))|Finalize|GetTypeID|SetProperties)|MetadataGetTypeID|Source(?:C(?:opy(?:Properties(?:AtIndex)?|TypeIdentifiers)|reate(?:I(?:mageAtIndex|ncremental)|ThumbnailAtIndex|With(?:Data(?:Provider)?|URL)))|Get(?:Count|Status(?:AtIndex)?|Type(?:ID)?)|UpdateData(?:Provider)?))|L(?:C(?:hoosePixelFormat|learDrawable|opyContext|reate(?:Context|PBuffer))|D(?:es(?:cribe(?:P(?:Buffer|ixelFormat)|Renderer)|troy(?:Context|P(?:Buffer|ixelFormat)|RendererInfo))|isable)|E(?:nable|rrorString)|FlushDrawable|Get(?:C(?:ontextRetainCount|urrentContext)|GlobalOption|O(?:ffScreen|ption)|P(?:Buffer(?:RetainCount)?|arameter|ixelFormat(?:RetainCount)?)|ShareGroup|V(?:ersion|irtualScreen))|IsEnabled|LockContext|QueryRendererInfo|Re(?:lease(?:Context|P(?:Buffer|ixelFormat))|tain(?:Context|P(?:Buffer|ixelFormat)))|Set(?:CurrentContext|FullScreen(?:OnDisplay)?|GlobalOption|O(?:ffScreen|ption)|P(?:Buffer|arameter)|VirtualScreen)|TexImage(?:IOSurface2D|PBuffer)|U(?:nlockContext|pdateContext)))|M(?:CalibrateDisplay|Plugin(?:ExamineContext|HandleSelection|PostMenuCleanup)|S(?:Decoder(?:C(?:opy(?:AllCerts|Content|DetachedContent|EncapsulatedContentType|Signer(?:Cert|EmailAddress|Status))|reate)|FinalizeMessage|Get(?:NumSigners|TypeID)|IsContentEncrypted|SetDetachedContent|UpdateMessage)|Encode(?:Content|r(?:Add(?:Recipients|S(?:igne(?:dAttributes|rs)|upportingCerts))|C(?:opy(?:Enc(?:apsulatedContentType|odedContent)|Recipients|S(?:igners|upportingCerts))|reate)|Get(?:CertificateChainMode|HasDetachedContent|TypeID)|Set(?:CertificateChainMode|EncapsulatedContentTypeOID|HasDetachedContent)|UpdateContent))))|S(?:Backup(?:IsItemExcluded|SetItemExcluded)|DiskSpace(?:CancelRecovery|GetRecoveryEstimate|StartRecovery)|Get(?:DefaultIdentityAuthority|LocalIdentityAuthority|ManagedIdentityAuthority)|Identity(?:A(?:dd(?:Alias|Member)|uth(?:enticateUsingPassword|ority(?:CopyLocalizedName|GetTypeID)))|C(?:ommit(?:Asynchronously)?|reate(?:Copy|GroupMembershipQuery|PersistentReference)?)|Delete|Get(?:A(?:liases|uthority)|C(?:ertificate|lass)|EmailAddress|FullName|Image(?:Data(?:Type)?|URL)|Posix(?:ID|Name)|TypeID|UUID)|Is(?:Committing|Enabled|Hidden|MemberOfGroup)|Query(?:C(?:opyResults|reate(?:For(?:CurrentUser|Name|P(?:ersistentReference|osixID)|UUID))?)|Execute(?:Asynchronously)?|GetTypeID|Stop)|Remove(?:Alias|Client|Member)|Set(?:Certificate|EmailAddress|FullName|I(?:mage(?:Data|URL)|sEnabled)|Password)))|T(?:F(?:ont(?:C(?:o(?:llection(?:C(?:opy(?:ExclusionDescriptors|FontAttribute(?:s)?|QueryDescriptors)|reate(?:CopyWithFontDescriptors|FromAvailableFonts|M(?:atchingFontDescriptors(?:ForFamily|SortedWithCallback|WithOptions)?|utableCopy)|WithFontDescriptors))|GetTypeID|Set(?:ExclusionDescriptors|QueryDescriptors))|py(?:A(?:ttribute|vailableTables)|CharacterSet|DisplayName|F(?:amilyName|eature(?:Settings|s)|ontDescriptor|ullName)|GraphicsFont|LocalizedName|Name|PostScriptName|SupportedLanguages|T(?:able|raits)|Variation(?:Axes)?))|reate(?:CopyWith(?:Attributes|Family|SymbolicTraits)|ForString|PathForGlyph|UIFontForLanguage|With(?:FontDescriptor(?:AndOptions)?|GraphicsFont|Name(?:AndOptions)?|PlatformFont)))|D(?:escriptor(?:C(?:opy(?:Attribute(?:s)?|LocalizedAttribute)|reate(?:CopyWith(?:Attributes|Feature|Variation)|MatchingFontDescriptor(?:s)?|With(?:Attributes|NameAndSize)))|GetTypeID)|rawGlyphs)|Get(?:A(?:dvancesForGlyphs|scent)|Bounding(?:Box|RectsForGlyphs)|CapHeight|Descent|Glyph(?:Count|WithName|sForCharacters)|L(?:eading|igatureCaretPositions)|Matrix|PlatformFont|S(?:ize|lantAngle|tringEncoding|ymbolicTraits)|TypeID|Un(?:derline(?:Position|Thickness)|itsPerEm)|VerticalTranslationsForGlyphs|XHeight)|Manager(?:C(?:o(?:mpareFontFamilyNames|py(?:Available(?:Font(?:FamilyNames|URLs)|PostScriptNames)|RegisteredFontDescriptors))|reateFont(?:Descriptor(?:FromData|sFromURL)|RequestRunLoopSource))|EnableFontDescriptors|Get(?:AutoActivationSetting|ScopeForURL)|IsSupportedFont|Re(?:gisterFonts(?:ForURL|WithAssetNames)|questFonts)|SetAutoActivationSetting|UnregisterFontsForURL))|rame(?:Draw|Get(?:FrameAttributes|Line(?:Origins|s)|Path|StringRange|TypeID|VisibleStringRange)|setter(?:Create(?:Frame|WithAttributedString)|GetType(?:ID|setter)|SuggestFrameSizeWithConstraints)))|G(?:etCoreTextVersion|lyphInfo(?:CreateWith(?:CharacterIdentifier|Glyph(?:Name)?)|Get(?:Character(?:Collection|Identifier)|GlyphName|TypeID)))|Line(?:Create(?:JustifiedLine|TruncatedLine|WithAttributedString)|Draw|Get(?:Glyph(?:Count|Runs)|ImageBounds|OffsetForStringIndex|PenOffsetForFlush|String(?:IndexForPosition|Range)|T(?:railingWhitespaceWidth|yp(?:eID|ographicBounds))))|ParagraphStyle(?:Create(?:Copy)?|Get(?:TypeID|ValueForSpecifier))|Run(?:D(?:elegate(?:Create|Get(?:RefCon|TypeID))|raw)|Get(?:A(?:dvances(?:Ptr)?|ttributes)|Glyph(?:Count|s(?:Ptr)?)|ImageBounds|Positions(?:Ptr)?|St(?:atus|ring(?:Indices(?:Ptr)?|Range))|T(?:extMatrix|yp(?:eID|ographicBounds))))|T(?:extTab(?:Create|Get(?:Alignment|Location|Options|TypeID))|ypesetter(?:Create(?:Line(?:WithOffset)?|WithAttributedString(?:AndOptions)?)|GetTypeID|Suggest(?:ClusterBreak(?:WithOffset)?|LineBreak(?:WithOffset)?))))|V(?:Buffer(?:GetAttachment(?:s)?|PropagateAttachments|Re(?:lease|moveA(?:llAttachments|ttachment)|tain)|SetAttachment(?:s)?)|DisplayLink(?:CreateWith(?:ActiveCGDisplays|CGDisplay(?:s)?|OpenGLDisplayMask)|Get(?:ActualOutputVideoRefreshPeriod|Current(?:CGDisplay|Time)|NominalOutputVideoRefreshPeriod|OutputVideoLatency|TypeID)|IsRunning|Re(?:lease|tain)|S(?:et(?:CurrentCGDisplay(?:FromOpenGLContext)?|Output(?:Callback|Handler))|t(?:art|op))|TranslateTime)|Get(?:CurrentHostTime|HostClock(?:Frequency|MinimumTimeDelta))|ImageBuffer(?:Get(?:C(?:leanRect|olorSpace)|DisplaySize|EncodedSize)|IsFlipped)|Pixel(?:Buffer(?:Create(?:ResolvedAttributesDictionary|With(?:Bytes|IOSurface|PlanarBytes))?|FillExtendedPixels|Get(?:B(?:aseAddress(?:OfPlane)?|ytesPerRow(?:OfPlane)?)|DataSize|ExtendedPixels|Height(?:OfPlane)?|IOSurface|P(?:ixelFormatType|laneCount)|TypeID|Width(?:OfPlane)?)|IsPlanar|LockBaseAddress|Pool(?:Create(?:PixelBuffer(?:WithAuxAttributes)?)?|Flush|Get(?:Attributes|PixelBufferAttributes|TypeID)|Re(?:lease|tain))|Re(?:lease|tain)|UnlockBaseAddress)|FormatDescription(?:ArrayCreateWithAllPixelFormatTypes|CreateWithPixelFormatType|RegisterDescriptionWithPixelFormatType)))|allNextEventHandler|h(?:ange(?:TextToUnicodeInfo|UnicodeToTextInfo)|eckEventQueueForUserCancel)|o(?:lorSync(?:C(?:MM(?:C(?:opy(?:CMMIdentifier|LocalizedName)|reate)|Get(?:Bundle|TypeID))|reateCodeFragment)|Device(?:CopyDeviceInfo|SetCustomProfiles)|Iterate(?:DeviceProfiles|Installed(?:CMMs|Profiles))|Profile(?:C(?:o(?:ntainsTag|py(?:D(?:ata|escriptionString)|Header|Tag(?:Signatures)?))|reate(?:D(?:eviceProfile|isplayTransferTablesFromVCGT)|Link|Mutable(?:Copy)?|With(?:DisplayID|Name|URL))?)|EstimateGamma(?:WithDisplayID)?|Get(?:DisplayTransferFormulaFromVCGT|MD5|TypeID|URL)|Install|RemoveTag|Set(?:Header|Tag)|Uninstall|Verify)|RegisterDevice|Transform(?:C(?:o(?:nvert|pyProperty)|reate)|GetTypeID|SetProperty)|UnregisterDevice)|n(?:tinueSpeech|vertFrom(?:PStringToUnicode|TextToUnicode|UnicodeTo(?:PString|ScriptCodeRun|Text(?:Run)?)))|py(?:Event(?:As|CGEvent)?|NameFromSoundBank|PhonemesFromText|S(?:peechProperty|ymbolicHotKeys)|ThemeIdentifier)|unt(?:UnicodeMappings|Voices))|reate(?:CompDescriptor|Event(?:WithCGEvent)?|LogicalDescriptor|O(?:bjSpecifier|ffsetDescriptor)|RangeDescriptor|Text(?:Encoding|ToUnicodeInfo(?:ByEncoding)?)|UnicodeToText(?:Info(?:ByEncoding)?|RunInfo(?:By(?:Encoding|ScriptCode))?)))|D(?:A(?:A(?:ddCallbackToSession|pprovalSession(?:Create|GetTypeID|ScheduleWithRunLoop|UnscheduleFromRunLoop))|CallbackCreate|Disk(?:C(?:opy(?:Description|IOMedia|WholeDisk)|reateFrom(?:BSDName|IOMedia|VolumePath))|Get(?:BSDName|TypeID))|GetCallbackFromSession|RemoveCallbackFromSession(?:WithKey)?|Session(?:Create|GetTypeID|S(?:cheduleWithRunLoop|etDispatchQueue)|UnscheduleFromRunLoop))|CS(?:CopyTextDefinition|GetTermRangeInString)|R(?:AudioTrackCreateWithURL|Burn(?:Abort|C(?:opyStatus|reate)|Get(?:Device|Properties|TypeID)|SetProperties|WriteLayout)|C(?:DTextBlock(?:Create(?:ArrayFromPackList)?|Flatten|Get(?:Properties|T(?:rackDictionaries|ypeID)|Value)|Set(?:Properties|TrackDictionaries|Value))|opy(?:DeviceArray|LocalizedStringFor(?:AdditionalSense|DiscRecordingError|SenseCode|Value)))|Device(?:Acquire(?:ExclusiveAccess|MediaReservation)|C(?:loseTray|opy(?:DeviceFor(?:BSDName|IORegistryEntryPath)|Info|Status))|EjectMedia|GetTypeID|IsValid|KPSForXFactor|OpenTray|Release(?:ExclusiveAccess|MediaReservation)|XFactorForKPS)|Erase(?:C(?:opyStatus|reate)|Get(?:Device|Properties|TypeID)|S(?:etProperties|tart))|F(?:SObject(?:Copy(?:BaseName|FilesystemPropert(?:ies|y)|MangledName(?:s)?|RealURL|SpecificName(?:s)?)|Get(?:FilesystemMask|Parent)|IsVirtual|Set(?:BaseName|Filesystem(?:Mask|Propert(?:ies|y))|SpecificName(?:s)?))|ile(?:Create(?:RealWithURL|Virtual(?:Link|With(?:Callback|Data)))|GetTypeID|systemTrack(?:Create|EstimateOverhead))|older(?:AddChild|C(?:o(?:nvertRealToVirtual|pyChildren|untChildren)|reate(?:RealWithURL|Virtual))|GetTypeID|RemoveChild))|Get(?:RefCon|Version)|NotificationCenter(?:AddObserver|Create(?:RunLoopSource)?|GetTypeID|RemoveObserver)|SetRefCon|Track(?:Create|EstimateLength|Get(?:Properties|TypeID)|S(?:etProperties|peedTest)))|ebugPrint(?:Event|MainEventQueue)|is(?:ableSecureEventInput|pose(?:AE(?:Coerce(?:DescUPP|PtrUPP)|DisposeExternalUPP|EventHandlerUPP|FilterUPP|IdleUPP)|C(?:a(?:librate(?:EventUPP|UPP)|nCalibrateUPP)|ontrol(?:ActionUPP|EditTextValidationUPP|KeyFilterUPP|UserPane(?:ActivateUPP|DrawUPP|FocusUPP|HitTestUPP|IdleUPP|KeyDownUPP|TrackingUPP)))|D(?:ataBrowser(?:A(?:cceptDragUPP|ddDragItemUPP)|DrawItemUPP|EditItemUPP|GetContextualMenuUPP|HitTestUPP|Item(?:AcceptDragUPP|CompareUPP|D(?:ataUPP|ragRgnUPP)|HelpContentUPP|Notification(?:UPP|WithItemUPP)|ReceiveDragUPP|UPP)|PostProcessDragUPP|ReceiveDragUPP|SelectContextualMenuUPP|TrackingUPP)|ragInputUPP)|E(?:ditUnicodePostUpdateUPP|vent(?:ComparatorUPP|HandlerUPP|Loop(?:IdleTimerUPP|TimerUPP)))|HM(?:ControlContentUPP|Menu(?:ItemContentUPP|TitleContentUPP)|WindowContentUPP)|I(?:con(?:ActionUPP|GetterUPP)|ndexToUCStringUPP)|M(?:odalFilter(?:UPP|YDUPP)|usic(?:EventIterator|Player|Sequence))|N(?:ColorChangedUPP|MUPP)|OS(?:A(?:ActiveUPP|CreateAppleEventUPP|SendUPP)|L(?:A(?:ccessorUPP|djustMarksUPP)|Co(?:mpareUPP|untUPP)|DisposeTokenUPP|Get(?:ErrDescUPP|MarkTokenUPP)|MarkUPP))|SpeechChannel|T(?:XN(?:ActionNameMapperUPP|ContextualMenuSetupUPP|FindUPP|ScrollInfoUPP)|extToUnicodeInfo)|U(?:nicodeToText(?:FallbackUPP|Info|RunInfo)|serItemUPP))))|E(?:nableSecureEventInput|xtAudioFile(?:CreateWithURL|Dispose|GetProperty(?:Info)?|OpenURL|Read|Se(?:ek|tProperty)|Tell|Wr(?:apAudioFileID|ite(?:Async)?)))|F(?:C(?:Add(?:Collection|FontDescriptorToCollection)|Copy(?:CollectionNames|FontDescriptorsInCollection)|FontDescriptorCreateWith(?:FontAttributes|Name)|Remove(?:Collection|FontDescriptorFromCollection))|P(?:IsFontPanelVisible|ShowHideFontPanel)|SEvent(?:Stream(?:C(?:opy(?:Description|PathsBeingWatched)|reate(?:RelativeToDevice)?)|Flush(?:Async|Sync)|Get(?:DeviceBeingWatched|LatestEventId)|Invalidate|Re(?:lease|tain)|S(?:cheduleWithRunLoop|etDispatchQueue|how|t(?:art|op))|UnscheduleFromRunLoop)|s(?:CopyUUIDForDevice|Get(?:CurrentEventId|LastEventIdForDeviceBeforeTime)|PurgeEventsForDeviceUpToEventId))|indSpecificEventInQueue|lush(?:Event(?:Queue|sMatchingListFromQueue)|SpecificEventsFromQueue))|Get(?:A(?:pplication(?:EventTarget|TextEncoding)|udioUnitParameterDisplayType)|C(?:FRunLoopFromEventLoop|olor|urrent(?:ButtonState|Event(?:ButtonState|KeyModifiers|Loop|Queue|Time)?|KeyModifiers))|Event(?:Class|DispatcherTarget|Kind|MonitorTarget|Parameter|RetainCount|Time)|I(?:con(?:FamilyData|RefVariant)|ndVoice)|Keys|M(?:ainEvent(?:Loop|Queue)|enuTrackingData)|NumEventsInQueue|S(?:criptInfoFromTextEncoding|peech(?:Pitch|Rate)|y(?:mbolicHotKeyMode|stemUIMode))|T(?:extEncoding(?:Base|F(?:ormat|romScriptInfo)|Name|Variant)|hemeMe(?:nu(?:ItemExtra|SeparatorHeight|TitleExtra)|tric))|Voice(?:Description|Info))|HI(?:DictionaryWindowShow|GetMousePosition|MouseTrackingGetParameters|Object(?:AddDelegate|C(?:opy(?:ClassID|Delegates)|reate(?:FromBundle)?)|DynamicCast|FromEventTarget|GetEvent(?:HandlerObject|Target)|Is(?:ArchivingIgnored|OfClass)|PrintDebugInfo|Re(?:gisterSubclass|moveDelegate)|UnregisterClass)|PointConvert|RectConvert|S(?:earchWindowShow|hape(?:C(?:ontainsPoint|reate(?:Copy|Difference|Empty|Intersection|Mutable(?:Copy|WithRect)?|Union|With(?:QDRgn|Rect)|Xor))|Difference|Enumerate|Get(?:AsQDRgn|Bounds|TypeID)|I(?:n(?:set|tersect(?:sRect)?)|s(?:Empty|Rectangular))|Offset|ReplacePathInCGContext|Set(?:Empty|WithShape)|Union(?:WithRect)?|Xor)|izeConvert)|Theme(?:ApplyBackground|B(?:eginFocus|rushCreateCGColor)|Draw(?:B(?:ackground|utton)|ChasingArrows|F(?:ocusRect|rame)|G(?:enericWell|r(?:abber|o(?:upBox|wBox)))|Header|Menu(?:Ba(?:ckground|rBackground)|Item|Separator|Title)|P(?:aneSplitter|lacard|opupArrow)|S(?:crollBarDelimiters|e(?:gment|parator))|T(?:ab(?:Pane)?|extBox|i(?:ckMark|tleBarWidget)|rack(?:TickMarks)?)|WindowFrame)|EndFocus|Get(?:Button(?:BackgroundBounds|ContentBounds|Shape)|GrowBoxBounds|MenuBackgroundShape|ScrollBarTrackRect|T(?:ab(?:DrawShape|Pane(?:ContentShape|DrawShape)|Shape)|ext(?:ColorForThemeBrush|Dimensions)|rack(?:Bounds|DragRect|LiveValue|Part(?:Bounds|s)|Thumb(?:PositionFrom(?:Bounds|Offset)|Shape)))|UIFontType|Window(?:RegionHit|Shape))|HitTest(?:ScrollBarArrows|Track)|Set(?:Fill|Stroke|TextFill)))|I(?:O(?:BSDNameMatching|C(?:atalogue(?:GetData|ModuleLoaded|Reset|SendData|Terminate)|onnect(?:Add(?:Client|Ref)|Call(?:Async(?:Method|S(?:calarMethod|tructMethod))|Method|S(?:calarMethod|tructMethod))|GetService|MapMemory(?:64)?|Release|Set(?:CFPropert(?:ies|y)|NotificationPort)|Trap(?:0|1|2|3|4|5|6)|UnmapMemory(?:64)?)|reateReceivePort)|DispatchCalloutFromMessage|Iterator(?:IsValid|Next|Reset)|Kit(?:GetBusyState|WaitQuiet)|MasterPort|NotificationPort(?:Create|Destroy|Get(?:MachPort|RunLoopSource)|Set(?:DispatchQueue|ImportanceReceiver))|O(?:bject(?:Co(?:nformsTo|py(?:BundleIdentifierForClass|Class|SuperclassForClass))|Get(?:Class|KernelRetainCount|RetainCount|UserRetainCount)|IsEqualTo|Re(?:lease|tain))|penFirmwarePathMatching)|Registry(?:CreateIterator|Entry(?:Create(?:CFPropert(?:ies|y)|Iterator)|FromPath|Get(?:Child(?:Entry|Iterator)|LocationInPlane|Name(?:InPlane)?|P(?:a(?:rent(?:Entry|Iterator)|th)|roperty)|RegistryEntryID)|I(?:DMatching|nPlane)|Se(?:archCFProperty|tCFPropert(?:ies|y)))|GetRootEntry|IteratorE(?:nterEntry|xitEntry))|S(?:ervice(?:A(?:dd(?:InterestNotification|MatchingNotification|Notification)|uthorize)|Close|Get(?:BusyState|MatchingService(?:s)?)|Match(?:PropertyTable|ing)|NameMatching|O(?:FPathToBSDName|pen(?:AsFileDescriptor)?)|RequestProbe|WaitQuiet)|urface(?:AlignProperty|C(?:opy(?:AllValues|Value)|reate(?:MachPort|XPCObject)?)|DecrementUseCount|Get(?:AllocSize|B(?:aseAddress(?:OfPlane)?|ytesPer(?:Element(?:OfPlane)?|Row(?:OfPlane)?))|Element(?:Height(?:OfPlane)?|Width(?:OfPlane)?)|Height(?:OfPlane)?|ID|P(?:ixelFormat|laneCount|roperty(?:Alignment|Maximum))|Seed|TypeID|UseCount|Width(?:OfPlane)?)|I(?:ncrementUseCount|sInUse)|Lo(?:ck|okup(?:From(?:MachPort|XPCObject))?)|Remove(?:AllValues|Value)|SetValue(?:s)?|Unlock)))|conRef(?:ContainsCGPoint|IntersectsCGRect|To(?:HIShape|IconFamily))|n(?:stallEvent(?:Handler|LoopTimer)|voke(?:AE(?:Coerce(?:DescUPP|PtrUPP)|DisposeExternalUPP|EventHandlerUPP|FilterUPP|IdleUPP)|C(?:a(?:librate(?:EventUPP|UPP)|nCalibrateUPP)|ontrol(?:ActionUPP|EditTextValidationUPP|KeyFilterUPP|UserPane(?:ActivateUPP|DrawUPP|FocusUPP|HitTestUPP|IdleUPP|KeyDownUPP|TrackingUPP)))|D(?:ataBrowser(?:A(?:cceptDragUPP|ddDragItemUPP)|DrawItemUPP|EditItemUPP|GetContextualMenuUPP|HitTestUPP|Item(?:AcceptDragUPP|CompareUPP|D(?:ataUPP|ragRgnUPP)|HelpContentUPP|Notification(?:UPP|WithItemUPP)|ReceiveDragUPP|UPP)|PostProcessDragUPP|ReceiveDragUPP|SelectContextualMenuUPP|TrackingUPP)|ragInputUPP)|E(?:ditUnicodePostUpdateUPP|vent(?:ComparatorUPP|HandlerUPP|Loop(?:IdleTimerUPP|TimerUPP)))|HM(?:ControlContentUPP|Menu(?:ItemContentUPP|TitleContentUPP)|WindowContentUPP)|I(?:con(?:ActionUPP|GetterUPP)|ndexToUCStringUPP)|ModalFilter(?:UPP|YDUPP)|N(?:ColorChangedUPP|MUPP)|OS(?:A(?:ActiveUPP|CreateAppleEventUPP|SendUPP)|L(?:A(?:ccessorUPP|djustMarksUPP)|Co(?:mpareUPP|untUPP)|DisposeTokenUPP|Get(?:ErrDescUPP|MarkTokenUPP)|MarkUPP))|TXN(?:ActionNameMapperUPP|ContextualMenuSetupUPP|FindUPP|ScrollInfoUPP)|U(?:nicodeToTextFallbackUPP|serItemUPP)))|s(?:EventInQueue|IconRefMaskEmpty|SecureEventInputEnabled|UserCancelEventRef))|JS(?:C(?:heckScriptSyntax|lass(?:Create|Re(?:lease|tain))|ontextG(?:etG(?:lobal(?:Context|Object)|roup)|roup(?:Create|Re(?:lease|tain))))|EvaluateScript|G(?:arbageCollect|lobalContext(?:Create(?:InGroup)?|Re(?:lease|tain)))|Object(?:C(?:allAs(?:Constructor|Function)|opyPropertyNames)|DeleteProperty|GetPr(?:ivate|o(?:perty(?:AtIndex)?|totype))|HasProperty|Is(?:Constructor|Function)|Make(?:Array|Constructor|Date|Error|Function(?:WithCallback)?|RegExp)?|SetPr(?:ivate|o(?:perty(?:AtIndex)?|totype)))|PropertyNameA(?:ccumulatorAddName|rray(?:Get(?:Count|NameAtIndex)|Re(?:lease|tain)))|String(?:C(?:opyCFString|reateWith(?:C(?:FString|haracters)|UTF8CString))|Get(?:CharactersPtr|Length|MaximumUTF8CStringSize|UTF8CString)|IsEqual(?:ToUTF8CString)?|Re(?:lease|tain))|Value(?:CreateJSONString|GetType|Is(?:Boolean|Equal|InstanceOfConstructor|Nu(?:ll|mber)|Object(?:OfClass)?|Stri(?:ctEqual|ng)|Undefined)|Make(?:Boolean|FromJSONString|Nu(?:ll|mber)|String|Undefined)|Protect|To(?:Boolean|Number|Object|StringCopy)|Unprotect))|KBGetLayoutType|L(?:MGetK(?:bd(?:Last|Type)|ey(?:RepThresh|Thresh))|S(?:C(?:anURLAcceptURL|opy(?:A(?:llRoleHandlersForContentType|pplicationURLsForURL)|DefaultRoleHandlerForContentType))|Open(?:CFURLRef|FromURLSpec)|RegisterURL|SetDefault(?:HandlerForURLScheme|RoleHandlerForContentType))|o(?:cale(?:Operation(?:CountNames|Get(?:IndName|Name))|Ref(?:FromL(?:angOrRegionCode|ocaleString)|GetPartString)|StringToLangAndRegionCodes)|ngDoubleTo(?:SInt64|UInt64)))|M(?:D(?:CopyLabel(?:Kinds|WithUUID|s(?:MatchingExpression|WithKind))|Item(?:C(?:opy(?:Attribute(?:List|Names|s)?|Labels)|reate(?:WithURL)?)|GetTypeID|RemoveLabel|SetLabel|sCreateWithURLs)|Label(?:C(?:opyAttribute(?:Name)?|reate)|Delete|GetTypeID|SetAttributes)|Query(?:C(?:opy(?:QueryString|SortingAttributes|Value(?:ListAttributes|sOfAttribute))|reate(?:ForItems|Subset)?)|DisableUpdates|E(?:nableUpdates|xecute)|Get(?:AttributeValueOfResultAtIndex|BatchingParameters|CountOfResultsWithAttributeValue|IndexOfResult|Result(?:AtIndex|Count)|SortOptionFlagsForAttribute|TypeID)|IsGatheringComplete|S(?:et(?:BatchingParameters|Create(?:ResultFunction|ValueFunction)|DispatchQueue|MaxCount|S(?:earchScope|ort(?:Comparator(?:Block)?|O(?:ptionFlagsForAttribute|rder))))|top))|SchemaCopy(?:A(?:llAttributes|ttributesForContentType)|Display(?:DescriptionForAttribute|NameForAttribute)|MetaAttributesForAttribute))|IDI(?:Client(?:Create|Dispose)|De(?:stinationCreate|viceGet(?:Entity|NumberOfEntities))|En(?:dpoint(?:Dispose|GetEntity)|tityGet(?:De(?:stination|vice)|NumberOf(?:Destinations|Sources)|Source))|FlushOutput|Get(?:De(?:stination|vice)|ExternalDevice|NumberOf(?:De(?:stinations|vices)|ExternalDevices|Sources)|Source)|InputPortCreate|O(?:bject(?:FindByUniqueID|Get(?:D(?:ataProperty|ictionaryProperty)|IntegerProperty|Properties|StringProperty)|RemoveProperty|Set(?:D(?:ataProperty|ictionaryProperty)|IntegerProperty|StringProperty))|utputPortCreate)|P(?:acket(?:List(?:Add|Init)|Next)|ort(?:ConnectSource|Dis(?:connectSource|pose)))|Re(?:ceived|start)|S(?:end(?:Sysex)?|ourceCreate))|akeVoiceSpec|usic(?:Device(?:MIDIEvent|S(?:t(?:artNote|opNote)|ysEx))|EventIterator(?:DeleteEvent|GetEventInfo|Has(?:CurrentEvent|NextEvent|PreviousEvent)|NextEvent|PreviousEvent|Se(?:ek|tEvent(?:Info|Time)))|Player(?:Get(?:BeatsForHostTime|HostTimeForBeats|PlayRateScalar|Sequence|Time)|IsPlaying|Preroll|S(?:et(?:PlayRateScalar|Sequence|Time)|t(?:art|op)))|Sequence(?:B(?:arBeatTimeToBeats|eatsToBarBeatTime)|DisposeTrack|File(?:Create(?:Data)?|Load(?:Data)?)|Get(?:AUGraph|BeatsForSeconds|In(?:dTrack|foDictionary)|S(?:MPTEResolution|e(?:condsForBeats|quenceType))|T(?:empoTrack|rack(?:Count|Index)))|NewTrack|Reverse|Set(?:AUGraph|MIDIEndpoint|S(?:MPTEResolution|equenceType)|UserCallback))|Track(?:C(?:lear|opyInsert|ut)|Get(?:Dest(?:MIDIEndpoint|Node)|Property|Sequence)|M(?:erge|oveEvents)|New(?:AUPresetEvent|Extended(?:NoteEvent|TempoEvent)|M(?:IDI(?:ChannelEvent|NoteEvent|RawDataEvent)|etaEvent)|ParameterEvent|UserEvent)|Set(?:Dest(?:MIDIEndpoint|Node)|Property))))|N(?:PickColor|X(?:Convert(?:Host(?:DoubleToSwapped|FloatToSwapped)|Swapped(?:DoubleToHost|FloatToHost))|HostByteOrder|Swap(?:Big(?:DoubleToHost|FloatToHost|IntToHost|Long(?:LongToHost|ToHost)|ShortToHost)|Double|Float|Host(?:DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|IntTo(?:Big|Little)|Long(?:LongTo(?:Big|Little)|To(?:Big|Little))|ShortTo(?:Big|Little))|Int|L(?:ittle(?:DoubleToHost|FloatToHost|IntToHost|Long(?:LongToHost|ToHost)|ShortToHost)|ong(?:Long)?)|Short))|e(?:arestMacTextEncodings|w(?:AE(?:Coerce(?:DescUPP|PtrUPP)|DisposeExternalUPP|EventHandlerUPP|FilterUPP|IdleUPP)|C(?:a(?:librate(?:EventUPP|UPP)|nCalibrateUPP)|ontrol(?:ActionUPP|EditTextValidationUPP|KeyFilterUPP|UserPane(?:ActivateUPP|DrawUPP|FocusUPP|HitTestUPP|IdleUPP|KeyDownUPP|TrackingUPP)))|D(?:ataBrowser(?:A(?:cceptDragUPP|ddDragItemUPP)|DrawItemUPP|EditItemUPP|GetContextualMenuUPP|HitTestUPP|Item(?:AcceptDragUPP|CompareUPP|D(?:ataUPP|ragRgnUPP)|HelpContentUPP|Notification(?:UPP|WithItemUPP)|ReceiveDragUPP|UPP)|PostProcessDragUPP|ReceiveDragUPP|SelectContextualMenuUPP|TrackingUPP)|ragInputUPP)|E(?:ditUnicodePostUpdateUPP|vent(?:ComparatorUPP|HandlerUPP|Loop(?:IdleTimerUPP|TimerUPP)))|HM(?:ControlContentUPP|Menu(?:ItemContentUPP|TitleContentUPP)|WindowContentUPP)|I(?:con(?:ActionUPP|GetterUPP)|ndexToUCStringUPP)|M(?:odalFilter(?:UPP|YDUPP)|usic(?:EventIterator|Player|Sequence))|N(?:ColorChangedUPP|MUPP)|OS(?:A(?:ActiveUPP|CreateAppleEventUPP|SendUPP)|L(?:A(?:ccessorUPP|djustMarksUPP)|Co(?:mpareUPP|untUPP)|DisposeTokenUPP|Get(?:ErrDescUPP|MarkTokenUPP)|MarkUPP))|SpeechChannel|TXN(?:ActionNameMapperUPP|ContextualMenuSetupUPP|FindUPP|ScrollInfoUPP)|U(?:nicodeToTextFallbackUPP|serItemUPP))|xtAudioFileRegion)|um(?:AudioFileMarkersToNumBytes|BytesToNumAudioFileMarkers))|OS(?:A(?:A(?:ddStorageType|vailableDialect(?:CodeList|s))|Co(?:erce(?:FromDesc|ToDesc)|mpile(?:Execute)?|py(?:DisplayString|ID|S(?:cript(?:ingDefinition(?:FromURL)?)?|ourceString)))|D(?:isp(?:lay|ose)|o(?:Event|Script(?:File)?))|Execute(?:Event)?|Ge(?:nericToRealID|t(?:ActiveProc|C(?:reateProc|urrentDialect)|D(?:efaultScriptingComponent|ialectInfo)|Handler(?:Names)?|Property(?:Names)?|ResumeDispatchProc|S(?:cript(?:DataFromURL|Info|ingComponent(?:FromStored)?)|endProc|ource|torageType|ysTerminology)))|Load(?:Execute(?:File)?|File|ScriptData)?|MakeContext|Re(?:alToGenericID|moveStorageType)|S(?:cript(?:Error|ingComponentName)|et(?:ActiveProc|C(?:reateProc|urrentDialect)|Default(?:ScriptingComponent|Target)|Handler|Property|ResumeDispatchProc|S(?:criptInfo|endProc))|t(?:artRecording|o(?:pRecording|re(?:File)?)))|tomic(?:Dequeue|Enqueue|Fifo(?:Dequeue|Enqueue)))|GetNotificationFromMessage)|P(?:M(?:C(?:GImageCreateWithEPSDataProvider|opy(?:AvailablePPDs|LocalizedPPD|P(?:PDData|ageFormat|rintSettings))|reate(?:GenericPrinter|P(?:ageFormat(?:WithPMPaper)?|rintSettings)|Session))|Get(?:AdjustedPa(?:geRect|perRect)|Co(?:llate|pies)|Duplex|FirstPage|LastPage|Orientation|Page(?:Format(?:ExtendedData|Paper)|Range)|Scale|UnadjustedPa(?:geRect|perRect))|P(?:a(?:geFormat(?:Create(?:DataRepresentation|WithDataRepresentation)|GetPrinterID)|per(?:Create(?:Custom|LocalizedName)|Get(?:Height|ID|Margins|P(?:PDPaperName|rinterID)|Width)|IsCustom))|r(?:eset(?:C(?:opyName|reatePrintSettings)|GetAttributes)|int(?:Settings(?:C(?:opy(?:AsDictionary|Keys)|reate(?:DataRepresentation|WithDataRepresentation))|Get(?:JobName|Value)|Set(?:JobName|Value)|ToOptions(?:WithPrinterAndPageFormat)?)|er(?:C(?:opy(?:De(?:scriptionURL|viceURI)|HostName|Presets|State)|reateFromPrinterID)|Get(?:CommInfo|Driver(?:Creator|ReleaseInfo)|I(?:D|ndexedPrinterResolution)|L(?:anguageInfo|ocation)|M(?:akeAndModelName|imeTypes)|Name|OutputResolution|P(?:aperList|rinterResolutionCount)|State)|Is(?:Default|Favorite|PostScript(?:Capable|Printer)|Remote)|PrintWith(?:File|Provider)|Se(?:ndCommand|t(?:Default|OutputResolution))|WritePostScriptToURL))))|Re(?:lease|tain)|Se(?:rver(?:CreatePrinterList|LaunchPrinterBrowser)|ssion(?:Begin(?:CGDocumentNoDialog|PageNoDialog)|C(?:opy(?:Destination(?:Format|Location)|OutputFormatList)|reateP(?:ageFormatList|rinterList))|DefaultP(?:ageFormat|rintSettings)|E(?:nd(?:DocumentNoDialog|PageNoDialog)|rror)|Get(?:C(?:GGraphicsContext|urrentPrinter)|D(?:ataFromSession|estinationType))|Set(?:CurrentPMPrinter|D(?:ataInSession|estination)|Error)|ValidateP(?:ageFormat|rintSettings))|t(?:Co(?:llate|pies)|Duplex|FirstPage|LastPage|Orientation|Page(?:FormatExtendedData|Range)|Scale))|Workflow(?:CopyItems|SubmitPDFWith(?:Options|Settings)))|a(?:steboard(?:C(?:lear|opy(?:ItemFlavor(?:Data|s)|Name|PasteLocation)|reate)|Get(?:Item(?:Count|FlavorFlags|Identifier)|TypeID)|PutItemFlavor|ResolvePromises|S(?:etP(?:asteLocation|romiseKeeper)|ynchronize))|useSpeechAt)|lotIconRefInContext|o(?:pSymbolicHotKeyMode|stEventToQueue)|rocessHICommand|ushSymbolicHotKeyMode)|Q(?:LThumbnailImageCreate|u(?:eryUnicodeMappings|itEventLoop))|R(?:e(?:ceiveNextEvent|gisterEventHotKey|leaseEvent|moveEvent(?:FromQueue|Handler|LoopTimer|Parameter|TypesFromHandler)|s(?:et(?:TextToUnicodeInfo|UnicodeToText(?:Info|RunInfo))|olveDefaultTextEncoding)|tainEvent|vertTextEncodingToScriptInfo)|unCurrentEventLoop)|S(?:32Set|64(?:A(?:dd|nd)|Bitwise(?:And|Eor|Not|Or)|Div(?:ide)?|Eor|M(?:ax|in|od|ultiply)|N(?:egate|ot)|Or|S(?:et(?:U)?|hift(?:Left|Right)|ubtract))|C(?:Bond(?:Interface(?:C(?:opy(?:A(?:ll|vailableMemberInterfaces)|Status)|reate)|Get(?:MemberInterfaces|Options)|Remove|Set(?:LocalizedDisplayName|MemberInterfaces|Options))|StatusGet(?:InterfaceStatus|MemberInterfaces|TypeID))|CopyLastError|DynamicStore(?:Add(?:TemporaryValue|Value)|C(?:opy(?:Co(?:mputerName|nsoleUser)|KeyList|Loca(?:lHostName|tion)|Multiple|NotifiedKeys|Proxies|Value)|reate(?:RunLoopSource|WithOptions)?)|GetTypeID|KeyCreate(?:Co(?:mputerName|nsoleUser)|HostNames|Location|Network(?:GlobalEntity|Interface(?:Entity)?|ServiceEntity)|Proxies)?|NotifyValue|RemoveValue|Set(?:DispatchQueue|Multiple|NotificationKeys|Value))|Error(?:String)?|Network(?:Connection(?:C(?:opy(?:ExtendedStatus|S(?:erviceID|tatistics)|User(?:Options|Preferences))|reateWithServiceID)|Get(?:Status|TypeID)|S(?:cheduleWithRunLoop|etDispatchQueue|t(?:art|op))|UnscheduleFromRunLoop)|Interface(?:C(?:opy(?:All|M(?:TU|edia(?:Options|SubType(?:Options|s))))|reateWithInterface)|ForceConfigurationRefresh|Get(?:BSDName|Configuration|ExtendedConfiguration|HardwareAddressString|Interface(?:Type)?|LocalizedDisplayName|Supported(?:InterfaceTypes|ProtocolTypes)|TypeID)|Set(?:Configuration|ExtendedConfiguration|M(?:TU|ediaOptions)))|Protocol(?:Get(?:Configuration|Enabled|ProtocolType|TypeID)|Set(?:Configuration|Enabled))|Reachability(?:CreateWith(?:Address(?:Pair)?|Name)|Get(?:Flags|TypeID)|S(?:cheduleWithRunLoop|et(?:Callback|DispatchQueue))|UnscheduleFromRunLoop)|Se(?:rvice(?:AddProtocolType|C(?:opy(?:All|Protocol(?:s)?)?|reate)|EstablishDefaultConfiguration|Get(?:Enabled|Interface|Name|ServiceID|TypeID)|Remove(?:ProtocolType)?|Set(?:Enabled|Name))|t(?:AddService|C(?:o(?:ntainsInterface|py(?:All|Current|Services)?)|reate)|Get(?:Name|Se(?:rviceOrder|tID)|TypeID)|Remove(?:Service)?|Set(?:Current|Name|ServiceOrder))))|Preferences(?:A(?:ddValue|pplyChanges)|C(?:o(?:mmitChanges|pyKeyList)|reate(?:WithAuthorization)?)|Get(?:Signature|TypeID|Value)|Lock|Path(?:CreateUniqueChild|Get(?:Link|Value)|RemoveValue|Set(?:Link|Value))|RemoveValue|S(?:cheduleWithRunLoop|et(?:C(?:allback|omputerName)|DispatchQueue|LocalHostName|Value)|ynchronize)|Un(?:lock|scheduleFromRunLoop))|VLANInterface(?:C(?:opyA(?:ll|vailablePhysicalInterfaces)|reate)|Get(?:Options|PhysicalInterface|Tag)|Remove|Set(?:LocalizedDisplayName|Options|PhysicalInterfaceAndTag)))|Int64To(?:LongDouble|UInt64|Wide)|K(?:Document(?:C(?:opyURL|reate(?:WithURL)?)|Get(?:Name|Parent|SchemeName|TypeID))|Index(?:AddDocument(?:WithText)?|C(?:lose|o(?:mpact|py(?:Document(?:ForDocumentID|IDArrayForTermID|Properties|RefsForDocumentIDs|URLsForDocumentIDs)|InfoForDocumentIDs|Term(?:IDArrayForDocumentID|StringForTermID)))|reateWith(?:MutableData|URL))|DocumentIterator(?:C(?:opyNext|reate)|GetTypeID)|Flush|Get(?:AnalysisProperties|Document(?:Count|ID|State|Term(?:Count|Frequency))|IndexType|Maximum(?:BytesBeforeFlush|DocumentID|TermID)|T(?:erm(?:DocumentCount|IDForTermString)|ypeID))|MoveDocument|OpenWith(?:Data|MutableData|URL)|Re(?:moveDocument|nameDocument)|Set(?:DocumentProperties|MaximumBytesBeforeFlush))|LoadDefaultExtractorPlugIns|S(?:earch(?:C(?:ancel|reate)|FindMatches|GetTypeID)|ummary(?:C(?:opy(?:Paragraph(?:AtIndex|SummaryString)|Sentence(?:AtIndex|SummaryString))|reateWithString)|Get(?:Paragraph(?:Count|SummaryInfo)|Sentence(?:Count|SummaryInfo)|TypeID))))|e(?:c(?:A(?:CL(?:C(?:opy(?:Authorizations|Contents)|reateWithSimpleContents)|GetTypeID|Remove|SetContents|UpdateAuthorizations)|ccess(?:C(?:opy(?:ACLList|MatchingACLList|OwnerAndACL)|reate(?:WithOwnerAndACL)?)|GetTypeID)|ddSharedWebCredential)|C(?:ertificate(?:AddToKeychain|C(?:opy(?:CommonName|Data|EmailAddresses|LongDescription|Preferred|S(?:hortDescription|ubjectSummary)|Values)|reateWithData)|GetTypeID|SetPreferred)|o(?:de(?:C(?:heckValidity(?:WithErrors)?|opy(?:DesignatedRequirement|GuestWithAttributes|Host|Path|S(?:elf|igningInformation|taticCode)))|GetTypeID|MapMemory)|pyErrorMessageString)|reateSharedWebCredentialPassword)|D(?:ec(?:odeTransformCreate|ryptTransform(?:Create|GetTypeID))|igestTransform(?:Create|GetTypeID))|Enc(?:odeTransformCreate|ryptTransform(?:Create|GetTypeID))|GroupTransformGetTypeID|I(?:dentity(?:C(?:opy(?:Certificate|Pr(?:eferred|ivateKey)|SystemIdentity)|reateWithCertificate)|GetTypeID|Set(?:Preferred|SystemIdentity))|tem(?:Add|CopyMatching|Delete|Export|Import|Update))|Key(?:CreateFromData|DeriveFromPassword|Ge(?:nerate(?:Pair(?:Async)?|Symmetric)|t(?:BlockSize|TypeID))|UnwrapSymmetric|WrapSymmetric|chain(?:A(?:dd(?:Callback|GenericPassword|InternetPassword)|ttributeInfoForItemID)|C(?:opy(?:D(?:efault|omain(?:Default|SearchList))|Se(?:archList|ttings))|reate)|Delete|F(?:ind(?:GenericPassword|InternetPassword)|reeAttributeInfo)|Get(?:P(?:ath|referenceDomain)|Status|TypeID|UserInteractionAllowed|Version)|Item(?:C(?:opy(?:A(?:ccess|ttributesAndData)|Content|FromPersistentReference|Keychain)|reate(?:Copy|FromContent|PersistentReference))|Delete|Free(?:AttributesAndData|Content)|GetTypeID|Modify(?:AttributesAndData|Content)|SetAccess)|Lock(?:All)?|Open|RemoveCallback|Set(?:D(?:efault|omain(?:Default|SearchList))|PreferenceDomain|Se(?:archList|ttings)|UserInteractionAllowed)|Unlock))|P(?:KCS12Import|olicy(?:C(?:opyProperties|reate(?:BasicX509|SSL))|GetTypeID))|R(?:andomCopyBytes|equ(?:estSharedWebCredential|irement(?:C(?:opy(?:Data|String)|reateWith(?:Data|String(?:AndErrors)?))|GetTypeID)))|S(?:ignTransformCreate|taticCode(?:C(?:heckValidity(?:WithErrors)?|reateWithPath(?:AndAttributes)?)|GetTypeID))|T(?:ask(?:C(?:opy(?:SigningIdentifier|Value(?:ForEntitlement|sForEntitlements))|reate(?:FromSelf|WithAuditToken))|Get(?:CodeSignStatus|TypeID))|r(?:ansform(?:C(?:o(?:nnectTransforms|pyExternalRepresentation)|reate(?:FromExternalRepresentation|GroupTransform|ReadTransformWithReadStream)?|ustom(?:GetAttribute|SetAttribute))|Execute(?:Async)?|FindByName|Get(?:Attribute|TypeID)|NoData|PushbackAttribute|Register|Set(?:Attribute(?:Action)?|DataAction|TransformAction))|ust(?:C(?:opy(?:AnchorCertificates|CustomAnchorCertificates|P(?:olicies|roperties|ublicKey))|reateWithCertificates)|Get(?:Certificate(?:AtIndex|Count)|T(?:rustResult|ypeID)|VerifyTime)|Set(?:AnchorCertificates(?:Only)?|Options|Policies|VerifyDate|tings(?:C(?:opy(?:Certificates|ModificationDate|TrustSettings)|reateExternalRepresentation)|ImportExternalRepresentation|RemoveTrustSettings|SetTrustSettings))|edApplicationGetTypeID)))|VerifyTransformCreate)|ndEventToEventTarget(?:WithOptions)?|ssion(?:Create|GetInfo)|t(?:AudioUnitParameterDisplayType|Event(?:LoopTimerNextFireTime|Parameter|Time)|F(?:allbackUnicodeToText(?:Run)?|ontInfoForSelection)|IconFamilyData|S(?:peech(?:P(?:itch|roperty)|Rate)|ystemUIMode)))|pe(?:akCFString|ech(?:Busy(?:SystemWide)?|ManagerVersion|Synthesis(?:RegisterModuleURL|UnregisterModuleURL)))|topSpeech(?:At)?)|T(?:EC(?:C(?:lear(?:ConverterContextInfo|SnifferContextInfo)|o(?:nvertText(?:ToMultipleEncodings)?|pyTextEncodingInternetNameAndMIB|unt(?:Available(?:Sniffers|TextEncodings)|D(?:estinationTextEncodings|irectTextEncodingConversions)|MailTextEncodings|SubTextEncodings|WebTextEncodings))|reate(?:Converter(?:FromPath)?|OneToManyConverter|Sniffer))|Dispose(?:Converter|Sniffer)|Flush(?:MultipleEncodings|Text)|Get(?:Available(?:Sniffers|TextEncodings)|D(?:estinationTextEncodings|irectTextEncodingConversions)|EncodingList|Info|MailTextEncodings|SubTextEncodings|TextEncoding(?:FromInternetName(?:OrMIB)?|InternetName)|WebTextEncodings)|S(?:etBasicOptions|niffTextEncoding))|IS(?:C(?:opy(?:Current(?:ASCIICapableKeyboard(?:InputSource|LayoutInputSource)|Keyboard(?:InputSource|LayoutInputSource))|Input(?:MethodKeyboardLayoutOverride|SourceForLanguage))|reate(?:ASCIICapableInputSourceList|InputSourceList))|D(?:eselectInputSource|isableInputSource)|EnableInputSource|GetInputSourceProperty|InputSourceGetTypeID|RegisterInputSource|Se(?:lectInputSource|tInputMethodKeyboardLayoutOverride))|SM(?:Get(?:ActiveDocument|DocumentProperty)|RemoveDocumentProperty|SetDocumentProperty)|r(?:ans(?:formProcessType|lation(?:C(?:opy(?:DestinationType|SourceType)|reate(?:WithSourceArray)?)|GetT(?:ranslationFlags|ypeID)|PerformFor(?:Data|File|URL)))|uncateFor(?:TextToUnicode|UnicodeToText)))|U(?:32SetU|64(?:A(?:dd|nd)|Bitwise(?:And|Eor|Not|Or)|Div(?:ide)?|Eor|M(?:ax|od|ultiply)|Not|Or|S(?:et(?:U)?|hift(?:Left|Right)|ubtract))|AZoom(?:ChangeFocus|Enabled)|C(?:C(?:o(?:mpare(?:CollationKeys|Text(?:Default|NoLocale)?)|nvert(?:CFAbsoluteTimeTo(?:LongDateTime|Seconds|UTCDateTime)|LongDateTimeToCFAbsoluteTime|SecondsToCFAbsoluteTime|UTCDateTimeToCFAbsoluteTime))|reateCollator)|DisposeCollator|Get(?:C(?:harProperty|ollationKey)|UnicodeScalarValueForSurrogatePair)|IsSurrogate(?:HighCharacter|LowCharacter)|KeyTranslate|TypeSelect(?:AddKeyToSelector|C(?:ompare|reateSelector)|F(?:indItem|lushSelectorData)|ReleaseSelector|W(?:alkList|ouldResetBuffer)))|Int64To(?:LongDouble|SInt64|UnsignedWide)|T(?:CreateStringForOSType|GetOSTypeFromString|Type(?:C(?:o(?:nformsTo|py(?:De(?:clar(?:ation|ingBundleURL)|scription)|PreferredTagWithClass))|reate(?:AllIdentifiersForTag|PreferredIdentifierForTag))|Equal))|n(?:registerEventHotKey|signedWideToUInt64)|pgradeScriptInfoToTextEncoding|seSpeechDictionary)|WideToSInt64|a(?:c(?:cept|l_(?:add_(?:flag_np|perm)|c(?:alc_mask|lear_(?:flags_np|perms)|opy_(?:e(?:ntry|xt(?:_native)?)|int(?:_native)?)|reate_entry(?:_np)?)|d(?:elete_(?:def_file|entry|flag_np|perm)|up)|fr(?:ee|om_text)|get_(?:entry|f(?:d(?:_np)?|ile|lag(?:_np|set_np))|link_np|perm(?:_np|set(?:_mask_np)?)|qualifier|tag_type)|init|maximal_permset_mask_np|s(?:et_(?:f(?:d(?:_np)?|ile|lagset_np)|link_np|permset(?:_mask_np)?|qualifier|tag_type)|ize)|to_text|valid(?:_(?:f(?:d_np|ile_np)|link_np))?)|t_(?:get_state|set_state))|udit(?:_session_(?:join|port|self)|ctl|on)?)|bind|c(?:a(?:bs(?:f|l)?|cos(?:f|h(?:f|l)?|l)?|lloc|rg(?:f|l)?|sin(?:f|h(?:f|l)?|l)?|tan(?:f|h(?:f|l)?|l)?)|cos(?:f|h(?:f|l)?|l)?|exp(?:f|l)?|imag(?:f|l)?|lo(?:ck_(?:get_res|s(?:et_(?:attributes|res|time)|leep(?:_trap)?))|g(?:f|l)?)|on(?:j(?:f|l)?|nect)|p(?:ow(?:f|l)?|roj(?:f|l)?)|real(?:f|l)?|s(?:in(?:f|h(?:f|l)?|l)?|qrt(?:f|l)?|sm(?:AlgToOid|OidToAlg|Perror))|t(?:an(?:f|h(?:f|l)?|l)?|ermid))|d(?:e(?:bug_control_port_for_pid|c2numl)|igittoint)|etap_trace_thread|f(?:e(?:clearexcept|get(?:e(?:nv|xceptflag)|round)|holdexcept|raiseexcept|set(?:e(?:nv|xceptflag)|round)|testexcept|updateenv)|ree)|g(?:et(?:au(?:dit_addr|id)|peername|sock(?:name|opt))|l(?:A(?:c(?:cum|tive(?:StencilFaceEXT|Texture(?:ARB)?))|lphaFunc|r(?:eTexturesResident|rayElement)|ttach(?:ObjectARB|Shader))|B(?:egin(?:ConditionalRenderNV|Query(?:ARB)?|TransformFeedbackEXT)?|i(?:nd(?:AttribLocation(?:ARB)?|Buffer(?:ARB|BaseEXT|OffsetEXT|RangeEXT)?|Fra(?:gDataLocationEXT|mebuffer(?:EXT)?)|ProgramARB|Renderbuffer(?:EXT)?|Texture|VertexArrayAPPLE)|tmap)|l(?:end(?:Color(?:EXT)?|Equation(?:EXT|Separate(?:ATI|EXT)?)?|Func(?:Separate(?:EXT)?)?)|itFramebuffer(?:EXT)?)|uffer(?:Data(?:ARB)?|ParameteriAPPLE|SubData(?:ARB)?))|C(?:allList(?:s)?|heckFramebufferStatus(?:EXT)?|l(?:ampColorARB|ear(?:Accum|Color(?:I(?:iEXT|uiEXT))?|Depth|Index|Stencil)?|i(?:ent(?:ActiveTexture(?:ARB)?|WaitSync)|pPlane))|o(?:lor(?:3(?:b(?:v)?|d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?|u(?:b(?:v)?|i(?:v)?|s(?:v)?))|4(?:b(?:v)?|d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?|u(?:b(?:v)?|i(?:v)?|s(?:v)?))|Ma(?:sk(?:IndexedEXT)?|terial)|Pointer|SubTable|Table(?:Parameter(?:fv|iv))?)|mp(?:ileShader(?:ARB)?|ressedTex(?:Image(?:1D(?:ARB)?|2D(?:ARB)?|3D(?:ARB)?)|SubImage(?:1D(?:ARB)?|2D(?:ARB)?|3D(?:ARB)?)))|nvolution(?:Filter(?:1D|2D)|Parameter(?:f(?:v)?|i(?:v)?))|py(?:Co(?:lor(?:SubTable|Table)|nvolutionFilter(?:1D|2D))|Pixels|Tex(?:Image(?:1D|2D)|SubImage(?:1D|2D|3D))))|reate(?:Program(?:ObjectARB)?|Shader(?:ObjectARB)?)|ullFace)|D(?:e(?:lete(?:Buffers(?:ARB)?|F(?:encesAPPLE|ramebuffers(?:EXT)?)|Lists|ObjectARB|Program(?:sARB)?|Queries(?:ARB)?|Renderbuffers(?:EXT)?|S(?:hader|ync)|Textures|VertexArraysAPPLE)|pth(?:BoundsEXT|Func|Mask|Range)|tach(?:ObjectARB|Shader))|isable(?:ClientState|IndexedEXT|VertexAttribA(?:PPLE|rray(?:ARB)?))?|raw(?:Arrays(?:InstancedARB)?|Buffer(?:s(?:ARB)?)?|Element(?:ArrayAPPLE|s(?:BaseVertex|Instanced(?:ARB|BaseVertex))?)|Pixels|RangeElement(?:ArrayAPPLE|s(?:BaseVertex|EXT)?)))|E(?:dgeFlag(?:Pointer|v)?|lementPointerAPPLE|n(?:able(?:ClientState|IndexedEXT|VertexAttribA(?:PPLE|rray(?:ARB)?))?|d(?:ConditionalRenderNV|List|Query(?:ARB)?|TransformFeedbackEXT)?)|val(?:Coord(?:1(?:d(?:v)?|f(?:v)?)|2(?:d(?:v)?|f(?:v)?))|Mesh(?:1|2)|Point(?:1|2)))|F(?:e(?:edbackBuffer|nceSync)|inish(?:FenceAPPLE|ObjectAPPLE|RenderAPPLE)?|lush(?:MappedBufferRangeAPPLE|RenderAPPLE|VertexArrayRangeAPPLE)?|og(?:Coord(?:Pointer(?:EXT)?|d(?:EXT|v(?:EXT)?)?|f(?:EXT|v(?:EXT)?)?)|f(?:v)?|i(?:v)?)|r(?:amebuffer(?:Renderbuffer(?:EXT)?|Texture(?:1D(?:EXT)?|2D(?:EXT)?|3D(?:EXT)?|EXT|FaceEXT|Layer(?:EXT)?))|ontFace|ustum))|Ge(?:n(?:Buffers(?:ARB)?|F(?:encesAPPLE|ramebuffers(?:EXT)?)|Lists|ProgramsARB|Queries(?:ARB)?|Renderbuffers(?:EXT)?|Textures|VertexArraysAPPLE|erateMipmap(?:EXT)?)|t(?:A(?:ctive(?:Attrib(?:ARB)?|Uniform(?:ARB)?)|tt(?:ached(?:ObjectsARB|Shaders)|ribLocation(?:ARB)?))|B(?:oolean(?:IndexedvEXT|v)|uffer(?:P(?:arameteriv(?:ARB)?|ointerv(?:ARB)?)|SubData(?:ARB)?))|C(?:lipPlane|o(?:lorTable(?:Parameter(?:fv|iv))?|mpressedTexImage(?:ARB)?|nvolution(?:Filter|Parameter(?:fv|iv))))|Doublev|Error|F(?:loatv|ra(?:gDataLocationEXT|mebufferAttachmentParameteriv(?:EXT)?))|H(?:andleARB|istogram(?:Parameter(?:fv|iv))?)|In(?:foLogARB|teger(?:64v|IndexedvEXT|v))|Light(?:fv|iv)|M(?:a(?:p(?:dv|fv|iv)|terial(?:fv|iv))|inmax(?:Parameter(?:fv|iv))?)|Object(?:LabelEXT|Parameter(?:fvARB|ivA(?:PPLE|RB)))|P(?:ixelMap(?:fv|u(?:iv|sv))|o(?:interv|lygonStipple)|rogram(?:EnvParameter(?:dvARB|fvARB)|InfoLog|LocalParameter(?:dvARB|fvARB)|StringARB|iv(?:ARB)?))|Query(?:Object(?:i(?:64vEXT|v(?:ARB)?)|ui(?:64vEXT|v(?:ARB)?))|iv(?:ARB)?)|RenderbufferParameteriv(?:EXT)?|S(?:eparableFilter|hader(?:InfoLog|Source(?:ARB)?|iv)|tring|ynciv)|T(?:ex(?:Env(?:fv|iv)|Gen(?:dv|fv|iv)|Image|LevelParameter(?:fv|iv)|Parameter(?:I(?:ivEXT|uivEXT)|PointervAPPLE|fv|iv))|ransformFeedbackVaryingEXT)|Uniform(?:BufferSizeEXT|Location(?:ARB)?|OffsetEXT|fv(?:ARB)?|iv(?:ARB)?|uivEXT)|VertexAttrib(?:I(?:ivEXT|uivEXT)|Pointerv(?:ARB)?|dv(?:ARB)?|fv(?:ARB)?|iv(?:ARB)?)))|Hi(?:nt|stogram)|I(?:n(?:dex(?:Mask|Pointer|d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?|ub(?:v)?)|itNames|sertEventMarkerEXT|terleavedArrays)|s(?:Buffer(?:ARB)?|Enabled(?:IndexedEXT)?|F(?:enceAPPLE|ramebuffer(?:EXT)?)|List|Program(?:ARB)?|Query(?:ARB)?|Renderbuffer(?:EXT)?|S(?:hader|ync)|Texture|VertexA(?:rrayAPPLE|ttribEnabledAPPLE)))|L(?:abelObjectEXT|i(?:ght(?:Model(?:f(?:v)?|i(?:v)?)|f(?:v)?|i(?:v)?)|n(?:e(?:Stipple|Width)|kProgram(?:ARB)?)|stBase)|o(?:ad(?:Identity|Matrix(?:d|f)|Name|TransposeMatrix(?:d(?:ARB)?|f(?:ARB)?))|gicOp))|M(?:a(?:p(?:1(?:d|f)|2(?:d|f)|Buffer(?:ARB)?|Grid(?:1(?:d|f)|2(?:d|f))|VertexAttrib(?:1(?:dAPPLE|fAPPLE)|2(?:dAPPLE|fAPPLE)))|t(?:erial(?:f(?:v)?|i(?:v)?)|rixMode))|inmax|ult(?:Matrix(?:d|f)|TransposeMatrix(?:d(?:ARB)?|f(?:ARB)?)|i(?:Draw(?:Arrays(?:EXT)?|Element(?:ArrayAPPLE|s(?:BaseVertex|EXT)?)|RangeElementArrayAPPLE)|TexCoord(?:1(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)|2(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)|3(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)|4(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)))))|N(?:ewList|ormal(?:3(?:b(?:v)?|d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|Pointer))|O(?:bject(?:PurgeableAPPLE|UnpurgeableAPPLE)|rtho)|P(?:assThrough|ixel(?:Map(?:fv|u(?:iv|sv))|Store(?:f|i)|Transfer(?:f|i)|Zoom)|o(?:int(?:Parameter(?:f(?:ARB|v(?:ARB)?)?|i(?:NV|v(?:NV)?)?)|Size(?:PointerAPPLE)?)|lygon(?:Mode|Offset|Stipple)|p(?:Attrib|ClientAttrib|GroupMarkerEXT|Matrix|Name))|r(?:ioritizeTextures|o(?:gram(?:EnvParameter(?:4(?:d(?:ARB|vARB)|f(?:ARB|vARB))|s4fvEXT)|LocalParameter(?:4(?:d(?:ARB|vARB)|f(?:ARB|vARB))|s4fvEXT)|ParameteriEXT|StringARB)|vokingVertex(?:EXT)?))|ush(?:Attrib|ClientAttrib|GroupMarkerEXT|Matrix|Name))|R(?:asterPos(?:2(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|3(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|4(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?))|e(?:ad(?:Buffer|Pixels)|ct(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|nder(?:Mode|bufferStorage(?:EXT|Multisample(?:EXT)?)?)|set(?:Histogram|Minmax))|otate(?:d|f))|S(?:ampleCoverage(?:ARB)?|c(?:ale(?:d|f)|issor)|e(?:condaryColor(?:3(?:b(?:EXT|v(?:EXT)?)?|d(?:EXT|v(?:EXT)?)?|f(?:EXT|v(?:EXT)?)?|i(?:EXT|v(?:EXT)?)?|s(?:EXT|v(?:EXT)?)?|u(?:b(?:EXT|v(?:EXT)?)?|i(?:EXT|v(?:EXT)?)?|s(?:EXT|v(?:EXT)?)?))|Pointer(?:EXT)?)|lectBuffer|parableFilter2D|tFenceAPPLE)|hade(?:Model|rSource(?:ARB)?)|tencil(?:Func(?:Separate(?:ATI)?)?|Mask(?:Separate)?|Op(?:Separate(?:ATI)?)?)|wapAPPLE)|T(?:e(?:st(?:FenceAPPLE|ObjectAPPLE)|x(?:Coord(?:1(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|2(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|3(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|4(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|Pointer)|Env(?:f(?:v)?|i(?:v)?)|Gen(?:d(?:v)?|f(?:v)?|i(?:v)?)|Image(?:1D|2D|3D)|Parameter(?:I(?:ivEXT|uivEXT)|f(?:v)?|i(?:v)?)|SubImage(?:1D|2D|3D)|ture(?:BarrierNV|RangeAPPLE)))|rans(?:formFeedbackVaryingsEXT|late(?:d|f)))|U(?:n(?:iform(?:1(?:f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|ui(?:EXT|vEXT))|2(?:f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|ui(?:EXT|vEXT))|3(?:f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|ui(?:EXT|vEXT))|4(?:f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|ui(?:EXT|vEXT))|BufferEXT|Matrix(?:2(?:fv(?:ARB)?|x(?:3fv|4fv))|3(?:fv(?:ARB)?|x(?:2fv|4fv))|4(?:fv(?:ARB)?|x(?:2fv|3fv))))|mapBuffer(?:ARB)?)|seProgram(?:ObjectARB)?)|V(?:alidateProgram(?:ARB)?|ertex(?:2(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|3(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|4(?:d(?:v)?|f(?:v)?|i(?:v)?|s(?:v)?)|A(?:rray(?:ParameteriAPPLE|RangeAPPLE)|ttrib(?:1(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)|2(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)|3(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)|4(?:N(?:bv(?:ARB)?|iv(?:ARB)?|sv(?:ARB)?|u(?:b(?:ARB|v(?:ARB)?)?|iv(?:ARB)?|sv(?:ARB)?))|bv(?:ARB)?|d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|iv(?:ARB)?|s(?:ARB|v(?:ARB)?)?|u(?:bv(?:ARB)?|iv(?:ARB)?|sv(?:ARB)?))|DivisorARB|I(?:1(?:i(?:EXT|vEXT)|ui(?:EXT|vEXT))|2(?:i(?:EXT|vEXT)|ui(?:EXT|vEXT))|3(?:i(?:EXT|vEXT)|ui(?:EXT|vEXT))|4(?:bvEXT|i(?:EXT|vEXT)|svEXT|u(?:bvEXT|i(?:EXT|vEXT)|svEXT))|PointerEXT)|Pointer(?:ARB)?))|BlendARB|Point(?:SizefAPPLE|er))|iewport)|W(?:aitSync|eight(?:PointerARB|bvARB|dvARB|fvARB|ivARB|svARB|u(?:bvARB|ivARB|svARB))|indowPos(?:2(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)|3(?:d(?:ARB|v(?:ARB)?)?|f(?:ARB|v(?:ARB)?)?|i(?:ARB|v(?:ARB)?)?|s(?:ARB|v(?:ARB)?)?)))))|host_(?:c(?:heck_multiuser_mode|reate_mach_voucher(?:_trap)?)|default_memory_manager|get_(?:UNDServer|atm_diagnostic_flag|boot_info|clock_(?:control|service)|exception_ports|io_master|multiuser_config_flags|special_port)|info|kernel_version|lockgroup_info|p(?:age_size|r(?:iv_statistics|ocessor(?:_(?:info|set(?:_priv|s))|s)))|re(?:boot|gister_(?:mach_voucher_attr_manager|well_known_mach_voucher_attr_manager)|quest_notification)|s(?:e(?:curity_(?:create_task_token|set_task_token)|t_(?:UNDServer|atm_diagnostic_flag|exception_ports|multiuser_config_flags|special_port))|tatistics(?:64)?|wap_exception_ports)|virtual_physical_table_info)|i(?:max(?:abs|div)|s(?:a(?:l(?:num|pha)|scii)|blank|cntrl|digit|graph|hexnumber|ideogram|lower|number|p(?:honogram|rint|unct)|rune|sp(?:ace|ecial)|upper|xdigit))|k(?:ext_request|mod_(?:c(?:ontrol|reate)|destroy|get_info))|l(?:dtox80|isten|ock_(?:acquire|handoff(?:_accept)?|make_stable|release|set_(?:create|destroy)|try))|m(?:a(?:c(?:h_(?:error(?:_(?:string|type))?|generate_activity_id|host_self|m(?:ake_memory_entry(?:_64)?|emory_(?:info|object_memory_entry(?:_64)?)|sg(?:_(?:destroy|overwrite|receive|se(?:nd|rver(?:_(?:importance|once))?)))?)|port(?:_(?:allocate(?:_(?:full|name|qos))?|construct|d(?:e(?:allocate|str(?:oy|uct))|nrequest_info)|extract_(?:member|right)|g(?:et_(?:attributes|context|refs|s(?:et_status|rights))|uard(?:_with_flags)?)|insert_(?:member|right)|k(?:ernel_object|object(?:_description)?)|mo(?:d_refs|ve_member)|names|peek|re(?:name|quest_notification)|s(?:et_(?:attributes|context|mscount|seqno)|pace_(?:basic_info|info)|wap_guard)|type|unguard)|s_(?:lookup|register))|thread_self|v(?:m_(?:region_info(?:_64)?|wire)|oucher_(?:deallocate|extract_attr_recipe_trap))|zone_info(?:_for_zone)?)|x_(?:backing_store_(?:recovery|suspend)|swapo(?:ff|n)|triggers))|dvise|lloc|trix_(?:multiply|scale))|i(?:g_(?:allocate|dealloc(?:_reply_port|ate)|get_reply_port|put_reply_port|reply_setup|strncpy(?:_zerofill)?)|n(?:core|herit))|lock(?:all)?|map|protect|sync|un(?:lock(?:all)?|map))|num2decl|p(?:anic(?:_init)?|fctlinput|id_for_task|osix_m(?:advise|emalign)|rocessor_(?:assign|control|exit|get_assignment|info|s(?:et_(?:create|de(?:fault|stroy)|info|max_priority|policy_(?:control|disable|enable)|sta(?:ck_usage|tistics)|t(?:asks|hreads))|tart)))|re(?:alloc|cv(?:from|msg)?|lationl)|s(?:afe_gets|e(?:c_re(?:lease|tain)|maphore_(?:create|destroy|signal(?:_(?:all|thread))?|timedwait(?:_signal)?|wait(?:_signal)?)|nd(?:file|msg|to)?|t(?:au(?:dit_addr|id)|sockopt))|h(?:m_(?:open|unlink)|utdown)|imd_(?:a(?:bs|ct|dd|l(?:l|most_equal_elements(?:_relative)?)|n(?:gle|y)|xis)|b(?:ezier|itselect)|c(?:har(?:_sat)?|lamp|onjugate|ross)|d(?:eterminant|i(?:agonal_matrix|stance(?:_squared)?)|o(?:t|uble))|equal|f(?:ast_(?:distance|length|normalize|project|r(?:ecip|sqrt))|loat|ract)|i(?:mag|n(?:circle|sphere|t(?:_sat)?|verse))|l(?:ength(?:_squared)?|inear_combination|ong(?:_sat)?)|m(?:a(?:ke_(?:char(?:16(?:_undef)?|2(?:_undef)?|3(?:2(?:_undef)?|_undef)?|4(?:_undef)?|64(?:_undef)?|8(?:_undef)?)|double(?:2(?:_undef)?|3(?:_undef)?|4(?:_undef)?|8(?:_undef)?)|float(?:16(?:_undef)?|2(?:_undef)?|3(?:_undef)?|4(?:_undef)?|8(?:_undef)?)|int(?:16(?:_undef)?|2(?:_undef)?|3(?:_undef)?|4(?:_undef)?|8(?:_undef)?)|long(?:2(?:_undef)?|3(?:_undef)?|4(?:_undef)?|8(?:_undef)?)|short(?:16(?:_undef)?|2(?:_undef)?|3(?:2(?:_undef)?|_undef)?|4(?:_undef)?|8(?:_undef)?)|u(?:char(?:16(?:_undef)?|2(?:_undef)?|3(?:2(?:_undef)?|_undef)?|4(?:_undef)?|64(?:_undef)?|8(?:_undef)?)|int(?:16(?:_undef)?|2(?:_undef)?|3(?:_undef)?|4(?:_undef)?|8(?:_undef)?)|long(?:2(?:_undef)?|3(?:_undef)?|4(?:_undef)?|8(?:_undef)?)|short(?:16(?:_undef)?|2(?:_undef)?|3(?:2(?:_undef)?|_undef)?|4(?:_undef)?|8(?:_undef)?)))|trix(?:3x3|4x4|_from_rows)?|x)|i(?:n|x)|ul)|n(?:egate|orm(?:_(?:inf|one)|alize))|orient|pr(?:ecise_(?:distance|length|normalize|project|r(?:ecip|sqrt))|oject)|quaternion|r(?:e(?:al|cip|duce_(?:add|m(?:ax|in))|f(?:lect|ract))|sqrt)|s(?:elect|hort(?:_sat)?|ign|lerp(?:_longest)?|moothstep|pline|tep|ub)|transpose|u(?:char(?:_sat)?|int(?:_sat)?|long(?:_sat)?|short(?:_sat)?))|lot_name|ock(?:atmark|et(?:pair)?)|trto(?:imax|umax)|wtch(?:_pri)?)|t(?:ask_(?:assign(?:_default)?|create(?:_suid_cred)?|for_pid|ge(?:nerate_corpse|t_(?:assignment|dyld_image_infos|e(?:mulation_vector|xc(?:_guard_behavior|eption_ports))|mach_voucher|s(?:pecial_port|tate)))|in(?:fo|spect)|map_corpse_info(?:_64)?|name_for_pid|p(?:olicy(?:_(?:get|set))?|urgable_info)|re(?:gister_dyld_(?:get_process_state|image_infos|s(?:et_dyld_state|hared_cache_image_info))|sume(?:2)?)|s(?:ample|e(?:lf_trap|t_(?:e(?:mulation(?:_vector)?|xc(?:_guard_behavior|eption_ports))|info|mach_voucher|p(?:hys_footprint_limit|o(?:licy|rt_space))|ras_pc|s(?:pecial_port|tate)))|uspend(?:2)?|wap_(?:exception_ports|mach_voucher))|t(?:erminate|hreads)|unregister_dyld_image_infos|wire|zone_info)|hread_(?:a(?:bort(?:_safely)?|ssign(?:_default)?)|create(?:_running)?|depress_abort|get_(?:assignment|exception_ports|mach_voucher|s(?:pecial_port|tate))|info|policy(?:_(?:get|set))?|resume|s(?:ample|et_(?:exception_ports|mach_voucher|policy|s(?:pecial_port|tate))|uspend|w(?:ap_(?:exception_ports|mach_voucher)|itch))|terminate|wire)|o(?:ascii|lower|upper))|uuid_(?:c(?:lear|o(?:mpare|py))|generate(?:_(?:early_random|random|time))?|is_null|parse|unparse(?:_(?:lower|upper))?)|v(?:AEBuild(?:AppleEvent|Desc|Parameters)|alloc|ector(?:16|2|3(?:2)?|4|8)|m_(?:allocate(?:_cpm)?|behavior_set|copy|deallocate|inherit|m(?:a(?:chine_attribute|p(?:_(?:64|exec_lockdown|page_query)|ped_pages_info)?)|sync)|p(?:rotect|urgable_control)|re(?:ad(?:_(?:list|overwrite))?|gion(?:_(?:64|recurse(?:_64)?))?|map)|w(?:ire|rite))|oucher_mach_msg_(?:adopt|clear|revert|set))|wcsto(?:imax|umax)|x(?:80told|pc_(?:array_(?:app(?:end_value|ly)|create(?:_connection)?|dup_fd|get_(?:bool|count|d(?:at(?:a|e)|ouble)|int64|string|u(?:int64|uid)|value)|set_(?:bool|connection|d(?:at(?:a|e)|ouble)|fd|int64|string|u(?:int64|uid)|value))|bool_(?:create|get_value)|co(?:nnection_(?:c(?:ancel|reate(?:_(?:from_endpoint|mach_service))?)|get_(?:asid|context|e(?:gid|uid)|name|pid)|resume|s(?:e(?:nd_(?:barrier|message(?:_with_reply(?:_sync)?)?)|t_(?:context|event_handler|finalizer_f|target_queue))|uspend))|py(?:_description)?)|d(?:at(?:a_(?:create(?:_with_dispatch_data)?|get_(?:bytes(?:_ptr)?|length))|e_(?:create(?:_from_current)?|get_value))|ebugger_api_misuse_info|ictionary_(?:apply|create(?:_(?:connection|reply))?|dup_fd|get_(?:bool|count|d(?:at(?:a|e)|ouble)|int64|remote_connection|string|u(?:int64|uid)|value)|set_(?:bool|connection|d(?:at(?:a|e)|ouble)|fd|int64|string|u(?:int64|uid)|value))|ouble_(?:create|get_value))|e(?:ndpoint_create|qual)|fd_(?:create|dup)|get_type|hash|int64_(?:create|get_value)|main|null_create|re(?:lease|tain)|s(?:et_event_stream_handler|hmem_(?:create|map)|tring_(?:create(?:_with_format(?:_and_arguments)?)?|get_(?:length|string_ptr)))|transaction_(?:begin|end)|u(?:int64_(?:create|get_value)|uid_(?:create|get_bytes)))))\\b)" + }, { "captures": { "1": { @@ -376,7 +898,7 @@ "name": "support.function.cf.c" } }, - "match": "(\\s*)(\\bCF(?:A(?:bsoluteTimeGetCurrent|llocator(?:Allocate|Create|Deallocate|Get(?:Context|Default|PreferredSizeForSize|TypeID)|Reallocate|SetDefault)|rray(?:App(?:end(?:Array|Value)|lyFunction)|BSearchValues|C(?:ontainsValue|reate(?:Copy|Mutable(?:Copy)?)?)|ExchangeValuesAtIndices|Get(?:Count(?:OfValue)?|FirstIndexOfValue|LastIndexOfValue|TypeID|Value(?:AtIndex|s))|InsertValueAtIndex|Re(?:move(?:AllValues|ValueAtIndex)|placeValues)|S(?:etValueAtIndex|ortValues))|ttributedString(?:BeginEditing|Create(?:Copy|Mutable(?:Copy)?|WithSubstring)?|EndEditing|Get(?:Attribute(?:AndLongestEffectiveRange|s(?:AndLongestEffectiveRange)?)?|Length|MutableString|String|TypeID)|Re(?:moveAttribute|place(?:AttributedString|String))|SetAttribute(?:s)?))|B(?:ag(?:A(?:ddValue|pplyFunction)|C(?:ontainsValue|reate(?:Copy|Mutable(?:Copy)?)?)|Get(?:Count(?:OfValue)?|TypeID|Value(?:IfPresent|s)?)|Re(?:move(?:AllValues|Value)|placeValue)|SetValue)|i(?:naryHeap(?:A(?:ddValue|pplyFunction)|C(?:ontainsValue|reate(?:Copy)?)|Get(?:Count(?:OfValue)?|Minimum(?:IfPresent)?|TypeID|Values)|Remove(?:AllValues|MinimumValue))|tVector(?:C(?:ontainsBit|reate(?:Copy|Mutable(?:Copy)?)?)|FlipBit(?:AtIndex|s)|Get(?:Bit(?:AtIndex|s)|Count(?:OfBit)?|FirstIndexOfBit|LastIndexOfBit|TypeID)|Set(?:AllBits|Bit(?:AtIndex|s)|Count)))|ooleanGet(?:TypeID|Value)|undle(?:C(?:loseBundleResourceMap|opy(?:AuxiliaryExecutableURL|Bu(?:iltInPlugInsURL|ndle(?:Localizations|URL))|Executable(?:Architectures(?:ForURL)?|URL)|InfoDictionary(?:ForURL|InDirectory)|Localiz(?:ationsFor(?:Preferences|URL)|edString)|Pr(?:eferredLocalizationsFromArray|ivateFrameworksURL)|Resource(?:URL(?:ForLocalization|InDirectory|sOfType(?:ForLocalization|InDirectory)?)?|sDirectoryURL)|S(?:hared(?:FrameworksURL|SupportURL)|upportFilesDirectoryURL))|reate(?:BundlesFromDirectory)?)|Get(?:AllBundles|BundleWithIdentifier|D(?:ataPointer(?:ForName|sForNames)|evelopmentRegion)|FunctionPointer(?:ForName|sForNames)|I(?:dentifier|nfoDictionary)|LocalInfoDictionary|MainBundle|P(?:ackageInfo(?:InDirectory)?|lugIn)|TypeID|V(?:alueForInfoDictionaryKey|ersionNumber))|IsExecutableLoaded|LoadExecutable(?:AndReturnError)?|OpenBundleResource(?:Files|Map)|PreflightExecutable|UnloadExecutable)|yteOrderGetCurrent)|C(?:alendar(?:AddComponents|C(?:o(?:mposeAbsoluteTime|py(?:Current|Locale|TimeZone))|reateWithIdentifier)|DecomposeAbsoluteTime|Get(?:ComponentDifference|FirstWeekday|Identifier|M(?:aximumRangeOfUnit|inimum(?:DaysInFirstWeek|RangeOfUnit))|OrdinalityOfUnit|RangeOfUnit|T(?:imeRangeOfUnit|ypeID))|Set(?:FirstWeekday|Locale|MinimumDaysInFirstWeek|TimeZone))|haracterSet(?:AddCharactersIn(?:Range|String)|Create(?:BitmapRepresentation|Copy|InvertedSet|Mutable(?:Copy)?|With(?:BitmapRepresentation|CharactersIn(?:Range|String)))|Get(?:Predefined|TypeID)|HasMemberInPlane|I(?:n(?:tersect|vert)|s(?:CharacterMember|LongCharacterMember|SupersetOfSet))|RemoveCharactersIn(?:Range|String)|Union)|o(?:nvert(?:Double(?:HostToSwapped|SwappedToHost)|Float(?:32(?:HostToSwapped|SwappedToHost)|64(?:HostToSwapped|SwappedToHost)|HostToSwapped|SwappedToHost))|py(?:Description|HomeDirectoryURL|TypeIDDescription)))|D(?:at(?:a(?:AppendBytes|Create(?:Copy|Mutable(?:Copy)?|WithBytesNoCopy)?|DeleteBytes|Find|Get(?:Byte(?:Ptr|s)|Length|MutableBytePtr|TypeID)|IncreaseLength|ReplaceBytes|SetLength)|e(?:C(?:ompare|reate)|Formatter(?:C(?:opyProperty|reate(?:DateF(?:ormatFromTemplate|romString)|StringWith(?:AbsoluteTime|Date))?)|Get(?:AbsoluteTimeFromString|DateStyle|Format|Locale|T(?:imeStyle|ypeID))|Set(?:Format|Property))|Get(?:AbsoluteTime|T(?:imeIntervalSinceDate|ypeID))))|ictionary(?:A(?:ddValue|pplyFunction)|C(?:ontains(?:Key|Value)|reate(?:Copy|Mutable(?:Copy)?)?)|Get(?:Count(?:Of(?:Key|Value))?|KeysAndValues|TypeID|Value(?:IfPresent)?)|Re(?:move(?:AllValues|Value)|placeValue)|SetValue))|E(?:qual|rror(?:C(?:opy(?:Description|FailureReason|RecoverySuggestion|UserInfo)|reate(?:WithUserInfoKeysAndValues)?)|Get(?:Code|Domain|TypeID)))|File(?:Descriptor(?:Create(?:RunLoopSource)?|DisableCallBacks|EnableCallBacks|Get(?:Context|NativeDescriptor|TypeID)|I(?:nvalidate|sValid))|Security(?:C(?:opy(?:AccessControlList|GroupUUID|OwnerUUID)|reate(?:Copy)?)|Get(?:Group|Mode|Owner|TypeID)|Set(?:AccessControlList|Group(?:UUID)?|Mode|Owner(?:UUID)?)))|Get(?:Allocator|RetainCount|TypeID)|Hash|Locale(?:C(?:opy(?:AvailableLocaleIdentifiers|C(?:ommonISOCurrencyCodes|urrent)|DisplayNameForPropertyValue|ISO(?:C(?:ountryCodes|urrencyCodes)|LanguageCodes)|PreferredLanguages)|reate(?:C(?:anonicalL(?:anguageIdentifierFromString|ocaleIdentifierFromS(?:criptManagerCodes|tring))|o(?:mponentsFromLocaleIdentifier|py))|LocaleIdentifierFrom(?:Components|WindowsLocaleCode))?)|Get(?:Identifier|Language(?:CharacterDirection|LineDirection)|System|TypeID|Value|WindowsLocaleCodeFromLocaleIdentifier))|M(?:a(?:chPort(?:Create(?:RunLoopSource|WithPort)?|Get(?:Context|InvalidationCallBack|Port|TypeID)|I(?:nvalidate|sValid)|SetInvalidationCallBack)|keCollectable)|essagePort(?:Create(?:Local|R(?:emote|unLoopSource))|Get(?:Context|InvalidationCallBack|Name|TypeID)|I(?:nvalidate|s(?:Remote|Valid))|Se(?:ndRequest|t(?:DispatchQueue|InvalidationCallBack|Name))))|N(?:otificationCenter(?:AddObserver|Get(?:D(?:arwinNotifyCenter|istributedCenter)|LocalCenter|TypeID)|PostNotification(?:WithOptions)?|Remove(?:EveryObserver|Observer))|u(?:llGetTypeID|mber(?:C(?:ompare|reate)|Formatter(?:C(?:opyProperty|reate(?:NumberFromString|StringWith(?:Number|Value))?)|Get(?:DecimalInfoForCurrencyCode|Format|Locale|Style|TypeID|ValueFromString)|Set(?:Format|Property))|Get(?:ByteSize|Type(?:ID)?|Value)|IsFloatType)))|P(?:lugIn(?:AddInstanceForFactory|Create|FindFactoriesForPlugInType(?:InPlugIn)?|Get(?:Bundle|TypeID)|I(?:nstance(?:Create(?:WithInstanceDataSize)?|Get(?:FactoryName|In(?:stanceData|terfaceFunctionTable)|TypeID))|sLoadOnDemand)|Re(?:gister(?:FactoryFunction(?:ByName)?|PlugInType)|moveInstanceForFactory)|SetLoadOnDemand|Unregister(?:Factory|PlugInType))|r(?:eferences(?:A(?:ddSuitePreferencesToApp|pp(?:Synchronize|ValueIsForced))|Copy(?:AppValue|KeyList|Multiple|Value)|GetApp(?:BooleanValue|IntegerValue)|RemoveSuitePreferencesFromApp|S(?:et(?:AppValue|Multiple|Value)|ynchronize))|opertyList(?:Create(?:D(?:ata|eepCopy)|With(?:Data|Stream))|IsValid|Write)))|R(?:angeMake|e(?:adStream(?:C(?:lose|opy(?:Error|Property)|reateWith(?:BytesNoCopy|File))|Get(?:Buffer|Error|Status|TypeID)|HasBytesAvailable|Open|Read|S(?:cheduleWithRunLoop|et(?:Client|Property))|UnscheduleFromRunLoop)|lease|tain)|unLoop(?:Add(?:CommonMode|Observer|Source|Timer)|Co(?:ntains(?:Observer|Source|Timer)|py(?:AllModes|CurrentMode))|Get(?:Current|Main|NextTimerFireDate|TypeID)|IsWaiting|Observer(?:Create(?:WithHandler)?|DoesRepeat|Get(?:Activities|Context|Order|TypeID)|I(?:nvalidate|sValid))|PerformBlock|R(?:emove(?:Observer|Source|Timer)|un(?:InMode)?)|S(?:ource(?:Create|Get(?:Context|Order|TypeID)|I(?:nvalidate|sValid)|Signal)|top)|Timer(?:Create(?:WithHandler)?|DoesRepeat|Get(?:Context|Interval|NextFireDate|Order|TypeID)|I(?:nvalidate|sValid)|SetNextFireDate)|WakeUp))|S(?:et(?:A(?:ddValue|pplyFunction)|C(?:ontainsValue|reate(?:Copy|Mutable(?:Copy)?)?)|Get(?:Count(?:OfValue)?|TypeID|Value(?:IfPresent|s)?)|Re(?:move(?:AllValues|Value)|placeValue)|SetValue)|how(?:Str)?|ocket(?:C(?:o(?:nnectToAddress|py(?:Address|PeerAddress|Registered(?:SocketSignature|Value)))|reate(?:ConnectedToSocketSignature|RunLoopSource|With(?:Native|SocketSignature))?)|DisableCallBacks|EnableCallBacks|Get(?:Context|DefaultNameRegistryPortNumber|Native|SocketFlags|TypeID)|I(?:nvalidate|sValid)|Register(?:SocketSignature|Value)|Se(?:ndData|t(?:Address|DefaultNameRegistryPortNumber|SocketFlags))|Unregister)|tr(?:eamCreate(?:BoundPair|PairWith(?:PeerSocketSignature|Socket(?:ToHost)?))|ing(?:Append(?:C(?:String|haracters)|Format(?:AndArguments)?|PascalString)?|C(?:apitalize|o(?:mpare(?:WithOptions(?:AndLocale)?)?|nvert(?:EncodingTo(?:IANACharSetName|NSStringEncoding|WindowsCodepage)|IANACharSetNameToEncoding|NSStringEncodingToEncoding|WindowsCodepageToEncoding))|reate(?:Array(?:BySeparatingStrings|WithFindResults)|ByCombiningStrings|Copy|ExternalRepresentation|FromExternalRepresentation|Mutable(?:Copy|WithExternalCharactersNoCopy)?|With(?:Bytes(?:NoCopy)?|C(?:String(?:NoCopy)?|haracters(?:NoCopy)?)|F(?:ileSystemRepresentation|ormat(?:AndArguments)?)|PascalString(?:NoCopy)?|Substring)))|Delete|F(?:ind(?:AndReplace|CharacterFromSet|WithOptions(?:AndLocale)?)?|old)|Get(?:Bytes|C(?:String(?:Ptr)?|haracter(?:AtIndex|FromInlineBuffer|s(?:Ptr)?))|DoubleValue|F(?:astestEncoding|ileSystemRepresentation)|HyphenationLocationBeforeIndex|IntValue|L(?:ength|i(?:neBounds|stOfAvailableEncodings)|ongCharacterForSurrogatePair)|M(?:aximumSize(?:ForEncoding|OfFileSystemRepresentation)|ostCompatibleMacStringEncoding)|NameOfEncoding|Pa(?:ragraphBounds|scalString(?:Ptr)?)|RangeOfComposedCharactersAtIndex|S(?:mallestEncoding|urrogatePairForLongCharacter|ystemEncoding)|TypeID)|Has(?:Prefix|Suffix)|I(?:n(?:itInlineBuffer|sert)|s(?:EncodingAvailable|HyphenationAvailableForLocale|Surrogate(?:HighCharacter|LowCharacter)))|Lowercase|Normalize|Pad|Replace(?:All)?|SetExternalCharactersNoCopy|T(?:okenizer(?:AdvanceToNextToken|C(?:opy(?:BestStringLanguage|CurrentTokenAttribute)|reate)|G(?:et(?:Current(?:SubTokens|TokenRange)|TypeID)|oToTokenAtIndex)|SetString)|r(?:ansform|im(?:Whitespace)?))|Uppercase))|wapInt(?:16(?:BigToHost|HostTo(?:Big|Little)|LittleToHost)?|32(?:BigToHost|HostTo(?:Big|Little)|LittleToHost)?|64(?:BigToHost|HostTo(?:Big|Little)|LittleToHost)?))|T(?:imeZone(?:C(?:opy(?:Abbreviation(?:Dictionary)?|Default|KnownNames|LocalizedName|System)|reate(?:With(?:Name|TimeIntervalFromGMT))?)|Get(?:Da(?:ta|ylightSavingTimeOffset)|N(?:ame|extDaylightSavingTimeTransition)|SecondsFromGMT|TypeID)|IsDaylightSavingTime|ResetSystem|Set(?:AbbreviationDictionary|Default))|ree(?:App(?:endChild|lyFunctionToChildren)|Create|FindRoot|Get(?:C(?:hild(?:AtIndex|Count|ren)|ontext)|FirstChild|NextSibling|Parent|TypeID)|InsertSibling|PrependChild|Remove(?:AllChildren)?|S(?:etContext|ortChildren)))|U(?:RL(?:C(?:anBeDecomposed|learResourcePropertyCache(?:ForKey)?|opy(?:AbsoluteURL|F(?:ileSystemPath|ragment)|HostName|LastPathComponent|NetLocation|Pa(?:rameterString|ssword|th(?:Extension)?)|QueryString|Resource(?:Propert(?:iesForKeys|yForKey)|Specifier)|S(?:cheme|trictPath)|UserName)|reate(?:AbsoluteURLWithBytes|B(?:ookmarkData(?:From(?:AliasRecord|File))?|yResolvingBookmarkData)|Copy(?:AppendingPath(?:Component|Extension)|Deleting(?:LastPathComponent|PathExtension))|Data|F(?:ile(?:PathURL|ReferenceURL)|romFileSystemRepresentation(?:RelativeToBase)?)|ResourcePropert(?:iesForKeysFromBookmarkData|yForKeyFromBookmarkData)|StringByReplacingPercentEscapes|With(?:Bytes|FileSystemPath(?:RelativeToBase)?|String)))|Enumerator(?:CreateFor(?:DirectoryURL|MountedVolumes)|Get(?:DescendentLevel|NextURL|TypeID)|SkipDescendents)|Get(?:B(?:aseURL|yte(?:RangeForComponent|s))|FileSystemRepresentation|PortNumber|String|TypeID)|HasDirectoryPath|ResourceIsReachable|S(?:et(?:ResourcePropert(?:iesForKeys|yForKey)|TemporaryResourcePropertyForKey)|t(?:artAccessingSecurityScopedResource|opAccessingSecurityScopedResource))|WriteBookmarkDataToFile)|UID(?:Create(?:From(?:String|UUIDBytes)|String|WithBytes)?|Get(?:ConstantUUIDWithBytes|TypeID|UUIDBytes))|serNotification(?:C(?:ancel|heckBoxChecked|reate(?:RunLoopSource)?)|Display(?:Alert|Notice)|Get(?:Response(?:Dictionary|Value)|TypeID)|PopUpSelection|ReceiveResponse|SecureTextField|Update))|WriteStream(?:C(?:anAcceptBytes|lose|opy(?:Error|Property)|reateWith(?:AllocatedBuffers|Buffer|File))|Get(?:Error|Status|TypeID)|Open|S(?:cheduleWithRunLoop|et(?:Client|Property))|UnscheduleFromRunLoop|Write)|XMLCreateStringBy(?:EscapingEntities|UnescapingEntities))\\b)" + "match": "(\\s*)(\\bCF(?:A(?:bsoluteTimeGetCurrent|llocator(?:Allocate|Create|Deallocate|Get(?:Context|Default|PreferredSizeForSize|TypeID)|Reallocate|SetDefault)|rray(?:App(?:end(?:Array|Value)|lyFunction)|BSearchValues|C(?:ontainsValue|reate(?:Copy|Mutable(?:Copy)?)?)|ExchangeValuesAtIndices|Get(?:Count(?:OfValue)?|FirstIndexOfValue|LastIndexOfValue|TypeID|Value(?:AtIndex|s))|InsertValueAtIndex|Re(?:move(?:AllValues|ValueAtIndex)|placeValues)|S(?:etValueAtIndex|ortValues))|ttributedString(?:BeginEditing|Create(?:Copy|Mutable(?:Copy)?|WithSubstring)?|EndEditing|Get(?:Attribute(?:AndLongestEffectiveRange|s(?:AndLongestEffectiveRange)?)?|Length|MutableString|String|TypeID)|Re(?:moveAttribute|place(?:AttributedString|String))|SetAttribute(?:s)?))|B(?:ag(?:A(?:ddValue|pplyFunction)|C(?:ontainsValue|reate(?:Copy|Mutable(?:Copy)?)?)|Get(?:Count(?:OfValue)?|TypeID|Value(?:IfPresent|s)?)|Re(?:move(?:AllValues|Value)|placeValue)|SetValue)|i(?:naryHeap(?:A(?:ddValue|pplyFunction)|C(?:ontainsValue|reate(?:Copy)?)|Get(?:Count(?:OfValue)?|Minimum(?:IfPresent)?|TypeID|Values)|Remove(?:AllValues|MinimumValue))|tVector(?:C(?:ontainsBit|reate(?:Copy|Mutable(?:Copy)?)?)|FlipBit(?:AtIndex|s)|Get(?:Bit(?:AtIndex|s)|Count(?:OfBit)?|FirstIndexOfBit|LastIndexOfBit|TypeID)|Set(?:AllBits|Bit(?:AtIndex|s)|Count)))|ooleanGet(?:TypeID|Value)|undle(?:C(?:opy(?:AuxiliaryExecutableURL|Bu(?:iltInPlugInsURL|ndle(?:Localizations|URL))|Executable(?:Architectures(?:ForURL)?|URL)|InfoDictionary(?:ForURL|InDirectory)|Localiz(?:ationsFor(?:Preferences|URL)|edString)|Pr(?:eferredLocalizationsFromArray|ivateFrameworksURL)|Resource(?:URL(?:ForLocalization|InDirectory|sOfType(?:ForLocalization|InDirectory)?)?|sDirectoryURL)|S(?:hared(?:FrameworksURL|SupportURL)|upportFilesDirectoryURL))|reate(?:BundlesFromDirectory)?)|Get(?:AllBundles|BundleWithIdentifier|D(?:ataPointer(?:ForName|sForNames)|evelopmentRegion)|FunctionPointer(?:ForName|sForNames)|I(?:dentifier|nfoDictionary)|LocalInfoDictionary|MainBundle|P(?:ackageInfo(?:InDirectory)?|lugIn)|TypeID|V(?:alueForInfoDictionaryKey|ersionNumber))|IsExecutableLoaded|LoadExecutable(?:AndReturnError)?|PreflightExecutable|UnloadExecutable)|yteOrderGetCurrent)|C(?:alendar(?:AddComponents|C(?:o(?:mposeAbsoluteTime|py(?:Current|Locale|TimeZone))|reateWithIdentifier)|DecomposeAbsoluteTime|Get(?:ComponentDifference|FirstWeekday|Identifier|M(?:aximumRangeOfUnit|inimum(?:DaysInFirstWeek|RangeOfUnit))|OrdinalityOfUnit|RangeOfUnit|T(?:imeRangeOfUnit|ypeID))|Set(?:FirstWeekday|Locale|MinimumDaysInFirstWeek|TimeZone))|haracterSet(?:AddCharactersIn(?:Range|String)|Create(?:BitmapRepresentation|Copy|InvertedSet|Mutable(?:Copy)?|With(?:BitmapRepresentation|CharactersIn(?:Range|String)))|Get(?:Predefined|TypeID)|HasMemberInPlane|I(?:n(?:tersect|vert)|s(?:CharacterMember|LongCharacterMember|SupersetOfSet))|RemoveCharactersIn(?:Range|String)|Union)|o(?:nvert(?:Double(?:HostToSwapped|SwappedToHost)|Float(?:32(?:HostToSwapped|SwappedToHost)|64(?:HostToSwapped|SwappedToHost)|HostToSwapped|SwappedToHost))|py(?:Description|HomeDirectoryURL|TypeIDDescription)))|D(?:at(?:a(?:AppendBytes|Create(?:Copy|Mutable(?:Copy)?|WithBytesNoCopy)?|DeleteBytes|Find|Get(?:Byte(?:Ptr|s)|Length|MutableBytePtr|TypeID)|IncreaseLength|ReplaceBytes|SetLength)|e(?:C(?:ompare|reate)|Formatter(?:C(?:opyProperty|reate(?:DateF(?:ormatFromTemplate|romString)|StringWith(?:AbsoluteTime|Date))?)|Get(?:AbsoluteTimeFromString|DateStyle|Format|Locale|T(?:imeStyle|ypeID))|Set(?:Format|Property))|Get(?:AbsoluteTime|T(?:imeIntervalSinceDate|ypeID))))|ictionary(?:A(?:ddValue|pplyFunction)|C(?:ontains(?:Key|Value)|reate(?:Copy|Mutable(?:Copy)?)?)|Get(?:Count(?:Of(?:Key|Value))?|KeysAndValues|TypeID|Value(?:IfPresent)?)|Re(?:move(?:AllValues|Value)|placeValue)|SetValue))|E(?:qual|rror(?:C(?:opy(?:Description|FailureReason|RecoverySuggestion|UserInfo)|reate(?:WithUserInfoKeysAndValues)?)|Get(?:Code|Domain|TypeID)))|File(?:Descriptor(?:Create(?:RunLoopSource)?|DisableCallBacks|EnableCallBacks|Get(?:Context|NativeDescriptor|TypeID)|I(?:nvalidate|sValid))|Security(?:C(?:opy(?:AccessControlList|GroupUUID|OwnerUUID)|reate(?:Copy)?)|Get(?:Group|Mode|Owner|TypeID)|Set(?:AccessControlList|Group(?:UUID)?|Mode|Owner(?:UUID)?)))|Get(?:Allocator|RetainCount|TypeID)|Hash|Locale(?:C(?:opy(?:AvailableLocaleIdentifiers|C(?:ommonISOCurrencyCodes|urrent)|DisplayNameForPropertyValue|ISO(?:C(?:ountryCodes|urrencyCodes)|LanguageCodes)|PreferredLanguages)|reate(?:C(?:anonicalL(?:anguageIdentifierFromString|ocaleIdentifierFromS(?:criptManagerCodes|tring))|o(?:mponentsFromLocaleIdentifier|py))|LocaleIdentifierFrom(?:Components|WindowsLocaleCode))?)|Get(?:Identifier|Language(?:CharacterDirection|LineDirection)|System|TypeID|Value|WindowsLocaleCodeFromLocaleIdentifier))|M(?:a(?:chPort(?:Create(?:RunLoopSource|WithPort)?|Get(?:Context|InvalidationCallBack|Port|TypeID)|I(?:nvalidate|sValid)|SetInvalidationCallBack)|keCollectable)|essagePort(?:Create(?:Local|R(?:emote|unLoopSource))|Get(?:Context|InvalidationCallBack|Name|TypeID)|I(?:nvalidate|s(?:Remote|Valid))|Se(?:ndRequest|t(?:DispatchQueue|InvalidationCallBack|Name))))|N(?:otificationCenter(?:AddObserver|Get(?:D(?:arwinNotifyCenter|istributedCenter)|LocalCenter|TypeID)|PostNotification(?:WithOptions)?|Remove(?:EveryObserver|Observer))|u(?:llGetTypeID|mber(?:C(?:ompare|reate)|Formatter(?:C(?:opyProperty|reate(?:NumberFromString|StringWith(?:Number|Value))?)|Get(?:DecimalInfoForCurrencyCode|Format|Locale|Style|TypeID|ValueFromString)|Set(?:Format|Property))|Get(?:ByteSize|Type(?:ID)?|Value)|IsFloatType)))|P(?:lugIn(?:AddInstanceForFactory|Create|FindFactoriesForPlugInType(?:InPlugIn)?|Get(?:Bundle|TypeID)|I(?:nstance(?:Create(?:WithInstanceDataSize)?|Get(?:FactoryName|In(?:stanceData|terfaceFunctionTable)|TypeID))|sLoadOnDemand)|Re(?:gister(?:FactoryFunction(?:ByName)?|PlugInType)|moveInstanceForFactory)|SetLoadOnDemand|Unregister(?:Factory|PlugInType))|r(?:eferences(?:A(?:ddSuitePreferencesToApp|pp(?:Synchronize|ValueIsForced))|Copy(?:AppValue|KeyList|Multiple|Value)|GetApp(?:BooleanValue|IntegerValue)|RemoveSuitePreferencesFromApp|S(?:et(?:AppValue|Multiple|Value)|ynchronize))|opertyList(?:Create(?:D(?:ata|eepCopy)|With(?:Data|Stream))|IsValid|Write)))|R(?:angeMake|e(?:adStream(?:C(?:lose|opy(?:Error|Property)|reateWith(?:BytesNoCopy|File))|Get(?:Buffer|Error|Status|TypeID)|HasBytesAvailable|Open|Read|S(?:cheduleWithRunLoop|et(?:Client|Property))|UnscheduleFromRunLoop)|lease|tain)|unLoop(?:Add(?:CommonMode|Observer|Source|Timer)|Co(?:ntains(?:Observer|Source|Timer)|py(?:AllModes|CurrentMode))|Get(?:Current|Main|NextTimerFireDate|TypeID)|IsWaiting|Observer(?:Create(?:WithHandler)?|DoesRepeat|Get(?:Activities|Context|Order|TypeID)|I(?:nvalidate|sValid))|PerformBlock|R(?:emove(?:Observer|Source|Timer)|un(?:InMode)?)|S(?:ource(?:Create|Get(?:Context|Order|TypeID)|I(?:nvalidate|sValid)|Signal)|top)|Timer(?:Create(?:WithHandler)?|DoesRepeat|Get(?:Context|Interval|NextFireDate|Order|TypeID)|I(?:nvalidate|sValid)|SetNextFireDate)|WakeUp))|S(?:et(?:A(?:ddValue|pplyFunction)|C(?:ontainsValue|reate(?:Copy|Mutable(?:Copy)?)?)|Get(?:Count(?:OfValue)?|TypeID|Value(?:IfPresent|s)?)|Re(?:move(?:AllValues|Value)|placeValue)|SetValue)|how(?:Str)?|ocket(?:C(?:o(?:nnectToAddress|py(?:Address|PeerAddress|Registered(?:SocketSignature|Value)))|reate(?:ConnectedToSocketSignature|RunLoopSource|With(?:Native|SocketSignature))?)|DisableCallBacks|EnableCallBacks|Get(?:Context|DefaultNameRegistryPortNumber|Native|SocketFlags|TypeID)|I(?:nvalidate|sValid)|Register(?:SocketSignature|Value)|Se(?:ndData|t(?:Address|DefaultNameRegistryPortNumber|SocketFlags))|Unregister)|tr(?:eamCreate(?:BoundPair|PairWith(?:PeerSocketSignature|Socket(?:ToHost)?))|ing(?:Append(?:C(?:String|haracters)|Format(?:AndArguments)?|PascalString)?|C(?:apitalize|o(?:mpare(?:WithOptions(?:AndLocale)?)?|nvert(?:EncodingTo(?:IANACharSetName|NSStringEncoding|WindowsCodepage)|IANACharSetNameToEncoding|NSStringEncodingToEncoding|WindowsCodepageToEncoding))|reate(?:Array(?:BySeparatingStrings|WithFindResults)|ByCombiningStrings|Copy|ExternalRepresentation|FromExternalRepresentation|Mutable(?:Copy|WithExternalCharactersNoCopy)?|With(?:Bytes(?:NoCopy)?|C(?:String(?:NoCopy)?|haracters(?:NoCopy)?)|F(?:ileSystemRepresentation|ormat(?:AndArguments)?)|PascalString(?:NoCopy)?|Substring)))|Delete|F(?:ind(?:AndReplace|CharacterFromSet|WithOptions(?:AndLocale)?)?|old)|Get(?:Bytes|C(?:String(?:Ptr)?|haracter(?:AtIndex|FromInlineBuffer|s(?:Ptr)?))|DoubleValue|F(?:astestEncoding|ileSystemRepresentation)|HyphenationLocationBeforeIndex|IntValue|L(?:ength|i(?:neBounds|stOfAvailableEncodings)|ongCharacterForSurrogatePair)|M(?:aximumSize(?:ForEncoding|OfFileSystemRepresentation)|ostCompatibleMacStringEncoding)|NameOfEncoding|Pa(?:ragraphBounds|scalString(?:Ptr)?)|RangeOfComposedCharactersAtIndex|S(?:mallestEncoding|urrogatePairForLongCharacter|ystemEncoding)|TypeID)|Has(?:Prefix|Suffix)|I(?:n(?:itInlineBuffer|sert)|s(?:EncodingAvailable|HyphenationAvailableForLocale|Surrogate(?:HighCharacter|LowCharacter)))|Lowercase|Normalize|Pad|Replace(?:All)?|SetExternalCharactersNoCopy|T(?:okenizer(?:AdvanceToNextToken|C(?:opy(?:BestStringLanguage|CurrentTokenAttribute)|reate)|G(?:et(?:Current(?:SubTokens|TokenRange)|TypeID)|oToTokenAtIndex)|SetString)|r(?:ansform|im(?:Whitespace)?))|Uppercase))|wapInt(?:16(?:BigToHost|HostTo(?:Big|Little)|LittleToHost)?|32(?:BigToHost|HostTo(?:Big|Little)|LittleToHost)?|64(?:BigToHost|HostTo(?:Big|Little)|LittleToHost)?))|T(?:imeZone(?:C(?:opy(?:Abbreviation(?:Dictionary)?|Default|KnownNames|LocalizedName|System)|reate(?:With(?:Name|TimeIntervalFromGMT))?)|Get(?:Da(?:ta|ylightSavingTimeOffset)|N(?:ame|extDaylightSavingTimeTransition)|SecondsFromGMT|TypeID)|IsDaylightSavingTime|ResetSystem|Set(?:AbbreviationDictionary|Default))|ree(?:App(?:endChild|lyFunctionToChildren)|Create|FindRoot|Get(?:C(?:hild(?:AtIndex|Count|ren)|ontext)|FirstChild|NextSibling|Parent|TypeID)|InsertSibling|PrependChild|Remove(?:AllChildren)?|S(?:etContext|ortChildren)))|U(?:RL(?:C(?:anBeDecomposed|learResourcePropertyCache(?:ForKey)?|opy(?:AbsoluteURL|F(?:ileSystemPath|ragment)|HostName|LastPathComponent|NetLocation|Pa(?:ssword|th(?:Extension)?)|QueryString|Resource(?:Propert(?:iesForKeys|yForKey)|Specifier)|S(?:cheme|trictPath)|UserName)|reate(?:AbsoluteURLWithBytes|B(?:ookmarkData(?:From(?:AliasRecord|File))?|yResolvingBookmarkData)|Copy(?:AppendingPath(?:Component|Extension)|Deleting(?:LastPathComponent|PathExtension))|Data|F(?:ile(?:PathURL|ReferenceURL)|romFileSystemRepresentation(?:RelativeToBase)?)|ResourcePropert(?:iesForKeysFromBookmarkData|yForKeyFromBookmarkData)|StringByReplacingPercentEscapes|With(?:Bytes|FileSystemPath(?:RelativeToBase)?|String)))|Enumerator(?:CreateFor(?:DirectoryURL|MountedVolumes)|Get(?:DescendentLevel|NextURL|TypeID)|SkipDescendents)|Get(?:B(?:aseURL|yte(?:RangeForComponent|s))|FileSystemRepresentation|PortNumber|String|TypeID)|HasDirectoryPath|ResourceIsReachable|S(?:et(?:ResourcePropert(?:iesForKeys|yForKey)|TemporaryResourcePropertyForKey)|t(?:artAccessingSecurityScopedResource|opAccessingSecurityScopedResource))|WriteBookmarkDataToFile)|UID(?:Create(?:From(?:String|UUIDBytes)|String|WithBytes)?|Get(?:ConstantUUIDWithBytes|TypeID|UUIDBytes))|serNotification(?:C(?:ancel|heckBoxChecked|reate(?:RunLoopSource)?)|Display(?:Alert|Notice)|Get(?:Response(?:Dictionary|Value)|TypeID)|PopUpSelection|ReceiveResponse|SecureTextField|Update))|WriteStream(?:C(?:anAcceptBytes|lose|opy(?:Error|Property)|reateWith(?:AllocatedBuffers|Buffer|File))|Get(?:Error|Status|TypeID)|Open|S(?:cheduleWithRunLoop|et(?:Client|Property))|UnscheduleFromRunLoop|Write)|XMLCreateStringBy(?:EscapingEntities|UnescapingEntities))\\b)" }, { "captures": { @@ -400,6 +922,28 @@ }, "match": "(\\s*)(\\b(?:clock_(?:get(?:res|time(?:_nsec_np)?)|settime)|mk(?:ostemp(?:s)?|pathat_np)|rename(?:atx_np|x_np)|timingsafe_bcmp)\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.clib.10.13.c" + } + }, + "match": "(\\s*)(\\b(?:fmemopen|mk(?:dtempat_np|ostempsat_np|stempsat_np)|open_memstream|ptsname_r|setattrlistat)\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.clib.10.15.c" + } + }, + "match": "(\\s*)(\\b(?:rpmatch|timespec_get)\\b)" + }, { "captures": { "1": { @@ -420,7 +964,7 @@ "name": "support.function.clib.10.9.c" } }, - "match": "(\\s*)(\\bf(?:fsll|lsll)\\b)" + "match": "(\\s*)(\\b(?:f(?:fsll|lsll)|memset_s)\\b)" }, { "captures": { @@ -431,7 +975,7 @@ "name": "support.function.clib.c" } }, - "match": "(\\s*)(\\b(?:a(?:64l|b(?:ort|s)|c(?:c(?:ess(?:x_np)?|t)|os(?:f|h(?:f|l)?|l)?)|dd_profil|l(?:arm|loca)|rc4random(?:_(?:addrandom|buf|stir|uniform))?|s(?:ctime(?:_r)?|in(?:f|h(?:f|l)?|l)?|printf)|t(?:an(?:2(?:f|l)?|f|h(?:f|l)?|l)?|exit(?:_b)?|o(?:f|i|l(?:l)?)))|b(?:c(?:mp|opy)|rk|s(?:d_signal|earch(?:_b)?)|zero)|c(?:alloc|brt(?:f|l)?|eil(?:f|l)?|get(?:c(?:ap|lose)|ent|first|match|n(?:ext|um)|s(?:et|tr)|ustr)|h(?:dir|own|root)|l(?:earerr|o(?:ck|se))|o(?:nfstr|pysign(?:f|l)?|s(?:f|h(?:f|l)?|l)?)|r(?:eat|ypt)|t(?:ermid(?:_r)?|ime(?:_r)?))|d(?:evname(?:_r)?|i(?:fftime|gittoint|spatch_(?:time|walltime)|v)|printf|rand48|up(?:2)?)|e(?:cvt|n(?:crypt|dusershell)|r(?:and48|f(?:c(?:f|l)?|f|l)?)|x(?:changedata|ec(?:l(?:e|p)?|v(?:P|e|p)?)|it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|f(?:abs(?:f|l)?|c(?:h(?:dir|own)|lose|ntl|vt)|d(?:im(?:f|l)?|open)|e(?:of|rror)|f(?:l(?:agstostr|ush)|s(?:ctl|l)?)|get(?:attrlist|c|ln|pos|s)|ile(?:no|sec_(?:dup|free|get_property|init|query_property|set_property|unset_property))|l(?:o(?:ck(?:file)?|or(?:f|l)?)|s(?:l)?)|m(?:a(?:f|l|x(?:f|l)?)?|in(?:f|l)?|od(?:f|l)?|tcheck)|o(?:pen|rk)|p(?:athconf|rintf|u(?:rge|t(?:c|s)))|re(?:ad|e|open|xp(?:f|l)?)|s(?:c(?:anf|tl)|e(?:ek(?:o)?|t(?:attrlist|pos))|ync)|t(?:ell(?:o)?|r(?:uncate|ylockfile))|un(?:lockfile|open)|write)|g(?:cvt|et(?:attrlist|bsize|c(?:_unlocked|har(?:_unlocked)?|wd)?|d(?:ate|elim|irentriesattr|omainname|tablesize)|e(?:gid|nv|uid)|g(?:id|roup(?:list|s))|host(?:id|name)|iopolicy_np|l(?:ine|o(?:adavg|gin(?:_r)?))|mode|opt|p(?:a(?:gesize|ss)|eereid|g(?:id|rp)|id|pid|r(?:iority|ogname))|r(?:limit|usage)|s(?:groups_np|id|ubopt)?|u(?:id|sershell)|w(?:d|groups_np)?)|mtime(?:_r)?|rantpt)|h(?:eapsort(?:_b)?|ypot(?:f|l)?)|i(?:logb(?:f|l)?|n(?:dex|it(?:groups|state))|ruserok(?:_sa)?|s(?:a(?:l(?:num|pha)|scii|tty)|blank|cntrl|digit|graph|hexnumber|ideogram|lower|number|p(?:honogram|rint|unct)|rune|s(?:etugid|p(?:ace|ecial))|upper|xdigit))|j(?:0|1|n|rand48)|kill(?:pg)?|l(?:64a|abs|c(?:hown|ong48)|d(?:exp(?:f|l)?|iv)|gamma(?:f|l)?|ink|l(?:abs|div|r(?:int(?:f|l)?|ound(?:f|l)?))|o(?:c(?:al(?:econv|time(?:_r)?)|kf)|g(?:1(?:0(?:f|l)?|p(?:f|l)?)|2(?:f|l)?|b(?:f|l)?|f|l)?|ngjmp(?:error)?)|r(?:and48|int(?:f|l)?|ound(?:f|l)?)|seek)|m(?:a(?:jor|kedev|lloc)|b(?:len|stowcs|towc)|e(?:m(?:c(?:cpy|hr|mp|py)|m(?:em|ove)|set(?:_pattern(?:16|4|8))?)|rgesort(?:_b)?)|inor|k(?:dtemp|nod|stemp(?:_dprotected_np|s)?|t(?:emp|ime))|odf(?:f|l)?|rand48)|n(?:an(?:f|l|osleep)?|e(?:arbyint(?:f|l)?|xt(?:after(?:f|l)?|toward(?:f|l)?))|fssvc|ice|rand48)|open(?:_dprotected_np|x_np)?|p(?:a(?:thconf|use)|close|error|ipe|o(?:pen|six(?:2time|_(?:memalign|openpt))|w(?:f|l)?)|r(?:ead|intf|ofil)|s(?:elect|ignal|ort(?:_(?:b|r))?)|t(?:hread_(?:getugid_np|kill|s(?:etugid_np|igmask))|sname)|ut(?:c(?:_unlocked|har(?:_unlocked)?)?|env|s|w)|write)|qsort(?:_(?:b|r))?|r(?:a(?:dixsort|ise|nd(?:_r|om)?)|cmd(?:_af)?|e(?:a(?:d(?:link)?|l(?:loc(?:f)?|path))|boot|m(?:ainder(?:f|l)?|ove|quo(?:f|l)?)|name|voke|wind)|in(?:dex|t(?:f|l)?)|mdir|ound(?:f|l)?|resvport(?:_af)?|userok)|s(?:brk|ca(?:lb(?:ln(?:f|l)?|n(?:f|l)?)?|nf)|e(?:archfs|ed48|lect|t(?:attrlist|buf(?:fer)?|domainname|e(?:gid|nv|uid)|g(?:id|roups)|host(?:id|name)|iopolicy_np|jmp|key|l(?:inebuf|o(?:cale|gin))|mode|p(?:g(?:id|rp)|r(?:iority|ogname))|r(?:e(?:gid|uid)|gid|limit|uid)|s(?:groups_np|id|tate)|u(?:id|sershell)|vbuf|wgroups_np))|i(?:g(?:a(?:ction|ddset|ltstack)|block|delset|emptyset|fillset|hold|i(?:gnore|nterrupt|smember)|longjmp|nal|p(?:ause|ending|rocmask)|relse|s(?:et(?:jmp|mask)?|uspend)|vec|wait)|n(?:f|h(?:f|l)?|l)?)|leep|nprintf|printf|qrt(?:f|l)?|ra(?:dixsort|nd(?:48|dev|om(?:dev)?)?)|scanf|t(?:p(?:cpy|ncpy)|r(?:c(?:a(?:se(?:cmp|str)|t)|hr|mp|oll|py|spn)|dup|error(?:_r)?|ftime|l(?:c(?:at|py)|en)|mode|n(?:c(?:a(?:secmp|t)|mp|py)|dup|len|str)|p(?:brk|time)|rchr|s(?:ep|ignal|pn|tr)|to(?:d|f(?:flags)?|k(?:_r)?|l(?:d|l)?|q|u(?:l(?:l)?|q))|xfrm))|wa(?:b|pon)|y(?:mlink|nc|s(?:conf|tem)))|t(?:an(?:f|h(?:f|l)?|l)?|c(?:getpgrp|setpgrp)|empnam|gamma(?:f|l)?|ime(?:2posix|gm|local)?|mp(?:file|nam)|o(?:ascii|lower|upper)|runc(?:ate|f|l)?|ty(?:name(?:_r)?|slot)|zset(?:wall)?)|u(?:alarm|n(?:delete|getc|l(?:ink|ockpt)|setenv|whiteout)|sleep)|v(?:a(?:lloc|sprintf)|dprintf|f(?:ork|printf|scanf)|printf|s(?:canf|nprintf|printf|scanf))|w(?:ait(?:3|4|id|pid)?|c(?:stombs|tomb)|rite)|y(?:0|1|n)|zopen)\\b)" + "match": "(\\s*)(\\b(?:a(?:64l|b(?:ort|s)|c(?:c(?:ess(?:x_np)?|t)|os(?:f|h(?:f|l)?|l)?)|d(?:d_profil|jtime)|l(?:arm|loca)|rc4random(?:_(?:buf|stir|uniform))?|s(?:ctime(?:_r)?|in(?:f|h(?:f|l)?|l)?|printf)|t(?:an(?:2(?:f|l)?|f|h(?:f|l)?|l)?|exit(?:_b)?|o(?:f|i|l(?:l)?)))|b(?:c(?:mp|opy)|rk|s(?:d_signal|earch(?:_b)?)|zero)|c(?:brt(?:f|l)?|eil(?:f|l)?|get(?:c(?:ap|lose)|ent|first|match|n(?:ext|um)|s(?:et|tr)|ustr)|h(?:dir|own|root)|l(?:earerr|o(?:ck|se))|o(?:nfstr|pysign(?:f|l)?|s(?:f|h(?:f|l)?|l)?)|r(?:eat|ypt)|t(?:ermid_r|ime(?:_r)?))|d(?:evname(?:_r)?|i(?:fftime|spatch_(?:time|walltime)|v)|printf|rand48|up(?:2)?)|e(?:cvt|n(?:crypt|dusershell)|r(?:and48|f(?:c(?:f|l)?|f|l)?)|x(?:changedata|ec(?:l(?:e|p)?|v(?:P|e|p)?)|it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|f(?:abs(?:f|l)?|c(?:h(?:dir|own)|lose|ntl|vt)|d(?:im(?:f|l)?|open)|e(?:of|rror)|f(?:l(?:agstostr|ush)|s(?:ctl|l)?)|get(?:attrlist|c|ln|pos|s)|ile(?:no|sec_(?:dup|free|get_property|init|query_property|set_property|unset_property))|l(?:o(?:ck(?:file)?|or(?:f|l)?)|s(?:l)?)|m(?:a(?:f|l|x(?:f|l)?)?|in(?:f|l)?|od(?:f|l)?|tcheck)|o(?:pen|rk)|p(?:athconf|rintf|u(?:rge|t(?:c|s)))|re(?:ad|open|xp(?:f|l)?)|s(?:c(?:anf|tl)|e(?:ek(?:o)?|t(?:attrlist|pos))|ync)|t(?:ell(?:o)?|r(?:uncate|ylockfile))|u(?:n(?:lockfile|open)|times)|write)|g(?:cvt|et(?:attrlist|bsize|c(?:_unlocked|har(?:_unlocked)?|wd)?|d(?:ate|elim|irentriesattr|omainname|tablesize)|e(?:gid|nv|uid)|g(?:id|roup(?:list|s))|host(?:id|name)|i(?:opolicy_np|timer)|l(?:ine|o(?:adavg|gin(?:_r)?))|mode|opt|p(?:a(?:gesize|ss)|eereid|g(?:id|rp)|id|pid|r(?:iority|ogname))|r(?:limit|usage)|s(?:groups_np|id|ubopt)?|timeofday|u(?:id|sershell)|w(?:d|groups_np)?)|mtime(?:_r)?|rantpt)|h(?:eapsort(?:_b)?|ypot(?:f|l)?)|i(?:logb(?:f|l)?|n(?:dex|it(?:groups|state))|ruserok(?:_sa)?|s(?:atty|setugid))|j(?:0|1|n|rand48)|kill(?:pg)?|l(?:64a|abs|c(?:hown|ong48)|d(?:exp(?:f|l)?|iv)|gamma(?:f|l)?|ink|l(?:abs|div|r(?:int(?:f|l)?|ound(?:f|l)?))|o(?:c(?:al(?:econv|time(?:_r)?)|kf)|g(?:1(?:0(?:f|l)?|p(?:f|l)?)|2(?:f|l)?|b(?:f|l)?|f|l)?|ngjmp(?:error)?)|r(?:and48|int(?:f|l)?|ound(?:f|l)?)|seek|utimes)|m(?:b(?:len|stowcs|towc)|e(?:m(?:c(?:cpy|hr|mp|py)|m(?:em|ove)|set(?:_pattern(?:16|4|8))?)|rgesort(?:_b)?)|k(?:dtemp|nod|stemp(?:_dprotected_np|s)?|t(?:emp|ime))|odf(?:f|l)?|rand48)|n(?:an(?:f|l|osleep)?|e(?:arbyint(?:f|l)?|xt(?:after(?:f|l)?|toward(?:f|l)?))|fssvc|ice|rand48)|open(?:_dprotected_np|x_np)?|p(?:a(?:thconf|use)|close|error|ipe|o(?:pen|six(?:2time|_openpt)|w(?:f|l)?)|r(?:ead|intf|ofil)|s(?:elect|ignal|ort(?:_(?:b|r))?)|t(?:hread_(?:getugid_np|kill|s(?:etugid_np|igmask))|sname)|ut(?:c(?:_unlocked|har(?:_unlocked)?)?|env|s|w)|write)|qsort(?:_(?:b|r))?|r(?:a(?:dixsort|ise|nd(?:_r|om)?)|cmd(?:_af)?|e(?:a(?:d(?:link)?|l(?:locf|path))|boot|m(?:ainder(?:f|l)?|ove|quo(?:f|l)?)|name|voke|wind)|in(?:dex|t(?:f|l)?)|mdir|ound(?:f|l)?|resvport(?:_af)?|userok)|s(?:brk|ca(?:lb(?:ln(?:f|l)?|n(?:f|l)?)?|nf)|e(?:archfs|ed48|lect|t(?:attrlist|buf(?:fer)?|domainname|e(?:gid|nv|uid)|g(?:id|roups)|host(?:id|name)|i(?:opolicy_np|timer)|jmp|key|l(?:inebuf|o(?:cale|gin))|mode|p(?:g(?:id|rp)|r(?:iority|ogname))|r(?:e(?:gid|uid)|gid|limit|uid)|s(?:groups_np|id|tate)|timeofday|u(?:id|sershell)|vbuf|wgroups_np))|i(?:g(?:a(?:ction|ddset|ltstack)|block|delset|emptyset|fillset|hold|i(?:gnore|nterrupt|smember)|longjmp|nal|p(?:ause|ending|rocmask)|relse|s(?:et(?:jmp|mask)?|uspend)|vec|wait)|md_muladd|n(?:f|h(?:f|l)?|l)?)|leep|nprintf|printf|qrt(?:f|l)?|ra(?:dixsort|nd(?:48|dev|om(?:dev)?)?)|scanf|t(?:p(?:cpy|ncpy)|r(?:c(?:a(?:se(?:cmp|str)|t)|hr|mp|oll|py|spn)|dup|error(?:_r)?|ftime|l(?:c(?:at|py)|en)|mode|n(?:c(?:a(?:secmp|t)|mp|py)|dup|len|str)|p(?:brk|time)|rchr|s(?:ep|ignal|pn|tr)|to(?:d|f(?:flags)?|k(?:_r)?|l(?:d|l)?|q|u(?:l(?:l)?|q))|xfrm))|wa(?:b|pon)|y(?:mlink|nc|s(?:conf|tem)))|t(?:an(?:f|h(?:f|l)?|l)?|c(?:getpgrp|setpgrp)|empnam|gamma(?:f|l)?|ime(?:2posix|gm|local)?|mp(?:file|nam)|runc(?:ate|f|l)?|ty(?:name(?:_r)?|slot)|zset(?:wall)?)|u(?:alarm|n(?:delete|getc|l(?:ink|ockpt)|setenv|whiteout)|sleep|times)|v(?:a(?:lloc|sprintf)|dprintf|f(?:ork|printf|scanf)|printf|s(?:canf|nprintf|printf|scanf))|w(?:ait(?:3|4|id|pid)?|c(?:stombs|tomb)|rite)|y(?:0|1|n)|zopen)\\b)" }, { "captures": { @@ -455,6 +999,17 @@ }, "match": "(\\s*)(\\bdispatch_(?:a(?:ctivate|ssert_queue(?:_(?:barrier|not))?)|queue_(?:attr_make_(?:initially_inactive|with_autorelease_frequency)|create_with_target))\\b)" }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.dispatch.10.14.c" + } + }, + "match": "(\\s*)(\\bdispatch_(?:async_and_wait(?:_f)?|barrier_async_and_wait(?:_f)?|set_qos_class_floor|workloop_(?:create(?:_inactive)?|set_autorelease_frequency))\\b)" + }, { "captures": { "1": { @@ -466,17 +1021,6 @@ }, "match": "(\\s*)(\\bdispatch_(?:a(?:fter(?:_f)?|pply(?:_f)?|sync(?:_f)?)|barrier_(?:async(?:_f)?|sync(?:_f)?)|cancel|data_(?:apply|c(?:opy_region|reate(?:_(?:concat|map|subrange))?)|get_size)|g(?:et_(?:context|global_queue|main_queue|specific)|roup_(?:async(?:_f)?|create|enter|leave|notify(?:_f)?|wait))|io_(?:barrier|c(?:lose|reate(?:_with_(?:io|path))?)|get_descriptor|read|set_(?:high_water|interval|low_water)|write)|main|notify|once(?:_f)?|queue_(?:create|get_(?:label|specific)|set_specific)|re(?:ad|lease|sume|tain)|s(?:e(?:maphore_(?:create|signal|wait)|t_(?:context|finalizer_f|target_queue))|ource_(?:c(?:ancel|reate)|get_(?:data|handle|mask)|merge_data|set_(?:cancel_handler(?:_f)?|event_handler(?:_f)?|registration_handler(?:_f)?|timer)|testcancel)|uspend|ync(?:_f)?)|testcancel|w(?:ait|rite))\\b)" }, - { - "captures": { - "1": { - "name": "punctuation.whitespace.support.function.leading" - }, - "2": { - "name": "support.function.mac-classic.c" - } - }, - "match": "(\\s*)(\\bStrLength\\b)" - }, { "captures": { "1": { @@ -488,28 +1032,6 @@ }, "match": "(\\s*)(\\b(?:OS(?:HostByteOrder|ReadSwapInt(?:16|32|64)|WriteSwapInt(?:16|32|64))|gethostuuid)\\b)" }, - { - "captures": { - "1": { - "name": "punctuation.whitespace.support.function.leading" - }, - "2": { - "name": "support.function.pthread.10.10.c" - } - }, - "match": "(\\s*)(\\bpthread_(?:attr_(?:get_qos_class_np|set_qos_class_np)|get_qos_class_np|override_qos_class_(?:end_np|start_np)|set_qos_class_self_np)\\b)" - }, - { - "captures": { - "1": { - "name": "punctuation.whitespace.support.function.leading" - }, - "2": { - "name": "support.function.pthread.c" - } - }, - "match": "(\\s*)(\\b(?:pthread_(?:at(?:fork|tr_(?:destroy|get(?:detachstate|guardsize|inheritsched|s(?:c(?:hedp(?:aram|olicy)|ope)|tack(?:addr|size)?))|init|set(?:detachstate|guardsize|inheritsched|s(?:c(?:hedp(?:aram|olicy)|ope)|tack(?:addr|size)?))))|c(?:ancel|ond(?:_(?:broadcast|destroy|init|signal(?:_thread_np)?|timedwait(?:_relative_np)?|wait)|attr_(?:destroy|getpshared|init|setpshared))|reate(?:_suspended_np)?)|detach|e(?:qual|xit)|from_mach_thread_np|get(?:_stack(?:addr_np|size_np)|concurrency|name_np|s(?:chedparam|pecific))|is_threaded_np|join|k(?:ey_(?:create|delete)|ill)|m(?:a(?:ch_thread_np|in_np)|utex(?:_(?:destroy|getprioceiling|init|lock|setprioceiling|trylock|unlock)|attr_(?:destroy|get(?:p(?:r(?:ioceiling|otocol)|shared)|type)|init|set(?:p(?:r(?:ioceiling|otocol)|shared)|type))))|once|rwlock(?:_(?:destroy|init|rdlock|try(?:rdlock|wrlock)|unlock|wrlock)|attr_(?:destroy|getpshared|init|setpshared))|s(?:e(?:lf|t(?:c(?:ancel(?:state|type)|oncurrency)|name_np|s(?:chedparam|pecific)))|igmask)|t(?:estcancel|hreadid_np)|yield_np)|sched_(?:get_priority_m(?:ax|in)|yield))\\b)" - }, { "captures": { "1": { @@ -530,7 +1052,40 @@ "name": "support.function.quartz.10.12.c" } }, - "match": "(\\s*)(\\bCGColor(?:ConversionInfoCreate(?:FromList)?|Space(?:CopyICCData|IsWideGamutRGB|SupportsOutput))\\b)" + "match": "(\\s*)(\\bCGColor(?:ConversionInfoCreate(?:FromList)?|Space(?:C(?:opy(?:ICCData|PropertyList)|reateWith(?:ICCData|PropertyList))|IsWideGamutRGB|SupportsOutput))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.quartz.10.13.c" + } + }, + "match": "(\\s*)(\\bCG(?:Color(?:ConversionInfoCreateFromListWithArguments|SpaceGetName)|DataProviderGetInfo|EventCreateScrollWheelEvent2|P(?:DF(?:ContextSetOutline|DocumentGet(?:AccessPermissions|Outline))|athApplyWithBlock))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.quartz.10.14.c" + } + }, + "match": "(\\s*)(\\bCG(?:ColorConversionInfoCreateWithOptions|ImageGet(?:ByteOrderInfo|PixelFormatInfo)|PDF(?:ArrayApplyBlock|DictionaryApplyBlock))\\b)" + }, + { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading" + }, + "2": { + "name": "support.function.quartz.10.15.c" + } + }, + "match": "(\\s*)(\\bCG(?:ColorCreate(?:GenericGrayGamma2_2|SRGB)|PDF(?:Context(?:BeginTag|EndTag)|TagTypeGetName))\\b)" }, { "captures": { @@ -563,7 +1118,7 @@ "name": "support.function.quartz.c" } }, - "match": "(\\s*)(\\bCG(?:A(?:cquireDisplayFadeReservation|ffineTransform(?:Concat|EqualToTransform|I(?:nvert|sIdentity)|Make(?:Rotation|Scale|Translation)?|Rotate|Scale|Translate)|ssociateMouseAndMouseCursorPosition)|B(?:eginDisplayConfiguration|itmapContext(?:Create(?:Image|WithData)?|Get(?:AlphaInfo|B(?:it(?:mapInfo|sPer(?:Component|Pixel))|ytesPerRow)|ColorSpace|Data|Height|Width)))|C(?:a(?:ncelDisplayConfiguration|ptureAllDisplays(?:WithOptions)?)|o(?:lor(?:C(?:onversionInfoGetTypeID|reate(?:Copy(?:WithAlpha)?|Generic(?:CMYK|Gray|RGB)|WithPattern)?)|EqualToColor|Get(?:Alpha|Co(?:lorSpace|mponents|nstantColor)|NumberOfComponents|Pattern|TypeID)|Re(?:lease|tain)|Space(?:C(?:opy(?:ICCProfile|Name)|reate(?:Calibrated(?:Gray|RGB)|Device(?:CMYK|Gray|RGB)|I(?:CCBased|ndexed)|Lab|Pattern|With(?:ICCProfile|Name|PlatformColorSpace)))|Get(?:BaseColorSpace|ColorTable(?:Count)?|Model|NumberOfComponents|TypeID)|Re(?:lease|tain)))|mpleteDisplayConfiguration|n(?:figureDisplay(?:FadeEffect|MirrorOfDisplay|Origin|StereoOperation|WithDisplayMode)|text(?:Add(?:Arc(?:ToPoint)?|CurveToPoint|EllipseInRect|Line(?:ToPoint|s)|Path|QuadCurveToPoint|Rect(?:s)?)|Begin(?:Pa(?:ge|th)|TransparencyLayer(?:WithRect)?)|C(?:l(?:earRect|ip(?:To(?:Mask|Rect(?:s)?))?|osePath)|o(?:n(?:catCTM|vert(?:PointTo(?:DeviceSpace|UserSpace)|RectTo(?:DeviceSpace|UserSpace)|SizeTo(?:DeviceSpace|UserSpace)))|pyPath))|Draw(?:Image|L(?:ayer(?:AtPoint|InRect)|inearGradient)|P(?:DFPage|ath)|RadialGradient|Shading|TiledImage)|E(?:O(?:Clip|FillPath)|nd(?:Page|TransparencyLayer))|F(?:ill(?:EllipseInRect|Path|Rect(?:s)?)|lush)|Get(?:C(?:TM|lipBoundingBox)|InterpolationQuality|Path(?:BoundingBox|CurrentPoint)|T(?:ext(?:Matrix|Position)|ypeID)|UserSpaceToDeviceSpaceTransform)|IsPathEmpty|MoveToPoint|PathContainsPoint|R(?:e(?:lease|placePathWithStrokedPath|storeGState|tain)|otateCTM)|S(?:aveGState|caleCTM|et(?:Al(?:lows(?:Antialiasing|FontS(?:moothing|ubpixel(?:Positioning|Quantization)))|pha)|BlendMode|C(?:MYK(?:FillColor|StrokeColor)|haracterSpacing)|F(?:ill(?:Color(?:Space|WithColor)?|Pattern)|latness|ont(?:Size)?)|Gray(?:FillColor|StrokeColor)|InterpolationQuality|Line(?:Cap|Dash|Join|Width)|MiterLimit|PatternPhase|R(?:GB(?:FillColor|StrokeColor)|enderingIntent)|S(?:h(?:adow(?:WithColor)?|ould(?:Antialias|S(?:moothFonts|ubpixel(?:PositionFonts|QuantizeFonts))))|troke(?:Color(?:Space|WithColor)?|Pattern))|Text(?:DrawingMode|Matrix|Position))|howGlyphsAtPositions|troke(?:EllipseInRect|LineSegments|Path|Rect(?:WithWidth)?)|ynchronize)|TranslateCTM))))|D(?:ata(?:Consumer(?:Create(?:With(?:CFData|URL))?|GetTypeID|Re(?:lease|tain))|Provider(?:C(?:opyData|reate(?:Direct|Sequential|With(?:CFData|Data|Filename|URL)))|GetTypeID|Re(?:lease|tain)))|isplay(?:Bounds|C(?:apture(?:WithOptions)?|opy(?:AllDisplayModes|ColorSpace|DisplayMode)|reateImage(?:ForRect)?)|Fade|G(?:ammaTableCapacity|etDrawingContext)|HideCursor|I(?:DToOpenGLDisplayMask|s(?:A(?:ctive|lwaysInMirrorSet|sleep)|Builtin|In(?:HWMirrorSet|MirrorSet)|Main|Online|Stereo))|M(?:irrorsDisplay|o(?:de(?:Get(?:Height|IO(?:DisplayModeID|Flags)|RefreshRate|TypeID|Width)|IsUsableForDesktopGUI|Re(?:lease|tain)|lNumber)|veCursorToPoint))|P(?:ixels(?:High|Wide)|rimaryDisplay)|R(?:e(?:gisterReconfigurationCallback|lease|moveReconfigurationCallback|storeColorSyncSettings)|otation)|S(?:creenSize|e(?:rialNumber|t(?:DisplayMode|StereoOperation))|howCursor)|U(?:nitNumber|sesOpenGLAcceleration)|VendorNumber))|Event(?:Create(?:Copy|Data|FromData|KeyboardEvent|MouseEvent|S(?:crollWheelEvent|ourceFromEvent))?|Get(?:DoubleValueField|Flags|IntegerValueField|Location|T(?:imestamp|ype(?:ID)?)|UnflippedLocation)|Keyboard(?:GetUnicodeString|SetUnicodeString)|Post(?:ToPSN)?|S(?:et(?:DoubleValueField|Flags|IntegerValueField|Location|Source|T(?:imestamp|ype))|ource(?:ButtonState|C(?:ounterForEventType|reate)|FlagsState|Get(?:KeyboardType|LocalEvents(?:FilterDuringSuppressionState|SuppressionInterval)|PixelsPerLine|SourceStateID|TypeID|UserData)|KeyState|Se(?:condsSinceLastEventType|t(?:KeyboardType|LocalEvents(?:FilterDuringSuppressionState|SuppressionInterval)|PixelsPerLine|UserData))))|Tap(?:Create(?:ForPSN)?|Enable|IsEnabled|PostEvent))|F(?:ont(?:C(?:anCreatePostScriptSubset|opy(?:FullName|GlyphNameForGlyph|PostScriptName|Table(?:ForTag|Tags)|Variation(?:Axes|s))|reate(?:CopyWithVariations|PostScript(?:Encoding|Subset)|With(?:DataProvider|FontName)))|Get(?:Ascent|CapHeight|Descent|FontBBox|Glyph(?:Advances|BBoxes|WithGlyphName)|ItalicAngle|Leading|NumberOfGlyphs|StemV|TypeID|UnitsPerEm|XHeight)|Re(?:lease|tain))|unction(?:Create|GetTypeID|Re(?:lease|tain)))|G(?:et(?:ActiveDisplayList|Display(?:TransferBy(?:Formula|Table)|sWith(?:OpenGLDisplayMask|Point|Rect))|EventTapList|LastMouseDelta|OnlineDisplayList)|radient(?:CreateWithColor(?:Components|s)|GetTypeID|Re(?:lease|tain)))|Image(?:Create(?:Copy(?:WithColorSpace)?|With(?:ImageInRect|JPEGDataProvider|Mask(?:ingColors)?|PNGDataProvider))?|Get(?:AlphaInfo|B(?:it(?:mapInfo|sPer(?:Component|Pixel))|ytesPerRow)|ColorSpace|D(?:ataProvider|ecode)|Height|RenderingIntent|ShouldInterpolate|TypeID|Width)|IsMask|MaskCreate|Re(?:lease|tain))|Layer(?:CreateWithContext|Get(?:Context|Size|TypeID)|Re(?:lease|tain))|MainDisplayID|OpenGLDisplayMaskToDisplayID|P(?:DF(?:ArrayGet(?:Array|Boolean|Count|Dictionary|Integer|N(?:ame|u(?:ll|mber))|Object|Str(?:eam|ing))|Conte(?:ntStream(?:CreateWith(?:Page|Stream)|Get(?:Resource|Streams)|Re(?:lease|tain))|xt(?:AddD(?:estinationAtPoint|ocumentMetadata)|BeginPage|C(?:lose|reate(?:WithURL)?)|EndPage|Set(?:DestinationForRect|URLForRect)))|D(?:ictionary(?:ApplyFunction|Get(?:Array|Boolean|Count|Dictionary|Integer|N(?:ame|umber)|Object|Str(?:eam|ing)))|ocument(?:Allows(?:Copying|Printing)|CreateWith(?:Provider|URL)|Get(?:Catalog|I(?:D|nfo)|NumberOfPages|Page|TypeID|Version)|Is(?:Encrypted|Unlocked)|Re(?:lease|tain)|UnlockWithPassword))|O(?:bjectGet(?:Type|Value)|peratorTable(?:Create|Re(?:lease|tain)|SetCallback))|Page(?:Get(?:BoxRect|D(?:ictionary|ocument|rawingTransform)|PageNumber|RotationAngle|TypeID)|Re(?:lease|tain))|S(?:canner(?:Create|GetContentStream|Pop(?:Array|Boolean|Dictionary|Integer|N(?:ame|umber)|Object|Str(?:eam|ing))|Re(?:lease|tain)|Scan)|tr(?:eam(?:CopyData|GetDictionary)|ing(?:Copy(?:Date|TextString)|Get(?:BytePtr|Length)))))|SConverter(?:Abort|C(?:onvert|reate)|GetTypeID|IsConverting)|at(?:h(?:A(?:dd(?:Arc(?:ToPoint)?|CurveToPoint|EllipseInRect|Line(?:ToPoint|s)|Path|QuadCurveToPoint|Re(?:ct(?:s)?|lativeArc))|pply)|C(?:loseSubpath|ontainsPoint|reate(?:Copy(?:By(?:DashingPath|StrokingPath|TransformingPath))?|Mutable(?:Copy(?:ByTransformingPath)?)?|With(?:EllipseInRect|Rect)))|EqualToPath|Get(?:BoundingBox|CurrentPoint|PathBoundingBox|TypeID)|Is(?:Empty|Rect)|MoveToPoint|Re(?:lease|tain))|tern(?:Create|GetTypeID|Re(?:lease|tain)))|oint(?:ApplyAffineTransform|CreateDictionaryRepresentation|EqualToPoint|Make(?:WithDictionaryRepresentation)?))|Re(?:ct(?:ApplyAffineTransform|C(?:ontains(?:Point|Rect)|reateDictionaryRepresentation)|Divide|EqualToRect|Get(?:Height|M(?:ax(?:X|Y)|i(?:d(?:X|Y)|n(?:X|Y)))|Width)|I(?:n(?:set|te(?:gral|rsect(?:ion|sRect)))|s(?:Empty|Infinite|Null))|Make(?:WithDictionaryRepresentation)?|Offset|Standardize|Union)|lease(?:AllDisplays|DisplayFadeReservation)|storePermanentDisplayConfiguration)|S(?:e(?:ssionCopyCurrentDictionary|tDisplayTransferBy(?:ByteTable|Formula|Table))|h(?:ading(?:Create(?:Axial|Radial)|GetTypeID|Re(?:lease|tain))|ieldingWindow(?:ID|Level))|ize(?:ApplyAffineTransform|CreateDictionaryRepresentation|EqualToSize|Make(?:WithDictionaryRepresentation)?))|VectorMake|W(?:arpMouseCursorPosition|indowL(?:evelForKey|istC(?:opyWindowInfo|reate(?:DescriptionFromArray|Image(?:FromArray)?)?))))\\b)" + "match": "(\\s*)(\\bCG(?:A(?:cquireDisplayFadeReservation|ffineTransform(?:Concat|EqualToTransform|I(?:nvert|sIdentity)|Make(?:Rotation|Scale|Translation)?|Rotate|Scale|Translate)|ssociateMouseAndMouseCursorPosition)|B(?:eginDisplayConfiguration|itmapContext(?:Create(?:Image|WithData)?|Get(?:AlphaInfo|B(?:it(?:mapInfo|sPer(?:Component|Pixel))|ytesPerRow)|ColorSpace|Data|Height|Width)))|C(?:a(?:ncelDisplayConfiguration|ptureAllDisplays(?:WithOptions)?)|o(?:lor(?:C(?:onversionInfoGetTypeID|reate(?:Copy(?:WithAlpha)?|Generic(?:CMYK|Gray|RGB)|WithPattern)?)|EqualToColor|Get(?:Alpha|Co(?:lorSpace|mponents|nstantColor)|NumberOfComponents|Pattern|TypeID)|Re(?:lease|tain)|Space(?:C(?:opyName|reate(?:Calibrated(?:Gray|RGB)|Device(?:CMYK|Gray|RGB)|I(?:CCBased|ndexed)|Lab|Pattern|With(?:Name|PlatformColorSpace)))|Get(?:BaseColorSpace|ColorTable(?:Count)?|Model|NumberOfComponents|TypeID)|Re(?:lease|tain)))|mpleteDisplayConfiguration|n(?:figureDisplay(?:FadeEffect|MirrorOfDisplay|Origin|StereoOperation|WithDisplayMode)|text(?:Add(?:Arc(?:ToPoint)?|CurveToPoint|EllipseInRect|Line(?:ToPoint|s)|Path|QuadCurveToPoint|Rect(?:s)?)|Begin(?:Pa(?:ge|th)|TransparencyLayer(?:WithRect)?)|C(?:l(?:earRect|ip(?:To(?:Mask|Rect(?:s)?))?|osePath)|o(?:n(?:catCTM|vert(?:PointTo(?:DeviceSpace|UserSpace)|RectTo(?:DeviceSpace|UserSpace)|SizeTo(?:DeviceSpace|UserSpace)))|pyPath))|Draw(?:Image|L(?:ayer(?:AtPoint|InRect)|inearGradient)|P(?:DFPage|ath)|RadialGradient|Shading|TiledImage)|E(?:O(?:Clip|FillPath)|nd(?:Page|TransparencyLayer))|F(?:ill(?:EllipseInRect|Path|Rect(?:s)?)|lush)|Get(?:C(?:TM|lipBoundingBox)|InterpolationQuality|Path(?:BoundingBox|CurrentPoint)|T(?:ext(?:Matrix|Position)|ypeID)|UserSpaceToDeviceSpaceTransform)|IsPathEmpty|MoveToPoint|PathContainsPoint|R(?:e(?:lease|placePathWithStrokedPath|s(?:etClip|toreGState)|tain)|otateCTM)|S(?:aveGState|caleCTM|et(?:Al(?:lows(?:Antialiasing|FontS(?:moothing|ubpixel(?:Positioning|Quantization)))|pha)|BlendMode|C(?:MYK(?:FillColor|StrokeColor)|haracterSpacing)|F(?:ill(?:Color(?:Space|WithColor)?|Pattern)|latness|ont(?:Size)?)|Gray(?:FillColor|StrokeColor)|InterpolationQuality|Line(?:Cap|Dash|Join|Width)|MiterLimit|PatternPhase|R(?:GB(?:FillColor|StrokeColor)|enderingIntent)|S(?:h(?:adow(?:WithColor)?|ould(?:Antialias|S(?:moothFonts|ubpixel(?:PositionFonts|QuantizeFonts))))|troke(?:Color(?:Space|WithColor)?|Pattern))|Text(?:DrawingMode|Matrix|Position))|howGlyphsAtPositions|troke(?:EllipseInRect|LineSegments|Path|Rect(?:WithWidth)?)|ynchronize)|TranslateCTM))))|D(?:ata(?:Consumer(?:Create(?:With(?:CFData|URL))?|GetTypeID|Re(?:lease|tain))|Provider(?:C(?:opyData|reate(?:Direct|Sequential|With(?:CFData|Data|Filename|URL)))|GetTypeID|Re(?:lease|tain)))|isplay(?:Bounds|C(?:apture(?:WithOptions)?|opy(?:AllDisplayModes|ColorSpace|DisplayMode)|reateImage(?:ForRect)?)|Fade|G(?:ammaTableCapacity|etDrawingContext)|HideCursor|I(?:DToOpenGLDisplayMask|s(?:A(?:ctive|lwaysInMirrorSet|sleep)|Builtin|In(?:HWMirrorSet|MirrorSet)|Main|Online|Stereo))|M(?:irrorsDisplay|o(?:de(?:Get(?:Height|IO(?:DisplayModeID|Flags)|RefreshRate|TypeID|Width)|IsUsableForDesktopGUI|Re(?:lease|tain)|lNumber)|veCursorToPoint))|P(?:ixels(?:High|Wide)|rimaryDisplay)|R(?:e(?:gisterReconfigurationCallback|lease|moveReconfigurationCallback|storeColorSyncSettings)|otation)|S(?:creenSize|e(?:rialNumber|t(?:DisplayMode|StereoOperation))|howCursor)|U(?:nitNumber|sesOpenGLAcceleration)|VendorNumber))|Event(?:Create(?:Copy|Data|FromData|KeyboardEvent|MouseEvent|S(?:crollWheelEvent|ourceFromEvent))?|Get(?:DoubleValueField|Flags|IntegerValueField|Location|T(?:imestamp|ype(?:ID)?)|UnflippedLocation)|Keyboard(?:GetUnicodeString|SetUnicodeString)|Post(?:ToPSN)?|S(?:et(?:DoubleValueField|Flags|IntegerValueField|Location|Source|T(?:imestamp|ype))|ource(?:ButtonState|C(?:ounterForEventType|reate)|FlagsState|Get(?:KeyboardType|LocalEvents(?:FilterDuringSuppressionState|SuppressionInterval)|PixelsPerLine|SourceStateID|TypeID|UserData)|KeyState|Se(?:condsSinceLastEventType|t(?:KeyboardType|LocalEvents(?:FilterDuringSuppressionState|SuppressionInterval)|PixelsPerLine|UserData))))|Tap(?:Create(?:ForPSN)?|Enable|IsEnabled|PostEvent))|F(?:ont(?:C(?:anCreatePostScriptSubset|opy(?:FullName|GlyphNameForGlyph|PostScriptName|Table(?:ForTag|Tags)|Variation(?:Axes|s))|reate(?:CopyWithVariations|PostScript(?:Encoding|Subset)|With(?:DataProvider|FontName)))|Get(?:Ascent|CapHeight|Descent|FontBBox|Glyph(?:Advances|BBoxes|WithGlyphName)|ItalicAngle|Leading|NumberOfGlyphs|StemV|TypeID|UnitsPerEm|XHeight)|Re(?:lease|tain))|unction(?:Create|GetTypeID|Re(?:lease|tain)))|G(?:et(?:ActiveDisplayList|Display(?:TransferBy(?:Formula|Table)|sWith(?:OpenGLDisplayMask|Point|Rect))|EventTapList|LastMouseDelta|OnlineDisplayList)|radient(?:CreateWithColor(?:Components|s)|GetTypeID|Re(?:lease|tain)))|Image(?:Create(?:Copy(?:WithColorSpace)?|With(?:ImageInRect|JPEGDataProvider|Mask(?:ingColors)?|PNGDataProvider))?|Get(?:AlphaInfo|B(?:it(?:mapInfo|sPer(?:Component|Pixel))|ytesPerRow)|ColorSpace|D(?:ataProvider|ecode)|Height|RenderingIntent|ShouldInterpolate|TypeID|Width)|IsMask|MaskCreate|Re(?:lease|tain))|Layer(?:CreateWithContext|Get(?:Context|Size|TypeID)|Re(?:lease|tain))|MainDisplayID|OpenGLDisplayMaskToDisplayID|P(?:DF(?:ArrayGet(?:Array|Boolean|Count|Dictionary|Integer|N(?:ame|u(?:ll|mber))|Object|Str(?:eam|ing))|Conte(?:ntStream(?:CreateWith(?:Page|Stream)|Get(?:Resource|Streams)|Re(?:lease|tain))|xt(?:AddD(?:estinationAtPoint|ocumentMetadata)|BeginPage|C(?:lose|reate(?:WithURL)?)|EndPage|Set(?:DestinationForRect|URLForRect)))|D(?:ictionary(?:ApplyFunction|Get(?:Array|Boolean|Count|Dictionary|Integer|N(?:ame|umber)|Object|Str(?:eam|ing)))|ocument(?:Allows(?:Copying|Printing)|CreateWith(?:Provider|URL)|Get(?:Catalog|I(?:D|nfo)|NumberOfPages|Page|TypeID|Version)|Is(?:Encrypted|Unlocked)|Re(?:lease|tain)|UnlockWithPassword))|O(?:bjectGet(?:Type|Value)|peratorTable(?:Create|Re(?:lease|tain)|SetCallback))|Page(?:Get(?:BoxRect|D(?:ictionary|ocument|rawingTransform)|PageNumber|RotationAngle|TypeID)|Re(?:lease|tain))|S(?:canner(?:Create|GetContentStream|Pop(?:Array|Boolean|Dictionary|Integer|N(?:ame|umber)|Object|Str(?:eam|ing))|Re(?:lease|tain)|Scan)|tr(?:eam(?:CopyData|GetDictionary)|ing(?:Copy(?:Date|TextString)|Get(?:BytePtr|Length)))))|SConverter(?:Abort|C(?:onvert|reate)|GetTypeID|IsConverting)|at(?:h(?:A(?:dd(?:Arc(?:ToPoint)?|CurveToPoint|EllipseInRect|Line(?:ToPoint|s)|Path|QuadCurveToPoint|Re(?:ct(?:s)?|lativeArc))|pply)|C(?:loseSubpath|ontainsPoint|reate(?:Copy(?:By(?:DashingPath|StrokingPath|TransformingPath))?|Mutable(?:Copy(?:ByTransformingPath)?)?|With(?:EllipseInRect|Rect)))|EqualToPath|Get(?:BoundingBox|CurrentPoint|PathBoundingBox|TypeID)|Is(?:Empty|Rect)|MoveToPoint|Re(?:lease|tain))|tern(?:Create|GetTypeID|Re(?:lease|tain)))|oint(?:ApplyAffineTransform|CreateDictionaryRepresentation|EqualToPoint|Make(?:WithDictionaryRepresentation)?))|Re(?:ct(?:ApplyAffineTransform|C(?:ontains(?:Point|Rect)|reateDictionaryRepresentation)|Divide|EqualToRect|Get(?:Height|M(?:ax(?:X|Y)|i(?:d(?:X|Y)|n(?:X|Y)))|Width)|I(?:n(?:set|te(?:gral|rsect(?:ion|sRect)))|s(?:Empty|Infinite|Null))|Make(?:WithDictionaryRepresentation)?|Offset|Standardize|Union)|lease(?:AllDisplays|DisplayFadeReservation)|storePermanentDisplayConfiguration)|S(?:e(?:ssionCopyCurrentDictionary|tDisplayTransferBy(?:ByteTable|Formula|Table))|h(?:ading(?:Create(?:Axial|Radial)|GetTypeID|Re(?:lease|tain))|ieldingWindow(?:ID|Level))|ize(?:ApplyAffineTransform|CreateDictionaryRepresentation|EqualToSize|Make(?:WithDictionaryRepresentation)?))|VectorMake|W(?:arpMouseCursorPosition|indowL(?:evelForKey|istC(?:opyWindowInfo|reate(?:DescriptionFromArray|Image(?:FromArray)?)?))))\\b)" } ] } diff --git a/extensions/css-language-features/client/src/customData.ts b/extensions/css-language-features/client/src/customData.ts index 50540528d63..24b56f12b06 100644 --- a/extensions/css-language-features/client/src/customData.ts +++ b/extensions/css-language-features/client/src/customData.ts @@ -76,17 +76,13 @@ function getCustomDataPathsInAllWorkspaces(): string[] { function getCustomDataPathsFromAllExtensions(): string[] { const dataPaths: string[] = []; - for (const extension of extensions.all) { - const contributes = extension.packageJSON && extension.packageJSON.contributes; - - if (contributes && contributes.css && contributes.css.customData && Array.isArray(contributes.css.customData)) { - const relativePaths: string[] = contributes.css.customData; - relativePaths.forEach(rp => { + const customData = extension.packageJSON?.contributes?.css?.customData; + if (Array.isArray(customData)) { + for (const rp of customData) { dataPaths.push(joinPath(extension.extensionUri, rp).toString()); - }); + } } } - return dataPaths; } diff --git a/extensions/css-language-features/server/src/customData.ts b/extensions/css-language-features/server/src/customData.ts index 724dbf9de3f..ccfc706452c 100644 --- a/extensions/css-language-features/server/src/customData.ts +++ b/extensions/css-language-features/server/src/customData.ts @@ -29,7 +29,7 @@ function parseCSSData(source: string): ICSSDataProvider { } return newCSSDataProvider({ - version: 1, + version: rawData.version || 1, properties: rawData.properties || [], atDirectives: rawData.atDirectives || [], pseudoClasses: rawData.pseudoClasses || [], diff --git a/extensions/git/package.json b/extensions/git/package.json index 318c6e733c7..b926e802dfc 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -1878,7 +1878,7 @@ "dependencies": { "byline": "^5.0.0", "file-type": "^7.2.0", - "iconv-lite": "0.6.0", + "iconv-lite-umd": "0.6.3", "jschardet": "2.1.1", "vscode-extension-telemetry": "0.1.1", "vscode-nls": "^4.0.0", diff --git a/extensions/git/src/decorationProvider.ts b/extensions/git/src/decorationProvider.ts index 12883fe46d4..2ed893ed766 100644 --- a/extensions/git/src/decorationProvider.ts +++ b/extensions/git/src/decorationProvider.ts @@ -8,15 +8,15 @@ import * as path from 'path'; import { Repository, GitResourceGroup } from './repository'; import { Model } from './model'; import { debounce } from './decorators'; -import { filterEvent, dispose, anyEvent, fireEvent } from './util'; +import { filterEvent, dispose, anyEvent, fireEvent, PromiseSource } from './util'; import { GitErrorCodes, Status } from './api/git'; -type Callback = { resolve: (status: boolean) => void, reject: (err: any) => void }; - class GitIgnoreDecorationProvider implements DecorationProvider { + private static Decoration: Decoration = { priority: 3, color: new ThemeColor('gitDecoration.ignoredResourceForeground') }; + readonly onDidChangeDecorations: Event; - private queue = new Map; }>(); + private queue = new Map>; }>(); private disposables: Disposable[] = []; constructor(private model: Model) { @@ -29,32 +29,29 @@ class GitIgnoreDecorationProvider implements DecorationProvider { this.disposables.push(window.registerDecorationProvider(this)); } - provideDecoration(uri: Uri): Promise { + async provideDecoration(uri: Uri): Promise { const repository = this.model.getRepository(uri); if (!repository) { - return Promise.resolve(undefined); + return; } let queueItem = this.queue.get(repository.root); if (!queueItem) { - queueItem = { repository, queue: new Map() }; + queueItem = { repository, queue: new Map>() }; this.queue.set(repository.root, queueItem); } - return new Promise((resolve, reject) => { - queueItem!.queue.set(uri.fsPath, { resolve, reject }); + let promiseSource = queueItem.queue.get(uri.fsPath); + + if (!promiseSource) { + promiseSource = new PromiseSource(); + queueItem!.queue.set(uri.fsPath, promiseSource); this.checkIgnoreSoon(); - }).then(ignored => { - if (ignored) { - return { - priority: 3, - color: new ThemeColor('gitDecoration.ignoredResourceForeground') - }; - } - return undefined; - }); + } + + return await promiseSource.promise; } @debounce(500) @@ -66,16 +63,16 @@ class GitIgnoreDecorationProvider implements DecorationProvider { const paths = [...item.queue.keys()]; item.repository.checkIgnore(paths).then(ignoreSet => { - for (const [key, value] of item.queue.entries()) { - value.resolve(ignoreSet.has(key)); + for (const [path, promiseSource] of item.queue.entries()) { + promiseSource.resolve(ignoreSet.has(path) ? GitIgnoreDecorationProvider.Decoration : undefined); } }, err => { if (err.gitErrorCode !== GitErrorCodes.IsInSubmodule) { console.error(err); } - for (const [, value] of item.queue.entries()) { - value.reject(err); + for (const [, promiseSource] of item.queue.entries()) { + promiseSource.reject(err); } }); } diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index d6c84596845..4c712ed4e06 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -9,7 +9,7 @@ import * as os from 'os'; import * as cp from 'child_process'; import * as which from 'which'; import { EventEmitter } from 'events'; -import iconv = require('iconv-lite'); +import * as iconv from 'iconv-lite-umd'; import * as filetype from 'file-type'; import { assign, groupBy, IDisposable, toDisposable, dispose, mkdirp, readBytes, detectUnicodeEncoding, Encoding, onceEvent, splitInChunks, Limiter } from './util'; import { CancellationToken, Progress, Uri } from 'vscode'; diff --git a/extensions/git/src/util.ts b/extensions/git/src/util.ts index 74b353f518a..e2ac91ebb19 100644 --- a/extensions/git/src/util.ts +++ b/extensions/git/src/util.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { Event, Disposable } from 'vscode'; +import { Event, Disposable, EventEmitter } from 'vscode'; import { dirname, sep } from 'path'; import { Readable } from 'stream'; import { promises as fs, createReadStream } from 'fs'; @@ -400,3 +400,39 @@ export class Limiter { } } } + +type Completion = { success: true, value: T } | { success: false, err: any }; + +export class PromiseSource { + + private _onDidComplete = new EventEmitter>(); + + private _promise: Promise | undefined; + get promise(): Promise { + if (this._promise) { + return this._promise; + } + + return eventToPromise(this._onDidComplete.event).then(completion => { + if (completion.success) { + return completion.value; + } else { + throw completion.err; + } + }); + } + + resolve(value: T): void { + if (!this._promise) { + this._promise = Promise.resolve(value); + this._onDidComplete.fire({ success: true, value }); + } + } + + reject(err: any): void { + if (!this._promise) { + this._promise = Promise.reject(err); + this._onDidComplete.fire({ success: false, err }); + } + } +} diff --git a/extensions/git/yarn.lock b/extensions/git/yarn.lock index f03bee0ad56..1aa042197f2 100644 --- a/extensions/git/yarn.lock +++ b/extensions/git/yarn.lock @@ -425,12 +425,10 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" -iconv-lite@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.0.tgz#66a93b80df0bd05d2a43a7426296b7f91073f125" - integrity sha512-43ZpGYZ9QtuutX5l6WC1DSO8ane9N+Ct5qPLF2OV7vM9abM69gnAbVkh66ibaZd3aOGkoP1ZmringlKhLBkw2Q== - dependencies: - safer-buffer ">= 2.1.2 < 3" +iconv-lite-umd@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.3.tgz#61307cab8ac29939992d0724d3ab8799467f0e97" + integrity sha512-fQ/8XE8reiCZ6t+SX4tX6/tQdV4tThJZv5qtMe5Sk+IWsExz0S2Zd+GiBS5IEPgDxnsmiJSpH67+qzN3FT4lKw== inflight@^1.0.4: version "1.0.6" @@ -748,7 +746,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== diff --git a/extensions/json-language-features/server/package.json b/extensions/json-language-features/server/package.json index 751e1dd5c37..eb2b984af06 100644 --- a/extensions/json-language-features/server/package.json +++ b/extensions/json-language-features/server/package.json @@ -10,7 +10,7 @@ "bin": { "vscode-json-languageserver": "./bin/vscode-json-languageserver" }, - "main": "./out/jsonServerMain", + "main": "./out/node/jsonServerMain", "dependencies": { "jsonc-parser": "^2.2.1", "request-light": "^0.3.0", diff --git a/extensions/npm/extension-browser.webpack.config.js b/extensions/npm/extension-browser.webpack.config.js new file mode 100644 index 00000000000..ab50c8718a3 --- /dev/null +++ b/extensions/npm/extension-browser.webpack.config.js @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +//@ts-check + +'use strict'; + +const withDefaults = require('../shared.webpack.config'); +const path = require('path'); + +const clientConfig = withDefaults({ + target: 'webworker', + context: __dirname, + entry: { + extension: './src/npmBrowserMain.ts' + }, + output: { + filename: 'npmBrowserMain.js' + }, + performance: { + hints: false + }, + resolve: { + alias: { + 'vscode-nls': path.resolve(__dirname, '../../build/polyfills/vscode-nls.js') + } + }, + node: { + 'child_process': 'empty' + } +}); +clientConfig.module.rules[0].use.shift(); // remove nls loader + +module.exports = clientConfig; diff --git a/extensions/npm/extension.webpack.config.js b/extensions/npm/extension.webpack.config.js index 56a1589f460..1c6d9493e33 100644 --- a/extensions/npm/extension.webpack.config.js +++ b/extensions/npm/extension.webpack.config.js @@ -14,12 +14,10 @@ const withDefaults = require('../shared.webpack.config'); module.exports = withDefaults({ context: __dirname, entry: { - extension: './src/main.ts', + extension: './src/npmMain.ts', }, output: { - filename: 'main.js', - path: path.join(__dirname, 'dist'), - libraryTarget: 'commonjs', + filename: 'npmMain.js', }, resolve: { mainFields: ['module', 'main'], diff --git a/extensions/npm/package.json b/extensions/npm/package.json index ed1e8bd9015..a80135fac28 100644 --- a/extensions/npm/package.json +++ b/extensions/npm/package.json @@ -20,14 +20,15 @@ "dependencies": { "jsonc-parser": "^2.2.1", "minimatch": "^3.0.4", - "request-light": "^0.2.5", + "request-light": "^0.4.0", "vscode-nls": "^4.1.1" }, "devDependencies": { "@types/minimatch": "^3.0.3", "@types/node": "^12.11.7" }, - "main": "./out/main", + "main": "./out/npmMain", + "browser": "./dist/npmBrowserMain", "activationEvents": [ "onCommand:workbench.action.tasks.runTask", "onCommand:npm.runScriptFromFolder", @@ -181,12 +182,12 @@ } ], "explorer/context": [ - { - "when": "config.npm.enableRunFromFolder && explorerViewletVisible && explorerResourceIsFolder", + { + "when": "config.npm.enableRunFromFolder && explorerViewletVisible && explorerResourceIsFolder", "command": "npm.runScriptFromFolder", - "group": "2_workspace" - } - ] + "group": "2_workspace" + } + ] }, "configuration": { "id": "npm", diff --git a/extensions/npm/src/features/bowerJSONContribution.ts b/extensions/npm/src/features/bowerJSONContribution.ts index 705e40d34e7..cd648732fc7 100644 --- a/extensions/npm/src/features/bowerJSONContribution.ts +++ b/extensions/npm/src/features/bowerJSONContribution.ts @@ -3,11 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { MarkedString, CompletionItemKind, CompletionItem, DocumentSelector, SnippetString, workspace } from 'vscode'; +import { MarkdownString, CompletionItemKind, CompletionItem, DocumentSelector, SnippetString, workspace } from 'vscode'; import { IJSONContribution, ISuggestionsCollector } from './jsonContributions'; import { XHRRequest } from 'request-light'; import { Location } from 'jsonc-parser'; -import { textToMarkedString } from './markedTextUtil'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); @@ -181,13 +180,15 @@ export class BowerJSONContribution implements IJSONContribution { }); } - public getInfoContribution(_resource: string, location: Location): Thenable | null { + public getInfoContribution(_resource: string, location: Location): Thenable | null { if ((location.matches(['dependencies', '*']) || location.matches(['devDependencies', '*']))) { const pack = location.path[location.path.length - 1]; if (typeof pack === 'string') { return this.getInfo(pack).then(documentation => { if (documentation) { - return [textToMarkedString(documentation)]; + const str = new MarkdownString(); + str.appendText(documentation); + return [str]; } return null; }); diff --git a/extensions/npm/src/features/jsonContributions.ts b/extensions/npm/src/features/jsonContributions.ts index 4a255baf823..3873b2dc31a 100644 --- a/extensions/npm/src/features/jsonContributions.ts +++ b/extensions/npm/src/features/jsonContributions.ts @@ -30,8 +30,8 @@ export interface IJSONContribution { resolveSuggestion?(item: CompletionItem): Thenable | null; } -export function addJSONProviders(xhr: XHRRequest): Disposable { - const contributions = [new PackageJSONContribution(xhr), new BowerJSONContribution(xhr)]; +export function addJSONProviders(xhr: XHRRequest, canRunNPM: boolean): Disposable { + const contributions = [new PackageJSONContribution(xhr, canRunNPM), new BowerJSONContribution(xhr)]; const subscriptions: Disposable[] = []; contributions.forEach(contribution => { const selector = contribution.getDocumentSelector(); diff --git a/extensions/npm/src/features/packageJSONContribution.ts b/extensions/npm/src/features/packageJSONContribution.ts index 4789886891c..135b632071c 100644 --- a/extensions/npm/src/features/packageJSONContribution.ts +++ b/extensions/npm/src/features/packageJSONContribution.ts @@ -3,11 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { MarkedString, CompletionItemKind, CompletionItem, DocumentSelector, SnippetString, workspace } from 'vscode'; +import { MarkedString, CompletionItemKind, CompletionItem, DocumentSelector, SnippetString, workspace, MarkdownString } from 'vscode'; import { IJSONContribution, ISuggestionsCollector } from './jsonContributions'; import { XHRRequest } from 'request-light'; import { Location } from 'jsonc-parser'; -import { textToMarkedString } from './markedTextUtil'; import * as cp from 'child_process'; import * as nls from 'vscode-nls'; @@ -28,14 +27,12 @@ export class PackageJSONContribution implements IJSONContribution { 'jsdom', 'stylus', 'when', 'readable-stream', 'aws-sdk', 'concat-stream', 'chai', 'Thenable', 'wrench']; private knownScopes = ['@types', '@angular', '@babel', '@nuxtjs', '@vue', '@bazel']; - private xhr: XHRRequest; public getDocumentSelector(): DocumentSelector { return [{ language: 'json', scheme: '*', pattern: '**/package.json' }]; } - public constructor(xhr: XHRRequest) { - this.xhr = xhr; + public constructor(private xhr: XHRRequest, private canRunNPM: boolean) { } public collectDefaultSuggestions(_fileName: string, result: ISuggestionsCollector): Thenable { @@ -191,23 +188,23 @@ export class PackageJSONContribution implements IJSONContribution { const currentKey = location.path[location.path.length - 1]; if (typeof currentKey === 'string') { const info = await this.fetchPackageInfo(currentKey); - if (info && info.distTagsLatest) { + if (info && info.version) { - let name = JSON.stringify(info.distTagsLatest); + let name = JSON.stringify(info.version); let proposal = new CompletionItem(name); proposal.kind = CompletionItemKind.Property; proposal.insertText = name; proposal.documentation = localize('json.npm.latestversion', 'The currently latest version of the package'); result.add(proposal); - name = JSON.stringify('^' + info.distTagsLatest); + name = JSON.stringify('^' + info.version); proposal = new CompletionItem(name); proposal.kind = CompletionItemKind.Property; proposal.insertText = name; proposal.documentation = localize('json.npm.majorversion', 'Matches the most recent major version (1.x.x)'); result.add(proposal); - name = JSON.stringify('~' + info.distTagsLatest); + name = JSON.stringify('~' + info.version); proposal = new CompletionItem(name); proposal.kind = CompletionItemKind.Property; proposal.insertText = name; @@ -219,14 +216,27 @@ export class PackageJSONContribution implements IJSONContribution { return null; } + private getDocumentation(description: string | undefined, version: string | undefined, homepage: string | undefined): MarkdownString { + const str = new MarkdownString(); + if (description) { + str.appendText(description); + } + if (version) { + str.appendText('\n\n'); + str.appendText(localize('json.npm.version.hover', 'Latest version: {0}', version)); + } + if (homepage) { + str.appendText('\n\n'); + str.appendText(homepage); + } + return str; + } + public resolveSuggestion(item: CompletionItem): Thenable | null { - if (item.kind === CompletionItemKind.Property && item.documentation === '') { - return this.getInfo(item.label).then(infos => { - if (infos.length > 0) { - item.documentation = infos[0]; - if (infos.length > 1) { - item.detail = infos[1]; - } + if (item.kind === CompletionItemKind.Property && !item.documentation) { + return this.fetchPackageInfo(item.label).then(info => { + if (info) { + item.documentation = this.getDocumentation(info.description, info.version, info.homepage); return item; } return null; @@ -235,21 +245,11 @@ export class PackageJSONContribution implements IJSONContribution { return null; } - private async getInfo(pack: string): Promise { - let info = await this.fetchPackageInfo(pack); - if (info) { - const result: string[] = []; - result.push(info.description || ''); - result.push(info.distTagsLatest ? localize('json.npm.version.hover', 'Latest version: {0}', info.distTagsLatest) : ''); - result.push(info.homepage || ''); - return result; - } - - return []; - } - private async fetchPackageInfo(pack: string): Promise { - let info = await this.npmView(pack); + let info: ViewPackageInfo | undefined; + if (this.canRunNPM) { + info = await this.npmView(pack); + } if (!info) { info = await this.npmjsView(pack); } @@ -259,14 +259,14 @@ export class PackageJSONContribution implements IJSONContribution { private npmView(pack: string): Promise { return new Promise((resolve, _reject) => { - const command = 'npm view --json ' + pack + ' description dist-tags.latest homepage'; + const command = 'npm view --json ' + pack + ' description dist-tags.latest homepage version'; cp.exec(command, (error, stdout) => { if (!error) { try { const content = JSON.parse(stdout); resolve({ description: content['description'], - distTagsLatest: content['dist-tags.latest'], + version: content['dist-tags.latest'] || content['version'], homepage: content['homepage'] }); return; @@ -280,22 +280,20 @@ export class PackageJSONContribution implements IJSONContribution { } private async npmjsView(pack: string): Promise { - const queryUrl = 'https://registry.npmjs.org/' + encodeURIComponent(pack).replace(/%40/g, '@'); + const queryUrl = 'https://api.npms.io/v2/package/' + encodeURIComponent(pack); try { const success = await this.xhr({ url: queryUrl, agent: USER_AGENT }); const obj = JSON.parse(success.responseText); - if (obj) { - const latest = obj && obj['dist-tags'] && obj['dist-tags']['latest']; - if (latest) { - return { - description: obj.description || '', - distTagsLatest: latest, - homepage: obj.homepage || '' - }; - } + const metadata = obj?.collected?.metadata; + if (metadata) { + return { + description: metadata.description || '', + version: metadata.version, + homepage: metadata.links?.homepage || '' + }; } } catch (e) { @@ -308,9 +306,9 @@ export class PackageJSONContribution implements IJSONContribution { if ((location.matches(['dependencies', '*']) || location.matches(['devDependencies', '*']) || location.matches(['optionalDependencies', '*']) || location.matches(['peerDependencies', '*']))) { const pack = location.path[location.path.length - 1]; if (typeof pack === 'string') { - return this.getInfo(pack).then(infos => { - if (infos.length) { - return [infos.map(textToMarkedString).join('\n\n')]; + return this.fetchPackageInfo(pack).then(info => { + if (info) { + return [this.getDocumentation(info.description, info.version, info.homepage)]; } return null; }); @@ -339,7 +337,7 @@ export class PackageJSONContribution implements IJSONContribution { proposal.kind = CompletionItemKind.Property; proposal.insertText = insertText; proposal.filterText = JSON.stringify(name); - proposal.documentation = pack.description || ''; + proposal.documentation = this.getDocumentation(pack.description, pack.version, pack?.links?.homepage); collector.add(proposal); } } @@ -349,10 +347,11 @@ interface SearchPackageInfo { name: string; description?: string; version?: string; + links?: { homepage?: string; }; } interface ViewPackageInfo { description: string; - distTagsLatest?: string; + version?: string; homepage?: string; } diff --git a/extensions/npm/src/features/markedTextUtil.ts b/extensions/npm/src/npmBrowserMain.ts similarity index 51% rename from extensions/npm/src/features/markedTextUtil.ts rename to extensions/npm/src/npmBrowserMain.ts index 856fad050e5..96cfe579505 100644 --- a/extensions/npm/src/features/markedTextUtil.ts +++ b/extensions/npm/src/npmBrowserMain.ts @@ -3,8 +3,13 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { MarkedString } from 'vscode'; +import * as httpRequest from 'request-light'; +import * as vscode from 'vscode'; +import { addJSONProviders } from './features/jsonContributions'; -export function textToMarkedString(text: string): MarkedString { - return text.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash -} \ No newline at end of file +export async function activate(context: vscode.ExtensionContext): Promise { + context.subscriptions.push(addJSONProviders(httpRequest.xhr, false)); +} + +export function deactivate(): void { +} diff --git a/extensions/npm/src/main.ts b/extensions/npm/src/npmMain.ts similarity index 86% rename from extensions/npm/src/main.ts rename to extensions/npm/src/npmMain.ts index b79638ed1f0..764be6ea0fc 100644 --- a/extensions/npm/src/main.ts +++ b/extensions/npm/src/npmMain.ts @@ -14,13 +14,19 @@ import { invalidateHoverScriptsCache, NpmScriptHoverProvider } from './scriptHov let treeDataProvider: NpmScriptsTreeDataProvider | undefined; export async function activate(context: vscode.ExtensionContext): Promise { - registerTaskProvider(context); - treeDataProvider = registerExplorer(context); - registerHoverProvider(context); - configureHttpRequest(); - let d = vscode.workspace.onDidChangeConfiguration((e) => { - configureHttpRequest(); + context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(e => { + if (e.affectsConfiguration('http.proxy') || e.affectsConfiguration('http.proxyStrictSSL')) { + configureHttpRequest(); + } + })); + + const canRunNPM = canRunNpmInCurrentWorkspace(); + context.subscriptions.push(addJSONProviders(httpRequest.xhr, canRunNPM)); + + treeDataProvider = registerExplorer(context); + + context.subscriptions.push(vscode.workspace.onDidChangeConfiguration((e) => { if (e.affectsConfiguration('npm.exclude') || e.affectsConfiguration('npm.autoDetect')) { invalidateTasksCache(); if (treeDataProvider) { @@ -32,15 +38,12 @@ export async function activate(context: vscode.ExtensionContext): Promise treeDataProvider.refresh(); } } - }); - context.subscriptions.push(d); + })); + + registerTaskProvider(context); + registerHoverProvider(context); - d = vscode.workspace.onDidChangeTextDocument((e) => { - invalidateHoverScriptsCache(e.document); - }); - context.subscriptions.push(d); context.subscriptions.push(vscode.commands.registerCommand('npm.runSelectedScript', runSelectedScript)); - context.subscriptions.push(addJSONProviders(httpRequest.xhr)); if (await hasPackageJson()) { vscode.commands.executeCommand('setContext', 'npm:showScriptExplorer', true); @@ -49,6 +52,13 @@ export async function activate(context: vscode.ExtensionContext): Promise context.subscriptions.push(vscode.commands.registerCommand('npm.runScriptFromFolder', selectAndRunScriptFromFolder)); } +function canRunNpmInCurrentWorkspace() { + if (vscode.workspace.workspaceFolders) { + return vscode.workspace.workspaceFolders.some(f => f.uri.scheme === 'file'); + } + return false; +} + function registerTaskProvider(context: vscode.ExtensionContext): vscode.Disposable | undefined { function invalidateScriptCaches() { diff --git a/extensions/npm/src/scriptHover.ts b/extensions/npm/src/scriptHover.ts index 46992af2088..aa803dbc1d4 100644 --- a/extensions/npm/src/scriptHover.ts +++ b/extensions/npm/src/scriptHover.ts @@ -32,6 +32,9 @@ export class NpmScriptHoverProvider implements HoverProvider { constructor(context: ExtensionContext) { context.subscriptions.push(commands.registerCommand('npm.runScriptFromHover', this.runScriptFromHover, this)); context.subscriptions.push(commands.registerCommand('npm.debugScriptFromHover', this.debugScriptFromHover, this)); + context.subscriptions.push(workspace.onDidChangeTextDocument((e) => { + invalidateHoverScriptsCache(e.document); + })); } public provideHover(document: TextDocument, position: Position, _token: CancellationToken): ProviderResult { diff --git a/extensions/npm/yarn.lock b/extensions/npm/yarn.lock index 9b8a23c9264..5e85de9297e 100644 --- a/extensions/npm/yarn.lock +++ b/extensions/npm/yarn.lock @@ -71,7 +71,7 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" -https-proxy-agent@^2.2.3: +https-proxy-agent@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== @@ -96,16 +96,21 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -request-light@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/request-light/-/request-light-0.2.5.tgz#38a3da7b2e56f7af8cbba57e8a94930ee2380746" - integrity sha512-eBEh+GzJAftUnex6tcL6eV2JCifY0+sZMIUpUPOVXbs2nV5hla4ZMmO3icYKGuGVuQ2zHE9evh4OrRcH4iyYYw== +request-light@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/request-light/-/request-light-0.4.0.tgz#c6b91ef00b18cb0de75d2127e55b3a2c9f7f90f9" + integrity sha512-fimzjIVw506FBZLspTAXHdpvgvQebyjpNyLRd0e6drPPRq7gcrROeGWRyF81wLqFg5ijPgnOQbmfck5wdTqpSA== dependencies: http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.3" - vscode-nls "^4.1.1" + https-proxy-agent "^2.2.4" + vscode-nls "^4.1.2" vscode-nls@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.1.tgz#f9916b64e4947b20322defb1e676a495861f133c" integrity sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A== + +vscode-nls@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.2.tgz#ca8bf8bb82a0987b32801f9fddfdd2fb9fd3c167" + integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw== diff --git a/extensions/sql/cgmanifest.json b/extensions/sql/cgmanifest.json index 56b576cdc79..3ef90a09d14 100644 --- a/extensions/sql/cgmanifest.json +++ b/extensions/sql/cgmanifest.json @@ -6,7 +6,7 @@ "git": { "name": "Microsoft/vscode-mssql", "repositoryUrl": "https://github.com/Microsoft/vscode-mssql", - "commitHash": "37a22725186b5b481b2882a78c7b9fe024c13946" + "commitHash": "750d30dc48c4c0317b63bb5f1ed3e71487bb84a1" } }, "license": "MIT", diff --git a/extensions/sql/syntaxes/sql.tmLanguage.json b/extensions/sql/syntaxes/sql.tmLanguage.json index 778c35071fa..bc3b533bcb9 100644 --- a/extensions/sql/syntaxes/sql.tmLanguage.json +++ b/extensions/sql/syntaxes/sql.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/Microsoft/vscode-mssql/commit/37a22725186b5b481b2882a78c7b9fe024c13946", + "version": "https://github.com/Microsoft/vscode-mssql/commit/750d30dc48c4c0317b63bb5f1ed3e71487bb84a1", "name": "SQL", "scopeName": "source.sql", "patterns": [ @@ -404,7 +404,7 @@ } }, "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.", - "match": "(N)?(')(?:[^'\\\\]|\\\\.)*(')", + "match": "(N)?(')[^']*(')", "name": "string.quoted.single.sql" }, { @@ -437,7 +437,7 @@ } }, "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.", - "match": "(`)(?:[^`\\\\]|\\\\.)*(`)", + "match": "(`)[^`\\\\]*(`)", "name": "string.quoted.other.backtick.sql" }, { @@ -470,7 +470,7 @@ } }, "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.", - "match": "(\")(?:[^\"#\\\\]|\\\\.)*(\")", + "match": "(\")[^\"#]*(\")", "name": "string.quoted.double.sql" }, { diff --git a/extensions/vscode-notebook-tests/src/notebook.test.ts b/extensions/vscode-notebook-tests/src/notebook.test.ts index a5e4bb198fa..e07bb1a9125 100644 --- a/extensions/vscode-notebook-tests/src/notebook.test.ts +++ b/extensions/vscode-notebook-tests/src/notebook.test.ts @@ -569,7 +569,7 @@ suite('notebook undo redo', () => { await vscode.commands.executeCommand('workbench.action.closeActiveEditor'); }); - test('execute and then undo redo', async function () { + test.skip('execute and then undo redo', async function () { const resource = vscode.Uri.file(join(vscode.workspace.rootPath || '', './first.vsctestnb')); await vscode.commands.executeCommand('vscode.openWith', resource, 'notebookCoreTest'); diff --git a/package.json b/package.json index e9a5f64b9d7..2e49bc7ad51 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "code-oss-dev", "version": "1.47.0", - "distro": "9521a559bbdc4e0fb1de84f14deb16cf56e7fdfa", + "distro": "6eb887883773e6b33879837bdf8dda3340a9fa75", "author": { "name": "Microsoft Corporation" }, @@ -41,7 +41,7 @@ "graceful-fs": "4.2.3", "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^2.2.3", - "iconv-lite": "0.6.0", + "iconv-lite-umd": "0.6.3", "jschardet": "2.1.1", "keytar": "^5.5.0", "minimist": "^1.2.5", @@ -49,7 +49,7 @@ "native-keymap": "2.1.2", "native-watchdog": "1.3.0", "node-pty": "0.10.0-beta8", - "semver-umd": "^5.5.6", + "semver-umd": "^5.5.7", "spdlog": "^0.11.1", "sudo-prompt": "9.1.1", "v8-inspect-profiler": "^0.0.20", @@ -74,7 +74,6 @@ "@types/debug": "^4.1.5", "@types/graceful-fs": "4.1.2", "@types/http-proxy-agent": "^2.0.1", - "@types/iconv-lite": "0.0.1", "@types/keytar": "^4.4.0", "@types/minimist": "^1.2.0", "@types/mocha": "2.2.39", @@ -94,12 +93,11 @@ "asar": "^0.14.0", "chromium-pickle-js": "^0.2.0", "copy-webpack-plugin": "^4.5.2", - "coveralls": "^2.11.11", "cson-parser": "^1.3.3", "css-loader": "^3.2.0", "debounce": "^1.0.0", "deemon": "^1.4.0", - "electron": "7.3.1", + "electron": "8.3.3", "eslint": "6.8.0", "eslint-plugin-jsdoc": "^19.1.0", "event-stream": "3.3.4", diff --git a/remote/package.json b/remote/package.json index a1e1cd5d802..4264ccb2a11 100644 --- a/remote/package.json +++ b/remote/package.json @@ -8,12 +8,12 @@ "graceful-fs": "4.2.3", "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^2.2.3", - "iconv-lite": "0.6.0", + "iconv-lite-umd": "0.6.3", "jschardet": "2.1.1", "minimist": "^1.2.5", "native-watchdog": "1.3.0", "node-pty": "0.10.0-beta8", - "semver-umd": "^5.5.6", + "semver-umd": "^5.5.7", "spdlog": "^0.11.1", "vscode-nsfw": "1.2.8", "vscode-oniguruma": "1.3.1", diff --git a/remote/web/package.json b/remote/web/package.json index 5a4ef271910..51feaf5cd2d 100644 --- a/remote/web/package.json +++ b/remote/web/package.json @@ -2,7 +2,9 @@ "name": "vscode-web", "version": "0.0.0", "dependencies": { - "semver-umd": "^5.5.6", + "semver-umd": "^5.5.7", + "iconv-lite-umd": "0.6.3", + "jschardet": "2.1.1", "vscode-oniguruma": "1.3.1", "vscode-textmate": "5.1.1", "xterm": "4.7.0-beta.3", diff --git a/remote/web/yarn.lock b/remote/web/yarn.lock index fa3681e1a98..55c51a387bd 100644 --- a/remote/web/yarn.lock +++ b/remote/web/yarn.lock @@ -2,10 +2,20 @@ # yarn lockfile v1 -semver-umd@^5.5.6: - version "5.5.6" - resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.6.tgz#1d185bbd2caec825c564b54907cd09e14083f228" - integrity sha512-6ARYXVi4Y4VO5HfyCjT/6xyykBtJwEXSGQ8ON4UPQSFOjZUDsbAE0J614QcBBsLTTyQMEqvsXN804vAqpydjzw== +iconv-lite-umd@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.3.tgz#61307cab8ac29939992d0724d3ab8799467f0e97" + integrity sha512-fQ/8XE8reiCZ6t+SX4tX6/tQdV4tThJZv5qtMe5Sk+IWsExz0S2Zd+GiBS5IEPgDxnsmiJSpH67+qzN3FT4lKw== + +jschardet@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-2.1.1.tgz#af6f8fd0b3b0f5d46a8fd9614a4fce490575c184" + integrity sha512-pA5qG9Zwm8CBpGlK/lo2GE9jPxwqRgMV7Lzc/1iaPccw6v4Rhj8Zg2BTyrdmHmxlJojnbLupLeRnaPLsq03x6Q== + +semver-umd@^5.5.7: + version "5.5.7" + resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.7.tgz#966beb5e96c7da6fbf09c3da14c2872d6836c528" + integrity sha512-XgjPNlD0J6aIc8xoTN6GQGwWc2Xg0kq8NzrqMVuKG/4Arl6ab1F8+Am5Y/XKKCR+FceFr2yN/Uv5ZJBhRyRqKg== vscode-oniguruma@1.3.1: version "1.3.1" diff --git a/remote/yarn.lock b/remote/yarn.lock index 4effe6f9fa0..d96f13682aa 100644 --- a/remote/yarn.lock +++ b/remote/yarn.lock @@ -176,12 +176,10 @@ https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" -iconv-lite@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.0.tgz#66a93b80df0bd05d2a43a7426296b7f91073f125" - integrity sha512-43ZpGYZ9QtuutX5l6WC1DSO8ane9N+Ct5qPLF2OV7vM9abM69gnAbVkh66ibaZd3aOGkoP1ZmringlKhLBkw2Q== - dependencies: - safer-buffer ">= 2.1.2 < 3" +iconv-lite-umd@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.3.tgz#61307cab8ac29939992d0724d3ab8799467f0e97" + integrity sha512-fQ/8XE8reiCZ6t+SX4tX6/tQdV4tThJZv5qtMe5Sk+IWsExz0S2Zd+GiBS5IEPgDxnsmiJSpH67+qzN3FT4lKw== ip@^1.1.5: version "1.1.5" @@ -300,15 +298,10 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -semver-umd@^5.5.6: - version "5.5.6" - resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.6.tgz#1d185bbd2caec825c564b54907cd09e14083f228" - integrity sha512-6ARYXVi4Y4VO5HfyCjT/6xyykBtJwEXSGQ8ON4UPQSFOjZUDsbAE0J614QcBBsLTTyQMEqvsXN804vAqpydjzw== +semver-umd@^5.5.7: + version "5.5.7" + resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.7.tgz#966beb5e96c7da6fbf09c3da14c2872d6836c528" + integrity sha512-XgjPNlD0J6aIc8xoTN6GQGwWc2Xg0kq8NzrqMVuKG/4Arl6ab1F8+Am5Y/XKKCR+FceFr2yN/Uv5ZJBhRyRqKg== semver@^5.3.0: version "5.6.0" diff --git a/resources/linux/snap/snapcraft.yaml b/resources/linux/snap/snapcraft.yaml index c39e5f4f849..7dbc1680ba2 100644 --- a/resources/linux/snap/snapcraft.yaml +++ b/resources/linux/snap/snapcraft.yaml @@ -24,6 +24,7 @@ parts: plugin: dump source: . stage-packages: + - ibus-gtk3 - fcitx-frontend-gtk3 - gvfs-libs - libasound2 diff --git a/resources/serverless/code-web.js b/resources/serverless/code-web.js index d4314c5c3f0..3f35bea7bc8 100644 --- a/resources/serverless/code-web.js +++ b/resources/serverless/code-web.js @@ -6,7 +6,6 @@ *--------------------------------------------------------------------------------------------*/ // @ts-check -/** @typedef {import('../../src/vs/workbench/workbench.web.api').IWorkbenchConstructionOptions} WebConfiguration **/ const http = require('http'); const url = require('url'); @@ -62,15 +61,34 @@ const exists = (path) => util.promisify(fs.exists)(path); const readFile = (path) => util.promisify(fs.readFile)(path); const CharCode_PC = '%'.charCodeAt(0); +function toStaticExtensionUri(path) { + return { scheme: SCHEME, authority: AUTHORITY, path: `/static-extension/${path}` }; +} + async function initialize() { - const extensionFolders = await util.promisify(fs.readdir)(EXTENSIONS_ROOT); - - const staticExtensions = []; - + const builtinExtensions = []; const webpackConfigs = []; - await Promise.all(extensionFolders.map(async extensionFolder => { - const packageJSONPath = path.join(EXTENSIONS_ROOT, extensionFolder, 'package.json'); + const children = await util.promisify(fs.readdir)(EXTENSIONS_ROOT, { withFileTypes: true }); + const folders = children.filter(c => !c.isFile()); + await Promise.all(folders.map(async folder => { + const folderName = folder.name; + const extensionPath = path.join(EXTENSIONS_ROOT, folderName); + + let children = []; + try { + children = await util.promisify(fs.readdir)(extensionPath); + } catch (error) { + console.log(error); + return; + } + + const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0]; + const readmeUrl = readme ? toStaticExtensionUri(path.join(extensionPath, readme)) : undefined; + const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0]; + const changelogUrl = changelog ? toStaticExtensionUri(path.join(extensionPath, changelog)) : undefined; + + const packageJSONPath = path.join(EXTENSIONS_ROOT, folderName, 'package.json'); if (await exists(packageJSONPath)) { try { const packageJSON = JSON.parse((await readFile(packageJSONPath)).toString()); @@ -82,7 +100,7 @@ async function initialize() { packageJSON.main = packageJSON.browser; const webpackConfigLocations = await util.promisify(glob)( - path.join(EXTENSIONS_ROOT, extensionFolder, '**', 'extension-browser.webpack.config.js'), + path.join(EXTENSIONS_ROOT, folderName, '**', 'extension-browser.webpack.config.js'), { ignore: ['**/node_modules'] } ); @@ -99,31 +117,16 @@ async function initialize() { } } - const packageNlsPath = path.join(EXTENSIONS_ROOT, extensionFolder, 'package.nls.json'); - if (await exists(packageNlsPath)) { - const packageNls = JSON.parse((await readFile(packageNlsPath)).toString()); - const translate = (obj) => { - for (let key in obj) { - const val = obj[key]; - if (Array.isArray(val)) { - val.forEach(translate); - } else if (val && typeof val === 'object') { - translate(val); - } else if (typeof val === 'string' && val.charCodeAt(0) === CharCode_PC && val.charCodeAt(val.length - 1) === CharCode_PC) { - const translated = packageNls[val.substr(1, val.length - 2)]; - if (translated) { - obj[key] = translated; - } - } - } - }; - translate(packageJSON); - } packageJSON.extensionKind = ['web']; // enable for Web - staticExtensions.push({ + + const packageNLSPath = path.join(folderName, 'package.nls.json'); + const packageNLSExists = await exists(path.join(EXTENSIONS_ROOT, packageNLSPath)); + builtinExtensions.push({ packageJSON, - extensionLocation: { scheme: SCHEME, authority: AUTHORITY, path: `/static-extension/${extensionFolder}` }, - isBuiltin: true + location: toStaticExtensionUri(folderName), + packageNLSUrl: packageNLSExists ? toStaticExtensionUri(packageNLSPath) : undefined, + readmeUrl, + changelogUrl }); } catch (e) { console.log(e); @@ -139,7 +142,7 @@ async function initialize() { reject(); } else { console.log(stats.toString()); - resolve(staticExtensions); + resolve(builtinExtensions); } }); } else { @@ -149,14 +152,14 @@ async function initialize() { reject(); } else { console.log(stats.toString()); - resolve(staticExtensions); + resolve(builtinExtensions); } }); } }); } -const staticExtensionsPromise = initialize(); +const builtinExtensionsPromise = initialize(); const mapCallbackUriToRequestId = new Map(); @@ -262,14 +265,9 @@ async function handleRoot(req, res) { } } - const staticExtensions = await staticExtensionsPromise; - /** @type {WebConfiguration} */ - const webConfig = { - staticExtensions: staticExtensions, - }; + const builtinExtensions = await builtinExtensionsPromise; const webConfigJSON = escapeAttribute(JSON.stringify({ - ...webConfig, folderUri: ghPath ? { scheme: 'github', authority: 'HEAD', path: ghPath } : { scheme: 'memfs', path: `/sample-folder` }, @@ -277,6 +275,7 @@ async function handleRoot(req, res) { const data = (await util.promisify(fs.readFile)(WEB_MAIN)).toString() .replace('{{WORKBENCH_WEB_CONFIGURATION}}', () => webConfigJSON) // use a replace function to avoid that regexp replace patterns ($&, $0, ...) are applied + .replace('{{WORKBENCH_BUILTIN_EXTENSIONS}}', () => escapeAttribute(JSON.stringify(builtinExtensions))) .replace('{{WEBVIEW_ENDPOINT}}', '') .replace('{{REMOTE_USER_DATA_URI}}', ''); diff --git a/resources/win32/bin/code.sh b/resources/win32/bin/code.sh index c751647f2ec..4fbdd0a3b51 100644 --- a/resources/win32/bin/code.sh +++ b/resources/win32/bin/code.sh @@ -15,7 +15,7 @@ VSCODE_PATH="$(dirname "$(dirname "$(realpath "$0")")")" ELECTRON="$VSCODE_PATH/$NAME.exe" if grep -qi Microsoft /proc/version; then # in a wsl shell - WSL_BUILD=$(uname -r | sed -E 's/^[0-9.]+-([0-9]+)-Microsoft.*|([0-9]+).([0-9]+).([0-9]+)-microsoft-standard.*|.*/\1\2\3\4/') + WSL_BUILD=$(uname -r | sed -E 's/^[0-9.]+-([0-9]+)-Microsoft.*|([0-9]+).([0-9]+).([0-9]+)-microsoft.*|.*/\1\2\3\4/') if [ -z "$WSL_BUILD" ]; then WSL_BUILD=0 fi @@ -30,17 +30,9 @@ if grep -qi Microsoft /proc/version; then # use the Remote WSL extension if installed WSL_EXT_ID="ms-vscode-remote.remote-wsl" - if [ $WSL_BUILD -ge 41955 -a $WSL_BUILD -lt 41959 ]; then - # WSL2 workaround for https://github.com/microsoft/WSL/issues/4337 - CWD="$(pwd)" - cd "$VSCODE_PATH" - cmd.exe /C ".\\bin\\$APP_NAME.cmd --locate-extension $WSL_EXT_ID >%TEMP%\\remote-wsl-loc.txt" - WSL_EXT_WLOC=$(cmd.exe /C type %TEMP%\\remote-wsl-loc.txt) - cd "$CWD" - else - ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --locate-extension $WSL_EXT_ID >/tmp/remote-wsl-loc.txt 2>/dev/null - WSL_EXT_WLOC=$(cat /tmp/remote-wsl-loc.txt) - fi + ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --locate-extension $WSL_EXT_ID >/tmp/remote-wsl-loc.txt 2>/dev/null + WSL_EXT_WLOC=$(cat /tmp/remote-wsl-loc.txt) + if [ -n "$WSL_EXT_WLOC" ]; then # replace \r\n with \n in WSL_EXT_WLOC WSL_CODE=$(wslpath -u "${WSL_EXT_WLOC%%[[:cntrl:]]}")/scripts/wslCode.sh diff --git a/scripts/test-integration.bat b/scripts/test-integration.bat index f879f17703c..2c50bff7c77 100644 --- a/scripts/test-integration.bat +++ b/scripts/test-integration.bat @@ -43,8 +43,8 @@ if %errorlevel% neq 0 exit /b %errorlevel% :: Tests in the extension host -call "%INTEGRATION_TEST_ELECTRON_PATH%" %~dp0\..\extensions\vscode-notebook-tests\test --enable-proposed-api=vscode.vscode-notebook-tests --extensionDevelopmentPath=%~dp0\..\extensions\vscode-notebook-tests --extensionTestsPath=%~dp0\..\extensions\vscode-notebook-tests\out --disable-telemetry --crash-reporter-directory=%VSCODECRASHDIR% --no-cached-data --disable-updates --disable-extensions --user-data-dir=%VSCODEUSERDATADIR% -if %errorlevel% neq 0 exit /b %errorlevel% +:: call "%INTEGRATION_TEST_ELECTRON_PATH%" %~dp0\..\extensions\vscode-notebook-tests\test --enable-proposed-api=vscode.vscode-notebook-tests --extensionDevelopmentPath=%~dp0\..\extensions\vscode-notebook-tests --extensionTestsPath=%~dp0\..\extensions\vscode-notebook-tests\out --disable-telemetry --crash-reporter-directory=%VSCODECRASHDIR% --no-cached-data --disable-updates --disable-extensions --user-data-dir=%VSCODEUSERDATADIR% +:: if %errorlevel% neq 0 exit /b %errorlevel% call "%INTEGRATION_TEST_ELECTRON_PATH%" %~dp0\..\extensions\vscode-api-tests\testWorkspace --enable-proposed-api=vscode.vscode-api-tests --extensionDevelopmentPath=%~dp0\..\extensions\vscode-api-tests --extensionTestsPath=%~dp0\..\extensions\vscode-api-tests\out\singlefolder-tests --disable-telemetry --crash-reporter-directory=%VSCODECRASHDIR% --no-cached-data --disable-updates --disable-extensions --user-data-dir=%VSCODEUSERDATADIR% if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/src/vs/base/node/terminalEncoding.ts b/src/vs/base/node/terminalEncoding.ts index 3077f3a9633..15d7565ec6f 100644 --- a/src/vs/base/node/terminalEncoding.ts +++ b/src/vs/base/node/terminalEncoding.ts @@ -39,7 +39,6 @@ const JSCHARDET_TO_ICONV_ENCODINGS: { [name: string]: string } = { const UTF8 = 'utf8'; - export async function resolveTerminalEncoding(verbose?: boolean): Promise { let rawEncodingPromise: Promise; diff --git a/src/vs/base/parts/contextmenu/electron-main/contextmenu.ts b/src/vs/base/parts/contextmenu/electron-main/contextmenu.ts index 6222be78028..7b43355ed6d 100644 --- a/src/vs/base/parts/contextmenu/electron-main/contextmenu.ts +++ b/src/vs/base/parts/contextmenu/electron-main/contextmenu.ts @@ -9,9 +9,10 @@ import { ISerializableContextMenuItem, CONTEXT_MENU_CLOSE_CHANNEL, CONTEXT_MENU_ export function registerContextMenuListener(): void { ipcMain.on(CONTEXT_MENU_CHANNEL, (event: IpcMainEvent, contextMenuId: number, items: ISerializableContextMenuItem[], onClickChannel: string, options?: IPopupOptions) => { const menu = createMenu(event, onClickChannel, items); + const window = BrowserWindow.fromWebContents(event.sender); menu.popup({ - window: BrowserWindow.fromWebContents(event.sender), + window: window ? window : undefined, x: options ? options.x : undefined, y: options ? options.y : undefined, positioningItem: options ? options.positioningItem : undefined, diff --git a/src/vs/code/browser/workbench/workbench-dev.html b/src/vs/code/browser/workbench/workbench-dev.html index 74ee36bca78..b91569fe60b 100644 --- a/src/vs/code/browser/workbench/workbench-dev.html +++ b/src/vs/code/browser/workbench/workbench-dev.html @@ -13,6 +13,9 @@ + + + @@ -34,6 +37,8 @@ 'xterm-addon-unicode11': `${window.location.origin}/static/remote/web/node_modules/xterm-addon-unicode11/lib/xterm-addon-unicode11.js`, 'xterm-addon-webgl': `${window.location.origin}/static/remote/web/node_modules/xterm-addon-webgl/lib/xterm-addon-webgl.js`, 'semver-umd': `${window.location.origin}/static/remote/web/node_modules/semver-umd/lib/semver-umd.js`, + 'iconv-lite-umd': `${window.location.origin}/static/remote/web/node_modules/iconv-lite-umd/lib/iconv-lite-umd.js`, + 'jschardet': `${window.location.origin}/static/remote/web/node_modules/jschardet/dist/jschardet.min.js`, } }; diff --git a/src/vs/code/browser/workbench/workbench.html b/src/vs/code/browser/workbench/workbench.html index 1825bcffec6..c68730498de 100644 --- a/src/vs/code/browser/workbench/workbench.html +++ b/src/vs/code/browser/workbench/workbench.html @@ -13,6 +13,9 @@ + + + @@ -20,6 +23,8 @@ + + @@ -38,6 +43,8 @@ 'xterm-addon-unicode11': `${window.location.origin}/static/node_modules/xterm-addon-unicode11/lib/xterm-addon-unicode11.js`, 'xterm-addon-webgl': `${window.location.origin}/static/node_modules/xterm-addon-webgl/lib/xterm-addon-webgl.js`, 'semver-umd': `${window.location.origin}/static/node_modules/semver-umd/lib/semver-umd.js`, + 'iconv-lite-umd': `${window.location.origin}/static/node_modules/iconv-lite-umd/lib/iconv-lite-umd.js`, + 'jschardet': `${window.location.origin}/static/node_modules/jschardet/dist/jschardet.min.js`, } }; diff --git a/src/vs/editor/browser/controller/coreCommands.ts b/src/vs/editor/browser/controller/coreCommands.ts index f56dff9bd9f..2013ad47528 100644 --- a/src/vs/editor/browser/controller/coreCommands.ts +++ b/src/vs/editor/browser/controller/coreCommands.ts @@ -7,7 +7,7 @@ import * as nls from 'vs/nls'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import * as types from 'vs/base/common/types'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { Command, EditorCommand, ICommandOptions, registerEditorCommand } from 'vs/editor/browser/editorExtensions'; +import { Command, EditorCommand, ICommandOptions, registerEditorCommand, MultiCommand, UndoCommand, RedoCommand, SelectAllCommand } from 'vs/editor/browser/editorExtensions'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { ColumnSelection, IColumnSelectResult } from 'vs/editor/common/controller/cursorColumnSelection'; import { CursorState, EditOperationType, IColumnSelectData, PartialCursorState } from 'vs/editor/common/controller/cursorCommon'; @@ -20,7 +20,6 @@ import { Range } from 'vs/editor/common/core/range'; import { Handler, ScrollType } from 'vs/editor/common/editorCommon'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { VerticalRevealType } from 'vs/editor/common/view/viewEvents'; -import { MenuId } from 'vs/platform/actions/common/actions'; import { ICommandHandlerDescription } from 'vs/platform/commands/common/commands'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; @@ -276,6 +275,48 @@ export namespace RevealLine_ { }; } +abstract class EditorOrNativeTextInputCommand { + + constructor(target: MultiCommand) { + // 1. handle case when focus is in editor. + target.addImplementation(10000, (accessor: ServicesAccessor, args: any) => { + // Only if editor text focus (i.e. not if editor has widget focus). + const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); + if (focusedEditor && focusedEditor.hasTextFocus()) { + this.runEditorCommand(accessor, focusedEditor, args); + return true; + } + return false; + }); + + // 2. handle case when focus is in some other `input` / `textarea`. + target.addImplementation(1000, (accessor: ServicesAccessor, args: any) => { + // Only if focused on an element that allows for entering text + const activeElement = document.activeElement; + if (activeElement && ['input', 'textarea'].indexOf(activeElement.tagName.toLowerCase()) >= 0) { + this.runDOMCommand(); + return true; + } + return false; + }); + + // 3. (default) handle case when focus is somewhere else. + target.addImplementation(0, (accessor: ServicesAccessor, args: any) => { + // Redirecting to active editor + const activeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor(); + if (activeEditor) { + activeEditor.focus(); + this.runEditorCommand(accessor, activeEditor, args); + return true; + } + return false; + }); + } + + public abstract runDOMCommand(): void; + public abstract runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void; +} + export namespace CoreNavigationCommands { class BaseMoveToCommand extends CoreEditorCommand { @@ -1594,25 +1635,32 @@ export namespace CoreNavigationCommands { } }); - export const SelectAll: CoreEditorCommand = registerEditorCommand(new class extends CoreEditorCommand { + export const SelectAll = new class extends EditorOrNativeTextInputCommand { constructor() { - super({ - id: 'selectAll', - precondition: undefined - }); + super(SelectAllCommand); + } + public runDOMCommand(): void { + document.execCommand('selectAll'); + } + public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void { + const viewModel = editor._getViewModel(); + if (!viewModel) { + // the editor has no view => has no cursors + return; + } + this.runCoreEditorCommand(viewModel, args); } - public runCoreEditorCommand(viewModel: IViewModel, args: any): void { viewModel.model.pushStackElement(); viewModel.setCursorStates( - args.source, + 'keyboard', CursorChangeReason.Explicit, [ CursorMoveCommands.selectAll(viewModel, viewModel.getPrimaryCursorState()) ] ); } - }); + }(); export const SetSelection: CoreEditorCommand = registerEditorCommand(new class extends CoreEditorCommand { constructor() { @@ -1655,97 +1703,6 @@ registerColumnSelection(CoreNavigationCommands.CursorColumnSelectPageUp.id, KeyM registerColumnSelection(CoreNavigationCommands.CursorColumnSelectDown.id, KeyMod.Shift | KeyCode.DownArrow); registerColumnSelection(CoreNavigationCommands.CursorColumnSelectPageDown.id, KeyMod.Shift | KeyCode.PageDown); -/** - * A command that will: - * 1. invoke a command on the focused editor. - * 2. otherwise, invoke a browser built-in command on the `activeElement`. - * 3. otherwise, invoke a command on the workbench active editor. - */ -abstract class EditorOrNativeTextInputCommand extends Command { - - public runCommand(accessor: ServicesAccessor, args: any): void { - - const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); - // Only if editor text focus (i.e. not if editor has widget focus). - if (focusedEditor && focusedEditor.hasTextFocus()) { - return this.runEditorCommand(accessor, focusedEditor, args); - } - - // Ignore this action when user is focused on an element that allows for entering text - const activeElement = document.activeElement; - if (activeElement && ['input', 'textarea'].indexOf(activeElement.tagName.toLowerCase()) >= 0) { - return this.runDOMCommand(); - } - - // Redirecting to active editor - const activeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor(); - if (activeEditor) { - activeEditor.focus(); - return this.runEditorCommand(accessor, activeEditor, args); - } - } - - public abstract runDOMCommand(): void; - public abstract runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void; -} - -class SelectAllCommand extends EditorOrNativeTextInputCommand { - constructor() { - super({ - id: 'editor.action.selectAll', - precondition: EditorContextKeys.textInputFocus, - kbOpts: { - weight: CORE_WEIGHT, - kbExpr: null, - primary: KeyMod.CtrlCmd | KeyCode.KEY_A - }, - menuOpts: [{ - menuId: MenuId.MenubarSelectionMenu, - group: '1_basic', - title: nls.localize({ key: 'miSelectAll', comment: ['&& denotes a mnemonic'] }, "&&Select All"), - order: 1 - }, { - menuId: MenuId.CommandPalette, - group: '', - title: nls.localize('selectAll', "Select All"), - order: 1 - }] - }); - } - public runDOMCommand(): void { - document.execCommand('selectAll'); - } - public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void { - args = args || {}; - args.source = 'keyboard'; - CoreNavigationCommands.SelectAll.runEditorCommand(accessor, editor, args); - } -} - -class UndoCommand extends EditorOrNativeTextInputCommand { - public runDOMCommand(): void { - document.execCommand('undo'); - } - public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { - if (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) { - return; - } - editor.getModel().undo(); - } -} - -class RedoCommand extends EditorOrNativeTextInputCommand { - public runDOMCommand(): void { - document.execCommand('redo'); - } - public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { - if (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) { - return; - } - editor.getModel().redo(); - } -} - function registerCommand(command: T): T { command.register(); return command; @@ -1881,53 +1838,35 @@ export namespace CoreEditingCommands { } }); - export const Undo: UndoCommand = registerCommand(new UndoCommand({ - id: 'undo', - precondition: EditorContextKeys.writable, - kbOpts: { - weight: CORE_WEIGHT, - kbExpr: EditorContextKeys.textInputFocus, - primary: KeyMod.CtrlCmd | KeyCode.KEY_Z - }, - menuOpts: [{ - menuId: MenuId.MenubarEditMenu, - group: '1_do', - title: nls.localize({ key: 'miUndo', comment: ['&& denotes a mnemonic'] }, "&&Undo"), - order: 1 - }, { - menuId: MenuId.CommandPalette, - group: '', - title: nls.localize('undo', "Undo"), - order: 1 - }] - })); + export const Undo = new class extends EditorOrNativeTextInputCommand { + constructor() { + super(UndoCommand); + } + public runDOMCommand(): void { + document.execCommand('undo'); + } + public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { + if (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) { + return; + } + editor.getModel().undo(); + } + }(); - export const DefaultUndo: UndoCommand = registerCommand(new UndoCommand({ id: 'default:undo', precondition: EditorContextKeys.writable })); - - export const Redo: RedoCommand = registerCommand(new RedoCommand({ - id: 'redo', - precondition: EditorContextKeys.writable, - kbOpts: { - weight: CORE_WEIGHT, - kbExpr: EditorContextKeys.textInputFocus, - primary: KeyMod.CtrlCmd | KeyCode.KEY_Y, - secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z], - mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z } - }, - menuOpts: [{ - menuId: MenuId.MenubarEditMenu, - group: '1_do', - title: nls.localize({ key: 'miRedo', comment: ['&& denotes a mnemonic'] }, "&&Redo"), - order: 2 - }, { - menuId: MenuId.CommandPalette, - group: '', - title: nls.localize('redo', "Redo"), - order: 1 - }] - })); - - export const DefaultRedo: RedoCommand = registerCommand(new RedoCommand({ id: 'default:redo', precondition: EditorContextKeys.writable })); + export const Redo = new class extends EditorOrNativeTextInputCommand { + constructor() { + super(RedoCommand); + } + public runDOMCommand(): void { + document.execCommand('redo'); + } + public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { + if (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) { + return; + } + editor.getModel().redo(); + } + }(); } /** @@ -1956,8 +1895,6 @@ class EditorHandlerCommand extends Command { } } -registerCommand(new SelectAllCommand()); - function registerOverwritableCommand(handlerId: string, description?: ICommandHandlerDescription): void { registerCommand(new EditorHandlerCommand('default:' + handlerId, handlerId)); registerCommand(new EditorHandlerCommand(handlerId, handlerId, description)); diff --git a/src/vs/editor/browser/editorExtensions.ts b/src/vs/editor/browser/editorExtensions.ts index faf4f3ebc8d..50a7f678d5a 100644 --- a/src/vs/editor/browser/editorExtensions.ts +++ b/src/vs/editor/browser/editorExtensions.ts @@ -3,6 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import * as nls from 'vs/nls'; import { IPosition } from 'vs/base/browser/ui/contextview/contextview'; import { illegalArgument } from 'vs/base/common/errors'; import { URI } from 'vs/base/common/uri'; @@ -17,11 +18,13 @@ import { MenuId, MenuRegistry } from 'vs/platform/actions/common/actions'; import { CommandsRegistry, ICommandHandlerDescription } from 'vs/platform/commands/common/commands'; import { ContextKeyExpr, IContextKeyService, ContextKeyExpression } from 'vs/platform/contextkey/common/contextkey'; import { IConstructorSignature1, ServicesAccessor as InstantiationServicesAccessor, BrandedService } from 'vs/platform/instantiation/common/instantiation'; -import { IKeybindings, KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { IKeybindings, KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { withNullAsUndefined, assertType } from 'vs/base/common/types'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IDisposable } from 'vs/base/common/lifecycle'; +import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; export type ServicesAccessor = InstantiationServicesAccessor; @@ -139,6 +142,66 @@ export abstract class Command { //#endregion Command +//#region MultiplexingCommand + +/** + * Potential override for a command. + * + * @return `true` if the command was successfully run. This stops other overrides from being executed. + */ +export type CommandImplementation = (accessor: ServicesAccessor, args: unknown) => boolean; + +export class MultiCommand extends Command { + + private readonly _implementations: [number, CommandImplementation][] = []; + + /** + * A higher priority gets to be looked at first + */ + public addImplementation(priority: number, implementation: CommandImplementation): IDisposable { + this._implementations.push([priority, implementation]); + this._implementations.sort((a, b) => b[0] - a[0]); + return { + dispose: () => { + for (let i = 0; i < this._implementations.length; i++) { + if (this._implementations[i][1] === implementation) { + this._implementations.splice(i, 1); + return; + } + } + } + }; + } + + public runCommand(accessor: ServicesAccessor, args: any): void | Promise { + for (const impl of this._implementations) { + if (impl[1](accessor, args)) { + return; + } + } + } +} + +//#endregion + +/** + * A command that delegates to another command's implementation. + * + * This lets different commands be registered but share the same implementation + */ +export class ProxyCommand extends Command { + constructor( + private readonly command: Command, + opts: ICommandOptions + ) { + super(opts); + } + + public runCommand(accessor: ServicesAccessor, args: any): void | Promise { + return this.command.runCommand(accessor, args); + } +} + //#region EditorCommand export interface IContributionCommandOptions extends ICommandOptions { @@ -379,8 +442,10 @@ export function registerEditorCommand(editorCommand: T) return editorCommand; } -export function registerEditorAction(ctor: { new(): EditorAction; }): void { - EditorContributionRegistry.INSTANCE.registerEditorAction(new ctor()); +export function registerEditorAction(ctor: { new(): T; }): T { + const action = new ctor(); + EditorContributionRegistry.INSTANCE.registerEditorAction(action); + return action; } export function registerInstantiatedEditorAction(editorAction: EditorAction): void { @@ -475,3 +540,75 @@ class EditorContributionRegistry { } Registry.add(Extensions.EditorCommonContributions, EditorContributionRegistry.INSTANCE); + +function registerCommand(command: T): T { + command.register(); + return command; +} + +export const UndoCommand = registerCommand(new MultiCommand({ + id: 'undo', + precondition: undefined, + kbOpts: { + weight: KeybindingWeight.EditorCore, + primary: KeyMod.CtrlCmd | KeyCode.KEY_Z + }, + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '1_do', + title: nls.localize({ key: 'miUndo', comment: ['&& denotes a mnemonic'] }, "&&Undo"), + order: 1 + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('undo', "Undo"), + order: 1 + }] +})); + +registerCommand(new ProxyCommand(UndoCommand, { id: 'default:undo', precondition: undefined })); + +export const RedoCommand = registerCommand(new MultiCommand({ + id: 'redo', + precondition: undefined, + kbOpts: { + weight: KeybindingWeight.EditorCore, + primary: KeyMod.CtrlCmd | KeyCode.KEY_Y, + secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z], + mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z } + }, + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '1_do', + title: nls.localize({ key: 'miRedo', comment: ['&& denotes a mnemonic'] }, "&&Redo"), + order: 2 + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('redo', "Redo"), + order: 1 + }] +})); + +registerCommand(new ProxyCommand(RedoCommand, { id: 'default:redo', precondition: undefined })); + +export const SelectAllCommand = registerCommand(new MultiCommand({ + id: 'editor.action.selectAll', + precondition: undefined, + kbOpts: { + weight: KeybindingWeight.EditorCore, + kbExpr: null, + primary: KeyMod.CtrlCmd | KeyCode.KEY_A + }, + menuOpts: [{ + menuId: MenuId.MenubarSelectionMenu, + group: '1_basic', + title: nls.localize({ key: 'miSelectAll', comment: ['&& denotes a mnemonic'] }, "&&Select All"), + order: 1 + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('selectAll', "Select All"), + order: 1 + }] +})); diff --git a/src/vs/editor/browser/view/viewController.ts b/src/vs/editor/browser/view/viewController.ts index 6fc163d9c36..69880b0133d 100644 --- a/src/vs/editor/browser/view/viewController.ts +++ b/src/vs/editor/browser/view/viewController.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; -import { CoreEditorCommand, CoreNavigationCommands } from 'vs/editor/browser/controller/coreCommands'; +import { CoreNavigationCommands } from 'vs/editor/browser/controller/coreCommands'; import { IEditorMouseEvent, IPartialEditorMouseEvent } from 'vs/editor/browser/editorBrowser'; import { ViewUserInputEvents } from 'vs/editor/browser/view/viewUserInputEvents'; import { Position } from 'vs/editor/common/core/position'; @@ -35,8 +35,6 @@ export interface IMouseDispatchData { } export interface ICommandDelegate { - executeEditorCommand(editorCommand: CoreEditorCommand, args: any): void; - paste(text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null): void; type(text: string): void; replacePreviousChar(text: string, replaceCharCnt: number): void; @@ -64,11 +62,6 @@ export class ViewController { this.commandDelegate = commandDelegate; } - private _execMouseCommand(editorCommand: CoreEditorCommand, args: any): void { - args.source = 'mouse'; - this.commandDelegate.executeEditorCommand(editorCommand, args); - } - public paste(text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null): void { this.commandDelegate.paste(text, pasteOnNewLine, multicursorText, mode); } @@ -94,7 +87,7 @@ export class ViewController { } public setSelection(modelSelection: Selection): void { - this.commandDelegate.executeEditorCommand(CoreNavigationCommands.SetSelection, { + CoreNavigationCommands.SetSelection.runCoreEditorCommand(this.viewModel, { source: 'keyboard', selection: modelSelection }); @@ -214,22 +207,24 @@ export class ViewController { private _usualArgs(viewPosition: Position) { viewPosition = this._validateViewColumn(viewPosition); return { + source: 'mouse', position: this._convertViewToModelPosition(viewPosition), viewPosition: viewPosition }; } public moveTo(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.MoveTo, this._usualArgs(viewPosition)); + CoreNavigationCommands.MoveTo.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _moveToSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.MoveToSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.MoveToSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _columnSelect(viewPosition: Position, mouseColumn: number, doColumnSelect: boolean): void { viewPosition = this._validateViewColumn(viewPosition); - this._execMouseCommand(CoreNavigationCommands.ColumnSelect, { + CoreNavigationCommands.ColumnSelect.runCoreEditorCommand(this.viewModel, { + source: 'mouse', position: this._convertViewToModelPosition(viewPosition), viewPosition: viewPosition, mouseColumn: mouseColumn, @@ -239,7 +234,8 @@ export class ViewController { private _createCursor(viewPosition: Position, wholeLine: boolean): void { viewPosition = this._validateViewColumn(viewPosition); - this._execMouseCommand(CoreNavigationCommands.CreateCursor, { + CoreNavigationCommands.CreateCursor.runCoreEditorCommand(this.viewModel, { + source: 'mouse', position: this._convertViewToModelPosition(viewPosition), viewPosition: viewPosition, wholeLine: wholeLine @@ -247,39 +243,39 @@ export class ViewController { } private _lastCursorMoveToSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LastCursorMoveToSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _wordSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.WordSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.WordSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _wordSelectDrag(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.WordSelectDrag, this._usualArgs(viewPosition)); + CoreNavigationCommands.WordSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lastCursorWordSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LastCursorWordSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.LastCursorWordSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lineSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LineSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.LineSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lineSelectDrag(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LineSelectDrag, this._usualArgs(viewPosition)); + CoreNavigationCommands.LineSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lastCursorLineSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LastCursorLineSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.LastCursorLineSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lastCursorLineSelectDrag(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LastCursorLineSelectDrag, this._usualArgs(viewPosition)); + CoreNavigationCommands.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _selectAll(): void { - this._execMouseCommand(CoreNavigationCommands.SelectAll, {}); + CoreNavigationCommands.SelectAll.runCoreEditorCommand(this.viewModel, { source: 'mouse' }); } // ---------------------- diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index f57ab7693d6..32cbd06f69e 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -15,7 +15,6 @@ import { hash } from 'vs/base/common/hash'; import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle'; import { Schemas } from 'vs/base/common/network'; import { Configuration } from 'vs/editor/browser/config/configuration'; -import { CoreEditorCommand } from 'vs/editor/browser/controller/coreCommands'; import * as editorBrowser from 'vs/editor/browser/editorBrowser'; import { EditorExtensionsRegistry, IEditorContributionDescription } from 'vs/editor/browser/editorExtensions'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; @@ -1552,9 +1551,6 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE let commandDelegate: ICommandDelegate; if (this.isSimpleWidget) { commandDelegate = { - executeEditorCommand: (editorCommand: CoreEditorCommand, args: any): void => { - editorCommand.runCoreEditorCommand(viewModel, args); - }, paste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => { this._paste('keyboard', text, pasteOnNewLine, multicursorText, mode); }, @@ -1576,9 +1572,6 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE }; } else { commandDelegate = { - executeEditorCommand: (editorCommand: CoreEditorCommand, args: any): void => { - editorCommand.runCoreEditorCommand(viewModel, args); - }, paste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => { const payload: editorCommon.PastePayload = { text, pasteOnNewLine, multicursorText, mode }; this._commandService.executeCommand(editorCommon.Handler.Paste, payload); diff --git a/src/vs/editor/contrib/clipboard/clipboard.ts b/src/vs/editor/contrib/clipboard/clipboard.ts index 4ad6007754a..0f685415d4b 100644 --- a/src/vs/editor/contrib/clipboard/clipboard.ts +++ b/src/vs/editor/contrib/clipboard/clipboard.ts @@ -9,7 +9,7 @@ import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import * as platform from 'vs/base/common/platform'; import { CopyOptions } from 'vs/editor/browser/controller/textAreaInput'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { EditorAction, IActionOptions, ICommandKeybindingsOptions, registerEditorAction } from 'vs/editor/browser/editorExtensions'; +import { EditorAction, registerEditorAction, Command, MultiCommand } from 'vs/editor/browser/editorExtensions'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { MenuId } from 'vs/platform/actions/common/actions'; @@ -28,171 +28,111 @@ const supportsCopyWithSyntaxHighlighting = (supportsCopy && !browser.isEdge); // privileges to actually perform the action const supportsPaste = (platform.isNative || (!browser.isChrome && document.queryCommandSupported('paste'))); -type ExecCommand = 'cut' | 'copy' | 'paste'; - -abstract class ExecCommandAction extends EditorAction { - - private readonly browserCommand: ExecCommand; - - constructor(browserCommand: ExecCommand, opts: IActionOptions) { - super(opts); - this.browserCommand = browserCommand; - } - - public runCommand(accessor: ServicesAccessor, args: any): void { - let focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); - // Only if editor text focus (i.e. not if editor has widget focus). - if (focusedEditor && focusedEditor.hasTextFocus()) { - focusedEditor.trigger('keyboard', this.id, args); - return; - } - - document.execCommand(this.browserCommand); - } - - public run(accessor: ServicesAccessor, editor: ICodeEditor): void { - editor.focus(); - document.execCommand(this.browserCommand); - } +function registerCommand(command: T): T { + command.register(); + return command; } -class ExecCommandCutAction extends ExecCommandAction { - - constructor() { - let kbOpts: ICommandKeybindingsOptions | undefined = { +export const CutAction = supportsCut ? registerCommand(new MultiCommand({ + id: 'editor.action.clipboardCutAction', + precondition: undefined, + kbOpts: ( + // Do not bind cut keybindings in the browser, + // since browsers do that for us and it avoids security prompts + platform.isNative ? { kbExpr: EditorContextKeys.textInputFocus, primary: KeyMod.CtrlCmd | KeyCode.KEY_X, win: { primary: KeyMod.CtrlCmd | KeyCode.KEY_X, secondary: [KeyMod.Shift | KeyCode.Delete] }, weight: KeybindingWeight.EditorContrib - }; - // Do not bind cut keybindings in the browser, + } : undefined + ), + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '2_ccp', + title: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, "Cu&&t"), + order: 1 + }, { + menuId: MenuId.EditorContext, + group: CLIPBOARD_CONTEXT_MENU_GROUP, + title: nls.localize('actions.clipboard.cutLabel', "Cut"), + when: EditorContextKeys.writable, + order: 1, + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('actions.clipboard.cutLabel', "Cut"), + order: 1 + }] +})) : undefined; + +export const CopyAction = supportsCopy ? registerCommand(new MultiCommand({ + id: 'editor.action.clipboardCopyAction', + precondition: undefined, + kbOpts: ( + // Do not bind copy keybindings in the browser, // since browsers do that for us and it avoids security prompts - if (!platform.isNative) { - kbOpts = undefined; - } - super('cut', { - id: 'editor.action.clipboardCutAction', - label: nls.localize('actions.clipboard.cutLabel', "Cut"), - alias: 'Cut', - precondition: EditorContextKeys.writable, - kbOpts: kbOpts, - contextMenuOpts: { - group: CLIPBOARD_CONTEXT_MENU_GROUP, - order: 1 - }, - menuOpts: { - menuId: MenuId.MenubarEditMenu, - group: '2_ccp', - title: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, "Cu&&t"), - order: 1 - } - }); - } - - public run(accessor: ServicesAccessor, editor: ICodeEditor): void { - if (!editor.hasModel()) { - return; - } - - const emptySelectionClipboard = editor.getOption(EditorOption.emptySelectionClipboard); - - if (!emptySelectionClipboard && editor.getSelection().isEmpty()) { - return; - } - - super.run(accessor, editor); - } -} - -class ExecCommandCopyAction extends ExecCommandAction { - - constructor() { - let kbOpts: ICommandKeybindingsOptions | undefined = { + platform.isNative ? { kbExpr: EditorContextKeys.textInputFocus, primary: KeyMod.CtrlCmd | KeyCode.KEY_C, win: { primary: KeyMod.CtrlCmd | KeyCode.KEY_C, secondary: [KeyMod.CtrlCmd | KeyCode.Insert] }, weight: KeybindingWeight.EditorContrib - }; - // Do not bind copy keybindings in the browser, + } : undefined + ), + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '2_ccp', + title: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, "&&Copy"), + order: 2 + }, { + menuId: MenuId.EditorContext, + group: CLIPBOARD_CONTEXT_MENU_GROUP, + title: nls.localize('actions.clipboard.copyLabel', "Copy"), + order: 2, + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('actions.clipboard.copyLabel', "Copy"), + order: 1 + }] +})) : undefined; + +export const PasteAction = supportsPaste ? registerCommand(new MultiCommand({ + id: 'editor.action.clipboardPasteAction', + precondition: undefined, + kbOpts: ( + // Do not bind paste keybindings in the browser, // since browsers do that for us and it avoids security prompts - if (!platform.isNative) { - kbOpts = undefined; - } - - super('copy', { - id: 'editor.action.clipboardCopyAction', - label: nls.localize('actions.clipboard.copyLabel', "Copy"), - alias: 'Copy', - precondition: undefined, - kbOpts: kbOpts, - contextMenuOpts: { - group: CLIPBOARD_CONTEXT_MENU_GROUP, - order: 2 - }, - menuOpts: { - menuId: MenuId.MenubarEditMenu, - group: '2_ccp', - title: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, "&&Copy"), - order: 2 - } - }); - } - - public run(accessor: ServicesAccessor, editor: ICodeEditor): void { - if (!editor.hasModel()) { - return; - } - - const emptySelectionClipboard = editor.getOption(EditorOption.emptySelectionClipboard); - - if (!emptySelectionClipboard && editor.getSelection().isEmpty()) { - return; - } - - super.run(accessor, editor); - } -} - -class ExecCommandPasteAction extends ExecCommandAction { - - constructor() { - let kbOpts: ICommandKeybindingsOptions | undefined = { + platform.isNative ? { kbExpr: EditorContextKeys.textInputFocus, primary: KeyMod.CtrlCmd | KeyCode.KEY_V, win: { primary: KeyMod.CtrlCmd | KeyCode.KEY_V, secondary: [KeyMod.Shift | KeyCode.Insert] }, linux: { primary: KeyMod.CtrlCmd | KeyCode.KEY_V, secondary: [KeyMod.Shift | KeyCode.Insert] }, weight: KeybindingWeight.EditorContrib - }; - // Do not bind paste keybindings in the browser, - // since browsers do that for us and it avoids security prompts - if (!platform.isNative) { - kbOpts = undefined; - } + } : undefined + ), + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '2_ccp', + title: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, "&&Paste"), + order: 3 + }, { + menuId: MenuId.EditorContext, + group: CLIPBOARD_CONTEXT_MENU_GROUP, + title: nls.localize('actions.clipboard.pasteLabel', "Paste"), + when: EditorContextKeys.writable, + order: 3, + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('actions.clipboard.pasteLabel', "Paste"), + order: 1 + }] +})) : undefined; - super('paste', { - id: 'editor.action.clipboardPasteAction', - label: nls.localize('actions.clipboard.pasteLabel', "Paste"), - alias: 'Paste', - precondition: EditorContextKeys.writable, - kbOpts: kbOpts, - contextMenuOpts: { - group: CLIPBOARD_CONTEXT_MENU_GROUP, - order: 3 - }, - menuOpts: { - menuId: MenuId.MenubarEditMenu, - group: '2_ccp', - title: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, "&&Paste"), - order: 3 - } - }); - } -} - -class ExecCommandCopyWithSyntaxHighlightingAction extends ExecCommandAction { +class ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction { constructor() { - super('copy', { + super({ id: 'editor.action.clipboardCopyWithSyntaxHighlightingAction', label: nls.localize('actions.clipboard.copyWithSyntaxHighlightingLabel', "Copy With Syntax Highlighting"), alias: 'Copy With Syntax Highlighting', @@ -217,20 +157,48 @@ class ExecCommandCopyWithSyntaxHighlightingAction extends ExecCommandAction { } CopyOptions.forceCopyWithSyntaxHighlighting = true; - super.run(accessor, editor); + editor.focus(); + document.execCommand('copy'); CopyOptions.forceCopyWithSyntaxHighlighting = false; } } -if (supportsCut) { - registerEditorAction(ExecCommandCutAction); -} -if (supportsCopy) { - registerEditorAction(ExecCommandCopyAction); -} -if (supportsPaste) { - registerEditorAction(ExecCommandPasteAction); +function registerExecCommandImpl(target: MultiCommand | undefined, browserCommand: 'cut' | 'copy' | 'paste'): void { + if (!target) { + return; + } + + // 1. handle case when focus is in editor. + target.addImplementation(10000, (accessor: ServicesAccessor, args: any) => { + // Only if editor text focus (i.e. not if editor has widget focus). + const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); + if (focusedEditor && focusedEditor.hasTextFocus()) { + if (browserCommand === 'cut' || browserCommand === 'copy') { + // Do not execute if there is no selection and empty selection clipboard is off + const emptySelectionClipboard = focusedEditor.getOption(EditorOption.emptySelectionClipboard); + const selection = focusedEditor.getSelection(); + if (selection && selection.isEmpty() && !emptySelectionClipboard) { + return true; + } + } + document.execCommand(browserCommand); + return true; + } + return false; + }); + + // 2. (default) handle case when focus is somewhere else. + target.addImplementation(0, (accessor: ServicesAccessor, args: any) => { + // Only if editor text focus (i.e. not if editor has widget focus). + document.execCommand(browserCommand); + return true; + }); } + +registerExecCommandImpl(CutAction, 'cut'); +registerExecCommandImpl(CopyAction, 'copy'); +registerExecCommandImpl(PasteAction, 'paste'); + if (supportsCopyWithSyntaxHighlighting) { registerEditorAction(ExecCommandCopyWithSyntaxHighlightingAction); } diff --git a/src/vs/editor/contrib/find/findController.ts b/src/vs/editor/contrib/find/findController.ts index 8d2f6668924..3c2721843b8 100644 --- a/src/vs/editor/contrib/find/findController.ts +++ b/src/vs/editor/contrib/find/findController.ts @@ -255,7 +255,7 @@ export class CommonFindController extends Disposable implements IEditorContribut // overwritten in subclass } - protected _start(opts: IFindStartOptions): void { + protected async _start(opts: IFindStartOptions): Promise { this.disposeModel(); if (!this._editor.hasModel()) { @@ -279,7 +279,7 @@ export class CommonFindController extends Disposable implements IEditorContribut } if (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) { - let selectionSearchString = this.getGlobalBufferTerm(); + let selectionSearchString = await this.getGlobalBufferTerm(); if (selectionSearchString) { stateChanges.searchString = selectionSearchString; } @@ -308,8 +308,8 @@ export class CommonFindController extends Disposable implements IEditorContribut } } - public start(opts: IFindStartOptions): void { - this._start(opts); + public start(opts: IFindStartOptions): Promise { + return this._start(opts); } public moveToNextMatch(): boolean { @@ -353,24 +353,24 @@ export class CommonFindController extends Disposable implements IEditorContribut return false; } - public getGlobalBufferTerm(): string { + public async getGlobalBufferTerm(): Promise { if (this._editor.getOption(EditorOption.find).globalFindClipboard && this._clipboardService && this._editor.hasModel() && !this._editor.getModel().isTooLargeForSyncing() ) { - return this._clipboardService.readFindTextSync(); + return this._clipboardService.readFindText(); } return ''; } - public setGlobalBufferTerm(text: string) { + public async setGlobalBufferTerm(text: string) { if (this._editor.getOption(EditorOption.find).globalFindClipboard && this._clipboardService && this._editor.hasModel() && !this._editor.getModel().isTooLargeForSyncing() ) { - this._clipboardService.writeFindTextSync(text); + await this._clipboardService.writeFindText(text); } } } @@ -396,7 +396,7 @@ export class FindController extends CommonFindController implements IFindControl this._findOptionsWidget = null; } - protected _start(opts: IFindStartOptions): void { + protected async _start(opts: IFindStartOptions): Promise { if (!this._widget) { this._createFindWidget(); } @@ -422,7 +422,7 @@ export class FindController extends CommonFindController implements IFindControl opts.updateSearchScope = updateSearchScope; - super._start(opts); + await super._start(opts); if (opts.shouldFocus === FindStartFocusAction.FocusReplaceInput) { this._widget!.focusReplaceInput(); @@ -505,7 +505,7 @@ export class StartFindWithSelectionAction extends EditorAction { }); } - public run(accessor: ServicesAccessor, editor: ICodeEditor): void { + public async run(accessor: ServicesAccessor, editor: ICodeEditor): Promise { let controller = CommonFindController.get(editor); if (controller) { controller.start({ @@ -518,7 +518,7 @@ export class StartFindWithSelectionAction extends EditorAction { loop: editor.getOption(EditorOption.find).loop }); - controller.setGlobalBufferTerm(controller.getState().searchString); + return controller.setGlobalBufferTerm(controller.getState().searchString); } } } diff --git a/src/vs/editor/contrib/find/findWidget.ts b/src/vs/editor/contrib/find/findWidget.ts index b9d0f1d8794..82af435546f 100644 --- a/src/vs/editor/contrib/find/findWidget.ts +++ b/src/vs/editor/contrib/find/findWidget.ts @@ -52,7 +52,7 @@ export const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDo export interface IFindController { replace(): void; replaceAll(): void; - getGlobalBufferTerm(): string; + getGlobalBufferTerm(): Promise; } const NLS_FIND_INPUT_LABEL = nls.localize('label.find', "Find"); @@ -224,9 +224,9 @@ export class FindWidget extends Widget implements IOverlayWidget, IVerticalSashL this._updateToggleSelectionFindButton(); } })); - this._register(this._codeEditor.onDidFocusEditorWidget(() => { + this._register(this._codeEditor.onDidFocusEditorWidget(async () => { if (this._isVisible) { - let globalBufferTerm = this._controller.getGlobalBufferTerm(); + let globalBufferTerm = await this._controller.getGlobalBufferTerm(); if (globalBufferTerm && globalBufferTerm !== this._state.searchString) { this._state.change({ searchString: globalBufferTerm }, true); this._findInput.select(); diff --git a/src/vs/editor/contrib/find/test/findController.test.ts b/src/vs/editor/contrib/find/test/findController.test.ts index 44895a2d658..110a0efc570 100644 --- a/src/vs/editor/contrib/find/test/findController.test.ts +++ b/src/vs/editor/contrib/find/test/findController.test.ts @@ -39,8 +39,8 @@ export class TestFindController extends CommonFindController { this.hasFocus = false; } - protected _start(opts: IFindStartOptions): void { - super._start(opts); + protected async _start(opts: IFindStartOptions): Promise { + await super._start(opts); if (opts.shouldFocus !== FindStartFocusAction.NoFocusChange) { this.hasFocus = true; diff --git a/src/vs/editor/test/browser/controller/inputRecorder.html b/src/vs/editor/test/browser/controller/inputRecorder.html index 3f538b8a04f..65d8a39c59a 100644 --- a/src/vs/editor/test/browser/controller/inputRecorder.html +++ b/src/vs/editor/test/browser/controller/inputRecorder.html @@ -31,14 +31,14 @@ var RECORDED_EVENTS = []; var input = document.getElementById('input'); -var blackListedProps = [ +var blockedProperties = [ 'currentTarget', 'path', 'srcElement', 'target', 'view' ]; -blackListedProps = blackListedProps.concat([ +blockedProperties = blockedProperties.concat([ 'AT_TARGET', 'BLUR', 'BUBBLING_PHASE', @@ -68,7 +68,7 @@ blackListedProps = blackListedProps.concat([ function toSerializable(e) { var r = {}; for (var k in e) { - if (blackListedProps.indexOf(k) >= 0) { + if (blockedProperties.indexOf(k) >= 0) { continue; } if (typeof e[k] === 'function') { @@ -112,4 +112,4 @@ document.getElementById('stop').onclick = function() { - \ No newline at end of file + diff --git a/src/vs/platform/clipboard/browser/clipboardService.ts b/src/vs/platform/clipboard/browser/clipboardService.ts index b4f10caa33a..e67d5f59bd1 100644 --- a/src/vs/platform/clipboard/browser/clipboardService.ts +++ b/src/vs/platform/clipboard/browser/clipboardService.ts @@ -97,14 +97,4 @@ export class BrowserClipboardService implements IClipboardService { async hasResources(): Promise { return this.resources.length > 0; } - - /** @deprecated */ - readFindTextSync(): string { - return this.findText; - } - - /** @deprecated */ - writeFindTextSync(text: string): void { - this.findText = text; - } } diff --git a/src/vs/platform/clipboard/common/clipboardService.ts b/src/vs/platform/clipboard/common/clipboardService.ts index 295f59ce527..22cc5b30004 100644 --- a/src/vs/platform/clipboard/common/clipboardService.ts +++ b/src/vs/platform/clipboard/common/clipboardService.ts @@ -46,12 +46,4 @@ export interface IClipboardService { * Find out if resources are copied to the clipboard. */ hasResources(): Promise; - - - - /** @deprecated */ - readFindTextSync(): string; - - /** @deprecated */ - writeFindTextSync(text: string): void; } diff --git a/src/vs/platform/environment/node/stdin.ts b/src/vs/platform/environment/node/stdin.ts index e870ac6e704..b72ae5e0c75 100644 --- a/src/vs/platform/environment/node/stdin.ts +++ b/src/vs/platform/environment/node/stdin.ts @@ -46,13 +46,19 @@ export async function readFromStdin(targetPath: string, verbose: boolean): Promi let encoding = await resolveTerminalEncoding(verbose); - const iconv = await import('iconv-lite'); + const iconv = await import('iconv-lite-umd'); if (!iconv.encodingExists(encoding)) { console.log(`Unsupported terminal encoding: ${encoding}, falling back to UTF-8.`); encoding = 'utf8'; } // Pipe into tmp file using terminals encoding - const converterStream = iconv.decodeStream(encoding); - process.stdin.pipe(converterStream).pipe(stdinFileStream); + const decoder = iconv.getDecoder(encoding); + process.stdin.on('data', chunk => stdinFileStream.write(decoder.write(chunk))); + process.stdin.on('end', () => { + stdinFileStream.write(decoder.end()); + stdinFileStream.end(); + }); + process.stdin.on('error', error => stdinFileStream.destroy(error)); + process.stdin.on('close', () => stdinFileStream.close()); } diff --git a/src/vs/platform/extensions/browser/builtinExtensionsScannerService.ts b/src/vs/platform/extensions/browser/builtinExtensionsScannerService.ts new file mode 100644 index 00000000000..74a0c367750 --- /dev/null +++ b/src/vs/platform/extensions/browser/builtinExtensionsScannerService.ts @@ -0,0 +1,44 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IBuiltinExtensionsScannerService, IScannedExtension, ExtensionType } from 'vs/platform/extensions/common/extensions'; +import { isWeb } from 'vs/base/common/platform'; +import { URI } from 'vs/base/common/uri'; + +export class BuiltinExtensionsScannerService implements IBuiltinExtensionsScannerService { + + declare readonly _serviceBrand: undefined; + + private readonly builtinExtensions: IScannedExtension[] = []; + + constructor( + ) { + if (isWeb) { + // Find builtin extensions by checking for DOM + const builtinExtensionsElement = document.getElementById('vscode-workbench-builtin-extensions'); + const builtinExtensionsElementAttribute = builtinExtensionsElement ? builtinExtensionsElement.getAttribute('data-settings') : undefined; + if (builtinExtensionsElementAttribute) { + try { + const builtinExtensions: IScannedExtension[] = JSON.parse(builtinExtensionsElementAttribute); + this.builtinExtensions = builtinExtensions.map(e => { + location: URI.revive(e.location), + type: ExtensionType.System, + packageJSON: e.packageJSON, + packageNLSUrl: URI.revive(e.packageNLSUrl), + readmeUrl: URI.revive(e.readmeUrl), + changelogUrl: URI.revive(e.changelogUrl), + }); + } catch (error) { /* ignore error*/ } + } + } + } + + async scanBuiltinExtensions(): Promise { + if (isWeb) { + return this.builtinExtensions; + } + throw new Error('not supported'); + } +} diff --git a/src/vs/platform/extensions/common/extensions.ts b/src/vs/platform/extensions/common/extensions.ts index ce044f65b41..70d0d6de1f1 100644 --- a/src/vs/platform/extensions/common/extensions.ts +++ b/src/vs/platform/extensions/common/extensions.ts @@ -6,6 +6,7 @@ import * as strings from 'vs/base/common/strings'; import { ILocalization } from 'vs/platform/localizations/common/localizations'; import { URI } from 'vs/base/common/uri'; +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; export const MANIFEST_CACHE_FOLDER = 'CachedExtensions'; export const USER_MANIFEST_CACHE_FILE = 'user'; @@ -246,3 +247,18 @@ export interface IExtensionDescription extends IExtensionManifest { export function isLanguagePackExtension(manifest: IExtensionManifest): boolean { return manifest.contributes && manifest.contributes.localizations ? manifest.contributes.localizations.length > 0 : false; } + +export interface IScannedExtension { + readonly location: URI; + readonly type: ExtensionType; + readonly packageJSON: IExtensionManifest + readonly packageNLSUrl?: URI; + readonly readmeUrl?: URI; + readonly changelogUrl?: URI; +} + +export const IBuiltinExtensionsScannerService = createDecorator('IBuiltinExtensionsScannerService'); +export interface IBuiltinExtensionsScannerService { + readonly _serviceBrand: undefined; + scanBuiltinExtensions(): Promise; +} diff --git a/src/vs/platform/launch/electron-main/launchMainService.ts b/src/vs/platform/launch/electron-main/launchMainService.ts index 233f1690c98..40a2cf28940 100644 --- a/src/vs/platform/launch/electron-main/launchMainService.ts +++ b/src/vs/platform/launch/electron-main/launchMainService.ts @@ -156,6 +156,8 @@ export class LaunchMainService implements ILaunchMainService { else { const lastActive = this.windowsMainService.getLastActiveWindow(); if (lastActive) { + // Force focus the app before requesting window focus + app.focus({ steal: true }); lastActive.focus(); usedWindows = [lastActive]; diff --git a/src/vs/platform/log/common/logIpc.ts b/src/vs/platform/log/common/logIpc.ts index c8f7dd559a6..4c92e8d88af 100644 --- a/src/vs/platform/log/common/logIpc.ts +++ b/src/vs/platform/log/common/logIpc.ts @@ -75,14 +75,14 @@ export class LoggerChannelClient { export class FollowerLogService extends DelegatedLogService implements ILogService { declare readonly _serviceBrand: undefined; - constructor(private master: LoggerChannelClient, logService: ILogService) { + constructor(private parent: LoggerChannelClient, logService: ILogService) { super(logService); - this._register(master.onDidChangeLogLevel(level => logService.setLevel(level))); + this._register(parent.onDidChangeLogLevel(level => logService.setLevel(level))); } setLevel(level: LogLevel): void { super.setLevel(level); - this.master.setLevel(level); + this.parent.setLevel(level); } } diff --git a/src/vs/platform/storage/browser/storageService.ts b/src/vs/platform/storage/browser/storageService.ts index d3e4a216ea2..07275bb2b17 100644 --- a/src/vs/platform/storage/browser/storageService.ts +++ b/src/vs/platform/storage/browser/storageService.ts @@ -63,17 +63,11 @@ export class BrowserStorageService extends Disposable implements IStorageService // Workspace Storage this.workspaceStorageFile = joinPath(stateRoot, `${payload.id}.json`); + this.workspaceStorageDatabase = this._register(new FileStorageDatabase(this.workspaceStorageFile, false /* do not watch for external changes */, this.fileService)); this.workspaceStorage = this._register(new Storage(this.workspaceStorageDatabase)); this._register(this.workspaceStorage.onDidChangeStorage(key => this._onDidChangeStorage.fire({ key, scope: StorageScope.WORKSPACE }))); - const firstOpen = this.workspaceStorage.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN); - if (firstOpen === undefined) { - this.workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, !(await this.fileService.exists(this.workspaceStorageFile))); - } else if (firstOpen) { - this.workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, false); - } - // Global Storage this.globalStorageFile = joinPath(stateRoot, 'global.json'); this.globalStorageDatabase = this._register(new FileStorageDatabase(this.globalStorageFile, true /* watch for external changes */, this.fileService)); @@ -86,6 +80,15 @@ export class BrowserStorageService extends Disposable implements IStorageService this.globalStorage.init() ]); + // Check to see if this is the first time we are "opening" this workspace + const firstOpen = this.workspaceStorage.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN); + if (firstOpen === undefined) { + // NOTE@eamodio We can't reliably check to see if a workspace was added before this setting was introduced, so just pretend it is the first time + this.workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, true); + } else if (firstOpen) { + this.workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, false); + } + // In the browser we do not have support for long running unload sequences. As such, // we cannot ask for saving state in that moment, because that would result in a // long running operation. diff --git a/src/vs/platform/storage/node/storageService.ts b/src/vs/platform/storage/node/storageService.ts index d22e9595486..6e8f1d5f04b 100644 --- a/src/vs/platform/storage/node/storageService.ts +++ b/src/vs/platform/storage/node/storageService.ts @@ -105,6 +105,7 @@ export class NativeStorageService extends Disposable implements IStorageService ); await workspaceStorage.init(); + // Check to see if this is the first time we are "opening" this workspace const firstOpen = workspaceStorage.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN); if (firstOpen === undefined) { workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, !result.wasCreated); diff --git a/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts b/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts index be2da97b550..ef35fc2b34c 100644 --- a/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts +++ b/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts @@ -81,6 +81,12 @@ export class UserDataAutoSyncService extends UserDataAutoSyncEnablementService i private readonly _onError: Emitter = this._register(new Emitter()); readonly onError: Event = this._onError.event; + private readonly _onTurnOnSync: Emitter = this._register(new Emitter()); + readonly onTurnOnSync: Event = this._onTurnOnSync.event; + + private readonly _onDidTurnOnSync: Emitter = this._register(new Emitter()); + readonly onDidTurnOnSync: Event = this._onDidTurnOnSync.event; + constructor( @IUserDataSyncStoreService private readonly userDataSyncStoreService: IUserDataSyncStoreService, @IUserDataSyncResourceEnablementService private readonly userDataSyncResourceEnablementService: IUserDataSyncResourceEnablementService, @@ -140,15 +146,23 @@ export class UserDataAutoSyncService extends UserDataAutoSyncEnablementService i } async turnOn(pullFirst: boolean): Promise { - this.stopDisableMachineEventually(); + this._onTurnOnSync.fire(); - if (pullFirst) { - await this.userDataSyncService.pull(); - } else { - await this.userDataSyncService.sync(); + try { + this.stopDisableMachineEventually(); + + if (pullFirst) { + await this.userDataSyncService.pull(); + } else { + await this.userDataSyncService.sync(); + } + + this.setEnablement(true); + this._onDidTurnOnSync.fire(undefined); + } catch (error) { + this._onDidTurnOnSync.fire(error); + throw error; } - - this.setEnablement(true); } async turnOff(everywhere: boolean, softTurnOffOnError?: boolean, donotRemoveMachine?: boolean): Promise { diff --git a/src/vs/platform/userDataSync/common/userDataSync.ts b/src/vs/platform/userDataSync/common/userDataSync.ts index a79be906630..82ac0b7c177 100644 --- a/src/vs/platform/userDataSync/common/userDataSync.ts +++ b/src/vs/platform/userDataSync/common/userDataSync.ts @@ -357,6 +357,7 @@ export interface IUserDataSyncService { readonly status: SyncStatus; readonly onDidChangeStatus: Event; + readonly onSynchronizeResource: Event; readonly conflicts: SyncResourceConflicts[]; readonly onDidChangeConflicts: Event; @@ -390,6 +391,8 @@ export interface IUserDataSyncService { export const IUserDataAutoSyncService = createDecorator('IUserDataAutoSyncService'); export interface IUserDataAutoSyncService { _serviceBrand: any; + readonly onTurnOnSync: Event + readonly onDidTurnOnSync: Event readonly onError: Event; readonly onDidChangeEnablement: Event; isEnabled(): boolean; diff --git a/src/vs/platform/userDataSync/common/userDataSyncIpc.ts b/src/vs/platform/userDataSync/common/userDataSyncIpc.ts index 2df27100016..33a87aa165c 100644 --- a/src/vs/platform/userDataSync/common/userDataSyncIpc.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncIpc.ts @@ -22,6 +22,7 @@ export class UserDataSyncChannel implements IServerChannel { listen(_: unknown, event: string): Event { switch (event) { case 'onDidChangeStatus': return this.service.onDidChangeStatus; + case 'onSynchronizeResource': return this.service.onSynchronizeResource; case 'onDidChangeConflicts': return this.service.onDidChangeConflicts; case 'onDidChangeLocal': return this.service.onDidChangeLocal; case 'onDidChangeLastSyncTime': return this.service.onDidChangeLastSyncTime; @@ -68,6 +69,8 @@ export class UserDataAutoSyncChannel implements IServerChannel { listen(_: unknown, event: string): Event { switch (event) { + case 'onTurnOnSync': return this.service.onTurnOnSync; + case 'onDidTurnOnSync': return this.service.onDidTurnOnSync; case 'onError': return this.service.onError; } throw new Error(`Event not found: ${event}`); diff --git a/src/vs/platform/userDataSync/common/userDataSyncService.ts b/src/vs/platform/userDataSync/common/userDataSyncService.ts index a1e9c9592c9..2fadc715911 100644 --- a/src/vs/platform/userDataSync/common/userDataSyncService.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncService.ts @@ -39,6 +39,9 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ private _onDidChangeStatus: Emitter = this._register(new Emitter()); readonly onDidChangeStatus: Event = this._onDidChangeStatus.event; + private _onSynchronizeResource: Emitter = this._register(new Emitter()); + readonly onSynchronizeResource: Event = this._onSynchronizeResource.event; + readonly onDidChangeLocal: Event; private _conflicts: SyncResourceConflicts[] = []; @@ -91,6 +94,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ try { for (const synchroniser of this.synchronisers) { try { + this._onSynchronizeResource.fire(synchroniser.resource); await synchroniser.pull(); } catch (e) { this.handleSynchronizerError(e, synchroniser.resource); @@ -175,6 +179,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ return; } try { + this._onSynchronizeResource.fire(synchroniser.resource); await synchroniser.sync(manifest, syncHeaders); } catch (e) { this.handleSynchronizerError(e, synchroniser.resource); diff --git a/src/vs/platform/webview/common/resourceLoader.ts b/src/vs/platform/webview/common/resourceLoader.ts index e0809809ee4..03de5b6c946 100644 --- a/src/vs/platform/webview/common/resourceLoader.ts +++ b/src/vs/platform/webview/common/resourceLoader.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { VSBuffer, VSBufferReadableStream } from 'vs/base/common/buffer'; +import { VSBufferReadableStream } from 'vs/base/common/buffer'; import { CancellationToken } from 'vs/base/common/cancellation'; import { isUNC } from 'vs/base/common/extpath'; import { Schemas } from 'vs/base/common/network'; @@ -11,14 +11,12 @@ import { sep } from 'vs/base/common/path'; import { URI } from 'vs/base/common/uri'; import { IFileService } from 'vs/platform/files/common/files'; import { IRemoteConnectionData } from 'vs/platform/remote/common/remoteAuthorityResolver'; -import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; import { IRequestService } from 'vs/platform/request/common/request'; import { getWebviewContentMimeType } from 'vs/platform/webview/common/mimeTypes'; export const webviewPartitionId = 'webview'; - export namespace WebviewResourceResponse { export enum Type { Success, Failed, AccessDenied } @@ -31,73 +29,41 @@ export namespace WebviewResourceResponse { ) { } } - export class BufferSuccess { - readonly type = Type.Success; - - constructor( - public readonly buffer: VSBuffer, - public readonly mimeType: string - ) { } - } - export const Failed = { type: Type.Failed } as const; export const AccessDenied = { type: Type.AccessDenied } as const; - export type BufferResponse = BufferSuccess | typeof Failed | typeof AccessDenied; export type StreamResponse = StreamSuccess | typeof Failed | typeof AccessDenied; } export async function loadLocalResource( - requestUri: URI, - fileService: IFileService, - extensionLocation: URI | undefined, - roots: ReadonlyArray -): Promise { - const resourceToLoad = getResourceToLoad(requestUri, extensionLocation, roots); - if (!resourceToLoad) { - return WebviewResourceResponse.AccessDenied; - } - - try { - const data = await fileService.readFile(resourceToLoad); - const mime = getWebviewContentMimeType(requestUri); // Use the original path for the mime - return new WebviewResourceResponse.BufferSuccess(data.value, mime); - } catch (err) { - console.log(err); - return WebviewResourceResponse.Failed; - } -} - -export async function loadLocalResourceStream( requestUri: URI, options: { extensionLocation: URI | undefined; roots: ReadonlyArray; remoteConnectionData?: IRemoteConnectionData | null; + rewriteUri?: (uri: URI) => URI, }, fileService: IFileService, requestService: IRequestService, ): Promise { - const resourceToLoad = getResourceToLoad(requestUri, options.extensionLocation, options.roots); + let resourceToLoad = getResourceToLoad(requestUri, options.roots); if (!resourceToLoad) { return WebviewResourceResponse.AccessDenied; } + const mime = getWebviewContentMimeType(requestUri); // Use the original path for the mime - if (options.remoteConnectionData) { - // Remote uris must go to the resolved server. - if (resourceToLoad.scheme === Schemas.vscodeRemote || (options.extensionLocation?.scheme === REMOTE_HOST_SCHEME)) { - const uri = URI.parse(`http://${options.remoteConnectionData.host}:${options.remoteConnectionData.port}`).with({ - path: '/vscode-remote-resource', - query: `tkn=${options.remoteConnectionData.connectionToken}&path=${encodeURIComponent(resourceToLoad.path)}`, - }); + // Perform extra normalization if needed + if (options.rewriteUri) { + resourceToLoad = options.rewriteUri(resourceToLoad); + } - const response = await requestService.request({ url: uri.toString(true) }, CancellationToken.None); - if (response.res.statusCode === 200) { - return new WebviewResourceResponse.StreamSuccess(response.stream, mime); - } - return WebviewResourceResponse.Failed; + if (resourceToLoad.scheme === Schemas.http || resourceToLoad.scheme === Schemas.https) { + const response = await requestService.request({ url: resourceToLoad.toString(true) }, CancellationToken.None); + if (response.res.statusCode === 200) { + return new WebviewResourceResponse.StreamSuccess(response.stream, mime); } + return WebviewResourceResponse.Failed; } try { @@ -111,7 +77,6 @@ export async function loadLocalResourceStream( function getResourceToLoad( requestUri: URI, - extensionLocation: URI | undefined, roots: ReadonlyArray ): URI | undefined { const normalizedPath = normalizeRequestPath(requestUri); diff --git a/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts b/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts index 047c752ba1d..8da70a013af 100644 --- a/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts +++ b/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts @@ -12,7 +12,8 @@ import { URI } from 'vs/base/common/uri'; import { IFileService } from 'vs/platform/files/common/files'; import { IRemoteConnectionData } from 'vs/platform/remote/common/remoteAuthorityResolver'; import { IRequestService } from 'vs/platform/request/common/request'; -import { loadLocalResourceStream, webviewPartitionId, WebviewResourceResponse } from 'vs/platform/webview/common/resourceLoader'; +import { loadLocalResource, webviewPartitionId, WebviewResourceResponse } from 'vs/platform/webview/common/resourceLoader'; +import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; interface WebviewMetadata { readonly extensionLocation: URI | undefined; @@ -39,11 +40,31 @@ export class WebviewProtocolProvider extends Disposable { const id = uri.authority; const metadata = this.webviewMetadata.get(id); if (metadata) { - const result = await loadLocalResourceStream(uri, { + + // Try to further rewrite remote uris so that they go to the resolved server on the main thread + let rewriteUri: undefined | ((uri: URI) => URI); + if (metadata.remoteConnectionData) { + rewriteUri = (uri) => { + if (metadata.remoteConnectionData) { + if (uri.scheme === Schemas.vscodeRemote || (metadata.extensionLocation?.scheme === REMOTE_HOST_SCHEME)) { + const scheme = metadata.remoteConnectionData.host === 'localhost' || metadata.remoteConnectionData.host === '127.0.0.1' ? 'http' : 'https'; + return URI.parse(`${scheme}://${metadata.remoteConnectionData.host}:${metadata.remoteConnectionData.port}`).with({ + path: '/vscode-remote-resource', + query: `tkn=${metadata.remoteConnectionData.connectionToken}&path=${encodeURIComponent(uri.path)}`, + }); + } + } + return uri; + }; + } + + const result = await loadLocalResource(uri, { extensionLocation: metadata.extensionLocation, roots: metadata.localResourceRoots, remoteConnectionData: metadata.remoteConnectionData, + rewriteUri, }, this.fileService, this.requestService); + if (result.type === WebviewResourceResponse.Type.Success) { return callback({ statusCode: 200, diff --git a/src/vs/platform/windows/electron-main/windowsMainService.ts b/src/vs/platform/windows/electron-main/windowsMainService.ts index 7b98cfd1b48..cb12f90775b 100644 --- a/src/vs/platform/windows/electron-main/windowsMainService.ts +++ b/src/vs/platform/windows/electron-main/windowsMainService.ts @@ -252,13 +252,13 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic // Note that onBeforeShutdown() and onBeforeWindowClose() are fired in different order depending on the OS: // - macOS: since the app will not quit when closing the last window, you will always first get - // the onBeforeShutdown() event followed by N onbeforeWindowClose() events for each window + // the onBeforeShutdown() event followed by N onBeforeWindowClose() events for each window // - other: on other OS, closing the last window will quit the app so the order depends on the // user interaction: closing the last window will first trigger onBeforeWindowClose() // and then onBeforeShutdown(). Using the quit action however will first issue onBeforeShutdown() // and then onBeforeWindowClose(). // - // Here is the behaviour on different OS dependig on action taken (Electron 1.7.x): + // Here is the behavior on different OS depending on action taken (Electron 1.7.x): // // Legend // - quit(N): quit application with N windows opened @@ -320,7 +320,7 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic // 3.) All windows (except extension host) for N >= 2 to support restoreWindows: all or for auto update // - // Carefull here: asking a window for its window state after it has been closed returns bogus values (width: 0, height: 0) + // Careful here: asking a window for its window state after it has been closed returns bogus values (width: 0, height: 0) // so if we ever want to persist the UI state of the last closed window (window count === 1), it has // to come from the stored lastClosedWindowState on Win/Linux at least if (this.getWindowCount() > 1) { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index b98f9591efd..f849ec11761 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -1054,6 +1054,64 @@ declare module 'vscode' { //#endregion + //#region Terminal link provider https://github.com/microsoft/vscode/issues/91606 + + export namespace window { + export function registerTerminalLinkProvider(provider: TerminalLinkProvider): Disposable; + } + + export interface TerminalLinkContext { + /** + * This is the text from the unwrapped line in the terminal. + */ + line: string; + + /** + * The terminal the link belongs to. + */ + terminal: Terminal; + } + + export interface TerminalLinkProvider { + provideTerminalLinks(context: TerminalLinkContext): ProviderResult + + /** + * Handle an activated terminal link. + * + * @returns Whether the link was handled, if not VS Code will attempt to open it. + */ + handleTerminalLink(link: T): ProviderResult; + } + + export interface TerminalLink { + /** + * The start index of the link on [TerminalLinkContext.line](#TerminalLinkContext.line]. + */ + startIndex: number; + + /** + * The length of the link on [TerminalLinkContext.line](#TerminalLinkContext.line] + */ + length: number; + + /** + * The uri this link points to. If set, and {@link TerminalLinkProvider.handlerTerminalLink} + * is not implemented or returns false, then VS Code will try to open the Uri. + */ + target?: Uri; + + /** + * The tooltip text when you hover over this link. + * + * If a tooltip is provided, is will be displayed in a string that includes instructions on + * how to trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary + * depending on OS, user settings, and localization. + */ + tooltip?: string; + } + + //#endregion + //#region @jrieken -> exclusive document filters export interface DocumentFilter { diff --git a/src/vs/workbench/api/browser/mainThreadEditors.ts b/src/vs/workbench/api/browser/mainThreadEditors.ts index 9a7936d1ffd..c6fdc10d334 100644 --- a/src/vs/workbench/api/browser/mainThreadEditors.ts +++ b/src/vs/workbench/api/browser/mainThreadEditors.ts @@ -24,9 +24,9 @@ import { ExtHostContext, ExtHostEditorsShape, IApplyEditsOptions, IExtHostContex import { EditorViewColumn, editorGroupToViewColumn, viewColumnToEditorGroup } from 'vs/workbench/api/common/shared/editor'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; -import { openEditorWith } from 'vs/workbench/contrib/files/common/openWith'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; +import { openEditorWith } from 'vs/workbench/services/editor/common/editorOpenWith'; export class MainThreadTextEditors implements MainThreadTextEditorsShape { diff --git a/src/vs/workbench/api/browser/mainThreadTerminalService.ts b/src/vs/workbench/api/browser/mainThreadTerminalService.ts index 68f4bb30ecd..c53cedd6be0 100644 --- a/src/vs/workbench/api/browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/browser/mainThreadTerminalService.ts @@ -9,7 +9,7 @@ import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceS import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { URI } from 'vs/base/common/uri'; import { StopWatch } from 'vs/base/common/stopwatch'; -import { ITerminalInstanceService, ITerminalService, ITerminalInstance, ITerminalBeforeHandleLinkEvent } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalInstanceService, ITerminalService, ITerminalInstance, ITerminalBeforeHandleLinkEvent, ITerminalExternalLinkProvider, ITerminalLink } from 'vs/workbench/contrib/terminal/browser/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { TerminalDataBufferer } from 'vs/workbench/contrib/terminal/common/terminalDataBuffering'; @@ -25,6 +25,13 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape private readonly _terminalProcessProxies = new Map(); private _dataEventTracker: TerminalDataEventTracker | undefined; private _linkHandler: IDisposable | undefined; + /** + * A single shared terminal link provider for the exthost. When an ext registers a link + * provider, this is registered with the terminal on the renderer side and all links are + * provided through this, even from multiple ext link providers. Xterm should remove lower + * priority intersecting links itself. + */ + private _linkProvider: IDisposable | undefined; constructor( extHostContext: IExtHostContext, @@ -86,6 +93,8 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape public dispose(): void { this._toDispose.dispose(); + this._linkHandler?.dispose(); + this._linkProvider?.dispose(); // TODO@Daniel: Should all the previously created terminals be disposed // when the extension host process goes down ? @@ -162,6 +171,17 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape public $stopHandlingLinks(): void { this._linkHandler?.dispose(); + this._linkHandler = undefined; + } + + public $startLinkProvider(): void { + this._linkProvider?.dispose(); + this._linkProvider = this._terminalService.registerLinkProvider(new ExtensionTerminalLinkProvider(this._proxy)); + } + + public $stopLinkProvider(): void { + this._linkProvider?.dispose(); + this._linkProvider = undefined; } private async _handleLink(e: ITerminalBeforeHandleLinkEvent): Promise { @@ -395,3 +415,22 @@ class TerminalDataEventTracker extends Disposable { this._register(this._bufferer.startBuffering(instance.id, instance.onData)); } } + +class ExtensionTerminalLinkProvider implements ITerminalExternalLinkProvider { + constructor( + private readonly _proxy: ExtHostTerminalServiceShape + ) { + } + + async provideLinks(instance: ITerminalInstance, line: string): Promise { + const proxy = this._proxy; + const extHostLinks = await proxy.$provideLinks(instance.id, line); + return extHostLinks.map(dto => ({ + id: dto.id, + startIndex: dto.startIndex, + length: dto.length, + label: dto.label, + activate: () => proxy.$activateLink(instance.id, dto.id) + })); + } +} diff --git a/src/vs/workbench/api/browser/mainThreadWebview.ts b/src/vs/workbench/api/browser/mainThreadWebview.ts index 0240c478525..758aa349107 100644 --- a/src/vs/workbench/api/browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/browser/mainThreadWebview.ts @@ -141,7 +141,7 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma this._register(_editorService.onDidActiveEditorChange(() => { const activeInput = this._editorService.activeEditor; - if (activeInput instanceof DiffEditorInput && activeInput.master instanceof WebviewInput && activeInput.details instanceof WebviewInput) { + if (activeInput instanceof DiffEditorInput && activeInput.primary instanceof WebviewInput && activeInput.secondary instanceof WebviewInput) { this.registerWebviewFromDiffEditorListeners(activeInput); } @@ -468,22 +468,22 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma } private registerWebviewFromDiffEditorListeners(diffEditorInput: DiffEditorInput): void { - const master = diffEditorInput.master as WebviewInput; - const details = diffEditorInput.details as WebviewInput; + const primary = diffEditorInput.primary as WebviewInput; + const secondary = diffEditorInput.secondary as WebviewInput; - if (this._webviewFromDiffEditorHandles.has(master.id) || this._webviewFromDiffEditorHandles.has(details.id)) { + if (this._webviewFromDiffEditorHandles.has(primary.id) || this._webviewFromDiffEditorHandles.has(secondary.id)) { return; } - this._webviewFromDiffEditorHandles.add(master.id); - this._webviewFromDiffEditorHandles.add(details.id); + this._webviewFromDiffEditorHandles.add(primary.id); + this._webviewFromDiffEditorHandles.add(secondary.id); const disposables = new DisposableStore(); - disposables.add(master.webview.onDidFocus(() => this.updateWebviewViewStates(master))); - disposables.add(details.webview.onDidFocus(() => this.updateWebviewViewStates(details))); + disposables.add(primary.webview.onDidFocus(() => this.updateWebviewViewStates(primary))); + disposables.add(secondary.webview.onDidFocus(() => this.updateWebviewViewStates(secondary))); disposables.add(diffEditorInput.onDispose(() => { - this._webviewFromDiffEditorHandles.delete(master.id); - this._webviewFromDiffEditorHandles.delete(details.id); + this._webviewFromDiffEditorHandles.delete(primary.id); + this._webviewFromDiffEditorHandles.delete(secondary.id); dispose(disposables); })); } @@ -515,8 +515,8 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma for (const group of this._editorGroupService.groups) { for (const input of group.editors) { if (input instanceof DiffEditorInput) { - updateViewStatesForInput(group, input, input.master); - updateViewStatesForInput(group, input, input.details); + updateViewStatesForInput(group, input, input.primary); + updateViewStatesForInput(group, input, input.secondary); } else { updateViewStatesForInput(group, input, input); } diff --git a/src/vs/workbench/api/common/extHost.api.impl.ts b/src/vs/workbench/api/common/extHost.api.impl.ts index c36da3cc4cd..68590f9c509 100644 --- a/src/vs/workbench/api/common/extHost.api.impl.ts +++ b/src/vs/workbench/api/common/extHost.api.impl.ts @@ -46,7 +46,7 @@ import * as typeConverters from 'vs/workbench/api/common/extHostTypeConverters'; import * as extHostTypes from 'vs/workbench/api/common/extHostTypes'; import { ExtHostUrls } from 'vs/workbench/api/common/extHostUrls'; import { ExtHostWebviews } from 'vs/workbench/api/common/extHostWebview'; -import { ExtHostWindow } from 'vs/workbench/api/common/extHostWindow'; +import { IExtHostWindow } from 'vs/workbench/api/common/extHostWindow'; import { IExtHostWorkspace } from 'vs/workbench/api/common/extHostWorkspace'; import { throwProposedApiError, checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { ProxyIdentifier } from 'vs/workbench/services/extensions/common/proxyIdentifier'; @@ -97,6 +97,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I const extHostLogService = accessor.get(ILogService); const extHostTunnelService = accessor.get(IExtHostTunnelService); const extHostApiDeprecation = accessor.get(IExtHostApiDeprecationService); + const extHostWindow = accessor.get(IExtHostWindow); // register addressable instances rpcProtocol.set(ExtHostContext.ExtHostLogService, extHostLogService); @@ -105,6 +106,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I rpcProtocol.set(ExtHostContext.ExtHostExtensionService, extensionService); rpcProtocol.set(ExtHostContext.ExtHostStorage, extHostStorage); rpcProtocol.set(ExtHostContext.ExtHostTunnelService, extHostTunnelService); + rpcProtocol.set(ExtHostContext.ExtHostWindow, extHostWindow); // automatically create and register addressable instances const extHostDecorations = rpcProtocol.set(ExtHostContext.ExtHostDecorations, accessor.get(IExtHostDecorations)); @@ -131,7 +133,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I const extHostQuickOpen = rpcProtocol.set(ExtHostContext.ExtHostQuickOpen, new ExtHostQuickOpen(rpcProtocol, extHostWorkspace, extHostCommands)); const extHostSCM = rpcProtocol.set(ExtHostContext.ExtHostSCM, new ExtHostSCM(rpcProtocol, extHostCommands, extHostLogService)); const extHostComment = rpcProtocol.set(ExtHostContext.ExtHostComments, new ExtHostComments(rpcProtocol, extHostCommands, extHostDocuments)); - const extHostWindow = rpcProtocol.set(ExtHostContext.ExtHostWindow, new ExtHostWindow(rpcProtocol)); const extHostProgress = rpcProtocol.set(ExtHostContext.ExtHostProgress, new ExtHostProgress(rpcProtocol.getProxy(MainContext.MainThreadProgress))); const extHostLabelService = rpcProtocol.set(ExtHostContext.ExtHosLabelService, new ExtHostLabelService(rpcProtocol)); const extHostNotebook = rpcProtocol.set(ExtHostContext.ExtHostNotebook, new ExtHostNotebookController(rpcProtocol, extHostCommands, extHostDocumentsAndEditors, initData.environment, extensionStoragePaths)); @@ -586,6 +587,10 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I checkProposedApiEnabled(extension); return extHostTerminalService.registerLinkHandler(handler); }, + registerTerminalLinkProvider(handler: vscode.TerminalLinkProvider): vscode.Disposable { + checkProposedApiEnabled(extension); + return extHostTerminalService.registerLinkProvider(handler); + }, registerTreeDataProvider(viewId: string, treeDataProvider: vscode.TreeDataProvider): vscode.Disposable { return extHostTreeViews.registerTreeDataProvider(viewId, treeDataProvider, extension); }, diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 2c27c6db2d6..0486ac866be 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -450,6 +450,8 @@ export interface MainThreadTerminalServiceShape extends IDisposable { $stopSendingDataEvents(): void; $startHandlingLinks(): void; $stopHandlingLinks(): void; + $startLinkProvider(): void; + $stopLinkProvider(): void; $setEnvironmentVariableCollection(extensionIdentifier: string, persistent: boolean, collection: ISerializableEnvironmentVariableCollection | undefined): void; // Process @@ -1380,6 +1382,17 @@ export interface IShellAndArgsDto { args: string[] | string | undefined; } +export interface ITerminalLinkDto { + /** The ID of the link to enable activation and disposal. */ + id: number; + /** The startIndex of the link in the line. */ + startIndex: number; + /** The length of the link in the line. */ + length: number; + /** The descriptive label for what the link does when activated. */ + label?: string; +} + export interface ITerminalDimensionsDto { columns: number; rows: number; @@ -1406,6 +1419,8 @@ export interface ExtHostTerminalServiceShape { $getAvailableShells(): Promise; $getDefaultShellAndArgs(useAutomationShell: boolean): Promise; $handleLink(id: number, link: string): Promise; + $provideLinks(id: number, line: string): Promise; + $activateLink(id: number, linkId: number): void; $initEnvironmentVariableCollections(collections: [string, ISerializableEnvironmentVariableCollection][]): void; } diff --git a/src/vs/workbench/api/common/extHostTerminalService.ts b/src/vs/workbench/api/common/extHostTerminalService.ts index 2cc0aeea3c3..dc47c5d8b79 100644 --- a/src/vs/workbench/api/common/extHostTerminalService.ts +++ b/src/vs/workbench/api/common/extHostTerminalService.ts @@ -5,7 +5,7 @@ import type * as vscode from 'vscode'; import { Event, Emitter } from 'vs/base/common/event'; -import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IShellLaunchConfigDto, IShellDefinitionDto, IShellAndArgsDto, ITerminalDimensionsDto } from 'vs/workbench/api/common/extHost.protocol'; +import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IShellLaunchConfigDto, IShellDefinitionDto, IShellAndArgsDto, ITerminalDimensionsDto, ITerminalLinkDto } from 'vs/workbench/api/common/extHost.protocol'; import { ExtHostConfigProvider } from 'vs/workbench/api/common/extHostConfiguration'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { URI, UriComponents } from 'vs/base/common/uri'; @@ -39,6 +39,7 @@ export interface IExtHostTerminalService extends ExtHostTerminalServiceShape { getDefaultShell(useAutomationShell: boolean, configProvider: ExtHostConfigProvider): string; getDefaultShellArgs(useAutomationShell: boolean, configProvider: ExtHostConfigProvider): string[] | string; registerLinkHandler(handler: vscode.TerminalLinkHandler): vscode.Disposable; + registerLinkProvider(provider: vscode.TerminalLinkProvider): vscode.Disposable; getEnvironmentVariableCollection(extension: IExtensionDescription, persistent?: boolean): vscode.EnvironmentVariableCollection; } @@ -293,6 +294,13 @@ export class ExtHostPseudoterminal implements ITerminalChildProcess { } } +let nextLinkId = 1; + +interface ICachedLinkEntry { + provider: vscode.TerminalLinkProvider; + link: vscode.TerminalLink; +} + export abstract class BaseExtHostTerminalService implements IExtHostTerminalService, ExtHostTerminalServiceShape { readonly _serviceBrand: undefined; @@ -307,6 +315,8 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ private readonly _bufferer: TerminalDataBufferer; private readonly _linkHandlers: Set = new Set(); + private readonly _linkProviders: Set = new Set(); + private readonly _terminalLinkCache: Map> = new Map(); public get activeTerminal(): ExtHostTerminal | undefined { return this._activeTerminal; } public get terminals(): ExtHostTerminal[] { return this._terminals; } @@ -547,17 +557,30 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ public registerLinkHandler(handler: vscode.TerminalLinkHandler): vscode.Disposable { this._linkHandlers.add(handler); - if (this._linkHandlers.size === 1) { + if (this._linkHandlers.size === 1 && this._linkProviders.size === 0) { this._proxy.$startHandlingLinks(); } return new VSCodeDisposable(() => { this._linkHandlers.delete(handler); - if (this._linkHandlers.size === 0) { + if (this._linkHandlers.size === 0 && this._linkProviders.size === 0) { this._proxy.$stopHandlingLinks(); } }); } + public registerLinkProvider(provider: vscode.TerminalLinkProvider): vscode.Disposable { + this._linkProviders.add(provider); + if (this._linkProviders.size === 1) { + this._proxy.$startLinkProvider(); + } + return new VSCodeDisposable(() => { + this._linkProviders.delete(provider); + if (this._linkProviders.size === 0) { + this._proxy.$stopLinkProvider(); + } + }); + } + public async $handleLink(id: number, link: string): Promise { const terminal = this._getTerminalById(id); if (!terminal) { @@ -577,6 +600,62 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ return false; } + public async $provideLinks(terminalId: number, line: string): Promise { + const terminal = this._getTerminalById(terminalId); + if (!terminal) { + return []; + } + + // Discard any cached links the terminal has been holding, currently all links are released + // when new links are provided. + this._terminalLinkCache.delete(terminalId); + + const result: ITerminalLinkDto[] = []; + const context: vscode.TerminalLinkContext = { terminal, line }; + const promises: vscode.ProviderResult<{ provider: vscode.TerminalLinkProvider, links: vscode.TerminalLink[] }>[] = []; + for (const provider of this._linkProviders) { + promises.push(new Promise(async r => { + const links = (await provider.provideTerminalLinks(context)) || []; + r({ provider, links }); + })); + } + + const provideResults = await Promise.all(promises); + const cacheLinkMap = new Map(); + for (const provideResult of provideResults) { + if (provideResult && provideResult.links.length > 0) { + result.push(...provideResult.links.map(providerLink => { + const link = { + id: nextLinkId++, + startIndex: providerLink.startIndex, + length: providerLink.length, + label: providerLink.tooltip + }; + cacheLinkMap.set(link.id, { + provider: provideResult.provider, + link: providerLink + }); + return link; + })); + } + } + + this._terminalLinkCache.set(terminalId, cacheLinkMap); + + return result; + } + + $activateLink(terminalId: number, linkId: number): void { + const cachedLink = this._terminalLinkCache.get(terminalId)?.get(linkId); + if (!cachedLink) { + return; + } + cachedLink.provider.handleTerminalLink(cachedLink.link); + // TODO: Handle when result is false? Should this be return void instead and remove + // TerminalLink.target? It's a simple call to window.openUri for the extension otherwise + // and would simplify the API. + } + private _onProcessExit(id: number, exitCode: number | undefined): void { this._bufferer.stopBuffering(id); diff --git a/src/vs/workbench/api/common/extHostTypes.ts b/src/vs/workbench/api/common/extHostTypes.ts index 0d7d4ffc4c2..cb1f0c981a7 100644 --- a/src/vs/workbench/api/common/extHostTypes.ts +++ b/src/vs/workbench/api/common/extHostTypes.ts @@ -1252,7 +1252,7 @@ export class MarkdownString { // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash this.value += (this.supportThemeIcons ? escapeCodicons(value) : value) .replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&') - .replace('\n', '\n\n'); + .replace(/\n/, '\n\n'); return this; } diff --git a/src/vs/workbench/api/common/extHostWindow.ts b/src/vs/workbench/api/common/extHostWindow.ts index f8c5d5fa3d7..b9f1cdee4b8 100644 --- a/src/vs/workbench/api/common/extHostWindow.ts +++ b/src/vs/workbench/api/common/extHostWindow.ts @@ -4,13 +4,15 @@ *--------------------------------------------------------------------------------------------*/ import { Event, Emitter } from 'vs/base/common/event'; -import { ExtHostWindowShape, MainContext, MainThreadWindowShape, IMainContext, IOpenUriOptions } from './extHost.protocol'; +import { ExtHostWindowShape, MainContext, MainThreadWindowShape, IOpenUriOptions } from './extHost.protocol'; import { WindowState } from 'vscode'; import { URI } from 'vs/base/common/uri'; import { Schemas } from 'vs/base/common/network'; import { isFalsyOrWhitespace } from 'vs/base/common/strings'; +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; +import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService'; -export class ExtHostWindow implements ExtHostWindowShape { +export class ExtHostWindow implements IExtHostWindow { private static InitialState: WindowState = { focused: true @@ -24,8 +26,8 @@ export class ExtHostWindow implements ExtHostWindowShape { private _state = ExtHostWindow.InitialState; get state(): WindowState { return this._state; } - constructor(mainContext: IMainContext) { - this._proxy = mainContext.getProxy(MainContext.MainThreadWindow); + constructor(@IExtHostRpcService extHostRpc: IExtHostRpcService) { + this._proxy = extHostRpc.getProxy(MainContext.MainThreadWindow); this._proxy.$getWindowVisibility().then(isFocused => this.$onDidChangeWindowFocus(isFocused)); } @@ -67,3 +69,6 @@ export class ExtHostWindow implements ExtHostWindowShape { return URI.from(result); } } + +export const IExtHostWindow = createDecorator('IExtHostWindow'); +export interface IExtHostWindow extends ExtHostWindow, ExtHostWindowShape { } diff --git a/src/vs/workbench/api/node/extHost.services.ts b/src/vs/workbench/api/node/extHost.services.ts index 72ad75d63ef..a6c0079600b 100644 --- a/src/vs/workbench/api/node/extHost.services.ts +++ b/src/vs/workbench/api/node/extHost.services.ts @@ -29,12 +29,14 @@ import { ExtHostLogService } from 'vs/workbench/api/node/extHostLogService'; import { IExtHostTunnelService } from 'vs/workbench/api/common/extHostTunnelService'; import { ExtHostTunnelService } from 'vs/workbench/api/node/extHostTunnelService'; import { IExtHostApiDeprecationService, ExtHostApiDeprecationService } from 'vs/workbench/api/common/extHostApiDeprecationService'; +import { IExtHostWindow, ExtHostWindow } from 'vs/workbench/api/common/extHostWindow'; // register singleton services registerSingleton(ILogService, ExtHostLogService); registerSingleton(IExtHostApiDeprecationService, ExtHostApiDeprecationService); registerSingleton(IExtHostOutputService, ExtHostOutputService2); registerSingleton(IExtHostWorkspace, ExtHostWorkspace); +registerSingleton(IExtHostWindow, ExtHostWindow); registerSingleton(IExtHostDecorations, ExtHostDecorations); registerSingleton(IExtHostConfiguration, ExtHostConfiguration); registerSingleton(IExtHostCommands, ExtHostCommands); diff --git a/src/vs/workbench/api/node/extHostDebugService.ts b/src/vs/workbench/api/node/extHostDebugService.ts index 7d2766a4b61..7d3cc3b33c3 100644 --- a/src/vs/workbench/api/node/extHostDebugService.ts +++ b/src/vs/workbench/api/node/extHostDebugService.ts @@ -121,6 +121,6 @@ export class ExtHostDebugService extends ExtHostDebugServiceBase { } protected createVariableResolver(folders: vscode.WorkspaceFolder[], editorService: ExtHostDocumentsAndEditors, configurationService: ExtHostConfigProvider): AbstractVariableResolverService { - return new ExtHostVariableResolverService(folders, undefined, configurationService, process.env as env.IProcessEnvironment); + return new ExtHostVariableResolverService(folders, editorService, configurationService, process.env as env.IProcessEnvironment); } } diff --git a/src/vs/workbench/browser/actions/quickAccessActions.ts b/src/vs/workbench/browser/actions/quickAccessActions.ts index 0295a2580ff..ca9637c09cf 100644 --- a/src/vs/workbench/browser/actions/quickAccessActions.ts +++ b/src/vs/workbench/browser/actions/quickAccessActions.ts @@ -138,7 +138,7 @@ CommandsRegistry.registerCommand({ handler: async function (accessor: ServicesAccessor, prefix: unknown) { const quickInputService = accessor.get(IQuickInputService); - quickInputService.quickAccess.show(typeof prefix === 'string' ? prefix : undefined); + quickInputService.quickAccess.show(typeof prefix === 'string' ? prefix : undefined, { preserveValue: typeof prefix === 'string' /* preserve as is if provided */ }); }, description: { description: `Quick access`, diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts index 53fcf64114d..bb66b64254b 100644 --- a/src/vs/workbench/browser/dnd.ts +++ b/src/vs/workbench/browser/dnd.ts @@ -5,7 +5,7 @@ import { hasWorkspaceFileExtension, IWorkspaceFolderCreationData, IRecentFile, IWorkspacesService } from 'vs/platform/workspaces/common/workspaces'; import { normalize } from 'vs/base/common/path'; -import { basename } from 'vs/base/common/resources'; +import { basename, extUri } from 'vs/base/common/resources'; import { IFileService } from 'vs/platform/files/common/files'; import { IWindowOpenable } from 'vs/platform/windows/common/windows'; import { URI } from 'vs/base/common/uri'; @@ -357,7 +357,7 @@ export function fillResourceDataTransfers(accessor: ServicesAccessor, resources: for (const textEditorControl of textEditorControls) { if (isCodeEditor(textEditorControl)) { const model = textEditorControl.getModel(); - if (model?.uri?.toString() === file.resource.toString()) { + if (extUri.isEqual(model?.uri, file.resource)) { return withNullAsUndefined(textEditorControl.saveViewState()); } } diff --git a/src/vs/workbench/browser/labels.ts b/src/vs/workbench/browser/labels.ts index 570118ed8b7..328f6324128 100644 --- a/src/vs/workbench/browser/labels.ts +++ b/src/vs/workbench/browser/labels.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { URI } from 'vs/base/common/uri'; -import { dirname, isEqual, basenameOrAuthority } from 'vs/base/common/resources'; +import { dirname, isEqual, basenameOrAuthority, extUri } from 'vs/base/common/resources'; import { IconLabel, IIconLabelValueOptions, IIconLabelCreationOptions } from 'vs/base/browser/ui/iconLabel/iconLabel'; import { IModeService } from 'vs/editor/common/services/modeService'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; @@ -24,7 +24,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { withNullAsUndefined } from 'vs/base/common/types'; export interface IResourceLabelProps { - resource?: URI | { master?: URI, detail?: URI }; + resource?: URI | { primary?: URI, secondary?: URI }; name?: string | string[]; description?: string; } @@ -38,7 +38,7 @@ function toResource(props: IResourceLabelProps | undefined): URI | undefined { return props.resource; } - return props.resource.master; + return props.resource.primary; } export interface IResourceLabelOptions extends IIconLabelValueOptions { @@ -307,7 +307,7 @@ class ResourceLabelWidget extends IconLabel { return; // only update if resource exists } - if (model.uri.toString() === resource.toString()) { + if (extUri.isEqual(model.uri, resource)) { if (this.lastKnownDetectedModeId !== model.getModeId()) { this.render(true); // update if the language id of the model has changed from our last known state } @@ -379,9 +379,9 @@ class ResourceLabelWidget extends IconLabel { setResource(label: IResourceLabelProps, options: IResourceLabelOptions = Object.create(null)): void { const resource = toResource(label); - const isMasterDetail = label?.resource && !URI.isUri(label.resource); + const isSideBySideEditor = label?.resource && !URI.isUri(label.resource); - if (!options.forceLabel && !isMasterDetail && resource?.scheme === Schemas.untitled) { + if (!options.forceLabel && !isSideBySideEditor && resource?.scheme === Schemas.untitled) { // Untitled labels are very dynamic because they may change // whenever the content changes (unless a path is associated). // As such we always ask the actual editor for it's name and @@ -390,7 +390,7 @@ class ResourceLabelWidget extends IconLabel { // we assume that the client does not want to display them // and as such do not override. // - // We do not touch the label if it represents a master-detail + // We do not touch the label if it represents a primary-secondary // because in that case we expect it to carry a proper label // and description. const untitledModel = this.textFileService.untitled.get(resource); diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts index c9d20c205bf..0662dfcd2bc 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts @@ -568,7 +568,8 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi return; } - const firstOpen = storageService.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE); + // The `firstRun` flag check is a safety-net hack for Codespaces, until we can verify the first open fix + const firstOpen = (storageService.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE) || (defaultLayout as { firstRun: boolean })?.firstRun); if (!firstOpen) { return; } @@ -790,7 +791,8 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi private getInitialFilesToOpen(): { filesToOpenOrCreate?: IPath[], filesToDiff?: IPath[] } | undefined { const defaultLayout = this.environmentService.options?.defaultLayout; - if (defaultLayout?.editors?.length && this.storageService.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE)) { + // The `firstRun` flag check is a safety-net hack for Codespaces, until we can verify the first open fix + if (defaultLayout?.editors?.length && (this.storageService.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE) || (defaultLayout as { firstRun: boolean })?.firstRun)) { this._openedDefaultEditors = true; return { diff --git a/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts b/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts index 964c8852ac5..9d285cea910 100644 --- a/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts +++ b/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts @@ -29,11 +29,11 @@ export class BinaryResourceDiffEditor extends SideBySideEditor { } getMetadata(): string | undefined { - const master = this.masterEditorPane; - const details = this.detailsEditorPane; + const primary = this.primaryEditorPane; + const secondary = this.secondaryEditorPane; - if (master instanceof BaseBinaryResourceEditor && details instanceof BaseBinaryResourceEditor) { - return nls.localize('metadataDiff', "{0} ↔ {1}", details.getMetadata(), master.getMetadata()); + if (primary instanceof BaseBinaryResourceEditor && secondary instanceof BaseBinaryResourceEditor) { + return nls.localize('metadataDiff', "{0} ↔ {1}", secondary.getMetadata(), primary.getMetadata()); } return undefined; diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts index 6e7ff0f164d..d69abfe14e9 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts @@ -234,7 +234,7 @@ export class BreadcrumbsControl { this._breadcrumbsDisposables.clear(); // honor diff editors and such - const uri = toResource(this._editorGroup.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const uri = toResource(this._editorGroup.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!uri || !this._fileService.canHandleResource(uri)) { // cleanup and return when there is no input or when diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts index cc889f73d01..165ff789e23 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -7,7 +7,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import * as nls from 'vs/nls'; import { URI, UriComponents } from 'vs/base/common/uri'; import { IEditorRegistry, EditorDescriptor, Extensions as EditorExtensions } from 'vs/workbench/browser/editor'; -import { EditorInput, IEditorInputFactory, SideBySideEditorInput, IEditorInputFactoryRegistry, Extensions as EditorInputExtensions, TextCompareEditorActiveContext, EditorPinnedContext, EditorGroupEditorsCountContext, EditorStickyContext } from 'vs/workbench/common/editor'; +import { EditorInput, IEditorInputFactory, SideBySideEditorInput, IEditorInputFactoryRegistry, Extensions as EditorInputExtensions, TextCompareEditorActiveContext, EditorPinnedContext, EditorGroupEditorsCountContext, EditorStickyContext, ActiveEditorAvailableEditorIdsContext } from 'vs/workbench/common/editor'; import { TextResourceEditor } from 'vs/workbench/browser/parts/editor/textResourceEditor'; import { SideBySideEditor } from 'vs/workbench/browser/parts/editor/sideBySideEditor'; import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; @@ -34,7 +34,7 @@ import { JoinAllGroupsAction, FocusLeftGroup, FocusAboveGroup, FocusRightGroup, FocusBelowGroup, EditorLayoutSingleAction, EditorLayoutTwoColumnsAction, EditorLayoutThreeColumnsAction, EditorLayoutTwoByTwoGridAction, EditorLayoutTwoRowsAction, EditorLayoutThreeRowsAction, EditorLayoutTwoColumnsBottomAction, EditorLayoutTwoRowsRightAction, NewEditorGroupLeftAction, NewEditorGroupRightAction, NewEditorGroupAboveAction, NewEditorGroupBelowAction, SplitEditorOrthogonalAction, CloseEditorInAllGroupsAction, NavigateToLastEditLocationAction, ToggleGroupSizesAction, ShowAllEditorsByMostRecentlyUsedAction, - QuickAccessPreviousRecentlyUsedEditorAction, OpenPreviousRecentlyUsedEditorInGroupAction, OpenNextRecentlyUsedEditorInGroupAction, QuickAccessLeastRecentlyUsedEditorAction, QuickAccessLeastRecentlyUsedEditorInGroupAction + QuickAccessPreviousRecentlyUsedEditorAction, OpenPreviousRecentlyUsedEditorInGroupAction, OpenNextRecentlyUsedEditorInGroupAction, QuickAccessLeastRecentlyUsedEditorAction, QuickAccessLeastRecentlyUsedEditorInGroupAction, ReopenResourcesAction, ToggleEditorTypeAction } from 'vs/workbench/browser/parts/editor/editorActions'; import * as editorCommands from 'vs/workbench/browser/parts/editor/editorCommands'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; @@ -173,28 +173,28 @@ interface ISerializedSideBySideEditorInput { name: string; description: string | undefined; - detailsSerialized: string; - masterSerialized: string; + primarySerialized: string; + secondarySerialized: string; - detailsTypeId: string; - masterTypeId: string; + primaryTypeId: string; + secondaryTypeId: string; } export abstract class AbstractSideBySideEditorInputFactory implements IEditorInputFactory { - private getInputFactories(detailsId: string, masterId: string): [IEditorInputFactory | undefined, IEditorInputFactory | undefined] { + private getInputFactories(secondaryId: string, primaryId: string): [IEditorInputFactory | undefined, IEditorInputFactory | undefined] { const registry = Registry.as(EditorInputExtensions.EditorInputFactories); - return [registry.getEditorInputFactory(detailsId), registry.getEditorInputFactory(masterId)]; + return [registry.getEditorInputFactory(secondaryId), registry.getEditorInputFactory(primaryId)]; } canSerialize(editorInput: EditorInput): boolean { const input = editorInput as SideBySideEditorInput | DiffEditorInput; - if (input.details && input.master) { - const [detailsInputFactory, masterInputFactory] = this.getInputFactories(input.details.getTypeId(), input.master.getTypeId()); + if (input.primary && input.secondary) { + const [secondaryInputFactory, primaryInputFactory] = this.getInputFactories(input.secondary.getTypeId(), input.primary.getTypeId()); - return !!(detailsInputFactory?.canSerialize(input.details) && masterInputFactory?.canSerialize(input.master)); + return !!(secondaryInputFactory?.canSerialize(input.secondary) && primaryInputFactory?.canSerialize(input.primary)); } return false; @@ -203,20 +203,20 @@ export abstract class AbstractSideBySideEditorInputFactory implements IEditorInp serialize(editorInput: EditorInput): string | undefined { const input = editorInput as SideBySideEditorInput | DiffEditorInput; - if (input.details && input.master) { - const [detailsInputFactory, masterInputFactory] = this.getInputFactories(input.details.getTypeId(), input.master.getTypeId()); - if (detailsInputFactory && masterInputFactory) { - const detailsSerialized = detailsInputFactory.serialize(input.details); - const masterSerialized = masterInputFactory.serialize(input.master); + if (input.primary && input.secondary) { + const [secondaryInputFactory, primaryInputFactory] = this.getInputFactories(input.secondary.getTypeId(), input.primary.getTypeId()); + if (primaryInputFactory && secondaryInputFactory) { + const primarySerialized = primaryInputFactory.serialize(input.primary); + const secondarySerialized = secondaryInputFactory.serialize(input.secondary); - if (detailsSerialized && masterSerialized) { + if (primarySerialized && secondarySerialized) { const serializedEditorInput: ISerializedSideBySideEditorInput = { name: input.getName(), description: input.getDescription(), - detailsSerialized, - masterSerialized, - detailsTypeId: input.details.getTypeId(), - masterTypeId: input.master.getTypeId() + primarySerialized: primarySerialized, + secondarySerialized: secondarySerialized, + primaryTypeId: input.primary.getTypeId(), + secondaryTypeId: input.secondary.getTypeId() }; return JSON.stringify(serializedEditorInput); @@ -230,33 +230,33 @@ export abstract class AbstractSideBySideEditorInputFactory implements IEditorInp deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): EditorInput | undefined { const deserialized: ISerializedSideBySideEditorInput = JSON.parse(serializedEditorInput); - const [detailsInputFactory, masterInputFactory] = this.getInputFactories(deserialized.detailsTypeId, deserialized.masterTypeId); - if (detailsInputFactory && masterInputFactory) { - const detailsInput = detailsInputFactory.deserialize(instantiationService, deserialized.detailsSerialized); - const masterInput = masterInputFactory.deserialize(instantiationService, deserialized.masterSerialized); + const [secondaryInputFactory, primaryInputFactory] = this.getInputFactories(deserialized.secondaryTypeId, deserialized.primaryTypeId); + if (primaryInputFactory && secondaryInputFactory) { + const primaryInput = primaryInputFactory.deserialize(instantiationService, deserialized.primarySerialized); + const secondaryInput = secondaryInputFactory.deserialize(instantiationService, deserialized.secondarySerialized); - if (detailsInput && masterInput) { - return this.createEditorInput(deserialized.name, deserialized.description, detailsInput, masterInput); + if (primaryInput && secondaryInput) { + return this.createEditorInput(deserialized.name, deserialized.description, secondaryInput, primaryInput); } } return undefined; } - protected abstract createEditorInput(name: string, description: string | undefined, detailsInput: EditorInput, masterInput: EditorInput): EditorInput; + protected abstract createEditorInput(name: string, description: string | undefined, secondaryInput: EditorInput, primaryInput: EditorInput): EditorInput; } class SideBySideEditorInputFactory extends AbstractSideBySideEditorInputFactory { - protected createEditorInput(name: string, description: string | undefined, detailsInput: EditorInput, masterInput: EditorInput): EditorInput { - return new SideBySideEditorInput(name, description, detailsInput, masterInput); + protected createEditorInput(name: string, description: string | undefined, secondaryInput: EditorInput, primaryInput: EditorInput): EditorInput { + return new SideBySideEditorInput(name, description, secondaryInput, primaryInput); } } class DiffEditorInputFactory extends AbstractSideBySideEditorInputFactory { - protected createEditorInput(name: string, description: string | undefined, detailsInput: EditorInput, masterInput: EditorInput): EditorInput { - return new DiffEditorInput(name, description, detailsInput, masterInput); + protected createEditorInput(name: string, description: string | undefined, secondaryInput: EditorInput, primaryInput: EditorInput): EditorInput { + return new DiffEditorInput(name, description, secondaryInput, primaryInput); } } @@ -386,6 +386,8 @@ registry.registerWorkbenchAction(SyncActionDescriptor.from(EditorLayoutThreeRows registry.registerWorkbenchAction(SyncActionDescriptor.from(EditorLayoutTwoByTwoGridAction), 'View: Grid Editor Layout (2x2)', category); registry.registerWorkbenchAction(SyncActionDescriptor.from(EditorLayoutTwoRowsRightAction), 'View: Two Rows Right Editor Layout', category); registry.registerWorkbenchAction(SyncActionDescriptor.from(EditorLayoutTwoColumnsBottomAction), 'View: Two Columns Bottom Editor Layout', category); +registry.registerWorkbenchAction(SyncActionDescriptor.from(ReopenResourcesAction), 'View: Reopen Editor With...', category, ActiveEditorAvailableEditorIdsContext); +registry.registerWorkbenchAction(SyncActionDescriptor.from(ToggleEditorTypeAction), 'View: Toggle Editor Type', category, ActiveEditorAvailableEditorIdsContext); // Register Quick Editor Actions including built in quick navigate support for some @@ -461,6 +463,7 @@ MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands. MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.SHOW_EDITORS_IN_GROUP, title: nls.localize('showOpenedEditors', "Show Opened Editors") }, group: '3_open', order: 10, when: ContextKeyExpr.has('config.workbench.editor.showTabs') }); MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.CLOSE_EDITORS_IN_GROUP_COMMAND_ID, title: nls.localize('closeAll', "Close All") }, group: '5_close', order: 10, when: ContextKeyExpr.has('config.workbench.editor.showTabs') }); MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.CLOSE_SAVED_EDITORS_COMMAND_ID, title: nls.localize('closeAllSaved', "Close Saved") }, group: '5_close', order: 20, when: ContextKeyExpr.has('config.workbench.editor.showTabs') }); +MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: ReopenResourcesAction.ID, title: ReopenResourcesAction.LABEL }, group: '6_reopen', order: 20, when: ActiveEditorAvailableEditorIdsContext }); interface IEditorToolItem { id: string; title: string; icon?: { dark?: URI; light?: URI; } | ThemeIcon; } diff --git a/src/vs/workbench/browser/parts/editor/editorActions.ts b/src/vs/workbench/browser/parts/editor/editorActions.ts index 169f1e7ac74..683f49fc110 100644 --- a/src/vs/workbench/browser/parts/editor/editorActions.ts +++ b/src/vs/workbench/browser/parts/editor/editorActions.ts @@ -11,7 +11,7 @@ import { IHistoryService } from 'vs/workbench/services/history/common/history'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { CLOSE_EDITOR_COMMAND_ID, MOVE_ACTIVE_EDITOR_COMMAND_ID, ActiveEditorMoveArguments, SPLIT_EDITOR_LEFT, SPLIT_EDITOR_RIGHT, SPLIT_EDITOR_UP, SPLIT_EDITOR_DOWN, splitEditor, LAYOUT_EDITOR_GROUPS_COMMAND_ID, mergeAllGroups } from 'vs/workbench/browser/parts/editor/editorCommands'; -import { IEditorGroupsService, IEditorGroup, GroupsArrangement, GroupLocation, GroupDirection, preferredSideBySideGroupDirection, IFindGroupScope, GroupOrientation, EditorGroupLayout, GroupsOrder } from 'vs/workbench/services/editor/common/editorGroupsService'; +import { IEditorGroupsService, IEditorGroup, GroupsArrangement, GroupLocation, GroupDirection, preferredSideBySideGroupDirection, IFindGroupScope, GroupOrientation, EditorGroupLayout, GroupsOrder, OpenEditorContext } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { DisposableStore } from 'vs/base/common/lifecycle'; @@ -22,6 +22,7 @@ import { ItemActivation, IQuickInputService } from 'vs/platform/quickinput/commo import { AllEditorsByMostRecentlyUsedQuickAccess, ActiveGroupEditorsByMostRecentlyUsedQuickAccess, AllEditorsByAppearanceQuickAccess } from 'vs/workbench/browser/parts/editor/editorQuickAccess'; import { Codicon } from 'vs/base/common/codicons'; import { IFilesConfigurationService, AutoSaveMode } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService'; +import { openEditorWith, getAllAvailableEditors } from 'vs/workbench/services/editor/common/editorOpenWith'; export class ExecuteCommandAction extends Action { @@ -580,7 +581,7 @@ abstract class BaseCloseAllAction extends Action { else { let name: string; if (editor instanceof SideBySideEditorInput) { - name = editor.master.getName(); // prefer shorter names by using master's name in this case + name = editor.primary.getName(); // prefer shorter names by using primary's name in this case } else { name = editor.getName(); } @@ -1775,3 +1776,72 @@ export class NewEditorGroupBelowAction extends BaseCreateEditorGroupAction { super(id, label, GroupDirection.DOWN, editorGroupService); } } + +export class ReopenResourcesAction extends Action { + + static readonly ID = 'workbench.action.reopenWithEditor'; + static readonly LABEL = nls.localize('workbench.action.reopenWithEditor', "Reopen Editor With..."); + + constructor( + id: string, + label: string, + @IQuickInputService private readonly quickInputService: IQuickInputService, + @IEditorService private readonly editorService: IEditorService, + @IConfigurationService private readonly configurationService: IConfigurationService + ) { + super(id, label); + } + + async run(): Promise { + const activeInput = this.editorService.activeEditor; + if (!activeInput) { + return; + } + + const activeEditorPane = this.editorService.activeEditorPane; + if (!activeEditorPane) { + return; + } + + const options = activeEditorPane.options; + const group = activeEditorPane.group; + await openEditorWith(activeInput, undefined, options, group, this.editorService, this.configurationService, this.quickInputService); + } +} + +export class ToggleEditorTypeAction extends Action { + + static readonly ID = 'workbench.action.toggleEditorType'; + static readonly LABEL = nls.localize('workbench.action.toggleEditorType', "Toggle Editor Type"); + + constructor( + id: string, + label: string, + @IEditorService private readonly editorService: IEditorService, + ) { + super(id, label); + } + + async run(): Promise { + const activeEditorPane = this.editorService.activeEditorPane; + if (!activeEditorPane) { + return; + } + + const input = activeEditorPane.input; + if (!input.resource) { + return; + } + + const options = activeEditorPane.options; + const group = activeEditorPane.group; + + const overrides = getAllAvailableEditors(input.resource, options, group, this.editorService); + const firstNonActiveOverride = overrides.find(([_, entry]) => !entry.active); + if (!firstNonActiveOverride) { + return; + } + + await firstNonActiveOverride[0].open(input, { ...options, override: firstNonActiveOverride[1].id }, group, OpenEditorContext.NEW_EDITOR)?.override; + } +} diff --git a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts index 1f7016f89ba..bc9f5db8216 100644 --- a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts +++ b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts @@ -530,8 +530,12 @@ class DropOverlay extends Themable { } } -export interface EditorDropTargetDelegate { - groupContainsPredicate?(groupView: IEditorGroupView): boolean; +export interface IEditorDropTargetDelegate { + + /** + * A helper to figure out if the drop target contains the provided group. + */ + containsGroup?(groupView: IEditorGroupView): boolean; } export class EditorDropTarget extends Themable { @@ -546,7 +550,7 @@ export class EditorDropTarget extends Themable { constructor( private accessor: IEditorGroupsAccessor, private container: HTMLElement, - private readonly delegate: EditorDropTargetDelegate, + private readonly delegate: IEditorDropTargetDelegate, @IThemeService themeService: IThemeService, @IInstantiationService private readonly instantiationService: IInstantiationService ) { @@ -620,7 +624,8 @@ export class EditorDropTarget extends Themable { private findTargetGroupView(child: HTMLElement): IEditorGroupView | undefined { const groups = this.accessor.groups; - return groups.find(groupView => isAncestor(child, groupView.element) || this.delegate.groupContainsPredicate?.(groupView)); + + return groups.find(groupView => isAncestor(child, groupView.element) || this.delegate.containsGroup?.(groupView)); } private updateContainer(isDraggedOver: boolean): void { diff --git a/src/vs/workbench/browser/parts/editor/editorGroupView.ts b/src/vs/workbench/browser/parts/editor/editorGroupView.ts index 600a7985ca0..dcf07d6ebaf 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupView.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupView.ts @@ -527,7 +527,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView { // Include both sides of side by side editors when being closed if (editor instanceof SideBySideEditorInput) { - editorsToClose.push(editor.master, editor.details); + editorsToClose.push(editor.primary, editor.secondary); } // For each editor to close, we call dispose() to free up any resources. @@ -537,7 +537,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView { for (const editor of editorsToClose) { if (!this.accessor.groups.some(groupView => groupView.group.contains(editor, { strictEquals: true, // only if this input is not shared across editor groups - supportSideBySide: true // include side by side editor master & details + supportSideBySide: true // include side by side editor primary & secondary }))) { editor.dispose(); } @@ -1359,8 +1359,8 @@ export class EditorGroupView extends Themable implements IEditorGroupView { return false; // editor must be dirty and not saving } - if (editor instanceof SideBySideEditorInput && this._group.contains(editor.master)) { - return false; // master-side of editor is still opened somewhere else + if (editor instanceof SideBySideEditorInput && this._group.contains(editor.primary)) { + return false; // primary-side of editor is still opened somewhere else } // Note: we explicitly decide to ask for confirm if closing a normal editor even @@ -1378,8 +1378,8 @@ export class EditorGroupView extends Themable implements IEditorGroupView { return true; // exact editor still opened } - if (editor instanceof SideBySideEditorInput && otherGroup.contains(editor.master)) { - return true; // master side of side by side editor still opened + if (editor instanceof SideBySideEditorInput && otherGroup.contains(editor.primary)) { + return true; // primary side of side by side editor still opened } return false; @@ -1404,7 +1404,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView { let name: string; if (editor instanceof SideBySideEditorInput) { - name = editor.master.getName(); // prefer shorter names by using master's name in this case + name = editor.primary.getName(); // prefer shorter names by using primary's name in this case } else { name = editor.getName(); } diff --git a/src/vs/workbench/browser/parts/editor/editorPart.ts b/src/vs/workbench/browser/parts/editor/editorPart.ts index 9a7ee1366a8..c431dca49a1 100644 --- a/src/vs/workbench/browser/parts/editor/editorPart.ts +++ b/src/vs/workbench/browser/parts/editor/editorPart.ts @@ -21,7 +21,8 @@ import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/co import { IDisposable, dispose, toDisposable, DisposableStore } from 'vs/base/common/lifecycle'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { ISerializedEditorGroup, isSerializedEditorGroup } from 'vs/workbench/common/editor/editorGroup'; -import { EditorDropTarget, EditorDropTargetDelegate } from 'vs/workbench/browser/parts/editor/editorDropTarget'; +import { EditorDropTarget, IEditorDropTargetDelegate } from 'vs/workbench/browser/parts/editor/editorDropTarget'; +import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorDropService'; import { Color } from 'vs/base/common/color'; import { CenteredViewLayout } from 'vs/base/browser/ui/centered/centeredViewLayout'; import { onUnexpectedError } from 'vs/base/common/errors'; @@ -780,6 +781,14 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro //#endregion + //#region IEditorDropService + + createEditorDropTarget(container: HTMLElement, delegate: IEditorDropTargetDelegate): IDisposable { + return this.instantiationService.createInstance(EditorDropTarget, this, container, delegate); + } + + //#endregion + //#region Part // TODO @sbatten @joao find something better to prevent editor taking over #79897 @@ -820,7 +829,7 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro this.centeredLayoutWidget = this._register(new CenteredViewLayout(this.container, this.gridWidgetView, this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY])); // Drop support - this._register(this.createEditorDropTarget(this.container, {})); + this._register(this.createEditorDropTarget(this.container, Object.create(null))); // No drop in the editor const overlay = document.createElement('div'); @@ -1097,16 +1106,24 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro } // Persist centered view state - const centeredLayoutState = this.centeredLayoutWidget.state; - if (this.centeredLayoutWidget.isDefault(centeredLayoutState)) { - delete this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY]; - } else { - this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY] = centeredLayoutState; + if (this.centeredLayoutWidget) { + const centeredLayoutState = this.centeredLayoutWidget.state; + if (this.centeredLayoutWidget.isDefault(centeredLayoutState)) { + delete this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY]; + } else { + this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY] = centeredLayoutState; + } } super.saveState(); } + toJSON(): object { + return { + type: Parts.EDITOR_PART + }; + } + dispose(): void { // Forward to all groups @@ -1122,20 +1139,7 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro } //#endregion - - toJSON(): object { - return { - type: Parts.EDITOR_PART - }; - } - - //#region TODO@matt this should move into some kind of service - - createEditorDropTarget(container: HTMLElement, delegate: EditorDropTargetDelegate): IDisposable { - return this.instantiationService.createInstance(EditorDropTarget, this, container, delegate); - } - - //#endregion } registerSingleton(IEditorGroupsService, EditorPart); +registerSingleton(IEditorDropService, EditorPart); diff --git a/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts b/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts index 60e46cc5c02..231efdd147a 100644 --- a/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts +++ b/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts @@ -137,7 +137,7 @@ export abstract class BaseEditorQuickAccessProvider extends PickerQuickAccessPro } return this.doGetEditors().map(({ editor, groupId }): IEditorQuickPickItem => { - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); const isDirty = editor.isDirty() && !editor.isSaving(); const description = editor.getDescription(); const nameAndDescription = description ? `${editor.getName()} ${description}` : editor.getName(); diff --git a/src/vs/workbench/browser/parts/editor/editorStatus.ts b/src/vs/workbench/browser/parts/editor/editorStatus.ts index d6f0950099d..b3d0cab0c11 100644 --- a/src/vs/workbench/browser/parts/editor/editorStatus.ts +++ b/src/vs/workbench/browser/parts/editor/editorStatus.ts @@ -54,22 +54,22 @@ import { STATUS_BAR_PROMINENT_ITEM_BACKGROUND, STATUS_BAR_PROMINENT_ITEM_FOREGRO import { themeColorFromId } from 'vs/platform/theme/common/themeService'; class SideBySideEditorEncodingSupport implements IEncodingSupport { - constructor(private master: IEncodingSupport, private details: IEncodingSupport) { } + constructor(private primary: IEncodingSupport, private secondary: IEncodingSupport) { } getEncoding(): string | undefined { - return this.master.getEncoding(); // always report from modified (right hand) side + return this.primary.getEncoding(); // always report from modified (right hand) side } setEncoding(encoding: string, mode: EncodingMode): void { - [this.master, this.details].forEach(editor => editor.setEncoding(encoding, mode)); + [this.primary, this.secondary].forEach(editor => editor.setEncoding(encoding, mode)); } } class SideBySideEditorModeSupport implements IModeSupport { - constructor(private master: IModeSupport, private details: IModeSupport) { } + constructor(private primary: IModeSupport, private secondary: IModeSupport) { } setMode(mode: string): void { - [this.master, this.details].forEach(editor => editor.setMode(mode)); + [this.primary, this.secondary].forEach(editor => editor.setMode(mode)); } } @@ -82,14 +82,14 @@ function toEditorWithEncodingSupport(input: IEditorInput): IEncodingSupport | nu // Side by Side (diff) Editor if (input instanceof SideBySideEditorInput) { - const masterEncodingSupport = toEditorWithEncodingSupport(input.master); - const detailsEncodingSupport = toEditorWithEncodingSupport(input.details); + const primaryEncodingSupport = toEditorWithEncodingSupport(input.primary); + const secondaryEncodingSupport = toEditorWithEncodingSupport(input.secondary); - if (masterEncodingSupport && detailsEncodingSupport) { - return new SideBySideEditorEncodingSupport(masterEncodingSupport, detailsEncodingSupport); + if (primaryEncodingSupport && secondaryEncodingSupport) { + return new SideBySideEditorEncodingSupport(primaryEncodingSupport, secondaryEncodingSupport); } - return masterEncodingSupport; + return primaryEncodingSupport; } // File or Resource Editor @@ -111,14 +111,14 @@ function toEditorWithModeSupport(input: IEditorInput): IModeSupport | null { // Side by Side (diff) Editor if (input instanceof SideBySideEditorInput) { - const masterModeSupport = toEditorWithModeSupport(input.master); - const detailsModeSupport = toEditorWithModeSupport(input.details); + const primaryModeSupport = toEditorWithModeSupport(input.primary); + const secondaryModeSupport = toEditorWithModeSupport(input.secondary); - if (masterModeSupport && detailsModeSupport) { - return new SideBySideEditorModeSupport(masterModeSupport, detailsModeSupport); + if (primaryModeSupport && secondaryModeSupport) { + return new SideBySideEditorModeSupport(primaryModeSupport, secondaryModeSupport); } - return masterModeSupport; + return primaryModeSupport; } // File or Resource Editor @@ -685,14 +685,14 @@ export class EditorStatus extends Disposable implements IWorkbenchContribution { else if (activeEditorPane instanceof BaseBinaryResourceEditor || activeEditorPane instanceof BinaryResourceDiffEditor) { const binaryEditors: BaseBinaryResourceEditor[] = []; if (activeEditorPane instanceof BinaryResourceDiffEditor) { - const details = activeEditorPane.getDetailsEditorPane(); - if (details instanceof BaseBinaryResourceEditor) { - binaryEditors.push(details); + const primary = activeEditorPane.getPrimaryEditorPane(); + if (primary instanceof BaseBinaryResourceEditor) { + binaryEditors.push(primary); } - const master = activeEditorPane.getMasterEditorPane(); - if (master instanceof BaseBinaryResourceEditor) { - binaryEditors.push(master); + const secondary = activeEditorPane.getSecondaryEditorPane(); + if (secondary instanceof BaseBinaryResourceEditor) { + binaryEditors.push(secondary); } } else { binaryEditors.push(activeEditorPane); @@ -871,7 +871,7 @@ export class EditorStatus extends Disposable implements IWorkbenchContribution { private onResourceEncodingChange(resource: URI): void { const activeEditorPane = this.editorService.activeEditorPane; if (activeEditorPane) { - const activeResource = toResource(activeEditorPane.input, { supportSideBySide: SideBySideEditor.MASTER }); + const activeResource = toResource(activeEditorPane.input, { supportSideBySide: SideBySideEditor.PRIMARY }); if (activeResource && isEqual(activeResource, resource)) { const activeCodeEditor = withNullAsUndefined(getCodeEditor(activeEditorPane.getControl())); @@ -1064,7 +1064,7 @@ export class ChangeModeAction extends Action { } const textModel = activeTextEditorControl.getModel(); - const resource = this.editorService.activeEditor ? toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }) : null; + const resource = this.editorService.activeEditor ? toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }) : null; let hasLanguageSupport = !!resource; if (resource?.scheme === Schemas.untitled && !this.textFileService.untitled.get(resource)?.hasAssociatedFilePath) { @@ -1161,7 +1161,7 @@ export class ChangeModeAction extends Action { let languageSelection: ILanguageSelection | undefined; if (pick === autoDetectMode) { if (textModel) { - const resource = toResource(activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { languageSelection = this.modeService.createByFilepathOrFirstLine(resource, textModel.getLineContent(1)); } @@ -1356,7 +1356,7 @@ export class ChangeEncodingAction extends Action { await timeout(50); // quick input is sensitive to being opened so soon after another - const resource = toResource(activeEditorPane.input, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(activeEditorPane.input, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!resource || (!this.fileService.canHandleResource(resource) && resource.scheme !== Schemas.untitled)) { return; // encoding detection only possible for resources the file service can handle or that are untitled } diff --git a/src/vs/workbench/browser/parts/editor/editorsObserver.ts b/src/vs/workbench/browser/parts/editor/editorsObserver.ts index 4573dbdeb1a..a14a7fdc9c0 100644 --- a/src/vs/workbench/browser/parts/editor/editorsObserver.ts +++ b/src/vs/workbench/browser/parts/editor/editorsObserver.ts @@ -185,7 +185,7 @@ export class EditorsObserver extends Disposable { } private updateEditorResourcesMap(editor: IEditorInput, add: boolean): void { - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!resource) { return; // require a resource } diff --git a/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts b/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts index fd57b26ca33..aff171a997f 100644 --- a/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts +++ b/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts @@ -22,17 +22,16 @@ import { assertIsDefined } from 'vs/base/common/types'; export class SideBySideEditor extends BaseEditor { static readonly ID: string = 'workbench.editor.sidebysideEditor'; - static MASTER: SideBySideEditor | undefined; - get minimumMasterWidth() { return this.masterEditorPane ? this.masterEditorPane.minimumWidth : 0; } - get maximumMasterWidth() { return this.masterEditorPane ? this.masterEditorPane.maximumWidth : Number.POSITIVE_INFINITY; } - get minimumMasterHeight() { return this.masterEditorPane ? this.masterEditorPane.minimumHeight : 0; } - get maximumMasterHeight() { return this.masterEditorPane ? this.masterEditorPane.maximumHeight : Number.POSITIVE_INFINITY; } + private get minimumPrimaryWidth() { return this.primaryEditorPane ? this.primaryEditorPane.minimumWidth : 0; } + private get maximumPrimaryWidth() { return this.primaryEditorPane ? this.primaryEditorPane.maximumWidth : Number.POSITIVE_INFINITY; } + private get minimumPrimaryHeight() { return this.primaryEditorPane ? this.primaryEditorPane.minimumHeight : 0; } + private get maximumPrimaryHeight() { return this.primaryEditorPane ? this.primaryEditorPane.maximumHeight : Number.POSITIVE_INFINITY; } - get minimumDetailsWidth() { return this.detailsEditorPane ? this.detailsEditorPane.minimumWidth : 0; } - get maximumDetailsWidth() { return this.detailsEditorPane ? this.detailsEditorPane.maximumWidth : Number.POSITIVE_INFINITY; } - get minimumDetailsHeight() { return this.detailsEditorPane ? this.detailsEditorPane.minimumHeight : 0; } - get maximumDetailsHeight() { return this.detailsEditorPane ? this.detailsEditorPane.maximumHeight : Number.POSITIVE_INFINITY; } + private get minimumSecondaryWidth() { return this.secondaryEditorPane ? this.secondaryEditorPane.minimumWidth : 0; } + private get maximumSecondaryWidth() { return this.secondaryEditorPane ? this.secondaryEditorPane.maximumWidth : Number.POSITIVE_INFINITY; } + private get minimumSecondaryHeight() { return this.secondaryEditorPane ? this.secondaryEditorPane.minimumHeight : 0; } + private get maximumSecondaryHeight() { return this.secondaryEditorPane ? this.secondaryEditorPane.maximumHeight : Number.POSITIVE_INFINITY; } // these setters need to exist because this extends from BaseEditor set minimumWidth(value: number) { /* noop */ } @@ -40,16 +39,16 @@ export class SideBySideEditor extends BaseEditor { set minimumHeight(value: number) { /* noop */ } set maximumHeight(value: number) { /* noop */ } - get minimumWidth() { return this.minimumMasterWidth + this.minimumDetailsWidth; } - get maximumWidth() { return this.maximumMasterWidth + this.maximumDetailsWidth; } - get minimumHeight() { return this.minimumMasterHeight + this.minimumDetailsHeight; } - get maximumHeight() { return this.maximumMasterHeight + this.maximumDetailsHeight; } + get minimumWidth() { return this.minimumPrimaryWidth + this.minimumSecondaryWidth; } + get maximumWidth() { return this.maximumPrimaryWidth + this.maximumSecondaryWidth; } + get minimumHeight() { return this.minimumPrimaryHeight + this.minimumSecondaryHeight; } + get maximumHeight() { return this.maximumPrimaryHeight + this.maximumSecondaryHeight; } - protected masterEditorPane?: BaseEditor; - protected detailsEditorPane?: BaseEditor; + protected primaryEditorPane?: BaseEditor; + protected secondaryEditorPane?: BaseEditor; - private masterEditorContainer: HTMLElement | undefined; - private detailsEditorContainer: HTMLElement | undefined; + private primaryEditorContainer: HTMLElement | undefined; + private secondaryEditorContainer: HTMLElement | undefined; private splitview: SplitView | undefined; private dimension: DOM.Dimension = new DOM.Dimension(0, 0); @@ -74,19 +73,19 @@ export class SideBySideEditor extends BaseEditor { const splitview = this.splitview = this._register(new SplitView(parent, { orientation: Orientation.HORIZONTAL })); this._register(this.splitview.onDidSashReset(() => splitview.distributeViewSizes())); - this.detailsEditorContainer = DOM.$('.details-editor-container'); + this.secondaryEditorContainer = DOM.$('.secondary-editor-container'); this.splitview.addView({ - element: this.detailsEditorContainer, - layout: size => this.detailsEditorPane && this.detailsEditorPane.layout(new DOM.Dimension(size, this.dimension.height)), + element: this.secondaryEditorContainer, + layout: size => this.secondaryEditorPane && this.secondaryEditorPane.layout(new DOM.Dimension(size, this.dimension.height)), minimumSize: 220, maximumSize: Number.POSITIVE_INFINITY, onDidChange: Event.None }, Sizing.Distribute); - this.masterEditorContainer = DOM.$('.master-editor-container'); + this.primaryEditorContainer = DOM.$('.primary-editor-container'); this.splitview.addView({ - element: this.masterEditorContainer, - layout: size => this.masterEditorPane && this.masterEditorPane.layout(new DOM.Dimension(size, this.dimension.height)), + element: this.primaryEditorContainer, + layout: size => this.primaryEditorPane && this.primaryEditorPane.layout(new DOM.Dimension(size, this.dimension.height)), minimumSize: 220, maximumSize: Number.POSITIVE_INFINITY, onDidChange: Event.None @@ -103,30 +102,30 @@ export class SideBySideEditor extends BaseEditor { } setOptions(options: EditorOptions | undefined): void { - if (this.masterEditorPane) { - this.masterEditorPane.setOptions(options); + if (this.primaryEditorPane) { + this.primaryEditorPane.setOptions(options); } } protected setEditorVisible(visible: boolean, group: IEditorGroup | undefined): void { - if (this.masterEditorPane) { - this.masterEditorPane.setVisible(visible, group); + if (this.primaryEditorPane) { + this.primaryEditorPane.setVisible(visible, group); } - if (this.detailsEditorPane) { - this.detailsEditorPane.setVisible(visible, group); + if (this.secondaryEditorPane) { + this.secondaryEditorPane.setVisible(visible, group); } super.setEditorVisible(visible, group); } clearInput(): void { - if (this.masterEditorPane) { - this.masterEditorPane.clearInput(); + if (this.primaryEditorPane) { + this.primaryEditorPane.clearInput(); } - if (this.detailsEditorPane) { - this.detailsEditorPane.clearInput(); + if (this.secondaryEditorPane) { + this.secondaryEditorPane.clearInput(); } this.disposeEditors(); @@ -135,8 +134,8 @@ export class SideBySideEditor extends BaseEditor { } focus(): void { - if (this.masterEditorPane) { - this.masterEditorPane.focus(); + if (this.primaryEditorPane) { + this.primaryEditorPane.focus(); } } @@ -148,19 +147,19 @@ export class SideBySideEditor extends BaseEditor { } getControl(): IEditorControl | undefined { - if (this.masterEditorPane) { - return this.masterEditorPane.getControl(); + if (this.primaryEditorPane) { + return this.primaryEditorPane.getControl(); } return undefined; } - getMasterEditorPane(): IEditorPane | undefined { - return this.masterEditorPane; + getPrimaryEditorPane(): IEditorPane | undefined { + return this.primaryEditorPane; } - getDetailsEditorPane(): IEditorPane | undefined { - return this.detailsEditorPane; + getSecondaryEditorPane(): IEditorPane | undefined { + return this.secondaryEditorPane; } private async updateInput(oldInput: SideBySideEditorInput, newInput: SideBySideEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { @@ -172,21 +171,21 @@ export class SideBySideEditor extends BaseEditor { return this.setNewInput(newInput, options, token); } - if (!this.detailsEditorPane || !this.masterEditorPane) { + if (!this.secondaryEditorPane || !this.primaryEditorPane) { return; } await Promise.all([ - this.detailsEditorPane.setInput(newInput.details, undefined, token), - this.masterEditorPane.setInput(newInput.master, options, token) + this.secondaryEditorPane.setInput(newInput.secondary, undefined, token), + this.primaryEditorPane.setInput(newInput.primary, options, token) ]); } private setNewInput(newInput: SideBySideEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { - const detailsEditor = this.doCreateEditor(newInput.details, assertIsDefined(this.detailsEditorContainer)); - const masterEditor = this.doCreateEditor(newInput.master, assertIsDefined(this.masterEditorContainer)); + const secondaryEditor = this.doCreateEditor(newInput.secondary, assertIsDefined(this.secondaryEditorContainer)); + const primaryEditor = this.doCreateEditor(newInput.primary, assertIsDefined(this.primaryEditorContainer)); - return this.onEditorsCreated(detailsEditor, masterEditor, newInput.details, newInput.master, options, token); + return this.onEditorsCreated(secondaryEditor, primaryEditor, newInput.secondary, newInput.primary, options, token); } private doCreateEditor(editorInput: EditorInput, container: HTMLElement): BaseEditor { @@ -202,48 +201,48 @@ export class SideBySideEditor extends BaseEditor { return editor; } - private async onEditorsCreated(details: BaseEditor, master: BaseEditor, detailsInput: EditorInput, masterInput: EditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { - this.detailsEditorPane = details; - this.masterEditorPane = master; + private async onEditorsCreated(secondary: BaseEditor, primary: BaseEditor, secondaryInput: EditorInput, primaryInput: EditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { + this.secondaryEditorPane = secondary; + this.primaryEditorPane = primary; this._onDidSizeConstraintsChange.input = Event.any( - Event.map(details.onDidSizeConstraintsChange, () => undefined), - Event.map(master.onDidSizeConstraintsChange, () => undefined) + Event.map(secondary.onDidSizeConstraintsChange, () => undefined), + Event.map(primary.onDidSizeConstraintsChange, () => undefined) ); this.onDidCreateEditors.fire(undefined); await Promise.all([ - this.detailsEditorPane.setInput(detailsInput, undefined, token), - this.masterEditorPane.setInput(masterInput, options, token)] + this.secondaryEditorPane.setInput(secondaryInput, undefined, token), + this.primaryEditorPane.setInput(primaryInput, options, token)] ); } updateStyles(): void { super.updateStyles(); - if (this.masterEditorContainer) { - this.masterEditorContainer.style.boxShadow = `-6px 0 5px -5px ${this.getColor(scrollbarShadow)}`; + if (this.primaryEditorContainer) { + this.primaryEditorContainer.style.boxShadow = `-6px 0 5px -5px ${this.getColor(scrollbarShadow)}`; } } private disposeEditors(): void { - if (this.detailsEditorPane) { - this.detailsEditorPane.dispose(); - this.detailsEditorPane = undefined; + if (this.secondaryEditorPane) { + this.secondaryEditorPane.dispose(); + this.secondaryEditorPane = undefined; } - if (this.masterEditorPane) { - this.masterEditorPane.dispose(); - this.masterEditorPane = undefined; + if (this.primaryEditorPane) { + this.primaryEditorPane.dispose(); + this.primaryEditorPane = undefined; } - if (this.detailsEditorContainer) { - DOM.clearNode(this.detailsEditorContainer); + if (this.secondaryEditorContainer) { + DOM.clearNode(this.secondaryEditorContainer); } - if (this.masterEditorContainer) { - DOM.clearNode(this.masterEditorContainer); + if (this.primaryEditorContainer) { + DOM.clearNode(this.primaryEditorContainer); } } diff --git a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts index fa8861a64fc..203f334180d 100644 --- a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts +++ b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts @@ -1087,7 +1087,7 @@ export class TabsTitleControl extends TitleControl { ); // Tests helper - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { tabContainer.setAttribute('data-resource-name', basenameOrAuthority(resource)); } else { diff --git a/src/vs/workbench/browser/parts/editor/titleControl.ts b/src/vs/workbench/browser/parts/editor/titleControl.ts index 7a6e4137db8..b778ec9d3f2 100644 --- a/src/vs/workbench/browser/parts/editor/titleControl.ts +++ b/src/vs/workbench/browser/parts/editor/titleControl.ts @@ -223,7 +223,7 @@ export abstract class TitleControl extends Themable { this.editorToolBarMenuDisposables.clear(); // Update contexts - this.resourceContext.set(this.group.activeEditor ? withUndefinedAsNull(toResource(this.group.activeEditor, { supportSideBySide: SideBySideEditor.MASTER })) : null); + this.resourceContext.set(this.group.activeEditor ? withUndefinedAsNull(toResource(this.group.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY })) : null); this.editorPinnedContext.set(this.group.activeEditor ? this.group.isPinned(this.group.activeEditor) : false); this.editorStickyContext.set(this.group.activeEditor ? this.group.isSticky(this.group.activeEditor) : false); @@ -298,7 +298,7 @@ export abstract class TitleControl extends Themable { } protected doFillResourceDataTransfers(editor: IEditorInput, e: DragEvent): boolean { - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!resource) { return false; } @@ -326,7 +326,7 @@ export abstract class TitleControl extends Themable { // Update contexts based on editor picked and remember previous to restore const currentResourceContext = this.resourceContext.get(); - this.resourceContext.set(withUndefinedAsNull(toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }))); + this.resourceContext.set(withUndefinedAsNull(toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }))); const currentPinnedContext = !!this.editorPinnedContext.get(); this.editorPinnedContext.set(this.group.isPinned(editor)); const currentStickyContext = !!this.editorStickyContext.get(); diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts index 22eb36afbc7..9c02c267018 100644 --- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts @@ -271,7 +271,7 @@ export class TitlebarPart extends Part implements ITitleService { if (this.contextService.getWorkbenchState() === WorkbenchState.FOLDER) { folder = workspace.folders[0]; } else { - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { folder = this.contextService.getWorkspaceFolder(resource); } diff --git a/src/vs/workbench/common/editor.ts b/src/vs/workbench/common/editor.ts index 90ef4e06337..16d38a9a18f 100644 --- a/src/vs/workbench/common/editor.ts +++ b/src/vs/workbench/common/editor.ts @@ -649,10 +649,16 @@ export interface IModeSupport { export interface IFileEditorInput extends IEditorInput, IEncodingSupport, IModeSupport { /** - * Gets the resource this editor is about. + * Gets the resource this file input is about. */ readonly resource: URI; + /** + * Gets the label of the editor. In most cases this will + * be identical to the resource. + */ + readonly label: URI; + /** * Sets the preferred label to use for this file input. */ @@ -680,7 +686,7 @@ export interface IFileEditorInput extends IEditorInput, IEncodingSupport, IModeS } /** - * Side by side editor inputs that have a master and details side. + * Side by side editor inputs that have a primary and secondary side. */ export class SideBySideEditorInput extends EditorInput { @@ -689,8 +695,8 @@ export class SideBySideEditorInput extends EditorInput { constructor( protected readonly name: string | undefined, private readonly description: string | undefined, - private readonly _details: EditorInput, - private readonly _master: EditorInput + private readonly _secondary: EditorInput, + private readonly _primary: EditorInput ) { super(); @@ -699,36 +705,36 @@ export class SideBySideEditorInput extends EditorInput { private registerListeners(): void { - // When the details or master input gets disposed, dispose this diff editor input - const onceDetailsDisposed = Event.once(this.details.onDispose); - this._register(onceDetailsDisposed(() => { + // When the primary or secondary input gets disposed, dispose this diff editor input + const onceSecondaryDisposed = Event.once(this.secondary.onDispose); + this._register(onceSecondaryDisposed(() => { if (!this.isDisposed()) { this.dispose(); } })); - const onceMasterDisposed = Event.once(this.master.onDispose); - this._register(onceMasterDisposed(() => { + const oncePrimaryDisposed = Event.once(this.primary.onDispose); + this._register(oncePrimaryDisposed(() => { if (!this.isDisposed()) { this.dispose(); } })); - // Reemit some events from the master side to the outside - this._register(this.master.onDidChangeDirty(() => this._onDidChangeDirty.fire())); - this._register(this.master.onDidChangeLabel(() => this._onDidChangeLabel.fire())); + // Reemit some events from the primary side to the outside + this._register(this.primary.onDidChangeDirty(() => this._onDidChangeDirty.fire())); + this._register(this.primary.onDidChangeLabel(() => this._onDidChangeLabel.fire())); } get resource(): URI | undefined { return undefined; } - get master(): EditorInput { - return this._master; + get primary(): EditorInput { + return this._primary; } - get details(): EditorInput { - return this._details; + get secondary(): EditorInput { + return this._secondary; } getTypeId(): string { @@ -737,7 +743,7 @@ export class SideBySideEditorInput extends EditorInput { getName(): string { if (!this.name) { - return localize('sideBySideLabels', "{0} - {1}", this._details.getName(), this._master.getName()); + return localize('sideBySideLabels', "{0} - {1}", this._secondary.getName(), this._primary.getName()); } return this.name; @@ -748,50 +754,46 @@ export class SideBySideEditorInput extends EditorInput { } isReadonly(): boolean { - return this.master.isReadonly(); + return this.primary.isReadonly(); } isUntitled(): boolean { - return this.master.isUntitled(); + return this.primary.isUntitled(); } isDirty(): boolean { - return this.master.isDirty(); + return this.primary.isDirty(); } isSaving(): boolean { - return this.master.isSaving(); + return this.primary.isSaving(); } save(group: GroupIdentifier, options?: ISaveOptions): Promise { - return this.master.save(group, options); + return this.primary.save(group, options); } saveAs(group: GroupIdentifier, options?: ISaveOptions): Promise { - return this.master.saveAs(group, options); + return this.primary.saveAs(group, options); } revert(group: GroupIdentifier, options?: IRevertOptions): Promise { - return this.master.revert(group, options); + return this.primary.revert(group, options); } getTelemetryDescriptor(): { [key: string]: unknown } { - const descriptor = this.master.getTelemetryDescriptor(); + const descriptor = this.primary.getTelemetryDescriptor(); return Object.assign(descriptor, super.getTelemetryDescriptor()); } matches(otherInput: unknown): boolean { - if (super.matches(otherInput) === true) { + if (otherInput === this) { return true; } - if (otherInput) { - if (!(otherInput instanceof SideBySideEditorInput)) { - return false; - } - - return this.details.matches(otherInput.details) && this.master.matches(otherInput.master); + if (otherInput instanceof SideBySideEditorInput) { + return this.primary.matches(otherInput.primary) && this.secondary.matches(otherInput.secondary); } return false; @@ -1210,8 +1212,8 @@ export interface IEditorPartOptionsChangeEvent { } export enum SideBySideEditor { - MASTER = 1, - DETAILS = 2, + PRIMARY = 1, + SECONDARY = 2, BOTH = 3 } @@ -1221,9 +1223,9 @@ export interface IResourceOptions { } export function toResource(editor: IEditorInput | undefined | null): URI | undefined; -export function toResource(editor: IEditorInput | undefined | null, options: IResourceOptions & { supportSideBySide?: SideBySideEditor.MASTER | SideBySideEditor.DETAILS }): URI | undefined; -export function toResource(editor: IEditorInput | undefined | null, options: IResourceOptions & { supportSideBySide: SideBySideEditor.BOTH }): URI | { master?: URI, detail?: URI } | undefined; -export function toResource(editor: IEditorInput | undefined | null, options?: IResourceOptions): URI | { master?: URI, detail?: URI } | undefined { +export function toResource(editor: IEditorInput | undefined | null, options: IResourceOptions & { supportSideBySide?: SideBySideEditor.PRIMARY | SideBySideEditor.SECONDARY }): URI | undefined; +export function toResource(editor: IEditorInput | undefined | null, options: IResourceOptions & { supportSideBySide: SideBySideEditor.BOTH }): URI | { primary?: URI, secondary?: URI } | undefined; +export function toResource(editor: IEditorInput | undefined | null, options?: IResourceOptions): URI | { primary?: URI, secondary?: URI } | undefined { if (!editor) { return undefined; } @@ -1231,12 +1233,12 @@ export function toResource(editor: IEditorInput | undefined | null, options?: IR if (options?.supportSideBySide && editor instanceof SideBySideEditorInput) { if (options?.supportSideBySide === SideBySideEditor.BOTH) { return { - master: toResource(editor.master, { filterByScheme: options.filterByScheme }), - detail: toResource(editor.details, { filterByScheme: options.filterByScheme }) + primary: toResource(editor.primary, { filterByScheme: options.filterByScheme }), + secondary: toResource(editor.secondary, { filterByScheme: options.filterByScheme }) }; } - editor = options.supportSideBySide === SideBySideEditor.MASTER ? editor.master : editor.details; + editor = options.supportSideBySide === SideBySideEditor.PRIMARY ? editor.primary : editor.secondary; } const resource = editor.resource; diff --git a/src/vs/workbench/common/editor/editorGroup.ts b/src/vs/workbench/common/editor/editorGroup.ts index fba31f878ee..99d46391837 100644 --- a/src/vs/workbench/common/editor/editorGroup.ts +++ b/src/vs/workbench/common/editor/editorGroup.ts @@ -696,7 +696,7 @@ export class EditorGroup extends Disposable { } if (options?.supportSideBySide && editor instanceof SideBySideEditorInput) { - if (this.matches(editor.master, candidate, options?.strictEquals) || this.matches(editor.details, candidate, options?.strictEquals)) { + if (this.matches(editor.primary, candidate, options?.strictEquals) || this.matches(editor.secondary, candidate, options?.strictEquals)) { return true; } } diff --git a/src/vs/workbench/common/editor/resourceEditorInput.ts b/src/vs/workbench/common/editor/resourceEditorInput.ts index 5d0cf51c87b..d9006712fcf 100644 --- a/src/vs/workbench/common/editor/resourceEditorInput.ts +++ b/src/vs/workbench/common/editor/resourceEditorInput.ts @@ -15,6 +15,7 @@ import { IFileService } from 'vs/platform/files/common/files'; import { ILabelService } from 'vs/platform/label/common/label'; import { IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService'; import { AbstractTextResourceEditorInput } from 'vs/workbench/common/editor/textResourceEditorInput'; +import { extUri } from 'vs/base/common/resources'; /** * A read-only text editor input whos contents are made of the provided resource that points to an existing @@ -109,13 +110,12 @@ export class ResourceEditorInput extends AbstractTextResourceEditorInput impleme } matches(otherInput: unknown): boolean { - if (super.matches(otherInput) === true) { + if (otherInput === this) { return true; } - // Compare by properties if (otherInput instanceof ResourceEditorInput) { - return otherInput.resource.toString() === this.resource.toString(); + return extUri.isEqual(otherInput.resource, this.resource); } return false; diff --git a/src/vs/workbench/common/editor/textResourceEditorInput.ts b/src/vs/workbench/common/editor/textResourceEditorInput.ts index 82f04d7aebc..ad427fbf461 100644 --- a/src/vs/workbench/common/editor/textResourceEditorInput.ts +++ b/src/vs/workbench/common/editor/textResourceEditorInput.ts @@ -22,7 +22,8 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { private static readonly MEMOIZER = createMemoizer(); - private label: URI; + private _label: URI; + get label(): URI { return this._label; } constructor( public readonly resource: URI, @@ -36,7 +37,7 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { ) { super(); - this.label = preferredLabel || resource; + this._label = preferredLabel || resource; this.registerListeners(); } @@ -50,7 +51,7 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { } private onLabelEvent(scheme: string): void { - if (scheme === this.label.scheme) { + if (scheme === this._label.scheme) { this.updateLabel(); } } @@ -65,15 +66,15 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { } setLabel(label: URI): void { - if (!extUri.isEqual(label, this.label)) { - this.label = label; + if (!extUri.isEqual(label, this._label)) { + this._label = label; this.updateLabel(); } } getLabel(): URI { - return this.label; + return this._label; } getName(): string { @@ -82,7 +83,7 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { @AbstractTextResourceEditorInput.MEMOIZER private get basename(): string { - return this.labelService.getUriBasenameLabel(this.label); + return this.labelService.getUriBasenameLabel(this._label); } getDescription(verbosity: Verbosity = Verbosity.MEDIUM): string | undefined { @@ -99,17 +100,17 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { @AbstractTextResourceEditorInput.MEMOIZER private get shortDescription(): string { - return this.labelService.getUriBasenameLabel(dirname(this.label)); + return this.labelService.getUriBasenameLabel(dirname(this._label)); } @AbstractTextResourceEditorInput.MEMOIZER private get mediumDescription(): string { - return this.labelService.getUriLabel(dirname(this.label), { relative: true }); + return this.labelService.getUriLabel(dirname(this._label), { relative: true }); } @AbstractTextResourceEditorInput.MEMOIZER private get longDescription(): string { - return this.labelService.getUriLabel(dirname(this.label)); + return this.labelService.getUriLabel(dirname(this._label)); } @AbstractTextResourceEditorInput.MEMOIZER @@ -119,12 +120,12 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { @AbstractTextResourceEditorInput.MEMOIZER private get mediumTitle(): string { - return this.labelService.getUriLabel(this.label, { relative: true }); + return this.labelService.getUriLabel(this._label, { relative: true }); } @AbstractTextResourceEditorInput.MEMOIZER private get longTitle(): string { - return this.labelService.getUriLabel(this.label); + return this.labelService.getUriLabel(this._label); } getTitle(verbosity: Verbosity): string { @@ -163,7 +164,7 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { return false; } - async save(group: GroupIdentifier, options?: ITextFileSaveOptions): Promise { + save(group: GroupIdentifier, options?: ITextFileSaveOptions): Promise { return this.doSave(group, options, false); } @@ -185,7 +186,12 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { return undefined; // save cancelled } - return this.editorService.createEditorInput({ resource: target }); + // If the target is a different resource, return with a new editor input + if (!extUri.isEqual(target, this.resource)) { + return this.editorService.createEditorInput({ resource: target }); + } + + return this; } async revert(group: GroupIdentifier, options?: IRevertOptions): Promise { diff --git a/src/vs/workbench/contrib/customEditor/browser/commands.ts b/src/vs/workbench/contrib/customEditor/browser/commands.ts deleted file mode 100644 index d96619b257a..00000000000 --- a/src/vs/workbench/contrib/customEditor/browser/commands.ts +++ /dev/null @@ -1,68 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; -import { Command } from 'vs/editor/browser/editorExtensions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkeys'; -import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { CustomEditorInput } from 'vs/workbench/contrib/customEditor/browser/customEditorInput'; -import { CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE } from 'vs/workbench/contrib/customEditor/common/customEditor'; -import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; - - -(new class UndoCustomEditorCommand extends Command { - public static readonly ID = 'editor.action.customEditor.undo'; - - constructor() { - super({ - id: UndoCustomEditorCommand.ID, - precondition: ContextKeyExpr.and( - CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, - ContextKeyExpr.not(InputFocusedContextKey)), - kbOpts: { - primary: KeyMod.CtrlCmd | KeyCode.KEY_Z, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public runCommand(accessor: ServicesAccessor): void { - const editorService = accessor.get(IEditorService); - const activeInput = editorService.activeEditorPane?.input; - if (activeInput instanceof CustomEditorInput) { - activeInput.undo(); - } - } -}).register(); - -(new class RedoWebviewEditorCommand extends Command { - public static readonly ID = 'editor.action.customEditor.redo'; - - constructor() { - super({ - id: RedoWebviewEditorCommand.ID, - precondition: ContextKeyExpr.and( - CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, - ContextKeyExpr.not(InputFocusedContextKey)), - kbOpts: { - primary: KeyMod.CtrlCmd | KeyCode.KEY_Y, - secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z], - mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z }, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public runCommand(accessor: ServicesAccessor): void { - const editorService = accessor.get(IEditorService); - const activeInput = editorService.activeEditorPane?.input; - if (activeInput instanceof CustomEditorInput) { - activeInput.redo(); - } - } -}).register(); - diff --git a/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts b/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts index 4189d2899a7..25069373665 100644 --- a/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts +++ b/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts @@ -14,7 +14,6 @@ import { Extensions as EditorInputExtensions, IEditorInputFactoryRegistry } from import { CustomEditorInputFactory } from 'vs/workbench/contrib/customEditor/browser/customEditorInputFactory'; import { ICustomEditorService } from 'vs/workbench/contrib/customEditor/common/customEditor'; import { WebviewEditor } from 'vs/workbench/contrib/webview/browser/webviewEditor'; -import './commands'; import { CustomEditorInput } from './customEditorInput'; import { CustomEditorContribution, CustomEditorService } from './customEditors'; diff --git a/src/vs/workbench/contrib/customEditor/browser/customEditors.ts b/src/vs/workbench/contrib/customEditor/browser/customEditors.ts index ba2e25db0bd..afec917d62d 100644 --- a/src/vs/workbench/contrib/customEditor/browser/customEditors.ts +++ b/src/vs/workbench/contrib/customEditor/browser/customEditors.ts @@ -26,9 +26,8 @@ import { EditorInput, EditorOptions, GroupIdentifier, IEditorInput, IEditorPane, import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; import { CONTEXT_CUSTOM_EDITORS, CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, CustomEditorCapabilities, CustomEditorInfo, CustomEditorInfoCollection, CustomEditorPriority, ICustomEditorService } from 'vs/workbench/contrib/customEditor/common/customEditor'; import { CustomEditorModelManager } from 'vs/workbench/contrib/customEditor/common/customEditorModelManager'; -import { defaultEditorOverrideEntry } from 'vs/workbench/contrib/files/common/openWith'; import { IWebviewService, webviewHasOwnEditFunctionsContext } from 'vs/workbench/contrib/webview/browser/webview'; -import { CustomEditorAssociation, CustomEditorsAssociations, customEditorsAssociationsSettingId } from 'vs/workbench/services/editor/common/editorAssociationsSetting'; +import { CustomEditorAssociation, CustomEditorsAssociations, customEditorsAssociationsSettingId, defaultEditorOverrideEntry } from 'vs/workbench/services/editor/common/editorOpenWith'; import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { ICustomEditorInfo, ICustomEditorViewTypesHandler, IEditorService, IOpenEditorOverride, IOpenEditorOverrideEntry } from 'vs/workbench/services/editor/common/editorService'; import { ContributedCustomEditors, defaultCustomEditor } from '../common/contributedCustomEditors'; @@ -67,7 +66,6 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ this._focusedCustomEditorIsEditable = CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE.bindTo(contextKeyService); this._webviewHasOwnEditFunctions = webviewHasOwnEditFunctionsContext.bindTo(contextKeyService); - this._contributedEditors = this._register(new ContributedCustomEditors(storageService)); this._register(this._contributedEditors.onChange(() => { this.updateContexts(); diff --git a/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts b/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts index 7633e95e174..d61f9874fcd 100644 --- a/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts +++ b/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts @@ -12,8 +12,8 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag import { Memento } from 'vs/workbench/common/memento'; import { CustomEditorDescriptor, CustomEditorInfo, CustomEditorPriority } from 'vs/workbench/contrib/customEditor/common/customEditor'; import { customEditorsExtensionPoint, ICustomEditorsExtensionPoint } from 'vs/workbench/contrib/customEditor/common/extensionPoint'; -import { DEFAULT_EDITOR_ID } from 'vs/workbench/contrib/files/common/files'; import { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry'; +import { DEFAULT_EDITOR_ID } from 'vs/workbench/services/editor/common/editorOpenWith'; const builtinProviderDisplayName = nls.localize('builtinProviderDisplayName', "Built-in"); diff --git a/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts b/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts index 930bbe1d161..56d2bd17c8b 100644 --- a/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts +++ b/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts @@ -35,6 +35,7 @@ import { BrowserFeatures } from 'vs/base/browser/canIUse'; import { isSafari } from 'vs/base/browser/browser'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { registerColor } from 'vs/platform/theme/common/colorRegistry'; +import { ILabelService } from 'vs/platform/label/common/label'; const $ = dom.$; @@ -72,7 +73,7 @@ export function createBreakpointDecorations(model: ITextModel, breakpoints: Read } function getBreakpointDecorationOptions(model: ITextModel, breakpoint: IBreakpoint, state: State, breakpointsActivated: boolean, showBreakpointsInOverviewRuler: boolean): IModelDecorationOptions { - const { className, message } = getBreakpointMessageAndClassName(state, breakpointsActivated, breakpoint); + const { className, message } = getBreakpointMessageAndClassName(state, breakpointsActivated, breakpoint, undefined); let glyphMarginHoverMessage: MarkdownString | undefined; if (message) { @@ -163,7 +164,8 @@ export class BreakpointEditorContribution implements IBreakpointEditorContributi @IInstantiationService private readonly instantiationService: IInstantiationService, @IContextKeyService contextKeyService: IContextKeyService, @IDialogService private readonly dialogService: IDialogService, - @IConfigurationService private readonly configurationService: IConfigurationService + @IConfigurationService private readonly configurationService: IConfigurationService, + @ILabelService private readonly labelService: ILabelService ) { this.breakpointWidgetVisible = CONTEXT_BREAKPOINT_WIDGET_VISIBLE.bindTo(contextKeyService); this.registerListeners(); @@ -443,7 +445,7 @@ export class BreakpointEditorContribution implements IBreakpointEditorContributi // Candidate decoration has a breakpoint attached when a breakpoint is already at that location and we did not yet set a decoration there // In practice this happens for the first breakpoint that was set on a line // We could have also rendered this first decoration as part of desiredBreakpointDecorations however at that moment we have no location information - const cssClass = candidate.breakpoint ? getBreakpointMessageAndClassName(this.debugService.state, this.debugService.getModel().areBreakpointsActivated(), candidate.breakpoint).className : 'codicon-debug-breakpoint-disabled'; + const cssClass = candidate.breakpoint ? getBreakpointMessageAndClassName(this.debugService.state, this.debugService.getModel().areBreakpointsActivated(), candidate.breakpoint, this.labelService).className : 'codicon-debug-breakpoint-disabled'; const contextMenuActions = () => this.getContextMenuActions(candidate.breakpoint ? [candidate.breakpoint] : [], activeCodeEditor.getModel().uri, candidate.range.startLineNumber, candidate.range.startColumn); const inlineWidget = new InlineBreakpointWidget(activeCodeEditor, decorationId, cssClass, candidate.breakpoint, this.debugService, this.contextMenuService, contextMenuActions); diff --git a/src/vs/workbench/contrib/debug/browser/breakpointsView.ts b/src/vs/workbench/contrib/debug/browser/breakpointsView.ts index d694cea0118..c0164a0d939 100644 --- a/src/vs/workbench/contrib/debug/browser/breakpointsView.ts +++ b/src/vs/workbench/contrib/debug/browser/breakpointsView.ts @@ -77,6 +77,7 @@ export class BreakpointsView extends ViewPane { @IContextKeyService contextKeyService: IContextKeyService, @IOpenerService openerService: IOpenerService, @ITelemetryService telemetryService: ITelemetryService, + @ILabelService private readonly labelService: ILabelService ) { super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService); @@ -95,12 +96,12 @@ export class BreakpointsView extends ViewPane { new ExceptionBreakpointsRenderer(this.debugService), this.instantiationService.createInstance(FunctionBreakpointsRenderer), this.instantiationService.createInstance(DataBreakpointsRenderer), - new FunctionBreakpointInputRenderer(this.debugService, this.contextViewService, this.themeService) + new FunctionBreakpointInputRenderer(this.debugService, this.contextViewService, this.themeService, this.labelService) ], { identityProvider: { getId: (element: IEnablement) => element.getId() }, multipleSelectionSupport: false, keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: (e: IEnablement) => e }, - accessibilityProvider: new BreakpointsAccessibilityProvider(this.debugService), + accessibilityProvider: new BreakpointsAccessibilityProvider(this.debugService, this.labelService), overrideStyles: { listBackground: this.getBackgroundColor() } @@ -379,7 +380,7 @@ class BreakpointsRenderer implements IListRenderer { constructor( - @IDebugService private readonly debugService: IDebugService + @IDebugService private readonly debugService: IDebugService, + @ILabelService private readonly labelService: ILabelService ) { // noop } @@ -474,7 +476,7 @@ class FunctionBreakpointsRenderer implements IListRenderer { constructor( - @IDebugService private readonly debugService: IDebugService + @IDebugService private readonly debugService: IDebugService, + @ILabelService private readonly labelService: ILabelService ) { // noop } @@ -529,7 +532,7 @@ class DataBreakpointsRenderer implements IListRenderer { - constructor(private readonly debugService: IDebugService) { } + constructor( + private readonly debugService: IDebugService, + private readonly labelService: ILabelService + ) { } getWidgetAriaLabel(): string { return nls.localize('breakpoints', "Breakpoints"); @@ -658,7 +665,7 @@ class BreakpointsAccessibilityProvider implements IListAccessibilityProvider { assert.equal(result.className, 'codicon-debug-breakpoint-conditional'); result = getBreakpointMessageAndClassName(State.Stopped, true, breakpoints[4]); - assert.equal(result.message, '/myfolder/my file first.js'); + assert.equal(result.message, 'Breakpoint'); assert.equal(result.className, 'codicon-debug-breakpoint'); result = getBreakpointMessageAndClassName(State.Stopped, false, breakpoints[2]); diff --git a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts index e152bd1bc9c..a54c2a498f1 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts @@ -465,9 +465,10 @@ class ExtensionsContributions implements IWorkbenchContribution { @IExtensionManagementServerService extensionManagementServerService: IExtensionManagementServerService ) { - const canManageExtensions = extensionManagementServerService.localExtensionManagementServer || extensionManagementServerService.remoteExtensionManagementServer; - - if (canManageExtensions) { + if (extensionManagementServerService.localExtensionManagementServer + || extensionManagementServerService.remoteExtensionManagementServer + || extensionManagementServerService.webExtensionManagementServer + ) { Registry.as(Extensions.Quickaccess).registerQuickAccessProvider({ ctor: InstallExtensionQuickAccessProvider, prefix: InstallExtensionQuickAccessProvider.PREFIX, diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts index c36117e30e3..93d32aac0ed 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts @@ -26,7 +26,7 @@ import { Query } from 'vs/workbench/contrib/extensions/common/extensionQuery'; import { IFileService, IFileContent } from 'vs/platform/files/common/files'; import { IWorkspaceContextService, WorkbenchState, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { IHostService } from 'vs/workbench/services/host/browser/host'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionService, toExtension } from 'vs/workbench/services/extensions/common/extensions'; import { URI } from 'vs/base/common/uri'; import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -1261,7 +1261,7 @@ export class ReloadAction extends ExtensionAction { const isUninstalled = this.extension.state === ExtensionState.Uninstalled; const runningExtension = this._runningExtensions.filter(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier))[0]; - const isSameExtensionRunning = runningExtension && this.extension.server === this.extensionManagementServerService.getExtensionManagementServer(runningExtension.extensionLocation); + const isSameExtensionRunning = runningExtension && this.extension.server === this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension)); if (isUninstalled) { if (isSameExtensionRunning && !this.extensionService.canRemoveExtension(runningExtension)) { @@ -1282,7 +1282,7 @@ export class ReloadAction extends ExtensionAction { if (this.extensionService.canAddExtension(toExtensionDescription(this.extension.local))) { return; } - const runningExtensionServer = this.extensionManagementServerService.getExtensionManagementServer(runningExtension.extensionLocation); + const runningExtensionServer = this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension)); if (isSameExtensionRunning) { // Different version of same extension is running. Requires reload to run the current version @@ -2591,7 +2591,7 @@ export class StatusLabelAction extends Action implements IExtensionContainer { }; const canRemoveExtension = () => { if (this.extension!.local) { - if (runningExtensions.every(e => !(areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier) && this.extension!.server === this.extensionManagementServerService.getExtensionManagementServer(e.extensionLocation)))) { + if (runningExtensions.every(e => !(areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier) && this.extension!.server === this.extensionManagementServerService.getExtensionManagementServer(toExtension(e))))) { return true; } return this.extensionService.canRemoveExtension(toExtensionDescription(this.extension!.local)); @@ -2823,7 +2823,7 @@ export class SystemDisabledWarningAction extends ExtensionAction { } if (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.remoteExtensionManagementServer) { const runningExtension = this._runningExtensions.filter(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier))[0]; - const runningExtensionServer = runningExtension ? this.extensionManagementServerService.getExtensionManagementServer(runningExtension.extensionLocation) : null; + const runningExtensionServer = runningExtension ? this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension)) : null; if (this.extension.server === this.extensionManagementServerService.localExtensionManagementServer && runningExtensionServer === this.extensionManagementServerService.remoteExtensionManagementServer) { if (prefersExecuteOnWorkspace(this.extension.local!.manifest, this.productService, this.configurationService)) { this.class = `${SystemDisabledWarningAction.INFO_CLASS}`; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsList.ts b/src/vs/workbench/contrib/extensions/browser/extensionsList.ts index ea40f7f40f1..4c8e6373219 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsList.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsList.ts @@ -17,7 +17,7 @@ import { IExtension, ExtensionContainers, ExtensionState, IExtensionsWorkbenchSe import { InstallAction, UpdateAction, ManageExtensionAction, ReloadAction, MaliciousStatusLabelAction, ExtensionActionViewItem, StatusLabelAction, RemoteInstallAction, SystemDisabledWarningAction, ExtensionToolTipAction, LocalInstallAction, SyncIgnoredIconAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { Label, RatingsWidget, InstallCountWidget, RecommendationWidget, RemoteBadgeWidget, TooltipWidget, ExtensionPackCountWidget as ExtensionPackBadgeWidget } from 'vs/workbench/contrib/extensions/browser/extensionsWidgets'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionService, toExtension } from 'vs/workbench/services/extensions/common/extensions'; import { IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { isLanguagePackExtension } from 'vs/platform/extensions/common/extensions'; @@ -164,7 +164,7 @@ export class Renderer implements IPagedRenderer { isDisabled = false; if (extension.local && !isLanguagePackExtension(extension.local.manifest)) { const runningExtension = runningExtensions.filter(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, extension.identifier))[0]; - isDisabled = !(runningExtension && extension.server === this.extensionManagementServerService.getExtensionManagementServer(runningExtension.extensionLocation)); + isDisabled = !(runningExtension && extension.server === this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension))); } toggleClass(data.root, 'disabled', isDisabled); }; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts b/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts index 6a35d128812..ccd37e31f32 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts @@ -195,19 +195,19 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio const getOutdatedViewName = (): string => getViewName(localize('outdated', "Outdated"), server); const onDidChangeServerLabel: EventOf = EventOf.map(this.labelService.onDidChangeFormatters, () => undefined); return [{ - id: `extensions.${server.authority}.installed`, + id: `extensions.${server.id}.installed`, get name() { return getInstalledViewName(); }, ctorDescriptor: new SyncDescriptor(ServerExtensionsView, [server, EventOf.map(onDidChangeServerLabel, () => getInstalledViewName())]), when: ContextKeyExpr.and(ContextKeyExpr.has('searchInstalledExtensions')), weight: 100 }, { - id: `extensions.${server.authority}.outdated`, + id: `extensions.${server.id}.outdated`, get name() { return getOutdatedViewName(); }, ctorDescriptor: new SyncDescriptor(ServerExtensionsView, [server, EventOf.map(onDidChangeServerLabel, () => getOutdatedViewName())]), when: ContextKeyExpr.and(ContextKeyExpr.has('searchOutdatedExtensions')), weight: 100 }, { - id: `extensions.${server.authority}.default`, + id: `extensions.${server.id}.default`, get name() { return getInstalledViewName(); }, ctorDescriptor: new SyncDescriptor(ServerExtensionsView, [server, EventOf.map(onDidChangeServerLabel, () => getInstalledViewName())]), when: ContextKeyExpr.and(ContextKeyExpr.has('defaultExtensionViews'), ContextKeyExpr.has('hasInstalledExtensions'), RemoteNameContext.notEqualsTo('')), diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts b/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts index 827d8e2acf1..3066e76a210 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts @@ -19,7 +19,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { Delegate, Renderer, IExtensionsViewState } from 'vs/workbench/contrib/extensions/browser/extensionsList'; import { IExtension, IExtensionsWorkbenchService, ExtensionState } from 'vs/workbench/contrib/extensions/common/extensions'; import { Query } from 'vs/workbench/contrib/extensions/common/extensionQuery'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionService, toExtension } from 'vs/workbench/services/extensions/common/extensions'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { attachBadgeStyler } from 'vs/platform/theme/common/styler'; import { IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewlet'; @@ -373,9 +373,9 @@ export class ExtensionsListView extends ViewPane { const runningExtensionsById = runningExtensions.reduce((result, e) => { result.set(ExtensionIdentifier.toKey(e.identifier.value), e); return result; }, new Map()); result = result.sort((e1, e2) => { const running1 = runningExtensionsById.get(ExtensionIdentifier.toKey(e1.identifier.id)); - const isE1Running = running1 && this.extensionManagementServerService.getExtensionManagementServer(running1.extensionLocation) === e1.server; + const isE1Running = running1 && this.extensionManagementServerService.getExtensionManagementServer(toExtension(running1)) === e1.server; const running2 = runningExtensionsById.get(ExtensionIdentifier.toKey(e2.identifier.id)); - const isE2Running = running2 && this.extensionManagementServerService.getExtensionManagementServer(running2.extensionLocation) === e2.server; + const isE2Running = running2 && this.extensionManagementServerService.getExtensionManagementServer(toExtension(running2)) === e2.server; if ((isE1Running && isE2Running)) { return e1.displayName.localeCompare(e2.displayName); } diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts index 567d8c28f0a..bd5348c8d74 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts @@ -38,6 +38,7 @@ import { IModeService } from 'vs/editor/common/services/modeService'; import { IProductService } from 'vs/platform/product/common/productService'; import { asDomUri } from 'vs/base/browser/dom'; import { getIgnoredExtensions } from 'vs/platform/userDataSync/common/extensionsMerge'; +import { isWeb } from 'vs/base/common/platform'; interface IExtensionStateProvider { (extension: Extension): T; @@ -489,6 +490,7 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension private readonly localExtensions: Extensions | null = null; private readonly remoteExtensions: Extensions | null = null; + private readonly webExtensions: Extensions | null = null; private syncDelayer: ThrottledDelayer; private autoUpdateDelayer: ThrottledDelayer; @@ -523,6 +525,10 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension this.remoteExtensions = this._register(instantiationService.createInstance(Extensions, extensionManagementServerService.remoteExtensionManagementServer, ext => this.getExtensionState(ext))); this._register(this.remoteExtensions.onChange(e => this._onChange.fire(e ? e.extension : undefined))); } + if (extensionManagementServerService.webExtensionManagementServer) { + this.webExtensions = this._register(instantiationService.createInstance(Extensions, extensionManagementServerService.webExtensionManagementServer, ext => this.getExtensionState(ext))); + this._register(this.webExtensions.onChange(e => this._onChange.fire(e ? e.extension : undefined))); + } this.syncDelayer = new ThrottledDelayer(ExtensionsWorkbenchService.SyncPeriod); this.autoUpdateDelayer = new ThrottledDelayer(1000); @@ -563,6 +569,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (this.remoteExtensions) { result.push(...this.remoteExtensions.local); } + if (this.webExtensions) { + result.push(...this.webExtensions.local); + } return result; } @@ -574,6 +583,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (this.remoteExtensions) { allLocal.push(...this.remoteExtensions.local); } + if (this.webExtensions) { + allLocal.push(...this.webExtensions.local); + } return allLocal.filter(e => e.outdated && e.local && e.state === ExtensionState.Installed); } @@ -585,6 +597,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (this.remoteExtensions && this.extensionManagementServerService.remoteExtensionManagementServer === server) { return this.remoteExtensions.queryInstalled(); } + if (this.webExtensions && this.extensionManagementServerService.webExtensionManagementServer === server) { + return this.webExtensions.queryInstalled(); + } } if (this.localExtensions) { @@ -593,6 +608,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (this.remoteExtensions) { await this.remoteExtensions.queryInstalled(); } + if (this.webExtensions) { + await this.webExtensions.queryInstalled(); + } return this.local; } @@ -647,18 +665,18 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (extensions.length === 1) { return extensions[0]; } - const pickRemoteOrFirstExtension = (from: IExtension[]): IExtension => { - const remoteExtension = from.filter(e => e.server === this.extensionManagementServerService.remoteExtensionManagementServer)[0]; - return remoteExtension ? remoteExtension : from[0]; - }; const enabledExtensions = extensions.filter(e => e.local && this.extensionEnablementService.isEnabled(e.local)); - return enabledExtensions.length === 1 ? enabledExtensions[0] : pickRemoteOrFirstExtension(extensions); + if (enabledExtensions.length === 1) { + return enabledExtensions[0]; + } + return enabledExtensions.find(e => e.server === this.extensionManagementServerService.remoteExtensionManagementServer) || enabledExtensions[0]; } private fromGallery(gallery: IGalleryExtension, maliciousExtensionSet: Set): IExtension { Promise.all([ this.localExtensions ? this.localExtensions.syncLocalWithGalleryExtension(gallery, maliciousExtensionSet) : Promise.resolve(false), - this.remoteExtensions ? this.remoteExtensions.syncLocalWithGalleryExtension(gallery, maliciousExtensionSet) : Promise.resolve(false) + this.remoteExtensions ? this.remoteExtensions.syncLocalWithGalleryExtension(gallery, maliciousExtensionSet) : Promise.resolve(false), + this.webExtensions ? this.webExtensions.syncLocalWithGalleryExtension(gallery, maliciousExtensionSet) : Promise.resolve(false) ]) .then(result => { if (result[0] || result[1]) { @@ -695,7 +713,8 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension private getExtensionState(extension: Extension): ExtensionState { const isInstalling = this.installing.some(i => areSameExtensions(i.identifier, extension.identifier)); if (extension.server) { - const state = (extension.server === this.extensionManagementServerService.localExtensionManagementServer ? this.localExtensions! : this.remoteExtensions!).getExtensionState(extension); + const state = (extension.server === this.extensionManagementServerService.localExtensionManagementServer + ? this.localExtensions! : extension.server === this.extensionManagementServerService.remoteExtensionManagementServer ? this.remoteExtensions! : this.webExtensions!).getExtensionState(extension); return state === ExtensionState.Uninstalled && isInstalling ? ExtensionState.Installing : state; } else if (isInstalling) { return ExtensionState.Installing; @@ -706,6 +725,12 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension return state; } } + if (this.webExtensions) { + const state = this.webExtensions.getExtensionState(extension); + if (state !== ExtensionState.Uninstalled) { + return state; + } + } if (this.localExtensions) { return this.localExtensions.getExtensionState(extension); } @@ -783,7 +808,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension return false; } - if (this.extensionManagementServerService.localExtensionManagementServer || this.extensionManagementServerService.remoteExtensionManagementServer) { + if (this.extensionManagementServerService.localExtensionManagementServer + || this.extensionManagementServerService.remoteExtensionManagementServer + || this.extensionManagementServerService.webExtensionManagementServer) { return true; } @@ -867,9 +894,7 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension } isExtensionIgnoredToSync(extension: IExtension): boolean { - const localExtensions = (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.remoteExtensionManagementServer - ? this.local.filter(i => i.server === this.extensionManagementServerService.localExtensionManagementServer) - : this.local) + const localExtensions = (!isWeb && this.localExtensions ? this.localExtensions.local : this.local) .filter(l => !!l.local) .map(l => l.local!); @@ -1059,7 +1084,8 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension private _activityCallBack: (() => void) | null = null; private updateActivity(): void { if ((this.localExtensions && this.localExtensions.local.some(e => e.state === ExtensionState.Installing || e.state === ExtensionState.Uninstalling)) - || (this.remoteExtensions && this.remoteExtensions.local.some(e => e.state === ExtensionState.Installing || e.state === ExtensionState.Uninstalling))) { + || (this.remoteExtensions && this.remoteExtensions.local.some(e => e.state === ExtensionState.Installing || e.state === ExtensionState.Uninstalling)) + || (this.webExtensions && this.webExtensions.local.some(e => e.state === ExtensionState.Installing || e.state === ExtensionState.Uninstalling))) { if (!this._activityCallBack) { this.progressService.withProgress({ location: ProgressLocation.Extensions }, () => new Promise(c => this._activityCallBack = c)); } diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts index 1865b94f402..7c83b8ea7b1 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts @@ -34,7 +34,7 @@ import { URI } from 'vs/base/common/uri'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { RemoteAgentService } from 'vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl'; -import { ExtensionIdentifier, IExtensionContributions, ExtensionType, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { ExtensionIdentifier, IExtensionContributions, ExtensionType, IExtensionDescription, IExtension } from 'vs/platform/extensions/common/extensions'; import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService'; import { CancellationToken } from 'vs/base/common/cancellation'; import { ILabelService, IFormatterChangeEvent } from 'vs/platform/label/common/label'; @@ -99,7 +99,7 @@ async function setupTest() { instantiationService.stub(IRemoteAgentService, RemoteAgentService); instantiationService.stub(IExtensionManagementServerService, new class extends ExtensionManagementServerService { - #localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', authority: 'vscode-local' }; + #localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', id: 'vscode-local' }; constructor() { super(instantiationService.get(ISharedProcessService), instantiationService.get(IRemoteAgentService), instantiationService.get(IExtensionGalleryService), instantiationService.get(IConfigurationService), instantiationService.get(IProductService), instantiationService.get(ILogService), instantiationService.get(ILabelService)); } @@ -1122,7 +1122,7 @@ suite('ReloadAction', () => { test('Test ReloadAction when extension is newly installed', async () => { const onDidChangeExtensionsEmitter: Emitter = new Emitter(); - const runningExtensions = [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]; + const runningExtensions = [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]; instantiationService.stub(IExtensionService, >{ getExtensions: () => Promise.resolve(runningExtensions), onDidChangeExtensions: onDidChangeExtensionsEmitter.event, @@ -1145,7 +1145,7 @@ suite('ReloadAction', () => { test('Test ReloadAction when extension is newly installed and reload is not required', async () => { const onDidChangeExtensionsEmitter: Emitter = new Emitter(); - const runningExtensions = [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]; + const runningExtensions = [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]; instantiationService.stub(IExtensionService, >{ getExtensions: () => Promise.resolve(runningExtensions), onDidChangeExtensions: onDidChangeExtensionsEmitter.event, @@ -1166,7 +1166,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is installed and uninstalled', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const gallery = aGalleryExtension('a'); @@ -1184,7 +1184,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is uninstalled', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), extensionLocation: URI.file('pub.a'), version: '1.0.0' }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.0' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a'); @@ -1218,7 +1218,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is uninstalled and installed', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), version: '1.0.0', extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.0' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a'); @@ -1238,7 +1238,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is updated while running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), version: '1.0.1', extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.1' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a', { version: '1.0.1' }); @@ -1260,7 +1260,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is updated when not running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const local = aLocalExtension('a', { version: '1.0.1' }); await instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); @@ -1278,7 +1278,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is disabled when running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a'))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a'); @@ -1294,7 +1294,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension enablement is toggled when running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), version: '1.0.0', extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.0' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a'); @@ -1308,7 +1308,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is enabled when not running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const local = aLocalExtension('a'); await instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); @@ -1324,7 +1324,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension enablement is toggled when not running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const local = aLocalExtension('a'); await instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); @@ -1339,7 +1339,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is updated when not running and enabled', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const local = aLocalExtension('a', { version: '1.0.1' }); await instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); @@ -1359,7 +1359,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when a localization extension is newly installed', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const gallery = aGalleryExtension('a'); @@ -1375,7 +1375,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when a localization extension is updated while running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), version: '1.0.1', extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.1' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a', { version: '1.0.1', contributes: { localizations: [{ languageId: 'de', translations: [] }] } }); @@ -2518,7 +2518,7 @@ function aPage(...objects: T[]): IPager { function aSingleRemoteExtensionManagementServerService(instantiationService: TestInstantiationService, remoteExtensionManagementService?: IExtensionManagementService): IExtensionManagementServerService { const remoteExtensionManagementServer: IExtensionManagementServer = { - authority: 'vscode-remote', + id: 'vscode-remote', label: 'remote', extensionManagementService: remoteExtensionManagementService || createExtensionManagementService() }; @@ -2526,8 +2526,9 @@ function aSingleRemoteExtensionManagementServerService(instantiationService: Tes _serviceBrand: undefined, localExtensionManagementServer: null, remoteExtensionManagementServer, - getExtensionManagementServer: (location: URI) => { - if (location.scheme === REMOTE_HOST_SCHEME) { + webExtensionManagementServer: null, + getExtensionManagementServer: (extension: IExtension) => { + if (extension.location.scheme === REMOTE_HOST_SCHEME) { return remoteExtensionManagementServer; } return null; @@ -2537,12 +2538,12 @@ function aSingleRemoteExtensionManagementServerService(instantiationService: Tes function aMultiExtensionManagementServerService(instantiationService: TestInstantiationService, localExtensionManagementService?: IExtensionManagementService, remoteExtensionManagementService?: IExtensionManagementService): IExtensionManagementServerService { const localExtensionManagementServer: IExtensionManagementServer = { - authority: 'vscode-local', + id: 'vscode-local', label: 'local', extensionManagementService: localExtensionManagementService || createExtensionManagementService() }; const remoteExtensionManagementServer: IExtensionManagementServer = { - authority: 'vscode-remote', + id: 'vscode-remote', label: 'remote', extensionManagementService: remoteExtensionManagementService || createExtensionManagementService() }; @@ -2550,14 +2551,15 @@ function aMultiExtensionManagementServerService(instantiationService: TestInstan _serviceBrand: undefined, localExtensionManagementServer, remoteExtensionManagementServer, - getExtensionManagementServer: (location: URI) => { - if (location.scheme === Schemas.file) { + webExtensionManagementServer: null, + getExtensionManagementServer: (extension: IExtension) => { + if (extension.location.scheme === Schemas.file) { return localExtensionManagementServer; } - if (location.scheme === REMOTE_HOST_SCHEME) { + if (extension.location.scheme === REMOTE_HOST_SCHEME) { return remoteExtensionManagementServer; } - return null; + throw new Error(''); } }; } diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts index 9f8519041bd..58c893753df 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts @@ -99,7 +99,7 @@ suite('ExtensionsListView Tests', () => { instantiationService.stub(IMenuService, new TestMenuService()); instantiationService.stub(IExtensionManagementServerService, new class extends ExtensionManagementServerService { - #localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', authority: 'vscode-local' }; + #localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', id: 'vscode-local' }; constructor() { super(instantiationService.get(ISharedProcessService), instantiationService.get(IRemoteAgentService), instantiationService.get(IExtensionGalleryService), instantiationService.get(IConfigurationService), instantiationService.get(IProductService), instantiationService.get(ILogService), instantiationService.get(ILabelService)); } diff --git a/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts b/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts index 869a4900104..f2d566a910a 100644 --- a/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts +++ b/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts @@ -5,7 +5,7 @@ import * as nls from 'vs/nls'; import { toErrorMessage } from 'vs/base/common/errorMessage'; -import { basename } from 'vs/base/common/resources'; +import { basename, extUri } from 'vs/base/common/resources'; import { Action, IAction } from 'vs/base/common/actions'; import { URI } from 'vs/base/common/uri'; import { FileOperationError, FileOperationResult } from 'vs/platform/files/common/files'; @@ -115,7 +115,7 @@ export class TextFileSaveErrorHandler extends Disposable implements ISaveErrorHa if (fileOperationError.fileOperationResult === FileOperationResult.FILE_MODIFIED_SINCE) { // If the user tried to save from the opened conflict editor, show its message again - if (this.activeConflictResolutionResource && this.activeConflictResolutionResource.toString() === model.resource.toString()) { + if (this.activeConflictResolutionResource && extUri.isEqual(this.activeConflictResolutionResource, model.resource)) { if (this.storageService.getBoolean(LEARN_MORE_DIRTY_WRITE_IGNORE_KEY, StorageScope.GLOBAL)) { return; // return if this message is ignored } diff --git a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts index aa736b38b18..89b4e9ee7bd 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts @@ -5,7 +5,7 @@ import * as nls from 'vs/nls'; import { Registry } from 'vs/platform/registry/common/platform'; -import { ToggleAutoSaveAction, FocusFilesExplorer, GlobalCompareResourcesAction, SaveAllAction, ShowActiveFileInExplorer, CollapseExplorerView, RefreshExplorerView, CompareWithClipboardAction, NEW_FILE_COMMAND_ID, NEW_FILE_LABEL, NEW_FOLDER_COMMAND_ID, NEW_FOLDER_LABEL, TRIGGER_RENAME_LABEL, MOVE_FILE_TO_TRASH_LABEL, COPY_FILE_LABEL, PASTE_FILE_LABEL, FileCopiedContext, renameHandler, moveFileToTrashHandler, copyFileHandler, pasteFileHandler, deleteFileHandler, cutFileHandler, DOWNLOAD_COMMAND_ID, openFilePreserveFocusHandler, DOWNLOAD_LABEL, ShowOpenedFileInNewWindow, ReopenResourcesAction, ToggleEditorTypeCommand as ToggleEditorTypeAction } from 'vs/workbench/contrib/files/browser/fileActions'; +import { ToggleAutoSaveAction, FocusFilesExplorer, GlobalCompareResourcesAction, SaveAllAction, ShowActiveFileInExplorer, CollapseExplorerView, RefreshExplorerView, CompareWithClipboardAction, NEW_FILE_COMMAND_ID, NEW_FILE_LABEL, NEW_FOLDER_COMMAND_ID, NEW_FOLDER_LABEL, TRIGGER_RENAME_LABEL, MOVE_FILE_TO_TRASH_LABEL, COPY_FILE_LABEL, PASTE_FILE_LABEL, FileCopiedContext, renameHandler, moveFileToTrashHandler, copyFileHandler, pasteFileHandler, deleteFileHandler, cutFileHandler, DOWNLOAD_COMMAND_ID, openFilePreserveFocusHandler, DOWNLOAD_LABEL, ShowOpenedFileInNewWindow } from 'vs/workbench/contrib/files/browser/fileActions'; import { revertLocalChangesCommand, acceptLocalChangesCommand, CONFLICT_RESOLUTION_CONTEXT } from 'vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler'; import { SyncActionDescriptor, MenuId, MenuRegistry, ILocalizedString } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; @@ -26,7 +26,7 @@ import { WorkspaceFolderCountContext } from 'vs/workbench/browser/contextkeys'; import { IsWebContext } from 'vs/platform/contextkey/common/contextkeys'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { OpenFileFolderAction, OpenFileAction, OpenFolderAction, OpenWorkspaceAction } from 'vs/workbench/browser/actions/workspaceActions'; -import { ActiveEditorIsReadonlyContext, DirtyWorkingCopiesContext, ActiveEditorContext, ActiveEditorAvailableEditorIdsContext } from 'vs/workbench/common/editor'; +import { ActiveEditorIsReadonlyContext, DirtyWorkingCopiesContext, ActiveEditorContext } from 'vs/workbench/common/editor'; import { SidebarFocusContext } from 'vs/workbench/common/viewlet'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; @@ -36,8 +36,6 @@ const category = { value: nls.localize('filesCategory', "File"), original: 'File const registry = Registry.as(ActionExtensions.WorkbenchActions); registry.registerWorkbenchAction(SyncActionDescriptor.from(SaveAllAction, { primary: undefined, mac: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KEY_S }, win: { primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyCode.KEY_S) } }), 'File: Save All', category.value); registry.registerWorkbenchAction(SyncActionDescriptor.from(GlobalCompareResourcesAction), 'File: Compare Active File With...', category.value); -registry.registerWorkbenchAction(SyncActionDescriptor.from(ReopenResourcesAction), 'File: Reopen With...', category.value, ActiveEditorAvailableEditorIdsContext); -registry.registerWorkbenchAction(SyncActionDescriptor.from(ToggleEditorTypeAction), 'File: Toggle Editor Type', category.value, ActiveEditorAvailableEditorIdsContext); registry.registerWorkbenchAction(SyncActionDescriptor.from(FocusFilesExplorer), 'File: Focus on Files Explorer', category.value); registry.registerWorkbenchAction(SyncActionDescriptor.from(ShowActiveFileInExplorer), 'File: Reveal Active File in Side Bar', category.value); registry.registerWorkbenchAction(SyncActionDescriptor.from(CollapseExplorerView), 'File: Collapse Folders in Explorer', category.value); @@ -182,19 +180,6 @@ export function appendEditorTitleContextMenuItem(id: string, title: string, when }); } -// Reopen with editor title - -MenuRegistry.appendMenuItem(MenuId.EditorTitle, { - command: { - id: ReopenResourcesAction.ID, - title: ReopenResourcesAction.LABEL, - category: fileCategory, - }, - group: '6_reopen', - order: 20, - when: ActiveEditorAvailableEditorIdsContext, -}); - // Editor Title Menu for Conflict Resolution appendSaveConflictEditorTitleAction('workbench.files.action.acceptLocalChanges', nls.localize('acceptLocalChanges', "Use your changes and overwrite file contents"), { id: 'codicon/check' }, -10, acceptLocalChangesCommand); appendSaveConflictEditorTitleAction('workbench.files.action.revertLocalChanges', nls.localize('revertLocalChanges', "Discard your changes and revert to file contents"), { id: 'codicon/discard' }, -9, revertLocalChangesCommand); diff --git a/src/vs/workbench/contrib/files/browser/fileActions.ts b/src/vs/workbench/contrib/files/browser/fileActions.ts index d2f368ff391..1ef66d58ce7 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.ts @@ -47,10 +47,8 @@ import { IWorkingCopyService, IWorkingCopy } from 'vs/workbench/services/working import { sequence, timeout } from 'vs/base/common/async'; import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; import { once } from 'vs/base/common/functional'; -import { OpenEditorContext } from 'vs/workbench/services/editor/common/editorGroupsService'; import { Codicon } from 'vs/base/common/codicons'; import { IViewsService } from 'vs/workbench/common/views'; -import { openEditorWith, getAllAvailableEditors } from 'vs/workbench/contrib/files/common/openWith'; export const NEW_FILE_COMMAND_ID = 'explorer.newFile'; export const NEW_FILE_LABEL = nls.localize('newFile', "New File"); @@ -499,75 +497,6 @@ export class GlobalCompareResourcesAction extends Action { } } -export class ReopenResourcesAction extends Action { - - static readonly ID = 'workbench.files.action.reopenWithEditor'; - static readonly LABEL = nls.localize('workbench.files.action.reopenWithEditor', "Reopen With..."); - - constructor( - id: string, - label: string, - @IQuickInputService private readonly quickInputService: IQuickInputService, - @IEditorService private readonly editorService: IEditorService, - @IConfigurationService private readonly configurationService: IConfigurationService - ) { - super(id, label); - } - - async run(): Promise { - const activeInput = this.editorService.activeEditor; - if (!activeInput) { - return; - } - - const activeEditorPane = this.editorService.activeEditorPane; - if (!activeEditorPane) { - return; - } - - const options = activeEditorPane.options; - const group = activeEditorPane.group; - await openEditorWith(activeInput, undefined, options, group, this.editorService, this.configurationService, this.quickInputService); - } -} - -export class ToggleEditorTypeCommand extends Action { - - static readonly ID = 'workbench.files.action.toggleEditorType'; - static readonly LABEL = nls.localize('workbench.files.action.toggleEditorType', "Toggle Editor Type"); - - constructor( - id: string, - label: string, - @IEditorService private readonly editorService: IEditorService, - ) { - super(id, label); - } - - async run(): Promise { - const activeEditorPane = this.editorService.activeEditorPane; - if (!activeEditorPane) { - return; - } - - const input = activeEditorPane.input; - if (!input.resource) { - return; - } - - const options = activeEditorPane.options; - const group = activeEditorPane.group; - - const overrides = getAllAvailableEditors(input.resource, options, group, this.editorService); - const firstNonActiveOverride = overrides.find(([_, entry]) => !entry.active); - if (!firstNonActiveOverride) { - return; - } - - await firstNonActiveOverride[0].open(input, { ...options, override: firstNonActiveOverride[1].id }, group, OpenEditorContext.NEW_EDITOR)?.override; - } -} - export class ToggleAutoSaveAction extends Action { static readonly ID = 'workbench.action.toggleAutoSave'; static readonly LABEL = nls.localize('toggleAutoSave', "Toggle Auto Save"); @@ -704,7 +633,7 @@ export class ShowActiveFileInExplorer extends Action { } async run(): Promise { - const resource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { this.commandService.executeCommand(REVEAL_IN_EXPLORER_COMMAND_ID, resource); } else { @@ -772,7 +701,7 @@ export class ShowOpenedFileInNewWindow extends Action { } async run(): Promise { - const fileResource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const fileResource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (fileResource) { if (this.fileService.canHandleResource(fileResource)) { this.hostService.openWindow([{ fileUri: fileResource }], { forceNewWindow: true }); @@ -884,7 +813,7 @@ export class CompareWithClipboardAction extends Action { } async run(): Promise { - const resource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); const scheme = `clipboardCompare${CompareWithClipboardAction.SCHEME_COUNTER++}`; if (resource && (this.fileService.canHandleResource(resource) || resource.scheme === Schemas.untitled)) { if (!this.registrationDisposal) { diff --git a/src/vs/workbench/contrib/files/browser/fileCommands.ts b/src/vs/workbench/contrib/files/browser/fileCommands.ts index 08c065de751..0bc5c56d2e7 100644 --- a/src/vs/workbench/contrib/files/browser/fileCommands.ts +++ b/src/vs/workbench/contrib/files/browser/fileCommands.ts @@ -40,10 +40,10 @@ import { coalesce } from 'vs/base/common/arrays'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { EmbeddedCodeEditorWidget } from 'vs/editor/browser/widget/embeddedCodeEditorWidget'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; -import { openEditorWith } from 'vs/workbench/contrib/files/common/openWith'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; +import { openEditorWith } from 'vs/workbench/services/editor/common/editorOpenWith'; // Commands @@ -178,7 +178,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ // Dispose once no more diff editor is opened with the scheme if (registerEditorListener) { providerDisposables.push(editorService.onDidVisibleEditorsChange(() => { - if (!editorService.editors.some(editor => !!toResource(editor, { supportSideBySide: SideBySideEditor.DETAILS, filterByScheme: COMPARE_WITH_SAVED_SCHEMA }))) { + if (!editorService.editors.some(editor => !!toResource(editor, { supportSideBySide: SideBySideEditor.SECONDARY, filterByScheme: COMPARE_WITH_SAVED_SCHEMA }))) { providerDisposables = dispose(providerDisposables); } })); @@ -356,8 +356,8 @@ async function saveSelectedEditors(accessor: ServicesAccessor, options?: ISaveEd // We only allow this when saving, not for "Save As". // See also https://github.com/microsoft/vscode/issues/4180 if (activeGroup.activeEditor instanceof SideBySideEditorInput && !options?.saveAs) { - editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor.master }); - editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor.details }); + editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor.primary }); + editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor.secondary }); } else { editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor }); } @@ -380,7 +380,7 @@ async function saveSelectedEditors(accessor: ServicesAccessor, options?: ISaveEd const resource = focusedCodeEditor.getModel()?.uri; // Check that the resource of the model was not saved already - if (resource && !editors.some(({ editor }) => isEqual(toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }), resource))) { + if (resource && !editors.some(({ editor }) => isEqual(toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }), resource))) { const model = textFileService.files.get(resource); if (!model?.isReadonly()) { await textFileService.save(resource, options); diff --git a/src/vs/workbench/contrib/files/browser/files.ts b/src/vs/workbench/contrib/files/browser/files.ts index 1274f2b97d5..ac012e62fc4 100644 --- a/src/vs/workbench/contrib/files/browser/files.ts +++ b/src/vs/workbench/contrib/files/browser/files.ts @@ -50,7 +50,7 @@ export function getResourceForCommand(resource: URI | object | undefined, listSe return focus.getResource(); } - return editorService.activeEditor ? toResource(editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }) : undefined; + return editorService.activeEditor ? toResource(editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }) : undefined; } export function getMultiSelectedResources(resource: URI | object | undefined, listService: IListService, editorService: IEditorService, explorerService: IExplorerService): Array { diff --git a/src/vs/workbench/contrib/files/browser/views/explorerView.ts b/src/vs/workbench/contrib/files/browser/views/explorerView.ts index 443fa8ee0c7..66d94162794 100644 --- a/src/vs/workbench/contrib/files/browser/views/explorerView.ts +++ b/src/vs/workbench/contrib/files/browser/views/explorerView.ts @@ -450,6 +450,16 @@ export class ExplorerView extends ViewPane { } })); + this._register(this.tree.onDidChangeCollapseState(e => { + const element = e.node.element?.element; + if (element) { + const navigationController = this.renderer.getCompressedNavigationController(element instanceof Array ? element[0] : element); + if (navigationController) { + navigationController.updateCollapsed(e.node.collapsed); + } + } + })); + // save view state this._register(this.storageService.onWillSaveState(() => { this.storageService.store(ExplorerView.TREE_VIEW_STATE_STORAGE_KEY, JSON.stringify(this.tree.getViewState()), StorageScope.WORKSPACE); @@ -658,7 +668,7 @@ export class ExplorerView extends ViewPane { } // check for files - return withNullAsUndefined(toResource(input, { supportSideBySide: SideBySideEditor.MASTER })); + return withNullAsUndefined(toResource(input, { supportSideBySide: SideBySideEditor.PRIMARY })); } public async selectResource(resource: URI | undefined, reveal = this.autoReveal, retry = 0): Promise { diff --git a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts index 6da95023d8e..86c3f6b20ed 100644 --- a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts @@ -134,6 +134,7 @@ export interface ICompressedNavigationController { first(): void; last(): void; setIndex(index: number): void; + updateCollapsed(collapsed: boolean): void; } export class CompressedNavigationController implements ICompressedNavigationController, IDisposable { @@ -153,7 +154,7 @@ export class CompressedNavigationController implements ICompressedNavigationCont private _onDidChange = new Emitter(); readonly onDidChange = this._onDidChange.event; - constructor(private id: string, readonly items: ExplorerItem[], templateData: IFileTemplateData) { + constructor(private id: string, readonly items: ExplorerItem[], templateData: IFileTemplateData, private depth: number, private collapsed: boolean) { this._index = items.length - 1; this.updateLabels(templateData); @@ -165,7 +166,9 @@ export class CompressedNavigationController implements ICompressedNavigationCont for (let i = 0; i < this.labels.length; i++) { this.labels[i].setAttribute('aria-label', this.items[i].name); + this.labels[i].setAttribute('aria-level', `${this.depth + i}`); } + this.updateCollapsed(this.collapsed); if (this._index < this.labels.length) { DOM.addClass(this.labels[this._index], 'active'); @@ -216,6 +219,13 @@ export class CompressedNavigationController implements ICompressedNavigationCont this._onDidChange.fire(); } + updateCollapsed(collapsed: boolean): void { + this.collapsed = collapsed; + for (let i = 0; i < this.labels.length; i++) { + this.labels[i].setAttribute('aria-expanded', collapsed ? 'false' : 'true'); + } + } + dispose(): void { this._onDidChange.dispose(); this._updateLabelDisposable.dispose(); @@ -308,7 +318,7 @@ export class FilesRenderer implements ICompressibleTreeRenderer e.name); disposables.add(this.renderStat(stat, label, id, node.filterData, templateData)); - const compressedNavigationController = new CompressedNavigationController(id, node.element.elements, templateData); + const compressedNavigationController = new CompressedNavigationController(id, node.element.elements, templateData, node.depth, node.collapsed); disposables.add(compressedNavigationController); this.compressedNavigationControllers.set(stat, compressedNavigationController); diff --git a/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts b/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts index b9f7585c466..aaf749555d4 100644 --- a/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts +++ b/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts @@ -314,12 +314,12 @@ export class FileEditorInput extends AbstractTextResourceEditorInput implements } matches(otherInput: unknown): boolean { - if (super.matches(otherInput) === true) { + if (otherInput === this) { return true; } - if (otherInput) { - return otherInput instanceof FileEditorInput && otherInput.resource.toString() === this.resource.toString(); + if (otherInput instanceof FileEditorInput) { + return extUri.isEqual(otherInput.resource, this.resource); } return false; diff --git a/src/vs/workbench/contrib/files/common/files.ts b/src/vs/workbench/contrib/files/common/files.ts index 9f1c4d9d1bc..3fe4953a5c6 100644 --- a/src/vs/workbench/contrib/files/common/files.ts +++ b/src/vs/workbench/contrib/files/common/files.ts @@ -33,11 +33,6 @@ export const VIEWLET_ID = 'workbench.view.explorer'; */ export const VIEW_ID = 'workbench.explorer.fileView'; -/** - * Id of the default editor for open with. - */ -export const DEFAULT_EDITOR_ID = 'default'; - export interface IExplorerService { readonly _serviceBrand: undefined; readonly roots: ExplorerItem[]; @@ -256,6 +251,6 @@ export class OpenEditor implements IEditorIdentifier { } getResource(): URI | undefined { - return toResource(this.editor, { supportSideBySide: SideBySideEditor.MASTER }); + return toResource(this.editor, { supportSideBySide: SideBySideEditor.PRIMARY }); } } diff --git a/src/vs/workbench/contrib/files/test/browser/explorerView.test.ts b/src/vs/workbench/contrib/files/test/browser/explorerView.test.ts index e8904d74e27..ae9dc54c9dc 100644 --- a/src/vs/workbench/contrib/files/test/browser/explorerView.test.ts +++ b/src/vs/workbench/contrib/files/test/browser/explorerView.test.ts @@ -87,7 +87,7 @@ suite('Files - ExplorerView', () => { container: label, onDidRender: emitter.event } - }); + }, 1, false); assert.equal(navigationController.count, 3); assert.equal(navigationController.index, 2); diff --git a/src/vs/workbench/contrib/hover/browser/hoverService.ts b/src/vs/workbench/contrib/hover/browser/hoverService.ts deleted file mode 100644 index 590e3c2859d..00000000000 --- a/src/vs/workbench/contrib/hover/browser/hoverService.ts +++ /dev/null @@ -1,55 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { IHoverService, IHoverOptions } from 'vs/workbench/contrib/hover/browser/hover'; -import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; -import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { HoverWidget } from 'vs/workbench/contrib/hover/browser/hoverWidget'; -import { IContextViewProvider, IDelegate } from 'vs/base/browser/ui/contextview/contextview'; - -export class HoverService implements IHoverService { - declare readonly _serviceBrand: undefined; - - private _currentHoverOptions: IHoverOptions | undefined; - - constructor( - @IInstantiationService private readonly _instantiationService: IInstantiationService, - @IContextViewService private readonly _contextViewService: IContextViewService - ) { - } - - showHover(options: IHoverOptions, focus?: boolean): void { - if (this._currentHoverOptions === options) { - return; - } - this._currentHoverOptions = options; - - const hover = this._instantiationService.createInstance(HoverWidget, options); - const provider = this._contextViewService as IContextViewProvider; - const contextViewDelegate: IDelegate = { - render: container => { - hover.render(container); - hover.onDispose(() => this._currentHoverOptions = undefined); - if (focus) { - hover.focus(); - } - return hover; - }, - anchorPosition: hover.anchor, - getAnchor: () => ({ x: hover.x, y: hover.y }), - layout: () => hover.layout() - }; - provider.showContextView(contextViewDelegate); - hover.onRequestLayout(() => provider.layout()); - } - - hideHover(): void { - if (!this._currentHoverOptions) { - return; - } - this._currentHoverOptions = undefined; - this._contextViewService.hideContextView(); - } -} diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts b/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts index 8cb046663fe..eec6514f8c5 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts @@ -1005,13 +1005,7 @@ registerAction2(class extends NotebookAction { } async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { - const viewModel = context.notebookEditor.viewModel; - - if (!viewModel) { - return; - } - - viewModel.undo(); + await context.notebookEditor.viewModel?.undo(); } }); @@ -1029,7 +1023,7 @@ registerAction2(class extends NotebookAction { } async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { - context.notebookEditor.viewModel?.redo(); + await context.notebookEditor.viewModel?.redo(); } }); diff --git a/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts b/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts index 02072787b0e..859a9feb342 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts @@ -35,7 +35,7 @@ import { NotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/noteb import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorService, IOpenEditorOverride } from 'vs/workbench/services/editor/common/editorService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { CustomEditorsAssociations, customEditorsAssociationsSettingId } from 'vs/workbench/services/editor/common/editorAssociationsSetting'; +import { CustomEditorsAssociations, customEditorsAssociationsSettingId } from 'vs/workbench/services/editor/common/editorOpenWith'; import { CustomEditorInfo } from 'vs/workbench/contrib/customEditor/common/customEditor'; import { NotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/notebookEditorWidget'; import { INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; @@ -229,7 +229,7 @@ export class NotebookContribution extends Disposable implements IWorkbenchContri private onEditorOpening2(originalInput: IEditorInput, options: IEditorOptions | ITextEditorOptions | undefined, group: IEditorGroup): IOpenEditorOverride | undefined { - const id = typeof options?.override === 'string' ? options.override : undefined; + let id = typeof options?.override === 'string' ? options.override : undefined; if (id === undefined && originalInput.isUntitled()) { return undefined; } @@ -251,6 +251,11 @@ export class NotebookContribution extends Disposable implements IWorkbenchContri cellOptions = { resource: originalInput.resource, options }; } + if (id === undefined) { + const exitingNotebookEditor = group.editors.find(editor => editor instanceof NotebookEditorInput && isEqual(editor.resource, notebookUri)); + id = exitingNotebookEditor?.viewType; + } + if (id === undefined) { const existingEditors = group.editors.filter(editor => editor.resource && isEqual(editor.resource, notebookUri) && !(editor instanceof NotebookEditorInput)); diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts index 9e099bc2c10..53c6a724f35 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts @@ -17,7 +17,7 @@ import { NotebookEditorInput } from 'vs/workbench/contrib/notebook/browser/noteb import { INotebookEditorViewState, NotebookViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel'; import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { NotebookEditorWidget, NotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/notebookEditorWidget'; -import { EditorPart } from 'vs/workbench/browser/parts/editor/editorPart'; +import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorDropService'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor'; @@ -49,12 +49,13 @@ export class NotebookEditor extends BaseEditor { @IInstantiationService private readonly instantiationService: IInstantiationService, @IStorageService storageService: IStorageService, @IEditorService private readonly _editorService: IEditorService, - @IEditorGroupsService private readonly _editorGroupService: IEditorGroupsService, + @IEditorGroupsService editorGroupService: IEditorGroupsService, + @IEditorDropService private readonly _editorDropService: IEditorDropService, @INotificationService private readonly _notificationService: INotificationService, @INotebookEditorWidgetService private readonly _notebookWidgetService: INotebookEditorWidgetService, ) { super(NotebookEditor.ID, telemetryService, themeService, storageService); - this._editorMemento = this.getEditorMemento(_editorGroupService, NOTEBOOK_EDITOR_VIEW_STATE_PREFERENCE_KEY); + this._editorMemento = this.getEditorMemento(editorGroupService, NOTEBOOK_EDITOR_VIEW_STATE_PREFERENCE_KEY); } set viewModel(newModel: NotebookViewModel | undefined) { @@ -160,11 +161,9 @@ export class NotebookEditor extends BaseEditor { await this._widget.value!.setOptions(options instanceof NotebookEditorOptions ? options : undefined); this._widgetDisposableStore.add(this._widget.value!.onDidFocus(() => this._onDidFocusWidget.fire())); - if (this._editorGroupService instanceof EditorPart) { - this._widgetDisposableStore.add(this._editorGroupService.createEditorDropTarget(this._widget.value!.getDomNode(), { - groupContainsPredicate: (group) => this.group?.id === group.group.id - })); - } + this._widgetDisposableStore.add(this._editorDropService.createEditorDropTarget(this._widget.value!.getDomNode(), { + containsGroup: (group) => this.group?.id === group.group.id + })); } clearInput(): void { diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts index 66598146edf..ac222a4a6c7 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts @@ -1121,16 +1121,12 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD }); } - canUndo(): boolean { - return this._undoService.canUndo(this.uri); + async undo() { + await this._undoService.undo(this.uri); } - undo() { - this._undoService.undo(this.uri); - } - - redo() { - this._undoService.redo(this.uri); + async redo() { + await this._undoService.redo(this.uri); } equal(notebook: NotebookTextModel) { diff --git a/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts b/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts index 9c6734c9afe..d0e8f6b32f5 100644 --- a/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts +++ b/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts @@ -4,40 +4,56 @@ *--------------------------------------------------------------------------------------------*/ import { isMacintosh } from 'vs/base/common/platform'; -import { registerAction2 } from 'vs/platform/actions/common/actions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import * as webviewCommands from 'vs/workbench/contrib/webview/electron-browser/webviewCommands'; -import { NotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookEditor'; +import { CopyAction, CutAction, PasteAction } from 'vs/editor/contrib/clipboard/clipboard'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { getActiveNotebookEditor } from 'vs/workbench/contrib/notebook/browser/contrib/coreActions'; import { ElectronWebviewBasedWebview } from 'vs/workbench/contrib/webview/electron-browser/webviewElement'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { getActiveNotebookEditor } from 'vs/workbench/contrib/notebook/browser/contrib/coreActions'; - -function getActiveElectronBasedWebviewDelegate(accessor: ServicesAccessor): ElectronWebviewBasedWebview | undefined { +import { UndoCommand, RedoCommand } from 'vs/editor/browser/editorExtensions'; +function getFocusedElectronBasedWebviewDelegate(accessor: ServicesAccessor): ElectronWebviewBasedWebview | undefined { const editorService = accessor.get(IEditorService); const editor = getActiveNotebookEditor(editorService); + if (!editor?.hasFocus()) { + return; + } const webview = editor?.getInnerWebview(); - if (webview && webview instanceof ElectronWebviewBasedWebview) { return webview; } - return; } -function registerNotebookCommands(editorId: string): void { - const contextKeyExpr = ContextKeyExpr.and(ContextKeyExpr.equals('activeEditor', editorId), ContextKeyExpr.not('editorFocus') /* https://github.com/Microsoft/vscode/issues/58668 */)!; - - // These commands are only needed on MacOS where we have to disable the menu bar commands - if (isMacintosh) { - registerAction2(class extends webviewCommands.CopyWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); - registerAction2(class extends webviewCommands.PasteWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); - registerAction2(class extends webviewCommands.CutWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); - registerAction2(class extends webviewCommands.UndoWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); - registerAction2(class extends webviewCommands.RedoWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); +if (isMacintosh) { + function withWebview(accessor: ServicesAccessor, f: (webviewe: ElectronWebviewBasedWebview) => void) { + const webview = getFocusedElectronBasedWebviewDelegate(accessor); + if (webview) { + f(webview); + return true; + } + return false; } -} -registerNotebookCommands(NotebookEditor.ID); + const PRIORITY = 100; + + UndoCommand.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.undo()); + }); + + RedoCommand.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.redo()); + }); + + CopyAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.copy()); + }); + + PasteAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.paste()); + }); + + CutAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.cut()); + }); +} diff --git a/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts b/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts index 68d03cbb441..5bfbe8133ab 100644 --- a/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts +++ b/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts @@ -93,8 +93,8 @@ Registry.as(EditorExtensions.Editors).registerEditor( // Register Preferences Editor Input Factory class PreferencesEditorInputFactory extends AbstractSideBySideEditorInputFactory { - protected createEditorInput(name: string, description: string | undefined, detailsInput: EditorInput, masterInput: EditorInput): EditorInput { - return new PreferencesEditorInput(name, description, detailsInput, masterInput); + protected createEditorInput(name: string, description: string | undefined, secondaryInput: EditorInput, primaryInput: EditorInput): EditorInput { + return new PreferencesEditorInput(name, description, secondaryInput, primaryInput); } } diff --git a/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts b/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts index 6b866bfa1c9..9ace126eef3 100644 --- a/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts +++ b/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts @@ -206,7 +206,7 @@ export class PreferencesEditor extends BaseEditor { } private updateInput(newInput: PreferencesEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { - return this.sideBySidePreferencesWidget.setInput(newInput.details, newInput.master, options, token).then(({ defaultPreferencesRenderer, editablePreferencesRenderer }) => { + return this.sideBySidePreferencesWidget.setInput(newInput.secondary, newInput.primary, options, token).then(({ defaultPreferencesRenderer, editablePreferencesRenderer }) => { if (token.isCancellationRequested) { return; } diff --git a/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts b/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts index 4292cab7ccb..da898adea82 100644 --- a/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts +++ b/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts @@ -651,7 +651,7 @@ class EditSettingRenderer extends Disposable { private readonly _onUpdateSetting: Emitter<{ key: string, value: any, source: IIndexedSetting }> = new Emitter<{ key: string, value: any, source: IIndexedSetting }>(); readonly onUpdateSetting: Event<{ key: string, value: any, source: IIndexedSetting }> = this._onUpdateSetting.event; - constructor(private editor: ICodeEditor, private masterSettingsModel: ISettingsEditorModel, + constructor(private editor: ICodeEditor, private primarySettingsModel: ISettingsEditorModel, private settingHighlighter: SettingHighlighter, @IInstantiationService private readonly instantiationService: IInstantiationService, @IContextMenuService private readonly contextMenuService: IContextMenuService @@ -683,7 +683,7 @@ class EditSettingRenderer extends Disposable { } private isDefaultSettings(): boolean { - return this.masterSettingsModel instanceof DefaultSettingsEditorModel; + return this.primarySettingsModel instanceof DefaultSettingsEditorModel; } private onConfigurationChanged(): void { @@ -769,7 +769,7 @@ class EditSettingRenderer extends Disposable { return true; } if (configurationNode.type === 'boolean' || configurationNode.enum) { - if ((this.masterSettingsModel).configurationTarget !== ConfigurationTarget.WORKSPACE_FOLDER) { + if ((this.primarySettingsModel).configurationTarget !== ConfigurationTarget.WORKSPACE_FOLDER) { return true; } if (configurationNode.scope === ConfigurationScope.RESOURCE || configurationNode.scope === ConfigurationScope.LANGUAGE_OVERRIDABLE) { diff --git a/src/vs/workbench/contrib/scm/browser/repositoryPane.ts b/src/vs/workbench/contrib/scm/browser/repositoryPane.ts index 8fa07b9a010..4209db7b980 100644 --- a/src/vs/workbench/contrib/scm/browser/repositoryPane.ts +++ b/src/vs/workbench/contrib/scm/browser/repositoryPane.ts @@ -667,7 +667,7 @@ class ViewModel { return; } - const uri = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const uri = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!uri) { return; diff --git a/src/vs/workbench/contrib/search/common/search.ts b/src/vs/workbench/contrib/search/common/search.ts index b63a4223a13..54a624656d2 100644 --- a/src/vs/workbench/contrib/search/common/search.ts +++ b/src/vs/workbench/contrib/search/common/search.ts @@ -96,7 +96,7 @@ export function getOutOfWorkspaceEditorResources(accessor: ServicesAccessor): UR const fileService = accessor.get(IFileService); const resources = editorService.editors - .map(editor => toResource(editor, { supportSideBySide: SideBySideEditor.MASTER })) + .map(editor => toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY })) .filter(resource => !!resource && !contextService.isInsideWorkspace(resource) && fileService.canHandleResource(resource)); return resources as URI[]; diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalExternalLinkProviderAdapter.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalExternalLinkProviderAdapter.ts new file mode 100644 index 00000000000..6eb7c6b1ff1 --- /dev/null +++ b/src/vs/workbench/contrib/terminal/browser/links/terminalExternalLinkProviderAdapter.ts @@ -0,0 +1,64 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { Terminal, IViewportRange, IBufferLine } from 'xterm'; +import { getXtermLineContent, convertLinkRangeToBuffer } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers'; +import { TerminalLink } from 'vs/workbench/contrib/terminal/browser/links/terminalLink'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { TerminalBaseLinkProvider } from 'vs/workbench/contrib/terminal/browser/links/terminalBaseLinkProvider'; +import { ITerminalExternalLinkProvider, ITerminalInstance } from 'vs/workbench/contrib/terminal/browser/terminal'; + +/** + * An adapter to convert a simple external link provider into an internal link provider that + * manages link lifecycle, hovers, etc. and gets registered in xterm.js. + */ +export class TerminalExternalLinkProviderAdapter extends TerminalBaseLinkProvider { + + constructor( + private readonly _xterm: Terminal, + private readonly _instance: ITerminalInstance, + private readonly _externalLinkProvider: ITerminalExternalLinkProvider, + private readonly _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => void, + @IInstantiationService private readonly _instantiationService: IInstantiationService + ) { + super(); + } + + protected async _provideLinks(y: number): Promise { + let startLine = y - 1; + let endLine = startLine; + + const lines: IBufferLine[] = [ + this._xterm.buffer.active.getLine(startLine)! + ]; + + while (this._xterm.buffer.active.getLine(startLine)?.isWrapped) { + lines.unshift(this._xterm.buffer.active.getLine(startLine - 1)!); + startLine--; + } + + while (this._xterm.buffer.active.getLine(endLine + 1)?.isWrapped) { + lines.push(this._xterm.buffer.active.getLine(endLine + 1)!); + endLine++; + } + + const lineContent = getXtermLineContent(this._xterm.buffer.active, startLine, endLine, this._xterm.cols); + const externalLinks = await this._externalLinkProvider.provideLinks(this._instance, lineContent); + if (!externalLinks) { + return []; + } + + return externalLinks.map(link => { + const bufferRange = convertLinkRangeToBuffer(lines, this._xterm.cols, { + startColumn: link.startIndex + 1, + startLineNumber: 1, + endColumn: link.startIndex + link.length + 1, + endLineNumber: 1 + }, startLine); + const matchingText = lineContent.substr(link.startIndex, link.length) || ''; + return this._instantiationService.createInstance(TerminalLink, bufferRange, matchingText, this._xterm.buffer.active.viewportY, (_, text) => link.activate(text), this._tooltipCallback, true, link.label); + }); + } +} diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts index 208b05dbed9..cfb59efb2bf 100644 --- a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts @@ -5,7 +5,7 @@ import * as nls from 'vs/nls'; import { URI } from 'vs/base/common/uri'; -import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle'; +import { DisposableStore, IDisposable, dispose } from 'vs/base/common/lifecycle'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import { TerminalWidgetManager } from 'vs/workbench/contrib/terminal/browser/widgets/widgetManager'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -13,10 +13,10 @@ import { ITerminalProcessManager, ITerminalConfiguration, TERMINAL_CONFIG_SECTIO import { ITextEditorSelection } from 'vs/platform/editor/common/editor'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IFileService } from 'vs/platform/files/common/files'; -import { Terminal, IViewportRange } from 'xterm'; +import { Terminal, IViewportRange, ILinkProvider } from 'xterm'; import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; import { posix, win32 } from 'vs/base/common/path'; -import { ITerminalBeforeHandleLinkEvent, LINK_INTERCEPT_THRESHOLD } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalBeforeHandleLinkEvent, LINK_INTERCEPT_THRESHOLD, ITerminalExternalLinkProvider, ITerminalInstance } from 'vs/workbench/contrib/terminal/browser/terminal'; import { OperatingSystem, isMacintosh, OS } from 'vs/base/common/platform'; import { IMarkdownString, MarkdownString } from 'vs/base/common/htmlContent'; import { Emitter, Event } from 'vs/base/common/event'; @@ -28,6 +28,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { XTermCore } from 'vs/workbench/contrib/terminal/browser/xterm-private'; import { TerminalHover, ILinkHoverTargetOptions } from 'vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget'; import { TerminalLink } from 'vs/workbench/contrib/terminal/browser/links/terminalLink'; +import { TerminalExternalLinkProviderAdapter } from 'vs/workbench/contrib/terminal/browser/links/terminalExternalLinkProviderAdapter'; export type XtermLinkMatcherHandler = (event: MouseEvent | undefined, link: string) => Promise; export type XtermLinkMatcherValidationCallback = (uri: string, callback: (isValid: boolean) => void) => void; @@ -43,8 +44,9 @@ interface IPath { export class TerminalLinkManager extends DisposableStore { private _widgetManager: TerminalWidgetManager | undefined; private _processCwd: string | undefined; - private _linkProviders: IDisposable[] = []; private _hasBeforeHandleLinkListeners = false; + private _standardLinkProviders: ILinkProvider[] = []; + private _standardLinkProvidersDisposables: IDisposable[] = []; protected static _LINK_INTERCEPT_THRESHOLD = LINK_INTERCEPT_THRESHOLD; public static readonly LINK_INTERCEPT_THRESHOLD = TerminalLinkManager._LINK_INTERCEPT_THRESHOLD; @@ -72,7 +74,29 @@ export class TerminalLinkManager extends DisposableStore { ) { super(); - this.registerLinkProvider(); + // Protocol links + const wrappedActivateCallback = this._wrapLinkHandler((_, link) => this._handleProtocolLink(link)); + const protocolProvider = this._instantiationService.createInstance(TerminalProtocolLinkProvider, this._xterm, wrappedActivateCallback, this._tooltipCallback2.bind(this)); + this._standardLinkProviders.push(protocolProvider); + + // Validated local links + if (this._configurationService.getValue(TERMINAL_CONFIG_SECTION).enableFileLinks) { + const wrappedTextLinkActivateCallback = this._wrapLinkHandler((_, link) => this._handleLocalLink(link)); + const validatedProvider = this._instantiationService.createInstance(TerminalValidatedLocalLinkProvider, + this._xterm, + this._processManager.os || OS, + wrappedTextLinkActivateCallback, + this._wrapLinkHandler.bind(this), + this._tooltipCallback2.bind(this), + async (link, cb) => cb(await this._resolvePath(link))); + this._standardLinkProviders.push(validatedProvider); + } + + // Word links + const wordProvider = this._instantiationService.createInstance(TerminalWordLinkProvider, this._xterm, this._wrapLinkHandler.bind(this), this._tooltipCallback2.bind(this)); + this._standardLinkProviders.push(wordProvider); + + this._registerStandardLinkProviders(); } private _tooltipCallback2(link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) { @@ -123,28 +147,20 @@ export class TerminalLinkManager extends DisposableStore { this._processCwd = processCwd; } - public registerLinkProvider(): void { - // Protocol links - const wrappedActivateCallback = this._wrapLinkHandler((_, link) => this._handleProtocolLink(link)); - const protocolProvider = this._instantiationService.createInstance(TerminalProtocolLinkProvider, this._xterm, wrappedActivateCallback, this._tooltipCallback2.bind(this)); - this._linkProviders.push(this._xterm.registerLinkProvider(protocolProvider)); - - // Validated local links - if (this._configurationService.getValue(TERMINAL_CONFIG_SECTION).enableFileLinks) { - const wrappedTextLinkActivateCallback = this._wrapLinkHandler((_, link) => this._handleLocalLink(link)); - const validatedProvider = this._instantiationService.createInstance(TerminalValidatedLocalLinkProvider, - this._xterm, - this._processManager.os || OS, - wrappedTextLinkActivateCallback, - this._wrapLinkHandler.bind(this), - this._tooltipCallback2.bind(this), - async (link, cb) => cb(await this._resolvePath(link))); - this._linkProviders.push(this._xterm.registerLinkProvider(validatedProvider)); + private _registerStandardLinkProviders(): void { + dispose(this._standardLinkProvidersDisposables); + this._standardLinkProvidersDisposables = []; + for (const p of this._standardLinkProviders) { + this._standardLinkProvidersDisposables.push(this._xterm.registerLinkProvider(p)); } + } - // Word links - const wordProvider = this._instantiationService.createInstance(TerminalWordLinkProvider, this._xterm, this._wrapLinkHandler.bind(this), this._tooltipCallback2.bind(this)); - this._linkProviders.push(this._xterm.registerLinkProvider(wordProvider)); + public registerExternalLinkProvider(instance: ITerminalInstance, linkProvider: ITerminalExternalLinkProvider): IDisposable { + const wrappedLinkProvider = this._instantiationService.createInstance(TerminalExternalLinkProviderAdapter, this._xterm, instance, linkProvider, this._tooltipCallback2.bind(this)); + const newLinkProvider = this._xterm.registerLinkProvider(wrappedLinkProvider); + // Re-register the standard link providers so they are a lower priority that the new one + this._registerStandardLinkProviders(); + return newLinkProvider; } protected _wrapLinkHandler(handler: (event: MouseEvent | undefined, link: string) => void): XtermLinkMatcherHandler { @@ -255,7 +271,8 @@ export class TerminalLinkManager extends DisposableStore { } } - return new MarkdownString(`[${label || nls.localize('followLink', "Follow Link")}](${uri}) (${clickLabel})`, true); + // Use 'undefined' when uri is '' so the link displays correctly + return new MarkdownString(`[${label || nls.localize('followLink', "Follow Link")}](${uri || 'undefined'}) (${clickLabel})`, true); } private get osPath(): IPath { diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index 8b6d089f44c..39098571234 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -144,6 +144,14 @@ export interface ITerminalService { */ addLinkHandler(key: string, callback: TerminalLinkHandlerCallback): IDisposable; + /** + * Registers a link provider that enables integrators to add links to the terminal. + * @param linkProvider When registered, the link provider is asked whenever a cell is hovered + * for links at that position. This lets the terminal know all links at a given area and also + * labels for what these links are going to do. + */ + registerLinkProvider(linkProvider: ITerminalExternalLinkProvider): IDisposable; + selectDefaultShell(): Promise; setContainers(panelContainer: HTMLElement, terminalContainer: HTMLElement): void; @@ -165,22 +173,37 @@ export interface ITerminalService { requestStartExtensionTerminal(proxy: ITerminalProcessExtHostProxy, cols: number, rows: number): Promise; } +/** + * Similar to xterm.js' ILinkProvider but using promises and hides xterm.js internals (like buffer + * positions, decorations, etc.) from the rest of vscode. This is the interface to use for + * workbench integrations. + */ +export interface ITerminalExternalLinkProvider { + provideLinks(instance: ITerminalInstance, line: string): Promise; +} + +export interface ITerminalLink { + /** The startIndex of the link in the line. */ + startIndex: number; + /** The length of the link in the line. */ + length: number; + /** The descriptive label for what the link does when activated. */ + label?: string; + /** + * Activates the link. + * @param text The text of the link. + */ + activate(text: string): void; +} + export interface ISearchOptions { - /** - * Whether the find should be done as a regex. - */ + /** Whether the find should be done as a regex. */ regex?: boolean; - /** - * Whether only whole words should match. - */ + /** Whether only whole words should match. */ wholeWord?: boolean; - /** - * Whether find should pay attention to case. - */ + /** Whether find should pay attention to case. */ caseSensitive?: boolean; - /** - * Whether the search should start at the current search position (not the next row) - */ + /** Whether the search should start at the current search position (not the next row). */ incremental?: boolean; } @@ -234,6 +257,7 @@ export interface ITerminalInstance { onFocused: Event; onProcessIdReady: Event; + onLinksReady: Event; onRequestExtHostProcess: Event; onDimensionsChanged: Event; onMaximumDimensionsChanged: Event; @@ -272,6 +296,9 @@ export interface ITerminalInstance { readonly exitCode: number | undefined; + readonly areLinksReady: boolean; + + /** A promise that resolves when the terminal's pty/process have been created. */ processReady: Promise; /** @@ -480,4 +507,9 @@ export interface ITerminalInstance { getInitialCwd(): Promise; getCwd(): Promise; + + /** + * @throws when called before xterm.js is ready. + */ + registerLinkProvider(provider: ITerminalExternalLinkProvider): IDisposable; } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts b/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts index 71f2e6af2d7..66607c6e13a 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts @@ -214,7 +214,7 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper { const shellArgsConfigValue = this._configurationService.inspect(`terminal.integrated.shellArgs.${platformKey}`); const envConfigValue = this._configurationService.inspect<{ [key: string]: string }>(`terminal.integrated.env.${platformKey}`); - // Check if workspace setting exists and whether it's whitelisted + // Check if workspace setting exists and whether it's allowed let isWorkspaceShellAllowed: boolean | undefined = false; if (shellConfigValue.workspaceValue !== undefined || shellArgsConfigValue.workspaceValue !== undefined || envConfigValue.workspaceValue !== undefined) { isWorkspaceShellAllowed = this.isWorkspaceShellAllowed(undefined); @@ -226,7 +226,7 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper { isWorkspaceShellAllowed = true; } - // Check if the value is neither blacklisted (false) or whitelisted (true) and ask for + // Check if the value is neither on the blocklist (false) or allowlist (true) and ask for // permission if (isWorkspaceShellAllowed === undefined) { let shellString: string | undefined; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index 8f959495c54..fcfa7758d3c 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -30,7 +30,7 @@ import { ansiColorIdentifiers, TERMINAL_BACKGROUND_COLOR, TERMINAL_CURSOR_BACKGR import { TerminalConfigHelper } from 'vs/workbench/contrib/terminal/browser/terminalConfigHelper'; import { TerminalLinkManager } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkManager'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; -import { ITerminalInstanceService, ITerminalInstance, TerminalShellType, WindowsShellType, ITerminalBeforeHandleLinkEvent } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalInstanceService, ITerminalInstance, TerminalShellType, WindowsShellType, ITerminalBeforeHandleLinkEvent, ITerminalExternalLinkProvider } from 'vs/workbench/contrib/terminal/browser/terminal'; import { TerminalProcessManager } from 'vs/workbench/contrib/terminal/browser/terminalProcessManager'; import { Terminal as XTermTerminal, IBuffer, ITerminalAddon } from 'xterm'; import { SearchAddon, ISearchOptions } from 'xterm-addon-search'; @@ -95,6 +95,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { private _xtermReadyPromise: Promise; private _titleReadyPromise: Promise; private _titleReadyComplete: ((title: string) => any) | undefined; + private _areLinksReady: boolean = false; private _messageTitleDisposable: IDisposable | undefined; @@ -127,6 +128,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { // TODO: How does this work with detached processes? // TODO: Should this be an event as it can fire twice? public get processReady(): Promise { return this._processManager.ptyProcessReady; } + public get areLinksReady(): boolean { return this._areLinksReady; } public get exitCode(): number | undefined { return this._exitCode; } public get title(): string { return this._title; } public get hadFocusOnExit(): boolean { return this._hadFocusOnExit; } @@ -144,6 +146,8 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { public get onFocused(): Event { return this._onFocused.event; } private readonly _onProcessIdReady = new Emitter(); public get onProcessIdReady(): Event { return this._onProcessIdReady.event; } + private readonly _onLinksReady = new Emitter(); + public get onLinksReady(): Event { return this._onLinksReady.event; } private readonly _onTitleChanged = new Emitter(); public get onTitleChanged(): Event { return this._onTitleChanged.event; } private readonly _onData = new Emitter(); @@ -201,7 +205,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this._logService.trace(`terminalInstance#ctor (id: ${this.id})`, this._shellLaunchConfig); this._initDimensions(); - this._createProcess(); + this._createProcessManager(); this._xtermReadyPromise = this._createXterm(); this._xtermReadyPromise.then(() => { @@ -209,6 +213,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { if (_container) { this._attachToElement(_container); } + this._createProcess(); }); this.addDisposable(this._configurationService.onDidChangeConfiguration(e => { @@ -416,6 +421,8 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { e.terminal = this; this._onBeforeHandleLink.fire(e); }); + this._areLinksReady = true; + this._onLinksReady.fire(this); }); this._commandTrackerAddon = new CommandTrackerAddon(); @@ -868,9 +875,11 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this._terminalHasTextContextKey.set(isActive && this.hasSelection()); } - protected _createProcess(): void { + protected _createProcessManager(): void { this._processManager = this._instantiationService.createInstance(TerminalProcessManager, this._id, this._configHelper); - this._processManager.onProcessReady(() => this._onProcessIdReady.fire(this)); + this._processManager.onProcessReady(() => { + this._onProcessIdReady.fire(this); + }); this._processManager.onProcessExit(exitCode => this._onProcessExit(exitCode)); this._processManager.onProcessData(data => this._onData.fire(data)); this._processManager.onProcessOverrideDimensions(e => this.setDimensions(e)); @@ -914,9 +923,9 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { }); }); } + } - // Create the process asynchronously to allow the terminal's container to be created so - // dimensions are accurate + private _createProcess(): void { this._processManager.createProcess(this._shellLaunchConfig, this._cols, this._rows, this._accessibilityService.isScreenReaderOptimized()).then(error => { if (error) { this._onProcessExit(error); @@ -1108,13 +1117,14 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { // Launch the process unless this is only a renderer. // In the renderer only cases, we still need to set the title correctly. const oldTitle = this._title; - this._createProcess(); + this._createProcessManager(); if (oldTitle !== this._title) { this.setTitle(this._title, TitleEventSource.Process); } this._processManager.onProcessData(data => this._onProcessData(data)); + this._createProcess(); } public relaunch(): void { @@ -1492,6 +1502,13 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { public getCwd(): Promise { return this._processManager.getCwd(); } + + public registerLinkProvider(provider: ITerminalExternalLinkProvider): IDisposable { + if (!this._linkManager) { + throw new Error('TerminalInstance.registerLinkProvider before link manager was ready'); + } + return this._linkManager.registerExternalLinkProvider(this, provider); + } } registerThemingParticipant((theme: IColorTheme, collector: ICssStyleCollector) => { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 5fc901882ea..802883f5f93 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -14,7 +14,7 @@ import { TerminalTab } from 'vs/workbench/contrib/terminal/browser/terminalTab'; import { IInstantiationService, optional } from 'vs/platform/instantiation/common/instantiation'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { TerminalInstance } from 'vs/workbench/contrib/terminal/browser/terminalInstance'; -import { ITerminalService, ITerminalInstance, ITerminalTab, TerminalShellType, WindowsShellType, TerminalLinkHandlerCallback, LINK_INTERCEPT_THRESHOLD } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalService, ITerminalInstance, ITerminalTab, TerminalShellType, WindowsShellType, TerminalLinkHandlerCallback, LINK_INTERCEPT_THRESHOLD, ITerminalExternalLinkProvider } from 'vs/workbench/contrib/terminal/browser/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { TerminalConfigHelper } from 'vs/workbench/contrib/terminal/browser/terminalConfigHelper'; import { IQuickInputService, IQuickPickItem, IPickOptions } from 'vs/platform/quickinput/common/quickInput'; @@ -54,6 +54,8 @@ export class TerminalService implements ITerminalService { private _extHostsReady: { [authority: string]: IExtHostReadyEntry | undefined } = {}; private _activeTabIndex: number; private _linkHandlers: { [key: string]: TerminalLinkHandlerCallback } = {}; + private _linkProviders: Set = new Set(); + private _linkProviderDisposables: Map = new Map(); public get activeTabIndex(): number { return this._activeTabIndex; } public get terminalInstances(): ITerminalInstance[] { return this._terminalInstances; } @@ -72,6 +74,8 @@ export class TerminalService implements ITerminalService { public get onInstanceDisposed(): Event { return this._onInstanceDisposed.event; } private readonly _onInstanceProcessIdReady = new Emitter(); public get onInstanceProcessIdReady(): Event { return this._onInstanceProcessIdReady.event; } + private readonly _onInstanceLinksReady = new Emitter(); + public get onInstanceLinksReady(): Event { return this._onInstanceLinksReady.event; } private readonly _onInstanceRequestSpawnExtHostProcess = new Emitter(); public get onInstanceRequestSpawnExtHostProcess(): Event { return this._onInstanceRequestSpawnExtHostProcess.event; } private readonly _onInstanceRequestStartExtensionTerminal = new Emitter(); @@ -128,6 +132,7 @@ export class TerminalService implements ITerminalService { const instance = this.getActiveInstance(); this._onActiveInstanceChanged.fire(instance ? instance : undefined); }); + this.onInstanceLinksReady(instance => this._setInstanceLinkProviders(instance)); this._handleContextKeys(); } @@ -429,6 +434,7 @@ export class TerminalService implements ITerminalService { instance.addDisposable(instance.onDisposed(this._onInstanceDisposed.fire, this._onInstanceDisposed)); instance.addDisposable(instance.onTitleChanged(this._onInstanceTitleChanged.fire, this._onInstanceTitleChanged)); instance.addDisposable(instance.onProcessIdReady(this._onInstanceProcessIdReady.fire, this._onInstanceProcessIdReady)); + instance.addDisposable(instance.onLinksReady(this._onInstanceLinksReady.fire, this._onInstanceLinksReady)); instance.addDisposable(instance.onDimensionsChanged(() => this._onInstanceDimensionsChanged.fire(instance))); instance.addDisposable(instance.onMaximumDimensionsChanged(() => this._onInstanceMaximumDimensionsChanged.fire(instance))); instance.addDisposable(instance.onFocus(this._onActiveInstanceChanged.fire, this._onActiveInstanceChanged)); @@ -478,6 +484,34 @@ export class TerminalService implements ITerminalService { }; } + public registerLinkProvider(linkProvider: ITerminalExternalLinkProvider): IDisposable { + const disposables: IDisposable[] = []; + this._linkProviders.add(linkProvider); + for (const instance of this.terminalInstances) { + if (instance.areLinksReady) { + disposables.push(instance.registerLinkProvider(linkProvider)); + } + } + this._linkProviderDisposables.set(linkProvider, disposables); + return { + dispose: () => { + const disposables = this._linkProviderDisposables.get(linkProvider) || []; + for (const disposable of disposables) { + disposable.dispose(); + } + this._linkProviders.delete(linkProvider); + } + }; + } + + private _setInstanceLinkProviders(instance: ITerminalInstance): void { + for (const linkProvider of this._linkProviders) { + const disposables = this._linkProviderDisposables.get(linkProvider); + const provider = instance.registerLinkProvider(linkProvider); + disposables?.push(provider); + } + } + private _getTabForInstance(instance: ITerminalInstance): ITerminalTab | undefined { return find(this._terminalTabs, tab => tab.terminalInstances.indexOf(instance) !== -1); } diff --git a/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts b/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts index be7027f563f..3bd49844533 100644 --- a/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts +++ b/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts @@ -11,7 +11,7 @@ import { RunOnceScheduler } from 'vs/base/common/async'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import * as dom from 'vs/base/browser/dom'; import { IDisposable } from 'vs/base/common/lifecycle'; -import { IHoverService, IHoverOptions } from 'vs/workbench/contrib/hover/browser/hover'; +import { IHoverService, IHoverOptions } from 'vs/workbench/services/hover/browser/hover'; export class EnvironmentVariableInfoWidget extends Widget implements ITerminalWidget { readonly id = 'env-var-info'; diff --git a/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts b/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts index 460f320761e..121573ea0f5 100644 --- a/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts +++ b/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts @@ -9,7 +9,7 @@ import { Widget } from 'vs/base/browser/ui/widget'; import { ITerminalWidget } from 'vs/workbench/contrib/terminal/browser/widgets/widgets'; import * as dom from 'vs/base/browser/dom'; import { IViewportRange } from 'xterm'; -import { IHoverTarget, IHoverService } from 'vs/workbench/contrib/hover/browser/hover'; +import { IHoverTarget, IHoverService } from 'vs/workbench/services/hover/browser/hover'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { editorHoverHighlight } from 'vs/platform/theme/common/colorRegistry'; diff --git a/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts b/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts index a362d720738..33aca264cf7 100644 --- a/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts +++ b/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts @@ -48,7 +48,7 @@ export async function getMainProcessParentEnv(): Promise { // For macOS we want the "root" environment as shells by default run as login shells. It // doesn't appear to be possible to get the "root" environment as `ps eww -o command` for // PID 1 (the parent of the main process when launched from the dock/finder) returns no - // environment, because of this we will fill in the root environment using a whitelist of + // environment, because of this we will fill in the root environment using a allowlist of // environment variables that we have. if (isMacintosh) { mainProcessParentEnv = {}; @@ -129,4 +129,4 @@ export async function findExecutable(command: string, cwd?: string, paths?: stri } const fullPath = path.join(cwd, command); return await exists(fullPath) ? fullPath : undefined; -} \ No newline at end of file +} diff --git a/src/vs/workbench/contrib/timeline/browser/timelinePane.ts b/src/vs/workbench/contrib/timeline/browser/timelinePane.ts index 9edb19c78cb..9eb51448f22 100644 --- a/src/vs/workbench/contrib/timeline/browser/timelinePane.ts +++ b/src/vs/workbench/contrib/timeline/browser/timelinePane.ts @@ -347,7 +347,7 @@ export class TimelinePane extends ViewPane { const editor = this.editorService.activeEditor; if (editor) { - uri = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + uri = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); } if ((uri?.toString(true) === this.uri?.toString(true) && uri !== undefined) || diff --git a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts index 2ad3de14e65..f29590ead7d 100644 --- a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts +++ b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts @@ -143,6 +143,8 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo this._register(userDataSyncService.onDidChangeConflicts(() => this.onDidChangeConflicts(this.userDataSyncService.conflicts))); this._register(userDataSyncService.onSyncErrors(errors => this.onSynchronizerErrors(errors))); this._register(userDataAutoSyncService.onError(error => this.onAutoSyncError(error))); + this._register(userDataAutoSyncService.onTurnOnSync(() => this.turningOnSync = true)); + this._register(userDataAutoSyncService.onDidTurnOnSync(() => this.turningOnSync = false)); this.registerActions(); this.registerViews(); @@ -176,7 +178,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo // close stale conflicts editor previews if (conflictsEditorInputs.length) { conflictsEditorInputs.forEach(input => { - if (!conflicts.some(({ local }) => isEqual(local, input.master.resource))) { + if (!conflicts.some(({ local }) => isEqual(local, input.primary.resource))) { input.dispose(); } }); @@ -338,7 +340,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo return; } const resource = source === SyncResource.Settings ? this.workbenchEnvironmentService.settingsResource : this.workbenchEnvironmentService.keybindingsResource; - if (isEqual(resource, toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }))) { + if (isEqual(resource, toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }))) { // Do not show notification if the file in error is active return; } @@ -402,7 +404,6 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo } private async turnOn(): Promise { - this.turningOnSync = true; try { if (!this.storageService.getBoolean('sync.donotAskPreviewConfirmation', StorageScope.GLOBAL, false)) { if (!await this.askForConfirmation()) { @@ -438,8 +439,6 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo } } this.notificationService.error(localize('turn on failed', "Error while starting Sync: {0}", toErrorMessage(e))); - } finally { - this.turningOnSync = false; } } @@ -591,14 +590,14 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo private getConflictsEditorInputs(syncResource: SyncResource): DiffEditorInput[] { return this.editorService.editors.filter(input => { - const resource = input instanceof DiffEditorInput ? input.master.resource : input.resource; + const resource = input instanceof DiffEditorInput ? input.primary.resource : input.resource; return resource && getSyncResourceFromLocalPreview(resource!, this.workbenchEnvironmentService) === syncResource; }) as DiffEditorInput[]; } private getAllConflictsEditorInputs(): IEditorInput[] { return this.editorService.editors.filter(input => { - const resource = input instanceof DiffEditorInput ? input.master.resource : input.resource; + const resource = input instanceof DiffEditorInput ? input.primary.resource : input.resource; return resource && getSyncResourceFromLocalPreview(resource!, this.workbenchEnvironmentService) !== undefined; }); } diff --git a/src/vs/workbench/contrib/userDataSync/electron-browser/userDataAutoSyncService.ts b/src/vs/workbench/contrib/userDataSync/electron-browser/userDataAutoSyncService.ts index fb778ec18af..bf841f93119 100644 --- a/src/vs/workbench/contrib/userDataSync/electron-browser/userDataAutoSyncService.ts +++ b/src/vs/workbench/contrib/userDataSync/electron-browser/userDataAutoSyncService.ts @@ -18,6 +18,8 @@ export class UserDataAutoSyncService extends UserDataAutoSyncEnablementService i declare readonly _serviceBrand: undefined; private readonly channel: IChannel; + get onTurnOnSync(): Event { return this.channel.listen('onTurnOnSync'); } + get onDidTurnOnSync(): Event { return Event.map(this.channel.listen('onDidTurnOnSync'), e => e ? UserDataSyncError.toUserDataSyncError(e) : undefined); } get onError(): Event { return Event.map(this.channel.listen('onError'), e => UserDataSyncError.toUserDataSyncError(e)); } constructor( diff --git a/src/vs/workbench/contrib/webview/browser/pre/host.js b/src/vs/workbench/contrib/webview/browser/pre/host.js index 4015cadcc3e..54f9b454bf3 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/host.js +++ b/src/vs/workbench/contrib/webview/browser/pre/host.js @@ -90,14 +90,17 @@ } } - (/** @type {any} */ (window)).createWebviewManager({ + /** @type {import('./main').WebviewHost} */ + const host = { postMessage: hostMessaging.postMessage.bind(hostMessaging), onMessage: hostMessaging.onMessage.bind(hostMessaging), ready: workerReady, fakeLoad: true, rewriteCSP: (csp, endpoint) => { const endpointUrl = new URL(endpoint); - csp.setAttribute('content', csp.replace(/(vscode-webview-resource|vscode-resource):(?=(\s|;|$))/g, endpointUrl.origin)); + return csp.replace(/(vscode-webview-resource|vscode-resource):(?=(\s|;|$))/g, endpointUrl.origin); } - }); + }; + + (/** @type {any} */ (window)).createWebviewManager(host); }()); diff --git a/src/vs/workbench/contrib/webview/browser/pre/main.js b/src/vs/workbench/contrib/webview/browser/pre/main.js index 3b683f5ea47..4ee58ff8c0e 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/main.js +++ b/src/vs/workbench/contrib/webview/browser/pre/main.js @@ -367,7 +367,7 @@ try { csp.setAttribute('content', host.rewriteCSP(csp.getAttribute('content'), data.endpoint)); } catch (e) { - console.error('Could not rewrite csp'); + console.error(`Could not rewrite csp: ${e}`); } } diff --git a/src/vs/workbench/contrib/webview/browser/webviewCommands.ts b/src/vs/workbench/contrib/webview/browser/webviewCommands.ts index 9f949d73926..3ed7a1964cb 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewCommands.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewCommands.ts @@ -32,7 +32,7 @@ export class ShowWebViewEditorFindWidgetAction extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.showFind(); + getFocusedWebviewEditor(accessor)?.showFind(); } } @@ -53,7 +53,7 @@ export class HideWebViewEditorFindCommand extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.hideFind(); + getFocusedWebviewEditor(accessor)?.hideFind(); } } @@ -74,7 +74,7 @@ export class WebViewEditorFindNextCommand extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.runFindAction(false); + getFocusedWebviewEditor(accessor)?.runFindAction(false); } } @@ -95,7 +95,7 @@ export class WebViewEditorFindPreviousCommand extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.runFindAction(true); + getFocusedWebviewEditor(accessor)?.runFindAction(true); } } @@ -117,7 +117,7 @@ export class SelectAllWebviewEditorCommand extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.selectAll(); + getFocusedWebviewEditor(accessor)?.selectAll(); } } @@ -142,8 +142,8 @@ export class ReloadWebviewAction extends Action { } } -export function getActiveWebviewEditor(accessor: ServicesAccessor): Webview | undefined { +export function getFocusedWebviewEditor(accessor: ServicesAccessor): Webview | undefined { const editorService = accessor.get(IEditorService); - const activeEditor = editorService.activeEditor; + const activeEditor = editorService.activeEditorPane; return activeEditor instanceof WebviewInput ? activeEditor.webview : undefined; } diff --git a/src/vs/workbench/contrib/webview/browser/webviewEditor.ts b/src/vs/workbench/contrib/webview/browser/webviewEditor.ts index 381feea138d..c6aa9b647d1 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewEditor.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewEditor.ts @@ -12,11 +12,11 @@ import { IStorageService } from 'vs/platform/storage/common/storage'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; -import { EditorPart } from 'vs/workbench/browser/parts/editor/editorPart'; +import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorDropService'; import { EditorInput, EditorOptions } from 'vs/workbench/common/editor'; import { WebviewOverlay } from 'vs/workbench/contrib/webview/browser/webview'; import { WebviewInput } from 'vs/workbench/contrib/webview/browser/webviewEditorInput'; -import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; +import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IHostService } from 'vs/workbench/services/host/browser/host'; @@ -39,7 +39,7 @@ export class WebviewEditor extends BaseEditor { @IThemeService themeService: IThemeService, @IStorageService storageService: IStorageService, @IEditorService private readonly _editorService: IEditorService, - @IEditorGroupsService private readonly _editorGroupsService: IEditorGroupsService, + @IEditorDropService private readonly _editorDropService: IEditorDropService, @IHostService private readonly _hostService: IHostService, ) { super(WebviewEditor.ID, telemetryService, themeService, storageService); @@ -146,11 +146,9 @@ export class WebviewEditor extends BaseEditor { this._webviewVisibleDisposables.clear(); // Webviews are not part of the normal editor dom, so we have to register our own drag and drop handler on them. - if (this._editorGroupsService instanceof EditorPart) { - this._webviewVisibleDisposables.add(this._editorGroupsService.createEditorDropTarget(input.webview.container, { - groupContainsPredicate: (group) => this.group?.id === group.group.id - })); - } + this._webviewVisibleDisposables.add(this._editorDropService.createEditorDropTarget(input.webview.container, { + containsGroup: (group) => this.group?.id === group.group.id + })); this._webviewVisibleDisposables.add(DOM.addDisposableListener(window, DOM.EventType.DRAG_START, () => { this.webview?.windowDidDragStart(); diff --git a/src/vs/workbench/contrib/webview/browser/webviewElement.ts b/src/vs/workbench/contrib/webview/browser/webviewElement.ts index d0832a18897..86f12969b72 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewElement.ts @@ -4,7 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { addDisposableListener } from 'vs/base/browser/dom'; +import { streamToBuffer } from 'vs/base/common/buffer'; import { IDisposable } from 'vs/base/common/lifecycle'; +import { Schemas } from 'vs/base/common/network'; import { isWeb } from 'vs/base/common/platform'; import { URI } from 'vs/base/common/uri'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -12,7 +14,9 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment' import { IFileService } from 'vs/platform/files/common/files'; import { ILogService } from 'vs/platform/log/common/log'; import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; +import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; import { ITunnelService } from 'vs/platform/remote/common/tunnel'; +import { IRequestService } from 'vs/platform/request/common/request'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { loadLocalResource, WebviewResourceResponse } from 'vs/platform/webview/common/resourceLoader'; import { WebviewPortMappingManager } from 'vs/platform/webview/common/webviewPortMapping'; @@ -32,6 +36,7 @@ export class IFrameWebview extends BaseWebview implements Web webviewThemeDataProvider: WebviewThemeDataProvider, @ITunnelService tunnelService: ITunnelService, @IFileService private readonly fileService: IFileService, + @IRequestService private readonly requestService: IRequestService, @IConfigurationService private readonly _configurationService: IConfigurationService, @ITelemetryService telemetryService: ITelemetryService, @IEnvironmentService environmentService: IEnvironmentService, @@ -141,15 +146,42 @@ export class IFrameWebview extends BaseWebview implements Web private async loadResource(requestPath: string, uri: URI) { try { - const result = await loadLocalResource(uri, this.fileService, this.extension ? this.extension.location : undefined, - this.content.options.localResourceRoots || []); + const remoteAuthority = this._workbenchEnvironmentService.configuration.remoteAuthority; + const remoteConnectionData = remoteAuthority ? this._remoteAuthorityResolverService.getConnectionData(remoteAuthority) : null; + const extensionLocation = this.extension?.location; + + // If we are loading a file resource from a remote extension, rewrite the uri to go remote + let rewriteUri: undefined | ((uri: URI) => URI); + if (extensionLocation?.scheme === REMOTE_HOST_SCHEME) { + rewriteUri = (uri) => { + if (uri.scheme === Schemas.file && extensionLocation?.scheme === REMOTE_HOST_SCHEME) { + return URI.from({ + scheme: REMOTE_HOST_SCHEME, + authority: extensionLocation.authority, + path: '/vscode-resource', + query: JSON.stringify({ + requestResourcePath: uri.path + }) + }); + } + return uri; + }; + } + + const result = await loadLocalResource(uri, { + extensionLocation: extensionLocation, + roots: this.content.options.localResourceRoots || [], + remoteConnectionData, + rewriteUri, + }, this.fileService, this.requestService); if (result.type === WebviewResourceResponse.Type.Success) { + const { buffer } = await streamToBuffer(result.stream); return this._send('did-load-resource', { status: 200, path: requestPath, mime: result.mimeType, - data: result.buffer.buffer, + data: buffer, }); } } catch { diff --git a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts index ed4ad60e2ed..56d95808d70 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts @@ -4,15 +4,18 @@ *--------------------------------------------------------------------------------------------*/ import { isMacintosh } from 'vs/base/common/platform'; -import { SyncActionDescriptor, registerAction2 } from 'vs/platform/actions/common/actions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { CopyAction, CutAction, PasteAction } from 'vs/editor/contrib/clipboard/clipboard'; +import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { Registry } from 'vs/platform/registry/common/platform'; import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/workbench/common/actions'; -import { IWebviewService, webviewDeveloperCategory } from 'vs/workbench/contrib/webview/browser/webview'; -import { WebviewEditor } from 'vs/workbench/contrib/webview/browser/webviewEditor'; +import { IWebviewService, webviewDeveloperCategory, WebviewOverlay } from 'vs/workbench/contrib/webview/browser/webview'; +import { getFocusedWebviewEditor } from 'vs/workbench/contrib/webview/browser/webviewCommands'; import * as webviewCommands from 'vs/workbench/contrib/webview/electron-browser/webviewCommands'; +import { ElectronWebviewBasedWebview } from 'vs/workbench/contrib/webview/electron-browser/webviewElement'; import { ElectronWebviewService } from 'vs/workbench/contrib/webview/electron-browser/webviewService'; +import { UndoCommand, RedoCommand } from 'vs/editor/browser/editorExtensions'; registerSingleton(IWebviewService, ElectronWebviewService, true); @@ -23,17 +26,53 @@ actionRegistry.registerWorkbenchAction( webviewCommands.OpenWebviewDeveloperToolsAction.ALIAS, webviewDeveloperCategory); -function registerWebViewCommands(editorId: string): void { - const contextKeyExpr = ContextKeyExpr.and(ContextKeyExpr.equals('activeEditor', editorId), ContextKeyExpr.not('editorFocus') /* https://github.com/Microsoft/vscode/issues/58668 */)!; +if (isMacintosh) { + function getActiveElectronBasedWebview(accessor: ServicesAccessor): ElectronWebviewBasedWebview | undefined { + const webview = getFocusedWebviewEditor(accessor); + if (!webview) { + return undefined; + } - // These commands are only needed on MacOS where we have to disable the menu bar commands - if (isMacintosh) { - registerAction2(class extends webviewCommands.CopyWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); - registerAction2(class extends webviewCommands.PasteWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); - registerAction2(class extends webviewCommands.CutWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); - registerAction2(class extends webviewCommands.UndoWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); - registerAction2(class extends webviewCommands.RedoWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); + if (webview instanceof ElectronWebviewBasedWebview) { + return webview; + } else if ('getInnerWebview' in (webview as WebviewOverlay)) { + const innerWebview = (webview as WebviewOverlay).getInnerWebview(); + if (innerWebview instanceof ElectronWebviewBasedWebview) { + return innerWebview; + } + } + + return undefined; } -} -registerWebViewCommands(WebviewEditor.ID); + function withWebview(accessor: ServicesAccessor, f: (webviewe: ElectronWebviewBasedWebview) => void) { + const webview = getActiveElectronBasedWebview(accessor); + if (webview) { + f(webview); + return true; + } + return false; + } + + const PRIORITY = 100; + + UndoCommand.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.undo()); + }); + + RedoCommand.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.redo()); + }); + + CopyAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.copy()); + }); + + PasteAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.paste()); + }); + + CutAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.cut()); + }); +} diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts index 1486280626c..08ccb9be4d8 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts @@ -5,16 +5,7 @@ import { WebviewTag } from 'electron'; import { Action } from 'vs/base/common/actions'; -import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; -import { ServicesAccessor } from 'vs/editor/browser/editorExtensions'; import * as nls from 'vs/nls'; -import { Action2 } from 'vs/platform/actions/common/actions'; -import { ContextKeyExpr, ContextKeyExpression } from 'vs/platform/contextkey/common/contextkey'; -import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkeys'; -import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { WebviewOverlay, webviewHasOwnEditFunctionsContextKey } from 'vs/workbench/contrib/webview/browser/webview'; -import { getActiveWebviewEditor } from 'vs/workbench/contrib/webview/browser/webviewCommands'; -import { ElectronWebviewBasedWebview } from 'vs/workbench/contrib/webview/electron-browser/webviewElement'; export class OpenWebviewDeveloperToolsAction extends Action { static readonly ID = 'workbench.action.webview.openDeveloperTools'; @@ -37,128 +28,3 @@ export class OpenWebviewDeveloperToolsAction extends Action { return true; } } - -export class CopyWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.copy'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.copy', "Copy2"); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: CopyWebviewEditorCommand.ID, - title: CopyWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_C, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.copy(); - } -} - -export class PasteWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.paste'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.paste', 'Paste'); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: PasteWebviewEditorCommand.ID, - title: PasteWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_V, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.paste(); - } -} - -export class CutWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.cut'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.cut', 'Cut'); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: CutWebviewEditorCommand.ID, - title: CutWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_X, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.cut(); - } -} - -export class UndoWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.undo'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.undo', "Undo"); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: UndoWebviewEditorCommand.ID, - title: UndoWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey), ContextKeyExpr.not(webviewHasOwnEditFunctionsContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_Z, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.undo(); - } -} - -export class RedoWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.redo'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.redo', "Redo"); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: RedoWebviewEditorCommand.ID, - title: RedoWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey), ContextKeyExpr.not(webviewHasOwnEditFunctionsContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_Y, - secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z], - mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z }, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.redo(); - } -} - -function getActiveElectronBasedWebview(accessor: ServicesAccessor): ElectronWebviewBasedWebview | undefined { - const webview = getActiveWebviewEditor(accessor); - if (!webview) { - return undefined; - } - - if (webview instanceof ElectronWebviewBasedWebview) { - return webview; - } else if ('getInnerWebview' in (webview as WebviewOverlay)) { - const innerWebview = (webview as WebviewOverlay).getInnerWebview(); - if (innerWebview instanceof ElectronWebviewBasedWebview) { - return innerWebview; - } - } - - return undefined; -} diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index cbd9955eb0c..faad0d1cea1 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -138,7 +138,7 @@ export class NativeWindow extends Disposable { if (request.from === 'touchbar') { const activeEditor = this.editorService.activeEditor; if (activeEditor) { - const resource = toResource(activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { args.push(resource); } @@ -250,7 +250,7 @@ export class NativeWindow extends Disposable { // macOS OS integration if (isMacintosh) { this._register(this.editorService.onDidActiveEditorChange(() => { - const file = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: Schemas.file }); + const file = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY, filterByScheme: Schemas.file }); // Represented Filename this.updateRepresentedFilename(file?.fsPath); diff --git a/src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts b/src/vs/workbench/services/clipboard/electron-sandbox/clipboardService.ts similarity index 85% rename from src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts rename to src/vs/workbench/services/clipboard/electron-sandbox/clipboardService.ts index 7440bebc308..3df04d9e4cf 100644 --- a/src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts +++ b/src/vs/workbench/services/clipboard/electron-sandbox/clipboardService.ts @@ -4,11 +4,11 @@ *--------------------------------------------------------------------------------------------*/ import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; -import { clipboard } from 'electron'; import { URI } from 'vs/base/common/uri'; import { isMacintosh } from 'vs/base/common/platform'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IElectronService } from 'vs/platform/electron/electron-sandbox/electron'; +import { VSBuffer } from 'vs/base/common/buffer'; export class NativeClipboardService implements IClipboardService { @@ -52,13 +52,12 @@ export class NativeClipboardService implements IClipboardService { return this.bufferToResources(await this.electronService.readClipboardBuffer(NativeClipboardService.FILE_FORMAT)); } - async hasResources(): Promise { return this.electronService.hasClipboard(NativeClipboardService.FILE_FORMAT); } - private resourcesToBuffer(resources: URI[]): Buffer { - return Buffer.from(resources.map(r => r.toString()).join('\n')); + private resourcesToBuffer(resources: URI[]): Uint8Array { + return VSBuffer.fromString(resources.map(r => r.toString()).join('\n')).buffer; } private bufferToResources(buffer: Uint8Array): URI[] { @@ -77,22 +76,6 @@ export class NativeClipboardService implements IClipboardService { return []; // do not trust clipboard data } } - - /** @deprecated */ - readFindTextSync(): string { - if (isMacintosh) { - return clipboard.readFindText(); - } - - return ''; - } - - /** @deprecated */ - writeFindTextSync(text: string): void { - if (isMacintosh) { - clipboard.writeFindText(text); - } - } } registerSingleton(IClipboardService, NativeClipboardService, true); diff --git a/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts b/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts index 4cf2dddfdfb..15f0c38bb70 100644 --- a/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts +++ b/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts @@ -25,6 +25,7 @@ import { coalesce } from 'vs/base/common/arrays'; import { trim } from 'vs/base/common/strings'; import { IModeService } from 'vs/editor/common/services/modeService'; import { ILabelService } from 'vs/platform/label/common/label'; +import { isWindows } from 'vs/base/common/platform'; export abstract class AbstractFileDialogService implements IFileDialogService { @@ -254,7 +255,7 @@ export abstract class AbstractFileDialogService implements IFileDialogService { const options: ISaveDialogOptions = { defaultUri, title: nls.localize('saveAsTitle', "Save As"), - availableFileSystems, + availableFileSystems }; interface IFilter { name: string; extensions: string[]; } @@ -282,8 +283,12 @@ export abstract class AbstractFileDialogService implements IFileDialogService { // We have no matching filter, e.g. because the language // is unknown. We still add the extension to the list of // filters though so that it can be picked - // (https://github.com/microsoft/vscode/issues/96283) - if (!matchingFilter && ext) { + // (https://github.com/microsoft/vscode/issues/96283) but + // only on Windows where this is an issue. Adding this to + // macOS would result in the following bugs: + // https://github.com/microsoft/vscode/issues/100614 and + // https://github.com/microsoft/vscode/issues/100241 + if (isWindows && !matchingFilter && ext) { matchingFilter = { name: trim(ext, '.').toUpperCase(), extensions: [trim(ext, '.')] }; } diff --git a/src/vs/workbench/services/editor/browser/codeEditorService.ts b/src/vs/workbench/services/editor/browser/codeEditorService.ts index b1b93a22314..ad4d75f6caa 100644 --- a/src/vs/workbench/services/editor/browser/codeEditorService.ts +++ b/src/vs/workbench/services/editor/browser/codeEditorService.ts @@ -12,6 +12,7 @@ import { TextEditorOptions } from 'vs/workbench/common/editor'; import { ACTIVE_GROUP, IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { extUri } from 'vs/base/common/resources'; export class CodeEditorService extends CodeEditorServiceImpl { @@ -47,13 +48,13 @@ export class CodeEditorService extends CodeEditorServiceImpl { // side as separate editor. const activeTextEditorControl = this.editorService.activeTextEditorControl; if ( - !sideBySide && // we need the current active group to be the taret - isDiffEditor(activeTextEditorControl) && // we only support this for active text diff editors - input.options && // we need options to apply - input.resource && // we need a request resource to compare with - activeTextEditorControl.getModel() && // we need a target model to compare with - source === activeTextEditorControl.getModifiedEditor() && // we need the source of this request to be the modified side of the diff editor - input.resource.toString() === activeTextEditorControl.getModel()!.modified.uri.toString() // we need the input resources to match with modified side + !sideBySide && // we need the current active group to be the taret + isDiffEditor(activeTextEditorControl) && // we only support this for active text diff editors + input.options && // we need options to apply + input.resource && // we need a request resource to compare with + activeTextEditorControl.getModel() && // we need a target model to compare with + source === activeTextEditorControl.getModifiedEditor() && // we need the source of this request to be the modified side of the diff editor + extUri.isEqual(input.resource, activeTextEditorControl.getModel()!.modified.uri) // we need the input resources to match with modified side ) { const targetEditor = activeTextEditorControl.getModifiedEditor(); diff --git a/src/vs/workbench/services/editor/browser/editorDropService.ts b/src/vs/workbench/services/editor/browser/editorDropService.ts new file mode 100644 index 00000000000..c8d04f4ab35 --- /dev/null +++ b/src/vs/workbench/services/editor/browser/editorDropService.ts @@ -0,0 +1,20 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; +import { IDisposable } from 'vs/base/common/lifecycle'; +import { IEditorDropTargetDelegate } from 'vs/workbench/browser/parts/editor/editorDropTarget'; + +export const IEditorDropService = createDecorator('editorDropService'); + +export interface IEditorDropService { + + readonly _serviceBrand: undefined; + + /** + * Allows to register a drag and drop target for editors. + */ + createEditorDropTarget(container: HTMLElement, delegate: IEditorDropTargetDelegate): IDisposable; +} diff --git a/src/vs/workbench/services/editor/browser/editorService.ts b/src/vs/workbench/services/editor/browser/editorService.ts index 03ea2a933d3..4cd489bac56 100644 --- a/src/vs/workbench/services/editor/browser/editorService.ts +++ b/src/vs/workbench/services/editor/browser/editorService.ts @@ -34,7 +34,7 @@ import { UntitledTextEditorInput } from 'vs/workbench/services/untitled/common/u import { timeout } from 'vs/base/common/async'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { indexOfPath } from 'vs/base/common/extpath'; -import { DEFAULT_CUSTOM_EDITOR, updateViewTypeSchema, editorAssociationsConfigurationNode } from 'vs/workbench/services/editor/common/editorAssociationsSetting'; +import { DEFAULT_CUSTOM_EDITOR, updateViewTypeSchema, editorAssociationsConfigurationNode } from 'vs/workbench/services/editor/common/editorOpenWith'; import { Extensions as ConfigurationExtensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService'; import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; @@ -185,8 +185,8 @@ export class EditorService extends Disposable implements EditorServiceImpl { for (const editor of this.visibleEditors) { const resources = distinct(coalesce([ - toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }), - toResource(editor, { supportSideBySide: SideBySideEditor.DETAILS }) + toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }), + toResource(editor, { supportSideBySide: SideBySideEditor.SECONDARY }) ]), resource => resource.toString()); for (const resource of resources) { @@ -248,7 +248,7 @@ export class EditorService extends Disposable implements EditorServiceImpl { // Determine new resulting target resource let targetResource: URI; - if (source.toString() === resource.toString()) { + if (extUri.isEqual(source, resource)) { targetResource = target; // file got moved } else { const ignoreCase = !this.fileService.hasCapability(resource, FileSystemProviderCapabilities.PathCaseSensitive); @@ -380,8 +380,8 @@ export class EditorService extends Disposable implements EditorServiceImpl { for (const editor of this.editors) { if (options.supportSideBySide && editor instanceof SideBySideEditorInput) { - conditionallyAddEditor(editor.master); - conditionallyAddEditor(editor.details); + conditionallyAddEditor(editor.primary); + conditionallyAddEditor(editor.secondary); } else { conditionallyAddEditor(editor); } @@ -1193,13 +1193,13 @@ export class EditorService extends Disposable implements EditorServiceImpl { return new Promise(resolve => { const listener = this.onDidCloseEditor(async event => { - const detailsResource = toResource(event.editor, { supportSideBySide: SideBySideEditor.DETAILS }); - const masterResource = toResource(event.editor, { supportSideBySide: SideBySideEditor.MASTER }); + const primaryResource = toResource(event.editor, { supportSideBySide: SideBySideEditor.PRIMARY }); + const secondaryResource = toResource(event.editor, { supportSideBySide: SideBySideEditor.SECONDARY }); // Remove from resources to wait for being closed based on the // resources from editors that got closed remainingEditors = remainingEditors.filter(({ resource }) => { - if (this.uriIdentityService.extUri.isEqual(resource, masterResource) || this.uriIdentityService.extUri.isEqual(resource, detailsResource)) { + if (this.uriIdentityService.extUri.isEqual(resource, primaryResource) || this.uriIdentityService.extUri.isEqual(resource, secondaryResource)) { return false; // remove - the closing editor matches this resource } diff --git a/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts b/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts deleted file mode 100644 index aded0a85d1e..00000000000 --- a/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts +++ /dev/null @@ -1,76 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { IJSONSchema } from 'vs/base/common/jsonSchema'; -import * as nls from 'vs/nls'; -import { IConfigurationNode, IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry'; -import { workbenchConfigurationNodeBase } from 'vs/workbench/common/configuration'; -import { Registry } from 'vs/platform/registry/common/platform'; -import { ICustomEditorInfo } from 'vs/workbench/services/editor/common/editorService'; - -export const customEditorsAssociationsSettingId = 'workbench.editorAssociations'; - -export const viewTypeSchamaAddition: IJSONSchema = { - type: 'string', - enum: [] -}; - -export type CustomEditorAssociation = { - readonly viewType: string; - readonly filenamePattern?: string; -}; - -export type CustomEditorsAssociations = readonly CustomEditorAssociation[]; - -export const editorAssociationsConfigurationNode: IConfigurationNode = { - ...workbenchConfigurationNodeBase, - properties: { - [customEditorsAssociationsSettingId]: { - type: 'array', - markdownDescription: nls.localize('editor.editorAssociations', "Configure which editor to use for specific file types."), - items: { - type: 'object', - defaultSnippets: [{ - body: { - 'viewType': '$1', - 'filenamePattern': '$2' - } - }], - properties: { - 'viewType': { - anyOf: [ - { - type: 'string', - description: nls.localize('editor.editorAssociations.viewType', "The unique id of the editor to use."), - }, - viewTypeSchamaAddition - ] - }, - 'filenamePattern': { - type: 'string', - description: nls.localize('editor.editorAssociations.filenamePattern', "Glob pattern specifying which files the editor should be used for."), - } - } - } - } - } -}; - - -const builtinProviderDisplayName = nls.localize('builtinProviderDisplayName', "Built-in"); - -export const DEFAULT_CUSTOM_EDITOR: ICustomEditorInfo = { - id: 'default', - displayName: nls.localize('promptOpenWith.defaultEditor.displayName', "Text Editor"), - providerDisplayName: builtinProviderDisplayName -}; - -export function updateViewTypeSchema(enumValues: string[], enumDescriptions: string[]): void { - viewTypeSchamaAddition.enum = enumValues; - viewTypeSchamaAddition.enumDescriptions = enumDescriptions; - - Registry.as(Extensions.Configuration) - .notifyConfigurationSchemaUpdated(editorAssociationsConfigurationNode); -} diff --git a/src/vs/workbench/contrib/files/common/openWith.ts b/src/vs/workbench/services/editor/common/editorOpenWith.ts similarity index 64% rename from src/vs/workbench/contrib/files/common/openWith.ts rename to src/vs/workbench/services/editor/common/editorOpenWith.ts index 1c75461ccbe..d55a594fb9a 100644 --- a/src/vs/workbench/contrib/files/common/openWith.ts +++ b/src/vs/workbench/services/editor/common/editorOpenWith.ts @@ -3,20 +3,24 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { basename, extname, isEqual } from 'vs/base/common/resources'; -import { URI } from 'vs/base/common/uri'; import * as nls from 'vs/nls'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor'; -import { IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; -import { IEditorInput, IEditorPane } from 'vs/workbench/common/editor'; -import { FileEditorInput } from 'vs/workbench/contrib/files/common/editors/fileEditorInput'; -import { DEFAULT_EDITOR_ID } from 'vs/workbench/contrib/files/common/files'; -import { CustomEditorAssociation, CustomEditorsAssociations, customEditorsAssociationsSettingId } from 'vs/workbench/services/editor/common/editorAssociationsSetting'; +import { IJSONSchema } from 'vs/base/common/jsonSchema'; +import { IConfigurationNode, IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry'; +import { workbenchConfigurationNodeBase } from 'vs/workbench/common/configuration'; +import { Registry } from 'vs/platform/registry/common/platform'; +import { ICustomEditorInfo, IEditorService, IOpenEditorOverrideHandler, IOpenEditorOverrideEntry } from 'vs/workbench/services/editor/common/editorService'; +import { IEditorInput, IEditorPane, IEditorInputFactoryRegistry, Extensions as EditorExtensions } from 'vs/workbench/common/editor'; +import { ITextEditorOptions, IEditorOptions } from 'vs/platform/editor/common/editor'; import { IEditorGroup, OpenEditorContext } from 'vs/workbench/services/editor/common/editorGroupsService'; -import { IEditorService, IOpenEditorOverrideEntry, IOpenEditorOverrideHandler } from 'vs/workbench/services/editor/common/editorService'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; +import { URI } from 'vs/base/common/uri'; +import { extname, basename, isEqual } from 'vs/base/common/resources'; -const builtinProviderDisplayName = nls.localize('builtinProviderDisplayName', "Built-in"); +/** + * Id of the default editor for open with. + */ +export const DEFAULT_EDITOR_ID = 'default'; /** * Try to open an resource with a given editor. @@ -111,10 +115,12 @@ export async function openEditorWith( return pickedItem?.handler.open(input, { ...options, override: pickedItem.id }, group, OpenEditorContext.NEW_EDITOR)?.override; } +const builtinProviderDisplayName = nls.localize('builtinProviderDisplayName', "Built-in"); + export const defaultEditorOverrideEntry = Object.freeze({ id: DEFAULT_EDITOR_ID, label: nls.localize('promptOpenWith.defaultEditor.displayName', "Text Editor"), - detail: builtinProviderDisplayName, + detail: builtinProviderDisplayName }); /** @@ -124,8 +130,9 @@ export function getAllAvailableEditors( resource: URI, options: IEditorOptions | ITextEditorOptions | undefined, group: IEditorGroup, - editorService: IEditorService, + editorService: IEditorService ): Array<[IOpenEditorOverrideHandler, IOpenEditorOverrideEntry]> { + const fileEditorInputFactory = Registry.as(EditorExtensions.EditorInputFactories).getFileEditorInputFactory(); const overrides = editorService.getEditorOverrides(resource, options, group); if (!overrides.some(([_, entry]) => entry.id === DEFAULT_EDITOR_ID)) { overrides.unshift([ @@ -142,9 +149,71 @@ export function getAllAvailableEditors( }, { ...defaultEditorOverrideEntry, - active: editorService.activeEditor instanceof FileEditorInput && isEqual(editorService.activeEditor.resource, resource), + active: fileEditorInputFactory.isFileEditorInput(editorService.activeEditor) && isEqual(editorService.activeEditor.resource, resource), }]); } + return overrides; } +export const customEditorsAssociationsSettingId = 'workbench.editorAssociations'; + +export const viewTypeSchamaAddition: IJSONSchema = { + type: 'string', + enum: [] +}; + +export type CustomEditorAssociation = { + readonly viewType: string; + readonly filenamePattern?: string; +}; + +export type CustomEditorsAssociations = readonly CustomEditorAssociation[]; + +export const editorAssociationsConfigurationNode: IConfigurationNode = { + ...workbenchConfigurationNodeBase, + properties: { + [customEditorsAssociationsSettingId]: { + type: 'array', + markdownDescription: nls.localize('editor.editorAssociations', "Configure which editor to use for specific file types."), + items: { + type: 'object', + defaultSnippets: [{ + body: { + 'viewType': '$1', + 'filenamePattern': '$2' + } + }], + properties: { + 'viewType': { + anyOf: [ + { + type: 'string', + description: nls.localize('editor.editorAssociations.viewType', "The unique id of the editor to use."), + }, + viewTypeSchamaAddition + ] + }, + 'filenamePattern': { + type: 'string', + description: nls.localize('editor.editorAssociations.filenamePattern', "Glob pattern specifying which files the editor should be used for."), + } + } + } + } + } +}; + +export const DEFAULT_CUSTOM_EDITOR: ICustomEditorInfo = { + id: 'default', + displayName: nls.localize('promptOpenWith.defaultEditor.displayName', "Text Editor"), + providerDisplayName: builtinProviderDisplayName +}; + +export function updateViewTypeSchema(enumValues: string[], enumDescriptions: string[]): void { + viewTypeSchamaAddition.enum = enumValues; + viewTypeSchamaAddition.enumDescriptions = enumDescriptions; + + Registry.as(Extensions.Configuration) + .notifyConfigurationSchemaUpdated(editorAssociationsConfigurationNode); +} diff --git a/src/vs/workbench/services/editor/test/browser/editorService.test.ts b/src/vs/workbench/services/editor/test/browser/editorService.test.ts index 009cab9fd5a..bec876bc4d3 100644 --- a/src/vs/workbench/services/editor/test/browser/editorService.test.ts +++ b/src/vs/workbench/services/editor/test/browser/editorService.test.ts @@ -377,8 +377,8 @@ suite('EditorService', () => { // Untyped Input (diff) input = service.createEditorInput({ - leftResource: toResource.call(this, '/master.html'), - rightResource: toResource.call(this, '/detail.html') + leftResource: toResource.call(this, '/primary.html'), + rightResource: toResource.call(this, '/secondary.html') }); assert(input instanceof DiffEditorInput); }); @@ -1084,7 +1084,7 @@ suite('EditorService', () => { const editor = await service.openEditor(input1, { pinned: true }); await service.openEditor(input2, { pinned: true }); - const whenClosed = service.whenClosed([input1, input2]); + const whenClosed = service.whenClosed([{ resource: input1.resource }, { resource: input2.resource }]); editor?.group?.closeAllEditors(); diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts index b94b266326e..9369ad3a7dc 100644 --- a/src/vs/workbench/services/environment/browser/environmentService.ts +++ b/src/vs/workbench/services/environment/browser/environmentService.ts @@ -62,12 +62,12 @@ export class BrowserEnvironmentConfiguration implements IEnvironmentConfiguratio @memoize get filesToDiff(): IPath[] | undefined { if (this.payload) { - const fileToDiffDetail = this.payload.get('diffFileDetail'); - const fileToDiffMaster = this.payload.get('diffFileMaster'); - if (fileToDiffDetail && fileToDiffMaster) { + const fileToDiffPrimary = this.payload.get('diffFilePrimary'); + const fileToDiffSecondary = this.payload.get('diffFileSecondary'); + if (fileToDiffPrimary && fileToDiffSecondary) { return [ - { fileUri: URI.parse(fileToDiffDetail) }, - { fileUri: URI.parse(fileToDiffMaster) } + { fileUri: URI.parse(fileToDiffSecondary) }, + { fileUri: URI.parse(fileToDiffPrimary) } ]; } } diff --git a/src/vs/workbench/services/environment/electron-browser/environmentService.ts b/src/vs/workbench/services/environment/electron-browser/environmentService.ts index ec5c7af2d00..20da095a459 100644 --- a/src/vs/workbench/services/environment/electron-browser/environmentService.ts +++ b/src/vs/workbench/services/environment/electron-browser/environmentService.ts @@ -24,8 +24,6 @@ export interface INativeWorkbenchEnvironmentService extends IWorkbenchEnvironmen readonly log?: string; readonly extHostLogsPath: URI; - - readonly userHome: URI; } export interface INativeEnvironmentConfiguration extends IEnvironmentConfiguration, INativeWindowConfiguration { } diff --git a/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts b/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts index b78e71d9f7d..fdcfec158f4 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts @@ -137,8 +137,8 @@ export class ExtensionEnablementService extends Disposable implements IWorkbench } private _isDisabledByExtensionKind(extension: IExtension): boolean { - if (this.extensionManagementServerService.remoteExtensionManagementServer) { - const server = this.extensionManagementServerService.getExtensionManagementServer(extension.location); + if (this.extensionManagementServerService.remoteExtensionManagementServer || this.extensionManagementServerService.webExtensionManagementServer) { + const server = this.extensionManagementServerService.getExtensionManagementServer(extension); for (const extensionKind of getExtensionKind(extension.manifest, this.productService, this.configurationService)) { if (extensionKind === 'ui' || extensionKind === 'web') { // web behaves like ui diff --git a/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts b/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts index 5be6facb9cc..60dedce0946 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts @@ -6,7 +6,7 @@ import { Event } from 'vs/base/common/event'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { URI } from 'vs/base/common/uri'; -import { IExtension } from 'vs/platform/extensions/common/extensions'; +import { IExtension, IScannedExtension, ExtensionType } from 'vs/platform/extensions/common/extensions'; import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IWorkspace, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { IStringDictionary } from 'vs/base/common/collections'; @@ -14,16 +14,17 @@ import { IStringDictionary } from 'vs/base/common/collections'; export const IExtensionManagementServerService = createDecorator('extensionManagementServerService'); export interface IExtensionManagementServer { - extensionManagementService: IExtensionManagementService; - authority: string; + id: string; label: string; + extensionManagementService: IExtensionManagementService; } export interface IExtensionManagementServerService { readonly _serviceBrand: undefined; readonly localExtensionManagementServer: IExtensionManagementServer | null; readonly remoteExtensionManagementServer: IExtensionManagementServer | null; - getExtensionManagementServer(location: URI): IExtensionManagementServer | null; + readonly webExtensionManagementServer: IExtensionManagementServer | null; + getExtensionManagementServer(extension: IExtension): IExtensionManagementServer | null; } export const enum EnablementState { @@ -136,3 +137,9 @@ export interface IExtensionRecommendationsService { getIgnoredRecommendations(): ReadonlyArray; onRecommendationChange: Event; } + +export const IWebExtensionsScannerService = createDecorator('IWebExtensionsScannerService'); +export interface IWebExtensionsScannerService { + readonly _serviceBrand: undefined; + scanExtensions(type?: ExtensionType): Promise; +} diff --git a/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.ts b/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.ts index 33d26d231c6..388d6996081 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import { localize } from 'vs/nls'; -import { URI } from 'vs/base/common/uri'; import { IExtensionManagementServer, IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { ExtensionManagementChannelClient } from 'vs/platform/extensionManagement/common/extensionManagementIpc'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; @@ -12,6 +11,10 @@ import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; import { IChannel } from 'vs/base/parts/ipc/common/ipc'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ILabelService } from 'vs/platform/label/common/label'; +import { isWeb } from 'vs/base/common/platform'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { WebExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/webExtensionManagementService'; +import { IExtension } from 'vs/platform/extensions/common/extensions'; export class ExtensionManagementServerService implements IExtensionManagementServerService { @@ -19,27 +22,40 @@ export class ExtensionManagementServerService implements IExtensionManagementSer readonly localExtensionManagementServer: IExtensionManagementServer | null = null; readonly remoteExtensionManagementServer: IExtensionManagementServer | null = null; + readonly webExtensionManagementServer: IExtensionManagementServer | null = null; constructor( @IRemoteAgentService remoteAgentService: IRemoteAgentService, @ILabelService labelService: ILabelService, + @IInstantiationService instantiationService: IInstantiationService, ) { const remoteAgentConnection = remoteAgentService.getConnection(); if (remoteAgentConnection) { const extensionManagementService = new ExtensionManagementChannelClient(remoteAgentConnection!.getChannel('extensions')); this.remoteExtensionManagementServer = { - authority: remoteAgentConnection.remoteAuthority, + id: 'remote', extensionManagementService, get label() { return labelService.getHostLabel(REMOTE_HOST_SCHEME, remoteAgentConnection!.remoteAuthority) || localize('remote', "Remote"); } }; } + if (isWeb) { + const extensionManagementService = instantiationService.createInstance(WebExtensionManagementService); + this.webExtensionManagementServer = { + id: 'web', + extensionManagementService, + label: localize('web', "Web") + }; + } } - getExtensionManagementServer(location: URI): IExtensionManagementServer | null { - if (location.scheme === REMOTE_HOST_SCHEME) { - return this.remoteExtensionManagementServer; + getExtensionManagementServer(extension: IExtension): IExtensionManagementServer { + if (extension.location.scheme === REMOTE_HOST_SCHEME) { + return this.remoteExtensionManagementServer!; } - return null; + if (this.webExtensionManagementServer) { + return this.webExtensionManagementServer; + } + throw new Error(`Invalid Extension ${extension.location}`); } } diff --git a/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts b/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts index 547e3985ae3..5a79d9e39a5 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts @@ -15,7 +15,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { CancellationToken } from 'vs/base/common/cancellation'; import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { localize } from 'vs/nls'; -import { prefersExecuteOnUI, canExecuteOnWorkspace } from 'vs/workbench/services/extensions/common/extensionsUtil'; +import { prefersExecuteOnUI, canExecuteOnWorkspace, prefersExecuteOnWorkspace, canExecuteOnUI, prefersExecuteOnWeb, canExecuteOnWeb } from 'vs/workbench/services/extensions/common/extensionsUtil'; import { IProductService } from 'vs/platform/product/common/productService'; import { Schemas } from 'vs/base/common/network'; import { IDownloadService } from 'vs/platform/download/common/download'; @@ -45,6 +45,9 @@ export class ExtensionManagementService extends Disposable implements IExtension if (this.extensionManagementServerService.remoteExtensionManagementServer) { this.servers.push(this.extensionManagementServerService.remoteExtensionManagementServer); } + if (this.extensionManagementServerService.webExtensionManagementServer) { + this.servers.push(this.extensionManagementServerService.webExtensionManagementServer); + } this.onInstallExtension = this._register(this.servers.reduce((emitter: EventMultiplexer, server) => { emitter.add(server.extensionManagementService.onInstallExtension); return emitter; }, new EventMultiplexer())).event; this.onDidInstallExtension = this._register(this.servers.reduce((emitter: EventMultiplexer, server) => { emitter.add(server.extensionManagementService.onDidInstallExtension); return emitter; }, new EventMultiplexer())).event; @@ -64,7 +67,7 @@ export class ExtensionManagementService extends Disposable implements IExtension if (!server) { return Promise.reject(`Invalid location ${extension.location.toString()}`); } - if (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.remoteExtensionManagementServer) { + if (this.servers.length > 1) { if (isLanguagePackExtension(extension.manifest)) { return this.uninstallEverywhere(extension); } @@ -79,12 +82,14 @@ export class ExtensionManagementService extends Disposable implements IExtension return Promise.reject(`Invalid location ${extension.location.toString()}`); } const promise = server.extensionManagementService.uninstall(extension); - const anotherServer: IExtensionManagementServer | null = server === this.extensionManagementServerService.localExtensionManagementServer ? this.extensionManagementServerService.remoteExtensionManagementServer! : this.extensionManagementServerService.localExtensionManagementServer; - if (anotherServer) { - const installed = await anotherServer.extensionManagementService.getInstalled(ExtensionType.User); - extension = installed.filter(i => areSameExtensions(i.identifier, extension.identifier))[0]; - if (extension) { - await anotherServer.extensionManagementService.uninstall(extension); + const otherServers: IExtensionManagementServer[] = this.servers.filter(s => s !== server); + if (otherServers.length) { + for (const otherServer of otherServers) { + const installed = await otherServer.extensionManagementService.getInstalled(ExtensionType.User); + extension = installed.filter(i => areSameExtensions(i.identifier, extension.identifier))[0]; + if (extension) { + await otherServer.extensionManagementService.uninstall(extension); + } } } return promise; @@ -141,7 +146,10 @@ export class ExtensionManagementService extends Disposable implements IExtension } unzip(zipLocation: URI): Promise { - return Promise.all(this.servers.map(({ extensionManagementService }) => extensionManagementService.unzip(zipLocation))).then(([extensionIdentifier]) => extensionIdentifier); + return Promise.all(this.servers + // Filter out web server + .filter(server => server !== this.extensionManagementServerService.webExtensionManagementServer) + .map(({ extensionManagementService }) => extensionManagementService.unzip(zipLocation))).then(([extensionIdentifier]) => extensionIdentifier); } async install(vsix: URI): Promise { @@ -149,7 +157,7 @@ export class ExtensionManagementService extends Disposable implements IExtension const manifest = await this.getManifest(vsix); if (isLanguagePackExtension(manifest)) { // Install on both servers - const [local] = await Promise.all(this.servers.map(server => this.installVSIX(vsix, server))); + const [local] = await Promise.all([this.extensionManagementServerService.localExtensionManagementServer, this.extensionManagementServerService.remoteExtensionManagementServer].map(server => this.installVSIX(vsix, server))); return local; } if (prefersExecuteOnUI(manifest, this.productService, this.configurationService)) { @@ -183,39 +191,61 @@ export class ExtensionManagementService extends Disposable implements IExtension } async installFromGallery(gallery: IGalleryExtension): Promise { - if (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.remoteExtensionManagementServer) { - const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None); - if (manifest) { - if (isLanguagePackExtension(manifest)) { - // Install on both servers - return Promise.all(this.servers.map(server => server.extensionManagementService.installFromGallery(gallery))).then(([local]) => local); - } - if (prefersExecuteOnUI(manifest, this.productService, this.configurationService)) { - // Install only on local server - return this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.installFromGallery(gallery); - } - // Install only on remote server - return this.extensionManagementServerService.remoteExtensionManagementServer.extensionManagementService.installFromGallery(gallery); - } else { - return Promise.reject(localize('Manifest is not found', "Installing Extension {0} failed: Manifest is not found.", gallery.displayName || gallery.name)); - } - } - if (this.extensionManagementServerService.localExtensionManagementServer) { + + // Only local server, install without any checks + if (this.servers.length === 1 && this.extensionManagementServerService.localExtensionManagementServer) { return this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.installFromGallery(gallery); } - if (this.extensionManagementServerService.remoteExtensionManagementServer) { - const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None); - if (!manifest) { - return Promise.reject(localize('Manifest is not found', "Installing Extension {0} failed: Manifest is not found.", gallery.displayName || gallery.name)); - } - if (!isLanguagePackExtension(manifest) && !canExecuteOnWorkspace(manifest, this.productService, this.configurationService)) { - const error = new Error(localize('cannot be installed', "Cannot install '{0}' because this extension has defined that it cannot run on the remote server.", gallery.displayName || gallery.name)); - error.name = INSTALL_ERROR_NOT_SUPPORTED; - return Promise.reject(error); - } + + const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None); + if (!manifest) { + return Promise.reject(localize('Manifest is not found', "Installing Extension {0} failed: Manifest is not found.", gallery.displayName || gallery.name)); + } + + // Install Language pack on all servers + if (isLanguagePackExtension(manifest)) { + return Promise.all(this.servers.map(server => server.extensionManagementService.installFromGallery(gallery))).then(([local]) => local); + } + + // 1. Install on preferred location + + // Install UI preferred extension on local server + if (prefersExecuteOnUI(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.localExtensionManagementServer) { + return this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + // Install Workspace preferred extension on remote server + if (prefersExecuteOnWorkspace(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.remoteExtensionManagementServer) { return this.extensionManagementServerService.remoteExtensionManagementServer.extensionManagementService.installFromGallery(gallery); } - return Promise.reject('No Servers to Install'); + // Install Web preferred extension on web server + if (prefersExecuteOnWeb(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.webExtensionManagementServer) { + return this.extensionManagementServerService.webExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + + // 2. Install on supported location + + // Install UI supported extension on local server + if (canExecuteOnUI(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.localExtensionManagementServer) { + return this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + // Install Workspace supported extension on remote server + if (canExecuteOnWorkspace(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.remoteExtensionManagementServer) { + return this.extensionManagementServerService.remoteExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + // Install Web supported extension on web server + if (canExecuteOnWeb(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.webExtensionManagementServer) { + return this.extensionManagementServerService.webExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + + if (this.extensionManagementServerService.remoteExtensionManagementServer) { + const error = new Error(localize('cannot be installed', "Cannot install '{0}' because this extension has defined that it cannot run on the remote server.", gallery.displayName || gallery.name)); + error.name = INSTALL_ERROR_NOT_SUPPORTED; + return Promise.reject(error); + } + + const error = new Error(localize('cannot be installed on web', "Cannot install '{0}' because this extension has defined that it cannot run on the web server.", gallery.displayName || gallery.name)); + error.name = INSTALL_ERROR_NOT_SUPPORTED; + return Promise.reject(error); } getExtensionsReport(): Promise { @@ -229,6 +259,6 @@ export class ExtensionManagementService extends Disposable implements IExtension } private getServer(extension: ILocalExtension): IExtensionManagementServer | null { - return this.extensionManagementServerService.getExtensionManagementServer(extension.location); + return this.extensionManagementServerService.getExtensionManagementServer(extension); } } diff --git a/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts b/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts new file mode 100644 index 00000000000..a48110e34da --- /dev/null +++ b/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts @@ -0,0 +1,70 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { ExtensionType, IExtensionIdentifier, IExtensionManifest, IScannedExtension } from 'vs/platform/extensions/common/extensions'; +import { IExtensionManagementService, ILocalExtension, InstallExtensionEvent, DidInstallExtensionEvent, DidUninstallExtensionEvent, IGalleryExtension, IReportedExtension, IGalleryMetadata } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { Event } from 'vs/base/common/event'; +import { URI } from 'vs/base/common/uri'; +import { IRequestService, isSuccess, asText } from 'vs/platform/request/common/request'; +import { CancellationToken } from 'vs/base/common/cancellation'; +import { localizeManifest } from 'vs/platform/extensionManagement/common/extensionNls'; +import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; +import { IWebExtensionsScannerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; + +export class WebExtensionManagementService implements IExtensionManagementService { + + declare readonly _serviceBrand: undefined; + + onInstallExtension: Event = Event.None; + onDidInstallExtension: Event = Event.None; + onUninstallExtension: Event = Event.None; + onDidUninstallExtension: Event = Event.None; + + constructor( + @IWebExtensionsScannerService private readonly webExtensionsScannerService: IWebExtensionsScannerService, + @IRequestService private readonly requestService: IRequestService, + ) { + } + + async getInstalled(type?: ExtensionType): Promise { + const extensions = await this.webExtensionsScannerService.scanExtensions(type); + return Promise.all(extensions.map(e => this.toLocalExtension(e))); + } + + private async toLocalExtension(scannedExtension: IScannedExtension): Promise { + let manifest = scannedExtension.packageJSON; + if (scannedExtension.packageNLSUrl) { + try { + const context = await this.requestService.request({ type: 'GET', url: scannedExtension.packageNLSUrl.toString() }, CancellationToken.None); + if (isSuccess(context)) { + const content = await asText(context); + if (content) { + manifest = localizeManifest(manifest, JSON.parse(content)); + } + } + } catch (error) { /* ignore */ } + } + return { + type: ExtensionType.System, + identifier: { id: getGalleryExtensionId(manifest.publisher, manifest.name) }, + manifest, + location: scannedExtension.location, + isMachineScoped: false, + publisherId: null, + publisherDisplayName: null + }; + } + + zip(extension: ILocalExtension): Promise { throw new Error('unsupported'); } + unzip(zipLocation: URI): Promise { throw new Error('unsupported'); } + getManifest(vsix: URI): Promise { throw new Error('unsupported'); } + install(vsix: URI, isMachineScoped?: boolean): Promise { throw new Error('unsupported'); } + installFromGallery(extension: IGalleryExtension, isMachineScoped?: boolean): Promise { throw new Error('unsupported'); } + uninstall(extension: ILocalExtension, force?: boolean): Promise { throw new Error('unsupported'); } + reinstallFromGallery(extension: ILocalExtension): Promise { throw new Error('unsupported'); } + getExtensionsReport(): Promise { throw new Error('unsupported'); } + updateMetadata(local: ILocalExtension, metadata: IGalleryMetadata): Promise { throw new Error('unsupported'); } + +} diff --git a/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts b/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts new file mode 100644 index 00000000000..7203814b018 --- /dev/null +++ b/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts @@ -0,0 +1,46 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IBuiltinExtensionsScannerService, IScannedExtension, ExtensionType } from 'vs/platform/extensions/common/extensions'; +import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; +import { IWebExtensionsScannerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { isWeb } from 'vs/base/common/platform'; +import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; + +export class WebExtensionsScannerService implements IWebExtensionsScannerService { + + declare readonly _serviceBrand: undefined; + + private readonly systemExtensionsPromise: Promise; + private readonly userExtensions: IScannedExtension[]; + + constructor( + @IBuiltinExtensionsScannerService private readonly builtinExtensionsScannerService: IBuiltinExtensionsScannerService, + @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService + ) { + this.systemExtensionsPromise = isWeb ? this.builtinExtensionsScannerService.scanBuiltinExtensions() : Promise.resolve([]); + const staticExtensions = environmentService.options && Array.isArray(environmentService.options.staticExtensions) ? environmentService.options.staticExtensions : []; + this.userExtensions = staticExtensions.map(data => { + location: data.extensionLocation, + type: ExtensionType.User, + packageJSON: data.packageJSON, + }); + } + + async scanExtensions(type?: ExtensionType): Promise { + const extensions = []; + if (type === undefined || type === ExtensionType.System) { + const systemExtensions = await this.systemExtensionsPromise; + extensions.push(...systemExtensions); + } + if (type === undefined || type === ExtensionType.User) { + extensions.push(...this.userExtensions); + } + return extensions; + } + +} + +registerSingleton(IWebExtensionsScannerService, WebExtensionsScannerService); diff --git a/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts b/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts index 6b68a6f79c3..0ac506857c7 100644 --- a/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts +++ b/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts @@ -5,7 +5,6 @@ import { localize } from 'vs/nls'; import { Schemas } from 'vs/base/common/network'; -import { URI } from 'vs/base/common/uri'; import { IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IExtensionManagementServer, IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { ExtensionManagementChannelClient } from 'vs/platform/extensionManagement/common/extensionManagementIpc'; @@ -19,19 +18,16 @@ import { RemoteExtensionManagementChannelClient } from 'vs/workbench/services/ex import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IProductService } from 'vs/platform/product/common/productService'; import { ILabelService } from 'vs/platform/label/common/label'; - -const localExtensionManagementServerAuthority: string = 'vscode-local'; +import { IExtension } from 'vs/platform/extensions/common/extensions'; export class ExtensionManagementServerService implements IExtensionManagementServerService { declare readonly _serviceBrand: undefined; private readonly _localExtensionManagementServer: IExtensionManagementServer; - public get localExtensionManagementServer(): IExtensionManagementServer { - return this._localExtensionManagementServer; - } + public get localExtensionManagementServer(): IExtensionManagementServer { return this._localExtensionManagementServer; } readonly remoteExtensionManagementServer: IExtensionManagementServer | null = null; - readonly isSingleServer: boolean = false; + readonly webExtensionManagementServer: IExtensionManagementServer | null = null; constructor( @ISharedProcessService sharedProcessService: ISharedProcessService, @@ -44,26 +40,26 @@ export class ExtensionManagementServerService implements IExtensionManagementSer ) { const localExtensionManagementService = new ExtensionManagementChannelClient(sharedProcessService.getChannel('extensions')); - this._localExtensionManagementServer = { extensionManagementService: localExtensionManagementService, authority: localExtensionManagementServerAuthority, label: localize('local', "Local") }; + this._localExtensionManagementServer = { extensionManagementService: localExtensionManagementService, id: 'local', label: localize('local', "Local") }; const remoteAgentConnection = remoteAgentService.getConnection(); if (remoteAgentConnection) { const extensionManagementService = new RemoteExtensionManagementChannelClient(remoteAgentConnection.getChannel('extensions'), this.localExtensionManagementServer.extensionManagementService, galleryService, logService, configurationService, productService); this.remoteExtensionManagementServer = { - authority: remoteAgentConnection.remoteAuthority, + id: 'remote', extensionManagementService, get label() { return labelService.getHostLabel(REMOTE_HOST_SCHEME, remoteAgentConnection!.remoteAuthority) || localize('remote', "Remote"); } }; } } - getExtensionManagementServer(location: URI): IExtensionManagementServer | null { - if (location.scheme === Schemas.file) { + getExtensionManagementServer(extension: IExtension): IExtensionManagementServer { + if (extension.location.scheme === Schemas.file) { return this.localExtensionManagementServer; } - if (location.scheme === REMOTE_HOST_SCHEME) { + if (this.remoteExtensionManagementServer && extension.location.scheme === REMOTE_HOST_SCHEME) { return this.remoteExtensionManagementServer; } - return null; + throw new Error(`Invalid Extension ${extension.location}`); } } diff --git a/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts b/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts index 66bdd7eefae..4b26efed3eb 100644 --- a/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts +++ b/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts @@ -461,7 +461,7 @@ suite('ExtensionEnablementService Test', () => { }); test('test remote ui extension is disabled by kind when there is no local server', async () => { - instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService))); + instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService), null)); const localWorkspaceExtension = aLocalExtension2('pub.a', { extensionKind: ['ui'] }, { location: URI.file(`pub.a`).with({ scheme: Schemas.vscodeRemote }) }); testObject = new TestExtensionEnablementService(instantiationService); assert.ok(!testObject.isEnabled(localWorkspaceExtension)); @@ -499,7 +499,7 @@ suite('ExtensionEnablementService Test', () => { }); test('test web extension on remote server is not disabled by kind when there is no local server', async () => { - instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService))); + instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService), anExtensionManagementServer('web', instantiationService))); const localWorkspaceExtension = aLocalExtension2('pub.a', { extensionKind: ['web'] }, { location: URI.file(`pub.a`).with({ scheme: Schemas.vscodeRemote }) }); testObject = new TestExtensionEnablementService(instantiationService); assert.ok(testObject.isEnabled(localWorkspaceExtension)); @@ -507,7 +507,7 @@ suite('ExtensionEnablementService Test', () => { }); test('test web extension with no server is not disabled by kind when there is no local server', async () => { - instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService))); + instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService), anExtensionManagementServer('web', instantiationService))); const localWorkspaceExtension = aLocalExtension2('pub.a', { extensionKind: ['web'] }, { location: URI.file(`pub.a`).with({ scheme: Schemas.https }) }); testObject = new TestExtensionEnablementService(instantiationService); assert.ok(testObject.isEnabled(localWorkspaceExtension)); @@ -515,7 +515,7 @@ suite('ExtensionEnablementService Test', () => { }); test('test web extension with no server is not disabled by kind when there is no local and remote server', async () => { - instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, null)); + instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, null, anExtensionManagementServer('web', instantiationService))); const localWorkspaceExtension = aLocalExtension2('pub.a', { extensionKind: ['web'] }, { location: URI.file(`pub.a`).with({ scheme: Schemas.https }) }); testObject = new TestExtensionEnablementService(instantiationService); assert.ok(testObject.isEnabled(localWorkspaceExtension)); @@ -526,7 +526,7 @@ suite('ExtensionEnablementService Test', () => { function anExtensionManagementServer(authority: string, instantiationService: TestInstantiationService): IExtensionManagementServer { return { - authority, + id: authority, label: authority, extensionManagementService: instantiationService.get(IExtensionManagementService) }; @@ -535,22 +535,23 @@ function anExtensionManagementServer(authority: string, instantiationService: Te function aMultiExtensionManagementServerService(instantiationService: TestInstantiationService): IExtensionManagementServerService { const localExtensionManagementServer = anExtensionManagementServer('vscode-local', instantiationService); const remoteExtensionManagementServer = anExtensionManagementServer('vscode-remote', instantiationService); - return anExtensionManagementServerService(localExtensionManagementServer, remoteExtensionManagementServer); + return anExtensionManagementServerService(localExtensionManagementServer, remoteExtensionManagementServer, null); } -function anExtensionManagementServerService(localExtensionManagementServer: IExtensionManagementServer | null, remoteExtensionManagementServer: IExtensionManagementServer | null): IExtensionManagementServerService { +function anExtensionManagementServerService(localExtensionManagementServer: IExtensionManagementServer | null, remoteExtensionManagementServer: IExtensionManagementServer | null, webExtensionManagementServer: IExtensionManagementServer | null): IExtensionManagementServerService { return { _serviceBrand: undefined, localExtensionManagementServer, remoteExtensionManagementServer, - getExtensionManagementServer: (location: URI) => { - if (location.scheme === Schemas.file) { + webExtensionManagementServer: null, + getExtensionManagementServer: (extension: IExtension) => { + if (extension.location.scheme === Schemas.file) { return localExtensionManagementServer; } - if (location.scheme === REMOTE_HOST_SCHEME) { + if (extension.location.scheme === REMOTE_HOST_SCHEME) { return remoteExtensionManagementServer; } - return null; + return webExtensionManagementServer; } }; } diff --git a/src/vs/workbench/services/extensions/browser/extensionService.ts b/src/vs/workbench/services/extensions/browser/extensionService.ts index c02921f66a6..afcf8322e31 100644 --- a/src/vs/workbench/services/extensions/browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/browser/extensionService.ts @@ -5,7 +5,7 @@ import * as nls from 'vs/nls'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; -import { IWorkbenchExtensionEnablementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { IWorkbenchExtensionEnablementService, IWebExtensionsScannerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -13,7 +13,7 @@ import { IExtensionService, IExtensionHost } from 'vs/workbench/services/extensi import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IFileService } from 'vs/platform/files/common/files'; import { IProductService } from 'vs/platform/product/common/productService'; -import { AbstractExtensionService } from 'vs/workbench/services/extensions/common/abstractExtensionService'; +import { AbstractExtensionService, parseScannedExtension } from 'vs/workbench/services/extensions/common/abstractExtensionService'; import { RemoteExtensionHost, IRemoteExtensionHostDataProvider, IRemoteExtensionHostInitData } from 'vs/workbench/services/extensions/common/remoteExtensionHost'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { WebWorkerExtensionHost } from 'vs/workbench/services/extensions/browser/webWorkerExtensionHost'; @@ -23,7 +23,6 @@ import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { FetchFileSystemProvider } from 'vs/workbench/services/extensions/browser/webWorkerFileSystemProvider'; import { Schemas } from 'vs/base/common/network'; import { DisposableStore } from 'vs/base/common/lifecycle'; -import { IStaticExtensionsService } from 'vs/workbench/services/extensions/common/staticExtensions'; import { DeltaExtensionsResult } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry'; import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; @@ -43,7 +42,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten @IRemoteAuthorityResolverService private readonly _remoteAuthorityResolverService: IRemoteAuthorityResolverService, @IRemoteAgentService private readonly _remoteAgentService: IRemoteAgentService, @IConfigurationService private readonly _configService: IConfigurationService, - @IStaticExtensionsService private readonly _staticExtensions: IStaticExtensionsService, + @IWebExtensionsScannerService private readonly _webExtensionsScannerService: IWebExtensionsScannerService, ) { super( instantiationService, @@ -112,7 +111,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten // fetch the remote environment let [remoteEnv, localExtensions] = await Promise.all([ this._remoteAgentService.getEnvironment(), - this._staticExtensions.getExtensions() + this._webExtensionsScannerService.scanExtensions().then(extensions => extensions.map(parseScannedExtension)) ]); const remoteAgentConnection = this._remoteAgentService.getConnection(); diff --git a/src/vs/workbench/services/extensions/common/abstractExtensionService.ts b/src/vs/workbench/services/extensions/common/abstractExtensionService.ts index 8f34765969c..2fabfc1b08c 100644 --- a/src/vs/workbench/services/extensions/common/abstractExtensionService.ts +++ b/src/vs/workbench/services/extensions/common/abstractExtensionService.ts @@ -20,7 +20,7 @@ import { ExtensionMessageCollector, ExtensionPoint, ExtensionsRegistry, IExtensi import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry'; import { ResponsiveState } from 'vs/workbench/services/extensions/common/rpcProtocol'; import { ExtensionHostManager } from 'vs/workbench/services/extensions/common/extensionHostManager'; -import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { ExtensionIdentifier, IExtensionDescription, IScannedExtension, ExtensionType } from 'vs/platform/extensions/common/extensions'; import { IFileService } from 'vs/platform/files/common/files'; import { parseExtensionDevOptions } from 'vs/workbench/services/extensions/common/extensionDevOptions'; import { IProductService } from 'vs/platform/product/common/productService'; @@ -29,6 +29,16 @@ import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtens const hasOwnProperty = Object.hasOwnProperty; const NO_OP_VOID_PROMISE = Promise.resolve(undefined); +export function parseScannedExtension(extension: IScannedExtension): IExtensionDescription { + return { + identifier: new ExtensionIdentifier(`${extension.packageJSON.publisher}.${extension.packageJSON.name}`), + isBuiltin: extension.type === ExtensionType.System, + isUnderDevelopment: false, + extensionLocation: extension.location, + ...extension.packageJSON, + }; +} + export abstract class AbstractExtensionService extends Disposable implements IExtensionService { public _serviceBrand: undefined; diff --git a/src/vs/workbench/services/extensions/common/extensions.ts b/src/vs/workbench/services/extensions/common/extensions.ts index 707663ffe83..bd162d9d154 100644 --- a/src/vs/workbench/services/extensions/common/extensions.ts +++ b/src/vs/workbench/services/extensions/common/extensions.ts @@ -265,6 +265,17 @@ export function toExtension(extensionDescription: IExtensionDescription): IExten }; } +export function toExtensionDescription(extension: IExtension): IExtensionDescription { + return { + identifier: new ExtensionIdentifier(extension.identifier.id), + isBuiltin: extension.type === ExtensionType.System, + isUnderDevelopment: false, + extensionLocation: extension.location, + ...extension.manifest, + uuid: extension.identifier.uuid + }; +} + export class NullExtensionService implements IExtensionService { declare readonly _serviceBrand: undefined; diff --git a/src/vs/workbench/services/extensions/common/extensionsUtil.ts b/src/vs/workbench/services/extensions/common/extensionsUtil.ts index 9e8352ac881..93e7069d659 100644 --- a/src/vs/workbench/services/extensions/common/extensionsUtil.ts +++ b/src/vs/workbench/services/extensions/common/extensionsUtil.ts @@ -20,6 +20,11 @@ export function prefersExecuteOnWorkspace(manifest: IExtensionManifest, productS return (extensionKind.length > 0 && extensionKind[0] === 'workspace'); } +export function prefersExecuteOnWeb(manifest: IExtensionManifest, productService: IProductService, configurationService: IConfigurationService): boolean { + const extensionKind = getExtensionKind(manifest, productService, configurationService); + return (extensionKind.length > 0 && extensionKind[0] === 'web'); +} + export function canExecuteOnUI(manifest: IExtensionManifest, productService: IProductService, configurationService: IConfigurationService): boolean { const extensionKind = getExtensionKind(manifest, productService, configurationService); return extensionKind.some(kind => kind === 'ui'); diff --git a/src/vs/workbench/services/extensions/common/staticExtensions.ts b/src/vs/workbench/services/extensions/common/staticExtensions.ts deleted file mode 100644 index 2c8631126a6..00000000000 --- a/src/vs/workbench/services/extensions/common/staticExtensions.ts +++ /dev/null @@ -1,40 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IExtensionDescription, ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; -import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; - -export const IStaticExtensionsService = createDecorator('IStaticExtensionsService'); - -export interface IStaticExtensionsService { - readonly _serviceBrand: undefined; - getExtensions(): Promise; -} - -export class StaticExtensionsService implements IStaticExtensionsService { - - declare readonly _serviceBrand: undefined; - - private readonly _descriptions: IExtensionDescription[] = []; - - constructor(@IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService) { - const staticExtensions = environmentService.options && Array.isArray(environmentService.options.staticExtensions) ? environmentService.options.staticExtensions : []; - - this._descriptions = staticExtensions.map(data => { - identifier: new ExtensionIdentifier(`${data.packageJSON.publisher}.${data.packageJSON.name}`), - extensionLocation: data.extensionLocation, - isBuiltin: !!data.isBuiltin, - ...data.packageJSON, - }); - } - - async getExtensions(): Promise { - return this._descriptions; - } -} - -registerSingleton(IStaticExtensionsService, StaticExtensionsService, true); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index c9485aefe98..69f880a98e0 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -6,12 +6,12 @@ import { LocalProcessExtensionHost } from 'vs/workbench/services/extensions/electron-browser/localProcessExtensionHost'; import { CachedExtensionScanner } from 'vs/workbench/services/extensions/electron-browser/cachedExtensionScanner'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { AbstractExtensionService } from 'vs/workbench/services/extensions/common/abstractExtensionService'; +import { AbstractExtensionService, parseScannedExtension } from 'vs/workbench/services/extensions/common/abstractExtensionService'; import * as nls from 'vs/nls'; import { runWhenIdle } from 'vs/base/common/async'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IExtensionManagementService, IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { IWorkbenchExtensionEnablementService, EnablementState } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { IWorkbenchExtensionEnablementService, EnablementState, IWebExtensionsScannerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IRemoteExtensionHostDataProvider, RemoteExtensionHost, IRemoteExtensionHostInitData } from 'vs/workbench/services/extensions/common/remoteExtensionHost'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; @@ -31,7 +31,6 @@ import { PersistentConnectionEventType } from 'vs/platform/remote/common/remoteA import { IProductService } from 'vs/platform/product/common/productService'; import { Logger } from 'vs/workbench/services/extensions/common/extensionPoints'; import { flatten } from 'vs/base/common/arrays'; -import { IStaticExtensionsService } from 'vs/workbench/services/extensions/common/staticExtensions'; import { IElectronService } from 'vs/platform/electron/electron-sandbox/electron'; import { INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-browser/environmentService'; import { IRemoteExplorerService } from 'vs/workbench/services/remote/common/remoteExplorerService'; @@ -73,7 +72,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten @IRemoteAuthorityResolverService private readonly _remoteAuthorityResolverService: IRemoteAuthorityResolverService, @IConfigurationService private readonly _configurationService: IConfigurationService, @ILifecycleService private readonly _lifecycleService: ILifecycleService, - @IStaticExtensionsService private readonly _staticExtensions: IStaticExtensionsService, + @IWebExtensionsScannerService private readonly _webExtensionsScannerService: IWebExtensionsScannerService, @IElectronService private readonly _electronService: IElectronService, @IHostService private readonly _hostService: IHostService, @IRemoteExplorerService private readonly _remoteExplorerService: IRemoteExplorerService, @@ -353,7 +352,10 @@ export class ExtensionService extends AbstractExtensionService implements IExten //#endregion private async _scanAllLocalExtensions(): Promise { - return flatten(await Promise.all([this._extensionScanner.scannedExtensions, this._staticExtensions.getExtensions()])); + return flatten(await Promise.all([ + this._extensionScanner.scannedExtensions, + this._webExtensionsScannerService.scanExtensions().then(extensions => extensions.map(parseScannedExtension)) + ])); } private _createLocalExtensionHostDataProvider(isInitialStart: boolean, desiredRunningLocation: ExtensionRunningLocation) { diff --git a/src/vs/workbench/services/extensions/worker/extHost.services.ts b/src/vs/workbench/services/extensions/worker/extHost.services.ts index 100864519dc..564c71149e5 100644 --- a/src/vs/workbench/services/extensions/worker/extHost.services.ts +++ b/src/vs/workbench/services/extensions/worker/extHost.services.ts @@ -22,6 +22,7 @@ import { ILogService } from 'vs/platform/log/common/log'; import { ExtHostLogService } from 'vs/workbench/api/worker/extHostLogService'; import { IExtHostTunnelService, ExtHostTunnelService } from 'vs/workbench/api/common/extHostTunnelService'; import { IExtHostApiDeprecationService, ExtHostApiDeprecationService, } from 'vs/workbench/api/common/extHostApiDeprecationService'; +import { IExtHostWindow, ExtHostWindow } from 'vs/workbench/api/common/extHostWindow'; import { NotImplementedProxy } from 'vs/base/common/types'; // register singleton services @@ -29,6 +30,7 @@ registerSingleton(ILogService, ExtHostLogService); registerSingleton(IExtHostApiDeprecationService, ExtHostApiDeprecationService); registerSingleton(IExtHostOutputService, ExtHostOutputService); registerSingleton(IExtHostWorkspace, ExtHostWorkspace); +registerSingleton(IExtHostWindow, ExtHostWindow); registerSingleton(IExtHostDecorations, ExtHostDecorations); registerSingleton(IExtHostConfiguration, ExtHostConfiguration); registerSingleton(IExtHostCommands, ExtHostCommands); diff --git a/src/vs/workbench/services/history/browser/history.ts b/src/vs/workbench/services/history/browser/history.ts index 0d1e2c3f021..0c6e54d1a2f 100644 --- a/src/vs/workbench/services/history/browser/history.ts +++ b/src/vs/workbench/services/history/browser/history.ts @@ -32,6 +32,7 @@ import { addDisposableListener, EventType, EventHelper } from 'vs/base/browser/d import { IWorkspacesService } from 'vs/platform/workspaces/common/workspaces'; import { Schemas } from 'vs/base/common/network'; import { onUnexpectedError } from 'vs/base/common/errors'; +import { extUri } from 'vs/base/common/resources'; /** * Stores the selection & view state of an editor and allows to compare it to other selection states. @@ -577,7 +578,7 @@ export class HistoryService extends Disposable implements IHistoryService { const resourceEditorInputA = arg1 as IResourceEditorInput; const resourceEditorInputB = inputB as IResourceEditorInput; - return resourceEditorInputA && resourceEditorInputB && resourceEditorInputA.resource.toString() === resourceEditorInputB.resource.toString(); + return resourceEditorInputA && resourceEditorInputB && extUri.isEqual(resourceEditorInputA.resource, resourceEditorInputB.resource); } private matchesFile(resource: URI, arg2: IEditorInput | IResourceEditorInput | FileChangesEvent): boolean { @@ -595,12 +596,12 @@ export class HistoryService extends Disposable implements IHistoryService { return false; // make sure to only check this when workbench has restored (for https://github.com/Microsoft/vscode/issues/48275) } - return inputResource.toString() === resource.toString(); + return extUri.isEqual(inputResource, resource); } const resourceEditorInput = arg2 as IResourceEditorInput; - return resourceEditorInput?.resource.toString() === resource.toString(); + return extUri.isEqual(resourceEditorInput?.resource, resource); } //#endregion @@ -632,7 +633,7 @@ export class HistoryService extends Disposable implements IHistoryService { if (URI.isUri(editorResource)) { associatedResources.push(editorResource); } else if (editorResource) { - associatedResources.push(...coalesce([editorResource.master, editorResource.detail])); + associatedResources.push(...coalesce([editorResource.primary, editorResource.secondary])); } // Remove from list of recently closed before... diff --git a/src/vs/workbench/services/host/browser/browserHostService.ts b/src/vs/workbench/services/host/browser/browserHostService.ts index 28dfed02084..d3abef54196 100644 --- a/src/vs/workbench/services/host/browser/browserHostService.ts +++ b/src/vs/workbench/services/host/browser/browserHostService.ts @@ -174,8 +174,8 @@ export class BrowserHostService extends Disposable implements IHostService { // New Window: open into empty window else { const environment = new Map(); - environment.set('diffFileDetail', editors[0].resource.toString()); - environment.set('diffFileMaster', editors[1].resource.toString()); + environment.set('diffFileSecondary', editors[0].resource.toString()); + environment.set('diffFilePrimary', editors[1].resource.toString()); this.workspaceProvider.open(undefined, { payload: Array.from(environment.entries()) }); } diff --git a/src/vs/workbench/contrib/hover/browser/hover.ts b/src/vs/workbench/services/hover/browser/hover.ts similarity index 92% rename from src/vs/workbench/contrib/hover/browser/hover.ts rename to src/vs/workbench/services/hover/browser/hover.ts index aeda610a76e..1602396e2dd 100644 --- a/src/vs/workbench/contrib/hover/browser/hover.ts +++ b/src/vs/workbench/services/hover/browser/hover.ts @@ -66,6 +66,13 @@ export interface IHoverOptions { * be used to open the links using its default options. */ linkHandler?(url: string): void; + + /** + * Whether to hide the hover when the mouse leaves the `target` and enters the actual hover. + * This is false by default and note that it will be ignored if any `actions` are provided such + * that they are accessible. + */ + hideOnHover?: boolean; } export interface IHoverAction { diff --git a/src/vs/workbench/contrib/hover/browser/hover.contribution.ts b/src/vs/workbench/services/hover/browser/hoverService.ts similarity index 55% rename from src/vs/workbench/contrib/hover/browser/hover.contribution.ts rename to src/vs/workbench/services/hover/browser/hoverService.ts index 372c4a9be8b..a025f1ddb70 100644 --- a/src/vs/workbench/contrib/hover/browser/hover.contribution.ts +++ b/src/vs/workbench/services/hover/browser/hoverService.ts @@ -5,10 +5,78 @@ import 'vs/css!./media/hover'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { HoverService } from 'vs/workbench/contrib/hover/browser/hoverService'; -import { IHoverService } from 'vs/workbench/contrib/hover/browser/hover'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { editorHoverBackground, editorHoverBorder, textLinkForeground, editorHoverForeground, editorHoverStatusBarBackground, textCodeBlockBackground } from 'vs/platform/theme/common/colorRegistry'; +import { IHoverService, IHoverOptions } from 'vs/workbench/services/hover/browser/hover'; +import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { HoverWidget } from 'vs/workbench/services/hover/browser/hoverWidget'; +import { IContextViewProvider, IDelegate } from 'vs/base/browser/ui/contextview/contextview'; + +export class HoverService implements IHoverService { + declare readonly _serviceBrand: undefined; + + private _currentHoverOptions: IHoverOptions | undefined; + + constructor( + @IInstantiationService private readonly _instantiationService: IInstantiationService, + @IContextViewService private readonly _contextViewService: IContextViewService + ) { + } + + showHover(options: IHoverOptions, focus?: boolean): void { + if (this._currentHoverOptions === options) { + return; + } + this._currentHoverOptions = options; + + const hover = this._instantiationService.createInstance(HoverWidget, options); + hover.onDispose(() => this._currentHoverOptions = undefined); + const provider = this._contextViewService as IContextViewProvider; + provider.showContextView(new HoverContextViewDelegate(hover, focus)); + hover.onRequestLayout(() => provider.layout()); + } + + hideHover(): void { + if (!this._currentHoverOptions) { + return; + } + this._currentHoverOptions = undefined; + this._contextViewService.hideContextView(); + } +} + +class HoverContextViewDelegate implements IDelegate { + + get anchorPosition() { + return this._hover.anchor; + } + + constructor( + private readonly _hover: HoverWidget, + private readonly _focus: boolean = false + ) { + } + + render(container: HTMLElement) { + this._hover.render(container); + if (this._focus) { + this._hover.focus(); + } + return this._hover; + } + + getAnchor() { + return { + x: this._hover.x, + y: this._hover.y + }; + } + + layout() { + this._hover.layout(); + } +} registerSingleton(IHoverService, HoverService, true); diff --git a/src/vs/workbench/contrib/hover/browser/hoverWidget.ts b/src/vs/workbench/services/hover/browser/hoverWidget.ts similarity index 95% rename from src/vs/workbench/contrib/hover/browser/hoverWidget.ts rename to src/vs/workbench/services/hover/browser/hoverWidget.ts index e6926919f90..702e4e5143b 100644 --- a/src/vs/workbench/contrib/hover/browser/hoverWidget.ts +++ b/src/vs/workbench/services/hover/browser/hoverWidget.ts @@ -8,7 +8,7 @@ import { renderMarkdown } from 'vs/base/browser/markdownRenderer'; import { Event, Emitter } from 'vs/base/common/event'; import * as dom from 'vs/base/browser/dom'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { IHoverTarget, IHoverOptions } from 'vs/workbench/contrib/hover/browser/hover'; +import { IHoverTarget, IHoverOptions } from 'vs/workbench/services/hover/browser/hover'; import { KeyCode } from 'vs/base/common/keyCodes'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { EDITOR_FONT_DEFAULTS, IEditorOptions } from 'vs/editor/common/config/editorOptions'; @@ -115,7 +115,11 @@ export class HoverWidget extends Widget { this._hover.containerDomNode.appendChild(statusBarElement); } - this._mouseTracker = new CompositeMouseTracker([this._hover.containerDomNode, ...this._target.targetElements]); + const mouseTrackerTargets = [...this._target.targetElements]; + if (!options.hideOnHover || (options.actions && options.actions.length > 0)) { + mouseTrackerTargets.push(this._hover.containerDomNode); + } + this._mouseTracker = new CompositeMouseTracker(mouseTrackerTargets); this._register(this._mouseTracker.onMouseOut(() => this.dispose())); this._register(this._mouseTracker); } diff --git a/src/vs/workbench/contrib/hover/browser/media/hover.css b/src/vs/workbench/services/hover/browser/media/hover.css similarity index 100% rename from src/vs/workbench/contrib/hover/browser/media/hover.css rename to src/vs/workbench/services/hover/browser/media/hover.css diff --git a/src/vs/workbench/services/path/browser/pathService.ts b/src/vs/workbench/services/path/browser/pathService.ts index 9ec86fa5de7..13d4610b295 100644 --- a/src/vs/workbench/services/path/browser/pathService.ts +++ b/src/vs/workbench/services/path/browser/pathService.ts @@ -16,7 +16,7 @@ export class BrowserPathService extends AbstractPathService { @IRemoteAgentService remoteAgentService: IRemoteAgentService, @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService ) { - super(() => URI.from({ scheme: Schemas.vscodeRemote, authority: environmentService.configuration.remoteAuthority, path: '/' }), remoteAgentService); + super(URI.from({ scheme: Schemas.vscodeRemote, authority: environmentService.configuration.remoteAuthority, path: '/' }), remoteAgentService); } } diff --git a/src/vs/workbench/services/path/common/pathService.ts b/src/vs/workbench/services/path/common/pathService.ts index 43a1262868e..3056dbd901c 100644 --- a/src/vs/workbench/services/path/common/pathService.ts +++ b/src/vs/workbench/services/path/common/pathService.ts @@ -61,13 +61,13 @@ export abstract class AbstractPathService implements IPathService { private maybeUnresolvedUserHome: URI | undefined; constructor( - fallbackUserHome: () => URI, + fallbackUserHome: URI, @IRemoteAgentService private readonly remoteAgentService: IRemoteAgentService ) { this.remoteOS = this.remoteAgentService.getEnvironment().then(env => env?.os || OS); this.resolveUserHome = this.remoteAgentService.getEnvironment().then(env => { - const userHome = this.maybeUnresolvedUserHome = env?.userHome || fallbackUserHome(); + const userHome = this.maybeUnresolvedUserHome = env?.userHome || fallbackUserHome; return userHome; }); diff --git a/src/vs/workbench/services/path/electron-browser/pathService.ts b/src/vs/workbench/services/path/electron-browser/pathService.ts index 58b8a78a252..8dbe77e0b38 100644 --- a/src/vs/workbench/services/path/electron-browser/pathService.ts +++ b/src/vs/workbench/services/path/electron-browser/pathService.ts @@ -15,7 +15,7 @@ export class NativePathService extends AbstractPathService { @IRemoteAgentService remoteAgentService: IRemoteAgentService, @IWorkbenchEnvironmentService environmentService: INativeWorkbenchEnvironmentService ) { - super(() => environmentService.userHome, remoteAgentService); + super(environmentService.userHome, remoteAgentService); } } diff --git a/src/vs/workbench/services/preferences/browser/preferencesService.ts b/src/vs/workbench/services/preferences/browser/preferencesService.ts index aaf4fb8720b..e6a180a5c3e 100644 --- a/src/vs/workbench/services/preferences/browser/preferencesService.ts +++ b/src/vs/workbench/services/preferences/browser/preferencesService.ts @@ -210,7 +210,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic } const editorInput = this.getActiveSettingsEditorInput() || this.lastOpenedSettingsInput; - const resource = editorInput ? editorInput.master.resource! : this.userSettingsResource; + const resource = editorInput ? editorInput.primary.resource! : this.userSettingsResource; const target = this.getConfigurationTargetFromSettingsResource(resource); return this.openOrSwitchSettings(target, resource, { query: query }); } @@ -317,7 +317,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic private async openOrSwitchSettings(configurationTarget: ConfigurationTarget, resource: URI, options?: ISettingsEditorOptions, group: IEditorGroup = this.editorGroupService.activeGroup): Promise { const editorInput = this.getActiveSettingsEditorInput(group); if (editorInput) { - const editorInputResource = editorInput.master.resource; + const editorInputResource = editorInput.primary.resource; if (editorInputResource && editorInputResource.fsPath !== resource.fsPath) { return this.doSwitchSettings(configurationTarget, resource, editorInput, group, options); } diff --git a/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts b/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts index 6b351e54cf2..18fee097595 100644 --- a/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts +++ b/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts @@ -29,7 +29,7 @@ export class PreferencesEditorInput extends SideBySideEditorInput { } getTitle(verbosity: Verbosity): string { - return this.master.getTitle(verbosity); + return this.primary.getTitle(verbosity); } } diff --git a/src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts b/src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts index d11789ec923..c6446cdc798 100644 --- a/src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts +++ b/src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts @@ -116,7 +116,8 @@ export class RipgrepTextSearchEngine { } /** - * Read the first line of stderr and return an error for display or undefined, based on a whitelist. + * Read the first line of stderr and return an error for display or undefined, based on a list of + * allowed properties. * Ripgrep produces stderr output which is not from a fatal error, and we only want the search to be * "failed" when a fatal error was produced. */ diff --git a/src/vs/workbench/services/search/node/textSearchManager.ts b/src/vs/workbench/services/search/node/textSearchManager.ts index 3433ce35537..84be2f01f98 100644 --- a/src/vs/workbench/services/search/node/textSearchManager.ts +++ b/src/vs/workbench/services/search/node/textSearchManager.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { toCanonicalName } from 'vs/base/node/encoding'; +import { toCanonicalName } from 'vs/workbench/services/textfile/common/encoding'; import * as pfs from 'vs/base/node/pfs'; import { ITextQuery } from 'vs/workbench/services/search/common/search'; import { TextSearchProvider } from 'vs/workbench/services/search/common/searchExtTypes'; diff --git a/src/vs/workbench/services/textfile/browser/browserTextFileService.ts b/src/vs/workbench/services/textfile/browser/browserTextFileService.ts index 0c4da81146a..9c2bfa4f7cf 100644 --- a/src/vs/workbench/services/textfile/browser/browserTextFileService.ts +++ b/src/vs/workbench/services/textfile/browser/browserTextFileService.ts @@ -3,18 +3,22 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { AbstractTextFileService } from 'vs/workbench/services/textfile/browser/textFileService'; -import { ITextFileService, IResourceEncodings, IResourceEncoding, TextFileEditorModelState } from 'vs/workbench/services/textfile/common/textfiles'; +import { AbstractTextFileService, EncodingOracle } from 'vs/workbench/services/textfile/browser/textFileService'; +import { ITextFileService, IResourceEncoding, TextFileEditorModelState } from 'vs/workbench/services/textfile/common/textfiles'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ShutdownReason } from 'vs/platform/lifecycle/common/lifecycle'; export class BrowserTextFileService extends AbstractTextFileService { - readonly encoding: IResourceEncodings = { - async getPreferredWriteEncoding(): Promise { - return { encoding: 'utf8', hasBOM: false }; + private _browserEncoding: EncodingOracle | undefined; + + get encoding(): EncodingOracle { + if (!this._browserEncoding) { + this._browserEncoding = this._register(this.instantiationService.createInstance(BrowserEncodingOracle)); } - }; + + return this._browserEncoding; + } protected registerListeners(): void { super.registerListeners(); @@ -34,4 +38,18 @@ export class BrowserTextFileService extends AbstractTextFileService { } } +class BrowserEncodingOracle extends EncodingOracle { + async getPreferredWriteEncoding(): Promise { + return { encoding: 'utf8', hasBOM: false }; + } + + async getWriteEncoding(): Promise<{ encoding: string, addBOM: boolean }> { + return { encoding: 'utf8', addBOM: false }; + } + + async getReadEncoding(): Promise { + return 'utf8'; + } +} + registerSingleton(ITextFileService, BrowserTextFileService); diff --git a/src/vs/workbench/services/textfile/browser/textFileService.ts b/src/vs/workbench/services/textfile/browser/textFileService.ts index a27fc9bf049..fabf89c0b32 100644 --- a/src/vs/workbench/services/textfile/browser/textFileService.ts +++ b/src/vs/workbench/services/textfile/browser/textFileService.ts @@ -6,7 +6,7 @@ import * as nls from 'vs/nls'; import { URI } from 'vs/base/common/uri'; import { AsyncEmitter } from 'vs/base/common/event'; -import { ITextFileService, ITextFileStreamContent, ITextFileContent, IResourceEncodings, IReadTextFileOptions, IWriteTextFileOptions, toBufferOrReadable, TextFileOperationError, TextFileOperationResult, ITextFileSaveOptions, ITextFileEditorModelManager, TextFileCreateEvent } from 'vs/workbench/services/textfile/common/textfiles'; +import { ITextFileService, ITextFileStreamContent, ITextFileContent, IResourceEncodings, IReadTextFileOptions, IWriteTextFileOptions, toBufferOrReadable, TextFileOperationError, TextFileOperationResult, ITextFileSaveOptions, ITextFileEditorModelManager, TextFileCreateEvent, IResourceEncoding } from 'vs/workbench/services/textfile/common/textfiles'; import { IRevertOptions, IEncodingSupport } from 'vs/workbench/common/editor'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { IFileService, FileOperationError, FileOperationResult, IFileStatWithMetadata, ICreateFileOptions, FileOperation } from 'vs/platform/files/common/files'; @@ -19,7 +19,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { Schemas } from 'vs/base/common/network'; import { createTextBufferFactoryFromSnapshot, createTextBufferFactoryFromStream } from 'vs/editor/common/model/textModel'; import { IModelService } from 'vs/editor/common/services/modelService'; -import { joinPath, dirname, basename, toLocalResource } from 'vs/base/common/resources'; +import { joinPath, dirname, basename, toLocalResource, extUri, extname, isEqualOrParent } from 'vs/base/common/resources'; import { IDialogService, IFileDialogService, IConfirmation } from 'vs/platform/dialogs/common/dialogs'; import { VSBuffer } from 'vs/base/common/buffer'; import { ITextSnapshot, ITextModel } from 'vs/editor/common/model'; @@ -35,6 +35,10 @@ import { IPathService } from 'vs/workbench/services/path/common/pathService'; import { isValidBasename } from 'vs/base/common/extpath'; import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; +import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; +import { WORKSPACE_EXTENSION } from 'vs/platform/workspaces/common/workspaces'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { UTF8, UTF8_with_bom, UTF16be, UTF16le, encodingExists, UTF8_BOM, detectEncodingByBOMFromBuffer } from 'vs/workbench/services/textfile/common/encoding'; /** * The workbench file service implementation implements the raw file service spec and adds additional methods on top. @@ -54,8 +58,6 @@ export abstract class AbstractTextFileService extends Disposable implements ITex readonly untitled: IUntitledTextEditorModelManager = this.untitledTextEditorService; - abstract get encoding(): IResourceEncodings; - constructor( @IFileService protected readonly fileService: IFileService, @IUntitledTextEditorService private untitledTextEditorService: IUntitledTextEditorService, @@ -86,6 +88,16 @@ export abstract class AbstractTextFileService extends Disposable implements ITex //#region text file read / write / create + private _encoding: EncodingOracle | undefined; + + get encoding(): EncodingOracle { + if (!this._encoding) { + this._encoding = this._register(this.instantiationService.createInstance(EncodingOracle)); + } + + return this._encoding; + } + async read(resource: URI, options?: IReadTextFileOptions): Promise { const content = await this.fileService.readFile(resource, options); @@ -224,7 +236,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex } // Just save if target is same as models own resource - if (source.toString() === target.toString()) { + if (extUri.isEqual(source, target)) { return this.save(source, { ...options, force: true /* force to save, even if not dirty (https://github.com/microsoft/vscode/issues/99619) */ }); } @@ -491,3 +503,150 @@ export abstract class AbstractTextFileService extends Disposable implements ITex //#endregion } + +export interface IEncodingOverride { + parent?: URI; + extension?: string; + encoding: string; +} + +export class EncodingOracle extends Disposable implements IResourceEncodings { + + private _encodingOverrides: IEncodingOverride[]; + protected get encodingOverrides(): IEncodingOverride[] { return this._encodingOverrides; } + protected set encodingOverrides(value: IEncodingOverride[]) { this._encodingOverrides = value; } + + constructor( + @ITextResourceConfigurationService private textResourceConfigurationService: ITextResourceConfigurationService, + @IEnvironmentService private environmentService: IEnvironmentService, + @IWorkspaceContextService private contextService: IWorkspaceContextService, + @IFileService private fileService: IFileService + ) { + super(); + + this._encodingOverrides = this.getDefaultEncodingOverrides(); + + this.registerListeners(); + } + + private registerListeners(): void { + + // Workspace Folder Change + this._register(this.contextService.onDidChangeWorkspaceFolders(() => this.encodingOverrides = this.getDefaultEncodingOverrides())); + } + + private getDefaultEncodingOverrides(): IEncodingOverride[] { + const defaultEncodingOverrides: IEncodingOverride[] = []; + + // Global settings + defaultEncodingOverrides.push({ parent: this.environmentService.userRoamingDataHome, encoding: UTF8 }); + + // Workspace files (via extension and via untitled workspaces location) + defaultEncodingOverrides.push({ extension: WORKSPACE_EXTENSION, encoding: UTF8 }); + defaultEncodingOverrides.push({ parent: this.environmentService.untitledWorkspacesHome, encoding: UTF8 }); + + // Folder Settings + this.contextService.getWorkspace().folders.forEach(folder => { + defaultEncodingOverrides.push({ parent: joinPath(folder.uri, '.vscode'), encoding: UTF8 }); + }); + + return defaultEncodingOverrides; + } + + async getWriteEncoding(resource: URI, options?: IWriteTextFileOptions): Promise<{ encoding: string, addBOM: boolean }> { + const { encoding, hasBOM } = await this.getPreferredWriteEncoding(resource, options ? options.encoding : undefined); + + // Some encodings come with a BOM automatically + if (hasBOM) { + return { encoding, addBOM: true }; + } + + // Ensure that we preserve an existing BOM if found for UTF8 + // unless we are instructed to overwrite the encoding + const overwriteEncoding = options?.overwriteEncoding; + if (!overwriteEncoding && encoding === UTF8) { + try { + const buffer = (await this.fileService.readFile(resource, { length: UTF8_BOM.length })).value; + if (detectEncodingByBOMFromBuffer(buffer, buffer.byteLength) === UTF8_with_bom) { + return { encoding, addBOM: true }; + } + } catch (error) { + // ignore - file might not exist + } + } + + return { encoding, addBOM: false }; + } + + async getPreferredWriteEncoding(resource: URI, preferredEncoding?: string): Promise { + const resourceEncoding = await this.getEncodingForResource(resource, preferredEncoding); + + return { + encoding: resourceEncoding, + hasBOM: resourceEncoding === UTF16be || resourceEncoding === UTF16le || resourceEncoding === UTF8_with_bom // enforce BOM for certain encodings + }; + } + + getReadEncoding(resource: URI, options: IReadTextFileOptions | undefined, detectedEncoding: string | null): Promise { + let preferredEncoding: string | undefined; + + // Encoding passed in as option + if (options?.encoding) { + if (detectedEncoding === UTF8_with_bom && options.encoding === UTF8) { + preferredEncoding = UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 + } else { + preferredEncoding = options.encoding; // give passed in encoding highest priority + } + } + + // Encoding detected + else if (detectedEncoding) { + preferredEncoding = detectedEncoding; + } + + // Encoding configured + else if (this.textResourceConfigurationService.getValue(resource, 'files.encoding') === UTF8_with_bom) { + preferredEncoding = UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then + } + + return this.getEncodingForResource(resource, preferredEncoding); + } + + private async getEncodingForResource(resource: URI, preferredEncoding?: string): Promise { + let fileEncoding: string; + + const override = this.getEncodingOverride(resource); + if (override) { + fileEncoding = override; // encoding override always wins + } else if (preferredEncoding) { + fileEncoding = preferredEncoding; // preferred encoding comes second + } else { + fileEncoding = this.textResourceConfigurationService.getValue(resource, 'files.encoding'); // and last we check for settings + } + + if (!fileEncoding || !(await encodingExists(fileEncoding))) { + fileEncoding = UTF8; // the default is UTF 8 + } + + return fileEncoding; + } + + private getEncodingOverride(resource: URI): string | undefined { + if (this.encodingOverrides && this.encodingOverrides.length) { + for (const override of this.encodingOverrides) { + + // check if the resource is child of encoding override path + if (override.parent && isEqualOrParent(resource, override.parent)) { + return override.encoding; + } + + // check if the resource extension is equal to encoding override + if (override.extension && extname(resource) === `.${override.extension}`) { + return override.encoding; + } + } + } + + return undefined; + } +} diff --git a/src/vs/base/node/encoding.ts b/src/vs/workbench/services/textfile/common/encoding.ts similarity index 93% rename from src/vs/base/node/encoding.ts rename to src/vs/workbench/services/textfile/common/encoding.ts index fe9a71da5ca..b65f6a22faf 100644 --- a/src/vs/base/node/encoding.ts +++ b/src/vs/workbench/services/textfile/common/encoding.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { DecoderStream } from 'iconv-lite'; +import { DecoderStream } from 'iconv-lite-umd'; import { Readable, ReadableStream, newWriteableStream } from 'vs/base/common/stream'; import { VSBuffer, VSBufferReadable, VSBufferReadableStream } from 'vs/base/common/buffer'; @@ -63,9 +63,9 @@ export function toDecodeStream(source: VSBufferReadableStream, options: IDecodeS detected.encoding = await options.overwriteEncoding(detected.encoding); // decode and write buffered content - const iconv = await import('iconv-lite'); + const iconv = await import('iconv-lite-umd'); decoder = iconv.getDecoder(toNodeEncoding(detected.encoding)); - const decoded = decoder.write(Buffer.from(VSBuffer.concat(bufferedChunks).buffer)); + const decoded = decoder.write(VSBuffer.concat(bufferedChunks).buffer); target.write(decoded); bufferedChunks.length = 0; @@ -89,7 +89,7 @@ export function toDecodeStream(source: VSBufferReadableStream, options: IDecodeS // if the decoder is ready, we just write directly if (decoder) { - target.write(decoder.write(Buffer.from(chunk.buffer))); + target.write(decoder.write(chunk.buffer)); } // otherwise we need to buffer the data until the stream is ready @@ -129,7 +129,7 @@ export function toDecodeStream(source: VSBufferReadableStream, options: IDecodeS } export async function toEncodeReadable(readable: Readable, encoding: string, options?: { addBOM?: boolean }): Promise { - const iconv = await import('iconv-lite'); + const iconv = await import('iconv-lite-umd'); const encoder = iconv.getEncoder(toNodeEncoding(encoding), options); let bytesRead = 0; @@ -176,7 +176,7 @@ export async function toEncodeReadable(readable: Readable, encoding: str } export async function encodingExists(encoding: string): Promise { - const iconv = await import('iconv-lite'); + const iconv = await import('iconv-lite-umd'); return iconv.encodingExists(toNodeEncoding(encoding)); } @@ -234,7 +234,13 @@ const IGNORE_ENCODINGS = ['ascii', 'utf-16', 'utf-32']; async function guessEncodingByBuffer(buffer: VSBuffer): Promise { const jschardet = await import('jschardet'); - const guessed = jschardet.detect(Buffer.from(buffer.slice(0, AUTO_ENCODING_GUESS_MAX_BYTES).buffer)); // ensure to limit buffer for guessing due to https://github.com/aadsm/jschardet/issues/53 + // ensure to limit buffer for guessing due to https://github.com/aadsm/jschardet/issues/53 + const limitedBuffer = buffer.slice(0, AUTO_ENCODING_GUESS_MAX_BYTES); + // override type since jschardet expects Buffer even though can accept Uint8Array + // can be fixed once https://github.com/aadsm/jschardet/pull/58 is merged + const jschardetTypingsWorkaround = limitedBuffer.buffer as any; + + const guessed = jschardet.detect(jschardetTypingsWorkaround); if (!guessed || !guessed.encoding) { return null; } diff --git a/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts b/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts index 63740339ab0..786be97fa43 100644 --- a/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts +++ b/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts @@ -5,7 +5,7 @@ import { localize } from 'vs/nls'; import { AbstractTextFileService } from 'vs/workbench/services/textfile/browser/textFileService'; -import { ITextFileService, ITextFileStreamContent, ITextFileContent, IResourceEncodings, IResourceEncoding, IReadTextFileOptions, IWriteTextFileOptions, stringToSnapshot, TextFileOperationResult, TextFileOperationError } from 'vs/workbench/services/textfile/common/textfiles'; +import { ITextFileService, ITextFileStreamContent, ITextFileContent, IReadTextFileOptions, IWriteTextFileOptions, stringToSnapshot, TextFileOperationResult, TextFileOperationError } from 'vs/workbench/services/textfile/common/textfiles'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { URI } from 'vs/base/common/uri'; import { IFileStatWithMetadata, ICreateFileOptions, FileOperationError, FileOperationResult, IFileStreamContent, IFileService } from 'vs/platform/files/common/files'; @@ -15,12 +15,7 @@ import { join, dirname } from 'vs/base/common/path'; import { isMacintosh } from 'vs/base/common/platform'; import { IProductService } from 'vs/platform/product/common/productService'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfigurationService'; -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { UTF8, UTF8_with_bom, UTF16be, UTF16le, encodingExists, UTF8_BOM, toDecodeStream, toEncodeReadable, IDecodeStreamResult, detectEncodingByBOMFromBuffer } from 'vs/base/node/encoding'; -import { WORKSPACE_EXTENSION } from 'vs/platform/workspaces/common/workspaces'; -import { joinPath, extname, isEqualOrParent } from 'vs/base/common/resources'; -import { Disposable } from 'vs/base/common/lifecycle'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { UTF8, UTF8_with_bom, toDecodeStream, toEncodeReadable, IDecodeStreamResult } from 'vs/workbench/services/textfile/common/encoding'; import { bufferToStream, VSBufferReadable } from 'vs/base/common/buffer'; import { createTextBufferFactoryFromStream } from 'vs/editor/common/model/textModel'; import { ITextSnapshot } from 'vs/editor/common/model'; @@ -64,15 +59,6 @@ export class NativeTextFileService extends AbstractTextFileService { super(fileService, untitledTextEditorService, lifecycleService, instantiationService, modelService, environmentService, dialogService, fileDialogService, textResourceConfigurationService, filesConfigurationService, textModelService, codeEditorService, pathService, workingCopyFileService, uriIdentityService); } - private _encoding: EncodingOracle | undefined; - get encoding(): EncodingOracle { - if (!this._encoding) { - this._encoding = this._register(this.instantiationService.createInstance(EncodingOracle)); - } - - return this._encoding; - } - async read(resource: URI, options?: IReadTextFileOptions): Promise { const [bufferStream, decoder] = await this.doRead(resource, { ...options, @@ -292,151 +278,4 @@ export class NativeTextFileService extends AbstractTextFileService { } } -export interface IEncodingOverride { - parent?: URI; - extension?: string; - encoding: string; -} - -export class EncodingOracle extends Disposable implements IResourceEncodings { - - private _encodingOverrides: IEncodingOverride[]; - protected get encodingOverrides(): IEncodingOverride[] { return this._encodingOverrides; } - protected set encodingOverrides(value: IEncodingOverride[]) { this._encodingOverrides = value; } - - constructor( - @ITextResourceConfigurationService private textResourceConfigurationService: ITextResourceConfigurationService, - @IEnvironmentService private environmentService: IEnvironmentService, - @IWorkspaceContextService private contextService: IWorkspaceContextService, - @IFileService private fileService: IFileService - ) { - super(); - - this._encodingOverrides = this.getDefaultEncodingOverrides(); - - this.registerListeners(); - } - - private registerListeners(): void { - - // Workspace Folder Change - this._register(this.contextService.onDidChangeWorkspaceFolders(() => this.encodingOverrides = this.getDefaultEncodingOverrides())); - } - - private getDefaultEncodingOverrides(): IEncodingOverride[] { - const defaultEncodingOverrides: IEncodingOverride[] = []; - - // Global settings - defaultEncodingOverrides.push({ parent: this.environmentService.userRoamingDataHome, encoding: UTF8 }); - - // Workspace files (via extension and via untitled workspaces location) - defaultEncodingOverrides.push({ extension: WORKSPACE_EXTENSION, encoding: UTF8 }); - defaultEncodingOverrides.push({ parent: this.environmentService.untitledWorkspacesHome, encoding: UTF8 }); - - // Folder Settings - this.contextService.getWorkspace().folders.forEach(folder => { - defaultEncodingOverrides.push({ parent: joinPath(folder.uri, '.vscode'), encoding: UTF8 }); - }); - - return defaultEncodingOverrides; - } - - async getWriteEncoding(resource: URI, options?: IWriteTextFileOptions): Promise<{ encoding: string, addBOM: boolean }> { - const { encoding, hasBOM } = await this.getPreferredWriteEncoding(resource, options ? options.encoding : undefined); - - // Some encodings come with a BOM automatically - if (hasBOM) { - return { encoding, addBOM: true }; - } - - // Ensure that we preserve an existing BOM if found for UTF8 - // unless we are instructed to overwrite the encoding - const overwriteEncoding = options?.overwriteEncoding; - if (!overwriteEncoding && encoding === UTF8) { - try { - const buffer = (await this.fileService.readFile(resource, { length: UTF8_BOM.length })).value; - if (detectEncodingByBOMFromBuffer(buffer, buffer.byteLength) === UTF8_with_bom) { - return { encoding, addBOM: true }; - } - } catch (error) { - // ignore - file might not exist - } - } - - return { encoding, addBOM: false }; - } - - async getPreferredWriteEncoding(resource: URI, preferredEncoding?: string): Promise { - const resourceEncoding = await this.getEncodingForResource(resource, preferredEncoding); - - return { - encoding: resourceEncoding, - hasBOM: resourceEncoding === UTF16be || resourceEncoding === UTF16le || resourceEncoding === UTF8_with_bom // enforce BOM for certain encodings - }; - } - - getReadEncoding(resource: URI, options: IReadTextFileOptions | undefined, detectedEncoding: string | null): Promise { - let preferredEncoding: string | undefined; - - // Encoding passed in as option - if (options?.encoding) { - if (detectedEncoding === UTF8_with_bom && options.encoding === UTF8) { - preferredEncoding = UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 - } else { - preferredEncoding = options.encoding; // give passed in encoding highest priority - } - } - - // Encoding detected - else if (detectedEncoding) { - preferredEncoding = detectedEncoding; - } - - // Encoding configured - else if (this.textResourceConfigurationService.getValue(resource, 'files.encoding') === UTF8_with_bom) { - preferredEncoding = UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then - } - - return this.getEncodingForResource(resource, preferredEncoding); - } - - private async getEncodingForResource(resource: URI, preferredEncoding?: string): Promise { - let fileEncoding: string; - - const override = this.getEncodingOverride(resource); - if (override) { - fileEncoding = override; // encoding override always wins - } else if (preferredEncoding) { - fileEncoding = preferredEncoding; // preferred encoding comes second - } else { - fileEncoding = this.textResourceConfigurationService.getValue(resource, 'files.encoding'); // and last we check for settings - } - - if (!fileEncoding || !(await encodingExists(fileEncoding))) { - fileEncoding = UTF8; // the default is UTF 8 - } - - return fileEncoding; - } - - private getEncodingOverride(resource: URI): string | undefined { - if (this.encodingOverrides && this.encodingOverrides.length) { - for (const override of this.encodingOverrides) { - - // check if the resource is child of encoding override path - if (override.parent && isEqualOrParent(resource, override.parent)) { - return override.encoding; - } - - // check if the resource extension is equal to encoding override - if (override.extension && extname(resource) === `.${override.extension}`) { - return override.encoding; - } - } - } - - return undefined; - } -} - registerSingleton(ITextFileService, NativeTextFileService); diff --git a/src/vs/workbench/services/textfile/test/electron-browser/textFileService.io.test.ts b/src/vs/workbench/services/textfile/test/electron-browser/textFileService.io.test.ts index 67e5bcc9e29..a5558692e2f 100644 --- a/src/vs/workbench/services/textfile/test/electron-browser/textFileService.io.test.ts +++ b/src/vs/workbench/services/textfile/test/electron-browser/textFileService.io.test.ts @@ -20,12 +20,12 @@ import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemPro import { generateUuid } from 'vs/base/common/uuid'; import { join, basename } from 'vs/base/common/path'; import { getPathFromAmdModule } from 'vs/base/common/amd'; -import { UTF16be, UTF16le, UTF8_with_bom, UTF8 } from 'vs/base/node/encoding'; +import { UTF16be, UTF16le, UTF8_with_bom, UTF8 } from 'vs/workbench/services/textfile/common/encoding'; import { DefaultEndOfLine, ITextSnapshot } from 'vs/editor/common/model'; import { createTextModel } from 'vs/editor/test/common/editorTestUtils'; import { isWindows } from 'vs/base/common/platform'; import { readFileSync, statSync } from 'fs'; -import { detectEncodingByBOM } from 'vs/base/test/node/encoding/encoding.test'; +import { detectEncodingByBOM } from 'vs/workbench/services/textfile/test/node/encoding/encoding.test'; import { workbenchInstantiationService, TestNativeTextFileServiceWithEncodingOverrides } from 'vs/workbench/test/electron-browser/workbenchTestServices'; suite('Files - TextFileService i/o', function () { diff --git a/src/vs/base/test/node/encoding/encoding.test.ts b/src/vs/workbench/services/textfile/test/node/encoding/encoding.test.ts similarity index 99% rename from src/vs/base/test/node/encoding/encoding.test.ts rename to src/vs/workbench/services/textfile/test/node/encoding/encoding.test.ts index 09bfacc9e9b..f43ea2f2161 100644 --- a/src/vs/base/test/node/encoding/encoding.test.ts +++ b/src/vs/workbench/services/textfile/test/node/encoding/encoding.test.ts @@ -5,10 +5,10 @@ import * as assert from 'assert'; import * as fs from 'fs'; -import * as encoding from 'vs/base/node/encoding'; +import * as encoding from 'vs/workbench/services/textfile/common/encoding'; import * as terminalEncoding from 'vs/base/node/terminalEncoding'; import * as streams from 'vs/base/common/stream'; -import * as iconv from 'iconv-lite'; +import * as iconv from 'iconv-lite-umd'; import { getPathFromAmdModule } from 'vs/base/common/amd'; import { newWriteableBufferStream, VSBuffer, VSBufferReadableStream, streamToBufferReadableStream } from 'vs/base/common/buffer'; diff --git a/src/vs/base/test/node/encoding/fixtures/empty.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/empty.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/empty.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/empty.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.cp1252.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.cp1252.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.cp1252.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.cp1252.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.css.qwoff b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.css.qwoff similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.css.qwoff rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.css.qwoff diff --git a/src/vs/base/test/node/encoding/fixtures/some.json.png b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.json.png similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.json.png rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.json.png diff --git a/src/vs/base/test/node/encoding/fixtures/some.pdf b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.pdf similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.pdf rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.pdf diff --git a/src/vs/base/test/node/encoding/fixtures/some.png.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.png.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.png.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.png.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.qwoff.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.qwoff.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.qwoff.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.qwoff.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.shiftjis.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.shiftjis.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.shiftjis.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.shiftjis.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.xml.png b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.xml.png similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.xml.png rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.xml.png diff --git a/src/vs/base/test/node/encoding/fixtures/some_ansi.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_ansi.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_ansi.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_ansi.css diff --git a/src/vs/base/test/node/encoding/fixtures/some_file.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_file.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_file.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_file.css diff --git a/src/vs/base/test/node/encoding/fixtures/some_utf16be.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf16be.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_utf16be.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf16be.css diff --git a/src/vs/base/test/node/encoding/fixtures/some_utf16le.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf16le.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_utf16le.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf16le.css diff --git a/src/vs/base/test/node/encoding/fixtures/some_utf8.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf8.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_utf8.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf8.css diff --git a/src/vs/base/test/node/encoding/fixtures/utf16_be_nobom.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/utf16_be_nobom.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/utf16_be_nobom.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/utf16_be_nobom.txt diff --git a/src/vs/base/test/node/encoding/fixtures/utf16_le_nobom.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/utf16_le_nobom.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/utf16_le_nobom.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/utf16_le_nobom.txt diff --git a/src/vs/workbench/services/untitled/common/untitledTextEditorInput.ts b/src/vs/workbench/services/untitled/common/untitledTextEditorInput.ts index 7ecff1fba99..0e61e602a2a 100644 --- a/src/vs/workbench/services/untitled/common/untitledTextEditorInput.ts +++ b/src/vs/workbench/services/untitled/common/untitledTextEditorInput.ts @@ -13,6 +13,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IFileService } from 'vs/platform/files/common/files'; import { IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService'; +import { extUri } from 'vs/base/common/resources'; /** * An editor input to be used for untitled text buffers. @@ -122,13 +123,12 @@ export class UntitledTextEditorInput extends AbstractTextResourceEditorInput imp } matches(otherInput: unknown): boolean { - if (super.matches(otherInput) === true) { + if (otherInput === this) { return true; } - // Otherwise compare by properties if (otherInput instanceof UntitledTextEditorInput) { - return otherInput.resource.toString() === this.resource.toString(); + return extUri.isEqual(otherInput.resource, this.resource); } return false; diff --git a/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts b/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts index a2b39520076..578c545aa3c 100644 --- a/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts +++ b/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts @@ -6,7 +6,7 @@ import { IUserDataSyncService, IAuthenticationProvider, getUserDataSyncStore, isAuthenticationProvider, IUserDataAutoSyncService } from 'vs/platform/userDataSync/common/userDataSync'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { IUserDataSyncWorkbenchService, IUserDataSyncAccount, AccountStatus, CONTEXT_SYNC_ENABLEMENT, CONTEXT_SYNC_STATE, CONTEXT_ACCOUNT_STATE, SHOW_SYNCED_DATA_COMMAND_ID } from 'vs/workbench/services/userDataSync/common/userDataSync'; +import { IUserDataSyncWorkbenchService, IUserDataSyncAccount, AccountStatus, CONTEXT_SYNC_ENABLEMENT, CONTEXT_SYNC_STATE, CONTEXT_ACCOUNT_STATE, SHOW_SYNCED_DATA_COMMAND_ID, SHOW_SYNC_LOG_COMMAND_ID, getSyncAreaLabel } from 'vs/workbench/services/userDataSync/common/userDataSync'; import { AuthenticationSession, AuthenticationSessionsChangeEvent } from 'vs/editor/common/modes'; import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; import { Emitter, Event } from 'vs/base/common/event'; @@ -28,6 +28,7 @@ import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { Action } from 'vs/base/common/actions'; +import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress'; type UserAccountClassification = { id: { classification: 'EndUserPseudonymizedInformation', purpose: 'BusinessInsight' }; @@ -90,6 +91,7 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat @IExtensionService extensionService: IExtensionService, @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService, @INotificationService private readonly notificationService: INotificationService, + @IProgressService private readonly progressService: IProgressService, @IDialogService private readonly dialogService: IDialogService, @ICommandService private readonly commandService: ICommandService, @IContextKeyService contextKeyService: IContextKeyService, @@ -219,18 +221,34 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat throw new Error(localize('no account', "No account available")); } - const pullFirst = await this.handleFirstTimeSync(); - await this.userDataAutoSyncService.turnOn(pullFirst); - this.notificationService.info(localize('sync turned on', "Preferences sync is turned on")); + const preferencesSyncTitle = localize('preferences sync', "Preferences Sync"); + const title = `${preferencesSyncTitle} [(${localize('details', "details")})](command:${SHOW_SYNC_LOG_COMMAND_ID})`; + await this.progressService.withProgress({ + location: ProgressLocation.Notification, + title, + delay: 500, + }, async (progress) => { + progress.report({ message: localize('turning on', "Turning on...") }); + const pullFirst = await this.isSyncingWithAnotherMachine(); + const disposable = this.userDataSyncService.onSynchronizeResource(resource => + progress.report({ message: localize('syncing resource', "Syncing {0}...", getSyncAreaLabel(resource)) })); + try { + await this.userDataAutoSyncService.turnOn(pullFirst); + } finally { + disposable.dispose(); + } + }); + + this.notificationService.info(localize('sync turned on', "{0} is turned on", title)); } turnoff(everywhere: boolean): Promise { return this.userDataAutoSyncService.turnOff(everywhere); } - private async handleFirstTimeSync(): Promise { - const isFirstTimeSyncingWithAnotherMachine = await this.userDataSyncService.isFirstTimeSyncingWithAnotherMachine(); - if (!isFirstTimeSyncingWithAnotherMachine) { + private async isSyncingWithAnotherMachine(): Promise { + const isSyncingWithAnotherMachine = await this.userDataSyncService.isFirstTimeSyncingWithAnotherMachine(); + if (!isSyncingWithAnotherMachine) { return false; } diff --git a/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts b/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts index a562eb0c66f..7f1084593fe 100644 --- a/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts +++ b/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts @@ -38,6 +38,8 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ private _onSyncErrors: Emitter<[SyncResource, UserDataSyncError][]> = this._register(new Emitter<[SyncResource, UserDataSyncError][]>()); readonly onSyncErrors: Event<[SyncResource, UserDataSyncError][]> = this._onSyncErrors.event; + get onSynchronizeResource(): Event { return this.channel.listen('onSynchronizeResource'); } + constructor( @ISharedProcessService sharedProcessService: ISharedProcessService ) { diff --git a/src/vs/workbench/test/browser/parts/editor/editor.test.ts b/src/vs/workbench/test/browser/parts/editor/editor.test.ts index e974da14e70..74821dc414f 100644 --- a/src/vs/workbench/test/browser/parts/editor/editor.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/editor.test.ts @@ -34,8 +34,8 @@ suite('Workbench editor', () => { const untitled = instantiationService.createInstance(UntitledTextEditorInput, service.create()); assert.equal(toResource(untitled)!.toString(), untitled.resource.toString()); - assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.MASTER })!.toString(), untitled.resource.toString()); - assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.DETAILS })!.toString(), untitled.resource.toString()); + assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.PRIMARY })!.toString(), untitled.resource.toString()); + assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.SECONDARY })!.toString(), untitled.resource.toString()); assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.BOTH })!.toString(), untitled.resource.toString()); assert.equal(toResource(untitled, { filterByScheme: Schemas.untitled })!.toString(), untitled.resource.toString()); assert.equal(toResource(untitled, { filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), untitled.resource.toString()); @@ -44,8 +44,8 @@ suite('Workbench editor', () => { const file = new TestEditorInput(URI.file('/some/path.txt'), 'editorResourceFileTest'); assert.equal(toResource(file)!.toString(), file.resource.toString()); - assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.MASTER })!.toString(), file.resource.toString()); - assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.DETAILS })!.toString(), file.resource.toString()); + assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.PRIMARY })!.toString(), file.resource.toString()); + assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.SECONDARY })!.toString(), file.resource.toString()); assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.BOTH })!.toString(), file.resource.toString()); assert.equal(toResource(file, { filterByScheme: Schemas.file })!.toString(), file.resource.toString()); assert.equal(toResource(file, { filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), file.resource.toString()); @@ -56,20 +56,20 @@ suite('Workbench editor', () => { assert.ok(!toResource(diffEditorInput)); assert.ok(!toResource(diffEditorInput, { filterByScheme: Schemas.file })); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.MASTER })!.toString(), file.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: Schemas.file })!.toString(), file.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), file.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.PRIMARY })!.toString(), file.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.PRIMARY, filterByScheme: Schemas.file })!.toString(), file.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.PRIMARY, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), file.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.DETAILS })!.toString(), untitled.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.DETAILS, filterByScheme: Schemas.untitled })!.toString(), untitled.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.DETAILS, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), untitled.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.SECONDARY })!.toString(), untitled.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.SECONDARY, filterByScheme: Schemas.untitled })!.toString(), untitled.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.SECONDARY, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), untitled.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH }) as { master: URI, detail: URI }).master.toString(), file.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: Schemas.file }) as { master: URI, detail: URI }).master.toString(), file.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: [Schemas.file, Schemas.untitled] }) as { master: URI, detail: URI }).master.toString(), file.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH }) as { primary: URI, secondary: URI }).primary.toString(), file.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: Schemas.file }) as { primary: URI, secondary: URI }).primary.toString(), file.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: [Schemas.file, Schemas.untitled] }) as { primary: URI, secondary: URI }).primary.toString(), file.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH }) as { master: URI, detail: URI }).detail.toString(), untitled.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: Schemas.untitled }) as { master: URI, detail: URI }).detail.toString(), untitled.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: [Schemas.file, Schemas.untitled] }) as { master: URI, detail: URI }).detail.toString(), untitled.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH }) as { primary: URI, secondary: URI }).secondary.toString(), untitled.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: Schemas.untitled }) as { primary: URI, secondary: URI }).secondary.toString(), untitled.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: [Schemas.file, Schemas.untitled] }) as { primary: URI, secondary: URI }).secondary.toString(), untitled.resource.toString()); }); }); diff --git a/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts b/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts index 6f3548866d5..6c41c464c08 100644 --- a/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts @@ -150,6 +150,8 @@ class NonSerializableTestEditorInput extends EditorInput { class TestFileEditorInput extends EditorInput implements IFileEditorInput { + readonly label = this.resource; + constructor(public id: string, public resource: URI) { super(); } diff --git a/src/vs/workbench/test/browser/workbenchTestServices.ts b/src/vs/workbench/test/browser/workbenchTestServices.ts index 7c42ca2d734..48cca5bef2e 100644 --- a/src/vs/workbench/test/browser/workbenchTestServices.ts +++ b/src/vs/workbench/test/browser/workbenchTestServices.ts @@ -1056,6 +1056,9 @@ export function registerTestEditor(id: string, inputs: SyncDescriptor= 2.1.2 < 3" +iconv-lite-umd@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.3.tgz#61307cab8ac29939992d0724d3ab8799467f0e97" + integrity sha512-fQ/8XE8reiCZ6t+SX4tX6/tQdV4tThJZv5qtMe5Sk+IWsExz0S2Zd+GiBS5IEPgDxnsmiJSpH67+qzN3FT4lKw== iconv-lite@^0.4.19: version "0.4.19" @@ -4960,16 +4856,6 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-my-json-valid@^2.12.4: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" - integrity sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ== - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" @@ -5045,11 +4931,6 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= - is-relative@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" @@ -5248,14 +5129,6 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" - integrity sha1-bl/mfYsgXOTSL60Ft3geja3MSzA= - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - js-yaml@^3.12.0: version "3.12.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" @@ -5407,11 +5280,6 @@ jsonparse@~1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd" integrity sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70= -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -5519,11 +5387,6 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -lcov-parse@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" - integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM= - lead@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" @@ -5690,11 +5553,6 @@ lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -log-driver@1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" - integrity sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY= - lolex@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" @@ -5943,7 +5801,7 @@ mime-db@~1.36.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.17: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" integrity sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo= @@ -6027,7 +5885,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@1.2.0, minimist@^1.2.0: +minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -6480,7 +6338,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" integrity sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw== -oauth-sign@~0.8.1, oauth-sign@~0.8.2: +oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= @@ -7551,11 +7409,6 @@ q@^1.0.1, q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@~6.3.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" - integrity sha1-51vV9uJoEioqDgvaYwslUMFmUCw= - qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -7893,32 +7746,6 @@ replacestream@^4.0.0: object-assign "^4.0.1" readable-stream "^2.0.2" -request@2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4= - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - "request@>= 2.44.0 < 3.0.0", request@^2.79.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" @@ -8241,10 +8068,10 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -semver-umd@^5.5.6: - version "5.5.6" - resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.6.tgz#1d185bbd2caec825c564b54907cd09e14083f228" - integrity sha512-6ARYXVi4Y4VO5HfyCjT/6xyykBtJwEXSGQ8ON4UPQSFOjZUDsbAE0J614QcBBsLTTyQMEqvsXN804vAqpydjzw== +semver-umd@^5.5.7: + version "5.5.7" + resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.7.tgz#966beb5e96c7da6fbf09c3da14c2872d6836c528" + integrity sha512-XgjPNlD0J6aIc8xoTN6GQGwWc2Xg0kq8NzrqMVuKG/4Arl6ab1F8+Am5Y/XKKCR+FceFr2yN/Uv5ZJBhRyRqKg== "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: version "5.4.1" @@ -8436,13 +8263,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= - dependencies: - hoek "2.x.x" - sntp@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" @@ -8761,7 +8581,7 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4, stringstream@~0.0.5: +stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg= @@ -9162,7 +8982,7 @@ touch@0.0.3: dependencies: nopt "~1.0.10" -tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" integrity sha1-C2GKVWW23qkL80JdBNVe3EdadWE= @@ -9229,11 +9049,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us= - tunnel@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.4.tgz#2d3785a158c174c9a16dc2c046ec5fc5f1742213"