UNPKG

@aws-cdk/aws-ecs

Version:

The CDK Construct Library for AWS::ECS

254 lines 24 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.TmpfsMountOption = exports.DevicePermission = exports.Capability = exports.LinuxParameters = void 0; const jsiiDeprecationWarnings = require("../.warnings.jsii.js"); const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdk = require("@aws-cdk/core"); // keep this import separate from other imports to reduce chance for merge conflicts with v2-main // eslint-disable-next-line no-duplicate-imports, import/order const core_1 = require("@aws-cdk/core"); /** * Linux-specific options that are applied to the container. */ class LinuxParameters extends core_1.Construct { /** * Constructs a new instance of the LinuxParameters class. */ constructor(scope, id, props = {}) { super(scope, id); /** * Capabilities to be added */ this.capAdd = new Array(); /** * Capabilities to be dropped */ this.capDrop = new Array(); /** * Device mounts */ this.devices = new Array(); /** * TmpFs mounts */ this.tmpfs = new Array(); try { jsiiDeprecationWarnings._aws_cdk_aws_ecs_LinuxParametersProps(props); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.constructor); } throw error; } this.sharedMemorySize = props.sharedMemorySize; this.initProcessEnabled = props.initProcessEnabled; } /** * Adds one or more Linux capabilities to the Docker configuration of a container. * * Only works with EC2 launch type. */ addCapabilities(...cap) { try { jsiiDeprecationWarnings._aws_cdk_aws_ecs_Capability(cap); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.addCapabilities); } throw error; } this.capAdd.push(...cap); } /** * Removes one or more Linux capabilities to the Docker configuration of a container. * * Only works with EC2 launch type. */ dropCapabilities(...cap) { try { jsiiDeprecationWarnings._aws_cdk_aws_ecs_Capability(cap); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.dropCapabilities); } throw error; } this.capDrop.push(...cap); } /** * Adds one or more host devices to a container. */ addDevices(...device) { try { jsiiDeprecationWarnings._aws_cdk_aws_ecs_Device(device); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.addDevices); } throw error; } this.devices.push(...device); } /** * Specifies the container path, mount options, and size (in MiB) of the tmpfs mount for a container. * * Only works with EC2 launch type. */ addTmpfs(...tmpfs) { try { jsiiDeprecationWarnings._aws_cdk_aws_ecs_Tmpfs(tmpfs); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.addTmpfs); } throw error; } this.tmpfs.push(...tmpfs); } /** * Renders the Linux parameters to a CloudFormation object. */ renderLinuxParameters() { return { initProcessEnabled: this.initProcessEnabled, sharedMemorySize: this.sharedMemorySize, capabilities: { add: cdk.Lazy.list({ produce: () => this.capAdd }, { omitEmpty: true }), drop: cdk.Lazy.list({ produce: () => this.capDrop }, { omitEmpty: true }), }, devices: cdk.Lazy.any({ produce: () => this.devices.map(renderDevice) }, { omitEmptyArray: true }), tmpfs: cdk.Lazy.any({ produce: () => this.tmpfs.map(renderTmpfs) }, { omitEmptyArray: true }), }; } } exports.LinuxParameters = LinuxParameters; _a = JSII_RTTI_SYMBOL_1; LinuxParameters[_a] = { fqn: "@aws-cdk/aws-ecs.LinuxParameters", version: "1.156.1" }; function renderDevice(device) { return { containerPath: device.containerPath, hostPath: device.hostPath, permissions: device.permissions, }; } function renderTmpfs(tmpfs) { return { containerPath: tmpfs.containerPath, size: tmpfs.size, mountOptions: tmpfs.mountOptions, }; } /** * A Linux capability */ var Capability; (function (Capability) { Capability["ALL"] = "ALL"; Capability["AUDIT_CONTROL"] = "AUDIT_CONTROL"; Capability["AUDIT_WRITE"] = "AUDIT_WRITE"; Capability["BLOCK_SUSPEND"] = "BLOCK_SUSPEND"; Capability["CHOWN"] = "CHOWN"; Capability["DAC_OVERRIDE"] = "DAC_OVERRIDE"; Capability["DAC_READ_SEARCH"] = "DAC_READ_SEARCH"; Capability["FOWNER"] = "FOWNER"; Capability["FSETID"] = "FSETID"; Capability["IPC_LOCK"] = "IPC_LOCK"; Capability["IPC_OWNER"] = "IPC_OWNER"; Capability["KILL"] = "KILL"; Capability["LEASE"] = "LEASE"; Capability["LINUX_IMMUTABLE"] = "LINUX_IMMUTABLE"; Capability["MAC_ADMIN"] = "MAC_ADMIN"; Capability["MAC_OVERRIDE"] = "MAC_OVERRIDE"; Capability["MKNOD"] = "MKNOD"; Capability["NET_ADMIN"] = "NET_ADMIN"; Capability["NET_BIND_SERVICE"] = "NET_BIND_SERVICE"; Capability["NET_BROADCAST"] = "NET_BROADCAST"; Capability["NET_RAW"] = "NET_RAW"; Capability["SETFCAP"] = "SETFCAP"; Capability["SETGID"] = "SETGID"; Capability["SETPCAP"] = "SETPCAP"; Capability["SETUID"] = "SETUID"; Capability["SYS_ADMIN"] = "SYS_ADMIN"; Capability["SYS_BOOT"] = "SYS_BOOT"; Capability["SYS_CHROOT"] = "SYS_CHROOT"; Capability["SYS_MODULE"] = "SYS_MODULE"; Capability["SYS_NICE"] = "SYS_NICE"; Capability["SYS_PACCT"] = "SYS_PACCT"; Capability["SYS_PTRACE"] = "SYS_PTRACE"; Capability["SYS_RAWIO"] = "SYS_RAWIO"; Capability["SYS_RESOURCE"] = "SYS_RESOURCE"; Capability["SYS_TIME"] = "SYS_TIME"; Capability["SYS_TTY_CONFIG"] = "SYS_TTY_CONFIG"; Capability["SYSLOG"] = "SYSLOG"; Capability["WAKE_ALARM"] = "WAKE_ALARM"; })(Capability = exports.Capability || (exports.Capability = {})); /** * Permissions for device access */ var DevicePermission; (function (DevicePermission) { /** * Read */ DevicePermission["READ"] = "read"; /** * Write */ DevicePermission["WRITE"] = "write"; /** * Make a node */ DevicePermission["MKNOD"] = "mknod"; })(DevicePermission = exports.DevicePermission || (exports.DevicePermission = {})); /** * The supported options for a tmpfs mount for a container. */ var TmpfsMountOption; (function (TmpfsMountOption) { TmpfsMountOption["DEFAULTS"] = "defaults"; TmpfsMountOption["RO"] = "ro"; TmpfsMountOption["RW"] = "rw"; TmpfsMountOption["SUID"] = "suid"; TmpfsMountOption["NOSUID"] = "nosuid"; TmpfsMountOption["DEV"] = "dev"; TmpfsMountOption["NODEV"] = "nodev"; TmpfsMountOption["EXEC"] = "exec"; TmpfsMountOption["NOEXEC"] = "noexec"; TmpfsMountOption["SYNC"] = "sync"; TmpfsMountOption["ASYNC"] = "async"; TmpfsMountOption["DIRSYNC"] = "dirsync"; TmpfsMountOption["REMOUNT"] = "remount"; TmpfsMountOption["MAND"] = "mand"; TmpfsMountOption["NOMAND"] = "nomand"; TmpfsMountOption["ATIME"] = "atime"; TmpfsMountOption["NOATIME"] = "noatime"; TmpfsMountOption["DIRATIME"] = "diratime"; TmpfsMountOption["NODIRATIME"] = "nodiratime"; TmpfsMountOption["BIND"] = "bind"; TmpfsMountOption["RBIND"] = "rbind"; TmpfsMountOption["UNBINDABLE"] = "unbindable"; TmpfsMountOption["RUNBINDABLE"] = "runbindable"; TmpfsMountOption["PRIVATE"] = "private"; TmpfsMountOption["RPRIVATE"] = "rprivate"; TmpfsMountOption["SHARED"] = "shared"; TmpfsMountOption["RSHARED"] = "rshared"; TmpfsMountOption["SLAVE"] = "slave"; TmpfsMountOption["RSLAVE"] = "rslave"; TmpfsMountOption["RELATIME"] = "relatime"; TmpfsMountOption["NORELATIME"] = "norelatime"; TmpfsMountOption["STRICTATIME"] = "strictatime"; TmpfsMountOption["NOSTRICTATIME"] = "nostrictatime"; TmpfsMountOption["MODE"] = "mode"; TmpfsMountOption["UID"] = "uid"; TmpfsMountOption["GID"] = "gid"; TmpfsMountOption["NR_INODES"] = "nr_inodes"; TmpfsMountOption["NR_BLOCKS"] = "nr_blocks"; TmpfsMountOption["MPOL"] = "mpol"; })(TmpfsMountOption = exports.TmpfsMountOption || (exports.TmpfsMountOption = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXgtcGFyYW1ldGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpbnV4LXBhcmFtZXRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscUNBQXFDO0FBSXJDLGlHQUFpRztBQUNqRyw4REFBOEQ7QUFDOUQsd0NBQTJEO0FBcUIzRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxnQkFBYTtJQStCaEQ7O09BRUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQThCLEVBQUU7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQXhCbkI7O1dBRUc7UUFDYyxXQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUVsRDs7V0FFRztRQUNjLFlBQU8sR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBRW5EOztXQUVHO1FBQ2MsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFFL0M7O1dBRUc7UUFDYyxVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVMsQ0FBQzs7Ozs7Ozs7OztRQVExQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7S0FDcEQ7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUFDLEdBQUcsR0FBaUI7Ozs7Ozs7Ozs7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztLQUMxQjtJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxHQUFHLEdBQWlCOzs7Ozs7Ozs7O1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDM0I7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxHQUFHLE1BQWdCOzs7Ozs7Ozs7O1FBQ25DLElBQUksQ0FBQyxPQUFP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QXlCLENBQUE7SUFDekIsK0NBQTJCLENBQUE7SUFDM0IsbURBQStCLENBQUE7SUFDL0IsaUNBQWEsQ0FBQTtJQUNiLCtCQUFXLENBQUE7SUFDWCwrQkFBVyxDQUFBO0lBQ1gsMkNBQXVCLENBQUE7SUFDdkIsMkNBQXVCLENBQUE7SUFDdkIsaUNBQWEsQ0FBQTtBQUNmLENBQUMsRUF4Q1csZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUF3QzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDZm5UYXNrRGVmaW5pdGlvbiB9IGZyb20gJy4vZWNzLmdlbmVyYXRlZCc7XG5cbi8vIGtlZXAgdGhpcyBpbXBvcnQgc2VwYXJhdGUgZnJvbSBvdGhlciBpbXBvcnRzIHRvIHJlZHVjZSBjaGFuY2UgZm9yIG1lcmdlIGNvbmZsaWN0cyB3aXRoIHYyLW1haW5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBsaWNhdGUtaW1wb3J0cywgaW1wb3J0L29yZGVyXG5pbXBvcnQgeyBDb25zdHJ1Y3QgYXMgQ29yZUNvbnN0cnVjdCB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuXG4vKipcbiAqIFRoZSBwcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBMaW51eC1zcGVjaWZpYyBvcHRpb25zIHRoYXQgYXJlIGFwcGxpZWQgdG8gdGhlIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW51eFBhcmFtZXRlcnNQcm9wcyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBydW4gYW4gaW5pdCBwcm9jZXNzIGluc2lkZSB0aGUgY29udGFpbmVyIHRoYXQgZm9yd2FyZHMgc2lnbmFscyBhbmQgcmVhcHMgcHJvY2Vzc2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5pdFByb2Nlc3NFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGZvciB0aGUgc2l6ZSAoaW4gTWlCKSBvZiB0aGUgL2Rldi9zaG0gdm9sdW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBzaGFyZWQgbWVtb3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmVkTWVtb3J5U2l6ZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBMaW51eC1zcGVjaWZpYyBvcHRpb25zIHRoYXQgYXJlIGFwcGxpZWQgdG8gdGhlIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIExpbnV4UGFyYW1ldGVycyBleHRlbmRzIENvcmVDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5pdCBwcm9jZXNzIGlzIGVuYWJsZWRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdFByb2Nlc3NFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNoYXJlZCBtZW1vcnkgc2l6ZS4gTm90IHZhbGlkIGZvciBGYXJnYXRlIGxhdW5jaCB0eXBlXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHNoYXJlZE1lbW9yeVNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyB0byBiZSBhZGRlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjYXBBZGQgPSBuZXcgQXJyYXk8Q2FwYWJpbGl0eT4oKTtcblxuICAvKipcbiAgICogQ2FwYWJpbGl0aWVzIHRvIGJlIGRyb3BwZWRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FwRHJvcCA9IG5ldyBBcnJheTxDYXBhYmlsaXR5PigpO1xuXG4gIC8qKlxuICAgKiBEZXZpY2UgbW91bnRzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRldmljZXMgPSBuZXcgQXJyYXk8RGV2aWNlPigpO1xuXG4gIC8qKlxuICAgKiBUbXBGcyBtb3VudHNcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdG1wZnMgPSBuZXcgQXJyYXk8VG1wZnM+KCk7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIExpbnV4UGFyYW1ldGVycyBjbGFzcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMaW51eFBhcmFtZXRlcnNQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuc2hhcmVkTWVtb3J5U2l6ZSA9IHByb3BzLnNoYXJlZE1lbW9yeVNpemU7XG4gICAgdGhpcy5pbml0UHJvY2Vzc0VuYWJsZWQgPSBwcm9wcy5pbml0UHJvY2Vzc0VuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBvbmUgb3IgbW9yZSBMaW51eCBjYXBhYmlsaXRpZXMgdG8gdGhlIERvY2tlciBjb25maWd1cmF0aW9uIG9mIGEgY29udGFpbmVyLlxuICAgKlxuICAgKiBPbmx5IHdvcmtzIHdpdGggRUMyIGxhdW5jaCB0eXBlLlxuICAgKi9cbiAgcHVibGljIGFkZENhcGFiaWxpdGllcyguLi5jYXA6IENhcGFiaWxpdHlbXSkge1xuICAgIHRoaXMuY2FwQWRkLnB1c2goLi4uY2FwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIG9uZSBvciBtb3JlIExpbnV4IGNhcGFiaWxpdGllcyB0byB0aGUgRG9ja2VyIGNvbmZpZ3VyYXRpb24gb2YgYSBjb250YWluZXIuXG4gICAqXG4gICAqIE9ubHkgd29ya3Mgd2l0aCBFQzIgbGF1bmNoIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgZHJvcENhcGFiaWxpdGllcyguLi5jYXA6IENhcGFiaWxpdHlbXSkge1xuICAgIHRoaXMuY2FwRHJvcC5wdXNoKC4uLmNhcCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBvbmUgb3IgbW9yZSBob3N0IGRldmljZXMgdG8gYSBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgYWRkRGV2aWNlcyguLi5kZXZpY2U6IERldmljZVtdKSB7XG4gICAgdGhpcy5kZXZpY2VzLnB1c2goLi4uZGV2aWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBwYXRoLCBtb3VudCBvcHRpb25zLCBhbmQgc2l6ZSAoaW4gTWlCKSBvZiB0aGUgdG1wZnMgbW91bnQgZm9yIGEgY29udGFpbmVyLlxuICAgKlxuICAgKiBPbmx5IHdvcmtzIHdpdGggRUMyIGxhdW5jaCB0eXBlLlxuICAgKi9cbiAgcHVibGljIGFkZFRtcGZzKC4uLnRtcGZzOiBUbXBmc1tdKSB7XG4gICAgdGhpcy50bXBmcy5wdXNoKC4uLnRtcGZzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBMaW51eCBwYXJhbWV0ZXJzIHRvIGEgQ2xvdWRGb3JtYXRpb24gb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHJlbmRlckxpbnV4UGFyYW1ldGVycygpOiBDZm5UYXNrRGVmaW5pdGlvbi5MaW51eFBhcmFtZXRlcnNQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluaXRQcm9jZXNzRW5hYmxlZDogdGhpcy5pbml0UHJvY2Vzc0VuYWJsZWQsXG4gICAgICBzaGFyZWRNZW1vcnlTaXplOiB0aGlzLnNoYXJlZE1lbW9yeVNpemUsXG4gICAgICBjYXBhYmlsaXRpZXM6IHtcbiAgICAgICAgYWRkOiBjZGsuTGF6eS5saXN0KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5jYXBBZGQgfSwgeyBvbWl0RW1wdHk6IHRydWUgfSksXG4gICAgICAgIGRyb3A6IGNkay5MYXp5Lmxpc3QoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLmNhcERyb3AgfSwgeyBvbWl0RW1wdHk6IHRydWUgfSksXG4gICAgICB9LFxuICAgICAgZGV2aWNlczogY2RrLkxhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5kZXZpY2VzLm1hcChyZW5kZXJEZXZpY2UpIH0sIHsgb21pdEVtcHR5QXJyYXk6IHRydWUgfSksXG4gICAgICB0bXBmczogY2RrLkxhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy50bXBmcy5tYXAocmVuZGVyVG1wZnMpIH0sIHsgb21pdEVtcHR5QXJyYXk6IHRydWUgfSksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEEgY29udGFpbmVyIGluc3RhbmNlIGhvc3QgZGV2aWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZSB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCBpbnNpZGUgdGhlIGNvbnRhaW5lciBhdCB3aGljaCB0byBleHBvc2UgdGhlIGhvc3QgZGV2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTYW1lIHBhdGggYXMgdGhlIGhvc3RcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclBhdGg/OiBzdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIGZvciB0aGUgZGV2aWNlIG9uIHRoZSBob3N0IGNvbnRhaW5lciBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3RQYXRoOiBzdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBleHBsaWNpdCBwZXJtaXNzaW9ucyB0byBwcm92aWRlIHRvIHRoZSBjb250YWluZXIgZm9yIHRoZSBkZXZpY2UuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250YWluZXIgaGFzIHBlcm1pc3Npb25zIGZvciByZWFkLCB3cml0ZSwgYW5kIG1rbm9kIGZvciB0aGUgZGV2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSZWFkb25seVxuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnM/OiBEZXZpY2VQZXJtaXNzaW9uW11cbn1cblxuZnVuY3Rpb24gcmVuZGVyRGV2aWNlKGRldmljZTogRGV2aWNlKTogQ2ZuVGFza0RlZmluaXRpb24uRGV2aWNlUHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5lclBhdGg6IGRldmljZS5jb250YWluZXJQYXRoLFxuICAgIGhvc3RQYXRoOiBkZXZpY2UuaG9zdFBhdGgsXG4gICAgcGVybWlzc2lvbnM6IGRldmljZS5wZXJtaXNzaW9ucyxcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgZGV0YWlscyBvZiBhIHRtcGZzIG1vdW50IGZvciBhIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUbXBmcyB7XG4gIC8qKlxuICAgKiBUaGUgYWJzb2x1dGUgZmlsZSBwYXRoIHdoZXJlIHRoZSB0bXBmcyB2b2x1bWUgaXMgdG8gYmUgbW91bnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclBhdGg6IHN0cmluZyxcblxuICAvKipcbiAgICogVGhlIHNpemUgKGluIE1pQikgb2YgdGhlIHRtcGZzIHZvbHVtZS5cbiAgICovXG4gIHJlYWRvbmx5IHNpemU6IG51bWJlcixcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdG1wZnMgdm9sdW1lIG1vdW50IG9wdGlvbnMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICogW1RtcGZzTW91bnRPcHRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1RtcGZzLmh0bWwpLlxuICAgKi9cbiAgcmVhZG9ubHkgbW91bnRPcHRpb25zPzogVG1wZnNNb3VudE9wdGlvbltdLFxufVxuXG5mdW5jdGlvbiByZW5kZXJUbXBmcyh0bXBmczogVG1wZnMpOiBDZm5UYXNrRGVmaW5pdGlvbi5UbXBmc1Byb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluZXJQYXRoOiB0bXBmcy5jb250YWluZXJQYXRoLFxuICAgIHNpemU6IHRtcGZzLnNpemUsXG4gICAgbW91bnRPcHRpb25zOiB0bXBmcy5tb3VudE9wdGlvbnMsXG4gIH07XG59XG5cbi8qKlxuICogQSBMaW51eCBjYXBhYmlsaXR5XG4gKi9cbmV4cG9ydCBlbnVtIENhcGFiaWxpdHkge1xuICBBTEwgPSAnQUxMJyxcbiAgQVVESVRfQ09OVFJPTCA9ICdBVURJVF9DT05UUk9MJyxcbiAgQVVESVRfV1JJVEUgPSAnQVVESVRfV1JJVEUnLFxuICBCTE9DS19TVVNQRU5EID0gJ0JMT0NLX1NVU1BFTkQnLFxuICBDSE9XTiA9ICdDSE9XTicsXG4gIERBQ19PVkVSUklERSA9ICdEQUNfT1ZFUlJJREUnLFxuICBEQUNfUkVBRF9TRUFSQ0ggPSAnREFDX1JFQURfU0VBUkNIJyxcbiAgRk9XTkVSID0gJ0ZPV05FUicsXG4gIEZTRVRJRCA9ICdGU0VUSUQnLFxuICBJUENfTE9DSyA9ICdJUENfTE9DSycsXG4gIElQQ19PV05FUiA9ICdJUENfT1dORVInLFxuICBLSUxMID0gJ0tJTEwnLFxuICBMRUFTRSA9ICdMRUFTRScsXG4gIExJTlVYX0lNTVVUQUJMRSA9ICdMSU5VWF9JTU1VVEFCTEUnLFxuICBNQUNfQURNSU4gPSAnTUFDX0FETUlOJyxcbiAgTUFDX09WRVJSSURFID0gJ01BQ19PVkVSUklERScsXG4gIE1LTk9EID0gJ01LTk9EJyxcbiAgTkVUX0FETUlOID0gJ05FVF9BRE1JTicsXG4gIE5FVF9CSU5EX1NFUlZJQ0UgPSAnTkVUX0JJTkRfU0VSVklDRScsXG4gIE5FVF9CUk9BRENBU1QgPSAnTkVUX0JST0FEQ0FTVCcsXG4gIE5FVF9SQVcgPSAnTkVUX1JBVycsXG4gIFNFVEZDQVAgPSAnU0VURkNBUCcsXG4gIFNFVEdJRCA9ICdTRVRHSUQnLFxuICBTRVRQQ0FQID0gJ1NFVFBDQVAnLFxuICBTRVRVSUQgPSAnU0VUVUlEJyxcbiAgU1lTX0FETUlOID0gJ1NZU19BRE1JTicsXG4gIFNZU19CT09UID0gJ1NZU19CT09UJyxcbiAgU1lTX0NIUk9PVCA9ICdTWVNfQ0hST09UJyxcbiAgU1lTX01PRFVMRSA9ICdTWVNfTU9EVUxFJyxcbiAgU1lTX05JQ0UgPSAnU1lTX05JQ0UnLFxuICBTWVNfUEFDQ1QgPSAnU1lTX1BBQ0NUJyxcbiAgU1lTX1BUUkFDRSA9ICdTWVNfUFRSQUNFJyxcbiAgU1lTX1JBV0lPID0gJ1NZU19SQVdJTycsXG4gIFNZU19SRVNPVVJDRSA9ICdTWVNfUkVTT1VSQ0UnLFxuICBTWVNfVElNRSA9ICdTWVNfVElNRScsXG4gIFNZU19UVFlfQ09ORklHID0gJ1NZU19UVFlfQ09ORklHJyxcbiAgU1lTTE9HID0gJ1NZU0xPRycsXG4gIFdBS0VfQUxBUk0gPSAnV0FLRV9BTEFSTSdcbn1cblxuLyoqXG4gKiBQZXJtaXNzaW9ucyBmb3IgZGV2aWNlIGFjY2Vzc1xuICovXG5leHBvcnQgZW51bSBEZXZpY2VQZXJtaXNzaW9uIHtcbiAgLyoqXG4gICAqIFJlYWRcbiAgICovXG4gIFJFQUQgPSAncmVhZCcsXG5cbiAgLyoqXG4gICAqIFdyaXRlXG4gICAqL1xuICBXUklURSA9ICd3cml0ZScsXG5cbiAgLyoqXG4gICAqIE1ha2UgYSBub2RlXG4gICAqL1xuICBNS05PRCA9ICdta25vZCcsXG59XG5cbi8qKlxuICogVGhlIHN1cHBvcnRlZCBvcHRpb25zIGZvciBhIHRtcGZzIG1vdW50IGZvciBhIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGVudW0gVG1wZnNNb3VudE9wdGlvbiB7XG4gIERFRkFVTFRTID0gJ2RlZmF1bHRzJyxcbiAgUk8gPSAncm8nLFxuICBSVyA9ICdydycsXG4gIFNVSUQgPSAnc3VpZCcsXG4gIE5PU1VJRCA9ICdub3N1aWQnLFxuICBERVYgPSAnZGV2JyxcbiAgTk9ERVYgPSAnbm9kZXYnLFxuICBFWEVDID0gJ2V4ZWMnLFxuICBOT0VYRUMgPSAnbm9leGVjJyxcbiAgU1lOQyA9ICdzeW5jJyxcbiAgQVNZTkMgPSAnYXN5bmMnLFxuICBESVJTWU5DID0gJ2RpcnN5bmMnLFxuICBSRU1PVU5UID0gJ3JlbW91bnQnLFxuICBNQU5EID0gJ21hbmQnLFxuICBOT01BTkQgPSAnbm9tYW5kJyxcbiAgQVRJTUUgPSAnYXRpbWUnLFxuICBOT0FUSU1FID0gJ25vYXRpbWUnLFxuICBESVJBVElNRSA9ICdkaXJhdGltZScsXG4gIE5PRElSQVRJTUUgPSAnbm9kaXJhdGltZScsXG4gIEJJTkQgPSAnYmluZCcsXG4gIFJCSU5EID0gJ3JiaW5kJyxcbiAgVU5CSU5EQUJMRSA9ICd1bmJpbmRhYmxlJyxcbiAgUlVOQklOREFCTEUgPSAncnVuYmluZGFibGUnLFxuICBQUklWQVRFID0gJ3ByaXZhdGUnLFxuICBSUFJJVkFURSA9ICdycHJpdmF0ZScsXG4gIFNIQVJFRCA9ICdzaGFyZWQnLFxuICBSU0hBUkVEID0gJ3JzaGFyZWQnLFxuICBTTEFWRSA9ICdzbGF2ZScsXG4gIFJTTEFWRSA9ICdyc2xhdmUnLFxuICBSRUxBVElNRSA9ICdyZWxhdGltZScsXG4gIE5PUkVMQVRJTUUgPSAnbm9yZWxhdGltZScsXG4gIFNUUklDVEFUSU1FID0gJ3N0cmljdGF0aW1lJyxcbiAgTk9TVFJJQ1RBVElNRSA9ICdub3N0cmljdGF0aW1lJyxcbiAgTU9ERSA9ICdtb2RlJyxcbiAgVUlEID0gJ3VpZCcsXG4gIEdJRCA9ICdnaWQnLFxuICBOUl9JTk9ERVMgPSAnbnJfaW5vZGVzJyxcbiAgTlJfQkxPQ0tTID0gJ25yX2Jsb2NrcycsXG4gIE1QT0wgPSAnbXBvbCdcbn1cbiJdfQ==