@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
164 lines (162 loc) • 28.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../../../constants");
const TypedHelper_1 = require("../TypedHelper");
class ToNumberHelper extends TypedHelper_1.TypedHelper {
emit(sb, node, optionsIn) {
const throwTypeError = (options) => {
sb.emitOp(node, 'DROP');
sb.emitHelper(node, options, sb.helpers.throwTypeError);
};
const convertNull = () => {
sb.emitOp(node, 'DROP');
sb.emitPushInt(node, 0);
};
const convertBoolean = (options) => {
sb.emitHelper(node, options, sb.helpers.if({
condition: () => {
sb.emitHelper(node, options, sb.helpers.unwrapBoolean);
},
whenTrue: () => {
sb.emitPushInt(node, 1);
},
whenFalse: () => {
sb.emitPushInt(node, 0);
},
}));
};
const convertArray = (options) => {
sb.emitHelper(node, options, sb.helpers.toPrimitive({ type: this.type, knownType: constants_1.Types.Array, preferredType: 'number' }));
doConvert(options, false);
};
const convertNumber = (options) => {
sb.emitHelper(node, options, sb.helpers.unwrapNumber);
};
const convertString = (options) => {
const n = sb.scope.addUnique();
const remain = sb.scope.addUnique();
const accum = sb.scope.addUnique();
sb.emitHelper(node, options, sb.helpers.unwrapString);
sb.emitHelper(node, options, sb.helpers.if({
condition: () => {
sb.emitOp(node, 'DUP');
sb.emitPushString(node, '');
sb.emitOp(node, 'EQUAL');
},
whenTrue: () => {
sb.emitOp(node, 'DROP');
sb.emitHelper(node, options, sb.helpers.throwTypeError);
},
whenFalse: () => {
sb.scope.set(sb, node, options, remain);
sb.emitPushInt(node, 1);
sb.scope.set(sb, node, options, n);
sb.emitPushInt(node, 0);
sb.scope.set(sb, node, options, accum);
sb.emitHelper(node, options, sb.helpers.forLoop({
condition: () => {
sb.scope.get(sb, node, options, remain);
sb.emitPushString(node, '');
sb.emitOp(node, 'EQUAL');
sb.emitOp(node, 'NOT');
},
each: (innerOptions) => {
sb.scope.get(sb, node, innerOptions, remain);
sb.emitOp(node, 'DUP');
sb.emitOp(node, 'DUP');
sb.emitOp(node, 'SIZE');
sb.emitOp(node, 'DEC');
sb.emitOp(node, 'LEFT');
sb.scope.set(sb, node, innerOptions, remain);
sb.emitPushInt(node, 1);
sb.emitOp(node, 'RIGHT');
sb.emitPushInt(node, 0x30);
sb.emitOp(node, 'SUB');
sb.emitHelper(node, innerOptions, sb.helpers.if({
condition: () => {
sb.emitOp(node, 'DUP');
sb.emitPushInt(node, 9);
sb.emitOp(node, 'GT');
},
whenTrue: () => {
sb.emitOp(node, 'DROP');
sb.emitHelper(node, options, sb.helpers.throwTypeError);
},
whenFalse: () => {
sb.emitHelper(node, innerOptions, sb.helpers.if({
condition: () => {
sb.emitOp(node, 'DUP');
sb.emitPushInt(node, 0);
sb.emitOp(node, 'LT');
},
whenTrue: () => {
sb.emitOp(node, 'DROP');
sb.emitHelper(node, options, sb.helpers.throwTypeError);
},
}));
},
}));
sb.scope.get(sb, node, innerOptions, n);
sb.emitOp(node, 'DUP');
sb.emitPushInt(node, 10);
sb.emitOp(node, 'MUL');
sb.scope.set(sb, node, innerOptions, n);
sb.emitOp(node, 'MUL');
sb.scope.get(sb, node, innerOptions, accum);
sb.emitOp(node, 'ADD');
sb.scope.set(sb, node, innerOptions, accum);
},
cleanup: () => {
},
}));
sb.scope.get(sb, node, options, accum);
},
}));
};
const convertObject = (options) => {
sb.emitHelper(node, options, sb.helpers.toPrimitive({ type: this.type, knownType: constants_1.Types.Object, preferredType: 'number' }));
doConvert(options, false);
};
const doConvert = (options, initial = true) => {
sb.emitHelper(node, options, sb.helpers.forBuiltinType({
type: initial ? this.type : undefined,
knownType: initial ? this.knownType : undefined,
array: initial ? convertArray : throwTypeError,
arrayStorage: throwTypeError,
boolean: convertBoolean,
buffer: throwTypeError,
null: convertNull,
number: convertNumber,
object: initial ? convertObject : throwTypeError,
string: convertString,
symbol: throwTypeError,
undefined: throwTypeError,
map: throwTypeError,
mapStorage: throwTypeError,
set: throwTypeError,
setStorage: throwTypeError,
error: throwTypeError,
forwardValue: throwTypeError,
iteratorResult: throwTypeError,
iterable: throwTypeError,
iterableIterator: throwTypeError,
transaction: throwTypeError,
output: throwTypeError,
attribute: throwTypeError,
input: throwTypeError,
account: throwTypeError,
asset: throwTypeError,
contract: throwTypeError,
header: throwTypeError,
block: throwTypeError,
}));
};
doConvert(sb.pushValueOptions(optionsIn), true);
if (!optionsIn.pushValue) {
sb.emitOp(node, 'DROP');
return;
}
}
}
exports.ToNumberHelper = ToNumberHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFXLEVBQUUsY0FBYztnQkFDM0IsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFNBQVMsRUFBRSxjQUFjO2dCQUN6QixLQUFLLEVBQUUsY0FBYztnQkFDckIsT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLEtBQUssRUFBRSxjQUFjO2dCQUNyQixRQUFRLEVBQUUsY0FBYztnQkFDeEIsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLEtBQUssRUFBRSxjQUFjO2FBQ3RCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsU0FBUyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUd4QixPQUFPO1NBQ1I7SUFDSCxDQUFDO0NBQ0Y7QUFsUUQsd0NBa1FDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL3R5cGVzL251bWJlci9Ub051bWJlckhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBUeXBlZEhlbHBlciB9IGZyb20gJy4uL1R5cGVkSGVscGVyJztcblxuLy8gSW5wdXQ6IFt2YWxdXG4vLyBPdXRwdXQ6IFtudW1iZXJdXG5leHBvcnQgY2xhc3MgVG9OdW1iZXJIZWxwZXIgZXh0ZW5kcyBUeXBlZEhlbHBlciB7XG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IHRocm93VHlwZUVycm9yID0gKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4ge1xuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMudGhyb3dUeXBlRXJyb3IpO1xuICAgIH07XG5cbiAgICBjb25zdCBjb252ZXJ0TnVsbCA9ICgpID0+IHtcbiAgICAgIC8vIFtdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgIC8vIFswXVxuICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnZlcnRCb29sZWFuID0gKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4ge1xuICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgbm9kZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMudW53cmFwQm9vbGVhbik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aGVuVHJ1ZTogKCkgPT4ge1xuICAgICAgICAgICAgLy8gWzFdXG4gICAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAxKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdoZW5GYWxzZTogKCkgPT4ge1xuICAgICAgICAgICAgLy8gWzBdXG4gICAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnZlcnRBcnJheSA9IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHtcbiAgICAgIC8vIFtwcmltaXRpdmVdXG4gICAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgICBub2RlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBzYi5oZWxwZXJzLnRvUHJpbWl0aXZlKHsgdHlwZTogdGhpcy50eXBlLCBrbm93blR5cGU6IFR5cGVzLkFycmF5LCBwcmVmZXJyZWRUeXBlOiAnbnVtYmVyJyB9KSxcbiAgICAgICk7XG4gICAgICAvLyBbc3RyaW5nXVxuICAgICAgZG9Db252ZXJ0KG9wdGlvbnMsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY29udmVydE51bWJlciA9IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHtcbiAgICAgIC8vIFt2YWx1ZV1cbiAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy51bndyYXBOdW1iZXIpO1xuICAgIH07XG5cbiAgICBjb25zdCBjb252ZXJ0U3RyaW5nID0gKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgbiA9IHNiLnNjb3BlLmFkZFVuaXF1ZSgpO1xuICAgICAgY29uc3QgcmVtYWluID0gc2Iuc2NvcGUuYWRkVW5pcXVlKCk7XG4gICAgICBjb25zdCBhY2N1bSA9IHNiLnNjb3BlLmFkZFVuaXF1ZSgpO1xuXG4gICAgICAvLyBbc3RyaW5nXVxuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLnVud3JhcFN0cmluZyk7XG4gICAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgICBub2RlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBzYi5oZWxwZXJzLmlmKHtcbiAgICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICAgIC8vIFtzdHJpbmcsIHN0cmluZ11cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgICAgICAgICAvLyBbJycsIHN0cmluZywgc3RyaW5nXVxuICAgICAgICAgICAgc2IuZW1pdFB1c2hTdHJpbmcobm9kZSwgJycpO1xuICAgICAgICAgICAgLy8gW3N0cmluZyA9PT0gJycsIHN0cmluZ11cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRVFVQUwnKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdoZW5UcnVlOiAoKSA9PiB7XG4gICAgICAgICAgICAvLyBbXVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IE5hTlxuICAgICAgICAgICAgLy8gW11cbiAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy50aHJvd1R5cGVFcnJvcik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAgIC8vIFtdXG4gICAgICAgICAgICBzYi5zY29wZS5zZXQoc2IsIG5vZGUsIG9wdGlvbnMsIHJlbWFpbik7XG4gICAgICAgICAgICAvLyBbMV1cbiAgICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDEpO1xuICAgICAgICAgICAgLy8gW11cbiAgICAgICAgICAgIHNiLnNjb3BlLnNldChzYiwgbm9kZSwgb3B0aW9ucywgbik7XG4gICAgICAgICAgICAvLyBbbnVtYmVyXVxuICAgICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgICAgICAgICAvLyBbXVxuICAgICAgICAgICAgc2Iuc2NvcGUuc2V0KHNiLCBub2RlLCBvcHRpb25zLCBhY2N1bSk7XG4gICAgICAgICAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICBzYi5oZWxwZXJzLmZvckxvb3Aoe1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gW3JlbWFpbl1cbiAgICAgICAgICAgICAgICAgIHNiLnNjb3BlLmdldChzYiwgbm9kZSwgb3B0aW9ucywgcmVtYWluKTtcbiAgICAgICAgICAgICAgICAgIC8vIFsnJywgcmVtYWluXVxuICAgICAgICAgICAgICAgICAgc2IuZW1pdFB1c2hTdHJpbmcobm9kZSwgJycpO1xuICAgICAgICAgICAgICAgICAgLy8gW3JlbWFpbiA9PT0gJyddXG4gICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0VRVUFMJyk7XG4gICAgICAgICAgICAgICAgICAvLyBbYm9vbGVhbl1cbiAgICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTk9UJyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBbcmVtYWluXVxuICAgICAgICAgICAgICAgICAgc2Iuc2NvcGUuZ2V0KHNiLCBub2RlLCBpbm5lck9wdGlvbnMsIHJlbWFpbik7XG4gICAgICAgICAgICAgICAgICAvLyBbcmVtYWluLCByZW1haW5dXG4gICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgICAgICAgICAgLy8gW3JlbWFpbiwgcmVtYWluLCByZW1haW5dXG4gICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgICAgICAgICAgLy8gW251bWJlciwgcmVtYWluLCByZW1haW5dXG4gICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1NJWkUnKTtcbiAgICAgICAgICAgICAgICAgIC8vIFtudW1iZXIsIHJlbWFpbiwgcmVtYWluXVxuICAgICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdERUMnKTtcbiAgICAgICAgICAgICAgICAgIC8vIFtuZXh0UmVtYWluLCByZW1haW5dXG4gICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0xFRlQnKTtcbiAgICAgICAgICAgICAgICAgIC8vIFtyZW1haW5dXG4gICAgICAgICAgICAgICAgICBzYi5zY29wZS5zZXQoc2IsIG5vZGUsIGlubmVyT3B0aW9ucywgcmVtYWluKTtcbiAgICAgICAgICAgICAgICAgIC8vIFsxLCByZW1haW5dXG4gICAgICAgICAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAxKTtcbiAgICAgICAgICAgICAgICAgIC8vIFtjaGFyXVxuICAgICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdSSUdIVCcpO1xuICAgICAgICAgICAgICAgICAgLy8gWzB4MzAsIGNoYXJdXG4gICAgICAgICAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAweDMwKTtcbiAgICAgICAgICAgICAgICAgIC8vIFtjaGFyIC0gMHgzMF1cbiAgICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1VCJyk7XG4gICAgICAgICAgICAgICAgICAvLyBbbnVtYmVyXVxuICAgICAgICAgICAgICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBzYi5oZWxwZXJzLmlmKHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFtudW1iZXIsIG51bWJlcl1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBbOSwgbnVtYmVyLCBudW1iZXJdXG4gICAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCA5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFtudW1iZXIgPiA5LCBudW1iZXJdXG4gICAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0dUJyk7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB3aGVuVHJ1ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gW11cbiAgICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gW11cbiAgICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy50aHJvd1R5cGVFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2IuaGVscGVycy5pZih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbbnVtYmVyLCBudW1iZXJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzAsIG51bWJlciwgbnVtYmVyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbbnVtYmVyID4gMCwgbnVtYmVyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdMVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlblRydWU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMudGhyb3dUeXBlRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAvLyBbbiwgbnVtYmVyXVxuICAgICAgICAgICAgICAgICAgc2Iuc2NvcGUuZ2V0KHNiLCBub2RlLCBpbm5lck9wdGlvbnMsIG4pO1xuICAgICAgICAgICAgICAgICAgLy8gW24sIG4sIG51bWJlcl1cbiAgICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFVQJyk7XG4gICAgICAgICAgICAgICAgICAvLyBbbnVtYmVyLCBuLCBuLCBudW1iZXJdXG4gICAgICAgICAgICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCAxMCk7XG4gICAgICAgICAgICAgICAgICAvLyBbbnVtYmVyLCBuIG51bWJlcl1cbiAgICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTVVMJyk7XG4gICAgICAgICAgICAgICAgICAvLyBbbiwgbnVtYmVyXVxuICAgICAgICAgICAgICAgICAgc2Iuc2NvcGUuc2V0KHNiLCBub2RlLCBpbm5lck9wdGlvbnMsIG4pO1xuICAgICAgICAgICAgICAgICAgLy8gW251bWJlcl1cbiAgICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnTVVMJyk7XG4gICAgICAgICAgICAgICAgICAvLyBbYWNjdW0sIG51bWJlcl1cbiAgICAgICAgICAgICAgICAgIHNiLnNjb3BlLmdldChzYiwgbm9kZSwgaW5uZXJPcHRpb25zLCBhY2N1bSk7XG4gICAgICAgICAgICAgICAgICAvLyBbbnVtYmVyXVxuICAgICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBREQnKTtcbiAgICAgICAgICAgICAgICAgIC8vIFtdXG4gICAgICAgICAgICAgICAgICBzYi5zY29wZS5zZXQoc2IsIG5vZGUsIGlubmVyT3B0aW9ucywgYWNjdW0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY2xlYW51cDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIFtudW1iZXJdXG4gICAgICAgICAgICBzYi5zY29wZS5nZXQoc2IsIG5vZGUsIG9wdGlvbnMsIGFjY3VtKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnZlcnRPYmplY3QgPSAob3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgICAvLyBbcHJpbWl0aXZlXVxuICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgbm9kZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2IuaGVscGVycy50b1ByaW1pdGl2ZSh7IHR5cGU6IHRoaXMudHlwZSwga25vd25UeXBlOiBUeXBlcy5PYmplY3QsIHByZWZlcnJlZFR5cGU6ICdudW1iZXInIH0pLFxuICAgICAgKTtcbiAgICAgIC8vIFtzdHJpbmddXG4gICAgICBkb0NvbnZlcnQob3B0aW9ucywgZmFsc2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBkb0NvbnZlcnQgPSAob3B0aW9uczogVmlzaXRPcHRpb25zLCBpbml0aWFsID0gdHJ1ZSkgPT4ge1xuICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgbm9kZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2IuaGVscGVycy5mb3JCdWlsdGluVHlwZSh7XG4gICAgICAgICAgdHlwZTogaW5pdGlhbCA/IHRoaXMudHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBrbm93blR5cGU6IGluaXRpYWwgPyB0aGlzLmtub3duVHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBhcnJheTogaW5pdGlhbCA/IGNvbnZlcnRBcnJheSA6IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIGFycmF5U3RvcmFnZTogdGhyb3dUeXBlRXJyb3IsXG4gICAgICAgICAgYm9vbGVhbjogY29udmVydEJvb2xlYW4sXG4gICAgICAgICAgYnVmZmVyOiB0aHJvd1R5cGVFcnJvcixcbiAgICAgICAgICBudWxsOiBjb252ZXJ0TnVsbCxcbiAgICAgICAgICBudW1iZXI6IGNvbnZlcnROdW1iZXIsXG4gICAgICAgICAgb2JqZWN0OiBpbml0aWFsID8gY29udmVydE9iamVjdCA6IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIHN0cmluZzogY29udmVydFN0cmluZyxcbiAgICAgICAgICBzeW1ib2w6IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIHVuZGVmaW5lZDogdGhyb3dUeXBlRXJyb3IsXG4gICAgICAgICAgbWFwOiB0aHJvd1R5cGVFcnJvcixcbiAgICAgICAgICBtYXBTdG9yYWdlOiB0aHJvd1R5cGVFcnJvcixcbiAgICAgICAgICBzZXQ6IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIHNldFN0b3JhZ2U6IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIGVycm9yOiB0aHJvd1R5cGVFcnJvcixcbiAgICAgICAgICBmb3J3YXJkVmFsdWU6IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIGl0ZXJhdG9yUmVzdWx0OiB0aHJvd1R5cGVFcnJvcixcbiAgICAgICAgICBpdGVyYWJsZTogdGhyb3dUeXBlRXJyb3IsXG4gICAgICAgICAgaXRlcmFibGVJdGVyYXRvcjogdGhyb3dUeXBlRXJyb3IsXG4gICAgICAgICAgdHJhbnNhY3Rpb246IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIG91dHB1dDogdGhyb3dUeXBlRXJyb3IsXG4gICAgICAgICAgYXR0cmlidXRlOiB0aHJvd1R5cGVFcnJvcixcbiAgICAgICAgICBpbnB1dDogdGhyb3dUeXBlRXJyb3IsXG4gICAgICAgICAgYWNjb3VudDogdGhyb3dUeXBlRXJyb3IsXG4gICAgICAgICAgYXNzZXQ6IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIGNvbnRyYWN0OiB0aHJvd1R5cGVFcnJvcixcbiAgICAgICAgICBoZWFkZXI6IHRocm93VHlwZUVycm9yLFxuICAgICAgICAgIGJsb2NrOiB0aHJvd1R5cGVFcnJvcixcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH07XG5cbiAgICBkb0NvbnZlcnQoc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pLCB0cnVlKTtcblxuICAgIGlmICghb3B0aW9uc0luLnB1c2hWYWx1ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuIl19