{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDwhLS0gQWxsIGNvZGUgd2lsbCBiZSB3aXRoaW4gdGhpcyBzaW5nbGUgZmlsZSBmb3IgZnVubmVsIHBhZ2UgY29tcGF0aWJpbGl0eSAtLT4KICAgIDxzdHlsZT4KICAgICAgICAvKiBCYXNlIHN0eWxlcyAqLwogICAgICAgIDpyb290IHsKICAgICAgICAgICAgLS1wcmltYXJ5OiAjNmI0NmMxOwogICAgICAgICAgICAtLXNlY29uZGFyeTogI2YwZjJmNTsKICAgICAgICAgICAgLS1hY2NlbnQ6ICNlOWQ1ZmY7CiAgICAgICAgICAgIC0tc3VjY2VzczogIzEwYjk4MTsKICAgICAgICAgICAgLS13YXJuaW5nOiAjZjU5ZTBiOwogICAgICAgICAgICAtLWluZm86ICMzYjgyZjY7CiAgICAgICAgfQoKICAgICAgICAqIHsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBmb250LWZhbWlseTogJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgICAgfQoKICAgICAgICAudmlzaW9uLWJvYXJkLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAvKiBIZWFkZXIgYW5kIE5hdmlnYXRpb24gKi8KICAgICAgICAuaGVhZGVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTAwOwogICAgICAgIH0KCiAgICAgICAgLm5hdi1tZW51IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tYXJlYSB7CiAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICAgICAgaGVpZ2h0OiA2MHB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tYXJlYSBpbWcgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICB9CgogICAgICAgIC8qIEhlcm8gU2VjdGlvbiAqLwogICAgICAgIC5oZXJvIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgxMDcsIDcwLCAxOTMsIDAuOTUpLCByZ2JhKDEwNywgNzAsIDE5MywgMC44KSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgcGFkZGluZzogODBweCAyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAuaGVybyBoMSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41ZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQoKICAgICAgICAuaGVybyBwIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICB9CgogICAgICAgIC8qIFByb2dyYW0gU2VjdGlvbnMgKi8KICAgICAgICAucHJvZ3JhbS1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogNjBweCAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICB9CgogICAgICAgIC5hZ2UtZ3JvdXAtY2FyZHMgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgIH0KCiAgICAgICAgLmFnZS1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5KTsKICAgICAgICAgICAgcGFkZGluZzogMzBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmFnZS1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgwLDAsMCwwLjEpOwogICAgICAgIH0KCiAgICAgICAgLyogRmVhdHVyZXMgR3JpZCAqLwogICAgICAgIC5mZWF0dXJlcy1ncmlkIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNTBweCwgMWZyKSk7CiAgICAgICAgICAgIGdhcDogMzBweDsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsMCwwLDAuMSk7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXByaW1hcnkpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLyogQnV0dG9ucyAqLwogICAgICAgIC5idXR0b24gewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMjRweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB9CgogICAgICAgIC5idXR0b246aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsMCwwLDAuMSk7CiAgICAgICAgfQoKICAgICAgICAuYnV0dG9uLnNlY29uZGFyeSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXByaW1hcnkpOwogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIFJlc3BvbnNpdmUgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgICAgLmhlcm8gaDEgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5hZ2UtZ3JvdXAtY2FyZHMgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlcy1ncmlkIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBBbmltYXRpb24gQ2xhc3NlcyAqLwogICAgICAgIC5mYWRlLWluIHsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmZhZGUtaW4udmlzaWJsZSB7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPCEtLSBDb250ZW50IGNvbnRpbnVlcyBpbiBuZXh0IG1lc3NhZ2UgLS0+CjwvYm9keT4KPC9odG1sPgo8IURPQ1RZUEUgaHRtbD4KPGh0bWw+CjwhLS0gUHJldmlvdXMgaGVhZCBzZWN0aW9uIHdpdGggc3R5bGVzIHJlbWFpbnMgdGhlIHNhbWUgLS0+Cjxib2R5PgogICAgPGRpdiBjbGFzcz0idmlzaW9uLWJvYXJkLWNvbnRhaW5lciI+CiAgICAgICAgPCEtLSBIZWFkZXIgU2VjdGlvbiAtLT4KICAgICAgICA8aGVhZGVyIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgICA8bmF2IGNsYXNzPSJuYXYtbWVudSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWFyZWEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIvYXBpL3BsYWNlaG9sZGVyLzIwMC82MCIgYWx0PSJGRkZGIExvZ28iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1saW5rcyI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2ZlYXR1cmVzIiBjbGFzcz0iYnV0dG9uIHNlY29uZGFyeSI+RmVhdHVyZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2dyYW1zIiBjbGFzcz0iYnV0dG9uIj5HZXQgU3RhcnRlZDwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L25hdj4KICAgICAgICA8L2hlYWRlcj4KCiAgICAgICAgPCEtLSBIZXJvIFNlY3Rpb24gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9Imhlcm8iPgogICAgICAgICAgICA8aDE+VHJhbnNmb3JtIFlvdW5nIERyZWFtcyBpbnRvIFJlYWxpdHk8L2gxPgogICAgICAgICAgICA8cD5FbXBvd2VyaW5nIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgZW50cmVwcmVuZXVycyB3aXRoIGlubm92YXRpdmUgdmlzaW9uIGJvYXJkIHRvb2xzPC9wPgogICAgICAgICAgICA8YSBocmVmPSIjYWdlLWdyb3VwcyIgY2xhc3M9ImJ1dHRvbiI+U3RhcnQgWW91ciBKb3VybmV5PC9hPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBBZ2UgR3JvdXBzIFNlY3Rpb24gLS0+CiAgICAgICAgPHNlY3Rpb24gaWQ9ImFnZS1ncm91cHMiIGNsYXNzPSJwcm9ncmFtLXNlY3Rpb24iPgogICAgICAgICAgICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkNob29zZSBZb3VyIFBhdGg8L2gyPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZ2UtZ3JvdXAtY2FyZHMiPgogICAgICAgICAgICAgICAgPCEtLSBEcmVhbVN0YXJ0IENhcmQgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZ2UtY2FyZCBmYWRlLWluIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWljb24iPuKcqDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMz5EcmVhbVN0YXJ0PC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD5BZ2VzIDUtOTwvcD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkZ1biBHb2FsIFNldHRpbmc8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkludGVyYWN0aXZlIERyZWFtcyBCb2FyZDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+QWNoaWV2ZW1lbnQgU3RpY2tlcnM8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgb25jbGljaz0ic2VsZWN0UHJvZ3JhbSgnZHJlYW1zdGFydCcpIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIERyZWFtU3RhcnQKICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gQXNwaXJlUXVlc3QgQ2FyZCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFnZS1jYXJkIGZhZGUtaW4iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaWNvbiI+8J+OrzwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMz5Bc3BpcmVRdWVzdDwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHA+QWdlcyAxMC0xMzwvcD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkdvYWwgVHJhY2tpbmc8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlByb2dyZXNzIEpvdXJuYWw8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlRlYW0gQ2hhbGxlbmdlczwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIiBvbmNsaWNrPSJzZWxlY3RQcm9ncmFtKCdhc3BpcmVxdWVzdCcpIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIEFzcGlyZVF1ZXN0CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8IS0tIEZ1dHVyZUZvcmdlIENhcmQgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZ2UtY2FyZCBmYWRlLWluIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWljb24iPvCfmoA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDM+RnV0dXJlRm9yZ2U8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwPkFnZXMgMTQtMTc8L3A+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5CdXNpbmVzcyBQbGFubmluZzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+TWVudG9yIENvbm5lY3Rpb248L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlByb2plY3QgTWFuYWdlbWVudDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIiBvbmNsaWNrPSJzZWxlY3RQcm9ncmFtKCdmdXR1cmVmb3JnZScpIj4KICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIEZ1dHVyZUZvcmdlCiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIEZlYXR1cmVzIFNlY3Rpb24gLS0+CiAgICAgICAgPHNlY3Rpb24gaWQ9ImZlYXR1cmVzIiBjbGFzcz0iZmVhdHVyZXMtZ3JpZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtY2FyZCBmYWRlLWluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmUtaWNvbiI+8J+OrzwvZGl2PgogICAgICAgICAgICAgICAgPGgzPkdvYWwgU2V0dGluZzwvaDM+CiAgICAgICAgICAgICAgICA8cD5JbnRlcmFjdGl2ZSB0b29scyB0byBzZXQgYW5kIHRyYWNrIG1lYW5pbmdmdWwgZ29hbHM8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWNhcmQgZmFkZS1pbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWljb24iPvCfk4g8L2Rpdj4KICAgICAgICAgICAgICAgIDxoMz5Qcm9ncmVzcyBUcmFja2luZzwvaDM+CiAgICAgICAgICAgICAgICA8cD5WaXN1YWwgcHJvZ3Jlc3MgbW9uaXRvcmluZyBhbmQgY2VsZWJyYXRpb25zPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1jYXJkIGZhZGUtaW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1pY29uIj7wn6SdPC9kaXY+CiAgICAgICAgICAgICAgICA8aDM+Q29tbXVuaXR5IFN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPHA+Q29ubmVjdCB3aXRoIG90aGVyIHlvdW5nIGVudHJlcHJlbmV1cnM8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBTdWNjZXNzIFN0b3JpZXMgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InN1Y2Nlc3Mtc3RvcmllcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0b3J5LWNhcm91c2VsIj4KICAgICAgICAgICAgICAgIDwhLS0gU3RvcnkgY2FyZHMgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdCAtLT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIENhbGwgdG8gQWN0aW9uIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJjdGEtc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMj5SZWFkeSB0byBTdGFydCBZb3VyIEpvdXJuZXk/PC9oMj4KICAgICAgICAgICAgPHA+Sm9pbiB0aG91c2FuZHMgb2YgeW91bmcgZW50cmVwcmVuZXVycyBidWlsZGluZyB0aGVpciBmdXR1cmU8L3A+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgb25jbGljaz0ic3RhcnRKb3VybmV5KCkiPkJlZ2luIE5vdzwvYnV0dG9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZGl2PgoKICAgIDxzY3JpcHQ+CiAgICAgICAgLy8gSW50ZXJhY3RpdmUgZnVuY3Rpb25hbGl0eQogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gRmFkZSBpbiBhbmltYXRpb24gZm9yIGVsZW1lbnRzCiAgICAgICAgICAgIGNvbnN0IGZhZGVFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mYWRlLWluJyk7CiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7CiAgICAgICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykgewogICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS50YXJnZXQuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGZhZGVFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KSk7CgogICAgICAgICAgICAvLyBQcm9ncmFtIHNlbGVjdGlvbiBoYW5kbGluZwogICAgICAgICAgICB3aW5kb3cuc2VsZWN0UHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHsKICAgICAgICAgICAgICAgIC8vIFN0b3JlIHNlbGVjdGVkIHByb2dyYW0KICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzZWxlY3RlZFByb2dyYW0nLCBwcm9ncmFtKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gU2hvdyBzdWNjZXNzIG1lc3NhZ2UKICAgICAgICAgICAgICAgIHNob3dOb3RpZmljYXRpb24oYEdyZWF0IGNob2ljZSEgJHtwcm9ncmFtfSBzZWxlY3RlZCFgKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gUmVkaXJlY3QgdG8gcmVnaXN0cmF0aW9uIChjdXN0b21pemUgdGhpcyBVUkwpCiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcjcmVnaXN0ZXInOwogICAgICAgICAgICAgICAgfSwgMTUwMCk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBKb3VybmV5IHN0YXJ0ZXIKICAgICAgICAgICAgd2luZG93LnN0YXJ0Sm91cm5leSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byBhZ2UgZ3JvdXBzCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWdlLWdyb3VwcycpLnNjcm9sbEludG9WaWV3KHsKICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgLy8gTm90aWZpY2F0aW9uIHN5c3RlbQogICAgICAgICAgICBmdW5jdGlvbiBzaG93Tm90aWZpY2F0aW9uKG1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmNsYXNzTmFtZSA9ICdub3RpZmljYXRpb24nOwogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLnRleHRDb250ZW50ID0gbWVzc2FnZTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm90aWZpY2F0aW9uKTsKCiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICB9LCAzMDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo8IURPQ1RZUEUgaHRtbD4KPGh0bWw+CjwhLS0gUHJldmlvdXMgY29kZSByZW1haW5zIHRoZSBzYW1lIHVudGlsIHRoZSBTdWNjZXNzIFN0b3JpZXMgc2VjdGlvbiAtLT4KCjwhLS0gRW5oYW5jZWQgU3VjY2VzcyBTdG9yaWVzIENhcm91c2VsIC0tPgo8c2VjdGlvbiBjbGFzcz0ic3VjY2Vzcy1zdG9yaWVzIj4KICAgIDxzdHlsZT4KICAgICAgICAvKiBDYXJvdXNlbCBTdHlsZXMgKi8KICAgICAgICAuc3VjY2Vzcy1zdG9yaWVzIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5KTsKICAgICAgICAgICAgcGFkZGluZzogNjBweCAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLnN0b3J5LWNhcm91c2VsIHsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAuY2Fyb3VzZWwtdHJhY2sgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLnN0b3J5LWNhcmQgewogICAgICAgICAgICBtaW4td2lkdGg6IDMwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgMTVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsMCwwLDAuMSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5zdG9yeS1jYXJkLmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgfQoKICAgICAgICAuc3RvcnktaW1hZ2UgewogICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMTVweDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5jYXJvdXNlbC1uYXYgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIH0KCiAgICAgICAgLm5hdi1kb3QgewogICAgICAgICAgICB3aWR0aDogMTBweDsKICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNjY2M7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5uYXYtZG90LmFjdGl2ZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICAgICAgfQoKICAgICAgICAvKiBBY2hpZXZlbWVudCBBbmltYXRpb24gKi8KICAgICAgICAuYWNoaWV2ZW1lbnQtcG9wdXAgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIGJvdHRvbTogMjBweDsKICAgICAgICAgICAgcmlnaHQ6IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDI1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsMCwwLDAuMSk7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEyMCUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlOwogICAgICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICAgIH0KCiAgICAgICAgLmFjaGlldmVtZW50LXBvcHVwLnNob3cgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgfQoKICAgICAgICAuYWNoaWV2ZW1lbnQtaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICB9CgogICAgICAgIC8qIFByb2dyYW0gUHJldmlldyBNb2RhbCAqLwogICAgICAgIC5wcmV2aWV3LW1vZGFsIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC44KTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICAgIH0KCiAgICAgICAgLnByZXZpZXctbW9kYWwuYWN0aXZlIHsKICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKICAgICAgICB9CgogICAgICAgIC5wcmV2aWV3LWNvbnRlbnQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICAgICAgcGFkZGluZzogMzBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA4MDBweDsKICAgICAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgICAgICAgbWF4LWhlaWdodDogOTB2aDsKICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLnByZXZpZXctbW9kYWwuYWN0aXZlIC5wcmV2aWV3LWNvbnRlbnQgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAuY2xvc2UtcHJldmlldyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAyMHB4OwogICAgICAgICAgICByaWdodDogMjBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0ic3RvcnktY2Fyb3VzZWwiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcm91c2VsLXRyYWNrIj4KICAgICAgICAgICAgPCEtLSBTdWNjZXNzIHN0b3J5IGNhcmRzIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQgLS0+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2Fyb3VzZWwtbmF2Ij4KICAgICAgICAgICAgPCEtLSBOYXZpZ2F0aW9uIGRvdHMgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdCAtLT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L3NlY3Rpb24+Cgo8IS0tIEFjaGlldmVtZW50IFN5c3RlbSAtLT4KPGRpdiBpZD0iYWNoaWV2ZW1lbnQtcG9wdXAiIGNsYXNzPSJhY2hpZXZlbWVudC1wb3B1cCI+CiAgICA8c3BhbiBjbGFzcz0iYWNoaWV2ZW1lbnQtaWNvbiI+8J+Phjwvc3Bhbj4KICAgIDxkaXYgY2xhc3M9ImFjaGlldmVtZW50LXRleHQiPgogICAgICAgIDxoND5BY2hpZXZlbWVudCBVbmxvY2tlZCE8L2g0PgogICAgICAgIDxwPllvdSd2ZSByZWFjaGVkIGEgbmV3IG1pbGVzdG9uZSE8L3A+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIFByb2dyYW0gUHJldmlldyBNb2RhbCAtLT4KPGRpdiBpZD0icHJldmlldy1tb2RhbCIgY2xhc3M9InByZXZpZXctbW9kYWwiPgogICAgPGJ1dHRvbiBjbGFzcz0iY2xvc2UtcHJldmlldyIgb25jbGljaz0iY2xvc2VQcmV2aWV3KCkiPsOXPC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWNvbnRlbnQiPgogICAgICAgIDwhLS0gUHJldmlldyBjb250ZW50IHdpbGwgYmUgbG9hZGVkIGhlcmUgLS0+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0PgogICAgLy8gU3VjY2VzcyBTdG9yaWVzIENhcm91c2VsCiAgICBjb25zdCBzdG9yaWVzID0gWwogICAgICAgIHsKICAgICAgICAgICAgbmFtZTogIlNhcmFoIE0uIiwKICAgICAgICAgICAgYWdlOiAxMiwKICAgICAgICAgICAgc3Rvcnk6ICJTdGFydGVkIG15IGZpcnN0IG9ubGluZSBidXNpbmVzcyEiLAogICAgICAgICAgICBpbWFnZTogIi9hcGkvcGxhY2Vob2xkZXIvMTAwLzEwMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgbmFtZTogIkpvaG4gSy4iLAogICAgICAgICAgICBhZ2U6IDE1LAogICAgICAgICAgICBzdG9yeTogIkxhdW5jaGVkIGEgY29tbXVuaXR5IHByb2plY3QhIiwKICAgICAgICAgICAgaW1hZ2U6ICIvYXBpL3BsYWNlaG9sZGVyLzEwMC8xMDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIG5hbWU6ICJMaXNhIFQuIiwKICAgICAgICAgICAgYWdlOiA4LAogICAgICAgICAgICBzdG9yeTogIlNhdmVkIGZvciBteSBmaXJzdCBpbnZlc3RtZW50ISIsCiAgICAgICAgICAgIGltYWdlOiAiL2FwaS9wbGFjZWhvbGRlci8xMDAvMTAwIgogICAgICAgIH0KICAgIF07CgogICAgZnVuY3Rpb24gaW5pdENhcm91c2VsKCkgewogICAgICAgIGNvbnN0IHRyYWNrID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNhcm91c2VsLXRyYWNrJyk7CiAgICAgICAgY29uc3QgbmF2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNhcm91c2VsLW5hdicpOwogICAgICAgIAogICAgICAgIC8vIEdlbmVyYXRlIHN0b3J5IGNhcmRzCiAgICAgICAgc3Rvcmllcy5mb3JFYWNoKChzdG9yeSwgaW5kZXgpID0+IHsKICAgICAgICAgICAgY29uc3QgY2FyZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBjYXJkLmNsYXNzTmFtZSA9IGBzdG9yeS1jYXJkICR7aW5kZXggPT09IDAgPyAnYWN0aXZlJyA6ICcnfWA7CiAgICAgICAgICAgIGNhcmQuaW5uZXJIVE1MID0gYAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RvcnktaW1hZ2UiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIke3N0b3J5LmltYWdlfSIgYWx0PSIke3N0b3J5Lm5hbWV9Ij4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGgzPiR7c3RvcnkubmFtZX0sICR7c3RvcnkuYWdlfTwvaDM+CiAgICAgICAgICAgICAgICA8cD4ke3N0b3J5LnN0b3J5fTwvcD4KICAgICAgICAgICAgYDsKICAgICAgICAgICAgdHJhY2suYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgICAgICAgICAvLyBHZW5lcmF0ZSBuYXYgZG90CiAgICAgICAgICAgIGNvbnN0IGRvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBkb3QuY2xhc3NOYW1lID0gYG5hdi1kb3QgJHtpbmRleCA9PT0gMCA/ICdhY3RpdmUnIDogJyd9YDsKICAgICAgICAgICAgZG90Lm9uY2xpY2sgPSAoKSA9PiBtb3ZlVG9TbGlkZShpbmRleCk7CiAgICAgICAgICAgIG5hdi5hcHBlbmRDaGlsZChkb3QpOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIEFjaGlldmVtZW50IFN5c3RlbQogICAgZnVuY3Rpb24gc2hvd0FjaGlldmVtZW50KHRpdGxlLCBkZXNjcmlwdGlvbikgewogICAgICAgIGNvbnN0IHBvcHVwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjaGlldmVtZW50LXBvcHVwJyk7CiAgICAgICAgcG9wdXAucXVlcnlTZWxlY3RvcignaDQnKS50ZXh0Q29udGVudCA9IHRpdGxlOwogICAgICAgIHBvcHVwLnF1ZXJ5U2VsZWN0b3IoJ3AnKS50ZXh0Q29udGVudCA9IGRlc2NyaXB0aW9uOwogICAgICAgIHBvcHVwLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICAgICAgICAKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgcG9wdXAuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpOwogICAgICAgIH0sIDMwMDApOwogICAgfQoKICAgIC8vIFByb2dyYW0gUHJldmlldwogICAgZnVuY3Rpb24gc2hvd1ByZXZpZXcocHJvZ3JhbSkgewogICAgICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXZpZXctbW9kYWwnKTsKICAgICAgICBjb25zdCBjb250ZW50ID0gbW9kYWwucXVlcnlTZWxlY3RvcignLnByZXZpZXctY29udGVudCcpOwogICAgICAgIAogICAgICAgIC8vIExvYWQgcHJvZ3JhbSBjb250ZW50CiAgICAgICAgY29udGVudC5pbm5lckhUTUwgPSBgCiAgICAgICAgICAgIDxoMj4ke3Byb2dyYW0ubmFtZX08L2gyPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmV2aWV3LWRldGFpbHMiPgogICAgICAgICAgICAgICAgJHtwcm9ncmFtLmRlc2NyaXB0aW9ufQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnV0dG9uIiBvbmNsaWNrPSJzZWxlY3RQcm9ncmFtKCcke3Byb2dyYW0uaWR9JykiPgogICAgICAgICAgICAgICAgQ2hvb3NlIFRoaXMgUHJvZ3JhbQogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICBgOwogICAgICAgIAogICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsb3NlUHJldmlldygpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJldmlldy1tb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgfQoKICAgIC8vIEluaXRpYWxpemUgZXZlcnl0aGluZyB3aGVuIGRvY3VtZW50IGxvYWRzCiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaW5pdENhcm91c2VsKCk7CiAgICAgICAgCiAgICAgICAgLy8gRGVtbyBhY2hpZXZlbWVudAogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICBzaG93QWNoaWV2ZW1lbnQoCiAgICAgICAgICAgICAgICAiV2VsY29tZSEiLAogICAgICAgICAgICAgICAgIllvdSd2ZSB0YWtlbiB5b3VyIGZpcnN0IHN0ZXAgdG93YXJkIHN1Y2Nlc3MhIgogICAgICAgICAgICApOwogICAgICAgIH0sIDIwMDApOwogICAgfSk7Cjwvc2NyaXB0Pgo8L2h0bWw+CjwhLS0gUHJldmlvdXMgY29kZSByZW1haW5zIGludGFjdCwgYWRkaW5nIGVuaGFuY2VkIGZlYXR1cmVzIC0tPgoKPHN0eWxlPgovKiBUaGVtZSBDdXN0b21pemF0aW9uIFBhbmVsICovCi50aGVtZS1wYW5lbCB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICByaWdodDogLTMwMHB4OwogICAgdG9wOiAwOwogICAgd2lkdGg6IDMwMHB4OwogICAgaGVpZ2h0OiAxMDB2aDsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgYm94LXNoYWRvdzogLTJweCAwIDEwcHggcmdiYSgwLDAsMCwwLjEpOwogICAgdHJhbnNpdGlvbjogcmlnaHQgMC4zcyBlYXNlOwogICAgei1pbmRleDogMTEwMDsKICAgIHBhZGRpbmc6IDIwcHg7Cn0KCi50aGVtZS1wYW5lbC5hY3RpdmUgewogICAgcmlnaHQ6IDA7Cn0KCi5jb2xvci1waWNrZXIgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICBnYXA6IDEwcHg7CiAgICBtYXJnaW46IDE1cHggMDsKfQoKLmNvbG9yLW9wdGlvbiB7CiAgICB3aWR0aDogNDBweDsKICAgIGhlaWdodDogNDBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLmNvbG9yLW9wdGlvbjpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7Cn0KCi8qIEludGVyYWN0aXZlIERhc2hib2FyZCAqLwouZGFzaGJvYXJkIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBtYXJnaW46IDIwcHggMDsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsMCwwLDAuMSk7Cn0KCi5wcm9ncmVzcy1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTsKICAgIGdhcDogMjBweDsKICAgIG1hcmdpbi10b3A6IDIwcHg7Cn0KCi5wcm9ncmVzcy1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNlY29uZGFyeSk7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnByb2dyZXNzLWNpcmNsZSB7CiAgICB3aWR0aDogODBweDsKICAgIGhlaWdodDogODBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJhY2tncm91bmQ6IGNvbmljLWdyYWRpZW50KHZhcigtLXByaW1hcnkpIHZhcigtLXByb2dyZXNzKSwgI2RkZCAwZGVnKTsKICAgIG1hcmdpbjogMCBhdXRvIDE1cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi8qIEFjaGlldmVtZW50IFN5c3RlbSAqLwouYWNoaWV2ZW1lbnQtd2FsbCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTUwcHgsIDFmcikpOwogICAgZ2FwOiAxNXB4OwogICAgcGFkZGluZzogMjBweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNlY29uZGFyeSk7CiAgICBib3JkZXItcmFkaXVzOiAxNXB4Owp9CgouYWNoaWV2ZW1lbnQtYmFkZ2UgewogICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICBwYWRkaW5nOiAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5hY2hpZXZlbWVudC1iYWRnZTpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoMCwwLDAsMC4xKTsKfQoKLyogVmlkZW8gRGVtbyBTZWN0aW9uICovCi52aWRlby1zaG93Y2FzZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nLXRvcDogNTYuMjUlOyAvKiAxNjo5IEFzcGVjdCBSYXRpbyAqLwogICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5KTsKICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgbWFyZ2luOiAyMHB4IDA7Cn0KCi52aWRlby1wbGFjZWhvbGRlciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB2YXIoLS1wcmltYXJ5KSwgdmFyKC0tYWNjZW50KSk7CiAgICBjb2xvcjogd2hpdGU7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi8qIFBhcmVudC9UZWFjaGVyIFBvcnRhbCAqLwoucG9ydGFsLXNlY3Rpb24gewogICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICBwYWRkaW5nOiAzMHB4OwogICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgIG1hcmdpbjogMjBweCAwOwp9CgoucmVzb3VyY2UtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNTBweCwgMWZyKSk7CiAgICBnYXA6IDIwcHg7CiAgICBtYXJnaW4tdG9wOiAyMHB4Owp9CgoucmVzb3VyY2UtY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zZWNvbmRhcnkpOwogICAgcGFkZGluZzogMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgoucmVzb3VyY2UtY2FyZDpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQpOwp9Cjwvc3R5bGU+Cgo8IS0tIEludGVyYWN0aXZlIERhc2hib2FyZCAtLT4KPGRpdiBjbGFzcz0iZGFzaGJvYXJkIj4KICAgIDxoMj5Zb3VyIFZpc2lvbiBCb2FyZCBKb3VybmV5PC9oMj4KICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWdyaWQiPgogICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWNhcmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1jaXJjbGUiIHN0eWxlPSItLXByb2dyZXNzOiA3NSUiPgogICAgICAgICAgICAgICAgPHNwYW4+NzUlPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGgzPkdvYWxzIFNldDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtY2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWNpcmNsZSIgc3R5bGU9Ii0tcHJvZ3Jlc3M6IDYwJSI+CiAgICAgICAgICAgICAgICA8c3Bhbj42MCU8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8aDM+UHJvZ3Jlc3M8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWNhcmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1jaXJjbGUiIHN0eWxlPSItLXByb2dyZXNzOiA5MCUiPgogICAgICAgICAgICAgICAgPHNwYW4+OTAlPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGgzPkFjaGlldmVtZW50czwvaDM+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIEFjaGlldmVtZW50IFdhbGwgLS0+CjxkaXYgY2xhc3M9ImFjaGlldmVtZW50LXdhbGwiPgogICAgPCEtLSBBY2hpZXZlbWVudCBiYWRnZXMgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdCAtLT4KPC9kaXY+Cgo8IS0tIFZpZGVvIERlbW8gU2VjdGlvbiAtLT4KPGRpdiBjbGFzcz0idmlkZW8tc2hvd2Nhc2UiPgogICAgPGRpdiBjbGFzcz0idmlkZW8tcGxhY2Vob2xkZXIiIG9uY2xpY2s9InBsYXlEZW1vKCkiPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtcGxheSI+PC9pPgogICAgICAgIDxzcGFuPldhdGNoIEhvdyBJdCBXb3Jrczwvc3Bhbj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjwhLS0gUGFyZW50L1RlYWNoZXIgUG9ydGFsIC0tPgo8ZGl2IGNsYXNzPSJwb3J0YWwtc2VjdGlvbiI+CiAgICA8aDI+UmVzb3VyY2VzIGZvciBQYXJlbnRzICYgVGVhY2hlcnM8L2gyPgogICAgPGRpdiBjbGFzcz0icmVzb3VyY2UtZ3JpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0icmVzb3VyY2UtY2FyZCIgb25jbGljaz0ib3BlblJlc291cmNlKCdndWlkZScpIj4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1ib29rIj48L2k+CiAgICAgICAgICAgIDxoMz5JbXBsZW1lbnRhdGlvbiBHdWlkZTwvaDM+CiAgICAgICAgICAgIDxwPkhlbHAgeW91bmcgZW50cmVwcmVuZXVycyBzdWNjZWVkPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InJlc291cmNlLWNhcmQiIG9uY2xpY2s9Im9wZW5SZXNvdXJjZSgnYWN0aXZpdGllcycpIj4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS10YXNrcyI+PC9pPgogICAgICAgICAgICA8aDM+QWN0aXZpdHkgSWRlYXM8L2gzPgogICAgICAgICAgICA8cD5FbmdhZ2luZyBleGVyY2lzZXMgYW5kIHByb2plY3RzPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InJlc291cmNlLWNhcmQiIG9uY2xpY2s9Im9wZW5SZXNvdXJjZSgndHJhY2tpbmcnKSI+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtY2hhcnQtbGluZSI+PC9pPgogICAgICAgICAgICA8aDM+UHJvZ3Jlc3MgVHJhY2tpbmc8L2gzPgogICAgICAgICAgICA8cD5Nb25pdG9yIGFuZCBzdXBwb3J0IGdyb3d0aDwvcD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjxzY3JpcHQ+Ci8vIEFkZGluZyBpbnRlcmFjdGl2ZSBmdW5jdGlvbmFsaXR5CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKICAgIC8vIEluaXRpYWxpemUgQWNoaWV2ZW1lbnQgU3lzdGVtCiAgICBpbml0QWNoaWV2ZW1lbnRzKCk7CiAgICAKICAgIC8vIFNldHVwIFByb2dyZXNzIFRyYWNraW5nCiAgICBpbml0UHJvZ3Jlc3MoKTsKICAgIAogICAgLy8gSW5pdGlhbGl6ZSBSZXNvdXJjZSBQb3J0YWwKICAgIGluaXRSZXNvdXJjZXMoKTsKfSk7CgovLyBBY2hpZXZlbWVudCBTeXN0ZW0KZnVuY3Rpb24gaW5pdEFjaGlldmVtZW50cygpIHsKICAgIGNvbnN0IGFjaGlldmVtZW50cyA9IFsKICAgICAgICB7IGlkOiAnZmlyc3QtZ29hbCcsIHRpdGxlOiAnR29hbCBTZXR0ZXInLCBpY29uOiAn8J+OrycsIGRlc2NyaXB0aW9uOiAnU2V0IHlvdXIgZmlyc3QgZ29hbCcgfSwKICAgICAgICB7IGlkOiAndmlzaW9uLWNvbXBsZXRlJywgdGl0bGU6ICdWaXNpb25hcnknLCBpY29uOiAn8J+MnycsIGRlc2NyaXB0aW9uOiAnQ29tcGxldGUgeW91ciB2aXNpb24gYm9hcmQnIH0sCiAgICAgICAgeyBpZDogJ3RlYW0tcGxheWVyJywgdGl0bGU6ICdUZWFtIFBsYXllcicsIGljb246ICfwn6SdJywgZGVzY3JpcHRpb246ICdIZWxwIGFub3RoZXIgZW50cmVwcmVuZXVyJyB9LAogICAgICAgIC8vIEFkZCBtb3JlIGFjaGlldmVtZW50cwogICAgXTsKCiAgICBjb25zdCB3YWxsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFjaGlldmVtZW50LXdhbGwnKTsKICAgIGFjaGlldmVtZW50cy5mb3JFYWNoKGFjaGlldmVtZW50ID0+IHsKICAgICAgICBjb25zdCBiYWRnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGJhZGdlLmNsYXNzTmFtZSA9ICdhY2hpZXZlbWVudC1iYWRnZSc7CiAgICAgICAgYmFkZ2UuaW5uZXJIVE1MID0gYAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJiYWRnZS1pY29uIj4ke2FjaGlldmVtZW50Lmljb259PC9kaXY+CiAgICAgICAgICAgIDxoND4ke2FjaGlldmVtZW50LnRpdGxlfTwvaDQ+CiAgICAgICAgICAgIDxwPiR7YWNoaWV2ZW1lbnQuZGVzY3JpcHRpb259PC9wPgogICAgICAgIGA7CiAgICAgICAgYmFkZ2Uub25jbGljayA9ICgpID0+IHNob3dBY2hpZXZlbWVudERldGFpbHMoYWNoaWV2ZW1lbnQpOwogICAgICAgIHdhbGwuYXBwZW5kQ2hpbGQoYmFkZ2UpOwogICAgfSk7Cn0KCi8vIFByb2dyZXNzIFRyYWNraW5nCmZ1bmN0aW9uIGluaXRQcm9ncmVzcygpIHsKICAgIC8vIFNpbXVsYXRlIHByb2dyZXNzIHVwZGF0ZXMKICAgIHNldEludGVydmFsKCgpID0+IHsKICAgICAgICB1cGRhdGVQcm9ncmVzcygpOwogICAgfSwgNTAwMCk7Cn0KCmZ1bmN0aW9uIHVwZGF0ZVByb2dyZXNzKCkgewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnByb2dyZXNzLWNpcmNsZScpLmZvckVhY2goY2lyY2xlID0+IHsKICAgICAgICBjb25zdCBuZXdQcm9ncmVzcyA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMCk7CiAgICAgICAgY2lyY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLXByb2dyZXNzJywgYCR7bmV3UHJvZ3Jlc3N9JWApOwogICAgICAgIGNpcmNsZS5xdWVyeVNlbGVjdG9yKCdzcGFuJykudGV4dENvbnRlbnQgPSBgJHtuZXdQcm9ncmVzc30lYDsKICAgIH0pOwp9CgovLyBSZXNvdXJjZSBQb3J0YWwKZnVuY3Rpb24gaW5pdFJlc291cmNlcygpIHsKICAgIC8vIEluaXRpYWxpemUgcmVzb3VyY2UgYWNjZXNzIGFuZCB0cmFja2luZwp9CgpmdW5jdGlvbiBvcGVuUmVzb3VyY2UodHlwZSkgewogICAgLy8gSGFuZGxlIHJlc291cmNlIGFjY2VzcwogICAgc2hvd05vdGlmaWNhdGlvbihgT3BlbmluZyAke3R5cGV9IHJlc291cmNlLi4uYCk7Cn0KCi8vIFZpZGVvIERlbW8KZnVuY3Rpb24gcGxheURlbW8oKSB7CiAgICAvLyBIYW5kbGUgdmlkZW8gcGxheWJhY2sKICAgIHNob3dOb3RpZmljYXRpb24oJ0RlbW8gY29taW5nIHNvb24hJyk7Cn0KCi8vIFRoZW1lIEN1c3RvbWl6YXRpb24KZnVuY3Rpb24gaW5pdFRoZW1lQ3VzdG9taXphdGlvbigpIHsKICAgIC8vIEFkZCB0aGVtZSBjdXN0b21pemF0aW9uIGZ1bmN0aW9uYWxpdHkKfQo8L3NjcmlwdD4KPC9odG1sPg==","embed":""}
Transform Young Dreams into Reality
Empowering the next generation of entrepreneurs with innovative vision board tools
Start Your JourneyChoose Your Path
✨
DreamStart
Ages 5-9
- Fun Goal Setting
- Interactive Dreams Board
- Achievement Stickers
🎯
AspireQuest
Ages 10-13
- Goal Tracking
- Progress Journal
- Team Challenges
🚀
FutureForge
Ages 14-17
- Business Planning
- Mentor Connection
- Project Management
🎯
Goal Setting
Interactive tools to set and track meaningful goals
📈
Progress Tracking
Visual progress monitoring and celebrations
🤝
Community Support
Connect with other young entrepreneurs
Ready to Start Your Journey?
Join thousands of young entrepreneurs building their future
🏆
Achievement Unlocked!
You've reached a new milestone!
Your Vision Board Journey
75%
Goals Set
60%
Progress
90%
Achievements
Watch How It Works
Resources for Parents & Teachers
Implementation Guide
Help young entrepreneurs succeed
Activity Ideas
Engaging exercises and projects
Progress Tracking
Monitor and support growth