diff --git a/README.md b/README.md
index b5069d324e5..cedc257c18d 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
-
+
diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/.swcrc b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/.swcrc
new file mode 100644
index 00000000000..85a9eadbe88
--- /dev/null
+++ b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/.swcrc
@@ -0,0 +1,22 @@
+{
+ "test": ".*.ts$",
+ "jsc": {
+ "target": "es2020",
+ "parser": {
+ "syntax": "typescript",
+ "tsx": false,
+ "decorators": false,
+ "dynamicImport": false
+ },
+ "externalHelpers": true,
+ "transform": {
+ "hidden": {
+ "jest": true
+ }
+ }
+ },
+ "module": {
+ "type": "commonjs"
+ },
+ "sourceMaps": true
+}
\ No newline at end of file
diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/index.ts b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/index.ts
new file mode 100644
index 00000000000..0ffd16b7223
--- /dev/null
+++ b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/index.ts
@@ -0,0 +1,256 @@
+import { AbstractBuilder, AbstractSeqBuilder } from './AbstractBuilders';
+import { hash, mapBuildArg, mapBuildArgs } from './Builder.utils';
+import { image } from './ElementBuilder';
+
+import type {
+ Body,
+ BodyStage,
+ TrustBox,
+ RichText,
+ Opener,
+ BodyHeader,
+ Stage,
+ ArticleSource,
+ ArticleSources,
+} from '@paper/models';
+import type { BuildArg, BuildArgs, CreateBuilder, SeqElement, SeqNextElementConverter } from './types';
+
+/**
+ * @deprecated use {Builder.body.node.img()}
+ */
+export * from './BodyNodesBuilder';
+export * as node from './BodyNodesBuilder';
+
+export const create: CreateBuilder = () => new BodyBuilder();
+export const trustBox: CreateBuilder = () => new TrustBoxBuilder();
+export const opener: CreateBuilder = () => new OpenerBuilder();
+export const stage: CreateBuilder = () => new BodyStageBuilder();
+export const header: CreateBuilder = () => new BodyHeaderBuilder();
+export const source: CreateBuilder> = (
+ nodes: BuildArgs = [],
+) => new ArticleSourceBuilder(...nodes);
+export const sources: CreateBuilder = () => new ArticleSourcesBuilder();
+
+export const seq = {
+ stage: (() => new BodyStageSeqBuilder()) as CreateBuilder,
+ source: (() => new ArticleSourceSeqBuilder()) as CreateBuilder,
+} as const;
+
+class BodyBuilder extends AbstractBuilder {
+ #stages: BodyStage[] = [];
+ #trustBox?: TrustBox = undefined;
+ #disclaimer?: RichText.Node[] = undefined;
+ #articleSources?: ArticleSources = undefined;
+
+ stages(...stages: BuildArgs): this {
+ this.#stages = stages.map(mapBuildArg);
+ return this;
+ }
+
+ trustBox(trustBox?: BuildArg): this {
+ this.#trustBox = mapBuildArg(trustBox);
+ return this;
+ }
+
+ disclaimer(disclaimer?: BuildArgs): this {
+ this.#disclaimer = disclaimer?.map(mapBuildArg);
+ return this;
+ }
+
+ articleSources(articleSources?: BuildArg): this {
+ this.#articleSources = mapBuildArg(articleSources);
+ return this;
+ }
+
+ build(): Body {
+ return {
+ stages: this.#stages,
+ trustBox: this.#trustBox,
+ disclaimer: this.#disclaimer,
+ articleSources: this.#articleSources,
+ };
+ }
+}
+
+class TrustBoxBuilder extends AbstractBuilder {
+ #nodes: RichText.Node[] = [];
+ #hidden: RichText.Node[] = [];
+
+ nodes(nodes: BuildArgs): this {
+ this.#nodes = nodes.map(mapBuildArg);
+ return this;
+ }
+
+ hidden(hidden: BuildArgs): this {
+ this.#hidden = hidden.map(mapBuildArg);
+ return this;
+ }
+
+ build(): TrustBox {
+ return {
+ nodes: this.#nodes,
+ hidden: this.#hidden,
+ };
+ }
+}
+
+class OpenerBuilder extends AbstractBuilder {
+ #element: Opener['element'] = image().build();
+
+ element(element: BuildArg): this {
+ this.#element = mapBuildArg(element);
+ return this;
+ }
+
+ build(): Opener {
+ return {
+ element: this.#element,
+ };
+ }
+}
+
+class BodyStageSeqBuilder extends AbstractSeqBuilder {
+ #nodes: SeqElement = [];
+ #header?: SeqElement = undefined;
+ #companions: SeqElement = [];
+ #commercialsEndOfStage: SeqElement = [];
+
+ nodes(nodes: SeqElement>): this {
+ this.#nodes = nodes.map(mapBuildArgs);
+ return this;
+ }
+
+ header(header?: SeqElement>): this {
+ this.#header = mapBuildArgs(header ?? []);
+ return this;
+ }
+
+ companions(companions: SeqElement>): this {
+ this.#companions = companions.map(mapBuildArgs);
+ return this;
+ }
+
+ commercialsEndOfStage(commercialsEndOfStage: SeqElement>): this {
+ this.#commercialsEndOfStage = commercialsEndOfStage.map(mapBuildArgs);
+ return this;
+ }
+
+ buildListItem(seqNextElement: SeqNextElementConverter): BodyStage {
+ return {
+ id: hash('bodyStage', this.#nodes, this.#companions, this.#commercialsEndOfStage, this.#header),
+ nodes: seqNextElement.array(this.#nodes),
+ header: seqNextElement.maybe(this.#header),
+ companions: seqNextElement.array(this.#companions),
+ commercialsEndOfStage: seqNextElement.array(this.#commercialsEndOfStage),
+ };
+ }
+}
+
+class BodyStageBuilder extends AbstractBuilder {
+ #seqBuilder: BodyStageSeqBuilder = new BodyStageSeqBuilder();
+
+ nodes(nodes: BuildArgs): this {
+ this.#seqBuilder.nodes([nodes]);
+ return this;
+ }
+
+ header(header?: BuildArg): this {
+ if (header) {
+ this.#seqBuilder.header([header]);
+ }
+ return this;
+ }
+
+ companions(companions: BuildArgs): this {
+ this.#seqBuilder.companions([companions]);
+ return this;
+ }
+
+ commercialsEndOfStage(commercialsEndOfStage: BuildArgs): this {
+ this.#seqBuilder.commercialsEndOfStage([commercialsEndOfStage]);
+ return this;
+ }
+
+ build(): BodyStage {
+ return this.#seqBuilder.build();
+ }
+}
+
+class BodyHeaderBuilder extends AbstractBuilder {
+ #variant: BodyHeader['variant'] = 'full';
+ #opener?: Opener = undefined;
+
+ variant(variant: BodyHeader['variant']): this {
+ this.#variant = variant;
+ return this;
+ }
+
+ opener(opener: BuildArg): this {
+ this.#opener = mapBuildArg(opener);
+ return this;
+ }
+
+ build(): BodyHeader {
+ return {
+ variant: this.#variant,
+ opener: this.#opener,
+ };
+ }
+}
+
+class ArticleSourceSeqBuilder extends AbstractSeqBuilder {
+ #nodes: SeqElement = [];
+
+ nodes(nodes: SeqElement>): this {
+ this.#nodes = nodes.map(mapBuildArgs);
+ return this;
+ }
+
+ buildListItem(seqNextElement: SeqNextElementConverter): ArticleSource {
+ const id = hash('article-source', this.#nodes);
+ return {
+ id,
+ nodes: seqNextElement.array(this.#nodes),
+ };
+ }
+}
+
+class ArticleSourceBuilder extends AbstractBuilder {
+ #seqBuilder: ArticleSourceSeqBuilder = new ArticleSourceSeqBuilder();
+
+ constructor(...nodes: BuildArgs) {
+ super();
+ this.nodes(...nodes);
+ }
+
+ nodes(...nodes: BuildArgs): this {
+ this.#seqBuilder.nodes([nodes]);
+ return this;
+ }
+
+ build(): ArticleSource {
+ return this.#seqBuilder.build();
+ }
+}
+
+class ArticleSourcesBuilder extends AbstractBuilder {
+ #nodes: ArticleSource[] = [];
+ #hidden: ArticleSource[] = [];
+
+ nodes(...nodes: BuildArgs): this {
+ this.#nodes = nodes.map(mapBuildArg);
+ return this;
+ }
+
+ hidden(...hidden: BuildArgs): this {
+ this.#hidden = hidden.map(mapBuildArg);
+ return this;
+ }
+
+ build(): ArticleSources {
+ return {
+ nodes: this.#nodes,
+ hidden: this.#hidden,
+ };
+ }
+}
\ No newline at end of file
diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.map b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.map
new file mode 100644
index 00000000000..d66d12fca51
--- /dev/null
+++ b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.map
@@ -0,0 +1,54 @@
+{
+ "mappings": "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",
+ "names": [
+ "node",
+ "create",
+ "BodyBuilder",
+ "trustBox",
+ "TrustBoxBuilder",
+ "opener",
+ "OpenerBuilder",
+ "stage",
+ "BodyStageBuilder",
+ "header",
+ "BodyHeaderBuilder",
+ "source",
+ "nodes",
+ "ArticleSourceBuilder",
+ "sources",
+ "ArticleSourcesBuilder",
+ "seq",
+ "BodyStageSeqBuilder",
+ "ArticleSourceSeqBuilder",
+ "AbstractBuilder",
+ "stages",
+ "map",
+ "mapBuildArg",
+ "disclaimer",
+ "articleSources",
+ "build",
+ "undefined",
+ "hidden",
+ "element",
+ "image",
+ "AbstractSeqBuilder",
+ "mapBuildArgs",
+ "companions",
+ "commercialsEndOfStage",
+ "buildListItem",
+ "seqNextElement",
+ "id",
+ "hash",
+ "array",
+ "maybe",
+ "seqBuilder",
+ "variant"
+ ],
+ "sources": [
+ "../../input/index.ts"
+ ],
+ "sourcesContent": [
+ "import { AbstractBuilder, AbstractSeqBuilder } from './AbstractBuilders';\nimport { hash, mapBuildArg, mapBuildArgs } from './Builder.utils';\nimport { image } from './ElementBuilder';\n\nimport type {\n Body,\n BodyStage,\n TrustBox,\n RichText,\n Opener,\n BodyHeader,\n Stage,\n ArticleSource,\n ArticleSources,\n} from '@paper/models';\nimport type { BuildArg, BuildArgs, CreateBuilder, SeqElement, SeqNextElementConverter } from './types';\n\n/**\n * @deprecated use {Builder.body.node.img()}\n */\nexport * from './BodyNodesBuilder';\nexport * as node from './BodyNodesBuilder';\n\nexport const create: CreateBuilder = () => new BodyBuilder();\nexport const trustBox: CreateBuilder = () => new TrustBoxBuilder();\nexport const opener: CreateBuilder = () => new OpenerBuilder();\nexport const stage: CreateBuilder = () => new BodyStageBuilder();\nexport const header: CreateBuilder = () => new BodyHeaderBuilder();\nexport const source: CreateBuilder> = (\n nodes: BuildArgs = [],\n) => new ArticleSourceBuilder(...nodes);\nexport const sources: CreateBuilder = () => new ArticleSourcesBuilder();\n\nexport const seq = {\n stage: (() => new BodyStageSeqBuilder()) as CreateBuilder,\n source: (() => new ArticleSourceSeqBuilder()) as CreateBuilder,\n} as const;\n\nclass BodyBuilder extends AbstractBuilder {\n #stages: BodyStage[] = [];\n #trustBox?: TrustBox = undefined;\n #disclaimer?: RichText.Node[] = undefined;\n #articleSources?: ArticleSources = undefined;\n\n stages(...stages: BuildArgs): this {\n this.#stages = stages.map(mapBuildArg);\n return this;\n }\n\n trustBox(trustBox?: BuildArg): this {\n this.#trustBox = mapBuildArg(trustBox);\n return this;\n }\n\n disclaimer(disclaimer?: BuildArgs): this {\n this.#disclaimer = disclaimer?.map(mapBuildArg);\n return this;\n }\n\n articleSources(articleSources?: BuildArg): this {\n this.#articleSources = mapBuildArg(articleSources);\n return this;\n }\n\n build(): Body {\n return {\n stages: this.#stages,\n trustBox: this.#trustBox,\n disclaimer: this.#disclaimer,\n articleSources: this.#articleSources,\n };\n }\n}\n\nclass TrustBoxBuilder extends AbstractBuilder {\n #nodes: RichText.Node[] = [];\n #hidden: RichText.Node[] = [];\n\n nodes(nodes: BuildArgs): this {\n this.#nodes = nodes.map(mapBuildArg);\n return this;\n }\n\n hidden(hidden: BuildArgs): this {\n this.#hidden = hidden.map(mapBuildArg);\n return this;\n }\n\n build(): TrustBox {\n return {\n nodes: this.#nodes,\n hidden: this.#hidden,\n };\n }\n}\n\nclass OpenerBuilder extends AbstractBuilder {\n #element: Opener['element'] = image().build();\n\n element(element: BuildArg): this {\n this.#element = mapBuildArg(element);\n return this;\n }\n\n build(): Opener {\n return {\n element: this.#element,\n };\n }\n}\n\nclass BodyStageSeqBuilder extends AbstractSeqBuilder {\n #nodes: SeqElement = [];\n #header?: SeqElement = undefined;\n #companions: SeqElement = [];\n #commercialsEndOfStage: SeqElement = [];\n\n nodes(nodes: SeqElement>): this {\n this.#nodes = nodes.map(mapBuildArgs);\n return this;\n }\n\n header(header?: SeqElement>): this {\n this.#header = mapBuildArgs(header ?? []);\n return this;\n }\n\n companions(companions: SeqElement>): this {\n this.#companions = companions.map(mapBuildArgs);\n return this;\n }\n\n commercialsEndOfStage(commercialsEndOfStage: SeqElement>): this {\n this.#commercialsEndOfStage = commercialsEndOfStage.map(mapBuildArgs);\n return this;\n }\n\n buildListItem(seqNextElement: SeqNextElementConverter): BodyStage {\n return {\n id: hash('bodyStage', this.#nodes, this.#companions, this.#commercialsEndOfStage, this.#header),\n nodes: seqNextElement.array(this.#nodes),\n header: seqNextElement.maybe(this.#header),\n companions: seqNextElement.array(this.#companions),\n commercialsEndOfStage: seqNextElement.array(this.#commercialsEndOfStage),\n };\n }\n}\n\nclass BodyStageBuilder extends AbstractBuilder {\n #seqBuilder: BodyStageSeqBuilder = new BodyStageSeqBuilder();\n\n nodes(nodes: BuildArgs): this {\n this.#seqBuilder.nodes([nodes]);\n return this;\n }\n\n header(header?: BuildArg): this {\n if (header) {\n this.#seqBuilder.header([header]);\n }\n return this;\n }\n\n companions(companions: BuildArgs): this {\n this.#seqBuilder.companions([companions]);\n return this;\n }\n\n commercialsEndOfStage(commercialsEndOfStage: BuildArgs): this {\n this.#seqBuilder.commercialsEndOfStage([commercialsEndOfStage]);\n return this;\n }\n\n build(): BodyStage {\n return this.#seqBuilder.build();\n }\n}\n\nclass BodyHeaderBuilder extends AbstractBuilder {\n #variant: BodyHeader['variant'] = 'full';\n #opener?: Opener = undefined;\n\n variant(variant: BodyHeader['variant']): this {\n this.#variant = variant;\n return this;\n }\n\n opener(opener: BuildArg): this {\n this.#opener = mapBuildArg(opener);\n return this;\n }\n\n build(): BodyHeader {\n return {\n variant: this.#variant,\n opener: this.#opener,\n };\n }\n}\n\nclass ArticleSourceSeqBuilder extends AbstractSeqBuilder {\n #nodes: SeqElement = [];\n\n nodes(nodes: SeqElement>): this {\n this.#nodes = nodes.map(mapBuildArgs);\n return this;\n }\n\n buildListItem(seqNextElement: SeqNextElementConverter): ArticleSource {\n const id = hash('article-source', this.#nodes);\n return {\n id,\n nodes: seqNextElement.array(this.#nodes),\n };\n }\n}\n\nclass ArticleSourceBuilder extends AbstractBuilder {\n #seqBuilder: ArticleSourceSeqBuilder = new ArticleSourceSeqBuilder();\n\n constructor(...nodes: BuildArgs) {\n super();\n this.nodes(...nodes);\n }\n\n nodes(...nodes: BuildArgs): this {\n this.#seqBuilder.nodes([nodes]);\n return this;\n }\n\n build(): ArticleSource {\n return this.#seqBuilder.build();\n }\n}\n\nclass ArticleSourcesBuilder extends AbstractBuilder {\n #nodes: ArticleSource[] = [];\n #hidden: ArticleSource[] = [];\n\n nodes(...nodes: BuildArgs): this {\n this.#nodes = nodes.map(mapBuildArg);\n return this;\n }\n\n hidden(...hidden: BuildArgs): this {\n this.#hidden = hidden.map(mapBuildArg);\n return this;\n }\n\n build(): ArticleSources {\n return {\n nodes: this.#nodes,\n hidden: this.#hidden,\n };\n }\n}"
+ ],
+ "version": 3
+}
diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.ts b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.ts
new file mode 100644
index 00000000000..0bfb00e093c
--- /dev/null
+++ b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.ts
@@ -0,0 +1,329 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+var _exportNames = {
+ node: true,
+ node: true
+};
+exports.seq = exports.sources = exports.source = exports.header = exports.stage = exports.opener = exports.trustBox = exports.create = exports.node = void 0;
+var swcHelpers = require("@swc/helpers");
+var _abstractBuilders = require("./AbstractBuilders");
+var _builderUtils = require("./Builder.utils");
+var _elementBuilder = require("./ElementBuilder");
+var _node = swcHelpers.interopRequireWildcard(require("./BodyNodesBuilder"));
+Object.keys(_node).forEach(function(key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _node[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function() {
+ return _node[key];
+ }
+ });
+});
+exports.node = _node;
+const create = ()=>new BodyBuilder()
+;
+exports.create = create;
+const trustBox = ()=>new TrustBoxBuilder()
+;
+exports.trustBox = trustBox;
+const opener = ()=>new OpenerBuilder()
+;
+exports.opener = opener;
+const stage = ()=>new BodyStageBuilder()
+;
+exports.stage = stage;
+const header = ()=>new BodyHeaderBuilder()
+;
+exports.header = header;
+const source = (nodes = [])=>new ArticleSourceBuilder(...nodes)
+;
+exports.source = source;
+const sources = ()=>new ArticleSourcesBuilder()
+;
+exports.sources = sources;
+const seq = {
+ stage: ()=>new BodyStageSeqBuilder()
+ ,
+ source: ()=>new ArticleSourceSeqBuilder()
+};
+exports.seq = seq;
+var _stages = new WeakMap(), _trustBox = new WeakMap(), _disclaimer = new WeakMap(), _articleSources = new WeakMap();
+class BodyBuilder extends _abstractBuilders.AbstractBuilder {
+ stages(...stages) {
+ swcHelpers.classPrivateFieldSet(this, _stages, stages.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ trustBox(trustBox1) {
+ swcHelpers.classPrivateFieldSet(this, _trustBox, (0, _builderUtils).mapBuildArg(trustBox1));
+ return this;
+ }
+ disclaimer(disclaimer) {
+ swcHelpers.classPrivateFieldSet(this, _disclaimer, disclaimer?.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ articleSources(articleSources) {
+ swcHelpers.classPrivateFieldSet(this, _articleSources, (0, _builderUtils).mapBuildArg(articleSources));
+ return this;
+ }
+ build() {
+ return {
+ stages: swcHelpers.classPrivateFieldGet(this, _stages),
+ trustBox: swcHelpers.classPrivateFieldGet(this, _trustBox),
+ disclaimer: swcHelpers.classPrivateFieldGet(this, _disclaimer),
+ articleSources: swcHelpers.classPrivateFieldGet(this, _articleSources)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _stages, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _trustBox, {
+ writable: true,
+ value: undefined
+ });
+ swcHelpers.classPrivateFieldInit(this, _disclaimer, {
+ writable: true,
+ value: undefined
+ });
+ swcHelpers.classPrivateFieldInit(this, _articleSources, {
+ writable: true,
+ value: undefined
+ });
+ }
+}
+var _nodes = new WeakMap(), _hidden = new WeakMap();
+class TrustBoxBuilder extends _abstractBuilders.AbstractBuilder {
+ nodes(nodes) {
+ swcHelpers.classPrivateFieldSet(this, _nodes, nodes.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ hidden(hidden) {
+ swcHelpers.classPrivateFieldSet(this, _hidden, hidden.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ build() {
+ return {
+ nodes: swcHelpers.classPrivateFieldGet(this, _nodes),
+ hidden: swcHelpers.classPrivateFieldGet(this, _hidden)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _nodes, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _hidden, {
+ writable: true,
+ value: []
+ });
+ }
+}
+var _element = new WeakMap();
+class OpenerBuilder extends _abstractBuilders.AbstractBuilder {
+ element(element) {
+ swcHelpers.classPrivateFieldSet(this, _element, (0, _builderUtils).mapBuildArg(element));
+ return this;
+ }
+ build() {
+ return {
+ element: swcHelpers.classPrivateFieldGet(this, _element)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _element, {
+ writable: true,
+ value: (0, _elementBuilder).image().build()
+ });
+ }
+}
+var _nodes1 = new WeakMap(), _header = new WeakMap(), _companions = new WeakMap(), _commercialsEndOfStage = new WeakMap();
+class BodyStageSeqBuilder extends _abstractBuilders.AbstractSeqBuilder {
+ nodes(nodes) {
+ swcHelpers.classPrivateFieldSet(this, _nodes1, nodes.map(_builderUtils.mapBuildArgs));
+ return this;
+ }
+ header(header1) {
+ swcHelpers.classPrivateFieldSet(this, _header, (0, _builderUtils).mapBuildArgs(header1 ?? []));
+ return this;
+ }
+ companions(companions) {
+ swcHelpers.classPrivateFieldSet(this, _companions, companions.map(_builderUtils.mapBuildArgs));
+ return this;
+ }
+ commercialsEndOfStage(commercialsEndOfStage) {
+ swcHelpers.classPrivateFieldSet(this, _commercialsEndOfStage, commercialsEndOfStage.map(_builderUtils.mapBuildArgs));
+ return this;
+ }
+ buildListItem(seqNextElement) {
+ return {
+ id: (0, _builderUtils).hash('bodyStage', swcHelpers.classPrivateFieldGet(this, _nodes1), swcHelpers.classPrivateFieldGet(this, _companions), swcHelpers.classPrivateFieldGet(this, _commercialsEndOfStage), swcHelpers.classPrivateFieldGet(this, _header)),
+ nodes: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _nodes1)),
+ header: seqNextElement.maybe(swcHelpers.classPrivateFieldGet(this, _header)),
+ companions: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _companions)),
+ commercialsEndOfStage: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _commercialsEndOfStage))
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _nodes1, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _header, {
+ writable: true,
+ value: undefined
+ });
+ swcHelpers.classPrivateFieldInit(this, _companions, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _commercialsEndOfStage, {
+ writable: true,
+ value: []
+ });
+ }
+}
+var _seqBuilder = new WeakMap();
+class BodyStageBuilder extends _abstractBuilders.AbstractBuilder {
+ nodes(nodes) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder).nodes([
+ nodes
+ ]);
+ return this;
+ }
+ header(header2) {
+ if (header2) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder).header([
+ header2
+ ]);
+ }
+ return this;
+ }
+ companions(companions) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder).companions([
+ companions
+ ]);
+ return this;
+ }
+ commercialsEndOfStage(commercialsEndOfStage) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder).commercialsEndOfStage([
+ commercialsEndOfStage
+ ]);
+ return this;
+ }
+ build() {
+ return swcHelpers.classPrivateFieldGet(this, _seqBuilder).build();
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _seqBuilder, {
+ writable: true,
+ value: new BodyStageSeqBuilder()
+ });
+ }
+}
+var _variant = new WeakMap(), _opener = new WeakMap();
+class BodyHeaderBuilder extends _abstractBuilders.AbstractBuilder {
+ variant(variant) {
+ swcHelpers.classPrivateFieldSet(this, _variant, variant);
+ return this;
+ }
+ opener(opener1) {
+ swcHelpers.classPrivateFieldSet(this, _opener, (0, _builderUtils).mapBuildArg(opener1));
+ return this;
+ }
+ build() {
+ return {
+ variant: swcHelpers.classPrivateFieldGet(this, _variant),
+ opener: swcHelpers.classPrivateFieldGet(this, _opener)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _variant, {
+ writable: true,
+ value: 'full'
+ });
+ swcHelpers.classPrivateFieldInit(this, _opener, {
+ writable: true,
+ value: undefined
+ });
+ }
+}
+var _nodes2 = new WeakMap();
+class ArticleSourceSeqBuilder extends _abstractBuilders.AbstractSeqBuilder {
+ nodes(nodes) {
+ swcHelpers.classPrivateFieldSet(this, _nodes2, nodes.map(_builderUtils.mapBuildArgs));
+ return this;
+ }
+ buildListItem(seqNextElement) {
+ const id = (0, _builderUtils).hash('article-source', swcHelpers.classPrivateFieldGet(this, _nodes2));
+ return {
+ id,
+ nodes: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _nodes2))
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _nodes2, {
+ writable: true,
+ value: []
+ });
+ }
+}
+var _seqBuilder1 = new WeakMap();
+class ArticleSourceBuilder extends _abstractBuilders.AbstractBuilder {
+ nodes(...nodes) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder1).nodes([
+ nodes
+ ]);
+ return this;
+ }
+ build() {
+ return swcHelpers.classPrivateFieldGet(this, _seqBuilder1).build();
+ }
+ constructor(...nodes){
+ super();
+ swcHelpers.classPrivateFieldInit(this, _seqBuilder1, {
+ writable: true,
+ value: new ArticleSourceSeqBuilder()
+ });
+ this.nodes(...nodes);
+ }
+}
+var _nodes3 = new WeakMap(), _hidden1 = new WeakMap();
+class ArticleSourcesBuilder extends _abstractBuilders.AbstractBuilder {
+ nodes(...nodes) {
+ swcHelpers.classPrivateFieldSet(this, _nodes3, nodes.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ hidden(...hidden) {
+ swcHelpers.classPrivateFieldSet(this, _hidden1, hidden.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ build() {
+ return {
+ nodes: swcHelpers.classPrivateFieldGet(this, _nodes3),
+ hidden: swcHelpers.classPrivateFieldGet(this, _hidden1)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _nodes3, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _hidden1, {
+ writable: true,
+ value: []
+ });
+ }
+}
diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/.swcrc b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/.swcrc
new file mode 100644
index 00000000000..98c93ceb85e
--- /dev/null
+++ b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/.swcrc
@@ -0,0 +1,22 @@
+{
+ "test": ".*.ts$",
+ "jsc": {
+ "target": "es2020",
+ "parser": {
+ "syntax": "typescript",
+ "tsx": false,
+ "decorators": false,
+ "dynamicImport": false
+ },
+ "externalHelpers": true,
+ "transform": {
+ "hidden": {
+ "jest": true
+ }
+ }
+ },
+ "module": {
+ "type": "commonjs"
+ },
+ "sourceMaps": "inline"
+}
\ No newline at end of file
diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/index.ts b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/index.ts
new file mode 100644
index 00000000000..0ffd16b7223
--- /dev/null
+++ b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/index.ts
@@ -0,0 +1,256 @@
+import { AbstractBuilder, AbstractSeqBuilder } from './AbstractBuilders';
+import { hash, mapBuildArg, mapBuildArgs } from './Builder.utils';
+import { image } from './ElementBuilder';
+
+import type {
+ Body,
+ BodyStage,
+ TrustBox,
+ RichText,
+ Opener,
+ BodyHeader,
+ Stage,
+ ArticleSource,
+ ArticleSources,
+} from '@paper/models';
+import type { BuildArg, BuildArgs, CreateBuilder, SeqElement, SeqNextElementConverter } from './types';
+
+/**
+ * @deprecated use {Builder.body.node.img()}
+ */
+export * from './BodyNodesBuilder';
+export * as node from './BodyNodesBuilder';
+
+export const create: CreateBuilder = () => new BodyBuilder();
+export const trustBox: CreateBuilder = () => new TrustBoxBuilder();
+export const opener: CreateBuilder = () => new OpenerBuilder();
+export const stage: CreateBuilder = () => new BodyStageBuilder();
+export const header: CreateBuilder = () => new BodyHeaderBuilder();
+export const source: CreateBuilder> = (
+ nodes: BuildArgs = [],
+) => new ArticleSourceBuilder(...nodes);
+export const sources: CreateBuilder = () => new ArticleSourcesBuilder();
+
+export const seq = {
+ stage: (() => new BodyStageSeqBuilder()) as CreateBuilder,
+ source: (() => new ArticleSourceSeqBuilder()) as CreateBuilder,
+} as const;
+
+class BodyBuilder extends AbstractBuilder {
+ #stages: BodyStage[] = [];
+ #trustBox?: TrustBox = undefined;
+ #disclaimer?: RichText.Node[] = undefined;
+ #articleSources?: ArticleSources = undefined;
+
+ stages(...stages: BuildArgs): this {
+ this.#stages = stages.map(mapBuildArg);
+ return this;
+ }
+
+ trustBox(trustBox?: BuildArg): this {
+ this.#trustBox = mapBuildArg(trustBox);
+ return this;
+ }
+
+ disclaimer(disclaimer?: BuildArgs): this {
+ this.#disclaimer = disclaimer?.map(mapBuildArg);
+ return this;
+ }
+
+ articleSources(articleSources?: BuildArg): this {
+ this.#articleSources = mapBuildArg(articleSources);
+ return this;
+ }
+
+ build(): Body {
+ return {
+ stages: this.#stages,
+ trustBox: this.#trustBox,
+ disclaimer: this.#disclaimer,
+ articleSources: this.#articleSources,
+ };
+ }
+}
+
+class TrustBoxBuilder extends AbstractBuilder {
+ #nodes: RichText.Node[] = [];
+ #hidden: RichText.Node[] = [];
+
+ nodes(nodes: BuildArgs): this {
+ this.#nodes = nodes.map(mapBuildArg);
+ return this;
+ }
+
+ hidden(hidden: BuildArgs): this {
+ this.#hidden = hidden.map(mapBuildArg);
+ return this;
+ }
+
+ build(): TrustBox {
+ return {
+ nodes: this.#nodes,
+ hidden: this.#hidden,
+ };
+ }
+}
+
+class OpenerBuilder extends AbstractBuilder {
+ #element: Opener['element'] = image().build();
+
+ element(element: BuildArg): this {
+ this.#element = mapBuildArg(element);
+ return this;
+ }
+
+ build(): Opener {
+ return {
+ element: this.#element,
+ };
+ }
+}
+
+class BodyStageSeqBuilder extends AbstractSeqBuilder {
+ #nodes: SeqElement = [];
+ #header?: SeqElement = undefined;
+ #companions: SeqElement = [];
+ #commercialsEndOfStage: SeqElement = [];
+
+ nodes(nodes: SeqElement>): this {
+ this.#nodes = nodes.map(mapBuildArgs);
+ return this;
+ }
+
+ header(header?: SeqElement>): this {
+ this.#header = mapBuildArgs(header ?? []);
+ return this;
+ }
+
+ companions(companions: SeqElement>): this {
+ this.#companions = companions.map(mapBuildArgs);
+ return this;
+ }
+
+ commercialsEndOfStage(commercialsEndOfStage: SeqElement>): this {
+ this.#commercialsEndOfStage = commercialsEndOfStage.map(mapBuildArgs);
+ return this;
+ }
+
+ buildListItem(seqNextElement: SeqNextElementConverter): BodyStage {
+ return {
+ id: hash('bodyStage', this.#nodes, this.#companions, this.#commercialsEndOfStage, this.#header),
+ nodes: seqNextElement.array(this.#nodes),
+ header: seqNextElement.maybe(this.#header),
+ companions: seqNextElement.array(this.#companions),
+ commercialsEndOfStage: seqNextElement.array(this.#commercialsEndOfStage),
+ };
+ }
+}
+
+class BodyStageBuilder extends AbstractBuilder {
+ #seqBuilder: BodyStageSeqBuilder = new BodyStageSeqBuilder();
+
+ nodes(nodes: BuildArgs): this {
+ this.#seqBuilder.nodes([nodes]);
+ return this;
+ }
+
+ header(header?: BuildArg): this {
+ if (header) {
+ this.#seqBuilder.header([header]);
+ }
+ return this;
+ }
+
+ companions(companions: BuildArgs): this {
+ this.#seqBuilder.companions([companions]);
+ return this;
+ }
+
+ commercialsEndOfStage(commercialsEndOfStage: BuildArgs): this {
+ this.#seqBuilder.commercialsEndOfStage([commercialsEndOfStage]);
+ return this;
+ }
+
+ build(): BodyStage {
+ return this.#seqBuilder.build();
+ }
+}
+
+class BodyHeaderBuilder extends AbstractBuilder {
+ #variant: BodyHeader['variant'] = 'full';
+ #opener?: Opener = undefined;
+
+ variant(variant: BodyHeader['variant']): this {
+ this.#variant = variant;
+ return this;
+ }
+
+ opener(opener: BuildArg): this {
+ this.#opener = mapBuildArg(opener);
+ return this;
+ }
+
+ build(): BodyHeader {
+ return {
+ variant: this.#variant,
+ opener: this.#opener,
+ };
+ }
+}
+
+class ArticleSourceSeqBuilder extends AbstractSeqBuilder {
+ #nodes: SeqElement = [];
+
+ nodes(nodes: SeqElement>): this {
+ this.#nodes = nodes.map(mapBuildArgs);
+ return this;
+ }
+
+ buildListItem(seqNextElement: SeqNextElementConverter): ArticleSource {
+ const id = hash('article-source', this.#nodes);
+ return {
+ id,
+ nodes: seqNextElement.array(this.#nodes),
+ };
+ }
+}
+
+class ArticleSourceBuilder extends AbstractBuilder {
+ #seqBuilder: ArticleSourceSeqBuilder = new ArticleSourceSeqBuilder();
+
+ constructor(...nodes: BuildArgs) {
+ super();
+ this.nodes(...nodes);
+ }
+
+ nodes(...nodes: BuildArgs): this {
+ this.#seqBuilder.nodes([nodes]);
+ return this;
+ }
+
+ build(): ArticleSource {
+ return this.#seqBuilder.build();
+ }
+}
+
+class ArticleSourcesBuilder extends AbstractBuilder {
+ #nodes: ArticleSource[] = [];
+ #hidden: ArticleSource[] = [];
+
+ nodes(...nodes: BuildArgs): this {
+ this.#nodes = nodes.map(mapBuildArg);
+ return this;
+ }
+
+ hidden(...hidden: BuildArgs): this {
+ this.#hidden = hidden.map(mapBuildArg);
+ return this;
+ }
+
+ build(): ArticleSources {
+ return {
+ nodes: this.#nodes,
+ hidden: this.#hidden,
+ };
+ }
+}
\ No newline at end of file
diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.map b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.map
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.ts b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.ts
new file mode 100644
index 00000000000..9d3cf1c2c59
--- /dev/null
+++ b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.ts
@@ -0,0 +1,331 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+var _exportNames = {
+ node: true,
+ node: true
+};
+exports.seq = exports.sources = exports.source = exports.header = exports.stage = exports.opener = exports.trustBox = exports.create = exports.node = void 0;
+var swcHelpers = require("@swc/helpers");
+var _abstractBuilders = require("./AbstractBuilders");
+var _builderUtils = require("./Builder.utils");
+var _elementBuilder = require("./ElementBuilder");
+var _node = swcHelpers.interopRequireWildcard(require("./BodyNodesBuilder"));
+Object.keys(_node).forEach(function(key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _node[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function() {
+ return _node[key];
+ }
+ });
+});
+exports.node = _node;
+const create = ()=>new BodyBuilder()
+;
+exports.create = create;
+const trustBox = ()=>new TrustBoxBuilder()
+;
+exports.trustBox = trustBox;
+const opener = ()=>new OpenerBuilder()
+;
+exports.opener = opener;
+const stage = ()=>new BodyStageBuilder()
+;
+exports.stage = stage;
+const header = ()=>new BodyHeaderBuilder()
+;
+exports.header = header;
+const source = (nodes = [])=>new ArticleSourceBuilder(...nodes)
+;
+exports.source = source;
+const sources = ()=>new ArticleSourcesBuilder()
+;
+exports.sources = sources;
+const seq = {
+ stage: ()=>new BodyStageSeqBuilder()
+ ,
+ source: ()=>new ArticleSourceSeqBuilder()
+};
+exports.seq = seq;
+var _stages = new WeakMap(), _trustBox = new WeakMap(), _disclaimer = new WeakMap(), _articleSources = new WeakMap();
+class BodyBuilder extends _abstractBuilders.AbstractBuilder {
+ stages(...stages) {
+ swcHelpers.classPrivateFieldSet(this, _stages, stages.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ trustBox(trustBox1) {
+ swcHelpers.classPrivateFieldSet(this, _trustBox, (0, _builderUtils).mapBuildArg(trustBox1));
+ return this;
+ }
+ disclaimer(disclaimer) {
+ swcHelpers.classPrivateFieldSet(this, _disclaimer, disclaimer?.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ articleSources(articleSources) {
+ swcHelpers.classPrivateFieldSet(this, _articleSources, (0, _builderUtils).mapBuildArg(articleSources));
+ return this;
+ }
+ build() {
+ return {
+ stages: swcHelpers.classPrivateFieldGet(this, _stages),
+ trustBox: swcHelpers.classPrivateFieldGet(this, _trustBox),
+ disclaimer: swcHelpers.classPrivateFieldGet(this, _disclaimer),
+ articleSources: swcHelpers.classPrivateFieldGet(this, _articleSources)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _stages, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _trustBox, {
+ writable: true,
+ value: undefined
+ });
+ swcHelpers.classPrivateFieldInit(this, _disclaimer, {
+ writable: true,
+ value: undefined
+ });
+ swcHelpers.classPrivateFieldInit(this, _articleSources, {
+ writable: true,
+ value: undefined
+ });
+ }
+}
+var _nodes = new WeakMap(), _hidden = new WeakMap();
+class TrustBoxBuilder extends _abstractBuilders.AbstractBuilder {
+ nodes(nodes) {
+ swcHelpers.classPrivateFieldSet(this, _nodes, nodes.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ hidden(hidden) {
+ swcHelpers.classPrivateFieldSet(this, _hidden, hidden.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ build() {
+ return {
+ nodes: swcHelpers.classPrivateFieldGet(this, _nodes),
+ hidden: swcHelpers.classPrivateFieldGet(this, _hidden)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _nodes, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _hidden, {
+ writable: true,
+ value: []
+ });
+ }
+}
+var _element = new WeakMap();
+class OpenerBuilder extends _abstractBuilders.AbstractBuilder {
+ element(element) {
+ swcHelpers.classPrivateFieldSet(this, _element, (0, _builderUtils).mapBuildArg(element));
+ return this;
+ }
+ build() {
+ return {
+ element: swcHelpers.classPrivateFieldGet(this, _element)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _element, {
+ writable: true,
+ value: (0, _elementBuilder).image().build()
+ });
+ }
+}
+var _nodes1 = new WeakMap(), _header = new WeakMap(), _companions = new WeakMap(), _commercialsEndOfStage = new WeakMap();
+class BodyStageSeqBuilder extends _abstractBuilders.AbstractSeqBuilder {
+ nodes(nodes) {
+ swcHelpers.classPrivateFieldSet(this, _nodes1, nodes.map(_builderUtils.mapBuildArgs));
+ return this;
+ }
+ header(header1) {
+ swcHelpers.classPrivateFieldSet(this, _header, (0, _builderUtils).mapBuildArgs(header1 ?? []));
+ return this;
+ }
+ companions(companions) {
+ swcHelpers.classPrivateFieldSet(this, _companions, companions.map(_builderUtils.mapBuildArgs));
+ return this;
+ }
+ commercialsEndOfStage(commercialsEndOfStage) {
+ swcHelpers.classPrivateFieldSet(this, _commercialsEndOfStage, commercialsEndOfStage.map(_builderUtils.mapBuildArgs));
+ return this;
+ }
+ buildListItem(seqNextElement) {
+ return {
+ id: (0, _builderUtils).hash('bodyStage', swcHelpers.classPrivateFieldGet(this, _nodes1), swcHelpers.classPrivateFieldGet(this, _companions), swcHelpers.classPrivateFieldGet(this, _commercialsEndOfStage), swcHelpers.classPrivateFieldGet(this, _header)),
+ nodes: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _nodes1)),
+ header: seqNextElement.maybe(swcHelpers.classPrivateFieldGet(this, _header)),
+ companions: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _companions)),
+ commercialsEndOfStage: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _commercialsEndOfStage))
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _nodes1, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _header, {
+ writable: true,
+ value: undefined
+ });
+ swcHelpers.classPrivateFieldInit(this, _companions, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _commercialsEndOfStage, {
+ writable: true,
+ value: []
+ });
+ }
+}
+var _seqBuilder = new WeakMap();
+class BodyStageBuilder extends _abstractBuilders.AbstractBuilder {
+ nodes(nodes) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder).nodes([
+ nodes
+ ]);
+ return this;
+ }
+ header(header2) {
+ if (header2) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder).header([
+ header2
+ ]);
+ }
+ return this;
+ }
+ companions(companions) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder).companions([
+ companions
+ ]);
+ return this;
+ }
+ commercialsEndOfStage(commercialsEndOfStage) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder).commercialsEndOfStage([
+ commercialsEndOfStage
+ ]);
+ return this;
+ }
+ build() {
+ return swcHelpers.classPrivateFieldGet(this, _seqBuilder).build();
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _seqBuilder, {
+ writable: true,
+ value: new BodyStageSeqBuilder()
+ });
+ }
+}
+var _variant = new WeakMap(), _opener = new WeakMap();
+class BodyHeaderBuilder extends _abstractBuilders.AbstractBuilder {
+ variant(variant) {
+ swcHelpers.classPrivateFieldSet(this, _variant, variant);
+ return this;
+ }
+ opener(opener1) {
+ swcHelpers.classPrivateFieldSet(this, _opener, (0, _builderUtils).mapBuildArg(opener1));
+ return this;
+ }
+ build() {
+ return {
+ variant: swcHelpers.classPrivateFieldGet(this, _variant),
+ opener: swcHelpers.classPrivateFieldGet(this, _opener)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _variant, {
+ writable: true,
+ value: 'full'
+ });
+ swcHelpers.classPrivateFieldInit(this, _opener, {
+ writable: true,
+ value: undefined
+ });
+ }
+}
+var _nodes2 = new WeakMap();
+class ArticleSourceSeqBuilder extends _abstractBuilders.AbstractSeqBuilder {
+ nodes(nodes) {
+ swcHelpers.classPrivateFieldSet(this, _nodes2, nodes.map(_builderUtils.mapBuildArgs));
+ return this;
+ }
+ buildListItem(seqNextElement) {
+ const id = (0, _builderUtils).hash('article-source', swcHelpers.classPrivateFieldGet(this, _nodes2));
+ return {
+ id,
+ nodes: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _nodes2))
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _nodes2, {
+ writable: true,
+ value: []
+ });
+ }
+}
+var _seqBuilder1 = new WeakMap();
+class ArticleSourceBuilder extends _abstractBuilders.AbstractBuilder {
+ nodes(...nodes) {
+ swcHelpers.classPrivateFieldGet(this, _seqBuilder1).nodes([
+ nodes
+ ]);
+ return this;
+ }
+ build() {
+ return swcHelpers.classPrivateFieldGet(this, _seqBuilder1).build();
+ }
+ constructor(...nodes){
+ super();
+ swcHelpers.classPrivateFieldInit(this, _seqBuilder1, {
+ writable: true,
+ value: new ArticleSourceSeqBuilder()
+ });
+ this.nodes(...nodes);
+ }
+}
+var _nodes3 = new WeakMap(), _hidden1 = new WeakMap();
+class ArticleSourcesBuilder extends _abstractBuilders.AbstractBuilder {
+ nodes(...nodes) {
+ swcHelpers.classPrivateFieldSet(this, _nodes3, nodes.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ hidden(...hidden) {
+ swcHelpers.classPrivateFieldSet(this, _hidden1, hidden.map(_builderUtils.mapBuildArg));
+ return this;
+ }
+ build() {
+ return {
+ nodes: swcHelpers.classPrivateFieldGet(this, _nodes3),
+ hidden: swcHelpers.classPrivateFieldGet(this, _hidden1)
+ };
+ }
+ constructor(...args){
+ super(...args);
+ swcHelpers.classPrivateFieldInit(this, _nodes3, {
+ writable: true,
+ value: []
+ });
+ swcHelpers.classPrivateFieldInit(this, _hidden1, {
+ writable: true,
+ value: []
+ });
+ }
+}
+
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2lucHV0L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0QnVpbGRlciwgQWJzdHJhY3RTZXFCdWlsZGVyIH0gZnJvbSAnLi9BYnN0cmFjdEJ1aWxkZXJzJztcbmltcG9ydCB7IGhhc2gsIG1hcEJ1aWxkQXJnLCBtYXBCdWlsZEFyZ3MgfSBmcm9tICcuL0J1aWxkZXIudXRpbHMnO1xuaW1wb3J0IHsgaW1hZ2UgfSBmcm9tICcuL0VsZW1lbnRCdWlsZGVyJztcblxuaW1wb3J0IHR5cGUge1xuICAgIEJvZHksXG4gICAgQm9keVN0YWdlLFxuICAgIFRydXN0Qm94LFxuICAgIFJpY2hUZXh0LFxuICAgIE9wZW5lcixcbiAgICBCb2R5SGVhZGVyLFxuICAgIFN0YWdlLFxuICAgIEFydGljbGVTb3VyY2UsXG4gICAgQXJ0aWNsZVNvdXJjZXMsXG59IGZyb20gJ0BwYXBlci9tb2RlbHMnO1xuaW1wb3J0IHR5cGUgeyBCdWlsZEFyZywgQnVpbGRBcmdzLCBDcmVhdGVCdWlsZGVyLCBTZXFFbGVtZW50LCBTZXFOZXh0RWxlbWVudENvbnZlcnRlciB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSB7QnVpbGRlci5ib2R5Lm5vZGUuaW1nKCl9XG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vQm9keU5vZGVzQnVpbGRlcic7XG5leHBvcnQgKiBhcyBub2RlIGZyb20gJy4vQm9keU5vZGVzQnVpbGRlcic7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGU6IENyZWF0ZUJ1aWxkZXI8Qm9keUJ1aWxkZXI+ID0gKCkgPT4gbmV3IEJvZHlCdWlsZGVyKCk7XG5leHBvcnQgY29uc3QgdHJ1c3RCb3g6IENyZWF0ZUJ1aWxkZXI8VHJ1c3RCb3hCdWlsZGVyPiA9ICgpID0+IG5ldyBUcnVzdEJveEJ1aWxkZXIoKTtcbmV4cG9ydCBjb25zdCBvcGVuZXI6IENyZWF0ZUJ1aWxkZXI8T3BlbmVyQnVpbGRlcj4gPSAoKSA9PiBuZXcgT3BlbmVyQnVpbGRlcigpO1xuZXhwb3J0IGNvbnN0IHN0YWdlOiBDcmVhdGVCdWlsZGVyPEJvZHlTdGFnZUJ1aWxkZXI+ID0gKCkgPT4gbmV3IEJvZHlTdGFnZUJ1aWxkZXIoKTtcbmV4cG9ydCBjb25zdCBoZWFkZXI6IENyZWF0ZUJ1aWxkZXI8Qm9keUhlYWRlckJ1aWxkZXI+ID0gKCkgPT4gbmV3IEJvZHlIZWFkZXJCdWlsZGVyKCk7XG5leHBvcnQgY29uc3Qgc291cmNlOiBDcmVhdGVCdWlsZGVyPEFydGljbGVTb3VyY2VCdWlsZGVyLCBCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4+ID0gKFxuICAgIG5vZGVzOiBCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4gPSBbXSxcbikgPT4gbmV3IEFydGljbGVTb3VyY2VCdWlsZGVyKC4uLm5vZGVzKTtcbmV4cG9ydCBjb25zdCBzb3VyY2VzOiBDcmVhdGVCdWlsZGVyPEFydGljbGVTb3VyY2VzQnVpbGRlcj4gPSAoKSA9PiBuZXcgQXJ0aWNsZVNvdXJjZXNCdWlsZGVyKCk7XG5cbmV4cG9ydCBjb25zdCBzZXEgPSB7XG4gICAgc3RhZ2U6ICgoKSA9PiBuZXcgQm9keVN0YWdlU2VxQnVpbGRlcigpKSBhcyBDcmVhdGVCdWlsZGVyPEJvZHlTdGFnZVNlcUJ1aWxkZXI+LFxuICAgIHNvdXJjZTogKCgpID0+IG5ldyBBcnRpY2xlU291cmNlU2VxQnVpbGRlcigpKSBhcyBDcmVhdGVCdWlsZGVyPEFydGljbGVTb3VyY2VTZXFCdWlsZGVyPixcbn0gYXMgY29uc3Q7XG5cbmNsYXNzIEJvZHlCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RCdWlsZGVyPEJvZHk+IHtcbiAgICAjc3RhZ2VzOiBCb2R5U3RhZ2VbXSA9IFtdO1xuICAgICN0cnVzdEJveD86IFRydXN0Qm94ID0gdW5kZWZpbmVkO1xuICAgICNkaXNjbGFpbWVyPzogUmljaFRleHQuTm9kZVtdID0gdW5kZWZpbmVkO1xuICAgICNhcnRpY2xlU291cmNlcz86IEFydGljbGVTb3VyY2VzID0gdW5kZWZpbmVkO1xuXG4gICAgc3RhZ2VzKC4uLnN0YWdlczogQnVpbGRBcmdzPEJvZHlTdGFnZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jc3RhZ2VzID0gc3RhZ2VzLm1hcChtYXBCdWlsZEFyZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRydXN0Qm94KHRydXN0Qm94PzogQnVpbGRBcmc8VHJ1c3RCb3g+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI3RydXN0Qm94ID0gbWFwQnVpbGRBcmcodHJ1c3RCb3gpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBkaXNjbGFpbWVyKGRpc2NsYWltZXI/OiBCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jZGlzY2xhaW1lciA9IGRpc2NsYWltZXI/Lm1hcChtYXBCdWlsZEFyZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGFydGljbGVTb3VyY2VzKGFydGljbGVTb3VyY2VzPzogQnVpbGRBcmc8QXJ0aWNsZVNvdXJjZXM+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI2FydGljbGVTb3VyY2VzID0gbWFwQnVpbGRBcmcoYXJ0aWNsZVNvdXJjZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBCb2R5IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YWdlczogdGhpcy4jc3RhZ2VzLFxuICAgICAgICAgICAgdHJ1c3RCb3g6IHRoaXMuI3RydXN0Qm94LFxuICAgICAgICAgICAgZGlzY2xhaW1lcjogdGhpcy4jZGlzY2xhaW1lcixcbiAgICAgICAgICAgIGFydGljbGVTb3VyY2VzOiB0aGlzLiNhcnRpY2xlU291cmNlcyxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmNsYXNzIFRydXN0Qm94QnVpbGRlciBleHRlbmRzIEFic3RyYWN0QnVpbGRlcjxUcnVzdEJveD4ge1xuICAgICNub2RlczogUmljaFRleHQuTm9kZVtdID0gW107XG4gICAgI2hpZGRlbjogUmljaFRleHQuTm9kZVtdID0gW107XG5cbiAgICBub2Rlcyhub2RlczogQnVpbGRBcmdzPFJpY2hUZXh0Lk5vZGU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI25vZGVzID0gbm9kZXMubWFwKG1hcEJ1aWxkQXJnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaGlkZGVuKGhpZGRlbjogQnVpbGRBcmdzPFJpY2hUZXh0Lk5vZGU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI2hpZGRlbiA9IGhpZGRlbi5tYXAobWFwQnVpbGRBcmcpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBUcnVzdEJveCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlczogdGhpcy4jbm9kZXMsXG4gICAgICAgICAgICBoaWRkZW46IHRoaXMuI2hpZGRlbixcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmNsYXNzIE9wZW5lckJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdEJ1aWxkZXI8T3BlbmVyPiB7XG4gICAgI2VsZW1lbnQ6IE9wZW5lclsnZWxlbWVudCddID0gaW1hZ2UoKS5idWlsZCgpO1xuXG4gICAgZWxlbWVudChlbGVtZW50OiBCdWlsZEFyZzxPcGVuZXJbJ2VsZW1lbnQnXT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jZWxlbWVudCA9IG1hcEJ1aWxkQXJnKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBPcGVuZXIge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudDogdGhpcy4jZWxlbWVudCxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmNsYXNzIEJvZHlTdGFnZVNlcUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNlcUJ1aWxkZXI8Qm9keVN0YWdlPiB7XG4gICAgI25vZGVzOiBTZXFFbGVtZW50PFJpY2hUZXh0Lk5vZGVbXT4gPSBbXTtcbiAgICAjaGVhZGVyPzogU2VxRWxlbWVudDxCb2R5SGVhZGVyPiA9IHVuZGVmaW5lZDtcbiAgICAjY29tcGFuaW9uczogU2VxRWxlbWVudDxTdGFnZS5Db21wYW5pb25JdGVtW10+ID0gW107XG4gICAgI2NvbW1lcmNpYWxzRW5kT2ZTdGFnZTogU2VxRWxlbWVudDxSaWNoVGV4dC5Ob2RlW10+ID0gW107XG5cbiAgICBub2Rlcyhub2RlczogU2VxRWxlbWVudDxCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI25vZGVzID0gbm9kZXMubWFwKG1hcEJ1aWxkQXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGhlYWRlcihoZWFkZXI/OiBTZXFFbGVtZW50PEJ1aWxkQXJnPEJvZHlIZWFkZXI+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLiNoZWFkZXIgPSBtYXBCdWlsZEFyZ3MoaGVhZGVyID8/IFtdKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29tcGFuaW9ucyhjb21wYW5pb25zOiBTZXFFbGVtZW50PEJ1aWxkQXJnczxTdGFnZS5Db21wYW5pb25JdGVtPj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jY29tcGFuaW9ucyA9IGNvbXBhbmlvbnMubWFwKG1hcEJ1aWxkQXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbW1lcmNpYWxzRW5kT2ZTdGFnZShjb21tZXJjaWFsc0VuZE9mU3RhZ2U6IFNlcUVsZW1lbnQ8QnVpbGRBcmdzPFJpY2hUZXh0Lk5vZGU+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLiNjb21tZXJjaWFsc0VuZE9mU3RhZ2UgPSBjb21tZXJjaWFsc0VuZE9mU3RhZ2UubWFwKG1hcEJ1aWxkQXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGJ1aWxkTGlzdEl0ZW0oc2VxTmV4dEVsZW1lbnQ6IFNlcU5leHRFbGVtZW50Q29udmVydGVyKTogQm9keVN0YWdlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkOiBoYXNoKCdib2R5U3RhZ2UnLCB0aGlzLiNub2RlcywgdGhpcy4jY29tcGFuaW9ucywgdGhpcy4jY29tbWVyY2lhbHNFbmRPZlN0YWdlLCB0aGlzLiNoZWFkZXIpLFxuICAgICAgICAgICAgbm9kZXM6IHNlcU5leHRFbGVtZW50LmFycmF5KHRoaXMuI25vZGVzKSxcbiAgICAgICAgICAgIGhlYWRlcjogc2VxTmV4dEVsZW1lbnQubWF5YmUodGhpcy4jaGVhZGVyKSxcbiAgICAgICAgICAgIGNvbXBhbmlvbnM6IHNlcU5leHRFbGVtZW50LmFycmF5KHRoaXMuI2NvbXBhbmlvbnMpLFxuICAgICAgICAgICAgY29tbWVyY2lhbHNFbmRPZlN0YWdlOiBzZXFOZXh0RWxlbWVudC5hcnJheSh0aGlzLiNjb21tZXJjaWFsc0VuZE9mU3RhZ2UpLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuY2xhc3MgQm9keVN0YWdlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0QnVpbGRlcjxCb2R5U3RhZ2U+IHtcbiAgICAjc2VxQnVpbGRlcjogQm9keVN0YWdlU2VxQnVpbGRlciA9IG5ldyBCb2R5U3RhZ2VTZXFCdWlsZGVyKCk7XG5cbiAgICBub2Rlcyhub2RlczogQnVpbGRBcmdzPFJpY2hUZXh0Lk5vZGU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI3NlcUJ1aWxkZXIubm9kZXMoW25vZGVzXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGhlYWRlcihoZWFkZXI/OiBCdWlsZEFyZzxCb2R5SGVhZGVyPik6IHRoaXMge1xuICAgICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgICAgICB0aGlzLiNzZXFCdWlsZGVyLmhlYWRlcihbaGVhZGVyXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29tcGFuaW9ucyhjb21wYW5pb25zOiBCdWlsZEFyZ3M8U3RhZ2UuQ29tcGFuaW9uSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jc2VxQnVpbGRlci5jb21wYW5pb25zKFtjb21wYW5pb25zXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbW1lcmNpYWxzRW5kT2ZTdGFnZShjb21tZXJjaWFsc0VuZE9mU3RhZ2U6IEJ1aWxkQXJnczxSaWNoVGV4dC5Ob2RlPik6IHRoaXMge1xuICAgICAgICB0aGlzLiNzZXFCdWlsZGVyLmNvbW1lcmNpYWxzRW5kT2ZTdGFnZShbY29tbWVyY2lhbHNFbmRPZlN0YWdlXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGJ1aWxkKCk6IEJvZHlTdGFnZSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNzZXFCdWlsZGVyLmJ1aWxkKCk7XG4gICAgfVxufVxuXG5jbGFzcyBCb2R5SGVhZGVyQnVpbGRlciBleHRlbmRzIEFic3RyYWN0QnVpbGRlcjxCb2R5SGVhZGVyPiB7XG4gICAgI3ZhcmlhbnQ6IEJvZHlIZWFkZXJbJ3ZhcmlhbnQnXSA9ICdmdWxsJztcbiAgICAjb3BlbmVyPzogT3BlbmVyID0gdW5kZWZpbmVkO1xuXG4gICAgdmFyaWFudCh2YXJpYW50OiBCb2R5SGVhZGVyWyd2YXJpYW50J10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jdmFyaWFudCA9IHZhcmlhbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG9wZW5lcihvcGVuZXI6IEJ1aWxkQXJnPE9wZW5lcj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jb3BlbmVyID0gbWFwQnVpbGRBcmcob3BlbmVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYnVpbGQoKTogQm9keUhlYWRlciB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YXJpYW50OiB0aGlzLiN2YXJpYW50LFxuICAgICAgICAgICAgb3BlbmVyOiB0aGlzLiNvcGVuZXIsXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5jbGFzcyBBcnRpY2xlU291cmNlU2VxQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U2VxQnVpbGRlcjxBcnRpY2xlU291cmNlPiB7XG4gICAgI25vZGVzOiBTZXFFbGVtZW50PFJpY2hUZXh0Lk5vZGVbXT4gPSBbXTtcblxuICAgIG5vZGVzKG5vZGVzOiBTZXFFbGVtZW50PEJ1aWxkQXJnczxSaWNoVGV4dC5Ob2RlPj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jbm9kZXMgPSBub2Rlcy5tYXAobWFwQnVpbGRBcmdzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYnVpbGRMaXN0SXRlbShzZXFOZXh0RWxlbWVudDogU2VxTmV4dEVsZW1lbnRDb252ZXJ0ZXIpOiBBcnRpY2xlU291cmNlIHtcbiAgICAgICAgY29uc3QgaWQgPSBoYXNoKCdhcnRpY2xlLXNvdXJjZScsIHRoaXMuI25vZGVzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgbm9kZXM6IHNlcU5leHRFbGVtZW50LmFycmF5KHRoaXMuI25vZGVzKSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmNsYXNzIEFydGljbGVTb3VyY2VCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RCdWlsZGVyPEFydGljbGVTb3VyY2U+IHtcbiAgICAjc2VxQnVpbGRlcjogQXJ0aWNsZVNvdXJjZVNlcUJ1aWxkZXIgPSBuZXcgQXJ0aWNsZVNvdXJjZVNlcUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKC4uLm5vZGVzOiBCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5ub2RlcyguLi5ub2Rlcyk7XG4gICAgfVxuXG4gICAgbm9kZXMoLi4ubm9kZXM6IEJ1aWxkQXJnczxSaWNoVGV4dC5Ob2RlPik6IHRoaXMge1xuICAgICAgICB0aGlzLiNzZXFCdWlsZGVyLm5vZGVzKFtub2Rlc10pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBBcnRpY2xlU291cmNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3NlcUJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9XG59XG5cbmNsYXNzIEFydGljbGVTb3VyY2VzQnVpbGRlciBleHRlbmRzIEFic3RyYWN0QnVpbGRlcjxBcnRpY2xlU291cmNlcz4ge1xuICAgICNub2RlczogQXJ0aWNsZVNvdXJjZVtdID0gW107XG4gICAgI2hpZGRlbjogQXJ0aWNsZVNvdXJjZVtdID0gW107XG5cbiAgICBub2RlcyguLi5ub2RlczogQnVpbGRBcmdzPEFydGljbGVTb3VyY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI25vZGVzID0gbm9kZXMubWFwKG1hcEJ1aWxkQXJnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaGlkZGVuKC4uLmhpZGRlbjogQnVpbGRBcmdzPEFydGljbGVTb3VyY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI2hpZGRlbiA9IGhpZGRlbi5tYXAobWFwQnVpbGRBcmcpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBBcnRpY2xlU291cmNlcyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlczogdGhpcy4jbm9kZXMsXG4gICAgICAgICAgICBoaWRkZW46IHRoaXMuI2hpZGRlbixcbiAgICAgICAgfTtcbiAgICB9XG59Il0sIm5hbWVzIjpbIm5vZGUiLCJjcmVhdGUiLCJCb2R5QnVpbGRlciIsInRydXN0Qm94IiwiVHJ1c3RCb3hCdWlsZGVyIiwib3BlbmVyIiwiT3BlbmVyQnVpbGRlciIsInN0YWdlIiwiQm9keVN0YWdlQnVpbGRlciIsImhlYWRlciIsIkJvZHlIZWFkZXJCdWlsZGVyIiwic291cmNlIiwibm9kZXMiLCJBcnRpY2xlU291cmNlQnVpbGRlciIsInNvdXJjZXMiLCJBcnRpY2xlU291cmNlc0J1aWxkZXIiLCJzZXEiLCJCb2R5U3RhZ2VTZXFCdWlsZGVyIiwiQXJ0aWNsZVNvdXJjZVNlcUJ1aWxkZXIiLCJBYnN0cmFjdEJ1aWxkZXIiLCJzdGFnZXMiLCJtYXAiLCJtYXBCdWlsZEFyZyIsImRpc2NsYWltZXIiLCJhcnRpY2xlU291cmNlcyIsImJ1aWxkIiwidW5kZWZpbmVkIiwiaGlkZGVuIiwiZWxlbWVudCIsImltYWdlIiwiQWJzdHJhY3RTZXFCdWlsZGVyIiwibWFwQnVpbGRBcmdzIiwiY29tcGFuaW9ucyIsImNvbW1lcmNpYWxzRW5kT2ZTdGFnZSIsImJ1aWxkTGlzdEl0ZW0iLCJzZXFOZXh0RWxlbWVudCIsImlkIiwiaGFzaCIsImFycmF5IiwibWF5YmUiLCJzZXFCdWlsZGVyIiwidmFyaWFudCJdLCJtYXBwaW5ncyI6Ilk7OztFOzs7Ozs0Sjs7QUFBb0QsR0FBb0IsQ0FBcEIsaUJBQW9CO0FBQ3hCLEdBQWlCLENBQWpCLGFBQWlCO0FBQzNDLEdBQWtCLENBQWxCLGVBQWtCO0FBbUI1QkEsR0FBSSxDQUFKQSxLQUFJO1lBQUpBLEtBQUk7OzsyQ0FBSkEsS0FBSTs7OzttQkFBSkEsS0FBSTs7TTtFO1FBQUpBLElBQUksR0FBSkEsS0FBSSxBO0FBRVQsS0FBSyxDQUFDQyxNQUFNLE9BQXFDLEdBQUcsQ0FBQ0MsV0FBVzs7UUFBMURELE1BQU0sR0FBTkEsTUFBTSxBO0FBQ1osS0FBSyxDQUFDRSxRQUFRLE9BQXlDLEdBQUcsQ0FBQ0MsZUFBZTs7UUFBcEVELFFBQVEsR0FBUkEsUUFBUSxBO0FBQ2QsS0FBSyxDQUFDRSxNQUFNLE9BQXVDLEdBQUcsQ0FBQ0MsYUFBYTs7UUFBOURELE1BQU0sR0FBTkEsTUFBTSxBO0FBQ1osS0FBSyxDQUFDRSxLQUFLLE9BQTBDLEdBQUcsQ0FBQ0MsZ0JBQWdCOztRQUFuRUQsS0FBSyxHQUFMQSxLQUFLLEE7QUFDWCxLQUFLLENBQUNFLE1BQU0sT0FBMkMsR0FBRyxDQUFDQyxpQkFBaUI7O1FBQXRFRCxNQUFNLEdBQU5BLE1BQU0sQTtBQUNaLEtBQUssQ0FBQ0UsTUFBTSxJQUNmQyxLQUErQixHQUFHLENBQUMsQ0FBQyxHQUNu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