ng2-prism
Version:
An Angular2 codeblock highlighting component using Prismjs.
243 lines • 52.1 kB
JavaScript
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var core_1 = require('angular2/core');
require('prismjs/prism');
var code_renderer_component_1 = require('./code-renderer.component');
var CodeblockComponent = (function () {
function CodeblockComponent(_elementRef) {
this._elementRef = _elementRef;
this.DEFAULT_THEME = "standard";
this.DEFAULT_SHELL_THEME = "okaidia";
this.prompt = '$';
this._code = '';
this._showingMessage = false;
this._languageSet = false;
this._lineNumbers = true;
this._changed = false;
this._shellType = null;
}
CodeblockComponent.prototype.ngAfterContentChecked = function () {
if (!this._sourced && !this._showingMessage) {
this.code = this.content;
}
};
CodeblockComponent.prototype.ngAfterViewChecked = function () {
if (this._changed) {
this._changed = false;
this.codeRenderer.render();
}
};
Object.defineProperty(CodeblockComponent.prototype, "content", {
get: function () {
return this.contentEl ? this.contentEl.nativeElement.innerHTML : '';
},
enumerable: true,
configurable: true
});
Object.defineProperty(CodeblockComponent.prototype, "code", {
get: function () {
return this._code;
},
set: function (code) {
if (this._code !== code) {
this._changed = true;
this._code = code;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(CodeblockComponent.prototype, "lineNumbers", {
get: function () {
return this._lineNumbers;
},
set: function (value) {
if (this._lineNumbers !== value) {
this._changed = true;
this._lineNumbers = value;
}
},
enumerable: true,
configurable: true
});
CodeblockComponent.prototype.shouldDisplayLineNumbers = function () {
return this.lineNumbers && !this._showingMessage;
};
Object.defineProperty(CodeblockComponent.prototype, "language", {
get: function () {
return this._showingMessage ? undefined : this._language;
},
set: function (lang) {
if (this.isShell()) {
return;
}
this._languageSet = lang && lang.length > 0 ? true : false;
this._language = Prism.languages[lang] ? lang : undefined;
this._changed = true;
},
enumerable: true,
configurable: true
});
Object.defineProperty(CodeblockComponent.prototype, "theme", {
get: function () {
if (this._theme) {
return this._theme;
}
return this.isShell() ? this.DEFAULT_SHELL_THEME : this.DEFAULT_THEME;
},
set: function (theme) {
this._theme = theme;
},
enumerable: true,
configurable: true
});
CodeblockComponent.prototype.sourceChanged = function (url) {
this.message("Loading ...");
};
CodeblockComponent.prototype.sourceReceived = function (res) {
var ext = res.url.match(/\.(\w+)$/)[1];
var fileLang = CodeblockComponent.EXTENSION_MAP[ext] || ext;
var text = res.text();
if (!this._languageSet) {
this._language = fileLang;
if (fileLang === 'typescript') {
text = this._replaceTagsInMultiline(res.text());
}
}
this.code = text;
this._showingMessage = false;
this._sourced = true;
};
CodeblockComponent.prototype.sourceError = function (error) {
this._sourced = false;
this.message(error.message ? error.message : 'An error occured.');
};
Object.defineProperty(CodeblockComponent.prototype, "shell", {
get: function () {
return this._shellType;
},
set: function (shellType) {
if (shellType && CodeblockComponent.SHELL_TYPES.indexOf(shellType) !== -1) {
this._language = shellType;
this._languageSet = true;
this._shellType = shellType;
this.lineNumbers = false;
this._changed = true;
}
else {
this._shellType = null;
}
},
enumerable: true,
configurable: true
});
CodeblockComponent.prototype.isShell = function () {
return this._shellType !== null;
};
Object.defineProperty(CodeblockComponent.prototype, "output", {
set: function (lines) {
console.warn("DEPRECATION WARNING: The CodeblockComponent Input property 'output'" +
" is no longer supported and will be removed in a future release. Use 'outputLines'");
this.outputLines = lines;
},
enumerable: true,
configurable: true
});
CodeblockComponent.prototype.message = function (text) {
this._showingMessage = true;
this.code = text;
};
CodeblockComponent.prototype.bind = function (text) {
return "{{" + text + "}}";
};
CodeblockComponent.prototype._replaceTagsInMultiline = function (text) {
return text.replace(/`((.|[\r\n])*?)`/g, function (match) {
return match.replace(/(<)([!\/A-Za-z].*?>)/g, '<$2');
});
};
CodeblockComponent.THEMES = [
"standard",
"coy",
"dark",
"funky",
"okaidia",
"solarizedlight",
"tomorrow",
"twilight"
];
CodeblockComponent.EXTENSION_MAP = {
'js': 'javascript',
'ts': 'typescript',
'html': 'markup',
'svg': 'markup',
'xml': 'markup',
'md': 'markdown',
'py': 'python',
'rb': 'ruby',
'ps1': 'powershell',
'psm1': 'powershell'
};
CodeblockComponent.SHELL_TYPES = ['bash', 'powershell'];
__decorate([
core_1.ViewChild('contentEl'),
__metadata('design:type', Object)
], CodeblockComponent.prototype, "contentEl", void 0);
__decorate([
core_1.ViewChild(code_renderer_component_1.CodeRenderer),
__metadata('design:type', Object)
], CodeblockComponent.prototype, "codeRenderer", void 0);
__decorate([
core_1.Input(),
__metadata('design:type', Boolean),
__metadata('design:paramtypes', [Boolean])
], CodeblockComponent.prototype, "lineNumbers", null);
__decorate([
core_1.Input(),
__metadata('design:type', String),
__metadata('design:paramtypes', [String])
], CodeblockComponent.prototype, "language", null);
__decorate([
core_1.Input(),
__metadata('design:type', String),
__metadata('design:paramtypes', [String])
], CodeblockComponent.prototype, "theme", null);
__decorate([
core_1.Input(),
__metadata('design:type', String),
__metadata('design:paramtypes', [String])
], CodeblockComponent.prototype, "shell", null);
__decorate([
core_1.Input(),
__metadata('design:type', String)
], CodeblockComponent.prototype, "prompt", void 0);
__decorate([
core_1.Input(),
__metadata('design:type', String)
], CodeblockComponent.prototype, "outputLines", void 0);
__decorate([
core_1.Input(),
__metadata('design:type', String),
__metadata('design:paramtypes', [String])
], CodeblockComponent.prototype, "output", null);
CodeblockComponent = __decorate([
core_1.Component({
selector: 'codeblock',
template: "\n <div #contentEl class=\"codeblock-content\"><ng-content></ng-content></div>\n <div class=\"codeblock {{theme}}\">\n <code-renderer\n [code]=\"code\"\n [language]=\"language\"\n [lineNumbers]=\"shouldDisplayLineNumbers()\"\n [shell]=\"shell\"\n [prompt]=\"prompt\"\n [outputLines]=\"outputLines\">\n </code-renderer>\n </div>\n ",
styles: ["code[class*=\"language-\"],pre[class*=\"language-\"]{color:black;background:none;text-shadow:0 1px white;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=\"language-\"]::-moz-selection,pre[class*=\"language-\"] ::-moz-selection,code[class*=\"language-\"]::-moz-selection,code[class*=\"language-\"] ::-moz-selection{text-shadow:none;background:#b3d4fc}pre[class*=\"language-\"]::selection,pre[class*=\"language-\"] ::selection,code[class*=\"language-\"]::selection,code[class*=\"language-\"] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=\"language-\"],pre[class*=\"language-\"]{text-shadow:none}}pre[class*=\"language-\"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=\"language-\"],pre[class*=\"language-\"]{background:#f5f2f0}:not(pre)>code[class*=\"language-\"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:slategray}.token.punctuation{color:#999}.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#905}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#a67f59;background:rgba(255,255,255,0.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function{color:#DD4A68}.token.regex,.token.important,.token.variable{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.coy code[class*=\"language-\"],.coy pre[class*=\"language-\"]{color:black;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.coy pre[class*=\"language-\"]{position:relative;margin:.5em 0;-webkit-box-shadow:-1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;-moz-box-shadow:-1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;box-shadow:-1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;border-left:10px solid #358ccb;background-color:#fdfdfd;background-image:-webkit-linear-gradient(transparent 50%, rgba(69,142,209,0.04) 50%);background-image:-moz-linear-gradient(transparent 50%, rgba(69,142,209,0.04) 50%);background-image:-ms-linear-gradient(transparent 50%, rgba(69,142,209,0.04) 50%);background-image:-o-linear-gradient(transparent 50%, rgba(69,142,209,0.04) 50%);background-image:linear-gradient(transparent 50%, rgba(69,142,209,0.04) 50%);background-size:3em 3em;background-origin:content-box;overflow:visible;padding:0}.coy code[class*=\"language\"]{max-height:inherit;height:100%;padding:0 1em;display:block;overflow:auto}.coy :not(pre)>code[class*=\"language-\"],.coy pre[class*=\"language-\"]{background-color:#fdfdfd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:1em}.coy :not(pre)>code[class*=\"language-\"]{position:relative;padding:.2em;-webkit-border-radius:0.3em;-moz-border-radius:0.3em;-ms-border-radius:0.3em;-o-border-radius:0.3em;border-radius:0.3em;color:#c92c2c;border:1px solid rgba(0,0,0,0.1);display:inline;white-space:normal}.coy pre[class*=\"language-\"]:before,.coy pre[class*=\"language-\"]:after{content:'';z-index:-2;display:block;position:absolute;bottom:0.75em;left:0.18em;width:40%;height:20%;max-height:13em;-webkit-box-shadow:0px 13px 8px #979797;-moz-box-shadow:0px 13px 8px #979797;box-shadow:0px 13px 8px #979797;-webkit-transform:rotate(-2deg);-moz-transform:rotate(-2deg);-ms-transform:rotate(-2deg);-o-transform:rotate(-2deg);transform:rotate(-2deg)}.coy :not(pre)>code[class*=\"language-\"]:after,.coy pre[class*=\"language-\"]:after{right:0.75em;left:auto;-webkit-transform:rotate(2deg);-moz-transform:rotate(2deg);-ms-transform:rotate(2deg);-o-transform:rotate(2deg);transform:rotate(2deg)}.coy .token.comment,.coy .token.block-comment,.coy .token.prolog,.coy .token.doctype,.coy .token.cdata{color:#7D8B99}.coy .token.punctuation{color:#5F6364}.coy .token.property,.coy .token.tag,.coy .token.boolean,.coy .token.number,.coy .token.function-name,.coy .token.constant,.coy .token.symbol,.coy .token.deleted{color:#c92c2c}.coy .token.selector,.coy .token.attr-name,.coy .token.string,.coy .token.char,.coy .token.function,.coy .token.builtin,.coy .token.inserted{color:#2f9c0a}.coy .token.operator,.coy .token.entity,.coy .token.url,.coy .token.variable{color:#a67f59;background:rgba(255,255,255,0.5)}.coy .token.atrule,.coy .token.attr-value,.coy .token.keyword,.coy .token.class-name{color:#1990b8}.coy .token.regex,.coy .token.important{color:#e90}.coy .language-css .token.string,.coy .style .token.string{color:#a67f59;background:rgba(255,255,255,0.5)}.coy .token.important{font-weight:normal}.coy .token.bold{font-weight:bold}.coy .token.italic{font-style:italic}.coy .token.entity{cursor:help}.coy .namespace{opacity:.7}@media screen and (max-width: 767px){.coy pre[class*=\"language-\"]:before,.coy pre[class*=\"language-\"]:after{bottom:14px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}}.coy .token.tab:not(:empty):before,.coy .token.cr:before,.coy .token.lf:before{color:#e0d7d1}.coy pre[class*=\"language-\"].line-numbers{padding-left:0}.coy pre[class*=\"language-\"].line-numbers code{padding-left:3.8em}.coy pre[class*=\"language-\"].line-numbers .line-numbers-rows{left:0}.coy pre[class*=\"language-\"][data-line]{padding-top:0;padding-bottom:0;padding-left:0}.coy pre[data-line] code{position:relative;padding-left:4em}.coy pre .line-highlight{margin-top:0}.dark code[class*=\"language-\"],.dark pre[class*=\"language-\"]{color:white;background:none;text-shadow:0 -.1em .2em black;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}@media print{.dark code[class*=\"language-\"],.dark pre[class*=\"language-\"]{text-shadow:none}}.dark pre[class*=\"language-\"],.dark :not(pre)>code[class*=\"language-\"]{background:#4d4033}.dark pre[class*=\"language-\"]{padding:1em;margin:.5em 0;overflow:auto;border:0.3em solid #7a6652;border-radius:.5em;box-shadow:1px 1px .5em black inset}.dark :not(pre)>code[class*=\"language-\"]{padding:.15em .2em .05em;border-radius:.3em;border:0.13em solid #7a6652;box-shadow:1px 1px .3em -.1em black inset;white-space:normal}.dark .token.comment,.dark .token.prolog,.dark .token.doctype,.dark .token.cdata{color:#998066}.dark .token.punctuation{opacity:.7}.dark .namespace{opacity:.7}.dark .token.property,.dark .token.tag,.dark .token.boolean,.dark .token.number,.dark .token.constant,.dark .token.symbol{color:#d1949e}.dark .token.selector,.dark .token.attr-name,.dark .token.string,.dark .token.char,.dark .token.builtin,.dark .token.inserted{color:#bde052}.dark .token.operator,.dark .token.entity,.dark .token.url,.dark .language-css .token.string,.dark .style .token.string,.dark .token.variable{color:#f5b83d}.dark .token.atrule,.dark .token.attr-value,.dark .token.keyword{color:#d1949e}.dark .token.regex,.dark .token.important{color:#e90}.dark .token.important,.dark .token.bold{font-weight:bold}.dark .token.italic{font-style:italic}.dark .token.entity{cursor:help}.dark .token.deleted{color:red}.funky code[class*=\"language-\"],.funky pre[class*=\"language-\"]{font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.funky pre[class*=\"language-\"]{padding:.4em .8em;margin:.5em 0;overflow:auto;background:url('data:image/svg+xml;charset=utf-8,<svg%20version%3D\"1.1\"%20xmlns%3D\"http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg\"%20width%3D\"100\"%20height%3D\"100\"%20fill%3D\"rgba(0%2C0%2C0%2C.2)\">%0D%0A<polygon%20points%3D\"0%2C50%2050%2C0%200%2C0\"%20%2F>%0D%0A<polygon%20points%3D\"0%2C100%2050%2C100%20100%2C50%20100%2C0\"%20%2F>%0D%0A<%2Fsvg>');background-size:1em 1em}.funky code[class*=\"language-\"]{background:black;color:white;box-shadow:-.3em 0 0 .3em black, .3em 0 0 .3em black}.funky :not(pre)>code[class*=\"language-\"]{padding:.2em;border-radius:.3em;box-shadow:none;white-space:normal}.funky .token.comment,.funky .token.prolog,.funky .token.doctype,.funky .token.cdata{color:#aaa}.funky .token.punctuation{color:#999}.funky .namespace{opacity:.7}.funky .token.property,.funky .token.tag,.funky .token.boolean,.funky .token.number,.funky .token.constant,.funky .token.symbol{color:#0cf}.funky .token.selector,.funky .token.attr-name,.funky .token.string,.funky .token.char,.funky .token.builtin{color:yellow}.funky .token.operator,.funky .token.entity,.funky .token.url,.funky .language-css .token.string,.funky .toke.variable,.funky .token.inserted{color:yellowgreen}.funky .token.atrule,.funky .token.attr-value,.funky .token.keyword{color:deeppink}.funky .token.regex,.funky .token.important{color:orange}.funky .token.important,.funky .token.bold{font-weight:bold}.funky .token.italic{font-style:italic}.funky .token.entity{cursor:help}.funky .token.deleted{color:red}.okaidia code[class*=\"language-\"],.okaidia pre[class*=\"language-\"]{color:#f8f8f2;background:none;text-shadow:0 1px rgba(0,0,0,0.3);font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.okaidia pre[class*=\"language-\"]{padding:1em;margin:.5em 0;overflow:auto;border-radius:0.3em}.okaidia :not(pre)>code[class*=\"language-\"],.okaidia pre[class*=\"language-\"]{background:#272822}.okaidia :not(pre)>code[class*=\"language-\"]{padding:.1em;border-radius:.3em;white-space:normal}.okaidia .token.comment,.okaidia .token.prolog,.okaidia .token.doctype,.okaidia .token.cdata{color:slategray}.okaidia .token.punctuation{color:#f8f8f2}.okaidia .namespace{opacity:.7}.okaidia .token.property,.okaidia .token.tag,.okaidia .token.constant,.okaidia .token.symbol,.okaidia .token.deleted{color:#f92672}.okaidia .token.boolean,.okaidia .token.number{color:#ae81ff}.okaidia .token.selector,.okaidia .token.attr-name,.okaidia .token.string,.okaidia .token.char,.okaidia .token.builtin,.okaidia .token.inserted{color:#a6e22e}.okaidia .token.operator,.okaidia .token.entity,.okaidia .token.url,.okaidia .language-css .token.string,.okaidia .style .token.string,.okaidia .token.variable{color:#f8f8f2}.okaidia .token.atrule,.okaidia .token.attr-value,.okaidia .token.function{color:#e6db74}.okaidia .token.keyword{color:#66d9ef}.okaidia .token.regex,.okaidia .token.important{color:#fd971f}.okaidia .token.important,.okaidia .token.bold{font-weight:bold}.okaidia .token.italic{font-style:italic}.okaidia .token.entity{cursor:help}.solarizedlight code[class*=\"language-\"],.solarizedlight pre[class*=\"language-\"]{color:#657b83;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.solarizedlight pre[class*=\"language-\"]::-moz-selection,.solarizedlight pre[class*=\"language-\"] ::-moz-selection,.solarizedlight code[class*=\"language-\"]::-moz-selection,.solarizedlight code[class*=\"language-\"] ::-moz-selection{background:#073642}.solarizedlight pre[class*=\"language-\"]::selection,.solarizedlight pre[class*=\"language-\"] ::selection,.solarizedlight code[class*=\"language-\"]::selection,.solarizedlight code[class*=\"language-\"] ::selection{background:#073642}.solarizedlight pre[class*=\"language-\"]{padding:1em;margin:.5em 0;overflow:auto;border-radius:0.3em}.solarizedlight :not(pre)>code[class*=\"language-\"],.solarizedlight pre[class*=\"language-\"]{background-color:#fdf6e3}.solarizedlight :not(pre)>code[class*=\"language-\"]{padding:.1em;border-radius:.3em}.solarizedlight .token.comment,.solarizedlight .token.prolog,.solarizedlight .token.doctype,.solarizedlight .token.cdata{color:#93a1a1}.solarizedlight .token.punctuation{color:#586e75}.solarizedlight .namespace{opacity:.7}.solarizedlight .token.property,.solarizedlight .token.tag,.solarizedlight .token.boolean,.solarizedlight .token.number,.solarizedlight .token.constant,.solarizedlight .token.symbol,.solarizedlight .token.deleted{color:#268bd2}.solarizedlight .token.selector,.solarizedlight .token.attr-name,.solarizedlight .token.string,.solarizedlight .token.char,.solarizedlight .token.builtin,.solarizedlight .token.url,.solarizedlight .token.inserted{color:#2aa198}.solarizedlight .token.entity{color:#657b83;background:#eee8d5}.solarizedlight .token.atrule,.solarizedlight .token.attr-value,.solarizedlight .token.keyword{color:#859900}.solarizedlight .token.function{color:#b58900}.solarizedlight .token.regex,.solarizedlight .token.important,.solarizedlight .token.variable{color:#cb4b16}.solarizedlight .token.important,.solarizedlight .token.bold{font-weight:bold}.solarizedlight .token.italic{font-style:italic}.solarizedlight .token.entity{cursor:help}.tomorrow code[class*=\"language-\"],.tomorrow pre[class*=\"language-\"]{color:#ccc;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.tomorrow pre[class*=\"language-\"]{padding:1em;margin:.5em 0;overflow:auto}.tomorrow :not(pre)>code[class*=\"language-\"],.tomorrow pre[class*=\"language-\"]{background:#2d2d2d}.tomorrow :not(pre)>code[class*=\"language-\"]{padding:.1em;border-radius:.3em;white-space:normal}.tomorrow .token.comment,.tomorrow .token.block-comment,.tomorrow .token.prolog,.tomorrow .token.doctype,.tomorrow .token.cdata{color:#999}.tomorrow .token.punctuation{color:#ccc}.tomorrow .token.tag,.tomorrow .token.attr-name,.tomorrow .token.namespace,.tomorrow .token.deleted{color:#e2777a}.tomorrow .token.function-name{color:#6196cc}.tomorrow .token.boolean,.tomorrow .token.number,.tomorrow .token.function{color:#f08d49}.tomorrow .token.property,.tomorrow .token.class-name,.tomorrow .token.constant,.tomorrow .token.symbol{color:#f8c555}.tomorrow .token.selector,.tomorrow .token.important,.tomorrow .token.atrule,.tomorrow .token.keyword,.tomorrow .token.builtin{color:#cc99cd}.tomorrow .token.string,.tomorrow .token.char,.tomorrow .token.attr-value,.tomorrow .token.regex,.tomorrow .token.variable{color:#7ec699}.tomorrow .token.operator,.tomorrow .token.entity,.tomorrow .token.url{color:#67cdcc}.tomorrow .token.important,.tomorrow .token.bold{font-weight:bold}.tomorrow .token.italic{font-style:italic}.tomorrow .token.entity{cursor:help}.tomorrow .token.inserted{color:green}.twilight code[class*=\"language-\"],.twilight pre[class*=\"language-\"]{color:white;background:none;direction:ltr;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;text-align:left;text-shadow:0 -.1em .2em black;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.twilight pre[class*=\"language-\"],.twilight :not(pre)>code[class*=\"language-\"]{background:#141414}.twilight pre[class*=\"language-\"]{border-radius:.5em;border:0.3em solid #545454;box-shadow:1px 1px .5em black inset;margin:.5em 0;overflow:auto;padding:1em}.twilight pre[class*=\"language-\"]::-moz-selection{background:#27292a}.twilight pre[class*=\"language-\"]::selection{background:#27292a}.twilight pre[class*=\"language-\"]::-moz-selection,.twilight pre[class*=\"language-\"] ::-moz-selection,.twilight code[class*=\"language-\"]::-moz-selection,.twilight code[class*=\"language-\"] ::-moz-selection{text-shadow:none;background:rgba(237,237,237,0.15)}.twilight pre[class*=\"language-\"]::selection,.twilight pre[class*=\"language-\"] ::selection,.twilight code[class*=\"language-\"]::selection,.twilight code[class*=\"language-\"] ::selection{text-shadow:none;background:rgba(237,237,237,0.15)}.twilight :not(pre)>code[class*=\"language-\"]{border-radius:.3em;border:0.13em solid #545454;box-shadow:1px 1px .3em -.1em black inset;padding:.15em .2em .05em;white-space:normal}.twilight .token.comment,.twilight .token.prolog,.twilight .token.doctype,.twilight .token.cdata{color:#787878}.twilight .token.punctuation{opacity:.7}.twilight .namespace{opacity:.7}.twilight .token.tag,.twilight .token.boolean,.twilight .token.number,.twilight .token.deleted{color:#cf694a}.twilight .token.keyword,.twilight .token.property,.twilight .token.selector,.twilight .token.constant,.twilight .token.symbol,.twilight .token.builtin{color:#f9ee9a}.twilight .token.attr-name,.twilight .token.attr-value,.twilight .token.string,.twilight .token.char,.twilight .token.operator,.twilight .token.entity,.twilight .token.url,.twilight .language-css .token.string,.twilight .style .token.string,.twilight .token.variable,.twilight .token.inserted{color:#919e6b}.twilight .token.atrule{color:#7386a5}.twilight .token.regex,.twilight .token.important{color:#e9c163}.twilight .token.important,.twilight .token.bold{font-weight:bold}.twilight .token.italic{font-style:italic}.twilight .token.entity{cursor:help}.twilight pre[data-line]{padding:1em 0 1em 3em;position:relative}.twilight .language-markup .token.tag,.twilight .language-markup .token.attr-name,.twilight .language-markup .token.punctuation{color:#ad895c}.twilight .token{position:relative;z-index:1}.twilight .line-highlight{background:-moz-linear-gradient(left, rgba(84,84,84,0.1) 70%, rgba(84,84,84,0));background:-o-linear-gradient(left, rgba(84,84,84,0.1) 70%, rgba(84,84,84,0));background:-webkit-linear-gradient(left, rgba(84,84,84,0.1) 70%, rgba(84,84,84,0));background:rgba(84,84,84,0.25);background:linear-gradient(left, rgba(84,84,84,0.1) 70%, rgba(84,84,84,0));border-bottom:1px dashed #545454;border-top:1px dashed #545454;left:0;line-height:inherit;margin-top:0.75em;padding:inherit 0;pointer-events:none;position:absolute;right:0;white-space:pre;z-index:0}.twilight .line-highlight:before,.twilight .line-highlight[data-end]:after{background-color:#8794a6;border-radius:999px;box-shadow:0 1px white;color:#f5f2f0;content:attr(data-start);font:bold 65%/1.5 sans-serif;left:.6em;min-width:1em;padding:0 .5em;position:absolute;text-align:center;text-shadow:none;top:.4em;vertical-align:.3em}.twilight .line-highlight[data-end]:after{bottom:.4em;content:attr(data-end);top:auto}pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre.line-numbers>code{position:relative}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}.codeblock pre.line-numbers{padding-left:3.4em}.codeblock pre.line-numbers .line-numbers-rows{border:0;left:-3.4em}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.command-line-prompt>span:before{color:#999;content:' ';display:block;padding-right:0.8em}.command-line-prompt>span[data-user]:before{content:\"[\" attr(data-user) \"@\" attr(data-host) \"] $\"}.command-line-prompt>span[data-user=\"root\"]:before{content:\"[\" attr(data-user) \"@\" attr(data-host) \"] #\"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}.codeblock pre.command-line .command-line-prompt{border-right:0;margin-right:0}.codeblock-content{display:none}"],
encapsulation: core_1.ViewEncapsulation.None,
directives: [code_renderer_component_1.CodeRenderer]
}),
__metadata('design:paramtypes', [core_1.ElementRef])
], CodeblockComponent);
return CodeblockComponent;
}());
exports.CodeblockComponent = CodeblockComponent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWJsb2NrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvZGVibG9jay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQVVPLGVBQWUsQ0FBQyxDQUFBO0FBR3ZCLFFBQU8sZUFBZSxDQUFDLENBQUE7QUFFdkIsd0NBQTJCLDJCQUEyQixDQUFDLENBQUE7QUFpQ3ZEO0lBc0JFLDRCQUNVLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBb0tqQyxrQkFBYSxHQUFTLFVBQVUsQ0FBQztRQUNqQyx3QkFBbUIsR0FBRyxTQUFTLENBQUM7UUF3SXZCLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFrRjlCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbkIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixlQUFVLEdBQVcsSUFBSSxDQUFDO0lBdFlXLENBQUM7SUFLdEMsa0RBQXFCLEdBQXJCO1FBQ0UsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFBQyxDQUFDO0lBQzVFLENBQUM7SUFLRCwrQ0FBa0IsR0FBbEI7UUFDRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBcUJELHNCQUFJLHVDQUFPO2FBQVg7WUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNB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QUFDLENBQUM7SUF4UzVEO1FBQUMsZ0JBQVMsQ0FBQyxXQUFXLENBQUM7O3lEQUFBO0lBS3ZCO1FBQUMsZ0JBQVMsQ0FBQyxzQ0FBWSxDQUFDOzs0REFBQTtJQTBGeEI7UUFBQyxZQUFLLEVBQUU7Ozt5REFBQTtJQStCUjtRQUFDLFlBQUssRUFBRTs7O3NEQUFBO0lBaUJSO1FBQUMsWUFBSyxFQUFFOzs7bURBQUE7SUErSFI7UUFBQyxZQUFLLEVBQUU7OzttREFBQTtJQTBDUjtRQUFDLFlBQUssRUFBRTs7c0RBQUE7SUE4QlI7UUFBQyxZQUFLLEVBQUU7OzJEQUFBO0lBS1I7UUFBQyxZQUFLLEVBQUU7OztvREFBQTtJQWhZVjtRQUFDLGdCQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsV0FBVztZQUNyQixRQUFRLEVBQUUsMFlBWVQ7WUFHRCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFJbkIsYUFBYSxFQUFFLHdCQUFpQixDQUFDLElBQUk7WUFFckMsVUFBVSxFQUFFLENBQUMsc0NBQVksQ0FBQztTQUMzQixDQUFDOzswQkFBQTtJQTRhRix5QkFBQztBQUFELENBQUMsQUEzYUQsSUEyYUM7QUEzYVksMEJBQWtCLHFCQTJhOUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgVmlld0NoaWxkXG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5kZWNsYXJlIHZhciBQcmlzbTogYW55O1xuaW1wb3J0ICdwcmlzbWpzL3ByaXNtJztcblxuaW1wb3J0IHtDb2RlUmVuZGVyZXJ9IGZyb20gJy4vY29kZS1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgT25Tb3VyY2VDaGFuZ2VkLFxuICBPblNvdXJjZUVycm9yLFxuICBPblNvdXJjZVJlY2VpdmVkLFxuICBSZXNwb25zZVxufSBmcm9tICduZzItc3JjLWRpcmVjdGl2ZS9zcmMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb2RlYmxvY2snLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgI2NvbnRlbnRFbCBjbGFzcz1cImNvZGVibG9jay1jb250ZW50XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2RlYmxvY2sge3t0aGVtZX19XCI+XG4gICAgICA8Y29kZS1yZW5kZXJlclxuICAgICAgICBbY29kZV09XCJjb2RlXCJcbiAgICAgICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCJcbiAgICAgICAgW2xpbmVOdW1iZXJzXT1cInNob3VsZERpc3BsYXlMaW5lTnVtYmVycygpXCJcbiAgICAgICAgW3NoZWxsXT1cInNoZWxsXCJcbiAgICAgICAgW3Byb21wdF09XCJwcm9tcHRcIlxuICAgICAgICBbb3V0cHV0TGluZXNdPVwib3V0cHV0TGluZXNcIj5cbiAgICAgIDwvY29kZS1yZW5kZXJlcj5cbiAgICA8L2Rpdj5cbiAgYCxcblxuICAvLyBDU1MgaW5qZWN0ZWQgaW4gYnVpbGQgc3RlcFxuICBzdHlsZXM6IFtge3tDU1N9fWBdLFxuXG4gIC8vIG5lY2Vzc2FyeSB0byBtYWtlIGNvbXBvbmVudCBzdHlsZXMgYXBwbHkgYmVjYXVzZSB1bmlxdWUgbmcgYXR0cmlidXRlc1xuICAvLyBhcmVuJ3QgYXBwbGllZCB0byBlbGVtZW50cyBhZGRlZCBieSBQcmlzbS5oaWdobGlnaHRcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcblxuICBkaXJlY3RpdmVzOiBbQ29kZVJlbmRlcmVyXVxufSlcbmV4cG9ydCBjbGFzcyBDb2RlYmxvY2tDb21wb25lbnQgaW1wbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPblNvdXJjZUNoYW5nZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uU291cmNlRXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uU291cmNlUmVjZWl2ZWQge1xuXG4gIC8qKiBWaWV3Q2hpbGRyZW4gKiovXG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgZm9yIHRoZSBvcmlnaW5hbCBjb250ZW50IG9mIHRoZSBjb2RlYmxvY2suIEhpZGRlbiBmcm9tIHZpZXcuXG4gICAqL1xuICBAVmlld0NoaWxkKCdjb250ZW50RWwnKSBjb250ZW50RWw7XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCB0aGF0IHNob3dzIHRoZSBoaWdobGlnaHRlZCBjb2RlLlxuICAgKi9cbiAgQFZpZXdDaGlsZChDb2RlUmVuZGVyZXIpIGNvZGVSZW5kZXJlcjtcblxuXG4gIC8qKiBMaWZlY3ljbGUgRXZlbnRzICoqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY29kZSB3aGVuIGNvbnRlbnQgY2hhbmdlc1xuICAgKi9cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIGlmICghdGhpcy5fc291cmNlZCAmJiAhdGhpcy5fc2hvd2luZ01lc3NhZ2UpIHsgdGhpcy5jb2RlID0gdGhpcy5jb250ZW50OyB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGNvZGUgd2hlbiBhbnkgaW5wdXQgY2hhbmdlc1xuICAgKi9cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICh0aGlzLl9jaGFuZ2VkKSB7XG4gICAgICB0aGlzLl9jaGFuZ2VkID0gZmFsc2U7XG4gICAgICB0aGlzLmNvZGVSZW5kZXJlci5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKiBBdHRyaWJ1dGVzICoqL1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBjb250ZW50IG9mIHRoZSBjb2RlYmxvY2suXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIGBgYFxuICAgKiAgIDxjb2RlYmxvY2sgamF2YXNjcmlwdD5cbiAgICogICAgIC8vIEluc2lkZSB0aGUgY29kZWJsb2NrXG4gICAqICAgPC9jb2RlYmxvY2s+XG4gICAqIGBgYFxuICAgKiBSZXN1bHQ6XG4gICAqIGBgYFxuICAgKiAgLy8gSW5zaWRlIHRoZSBjb2RlYmxvY2tcbiAgICogYGBgXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gLSBpbm5lckhUTUwgb2YgdGhpcyBjb2RlYmxvY2sncyBuYXRpdmVFbGVtZW50XG4gICAqL1xuICBnZXQgY29udGVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRFbCA/IHRoaXMuY29udGVudEVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MIDogJyc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBUaGUgY29kZSB0byBkaXNwbGF5IGluIHRoZSBjb2RlYmxvY2suIEF1dG9tYXRpY2FsbHkgc2V0IHRvIHRoaXMuY29udGVudFxuICAgKiB1bmxlc3MgYSBzcmMgYXR0cmlidXRlIGlzIHByZXNlbnQuXG4gICAqL1xuICBzZXQgY29kZShjb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5fY29kZSAhPT0gY29kZSkge1xuICAgICAgdGhpcy5fY2hhbmdlZCA9IHRydWU7XG4gICAgICAvLyB0aGlzLl9zaG93aW5nTWVzc2FnZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY29kZSA9IGNvZGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29kZTtcbiAgfVxuXG5cbiAgLyoqIElucHV0cyAqKi9cblxuICAvKipcbiAgICogRGlzcGxheSBsaW5lIG51bWJlcnMgZm9yIHRoZSBjb2RlYmxvY2suIFRoZSBudW1iZXJzIHN0YXJ0IGF0IDEgYW5kIGFyZVxuICAgKiBub3Qgc2VsZWN0ZWQgd2hlbiBzZWxlY3RpbmcgdGhlIG1haW4gY29kZSB0ZXh0LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBgYGBcbiAgICogICA8Y29kZWJsb2NrIFtsaW5lTnVtYmVyc109XCJ0cnVlXCIgbWFya3VwPlxuICAgKiAgICAgPGgxPkhlbGxvPC9oMT5cbiAgICogICAgIDxoMT5IaTwvaDE+XG4gICAqICAgICA8aDE+QWxvaGE8L2gxPlxuICAgKiAgIDwvY29kZWJsb2NrPlxuICAgKiBgYGBcbiAgICpcbiAgICogUmVzdWx0OlxuICAgKiBgYGBcbiAgICogICAxICA8aDE+SGVsbG88L2gxPlxuICAgKiAgIDIgIDxoMT5IaTwvaDE+XG4gICAqICAgMyAgPGgxPkFsb2hhPC9oMT5cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSAge2Jvb2xlYW59IHZhbHVlIC0gd2hldGhlciBvciBub3QgdG8gc2hvdyBsaW5lIG51bWJlcnNcbiAgICovXG4gIEBJbnB1dCgpIHNldCBsaW5lTnVtYmVycyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl9saW5lTnVtYmVycyAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5nZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fbGluZU51bWJlcnMgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgbGluZU51bWJlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xpbmVOdW1iZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IC0gd2hldGhlciBvciBub3QgbGluZU51bWJlcnMgc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgc2hvdWxkRGlzcGxheUxpbmVOdW1iZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpbmVOdW1iZXJzICYmICEgdGhpcy5fc2hvd2luZ01lc3NhZ2U7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGxhbmd1YWdlIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBjb2RlIHdpdGhpbiB0aGUgY29kZWJsb2NrLlxuICAgKiBDb25zaWRlciB1c2luZyBhIGxhbmd1YWdlIGRpcmVjdGl2ZSBpbnN0ZWFkIGlmIHRoZSBsYW5ndWFnZSBpcyBub3RcbiAgICogZ29pbmcgdG8gY2hhbmdlIGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiAgICA8Y29kZWJsb2NrIGxhbmd1YWdlPVwibWFya3VwXCI+XG4gICAqICAgICAgPGgxPlRoaXMgaXMgSFRNTDwvaDE+XG4gICAqICAgIDwvY29kZWJsb2NrPlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gLSBsYW5ndWFnZSB1c2VkIGZvciBoaWdobGlnaHRpbmdcbiAgICovXG4gIEBJbnB1dCgpIHNldCBsYW5ndWFnZShsYW5nOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5pc1NoZWxsKCkpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fbGFuZ3VhZ2VTZXQgPSBsYW5nICYmIGxhbmcubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLl9sYW5ndWFnZSA9IFByaXNtLmxhbmd1YWdlc1tsYW5nXSA/IGxhbmcgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY2hhbmdlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgbGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dpbmdNZXNzYWdlID8gdW5kZWZpbmVkIDogdGhpcy5fbGFuZ3VhZ2U7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBUaGUgdGhlbWUgZm9yIHN0eWxpbmcgdGhlIGNvZGVibG9jay4gQWxsIHByaXNtanMgdGhlbWVzIGFyZSBhdmFpbGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSAge3N0cmluZ30gdGhlbWUgLSBBIHByaXNtanMgdGhlbWUuIERlZmF1bHRzIHRvICdzdGFuZGFyZCcuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdGhlbWUodGhlbWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RoZW1lID0gdGhlbWU7XG4gIH1cblxuICBnZXQgdGhlbWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdGhlbWUpIHsgcmV0dXJuIHRoaXMuX3RoZW1lOyB9XG5cbiAgICByZXR1cm4gdGhpcy5pc1NoZWxsKCkgPyB0aGlzLkRFRkFVTFRfU0hFTExfVEhFTUUgOiB0aGlzLkRFRkFVTFRfVEhFTUU7XG4gIH1cblxuICAvKipcbiAgICogQSBsaXN0IG9mIHRoZSB2YWxpZCBjb2RlYmxvY2sgdGhlbWVzLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBgYGBcbiAgICogICA8c2VsZWN0IG5hbWU9XCJzZWxlY3RcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGhlbWVcIj5cbiAgICogICAgIDxvcHRpb24gKm5nRm9yPVwiI3RoZW1lIG9mIENvZGVibG9ja0NvbXBvbmVudC5USEVNRVNcIlxuICAgKiAgICAgICB2YWx1ZT1cInt7dGhlbWV9fVwiPnt7dGhlbWV9fTwvb3B0aW9uPlxuICAgKiAgIDwvc2VsZWN0PlxuICAgKiBgYGBcbiAgICovXG4gIHN0YXRpYyBUSEVNRVM6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgXCJzdGFuZGFyZFwiLFxuICAgIFwiY295XCIsXG4gICAgXCJkYXJrXCIsXG4gICAgXCJmdW5reVwiLFxuICAgIFwib2thaWRpYVwiLFxuICAgIFwic29sYXJpemVkbGlnaHRcIixcbiAgICBcInRvbW9ycm93XCIsXG4gICAgXCJ0d2lsaWdodFwiXG4gIF07XG5cbiAgREVGQVVMVF9USEVNRSAgICAgICA9IFwic3RhbmRhcmRcIjtcbiAgREVGQVVMVF9TSEVMTF9USEVNRSA9IFwib2thaWRpYVwiO1xuXG5cbiAgLyoqXG4gICAqIFRoZSBjb2RlIGhhcyBiZWVuIGxvYWRlZCBmcm9tIGEgcmVtb3RlIGZpbGUuIFRoZSBmaWxlIG11c3QgaGF2ZSBhbiBleHRlbnNpb25cbiAgICogdG8gYmUgbG9hZGVkLiBFcnJvci93YXJuaW5nIG1lc3NhZ2VzIGFyZSBkaXNwbGF5ZWQgd2l0aGluIHRoZSBjb2RlYmxvY2suIFRoZVxuICAgKiBsYW5ndWFnZSBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIGZpbGUgZXh0ZW5zaW9uLCB1bmxlc3MgYSBsYW5ndWFnZSBpc1xuICAgKiBwcm92aWRlZC4gSW1wb3J0IGFuZCB1c2UgdGhlIFNvdXJjZSBkaXJlY3RpdmUgdG8gYXBwbHkgaXQuXG4gICAqXG4gICAqIE51bGwgbWVhbnMgbm8gc291cmNlIGhhcyBiZWVuIGxvYWRlZC5cbiAgICpcbiAgICogRXhhbXBsZXM6XG4gICAqIGBgYFxuICAgKiAgPGNvZGVibG9jayBzcmM9XCJpbmRleC5odG1sXCI+PC9jb2RlYmxvY2s+XG4gICAqICA8Y29kZWJsb2NrXG4gICAqICAgIHNyYz1cImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90cGFkamVuL25nMi1wcmlzbS9tYXN0ZXIvY29kZWJsb2NrLmpzXCJcbiAgICogIDxjb2RlYmxvY2tcbiAgICogICAgc3JjPVwiaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9yZXNldC5jc3NcIj48L2NvZGVibG9jaz5cbiAgICogYGBgXG4gICAqL1xuICBfc291cmNlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAqL1xuICBzb3VyY2VDaGFuZ2VkKHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5tZXNzYWdlKFwiTG9hZGluZyAuLi5cIik7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gdGhlIGRvd25sb2FkZWQgc291cmNlLCBzZXQgdGhlIGxhbmd1YWdlIGFuZCBjb2RlIHRvIG1hdGNoIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gIHtSZXNwb25zZX0gcmVzXG4gICAqL1xuICBzb3VyY2VSZWNlaXZlZChyZXM6IFJlc3BvbnNlKSB7XG4gICAgbGV0IGV4dCA9IHJlcy51cmwubWF0Y2goL1xcLihcXHcrKSQvKVsxXTtcbiAgICBsZXQgZmlsZUxhbmcgPSBDb2RlYmxvY2tDb21wb25lbnQuRVhURU5TSU9OX01BUFtleHRdIHx8IGV4dDtcbiAgICBsZXQgdGV4dCA9IHJlcy50ZXh0KCk7XG4gICAgaWYgKCF0aGlzLl9sYW5ndWFnZVNldCkge1xuICAgICAgdGhpcy5fbGFuZ3VhZ2UgPSBmaWxlTGFuZztcbiAgICAgIGlmIChmaWxlTGFuZyA9PT0gJ3R5cGVzY3JpcHQnKSB7XG4gICAgICAgIHRleHQgPSB0aGlzLl9yZXBsYWNlVGFnc0luTXVsdGlsaW5lKHJlcy50ZXh0KCkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvZGUgPSB0ZXh0O1xuICAgIHRoaXMuX3Nob3dpbmdNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5fc291cmNlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSBkb3dubG9hZGluZyBmcm9tIHRoZSBzcmMgdXJsXG4gICAqXG4gICAqIEBwYXJhbSAge0Vycm9yfSBlcnJvclxuICAgKi9cbiAgc291cmNlRXJyb3IoZXJyb3IpIHtcbiAgICB0aGlzLl9zb3VyY2VkID0gZmFsc2U7XG4gICAgdGhpcy5tZXNzYWdlKGVycm9yLm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogJ0FuIGVycm9yIG9jY3VyZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogTWFwIG9mIGZpbGUgZXh0ZW5zaW9ucyB0byBoaWdobGlnaHRpbmcgbGFuZ3VhZ2VzXG4gICAqL1xuICBzdGF0aWMgRVhURU5TSU9OX01BUCA9IHtcbiAgICAnanMnOiAnamF2YXNjcmlwdCcsXG4gICAgJ3RzJzogJ3R5cGVzY3JpcHQnLFxuICAgICdodG1sJzogJ21hcmt1cCcsXG4gICAgJ3N2Zyc6ICdtYXJrdXAnLFxuICAgICd4bWwnOiAnbWFya3VwJyxcbiAgICAnbWQnOiAnbWFya2Rvd24nLFxuICAgICdweSc6ICdweXRob24nLFxuICAgICdyYic6ICdydWJ5JyxcbiAgICAncHMxJzogJ3Bvd2Vyc2hlbGwnLFxuICAgICdwc20xJzogJ3Bvd2Vyc2hlbGwnXG4gIH07XG5cblxuICAvKipcbiAgICogVHVybiB0aGlzIGNvZGVibG9jayBpbnRvIGEgc2hlbGwgZGlzcGxheSB3aXRoIGEgcHJvbXB0LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBgYGBcbiAgICogICA8Y29kZWJsb2NrIHNoZWxsPVwiYmFzaFwiPlxuICAgKiAgICAgY2QgLi5cbiAgICogICAgIG1rZGlyIHByb2plY3RcbiAgICogICA8L2NvZGVibG9jaz5cbiAgICpgYGBcbiAgICogUmVzdWx0OlxuICAgKiBgYGBcbiAgICogICAkIGNkIC4uXG4gICAqICAgJCBta2RpciBwcm9qZWN0XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2hlbGxUeXBlIC0gT25lIG9mIENvZGVibG9ja0NvbXBvbmVudC5TSEVMTF9UWVBFU1xuICAgKi9cbiAgQElucHV0KCkgc2V0IHNoZWxsKHNoZWxsVHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHNoZWxsVHlwZSAmJiBDb2RlYmxvY2tDb21wb25lbnQuU0hFTExfVFlQRVMuaW5kZXhPZihzaGVsbFR5cGUpICE9PSAtMSkge1xuICAgICAgdGhpcy5fbGFuZ3VhZ2UgPSBzaGVsbFR5cGU7XG4gICAgICB0aGlzLl9sYW5ndWFnZVNldCA9IHRydWU7XG4gICAgICB0aGlzLl9zaGVsbFR5cGUgPSBzaGVsbFR5cGU7XG4gICAgICB0aGlzLmxpbmVOdW1iZXJzID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFuZ2VkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2hlbGxUeXBlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hlbGwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2hlbGxUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgZGlzcGxheWVkIGFzIGEgc2hlbGw/XG4gICAqL1xuICBpc1NoZWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaGVsbFR5cGUgIT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUG9zc2libGUgc2hlbGwgdHlwZXNcbiAgICovXG4gIHN0YXRpYyBTSEVMTF9UWVBFUzogQXJyYXk8c3RyaW5nPiAgPSBbJ2Jhc2gnLCAncG93ZXJzaGVsbCddO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvbXB0IHRvIGRpc3BsYXkgaW4gYSBzaGVsbCBjb2RlYmxvY2suIERlZmF1bHQgaXMgJC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBgXG4gICAqICAgPGNvZGVibG9jayBzaGVsbD1cImJhc2hcIiBwcm9tcHQ9XCIjXCI+XG4gICAqICAgICBjZCAuLlxuICAgKiAgIDwvY29kZWJsb2NrPlxuICAgKmBgYFxuICAgKiBSZXN1bHQ6XG4gICAqIGBgYFxuICAgKiAgICMgY2QgLi5cbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKSBwcm9tcHQ6IHN0cmluZyA9ICckJztcblxuICAvKipcbiAgICogQ29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgbGluZXMgb3Igc2VyaWVzIG9mIGxpbmVzIHRvIHRyZWF0IGFzIG91dHB1dFxuICAgKiBpbiBhIHNoZWxsIGNvZGVibG9jaywgbWVhbmluZyB0aGV5IGRvIG5vdCBoYXZlIGEgcHJvbXB0LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBgYGBcbiAgICogICA8Y29kZWJsb2NrIHNoZWxsPVwiYmFzaFwiIG91dHB1dExpbmVzPVwiMiwgNC02LCA4XCI+XG4gICAqICAgICBMaW5lIDFcbiAgICogICAgIExpbmUgMlxuICAgKiAgICAgTGluZSAzXG4gICAqICAgICBMaW5lIDRcbiAgICogICAgIExpbmUgNVxuICAgKiAgICAgTGluZSA2XG4gICAqICAgICBMaW5lIDdcbiAgICogICAgIExpbmUgOFxuICAgKiAgIDwvY29kZWJsb2NrPlxuICAgKiBSZXN1bHQ6XG4gICAqIGBgYFxuICAgKiAgICQgTGluZSAxXG4gICAqICAgICBMaW5lIDJcbiAgICogICAkIExpbmUgM1xuICAgKiAgICAgTGluZSA0XG4gICAqICAgICBMaW5lIDVcbiAgICogICAgIExpbmUgNlxuICAgKiAgICQgTGluZSA3XG4gICAqICAgICBMaW5lIDhcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKSBvdXRwdXRMaW5lczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAgVXNlIG91dHB1dExpbmVzIGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBvdXRwdXQobGluZXM6IHN0cmluZykge1xuICAgIGNvbnNvbGUud2FybihcIkRFUFJFQ0FUSU9OIFdBUk5JTkc6IFRoZSBDb2RlYmxvY2tDb21wb25lbnQgSW5wdXQgcHJvcGVydHkgJ291dHB1dCdcIiArXG4gICAgICAgICAgICBcIiBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gVXNlICdvdXRwdXRMaW5lcydcIik7XG4gICAgdGhpcy5vdXRwdXRMaW5lcyA9IGxpbmVzO1xuICB9XG5cbiAgLyoqIFRydW5jYXRpb24gKiovXG4gIC8vIEBJbnB1dCgpIHRydW5jYXRpb25TaXplOiBudW1iZXIgPSAxMDAwMDA7XG4gIC8vIEBJbnB1dCgpIHRydW5jYXRpb25NZXNzYWdlOiBzdHJpbmcgPSBcI