@lambda-kata/cdk 0.1.3-rc.90 → 0.1.3-rc.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";var h=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var p in e)h(t,p,{get:e[p],enumerable:!0})},C=(t,e,p,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of v(e))!F.call(t,c)&&c!==p&&h(t,c,{get:()=>e[c],enumerable:!(a=$(e,c))||a.enumerable});return t};var I=t=>C(h({},"__esModule",{value:!0}),t);var U={};y(U,{_testable:()=>m,activateSnapStart:()=>E,handler:()=>T});module.exports=I(U);var n=require("@aws-sdk/client-lambda"),d=5,N=15e3,P=3e3,D={snapshotTimeoutSeconds:180,pollingIntervalSeconds:2,aliasName:"kata",_prePublishDelayMs:P,_retryDelayMs:N},m={sleep(t){return new Promise(e=>setTimeout(e,t))}};function A(t){if(t instanceof n.ResourceNotFoundException)return!0;if(t instanceof Error){if(t.name==="ResourceNotFoundException")return!0;let e=t.cause;if(e instanceof n.ResourceNotFoundException||e instanceof Error&&e.name==="ResourceNotFoundException")return!0}return!1}var R=["lambda:GetFunction","lambda:GetFunctionConfiguration","lambda:UpdateFunctionConfiguration","lambda:PublishVersion","lambda:GetAlias","lambda:CreateAlias","lambda:UpdateAlias"];function w(t){if(t instanceof Error){if(t.name==="AccessDeniedException")return!0;let e=t.cause;if(e instanceof Error&&e.name==="AccessDeniedException")return!0}return!1}async function E(t,e,p){let a={...D,...p},c=Math.ceil(a.snapshotTimeoutSeconds/a.pollingIntervalSeconds);console.log("=".repeat(60)),console.log("SNAPSTART ACTIVATION CYCLE"),console.log("=".repeat(60)),console.log(`Function: ${e}`),console.log(`Timeout: ${a.snapshotTimeoutSeconds}s, Polling: ${a.pollingIntervalSeconds}s`),console.log(`Max publish retries: ${d}`);try{console.log(`
|
|
2
|
+
[0/5] Ensuring function is Active...`);try{await(0,n.waitUntilFunctionActiveV2)({client:t,maxWaitTime:60},{FunctionName:e})}catch(o){throw A(o)?new Error(`Lambda function '${e}' does not exist. Verify the function name or ARN is correct.`):w(o)?new Error(`Insufficient permissions to activate SnapStart on '${e}'. Ensure the execution role has the following permissions: ${R.join(", ")}`):o}console.log(" Function is Active"),console.log(`
|
|
3
|
+
[1/5] Enabling SnapStart (ApplyOn: PublishedVersions)...`),await t.send(new n.UpdateFunctionConfigurationCommand({FunctionName:e,SnapStart:{ApplyOn:"PublishedVersions"}})),console.log(" SnapStart configuration sent"),console.log("[2/5] Waiting for configuration update...");try{await(0,n.waitUntilFunctionUpdatedV2)({client:t,maxWaitTime:120},{FunctionName:e})}catch(o){throw A(o)?new Error(`Lambda function '${e}' does not exist. Verify the function name or ARN is correct.`):w(o)?new Error(`Insufficient permissions to activate SnapStart on '${e}'. Ensure the execution role has the following permissions: ${R.join(", ")}`):o}console.log(" Configuration updated successfully"),console.log(` Waiting ${a._prePublishDelayMs/1e3}s for configuration propagation...`),await m.sleep(a._prePublishDelayMs);let i="",u="Unknown",s="Unknown",S="";for(let o=1;o<=d;o++){console.log(`[3/5] Publishing new version (attempt ${o}/${d})...`),o>1&&(console.log(` Waiting ${a._retryDelayMs/1e3}s before retry...`),await m.sleep(a._retryDelayMs),console.log(" Ensuring function is Active before re-publish..."),await(0,n.waitUntilFunctionActiveV2)({client:t,maxWaitTime:60},{FunctionName:e}),console.log(" Re-applying SnapStart config to force new version..."),await t.send(new n.UpdateFunctionConfigurationCommand({FunctionName:e,SnapStart:{ApplyOn:"PublishedVersions"}})),await(0,n.waitUntilFunctionUpdatedV2)({client:t,maxWaitTime:120},{FunctionName:e}),console.log(` Waiting ${a._prePublishDelayMs/1e3}s for configuration propagation...`),await m.sleep(a._prePublishDelayMs)),i=(await t.send(new n.PublishVersionCommand({FunctionName:e,Description:`SnapStart enabled - ${new Date().toISOString()} (attempt ${o})`}))).Version,console.log(` Published version: ${i}`),console.log("[4/5] Waiting for SnapStart snapshot creation..."),s="Unknown";for(let g=0;g<c;g++){let f=await t.send(new n.GetFunctionConfigurationCommand({FunctionName:e,Qualifier:i}));if(u=(f.SnapStart??{}).OptimizationStatus??"Unknown",s=f.State??"Unknown",s==="Active"){console.log(" SnapStart snapshot ready!"),console.log(` OptimizationStatus: ${u}`),console.log(` State: ${s}`);break}else if(s==="Failed"){S=f.StateReason??"Unknown",console.log(` Snapshot creation failed: ${S}`);break}else if(g%10===0||g<5){let b=g*a.pollingIntervalSeconds;console.log(` Creating snapshot... Status: ${u}, State: ${s} (${b}s elapsed)`)}await m.sleep(a.pollingIntervalSeconds*1e3)}if(s==="Active"||s!=="Failed")break;o<d&&(console.log(` Snapshot failed on attempt ${o}, will retry with new version...`),console.log(` Reason: ${S}`))}s==="Failed"&&(console.log(` All ${d} snapshot attempts failed.`),console.log(` Reason: ${S}`),console.log(""),console.log(" [Lambda Kata] SnapStart optimization failed. Alias will be created pointing"),console.log(" to the latest version. Function remains operational without SnapStart."),console.log(" Review CloudWatch logs for initialization errors.")),s!=="Active"&&s!=="Failed"&&(console.log(` Warning: Snapshot creation timeout after ${a.snapshotTimeoutSeconds}s`),console.log(` Final status: OptimizationStatus=${u}, State=${s}`)),console.log(`[5/5] Creating/updating alias '${a.aliasName}' -> version ${i}...`);let r;try{await t.send(new n.GetAliasCommand({FunctionName:e,Name:a.aliasName})),r=(await t.send(new n.UpdateAliasCommand({FunctionName:e,Name:a.aliasName,FunctionVersion:i,Description:"Lambda Kata SnapStart-enabled version"}))).AliasArn,console.log(` Updated existing alias: ${r}`)}catch(o){if(o instanceof n.ResourceNotFoundException||o instanceof Error&&o.name==="ResourceNotFoundException")r=(await t.send(new n.CreateAliasCommand({FunctionName:e,Name:a.aliasName,FunctionVersion:i,Description:"Lambda Kata SnapStart-enabled version"}))).AliasArn,console.log(` Created new alias: ${r}`);else throw o}return console.log(`
|
|
4
|
+
`+"=".repeat(60)),console.log("SNAPSTART ACTIVATION COMPLETE"),console.log("=".repeat(60)),console.log(`Version: ${i}`),console.log(`Alias: ${a.aliasName} -> ${r}`),console.log(`OptimizationStatus: ${u}`),{version:i,aliasName:a.aliasName,aliasArn:r,optimizationStatus:u}}catch(i){throw w(i)?new Error(`Insufficient permissions to activate SnapStart on '${e}'. Ensure the execution role has the following permissions: ${R.join(", ")}`):i}}async function T(t){console.log("Custom Resource Event:",JSON.stringify(t,null,2));let{RequestType:e,StackId:p,RequestId:a,LogicalResourceId:c,ResourceProperties:i}=t,u=i.FunctionName,s=i.AliasName??"kata",r={PhysicalResourceId:t.PhysicalResourceId??`${u}:snapstart:${s}`,StackId:p,RequestId:a,LogicalResourceId:c};try{if(e==="Delete")return console.log("Delete request - no action needed (Lambda will be deleted by CloudFormation)"),{...r,Status:"SUCCESS"};let o=new n.LambdaClient({}),l=await E(o,u,{aliasName:s});return{...r,Status:"SUCCESS",Data:{Version:l.version,AliasName:l.aliasName,AliasArn:l.aliasArn,OptimizationStatus:l.optimizationStatus}}}catch(o){let l=o instanceof Error?o.message:String(o);return console.error("SnapStart activation failed:",l),e==="Update"?(console.log("Returning SUCCESS for Update request to prevent rollback deadlock."),console.log("The function will continue with its previous SnapStart configuration."),{...r,Status:"SUCCESS",Reason:`SnapStart activation failed (non-blocking): ${l}`}):{...r,Status:"FAILED",Reason:`SnapStart activation failed: ${l}`}}}0&&(module.exports={_testable,activateSnapStart,handler});
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3NuYXBzdGFydC1hY3RpdmF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qXG4gKiBBcGFjaGUtMi4wXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjVcdTIwMTNwcmVzZW50IFJhbWFuIE1hcm96YXUsIFdvcmsgVGFyZ2V0IEluc2lnaHQgRnVuY3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBDb250YWN0OiByYW1hbkB3b3JrdGlmLmNvbVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBMaWNlbnNlZCBXb3JrOiBsYW1iZGFfa2F0YV9ucG1fY2RrLCA8d29ya3RpZl9sYW1iZGFfa2F0YV9ucG1fY2RrPi5cbiAqIFVzZSBvZiB0aGlzIHNvZnR3YXJlIGlzIGdvdmVybmVkIGJ5IHRoZSBBcGFjaGUtMi4wOyBzZWUgdGhlIExJQ0VOU0UgZmlsZVxuICogb3IgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCBmb3IgZGV0YWlscy5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbi8qKlxuICogU25hcFN0YXJ0IEFjdGl2YXRvciAtIEN1c3RvbSBSZXNvdXJjZSBIYW5kbGVyXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIExhbWJkYSBoYW5kbGVyIGZvciBhIENsb3VkRm9ybWF0aW9uIEN1c3RvbSBSZXNvdXJjZVxuICogdGhhdCBlbmFibGVzIFNuYXBTdGFydCBvbiBMYW1iZGEgZnVuY3Rpb25zIGFmdGVyIGRlcGxveW1lbnQuIFNuYXBTdGFydCByZXF1aXJlc1xuICogYXN5bmNocm9ub3VzIHdhaXRpbmcgZm9yIHNuYXBzaG90IGNyZWF0aW9uLCB3aGljaCBjYW5ub3QgYmUgZG9uZSBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAqXG4gKiBUaGUgYWN0aXZhdGlvbiBwcm9jZXNzOlxuICogMS4gV2FpdCBmb3IgZnVuY3Rpb24gdG8gYmUgQWN0aXZlXG4gKiAyLiBFbmFibGUgU25hcFN0YXJ0IGNvbmZpZ3VyYXRpb25cbiAqIDMuIFdhaXQgZm9yIGNvbmZpZ3VyYXRpb24gdXBkYXRlXG4gKiA0LiBQdWJsaXNoIG5ldyB2ZXJzaW9uICh0cmlnZ2VycyBzbmFwc2hvdCBjcmVhdGlvbilcbiAqIDUuIFdhaXQgZm9yIHNuYXBzaG90IHRvIGJlIHJlYWR5ICh1cCB0byAzIG1pbnV0ZXMpXG4gKiA2LiBDcmVhdGUvdXBkYXRlICdrYXRhJyBhbGlhcyBwb2ludGluZyB0byB0aGUgbmV3IHZlcnNpb25cbiAqXG4gKiBAbW9kdWxlIHNuYXBzdGFydC1hY3RpdmF0b3JcbiAqL1xuXG5pbXBvcnQge1xuICAgIExhbWJkYUNsaWVudCxcbiAgICBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICAgIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZCxcbiAgICBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICAgIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gICAgR2V0QWxpYXNDb21tYW5kLFxuICAgIFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24sXG4gICAgd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjIsXG4gICAgd2FpdFVudGlsRnVuY3Rpb25BY3RpdmVWMixcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5cbi8qKlxuICogQ3VzdG9tIFJlc291cmNlIGV2ZW50IGZyb20gQ2xvdWRGb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUmVzb3VyY2VFdmVudCB7XG4gICAgUmVxdWVzdFR5cGU6ICdDcmVhdGUnIHwgJ1VwZGF0ZScgfCAnRGVsZXRlJztcbiAgICBTZXJ2aWNlVG9rZW46IHN0cmluZztcbiAgICBSZXNwb25zZVVSTDogc3RyaW5nO1xuICAgIFN0YWNrSWQ6IHN0cmluZztcbiAgICBSZXF1ZXN0SWQ6IHN0cmluZztcbiAgICBSZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgICBMb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nO1xuICAgIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZztcbiAgICBSZXNvdXJjZVByb3BlcnRpZXM6IHtcbiAgICAgICAgU2VydmljZVRva2VuOiBzdHJpbmc7XG4gICAgICAgIEZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICAgICAgICBBbGlhc05hbWU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBPbGRSZXNvdXJjZVByb3BlcnRpZXM/OiB7XG4gICAgICAgIEZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICAgICAgICBBbGlhc05hbWU/OiBzdHJpbmc7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBDdXN0b20gUmVzb3VyY2UgcmVzcG9uc2UgdG8gQ2xvdWRGb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUmVzb3VyY2VSZXNwb25zZSB7XG4gICAgU3RhdHVzOiAnU1VDQ0VTUycgfCAnRkFJTEVEJztcbiAgICBSZWFzb24/OiBzdHJpbmc7XG4gICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmc7XG4gICAgU3RhY2tJZDogc3RyaW5nO1xuICAgIFJlcXVlc3RJZDogc3RyaW5nO1xuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBzdHJpbmc7XG4gICAgRGF0YT86IHtcbiAgICAgICAgVmVyc2lvbj86IHN0cmluZztcbiAgICAgICAgQWxpYXNOYW1lPzogc3RyaW5nO1xuICAgICAgICBBbGlhc0Fybj86IHN0cmluZztcbiAgICAgICAgT3B0aW1pemF0aW9uU3RhdHVzPzogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBTbmFwU3RhcnQgYWN0aXZhdGlvbiBjeWNsZS5cbiAqXG4gKiBSZXR1cm5lZCBieSB7QGxpbmsgYWN0aXZhdGVTbmFwU3RhcnR9IGFmdGVyIGVuYWJsaW5nIFNuYXBTdGFydCxcbiAqIHB1Ymxpc2hpbmcgYSB2ZXJzaW9uLCB3YWl0aW5nIGZvciBzbmFwc2hvdCByZWFkaW5lc3MsIGFuZCBjcmVhdGluZy91cGRhdGluZyBhbiBhbGlhcy5cbiAqXG4gKiBAc2VlIHtAbGluayBTbmFwU3RhcnRBY3RpdmF0b3JDb25maWd9IGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbmFwU3RhcnRBY3RpdmF0aW9uUmVzdWx0IHtcbiAgICAvKiogVGhlIHB1Ymxpc2hlZCBMYW1iZGEgdmVyc2lvbiBudW1iZXIgKGUuZy4gXCI0MlwiKS4gKi9cbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBhbGlhcyBuYW1lIHRoYXQgd2FzIGNyZWF0ZWQgb3IgdXBkYXRlZCAoZS5nLiBcImthdGFcIikuICovXG4gICAgYWxpYXNOYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBmdWxsIEFSTiBvZiB0aGUgYWxpYXMgKGUuZy4gXCJhcm46YXdzOmxhbWJkYTp1cy1lYXN0LTE6MTIzNDU2Nzg5MDEyOmZ1bmN0aW9uOm15LWZuOmthdGFcIikuICovXG4gICAgYWxpYXNBcm46IHN0cmluZztcbiAgICAvKiogVGhlIFNuYXBTdGFydCBvcHRpbWl6YXRpb24gc3RhdHVzIG9mIHRoZSBwdWJsaXNoZWQgdmVyc2lvbiAoXCJPblwiLCBcIk9mZlwiLCBvciBcIlVua25vd25cIikuICovXG4gICAgb3B0aW1pemF0aW9uU3RhdHVzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU25hcFN0YXJ0IGFjdGl2YXRpb24gY3ljbGUuXG4gKlxuICogQWxsIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsIGFuZCBmYWxsIGJhY2sgdG8gc2Vuc2libGUgZGVmYXVsdHMuXG4gKlxuICogQHNlZSB7QGxpbmsgYWN0aXZhdGVTbmFwU3RhcnR9IGZvciB0aGUgZnVuY3Rpb24gdGhhdCBjb25zdW1lcyB0aGlzIGNvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNuYXBTdGFydEFjdGl2YXRvckNvbmZpZyB7XG4gICAgLyoqXG4gICAgICogTWF4aW11bSB0aW1lIGluIHNlY29uZHMgdG8gd2FpdCBmb3Igc25hcHNob3QgY3JlYXRpb24gYmVmb3JlIHByb2NlZWRpbmcuXG4gICAgICogSWYgZXhjZWVkZWQsIGEgd2FybmluZyBpcyBsb2dnZWQgYW5kIGFsaWFzIGNyZWF0aW9uIGNvbnRpbnVlcy5cbiAgICAgKiBAZGVmYXVsdCAxODBcbiAgICAgKi9cbiAgICBzbmFwc2hvdFRpbWVvdXRTZWNvbmRzPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIEludGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiBwb2xsaW5nIGF0dGVtcHRzIGZvciBzbmFwc2hvdCByZWFkaW5lc3MuXG4gICAgICogQGRlZmF1bHQgMlxuICAgICAqL1xuICAgIHBvbGxpbmdJbnRlcnZhbFNlY29uZHM/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogVGhlIExhbWJkYSBhbGlhcyBuYW1lIHRvIGNyZWF0ZSBvciB1cGRhdGUgYWZ0ZXIgcHVibGlzaGluZyBhIHZlcnNpb24uXG4gICAgICogQGRlZmF1bHQgJ2thdGEnXG4gICAgICovXG4gICAgYWxpYXNOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbCBPdmVycmlkZSBwcmUtcHVibGlzaCBkZWxheSBpbiBtaWxsaXNlY29uZHMgKGZvciB0ZXN0aW5nIG9ubHkpLlxuICAgICAqIEBkZWZhdWx0IDMwMDBcbiAgICAgKi9cbiAgICBfcHJlUHVibGlzaERlbGF5TXM/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsIE92ZXJyaWRlIHJldHJ5IGRlbGF5IGluIG1pbGxpc2Vjb25kcyAoZm9yIHRlc3Rpbmcgb25seSkuXG4gICAgICogQGRlZmF1bHQgNTAwMFxuICAgICAqL1xuICAgIF9yZXRyeURlbGF5TXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2YgUHVibGlzaFZlcnNpb24gKyBzbmFwc2hvdCBwb2xsaW5nIGF0dGVtcHRzLlxuICogRWFjaCByZXRyeSBwdWJsaXNoZXMgYSBORVcgdmVyc2lvbiAobmV3IHNuYXBzaG90IGF0dGVtcHQpLlxuICogQm91bmRlZCB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BzOyB0b3RhbCB3b3JzdC1jYXNlIHRpbWU6XG4gKiA1ICogKDE1cyBkZWxheSArIHB1Ymxpc2ggKyAxODBzIHBvbGwpIFx1MjI0OCAxNm1pbiwgd2l0aGluIExhbWJkYSAxNW1pbiBsaW1pdFxuICogKGJ1dCBzbmFwc2hvdCB0aW1lb3V0IGlzIHR5cGljYWxseSBtdWNoIHNob3J0ZXIgdGhhbiAxODBzIHBlciBhdHRlbXB0KS5cbiAqL1xuY29uc3QgTUFYX1BVQkxJU0hfUkVUUklFUyA9IDU7XG5cbi8qKlxuICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSByZXRyeWluZyBhIGZhaWxlZCBzbmFwc2hvdCBjcmVhdGlvbi5cbiAqIFNldCB0byAxNXMgdG8gZ2l2ZSB0cmFuc2llbnQgTGFtYmRhIGluaXQgZmFpbHVyZXMgdGltZSB0byBjbGVhci5cbiAqL1xuY29uc3QgUkVUUllfREVMQVlfTVMgPSAxNTAwMDtcblxuLyoqXG4gKiBEZWxheSBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIgd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjIgY29tcGxldGVzLFxuICogYmVmb3JlIHRoZSBmaXJzdCBQdWJsaXNoVmVyc2lvbiBjYWxsLiBNaXRpZ2F0ZXMgZXZlbnR1YWwgY29uc2lzdGVuY3lcbiAqIGJldHdlZW4gTGFtYmRhIGNvbmZpZyB1cGRhdGUgcHJvcGFnYXRpb24gYW5kIFB1Ymxpc2hWZXJzaW9uIGluaXQgcGhhc2UuXG4gKi9cbmNvbnN0IFBSRV9QVUJMSVNIX0RFTEFZX01TID0gMzAwMDtcblxuY29uc3QgREVGQVVMVF9DT05GSUc6IFJlcXVpcmVkPFNuYXBTdGFydEFjdGl2YXRvckNvbmZpZz4gPSB7XG4gICAgc25hcHNob3RUaW1lb3V0U2Vjb25kczogMTgwLFxuICAgIHBvbGxpbmdJbnRlcnZhbFNlY29uZHM6IDIsXG4gICAgYWxpYXNOYW1lOiAna2F0YScsXG4gICAgX3ByZVB1Ymxpc2hEZWxheU1zOiBQUkVfUFVCTElTSF9ERUxBWV9NUyxcbiAgICBfcmV0cnlEZWxheU1zOiBSRVRSWV9ERUxBWV9NUyxcbn07XG5cbi8qKlxuICogU2xlZXAgZm9yIHNwZWNpZmllZCBtaWxsaXNlY29uZHMuXG4gKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3RhYmlsaXR5IFx1MjAxNCB0ZXN0cyBjYW4gamVzdC5zcHlPbiB0byBhdm9pZCByZWFsIGRlbGF5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IF90ZXN0YWJsZSA9IHtcbiAgICBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgICB9LFxufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBlcnJvciAob3IgaXRzIGNhdXNlIGNoYWluKSBpcyBhIFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24uXG4gKlxuICogQVdTIFNESyB2MyB3YWl0ZXJzIG1heSB0aHJvdyB0aGUgdW5kZXJseWluZyBzZXJ2aWNlIGV4Y2VwdGlvbiBkaXJlY3RseSxcbiAqIG9yIHdyYXAgaXQgaW4gYSB3YWl0ZXItc3RhdGUgZXJyb3IuIFRoaXMgaGVscGVyIGluc3BlY3RzIGJvdGggdGhlIGVycm9yXG4gKiBpdHNlbGYgYW5kIGl0cyBgY2F1c2VgIHByb3BlcnR5IHRvIGRldGVjdCBlaXRoZXIgY2FzZS5cbiAqL1xuZnVuY3Rpb24gaXNSZXNvdXJjZU5vdEZvdW5kRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXYWl0ZXJzIG1heSB3cmFwIHRoZSBzZXJ2aWNlIGV4Y2VwdGlvbiBpbiBhIGNhdXNlIGNoYWluXG4gICAgICAgIGNvbnN0IGNhdXNlID0gKGVycm9yIGFzIEVycm9yICYgeyBjYXVzZT86IHVua25vd24gfSkuY2F1c2U7XG4gICAgICAgIGlmIChjYXVzZSBpbnN0YW5jZW9mIFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXVzZSBpbnN0YW5jZW9mIEVycm9yICYmIGNhdXNlLm5hbWUgPT09ICdSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJlcXVpcmVkIElBTSBwZXJtaXNzaW9ucyBmb3IgU25hcFN0YXJ0IGFjdGl2YXRpb24uXG4gKiBVc2VkIGluIGVycm9yIG1lc3NhZ2VzIHRvIGd1aWRlIHVzZXJzIHdoZW4gQWNjZXNzRGVuaWVkRXhjZXB0aW9uIG9jY3Vycy5cbiAqL1xuY29uc3QgUkVRVUlSRURfUEVSTUlTU0lPTlM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAgICdsYW1iZGE6R2V0RnVuY3Rpb24nLFxuICAgICdsYW1iZGE6R2V0RnVuY3Rpb25Db25maWd1cmF0aW9uJyxcbiAgICAnbGFtYmRhOlVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbicsXG4gICAgJ2xhbWJkYTpQdWJsaXNoVmVyc2lvbicsXG4gICAgJ2xhbWJkYTpHZXRBbGlhcycsXG4gICAgJ2xhbWJkYTpDcmVhdGVBbGlhcycsXG4gICAgJ2xhbWJkYTpVcGRhdGVBbGlhcycsXG5dO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGVycm9yIGlzIGFuIEFjY2Vzc0RlbmllZEV4Y2VwdGlvbi5cbiAqXG4gKiBBV1MgU0RLIHYzIG1heSB0aHJvdyBBY2Nlc3NEZW5pZWRFeGNlcHRpb24gZGlyZWN0bHkgb3Igd3JhcCBpdC5cbiAqIFRoaXMgaGVscGVyIGluc3BlY3RzIGJvdGggdGhlIGVycm9yIGl0c2VsZiBhbmQgaXRzIGBjYXVzZWAgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGlzQWNjZXNzRGVuaWVkRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0FjY2Vzc0RlbmllZEV4Y2VwdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhdXNlID0gKGVycm9yIGFzIEVycm9yICYgeyBjYXVzZT86IHVua25vd24gfSkuY2F1c2U7XG4gICAgICAgIGlmIChjYXVzZSBpbnN0YW5jZW9mIEVycm9yICYmIGNhdXNlLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cblxuLyoqXG4gKiBBY3RpdmF0ZXMgU25hcFN0YXJ0IG9uIGEgTGFtYmRhIGZ1bmN0aW9uLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIGZ1bGwgU25hcFN0YXJ0IGFjdGl2YXRpb24gY3ljbGU6XG4gKiAxLiBFbnN1cmVzIGZ1bmN0aW9uIGlzIEFjdGl2ZVxuICogMi4gRW5hYmxlcyBTbmFwU3RhcnQgY29uZmlndXJhdGlvblxuICogMy4gV2FpdHMgZm9yIGNvbmZpZ3VyYXRpb24gdXBkYXRlXG4gKiA0LiBQdWJsaXNoZXMgbmV3IHZlcnNpb24gKHdpdGggcmV0cnkgb24gc25hcHNob3QgZmFpbHVyZSlcbiAqIDUuIFdhaXRzIGZvciBzbmFwc2hvdCBjcmVhdGlvblxuICogNi4gQ3JlYXRlcy91cGRhdGVzIGFsaWFzXG4gKlxuICogU3RlcHMgMys0IGFyZSB3cmFwcGVkIGluIGEgcmV0cnkgbG9vcDogb24gU3RhdGU6IEZhaWxlZCwgYSBuZXcgdmVyc2lvblxuICogaXMgcHVibGlzaGVkICh1cCB0byBNQVhfUFVCTElTSF9SRVRSSUVTIGF0dGVtcHRzKSB0byBoYW5kbGUgdHJhbnNpZW50XG4gKiBpbml0aWFsaXphdGlvbiBmYWlsdXJlcyBkdXJpbmcgc25hcHNob3QgY3JlYXRpb24uXG4gKlxuICogQHBhcmFtIGxhbWJkYUNsaWVudCAtIEFXUyBMYW1iZGEgY2xpZW50XG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gTmFtZSBvciBBUk4gb2YgdGhlIExhbWJkYSBmdW5jdGlvblxuICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIEFjdGl2YXRpb24gcmVzdWx0IHdpdGggdmVyc2lvbiBhbmQgYWxpYXMgaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlU25hcFN0YXJ0KFxuICAgIGxhbWJkYUNsaWVudDogTGFtYmRhQ2xpZW50LFxuICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGNvbmZpZz86IFNuYXBTdGFydEFjdGl2YXRvckNvbmZpZyxcbik6IFByb21pc2U8U25hcFN0YXJ0QWN0aXZhdGlvblJlc3VsdD4ge1xuICAgIGNvbnN0IGNmZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9O1xuICAgIGNvbnN0IG1heEF0dGVtcHRzID0gTWF0aC5jZWlsKGNmZy5zbmFwc2hvdFRpbWVvdXRTZWNvbmRzIC8gY2ZnLnBvbGxpbmdJbnRlcnZhbFNlY29uZHMpO1xuXG4gICAgY29uc29sZS5sb2coJz0nLnJlcGVhdCg2MCkpO1xuICAgIGNvbnNvbGUubG9nKCdTTkFQU1RBUlQgQUNUSVZBVElPTiBDWUNMRScpO1xuICAgIGNvbnNvbGUubG9nKCc9Jy5yZXBlYXQoNjApKTtcbiAgICBjb25zb2xlLmxvZyhgRnVuY3Rpb246ICR7ZnVuY3Rpb25OYW1lfWApO1xuICAgIGNvbnNvbGUubG9nKGBUaW1lb3V0OiAke2NmZy5zbmFwc2hvdFRpbWVvdXRTZWNvbmRzfXMsIFBvbGxpbmc6ICR7Y2ZnLnBvbGxpbmdJbnRlcnZhbFNlY29uZHN9c2ApO1xuICAgIGNvbnNvbGUubG9nKGBNYXggcHVibGlzaCByZXRyaWVzOiAke01BWF9QVUJMSVNIX1JFVFJJRVN9YCk7XG5cbiAgICB0cnkge1xuICAgICAgICAvLyBTdGVwIDA6IEVuc3VyZSBmdW5jdGlvbiBpcyBBY3RpdmUgYmVmb3JlIHN0YXJ0aW5nXG4gICAgICAgIGNvbnNvbGUubG9nKCdcXG5bMC81XSBFbnN1cmluZyBmdW5jdGlvbiBpcyBBY3RpdmUuLi4nKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHdhaXRVbnRpbEZ1bmN0aW9uQWN0aXZlVjIoXG4gICAgICAgICAgICAgICAgeyBjbGllbnQ6IGxhbWJkYUNsaWVudCwgbWF4V2FpdFRpbWU6IDYwIH0sXG4gICAgICAgICAgICAgICAgeyBGdW5jdGlvbk5hbWU6IGZ1bmN0aW9uTmFtZSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGlzUmVzb3VyY2VOb3RGb3VuZEVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTGFtYmRhIGZ1bmN0aW9uICcke2Z1bmN0aW9uTmFtZX0nIGRvZXMgbm90IGV4aXN0LiBWZXJpZnkgdGhlIGZ1bmN0aW9uIG5hbWUgb3IgQVJOIGlzIGNvcnJlY3QuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBY2Nlc3NEZW5pZWRFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gYWN0aXZhdGUgU25hcFN0YXJ0IG9uICcke2Z1bmN0aW9uTmFtZX0nLiBgICtcbiAgICAgICAgICAgICAgICAgICAgYEVuc3VyZSB0aGUgZXhlY3V0aW9uIHJvbGUgaGFzIHRoZSBmb2xsb3dpbmcgcGVybWlzc2lvbnM6ICR7UkVRVUlSRURfUEVSTUlTU0lPTlMuam9pbignLCAnKX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCcgICAgICBGdW5jdGlvbiBpcyBBY3RpdmUnKTtcblxuICAgICAgICAvLyBTdGVwIDE6IEVuYWJsZSBTbmFwU3RhcnQgb24gdGhlIGZ1bmN0aW9uXG4gICAgICAgIGNvbnNvbGUubG9nKCdcXG5bMS81XSBFbmFibGluZyBTbmFwU3RhcnQgKEFwcGx5T246IFB1Ymxpc2hlZFZlcnNpb25zKS4uLicpO1xuICAgICAgICBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCh7XG4gICAgICAgICAgICBGdW5jdGlvbk5hbWU6IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgIFNuYXBTdGFydDogeyBBcHBseU9uOiAnUHVibGlzaGVkVmVyc2lvbnMnIH0sXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc29sZS5sb2coJyAgICAgIFNuYXBTdGFydCBjb25maWd1cmF0aW9uIHNlbnQnKTtcblxuICAgICAgICAvLyBTdGVwIDI6IFdhaXQgZm9yIGNvbmZpZ3VyYXRpb24gdXBkYXRlIHRvIGNvbXBsZXRlXG4gICAgICAgIGNvbnNvbGUubG9nKCdbMi81XSBXYWl0aW5nIGZvciBjb25maWd1cmF0aW9uIHVwZGF0ZS4uLicpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjIoXG4gICAgICAgICAgICAgICAgeyBjbGllbnQ6IGxhbWJkYUNsaWVudCwgbWF4V2FpdFRpbWU6IDEyMCB9LFxuICAgICAgICAgICAgICAgIHsgRnVuY3Rpb25OYW1lOiBmdW5jdGlvbk5hbWUgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChpc1Jlc291cmNlTm90Rm91bmRFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExhbWJkYSBmdW5jdGlvbiAnJHtmdW5jdGlvbk5hbWV9JyBkb2VzIG5vdCBleGlzdC4gVmVyaWZ5IHRoZSBmdW5jdGlvbiBuYW1lIG9yIEFSTiBpcyBjb3JyZWN0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQWNjZXNzRGVuaWVkRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgSW5zdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIGFjdGl2YXRlIFNuYXBTdGFydCBvbiAnJHtmdW5jdGlvbk5hbWV9Jy4gYCArXG4gICAgICAgICAgICAgICAgICAgIGBFbnN1cmUgdGhlIGV4ZWN1dGlvbiByb2xlIGhhcyB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zOiAke1JFUVVJUkVEX1BFUk1JU1NJT05TLmpvaW4oJywgJyl9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygnICAgICAgQ29uZmlndXJhdGlvbiB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuXG4gICAgICAgIC8vIFByZS1wdWJsaXNoIGRlbGF5OiBtaXRpZ2F0ZSBldmVudHVhbCBjb25zaXN0ZW5jeSBiZXR3ZWVuXG4gICAgICAgIC8vIExhbWJkYSBjb25maWcgdXBkYXRlIHByb3BhZ2F0aW9uIGFuZCBQdWJsaXNoVmVyc2lvbiBpbml0IHBoYXNlXG4gICAgICAgIGNvbnNvbGUubG9nKGAgICAgICBXYWl0aW5nICR7Y2ZnLl9wcmVQdWJsaXNoRGVsYXlNcyAvIDEwMDB9cyBmb3IgY29uZmlndXJhdGlvbiBwcm9wYWdhdGlvbi4uLmApO1xuICAgICAgICBhd2FpdCBfdGVzdGFibGUuc2xlZXAoY2ZnLl9wcmVQdWJsaXNoRGVsYXlNcyk7XG5cbiAgICAgICAgLy8gU3RlcHMgMys0OiBQdWJsaXNoIHZlcnNpb24gYW5kIHdhaXQgZm9yIHNuYXBzaG90IChXSVRIIFJFVFJZKVxuICAgICAgICBsZXQgdmVyc2lvbjogc3RyaW5nID0gJyc7XG4gICAgICAgIGxldCBvcHRpbWl6YXRpb25TdGF0dXMgPSAnVW5rbm93bic7XG4gICAgICAgIGxldCBzdGF0ZSA9ICdVbmtub3duJztcbiAgICAgICAgbGV0IGxhc3RGYWlsUmVhc29uID0gJyc7XG5cbiAgICAgICAgZm9yIChsZXQgcHVibGlzaEF0dGVtcHQgPSAxOyBwdWJsaXNoQXR0ZW1wdCA8PSBNQVhfUFVCTElTSF9SRVRSSUVTOyBwdWJsaXNoQXR0ZW1wdCsrKSB7XG4gICAgICAgICAgICAvLyBTdGVwIDM6IFB1Ymxpc2ggbmV3IHZlcnNpb24gdG8gY3JlYXRlIHNuYXBzaG90XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgWzMvNV0gUHVibGlzaGluZyBuZXcgdmVyc2lvbiAoYXR0ZW1wdCAke3B1Ymxpc2hBdHRlbXB0fS8ke01BWF9QVUJMSVNIX1JFVFJJRVN9KS4uLmApO1xuXG4gICAgICAgICAgICAvLyBCZWZvcmUgcmUtcHVibGlzaCAoYXR0ZW1wdCA+IDEpLCB3YWl0IGFuZCBlbnN1cmUgZnVuY3Rpb24gaXMgcmVhZHlcbiAgICAgICAgICAgIGlmIChwdWJsaXNoQXR0ZW1wdCA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgICAgV2FpdGluZyAke2NmZy5fcmV0cnlEZWxheU1zIC8gMTAwMH1zIGJlZm9yZSByZXRyeS4uLmApO1xuICAgICAgICAgICAgICAgIGF3YWl0IF90ZXN0YWJsZS5zbGVlcChjZmcuX3JldHJ5RGVsYXlNcyk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJyAgICAgIEVuc3VyaW5nIGZ1bmN0aW9uIGlzIEFjdGl2ZSBiZWZvcmUgcmUtcHVibGlzaC4uLicpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHdhaXRVbnRpbEZ1bmN0aW9uQWN0aXZlVjIoXG4gICAgICAgICAgICAgICAgICAgIHsgY2xpZW50OiBsYW1iZGFDbGllbnQsIG1heFdhaXRUaW1lOiA2MCB9LFxuICAgICAgICAgICAgICAgICAgICB7IEZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIC8vIEZvcmNlIGEgY29uZmlnIHVwZGF0ZSBzbyBQdWJsaXNoVmVyc2lvbiBjcmVhdGVzIGEgZ2VudWluZWx5IG5ldyB2ZXJzaW9uLlxuICAgICAgICAgICAgICAgIC8vIFdpdGhvdXQgdGhpcywgUHVibGlzaFZlcnNpb24gcmV0dXJucyB0aGUgc2FtZSAoRmFpbGVkKSB2ZXJzaW9uIG51bWJlclxuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgTGFtYmRhIGRlZHVwbGljYXRlcyBpZGVudGljYWwgY29uZmlndXJhdGlvbnMuXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJyAgICAgIFJlLWFwcGx5aW5nIFNuYXBTdGFydCBjb25maWcgdG8gZm9yY2UgbmV3IHZlcnNpb24uLi4nKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCh7XG4gICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICBTbmFwU3RhcnQ6IHsgQXBwbHlPbjogJ1B1Ymxpc2hlZFZlcnNpb25zJyB9LFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB3YWl0VW50aWxGdW5jdGlvblVwZGF0ZWRWMihcbiAgICAgICAgICAgICAgICAgICAgeyBjbGllbnQ6IGxhbWJkYUNsaWVudCwgbWF4V2FpdFRpbWU6IDEyMCB9LFxuICAgICAgICAgICAgICAgICAgICB7IEZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgICBXYWl0aW5nICR7Y2ZnLl9wcmVQdWJsaXNoRGVsYXlNcyAvIDEwMDB9cyBmb3IgY29uZmlndXJhdGlvbiBwcm9wYWdhdGlvbi4uLmApO1xuICAgICAgICAgICAgICAgIGF3YWl0IF90ZXN0YWJsZS5zbGVlcChjZmcuX3ByZVB1Ymxpc2hEZWxheU1zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcHVibGlzaFJlc3BvbnNlID0gYXdhaXQgbGFtYmRhQ2xpZW50LnNlbmQobmV3IFB1Ymxpc2hWZXJzaW9uQ29tbWFuZCh7XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgRGVzY3JpcHRpb246IGBTbmFwU3RhcnQgZW5hYmxlZCAtICR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSAoYXR0ZW1wdCAke3B1Ymxpc2hBdHRlbXB0fSlgLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdmVyc2lvbiA9IHB1Ymxpc2hSZXNwb25zZS5WZXJzaW9uITtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgICBQdWJsaXNoZWQgdmVyc2lvbjogJHt2ZXJzaW9ufWApO1xuXG4gICAgICAgICAgICAvLyBTdGVwIDQ6IFdhaXQgZm9yIHNuYXBzaG90IG9wdGltaXphdGlvbiBhbmQgdmVyaWZ5IHN0YXR1c1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1s0LzVdIFdhaXRpbmcgZm9yIFNuYXBTdGFydCBzbmFwc2hvdCBjcmVhdGlvbi4uLicpO1xuICAgICAgICAgICAgc3RhdGUgPSAnVW5rbm93bic7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgbWF4QXR0ZW1wdHM7IGF0dGVtcHQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb25Db25maWcgPSBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCh7XG4gICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICBRdWFsaWZpZXI6IHZlcnNpb24sXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc25hcFN0YXJ0U3RhdHVzID0gdmVyc2lvbkNvbmZpZy5TbmFwU3RhcnQgPz8ge307XG4gICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uU3RhdHVzID0gc25hcFN0YXJ0U3RhdHVzLk9wdGltaXphdGlvblN0YXR1cyA/PyAnVW5rbm93bic7XG4gICAgICAgICAgICAgICAgc3RhdGUgPSB2ZXJzaW9uQ29uZmlnLlN0YXRlID8/ICdVbmtub3duJztcblxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gJ0FjdGl2ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJyAgICAgIFNuYXBTdGFydCBzbmFwc2hvdCByZWFkeSEnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYCAgICAgIE9wdGltaXphdGlvblN0YXR1czogJHtvcHRpbWl6YXRpb25TdGF0dXN9YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgICBTdGF0ZTogJHtzdGF0ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ0ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdEZhaWxSZWFzb24gPSB2ZXJzaW9uQ29uZmlnLlN0YXRlUmVhc29uID8/ICdVbmtub3duJztcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYCAgICAgIFNuYXBzaG90IGNyZWF0aW9uIGZhaWxlZDogJHtsYXN0RmFpbFJlYXNvbn1gKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2hvdyBwcm9ncmVzcyBldmVyeSAxMCBhdHRlbXB0cyBvciBmaXJzdCA1XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdHRlbXB0ICUgMTAgPT09IDAgfHwgYXR0ZW1wdCA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsYXBzZWQgPSBhdHRlbXB0ICogY2ZnLnBvbGxpbmdJbnRlcnZhbFNlY29uZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgICAgQ3JlYXRpbmcgc25hcHNob3QuLi4gU3RhdHVzOiAke29wdGltaXphdGlvblN0YXR1c30sIFN0YXRlOiAke3N0YXRlfSAoJHtlbGFwc2VkfXMgZWxhcHNlZClgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGF3YWl0IF90ZXN0YWJsZS5zbGVlcChjZmcucG9sbGluZ0ludGVydmFsU2Vjb25kcyAqIDEwMDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJZiBzbmFwc2hvdCBzdWNjZWVkZWQsIGJyZWFrIG91dCBvZiByZXRyeSBsb29wXG4gICAgICAgICAgICBpZiAoc3RhdGUgPT09ICdBY3RpdmUnKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE9ubHkgcmV0cnkgb24gRmFpbGVkIHN0YXRlIFx1MjAxNCB0aW1lb3V0IChQZW5kaW5nKSBzaG91bGQgbm90IHJldHJ5XG4gICAgICAgICAgICBpZiAoc3RhdGUgIT09ICdGYWlsZWQnKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIGZhaWxlZCBhbmQgd2UgaGF2ZSByZXRyaWVzIGxlZnQsIGxvZyBhbmQgY29udGludWVcbiAgICAgICAgICAgIGlmIChwdWJsaXNoQXR0ZW1wdCA8IE1BWF9QVUJMSVNIX1JFVFJJRVMpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgICAgU25hcHNob3QgZmFpbGVkIG9uIGF0dGVtcHQgJHtwdWJsaXNoQXR0ZW1wdH0sIHdpbGwgcmV0cnkgd2l0aCBuZXcgdmVyc2lvbi4uLmApO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgICBSZWFzb246ICR7bGFzdEZhaWxSZWFzb259YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZnRlciBhbGwgcmV0cmllcywgY2hlY2sgZmluYWwgc3RhdGVcbiAgICAgICAgaWYgKHN0YXRlID09PSAnRmFpbGVkJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCAgICAgIEFsbCAke01BWF9QVUJMSVNIX1JFVFJJRVN9IHNuYXBzaG90IGF0dGVtcHRzIGZhaWxlZC5gKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgICBSZWFzb246ICR7bGFzdEZhaWxSZWFzb259YCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnICAgICAgW0xhbWJkYSBLYXRhXSBTbmFwU3RhcnQgb3B0aW1pemF0aW9uIGZhaWxlZC4gQWxpYXMgd2lsbCBiZSBjcmVhdGVkIHBvaW50aW5nJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnICAgICAgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLiBGdW5jdGlvbiByZW1haW5zIG9wZXJhdGlvbmFsIHdpdGhvdXQgU25hcFN0YXJ0LicpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyAgICAgIFJldmlldyBDbG91ZFdhdGNoIGxvZ3MgZm9yIGluaXRpYWxpemF0aW9uIGVycm9ycy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHdlIHRpbWVkIG91dFxuICAgICAgICBpZiAoc3RhdGUgIT09ICdBY3RpdmUnICYmIHN0YXRlICE9PSAnRmFpbGVkJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCAgICAgIFdhcm5pbmc6IFNuYXBzaG90IGNyZWF0aW9uIHRpbWVvdXQgYWZ0ZXIgJHtjZmcuc25hcHNob3RUaW1lb3V0U2Vjb25kc31zYCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgICAgRmluYWwgc3RhdHVzOiBPcHRpbWl6YXRpb25TdGF0dXM9JHtvcHRpbWl6YXRpb25TdGF0dXN9LCBTdGF0ZT0ke3N0YXRlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcCA1OiBDcmVhdGUgb3IgdXBkYXRlIGFsaWFzXG4gICAgICAgIGNvbnNvbGUubG9nKGBbNS81XSBDcmVhdGluZy91cGRhdGluZyBhbGlhcyAnJHtjZmcuYWxpYXNOYW1lfScgLT4gdmVyc2lvbiAke3ZlcnNpb259Li4uYCk7XG4gICAgICAgIGxldCBhbGlhc0Fybjogc3RyaW5nO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IGV4aXN0aW5nIGFsaWFzXG4gICAgICAgICAgICBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgR2V0QWxpYXNDb21tYW5kKHtcbiAgICAgICAgICAgICAgICBGdW5jdGlvbk5hbWU6IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICBOYW1lOiBjZmcuYWxpYXNOYW1lLFxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAvLyBBbGlhcyBleGlzdHMsIHVwZGF0ZSBpdFxuICAgICAgICAgICAgY29uc3QgdXBkYXRlUmVzcG9uc2UgPSBhd2FpdCBsYW1iZGFDbGllbnQuc2VuZChuZXcgVXBkYXRlQWxpYXNDb21tYW5kKHtcbiAgICAgICAgICAgICAgICBGdW5jdGlvbk5hbWU6IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICBOYW1lOiBjZmcuYWxpYXNOYW1lLFxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbjogJ0xhbWJkYSBLYXRhIFNuYXBTdGFydC1lbmFibGVkIHZlcnNpb24nLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgYWxpYXNBcm4gPSB1cGRhdGVSZXNwb25zZS5BbGlhc0FybiE7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgICAgVXBkYXRlZCBleGlzdGluZyBhbGlhczogJHthbGlhc0Fybn1gKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGJ5IGVycm9yIG5hbWUgZm9yIGJldHRlciB0ZXN0YWJpbGl0eVxuICAgICAgICAgICAgY29uc3QgaXNSZXNvdXJjZU5vdEZvdW5kID0gZXJyb3IgaW5zdGFuY2VvZiBSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIHx8XG4gICAgICAgICAgICAgICAgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3IubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKTtcblxuICAgICAgICAgICAgaWYgKGlzUmVzb3VyY2VOb3RGb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIEFsaWFzIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBpdFxuICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVJlc3BvbnNlID0gYXdhaXQgbGFtYmRhQ2xpZW50LnNlbmQobmV3IENyZWF0ZUFsaWFzQ29tbWFuZCh7XG4gICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICBOYW1lOiBjZmcuYWxpYXNOYW1lLFxuICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uOiAnTGFtYmRhIEthdGEgU25hcFN0YXJ0LWVuYWJsZWQgdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIGFsaWFzQXJuID0gY3JlYXRlUmVzcG9uc2UuQWxpYXNBcm4hO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgICBDcmVhdGVkIG5ldyBhbGlhczogJHthbGlhc0Fybn1gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygnXFxuJyArICc9Jy5yZXBlYXQoNjApKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1NOQVBTVEFSVCBBQ1RJVkFUSU9OIENPTVBMRVRFJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCc9Jy5yZXBlYXQoNjApKTtcbiAgICAgICAgY29uc29sZS5sb2coYFZlcnNpb246ICR7dmVyc2lvbn1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYEFsaWFzOiAke2NmZy5hbGlhc05hbWV9IC0+ICR7YWxpYXNBcm59YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGBPcHRpbWl6YXRpb25TdGF0dXM6ICR7b3B0aW1pemF0aW9uU3RhdHVzfWApO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgICAgYWxpYXNOYW1lOiBjZmcuYWxpYXNOYW1lLFxuICAgICAgICAgICAgYWxpYXNBcm4sXG4gICAgICAgICAgICBvcHRpbWl6YXRpb25TdGF0dXMsXG4gICAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gQ2F0Y2ggQWNjZXNzRGVuaWVkRXhjZXB0aW9uIGZyb20gYW55IExhbWJkYSBBUEkgY2FsbCAoc2VuZCBjYWxscylcbiAgICAgICAgLy8gdGhhdCBpc24ndCBhbHJlYWR5IGhhbmRsZWQgYnkgdGhlIHdhaXRlciB0cnktY2F0Y2ggYmxvY2tzXG4gICAgICAgIGlmIChpc0FjY2Vzc0RlbmllZEVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gYWN0aXZhdGUgU25hcFN0YXJ0IG9uICcke2Z1bmN0aW9uTmFtZX0nLiBgICtcbiAgICAgICAgICAgICAgICBgRW5zdXJlIHRoZSBleGVjdXRpb24gcm9sZSBoYXMgdGhlIGZvbGxvd2luZyBwZXJtaXNzaW9uczogJHtSRVFVSVJFRF9QRVJNSVNTSU9OUy5qb2luKCcsICcpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuXG4vKipcbiAqIExhbWJkYSBoYW5kbGVyIGZvciBDbG91ZEZvcm1hdGlvbiBDdXN0b20gUmVzb3VyY2UuXG4gKlxuICogVGhpcyBoYW5kbGVyIGlzIGludm9rZWQgYnkgQ2xvdWRGb3JtYXRpb24gd2hlbiB0aGUgY3VzdG9tIHJlc291cmNlXG4gKiBpcyBjcmVhdGVkLCB1cGRhdGVkLCBvciBkZWxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQ3VzdG9tUmVzb3VyY2VFdmVudCk6IFByb21pc2U8Q3VzdG9tUmVzb3VyY2VSZXNwb25zZT4ge1xuICAgIGNvbnNvbGUubG9nKCdDdXN0b20gUmVzb3VyY2UgRXZlbnQ6JywgSlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpKTtcblxuICAgIGNvbnN0IHsgUmVxdWVzdFR5cGUsIFN0YWNrSWQsIFJlcXVlc3RJZCwgTG9naWNhbFJlc291cmNlSWQsIFJlc291cmNlUHJvcGVydGllcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gUmVzb3VyY2VQcm9wZXJ0aWVzLkZ1bmN0aW9uTmFtZTtcbiAgICBjb25zdCBhbGlhc05hbWUgPSBSZXNvdXJjZVByb3BlcnRpZXMuQWxpYXNOYW1lID8/ICdrYXRhJztcblxuICAgIC8vIFBoeXNpY2FsIHJlc291cmNlIElEIGZvcm1hdDoge2Z1bmN0aW9uTmFtZX06c25hcHN0YXJ0OnthbGlhc05hbWV9XG4gICAgY29uc3QgcGh5c2ljYWxSZXNvdXJjZUlkID0gZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkID8/IGAke2Z1bmN0aW9uTmFtZX06c25hcHN0YXJ0OiR7YWxpYXNOYW1lfWA7XG5cbiAgICBjb25zdCBiYXNlUmVzcG9uc2U6IE9taXQ8Q3VzdG9tUmVzb3VyY2VSZXNwb25zZSwgJ1N0YXR1cycgfCAnUmVhc29uJyB8ICdEYXRhJz4gPSB7XG4gICAgICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgICBTdGFja0lkLFxuICAgICAgICBSZXF1ZXN0SWQsXG4gICAgICAgIExvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgICBpZiAoUmVxdWVzdFR5cGUgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgICAvLyBPbiBkZWxldGUsIHdlIGRvbid0IHJlbW92ZSBTbmFwU3RhcnQgb3IgdGhlIGFsaWFzXG4gICAgICAgICAgICAvLyBUaGUgTGFtYmRhIGZ1bmN0aW9uIGl0c2VsZiB3aWxsIGJlIGRlbGV0ZWQgYnkgQ2xvdWRGb3JtYXRpb25cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEZWxldGUgcmVxdWVzdCAtIG5vIGFjdGlvbiBuZWVkZWQgKExhbWJkYSB3aWxsIGJlIGRlbGV0ZWQgYnkgQ2xvdWRGb3JtYXRpb24pJyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmJhc2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICBTdGF0dXM6ICdTVUNDRVNTJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgb3IgVXBkYXRlIC0gYWN0aXZhdGUgU25hcFN0YXJ0XG4gICAgICAgIGNvbnN0IGxhbWJkYUNsaWVudCA9IG5ldyBMYW1iZGFDbGllbnQoe30pO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFjdGl2YXRlU25hcFN0YXJ0KGxhbWJkYUNsaWVudCwgZnVuY3Rpb25OYW1lLCB7IGFsaWFzTmFtZSB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZVJlc3BvbnNlLFxuICAgICAgICAgICAgU3RhdHVzOiAnU1VDQ0VTUycsXG4gICAgICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgICAgICAgVmVyc2lvbjogcmVzdWx0LnZlcnNpb24sXG4gICAgICAgICAgICAgICAgQWxpYXNOYW1lOiByZXN1bHQuYWxpYXNOYW1lLFxuICAgICAgICAgICAgICAgIEFsaWFzQXJuOiByZXN1bHQuYWxpYXNBcm4sXG4gICAgICAgICAgICAgICAgT3B0aW1pemF0aW9uU3RhdHVzOiByZXN1bHQub3B0aW1pemF0aW9uU3RhdHVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NuYXBTdGFydCBhY3RpdmF0aW9uIGZhaWxlZDonLCBlcnJvck1lc3NhZ2UpO1xuXG4gICAgICAgIC8vIE9uIFVwZGF0ZSByZXF1ZXN0cywgcmV0dXJuIFNVQ0NFU1MgZXZlbiBvbiBmYWlsdXJlIHRvIHByZXZlbnRcbiAgICAgICAgLy8gQ2xvdWRGb3JtYXRpb24gcm9sbGJhY2sgZnJvbSBnZXR0aW5nIHN0dWNrIGluIFVQREFURV9ST0xMQkFDS19GQUlMRUQuXG4gICAgICAgIC8vIFJldHVybmluZyBGQUlMRUQgZnJvbSBhbiBVcGRhdGUgZHVyaW5nIHJvbGxiYWNrIGJsb2NrcyB0aGUgZW50aXJlIHN0YWNrLlxuICAgICAgICAvLyBUaGUgZnVuY3Rpb24gcmVtYWlucyBvcGVyYXRpb25hbCB3aXRoIGl0cyBwcmV2aW91cyBjb25maWd1cmF0aW9uLlxuICAgICAgICBpZiAoUmVxdWVzdFR5cGUgPT09ICdVcGRhdGUnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUmV0dXJuaW5nIFNVQ0NFU1MgZm9yIFVwZGF0ZSByZXF1ZXN0IHRvIHByZXZlbnQgcm9sbGJhY2sgZGVhZGxvY2suJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnVGhlIGZ1bmN0aW9uIHdpbGwgY29udGludWUgd2l0aCBpdHMgcHJldmlvdXMgU25hcFN0YXJ0IGNvbmZpZ3VyYXRpb24uJyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmJhc2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICBTdGF0dXM6ICdTVUNDRVNTJyxcbiAgICAgICAgICAgICAgICBSZWFzb246IGBTbmFwU3RhcnQgYWN0aXZhdGlvbiBmYWlsZWQgKG5vbi1ibG9ja2luZyk6ICR7ZXJyb3JNZXNzYWdlfWAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VSZXNwb25zZSxcbiAgICAgICAgICAgIFN0YXR1czogJ0ZBSUxFRCcsXG4gICAgICAgICAgICBSZWFzb246IGBTbmFwU3RhcnQgYWN0aXZhdGlvbiBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfWAsXG4gICAgICAgIH07XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogInlhQUFBLElBQUFBLEVBQUEsR0FBQUMsRUFBQUQsRUFBQSxlQUFBRSxFQUFBLHNCQUFBQyxFQUFBLFlBQUFDLElBQUEsZUFBQUMsRUFBQUwsR0E4QkEsSUFBQU0sRUFXTyxrQ0F5R0RDLEVBQXNCLEVBTXRCQyxFQUFpQixLQU9qQkMsRUFBdUIs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OiBbInNuYXBzdGFydF9hY3RpdmF0b3JfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJfdGVzdGFibGUiLCAiYWN0aXZhdGVTbmFwU3RhcnQiLCAiaGFuZGxlciIsICJfX3RvQ29tbW9uSlMiLCAiaW1wb3J0X2NsaWVudF9sYW1iZGEiLCAiTUFYX1BVQkxJU0hfUkVUUklFUyIsICJSRVRSWV9ERUxBWV9NUyIsICJQUkVfUFVCTElTSF9ERUxBWV9NUyIsICJERUZBVUxUX0NPTkZJRyIsICJtcyIsICJyZXNvbHZlIiwgImlzUmVzb3VyY2VOb3RGb3VuZEVycm9yIiwgImVycm9yIiwgImNhdXNlIiwgIlJFUVVJUkVEX1BFUk1JU1NJT05TIiwgImlzQWNjZXNzRGVuaWVkRXJyb3IiLCAibGFtYmRhQ2xpZW50IiwgImZ1bmN0aW9uTmFtZSIsICJjb25maWciLCAiY2ZnIiwgIm1heEF0dGVtcHRzIiwgInZlcnNpb24iLCAib3B0aW1pemF0aW9uU3RhdHVzIiwgInN0YXRlIiwgImxhc3RGYWlsUmVhc29uIiwgInB1Ymxpc2hBdHRlbXB0IiwgImF0dGVtcHQiLCAidmVyc2lvbkNvbmZpZyIsICJlbGFwc2VkIiwgImFsaWFzQXJuIiwgImV2ZW50IiwgIlJlcXVlc3RUeXBlIiwgIlN0YWNrSWQiLCAiUmVxdWVzdElkIiwgIkxvZ2ljYWxSZXNvdXJjZUlkIiwgIlJlc291cmNlUHJvcGVydGllcyIsICJhbGlhc05hbWUiLCAiYmFzZVJlc3BvbnNlIiwgInJlc3VsdCIsICJlcnJvck1lc3NhZ2UiXQp9Cg==
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SnapStart Construct - CDK Custom Resource for SnapStart Activation
|
|
3
|
-
*
|
|
4
|
-
* This module provides a CDK construct that creates a Custom Resource
|
|
5
|
-
* to enable SnapStart on Lambda functions after deployment. The construct
|
|
6
|
-
* handles the asynchronous nature of SnapStart snapshot creation.
|
|
7
|
-
*
|
|
8
|
-
* @module snapstart-construct
|
|
9
|
-
*/
|
|
10
1
|
import { Construct } from 'constructs';
|
|
11
2
|
import { CustomResource } from 'aws-cdk-lib';
|
|
12
3
|
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
@@ -102,11 +93,4 @@ export declare class SnapStartActivator extends Construct {
|
|
|
102
93
|
* IAM propagation race conditions.
|
|
103
94
|
*/
|
|
104
95
|
private createProviderFunction;
|
|
105
|
-
/**
|
|
106
|
-
* Generates the inline handler code for the Custom Resource.
|
|
107
|
-
*
|
|
108
|
-
* This is a self-contained version of the snapstart-activator logic
|
|
109
|
-
* that can be deployed as inline Lambda code.
|
|
110
|
-
*/
|
|
111
|
-
private generateHandlerCode;
|
|
112
96
|
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lambda-kata/cdk",
|
|
3
|
-
"version": "0.1.3-rc.
|
|
3
|
+
"version": "0.1.3-rc.93",
|
|
4
4
|
"description": "AWS CDK integration for Lambda Kata - Node.js Lambdas running via Lambda Kata runtime",
|
|
5
5
|
"main": "out/dist/index.js",
|
|
6
6
|
"types": "out/tsc/src/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"build": "rm -rf ./dist && rm -rf ./out && rm -rf ./lib && yarn run build:cdk && yarn run types",
|
|
8
|
+
"build": "rm -rf ./dist && rm -rf ./out && rm -rf ./lib && yarn run build:cdk && yarn run build:snapstart && yarn run types",
|
|
9
|
+
"build:snapstart": "yarn run build:config && node dist/utils/build.js --target=snapstartHandler",
|
|
9
10
|
"types": "tsc --emitDeclarationOnly && tsc-alias",
|
|
10
11
|
"build:cdk": "yarn run build:config && node dist/utils/build.js --target=cdk",
|
|
11
12
|
"build:minify": "yarn run build:config && node dist/utils/build.js",
|