diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index f39c178..a94ff66 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2213,7 +2213,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) free(_taskscheduler); // Child-Container, refer to modules/child-container.js - duk_peval_string_noresult(ctx, "addModule('child-container', Buffer.from('LyoNCkNvcHlyaWdodCAyMDIwIEludGVsIENvcnBvcmF0aW9uDQoNCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQoNCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCg0KVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQoqLw0KDQoNCmZ1bmN0aW9uIGNoaWxkQ29udGFpbmVyKCkNCnsNCiAgICB0aGlzLl9PYmplY3RJRCA9ICdjaGlsZC1jb250YWluZXInOw0KICAgIHRoaXMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpDQogICAgew0KICAgICAgICBpZiAoIW9wdGlvbnMgfHwgKCFvcHRpb25zLnVzZXIgJiYgIW9wdGlvbnMudWlkKSB8fCAhb3B0aW9ucy5sYXVuY2ggfHwgIW9wdGlvbnMubGF1bmNoLm1vZHVsZSB8fCAhb3B0aW9ucy5sYXVuY2gubWV0aG9kIHx8ICFvcHRpb25zLmxhdW5jaC5hcmdzKSB7IHRocm93ICgnSW52YWxpZCBQYXJhbWV0ZXJzJyk7IH0NCg0KICAgICAgICB2YXIgaXBjSW50ZWdlcjsNCg0KICAgICAgICB2YXIgcmV0ID0geyBvcHRpb25zOiBvcHRpb25zIH07DQogICAgICAgIHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlci5jYWxsKHJldCwgdHJ1ZSkNCiAgICAgICAgICAgIC5jcmVhdGVFdmVudCgncmVhZHknKQ0KICAgICAgICAgICAgLmNyZWF0ZUV2ZW50KCdtZXNzYWdlJykNCiAgICAgICAgICAgIC5jcmVhdGVFdmVudCgnZXhpdCcpDQogICAgICAgICAgICAuYWRkTWV0aG9kKCdkaXNjb25uZWN0JywgZnVuY3Rpb24gKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRGlzY29ubmVjdCBjaGlsZCA9PicpOw0KICAgICAgICAgICAgICAgIHRoaXMuX2NsaWVudC5lbmQoKTsNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgICAuYWRkTWV0aG9kKCdtZXNzYWdlJywgZnVuY3Rpb24gKG1zZykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aGlzLnNlbmQoeyBjb21tYW5kOiAnbWVzc2FnZScsIHZhbHVlOiBtc2cgfSk7DQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLmFkZE1ldGhvZCgnZXhpdCcsIGZ1bmN0aW9uIChjb2RlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRoaXMuc2VuZCh7IGNvbW1hbmQ6ICdleGl0JywgdmFsdWU6IGNvZGUgfSk7DQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLmFkZE1ldGhvZCgnc2VuZCcsIGZ1bmN0aW9uIChvYmopDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jbGllbnQpIHsgdGhyb3cgKCdOb3QgQ29ubmVjdGVkJyk7IH0NCiAgICAgICAgICAgICAgICB2YXIgZCwgaCA9IEJ1ZmZlci5hbGxvYyg0KTsNCg0KICAgICAgICAgICAgICAgIGQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShvYmopKTsNCiAgICAgICAgICAgICAgICBoLndyaXRlVUludDMyTEUoZC5sZW5ndGggKyA0KTsNCiAgICAgICAgICAgICAgICB0aGlzLl9jbGllbnQud3JpdGUoaCk7DQogICAgICAgICAgICAgICAgdGhpcy5fY2xpZW50LndyaXRlKGQpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQsICJkZXNjcmlwdG9yTWV0YWRhdGEiLCB7DQogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jbGllbnQpIHsgdGhpcy5fY2xpZW50LmRlc2NyaXB0b3JNZXRhZGF0YSA9IHY7IH0NCiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHJvYykgeyB0aGlzLl9wcm9jLmRlc2NyaXB0b3JNZXRhZGF0YSA9IHY7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICAgIHJldC5faXBjID0gcmVxdWlyZSgnbmV0JykuY3JlYXRlU2VydmVyKCk7IHJldC5faXBjLnBhcmVudCA9IHJldDsgICAgICAgDQogICAgICAgIHJldC5faXBjLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHsgdGhpcy5wYXJlbnQuZW1pdCgnZXhpdCcpOyB9KTsNCg0KICAgICAgICB3aGlsZSAodHJ1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG9wdGlvbnMuX2RlYnVnSVBDICYmIG9wdGlvbnMuX2lwY0ludGVnZXIgIT0gbnVsbCkNCiAgICAgICAgICAgIHsgaXBjSW50ZWdlciA9IG9wdGlvbnMuX2lwY0ludGVnZXI7IH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpcGNJbnRlZ2VyID0gcmVxdWlyZSgndGxzJykuZ2VuZXJhdGVSYW5kb21JbnRlZ2VyKCcxMDAwJywgJzk5OTknKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldC5faXBjUGF0aCA9ICdcXFxcLlxccGlwZVxcdGFza1JlZGlyZWN0aW9uLScgKyBpcGNJbnRlZ2VyOw0KDQogICAgICAgICAgICB0cnkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXQuX2lwYy5saXN0ZW4oeyBwYXRoOiByZXQuX2lwY1BhdGgsIHdyaXRhYmxlQWxsOiB0cnVlIH0pOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2F0Y2ggKHgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYob3B0aW9ucy5faXBjSW50ZWdlciAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RlYnVnRXJyb3I6IFVuYWJsZSB0byBiaW5kIHRvIElQQyBjaGFubmVsOiAnICsgaXBjSW50ZWdlcik7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAocmV0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgdmFyIHNjcmlwdCA9IEJ1ZmZlci5mcm9tKCJjb25zb2xlLmxvZygnQ0hJTEQvU1RBUlQnKTtyZXF1aXJlKCdjaGlsZC1jb250YWluZXInKS5jb25uZWN0KCciICsgaXBjSW50ZWdlciArICInKTsiKS50b1N0cmluZygnYmFzZTY0Jyk7DQogICAgICAgIHJldC5faXBjLm9uY2UoJ2Nvbm5lY3Rpb24nLCBmdW5jdGlvbiBvbkNvbm5lY3QocykNCiAgICAgICAgew0KICAgICAgICAgICAgdGhpcy5jbG9zZSgpOw0KICAgICAgICAgICAgcy5kZXNjcmlwdG9yTWV0YWRhdGEgPSAnY2hpbGQtY29udGFpbmVyJzsNCiAgICAgICAgICAgIHRoaXMucGFyZW50Ll9jbGllbnQgPSBzOw0KICAgICAgICAgICAgdGhpcy5wYXJlbnQuX2NsaWVudC5fcGFyZW50ID0gdGhpczsNCiAgICAgICAgICAgIHZhciBkYXRhOw0KICAgICAgICAgICAgZm9yICh2YXIgbSBpbiB0aGlzLnBhcmVudC5vcHRpb25zLm1vZHVsZXMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZGF0YSA9IHsgY29tbWFuZDogJ2FkZE1vZHVsZScsIHZhbHVlOiB7IG5hbWU6IHRoaXMucGFyZW50Lm9wdGlvbnMubW9kdWxlc1ttXS5uYW1lLCBqczogdGhpcy5wYXJlbnQub3B0aW9ucy5tb2R1bGVzW21dLnNjcmlwdCB9IH07DQogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2VuZChkYXRhKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgZGF0YSA9IHsgY29tbWFuZDogJ2xhdW5jaCcsIHZhbHVlOiB7IG1vZHVsZTogdGhpcy5wYXJlbnQub3B0aW9ucy5sYXVuY2gubW9kdWxlLCBtZXRob2Q6IHRoaXMucGFyZW50Lm9wdGlvbnMubGF1bmNoLm1ldGhvZCwgYXJnczogdGhpcy5wYXJlbnQub3B0aW9ucy5sYXVuY2guYXJncyB9IH07DQogICAgICAgICAgICB0aGlzLnBhcmVudC5zZW5kKGRhdGEpOw0KICAgICAgICAgICAgcy5vbignZGF0YScsIGZ1bmN0aW9uIChjKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBjTGVuOw0KICAgICAgICAgICAgICAgIGlmIChjLmxlbmd0aCA8IDQgfHwgKGNMZW4gPSBjLnJlYWRVSW50MzJMRSgwKSkgPiBjLmxlbmd0aCkgeyB0aGlzLnVuc2hpZnQoYyk7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgIHZhciBjbWQgPSBKU09OLnBhcnNlKGMuc2xpY2UoNCwgY0xlbikudG9TdHJpbmcoKSk7DQogICAgICAgICAgICAgICAgc3dpdGNoIChjbWQuY29tbWFuZCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lc3NhZ2UnOg0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50LnBhcmVudC5lbWl0KCdtZXNzYWdlJywgY21kLnZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChjTGVuIDwgYy5sZW5ndGgpIHsgdGhpcy51bnNoaWZ0KGMuc2xpY2UoY0xlbikpOyB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHRoaXMucGFyZW50LmVtaXQoJ3JlYWR5Jyk7DQogICAgICAgIH0pOw0KDQogICAgICAgIGlmIChvcHRpb25zLl9kZWJ1Z0lQQykNCiAgICAgICAgew0KICAgICAgICAgICAgY29uc29sZS5sb2coJy1iNjRleGVjICcgKyBzY3JpcHQpOw0KICAgICAgICAgICAgcmV0dXJuIChyZXQpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU3Bhd24gdGhlIGNoaWxkDQogICAgICAgIGlmKG9wdGlvbnMudXNlciAmJiBwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicpDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIFVzZSBUYXNrIFNjaGVkdWxlcg0KICAgICAgICAgICAgdmFyIHBhcm1zID0gJy9DIFNDSFRBU0tTIC9DUkVBVEUgL0YgL1ROIE1lc2hVc2VyVGFzayAvU0MgT05DRSAvU1QgMDA6MDAgJzsNCiAgICAgICAgICAgIHBhcm1zICs9ICgnL1JVICcgKyBvcHRpb25zLnVzZXIgKyAnICcpOw0KICAgICAgICAgICAgcGFybXMgKz0gKCcvVFIgIlxcIicgKyBwcm9jZXNzLmV4ZWNQYXRoICsgJ1xcIiAtYjY0ZXhlYyAnICsgc2NyaXB0ICsgJyInKTsNCg0KICAgICAgICAgICAgdmFyIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICdcXHN5c3RlbTMyXFxjbWQuZXhlJywgW3Bhcm1zXSk7DQogICAgICAgICAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsNCiAgICAgICAgICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgY2hpbGQud2FpdEV4aXQoKTsNCg0KICAgICAgICAgICAgY2hpbGQgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY0ZpbGUocHJvY2Vzcy5lbnZbJ3dpbmRpciddICsgJ1xcc3lzdGVtMzJcXGNtZC5leGUnLCBbJ2NtZCddKTsNCiAgICAgICAgICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgfSk7DQogICAgICAgICAgICBjaGlsZC5zdGRpbi53cml0ZSgnU0NIVEFTS1MgL1JVTiAvVE4gTWVzaFVzZXJUYXNrXHJcbicpOw0KICAgICAgICAgICAgY2hpbGQuc3RkaW4ud3JpdGUoJ1NDSFRBU0tTIC9ERUxFVEUgL0YgL1ROIE1lc2hVc2VyVGFza1xyXG5leGl0XHJcbicpOw0KICAgICAgICAgICAgY2hpbGQud2FpdEV4aXQoKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBjaGlsZF9vcHRpb25zID0ge307DQogICAgICAgICAgICBpZihvcHRpb25zLnVpZCAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciB0c2lkOw0KICAgICAgICAgICAgICAgIGlmICgodHNpZCA9IHJlcXVpcmUoJ3VzZXItc2Vzc2lvbnMnKS5nZXRQcm9jZXNzT3duZXJOYW1lKHByb2Nlc3MucGlkKS50c2lkKSA9PSAwKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHJ1bm5pbmcgYXMgTG9jYWxTeXN0ZW0NCiAgICAgICAgICAgICAgICAgICAgY2hpbGRfb3B0aW9ucy51aWQgPSBvcHRpb25zLnVpZDsNCiAgICAgICAgICAgICAgICAgICAgY2hpbGRfb3B0aW9ucy50eXBlID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLlNwYXduVHlwZXMuVVNFUjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd29uJ3QgYmUgYWJsZSB0byBzd2l0Y2ggc2Vzc2lvbiBJRHMsIHNvIGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgcnVubmluZyBhcyB0aGlzIHNpZA0KICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zaWQgIT0gdHNpZCkgeyB0aHJvdyAoJ0luc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIHJ1biBhcyB0aGlzIHVzZXInKTsgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldC5fcHJvYyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjRmlsZShwcm9jZXNzLmV4ZWNQYXRoLCBbcHJvY2Vzcy5leGVjUGF0aC5zcGxpdChwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicgPyAnXFwnIDogJy8nKS5wb3AoKSwgJy1iNjRleGVjJywgc2NyaXB0XSwgY2hpbGRfb3B0aW9ucyk7DQogICAgICAgICAgICByZXQuX3Byb2MuZGVzY3JpcHRvck1ldGFkYXRhID0gImNoaWxkLWNvbnRhaW5lciI7DQogICAgICAgICAgICByZXQuX3Byb2MucGFyZW50ID0gcmV0Ow0KICAgICAgICAgICAgcmV0Ll9wcm9jLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgcmV0Ll9wcm9jLnN0ZGVyci5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgcmV0Ll9wcm9jLm9uKCdleGl0JywgZnVuY3Rpb24gKGNvZGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuZW1pdCgnZXhpdCcsIGNvZGUpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIChyZXQpOw0KICAgIH0NCiAgICB0aGlzLmNvbm5lY3QgPSBmdW5jdGlvbiAoaXBjTnVtYmVyKQ0KICAgIHsNCiAgICAgICAgdmFyIGlwY1BhdGggPSAnXFxcXC5cXHBpcGVcXHRhc2tSZWRpcmVjdGlvbi0nICsgaXBjTnVtYmVyOw0KICAgICAgICB0aGlzLl9pcGNDbGllbnQgPSByZXF1aXJlKCduZXQnKS5jcmVhdGVDb25uZWN0aW9uKHsgcGF0aDogaXBjUGF0aCB9KTsNCiAgICAgICAgdGhpcy5faXBjQ2xpZW50Ll9wYXJlbnQgPSB0aGlzOw0KICAgICAgICByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXIuY2FsbCh0aGlzLCB0cnVlKQ0KICAgICAgICAgICAgLmNyZWF0ZUV2ZW50KCdtZXNzYWdlJykNCiAgICAgICAgICAgIC5jcmVhdGVFdmVudCgnZXhpdCcpDQogICAgICAgICAgICAuYWRkTWV0aG9kKCdtZXNzYWdlJywgZnVuY3Rpb24gKG1zZykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aGlzLnNlbmQoeyBjb21tYW5kOiAnbWVzc2FnZScsIHZhbHVlOiBtc2cgfSk7DQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLmFkZE1ldGhvZCgnc2VuZCcsIGZ1bmN0aW9uIChkYXRhKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXBjQ2xpZW50KSB7IHRocm93ICgnTm90IENvbm5lY3RlZCcpOyB9DQogICAgICAgICAgICAgICAgdmFyIGQsIGggPSBCdWZmZXIuYWxsb2MoNCk7DQoNCiAgICAgICAgICAgICAgICBkID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoZGF0YSkpOw0KICAgICAgICAgICAgICAgIGgud3JpdGVVSW50MzJMRShkLmxlbmd0aCArIDQpOw0KICAgICAgICAgICAgICAgIHRoaXMuX2lwY0NsaWVudC53cml0ZShoKTsNCiAgICAgICAgICAgICAgICB0aGlzLl9pcGNDbGllbnQud3JpdGUoZCk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjaGlsZCcsIHsgdmFsdWU6IHRydWUgfSk7DQogICAgICAgIHRoaXMuX2lwY0NsaWVudC5vbignY29ubmVjdCcsIGZ1bmN0aW9uICgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHRoaXMub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkgeyBwcm9jZXNzLl9leGl0KDApOyB9KTsNCiAgICAgICAgICAgIHRoaXMub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgY0xlbjsNCiAgICAgICAgICAgICAgICBpZiAoYy5sZW5ndGggPCA0IHx8IChjTGVuID0gYy5yZWFkVUludDMyTEUoMCkpID4gYy5sZW5ndGgpIHsgdGhpcy51bnNoaWZ0KGMpOyByZXR1cm47IH0NCg0KICAgICAgICAgICAgICAgIHZhciBjbWQgPSBKU09OLnBhcnNlKGMuc2xpY2UoNCwgY0xlbikudG9TdHJpbmcoKSk7DQogICAgICAgICAgICAgICAgc3dpdGNoIChjbWQuY29tbWFuZCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkZE1vZHVsZSc6DQogICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2R1bGUoY21kLnZhbHVlLm5hbWUsIGNtZC52YWx1ZS5qcyk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGF1bmNoJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmogPSByZXF1aXJlKGNtZC52YWx1ZS5tb2R1bGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzdWx0ID0gb2JqW2NtZC52YWx1ZS5tZXRob2RdLmFwcGx5KG9iaiwgY21kLnZhbHVlLmFyZ3MpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbignZW5kJywgZnVuY3Rpb24gKCkgeyBwcm9jZXNzLmV4aXQoKTsgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVzc2FnZSc6DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJlbnQuZW1pdCgnbWVzc2FnZScsIGNtZC52YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnX2Rpc2Nvbm5lY3QnOg0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Rpc2Nvbm5lY3RpbmcuLi4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW5kKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZXhpdCc6DQogICAgICAgICAgICAgICAgICAgICAgICB0cnkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJlbnQuZW1pdCgnZXhpdCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgeyB9DQogICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLl9leGl0KDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGNMZW4gPCBjLmxlbmd0aCkgeyB0aGlzLnVuc2hpZnQoYy5zbGljZShjTGVuKSk7IH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9Ow0KfQ0KDQoNCm1vZHVsZS5leHBvcnRzID0gbmV3IGNoaWxkQ29udGFpbmVyKCk7', 'base64').toString());"); + duk_peval_string_noresult(ctx, "addModule('child-container', Buffer.from('LyoNCkNvcHlyaWdodCAyMDIwIEludGVsIENvcnBvcmF0aW9uDQoNCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQoNCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCg0KVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQoqLw0KDQoNCmZ1bmN0aW9uIGNoaWxkQ29udGFpbmVyKCkNCnsNCiAgICB0aGlzLl9PYmplY3RJRCA9ICdjaGlsZC1jb250YWluZXInOw0KICAgIHRoaXMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpDQogICAgew0KICAgICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMubGF1bmNoIHx8ICFvcHRpb25zLmxhdW5jaC5tb2R1bGUgfHwgIW9wdGlvbnMubGF1bmNoLm1ldGhvZCB8fCAhb3B0aW9ucy5sYXVuY2guYXJncykgeyB0aHJvdyAoJ0ludmFsaWQgUGFyYW1ldGVycycpOyB9DQoNCiAgICAgICAgdmFyIGlwY0ludGVnZXI7DQoNCiAgICAgICAgdmFyIHJldCA9IHsgb3B0aW9uczogb3B0aW9ucyB9Ow0KICAgICAgICByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXIuY2FsbChyZXQsIHRydWUpDQogICAgICAgICAgICAuY3JlYXRlRXZlbnQoJ3JlYWR5JykNCiAgICAgICAgICAgIC5jcmVhdGVFdmVudCgnbWVzc2FnZScpDQogICAgICAgICAgICAuY3JlYXRlRXZlbnQoJ2V4aXQnKQ0KICAgICAgICAgICAgLmFkZE1ldGhvZCgnZGlzY29ubmVjdCcsIGZ1bmN0aW9uICgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Rpc2Nvbm5lY3QgY2hpbGQgPT4nKTsNCiAgICAgICAgICAgICAgICB0aGlzLl9jbGllbnQuZW5kKCk7DQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLmFkZE1ldGhvZCgnbWVzc2FnZScsIGZ1bmN0aW9uIChtc2cpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhpcy5zZW5kKHsgY29tbWFuZDogJ21lc3NhZ2UnLCB2YWx1ZTogbXNnIH0pOw0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIC5hZGRNZXRob2QoJ2V4aXQnLCBmdW5jdGlvbiAoY29kZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aGlzLnNlbmQoeyBjb21tYW5kOiAnZXhpdCcsIHZhbHVlOiBjb2RlIH0pOw0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIC5hZGRNZXRob2QoJ3NlbmQnLCBmdW5jdGlvbiAob2JqKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2xpZW50KSB7IHRocm93ICgnTm90IENvbm5lY3RlZCcpOyB9DQogICAgICAgICAgICAgICAgdmFyIGQsIGggPSBCdWZmZXIuYWxsb2MoNCk7DQoNCiAgICAgICAgICAgICAgICBkID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkob2JqKSk7DQogICAgICAgICAgICAgICAgaC53cml0ZVVJbnQzMkxFKGQubGVuZ3RoICsgNCk7DQogICAgICAgICAgICAgICAgdGhpcy5fY2xpZW50LndyaXRlKGgpOw0KICAgICAgICAgICAgICAgIHRoaXMuX2NsaWVudC53cml0ZShkKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmV0LCAiZGVzY3JpcHRvck1ldGFkYXRhIiwgew0KICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAodikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2xpZW50KSB7IHRoaXMuX2NsaWVudC5kZXNjcmlwdG9yTWV0YWRhdGEgPSB2OyB9DQogICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Byb2MpIHsgdGhpcy5fcHJvYy5kZXNjcmlwdG9yTWV0YWRhdGEgPSB2OyB9DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgICAgICByZXQuX2lwYyA9IHJlcXVpcmUoJ25ldCcpLmNyZWF0ZVNlcnZlcigpOyByZXQuX2lwYy5wYXJlbnQgPSByZXQ7ICAgICAgIA0KICAgICAgICByZXQuX2lwYy5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7IHRoaXMucGFyZW50LmVtaXQoJ2V4aXQnKTsgfSk7DQoNCiAgICAgICAgd2hpbGUgKHRydWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvcHRpb25zLl9kZWJ1Z0lQQyAmJiBvcHRpb25zLl9pcGNJbnRlZ2VyICE9IG51bGwpDQogICAgICAgICAgICB7IGlwY0ludGVnZXIgPSBvcHRpb25zLl9pcGNJbnRlZ2VyOyB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaXBjSW50ZWdlciA9IHJlcXVpcmUoJ3RscycpLmdlbmVyYXRlUmFuZG9tSW50ZWdlcignMTAwMCcsICc5OTk5Jyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXQuX2lwY1BhdGggPSAnXFxcXC5cXHBpcGVcXHRhc2tSZWRpcmVjdGlvbi0nICsgaXBjSW50ZWdlcjsNCg0KICAgICAgICAgICAgdHJ5DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0Ll9pcGMubGlzdGVuKHsgcGF0aDogcmV0Ll9pcGNQYXRoLCB3cml0YWJsZUFsbDogdHJ1ZSB9KTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoICh4KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmKG9wdGlvbnMuX2lwY0ludGVnZXIgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEZWJ1Z0Vycm9yOiBVbmFibGUgdG8gYmluZCB0byBJUEMgY2hhbm5lbDogJyArIGlwY0ludGVnZXIpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHZhciBzY3JpcHQgPSBCdWZmZXIuZnJvbSgiY29uc29sZS5sb2coJ0NISUxEL1NUQVJUJyk7cmVxdWlyZSgnY2hpbGQtY29udGFpbmVyJykuY29ubmVjdCgnIiArIGlwY0ludGVnZXIgKyAiJyk7IikudG9TdHJpbmcoJ2Jhc2U2NCcpOw0KICAgICAgICByZXQuX2lwYy5vbmNlKCdjb25uZWN0aW9uJywgZnVuY3Rpb24gb25Db25uZWN0KHMpDQogICAgICAgIHsNCiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsNCiAgICAgICAgICAgIHMuZGVzY3JpcHRvck1ldGFkYXRhID0gJ2NoaWxkLWNvbnRhaW5lcic7DQogICAgICAgICAgICB0aGlzLnBhcmVudC5fY2xpZW50ID0gczsNCiAgICAgICAgICAgIHRoaXMucGFyZW50Ll9jbGllbnQuX3BhcmVudCA9IHRoaXM7DQogICAgICAgICAgICB2YXIgZGF0YTsNCiAgICAgICAgICAgIGZvciAodmFyIG0gaW4gdGhpcy5wYXJlbnQub3B0aW9ucy5tb2R1bGVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGRhdGEgPSB7IGNvbW1hbmQ6ICdhZGRNb2R1bGUnLCB2YWx1ZTogeyBuYW1lOiB0aGlzLnBhcmVudC5vcHRpb25zLm1vZHVsZXNbbV0ubmFtZSwganM6IHRoaXMucGFyZW50Lm9wdGlvbnMubW9kdWxlc1ttXS5zY3JpcHQgfSB9Ow0KICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNlbmQoZGF0YSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIGRhdGEgPSB7IGNvbW1hbmQ6ICdsYXVuY2gnLCB2YWx1ZTogeyBtb2R1bGU6IHRoaXMucGFyZW50Lm9wdGlvbnMubGF1bmNoLm1vZHVsZSwgbWV0aG9kOiB0aGlzLnBhcmVudC5vcHRpb25zLmxhdW5jaC5tZXRob2QsIGFyZ3M6IHRoaXMucGFyZW50Lm9wdGlvbnMubGF1bmNoLmFyZ3MgfSB9Ow0KICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2VuZChkYXRhKTsNCiAgICAgICAgICAgIHMub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgY0xlbjsNCiAgICAgICAgICAgICAgICBpZiAoYy5sZW5ndGggPCA0IHx8IChjTGVuID0gYy5yZWFkVUludDMyTEUoMCkpID4gYy5sZW5ndGgpIHsgdGhpcy51bnNoaWZ0KGMpOyByZXR1cm47IH0NCiAgICAgICAgICAgICAgICB2YXIgY21kID0gSlNPTi5wYXJzZShjLnNsaWNlKDQsIGNMZW4pLnRvU3RyaW5nKCkpOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAoY21kLmNvbW1hbmQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBjYXNlICdtZXNzYWdlJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcmVudC5wYXJlbnQuZW1pdCgnbWVzc2FnZScsIGNtZC52YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoY0xlbiA8IGMubGVuZ3RoKSB7IHRoaXMudW5zaGlmdChjLnNsaWNlKGNMZW4pKTsgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB0aGlzLnBhcmVudC5lbWl0KCdyZWFkeScpOw0KICAgICAgICB9KTsNCg0KICAgICAgICBpZiAob3B0aW9ucy5fZGVidWdJUEMpDQogICAgICAgIHsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCctYjY0ZXhlYyAnICsgc2NyaXB0KTsNCiAgICAgICAgICAgIHJldHVybiAocmV0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFNwYXduIHRoZSBjaGlsZA0KICAgICAgICBpZihvcHRpb25zLnVzZXIgJiYgcHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKQ0KICAgICAgICB7DQogICAgICAgICAgICAvLyBVc2UgVGFzayBTY2hlZHVsZXINCiAgICAgICAgICAgIHZhciBwYXJtcyA9ICcvQyBTQ0hUQVNLUyAvQ1JFQVRFIC9GIC9UTiBNZXNoVXNlclRhc2sgL1NDIE9OQ0UgL1NUIDAwOjAwICc7DQogICAgICAgICAgICBwYXJtcyArPSAoJy9SVSAnICsgb3B0aW9ucy51c2VyICsgJyAnKTsNCiAgICAgICAgICAgIHBhcm1zICs9ICgnL1RSICJcXCInICsgcHJvY2Vzcy5leGVjUGF0aCArICdcXCIgLWI2NGV4ZWMgJyArIHNjcmlwdCArICciJyk7DQoNCiAgICAgICAgICAgIHZhciBjaGlsZCA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjRmlsZShwcm9jZXNzLmVudlsnd2luZGlyJ10gKyAnXFxzeXN0ZW0zMlxcY21kLmV4ZScsIFtwYXJtc10pOw0KICAgICAgICAgICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgfSk7DQogICAgICAgICAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsNCiAgICAgICAgICAgIGNoaWxkLndhaXRFeGl0KCk7DQoNCiAgICAgICAgICAgIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICdcXHN5c3RlbTMyXFxjbWQuZXhlJywgWydjbWQnXSk7DQogICAgICAgICAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsNCiAgICAgICAgICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgY2hpbGQuc3RkaW4ud3JpdGUoJ1NDSFRBU0tTIC9SVU4gL1ROIE1lc2hVc2VyVGFza1xyXG4nKTsNCiAgICAgICAgICAgIGNoaWxkLnN0ZGluLndyaXRlKCdTQ0hUQVNLUyAvREVMRVRFIC9GIC9UTiBNZXNoVXNlclRhc2tcclxuZXhpdFxyXG4nKTsNCiAgICAgICAgICAgIGNoaWxkLndhaXRFeGl0KCk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgY2hpbGRfb3B0aW9ucyA9IHt9Ow0KICAgICAgICAgICAgaWYob3B0aW9ucy51aWQgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgdHNpZDsNCiAgICAgICAgICAgICAgICBpZiAoKHRzaWQgPSByZXF1aXJlKCd1c2VyLXNlc3Npb25zJykuZ2V0UHJvY2Vzc093bmVyTmFtZShwcm9jZXNzLnBpZCkudHNpZCkgPT0gMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBydW5uaW5nIGFzIExvY2FsU3lzdGVtDQogICAgICAgICAgICAgICAgICAgIGNoaWxkX29wdGlvbnMudWlkID0gb3B0aW9ucy51aWQ7DQogICAgICAgICAgICAgICAgICAgIGNoaWxkX29wdGlvbnMudHlwZSA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5TcGF3blR5cGVzLlVTRVI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFdlIHdvbid0IGJlIGFibGUgdG8gc3dpdGNoIHNlc3Npb24gSURzLCBzbyBjaGVjayB0byBtYWtlIHN1cmUgd2UgYXJlIHJ1bm5pbmcgYXMgdGhpcyBzaWQNCiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2lkICE9IHRzaWQpIHsgdGhyb3cgKCdJbnN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBydW4gYXMgdGhpcyB1c2VyJyk7IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXQuX3Byb2MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY0ZpbGUocHJvY2Vzcy5leGVjUGF0aCwgW3Byb2Nlc3MuZXhlY1BhdGguc3BsaXQocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ1xcJyA6ICcvJykucG9wKCksICctYjY0ZXhlYycsIHNjcmlwdF0sIGNoaWxkX29wdGlvbnMpOw0KICAgICAgICAgICAgcmV0Ll9wcm9jLmRlc2NyaXB0b3JNZXRhZGF0YSA9ICJjaGlsZC1jb250YWluZXIiOw0KICAgICAgICAgICAgcmV0Ll9wcm9jLnBhcmVudCA9IHJldDsNCiAgICAgICAgICAgIHJldC5fcHJvYy5zdGRvdXQub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsNCiAgICAgICAgICAgIHJldC5fcHJvYy5zdGRlcnIub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsNCiAgICAgICAgICAgIHJldC5fcHJvYy5vbignZXhpdCcsIGZ1bmN0aW9uIChjb2RlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmVtaXQoJ2V4aXQnLCBjb2RlKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAocmV0KTsNCiAgICB9DQogICAgdGhpcy5jb25uZWN0ID0gZnVuY3Rpb24gKGlwY051bWJlcikNCiAgICB7DQogICAgICAgIHZhciBpcGNQYXRoID0gJ1xcXFwuXFxwaXBlXFx0YXNrUmVkaXJlY3Rpb24tJyArIGlwY051bWJlcjsNCiAgICAgICAgdGhpcy5faXBjQ2xpZW50ID0gcmVxdWlyZSgnbmV0JykuY3JlYXRlQ29ubmVjdGlvbih7IHBhdGg6IGlwY1BhdGggfSk7DQogICAgICAgIHRoaXMuX2lwY0NsaWVudC5fcGFyZW50ID0gdGhpczsNCiAgICAgICAgcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyLmNhbGwodGhpcywgdHJ1ZSkNCiAgICAgICAgICAgIC5jcmVhdGVFdmVudCgnbWVzc2FnZScpDQogICAgICAgICAgICAuY3JlYXRlRXZlbnQoJ2V4aXQnKQ0KICAgICAgICAgICAgLmFkZE1ldGhvZCgnbWVzc2FnZScsIGZ1bmN0aW9uIChtc2cpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhpcy5zZW5kKHsgY29tbWFuZDogJ21lc3NhZ2UnLCB2YWx1ZTogbXNnIH0pOw0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIC5hZGRNZXRob2QoJ3NlbmQnLCBmdW5jdGlvbiAoZGF0YSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lwY0NsaWVudCkgeyB0aHJvdyAoJ05vdCBDb25uZWN0ZWQnKTsgfQ0KICAgICAgICAgICAgICAgIHZhciBkLCBoID0gQnVmZmVyLmFsbG9jKDQpOw0KDQogICAgICAgICAgICAgICAgZCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGRhdGEpKTsNCiAgICAgICAgICAgICAgICBoLndyaXRlVUludDMyTEUoZC5sZW5ndGggKyA0KTsNCiAgICAgICAgICAgICAgICB0aGlzLl9pcGNDbGllbnQud3JpdGUoaCk7DQogICAgICAgICAgICAgICAgdGhpcy5faXBjQ2xpZW50LndyaXRlKGQpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnY2hpbGQnLCB7IHZhbHVlOiB0cnVlIH0pOw0KICAgICAgICB0aGlzLl9pcGNDbGllbnQub24oJ2Nvbm5lY3QnLCBmdW5jdGlvbiAoKQ0KICAgICAgICB7DQogICAgICAgICAgICB0aGlzLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHsgcHJvY2Vzcy5fZXhpdCgwKTsgfSk7DQogICAgICAgICAgICB0aGlzLm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGNMZW47DQogICAgICAgICAgICAgICAgaWYgKGMubGVuZ3RoIDwgNCB8fCAoY0xlbiA9IGMucmVhZFVJbnQzMkxFKDApKSA+IGMubGVuZ3RoKSB7IHRoaXMudW5zaGlmdChjKTsgcmV0dXJuOyB9DQoNCiAgICAgICAgICAgICAgICB2YXIgY21kID0gSlNPTi5wYXJzZShjLnNsaWNlKDQsIGNMZW4pLnRvU3RyaW5nKCkpOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAoY21kLmNvbW1hbmQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBjYXNlICdhZGRNb2R1bGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgYWRkTW9kdWxlKGNtZC52YWx1ZS5uYW1lLCBjbWQudmFsdWUuanMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhdW5jaCc6DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqID0gcmVxdWlyZShjbWQudmFsdWUubW9kdWxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3VsdCA9IG9ialtjbWQudmFsdWUubWV0aG9kXS5hcHBseShvYmosIGNtZC52YWx1ZS5hcmdzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHsgcHJvY2Vzcy5leGl0KCk7IH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lc3NhZ2UnOg0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50LmVtaXQoJ21lc3NhZ2UnLCBjbWQudmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ19kaXNjb25uZWN0JzoNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEaXNjb25uZWN0aW5nLi4uJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2V4aXQnOg0KICAgICAgICAgICAgICAgICAgICAgICAgdHJ5DQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50LmVtaXQoJ2V4aXQnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlZSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5fZXhpdCgwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChjTGVuIDwgYy5sZW5ndGgpIHsgdGhpcy51bnNoaWZ0KGMuc2xpY2UoY0xlbikpOyB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQogICAgfTsNCn0NCg0KDQptb2R1bGUuZXhwb3J0cyA9IG5ldyBjaGlsZENvbnRhaW5lcigpOw==', 'base64').toString());"); // message-box, refer to modules/message-box.js char *_messagebox = ILibMemory_Allocate(113302, 0, NULL, NULL); diff --git a/modules/child-container.js b/modules/child-container.js index 3c7d2a9..dbd3ec1 100644 --- a/modules/child-container.js +++ b/modules/child-container.js @@ -20,7 +20,7 @@ function childContainer() this._ObjectID = 'child-container'; this.create = function create(options) { - if (!options || (!options.user && !options.uid) || !options.launch || !options.launch.module || !options.launch.method || !options.launch.args) { throw ('Invalid Parameters'); } + if (!options || !options.launch || !options.launch.module || !options.launch.method || !options.launch.args) { throw ('Invalid Parameters'); } var ipcInteger;