diff --git a/asset-manifest.json b/asset-manifest.json index e2c3c6b..7ad4ea3 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { - "main.css": "/static/css/main.8baa51c1.chunk.css", - "main.js": "/static/js/main.7380a68e.chunk.js", - "main.js.map": "/static/js/main.7380a68e.chunk.js.map", + "main.css": "/static/css/main.b773a0ed.chunk.css", + "main.js": "/static/js/main.6a39483e.chunk.js", + "main.js.map": "/static/js/main.6a39483e.chunk.js.map", "runtime~main.js": "/static/js/runtime~main.a8a9905a.js", "runtime~main.js.map": "/static/js/runtime~main.a8a9905a.js.map", "static/js/2.8c5995bc.chunk.js": "/static/js/2.8c5995bc.chunk.js", "static/js/2.8c5995bc.chunk.js.map": "/static/js/2.8c5995bc.chunk.js.map", "index.html": "/index.html", - "precache-manifest.4b8a6d7d0fef430d2f2f4e341e17e113.js": "/precache-manifest.4b8a6d7d0fef430d2f2f4e341e17e113.js", + "precache-manifest.b34539171d6ed4f7f2a2e0fd28367c40.js": "/precache-manifest.b34539171d6ed4f7f2a2e0fd28367c40.js", "service-worker.js": "/service-worker.js", - "static/css/main.8baa51c1.chunk.css.map": "/static/css/main.8baa51c1.chunk.css.map" + "static/css/main.b773a0ed.chunk.css.map": "/static/css/main.b773a0ed.chunk.css.map" } } \ No newline at end of file diff --git a/index.html b/index.html index ffacc71..eca2fc3 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -BitwiseCmd
\ No newline at end of file +BitwiseCmd
\ No newline at end of file diff --git a/precache-manifest.4b8a6d7d0fef430d2f2f4e341e17e113.js b/precache-manifest.b34539171d6ed4f7f2a2e0fd28367c40.js similarity index 57% rename from precache-manifest.4b8a6d7d0fef430d2f2f4e341e17e113.js rename to precache-manifest.b34539171d6ed4f7f2a2e0fd28367c40.js index 8da81b9..de1bf97 100644 --- a/precache-manifest.4b8a6d7d0fef430d2f2f4e341e17e113.js +++ b/precache-manifest.b34539171d6ed4f7f2a2e0fd28367c40.js @@ -1,19 +1,19 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "63af985edb787cee979db9bdc399d191", + "revision": "5b34cc1d056e0c01d7bbc4e8240b65ba", "url": "/index.html" }, { - "revision": "99524fad47c9f3b77be3", - "url": "/static/css/main.8baa51c1.chunk.css" + "revision": "aa22607711aa7d1817f3", + "url": "/static/css/main.b773a0ed.chunk.css" }, { "revision": "64b3865332b24c2558a8", "url": "/static/js/2.8c5995bc.chunk.js" }, { - "revision": "99524fad47c9f3b77be3", - "url": "/static/js/main.7380a68e.chunk.js" + "revision": "aa22607711aa7d1817f3", + "url": "/static/js/main.6a39483e.chunk.js" }, { "revision": "42ac5946195a7306e2a5", diff --git a/service-worker.js b/service-worker.js index bb4f04f..66976c2 100644 --- a/service-worker.js +++ b/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/precache-manifest.4b8a6d7d0fef430d2f2f4e341e17e113.js" + "/precache-manifest.b34539171d6ed4f7f2a2e0fd28367c40.js" ); self.addEventListener('message', (event) => { diff --git a/static/css/main.8baa51c1.chunk.css b/static/css/main.8baa51c1.chunk.css deleted file mode 100644 index f77eb3b..0000000 --- a/static/css/main.8baa51c1.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -.help .section{margin-bottom:10px}.help .panel-container{overflow:hidden}.help .left-panel{float:left;margin-right:20px}.help .right-panel{float:left}.help .section-title{opacity:.8}.changelog .item{margin-top:2em}.changelog .item-new .date{font-weight:700;text-decoration:underline}.ip-address-info{padding-top:1em;font-size:.85em;vertical-align:middle;display:none}body{padding:0;margin:0;overflow:hidden}.app-root,body,html{height:100%}.app-root{font-family:Verdana;font-size:.8em;margin:0;padding:20px 100px 0;overflow:auto}code{font-size:1.2em;font-weight:700}.header-cmd{color:#c5c5c5}.top-links{position:absolute;right:10px;top:10px;list-style-type:none;margin:0}.top-links li{float:left}.top-links a{display:inline-block;padding:10px 15px}.top-links .icon{margin-right:5px}.mono{font-family:monospace;font-size:1.3em}.expressionInput{width:500px;padding:3px;border:1px solid #d3d3d3}.result{margin:10px 10px 30px}.result .input{margin-bottom:10px}.result .content{padding-left:10px}.result .cur{margin-right:5px}.hashLink{text-decoration:none;margin-left:5px;visibility:hidden}.hashLink:hover{text-decoration:underline;margin-left:5px}.result:hover .hashLink{visibility:visible}.expression .label{font-weight:700;padding-right:5px;text-align:right}.expression .bin{letter-spacing:3px}.expression .byte{margin:0 3px}.expression-result td{border-top:1px dotted grey}.expression{font-size:1.5em;font-family:monospace}.expression .prefix{font-weight:400;display:none;font-size:.9em}.expression .other{font-size:.9em}.expression .sign{text-align:right}.flipable{cursor:pointer;opacity:1}.flipable:hover{opacity:.8}.hex .prefix{display:inline}.help{padding:10px}.help ul{list-style-type:none;margin:0;padding:0}.help p{margin-top:0}.indicator{padding:2px 5px;font-family:monospace;font-size:1.3em;background:transparent;border:none;cursor:pointer}.error{color:maroon}.soft{opacity:.7}#view{padding:10px}.cur{color:#d3d3d3}.icon{width:16px;height:16px;display:inline-block}.light .twitter{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAEG0lEQVQ4EQEQBO/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAKEhISWBUVFU5dXV0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxcXIjg4OAQAAAAAAAAAAAAAAAAAAAAAOjo6AgUFBbUBAQH9CwsLoxwcHA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhwAwMD4wcHB34YGBgUAAAAAAAAAAAJCQlmAAAA/wAAAP8AAAD/AgIC4w8PDyYAAAAAAAAAAAAAAAAAAAAAACMjIw4FBQXRAAAA/wEBAfMICAh6NDQ0BgMDA98AAAD/AAAA/wAAAP8AAAD/BAQEwwAAAAAAAAAAAAAAAAAAAAAAGxsbDgMDA+MAAAD/AAAA/wAAAP8FBQXTAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwMZBEREVAAAAAAAAAAAAAAAAAAERERQAMDA/MAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8EBATrERERfAAAAAAAAAAAAAAAAAAPDw8mBAQEwQICAvkAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wsLC2QXFxcYAAAAAAAAAAAAAAAAAAAAAAAXFxcaAQEB+wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8FBQXDAAAAAAAAAAAALCwsHAAAAAAAAAAAAAAAAAAAAAAMDAyXAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB9w4ODjIAAAAAAAAAAAAREREyCAgIpwUFBYEGBgaFBAQEywAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAfULCwtOAAAAAAAAAAAAAAAAAAAAAAASEhIgBQUFrwAAAP0AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAfsFBQWtERERJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRUVIggICGgGBgaRBwcHnQUFBYsJCQleGRkZGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5C2TxxrzdBwAAAABJRU5ErkJggg==)}.dark .twitter,.midnight .twitter{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAEG0lEQVQ4EQEQBO/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw8PAK+Pj4WPb29k7V1dUCAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Iubm5gQAAAAAAAAAAAAAAAAAAAAA5+fnAvz8/LX+/v79+vr6o/Pz8w4AAAAAAAAAAAAAAAAAAAAAAAAAAAD7+/tw/f394/z8/H709PQUAAAAAAAAAAD7+/tm/////////////////f394/n5+SYAAAAAAAAAAAAAAAAAAAAAAPDw8A78/PzR//////7+/vP7+/t66enpBv39/d///////////////////////f39wwAAAAAAAAAAAAAAAAAAAAAA9PT0Dv39/eP////////////////9/f3T///////////////////////////+/v7/+fn5ZPf391AAAAAAAAAAAAAAAAAA9/f3QP39/fP////////////////////////////////////////////////9/f3r+Pj4fAAAAAAAAAAAAAAAAAD5+fkm/f39wf7+/vn//////////////////////////////////////v7+//r6+mT19fUYAAAAAAAAAAAAAAAAAAAAAAD29vYa/v7++//////////////////////////////////////9/f3DAAAAAAAAAAAA7OzsHAAAAAAAAAAAAAAAAAAAAAD5+fmX/////////////////////////////////v7+9/n5+TIAAAAAAAAAAAD5+fky+/v7p/z8/IH8/PyF/f39y/7+/v////////////////////////////7+/vX6+vpOAAAAAAAAAAAAAAAAAAAAAAD39/cg/Pz8r/7+/v3///////////////////////////7+/vv8/Pyt+Pj4JgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Ivv7+2j8/PyR/Pz8nfz8/Iv7+/te9fX1GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvO8cw5QWWiwAAAABJRU5ErkJggg==)}.light .feedback{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAEG0lEQVQ4EQEQBO/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMjwUFBdkFBQXZBQUF2QUFBdkFBQXZBQUF2QUFBdkFBQXZBQUF2QUFBdkFBQXZBQUF2QwMDKkAAAAAABAQEEwZGRkKBAQEvwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwPTFxcXFg4ODjwAAAAA/QsLC2IcHBwKBAQEvQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD0RgYGBQLCwtEAQEB9QAAAAD/AAAA/QsLC2IgICAKBQUFvQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wMDA88YGBgUCwsLRAEBAfUAAAD/AAAAAP8AAAD/AAAA/QsLC2QiIiIKBQUFuwAAAP8AAAD/AAAA/wAAAP8DAwPPGBgYFAsLC0QBAQH1AAAA/wAAAP8AAAAA/wAAAP8AAAD/AAAA/QsLC2QiIiIKBQUFuwAAAP8AAAD/AwMDzxcXFxILCwtEAQEB9QAAAP8AAAD/AAAA/wAAAAD/AAAA/wAAAP8AAAD/AAAA/QsLC2QiIiIIBQUFtwMDA8sXFxcSCwsLRAEBAfUAAAD/AAAA/wAAAP8AAAD/AAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QsLC2QzMzMCNjY2BAsLC0QBAQH1AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QsLC2gODg5KAQEB9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ABgYG2QUFBesFBQXrBQUF6wUFBesFBQXrBQUF6wUFBesFBQXrBQUF6wUFBesFBQXrBQUF6wUFBesFBQXrBQUF3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf7qgd+N2lCAAAAABJRU5ErkJggg==)}.dark .feedback,.midnight .feedback{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAEG0lEQVQ4EQEQBO/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+fn5j/z8/Nn8/PzZ/Pz82fz8/Nn8/PzZ/Pz82fz8/Nn8/PzZ/Pz82fz8/Nn8/PzZ/Pz82fn5+akAAAAAAPj4+Ez29vYK/f39v//////////////////////////////////////////////////////9/f3T9PT0Fvn5+TwA/v7+/fn5+WL09PQK/f39vf///////////////////////////////////////////f390fPz8xT6+vpE/v7+9QD//////v7+/fn5+WLw8PAK/Pz8vf////////////////////////////////39/c/z8/MU+vr6RP7+/vX/////AP///////////v7+/fn5+WTv7+8K/Pz8u//////////////////////9/f3P8/PzFPr6+kT+/v71//////////8A/////////////////v7+/fn5+WTv7+8K/Pz8u////////////f39z/X19RL6+vpE/v7+9f///////////////wD//////////////////////v7+/fn5+WTw8PAI/f39t/39/cv19fUS+vr6RP7+/vX/////////////////////AP///////////////////////////v7+/fn5+WTo6OgC5eXlBPr6+kT+/v71//////////////////////////8A/////////////////////////////////v7+/fr6+mj5+flK/v7+9f///////////////////////////////wD/////////////////////////////////////////////////////////////////////////////////////AP////////////////////////////////////////////////////////////////////////////////////8A/Pz82fz8/Ov8/Pzr/Pz86/z8/Ov8/Pzr/Pz86/z8/Ov8/Pzr/Pz86/z8/Ov8/Pzr/Pz86/z8/Ov8/Pzr/Pz83wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk3tE0RV7ybwAAAABJRU5ErkJggg==)}.light .github{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJElEQVQ4jYVTv2sUQRh93zez2Utu52739o4YsBMEC8EyajRiGbCwESxS2OY/sLEU7BQtRAWLFKYQsbEVTRQLG8FagygkJre3u0dYs5f5YZHbsAT0XvXNN++9780MQziGMAwvM/NNIrpKzs0BgCPacs69tda+yLJsvc6nWi26UfRcSLl83LQOo/VqP01vATB1AxHH8YZkPv8/cQVt7ackSS4BMAIAulG0KoVY0lqvlwcHNwZpusVCnGSiXedc4oBgt9+/XY5Gd6Y877QUYmHa908V+/uvoJSan+313Gyv5zqdzuPxkADATG1oUKXtdDqPK75Sap59KVeOomn9bFzuAShqBnsAHAAYY9aqpi/lCoN5AQCMtSMiSiadn4g2jbUlAIB5gQHMjXe28zzfnGSQZdkPEP0eL+e4igagDYAnGQBgOBeOa8cO+AkAgqgdx/G1SeowDJcEcwuHk3+xADasc9jp943V+mUUBBf/JY6UuiCFeFprveNS60ej8gDOOZMNh8O8KD4wc6GUmq9Yvu9fYebdqUbjo2A+UfWttQ85z/Mvnu89me31pkIpF5vN5rIKgs/MvFMz2Gu1Wt16Gm3t/TRNvx79hTiK3hPzWWPtOWvtMM/zrMZX3TjeFswzAGCMed0fDK4f3ugYSZougmhNMH/3pPyG6nkP0azEWuu7lRgARD1WURRvphuNfRB1Pc9bLcvyDwC0222PnDtjgQfJYHCvrvkLSwbV+Bu4NT8AAAAASUVORK5CYII=)}.dark .github,.midnight .github{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAFTSURBVDiNjZK7LkRhFIW/GUGCB1AhYSRumV5UROVSKZVeYh7CxGQmxBsop9G4tWISiaBwCQUVyhFRmHyafTjGbXbyZ5+svfba+1/nh6ZQJ9SSeq4+xzlX19TxZn66sVNdVxvqkVpQl+IUAntTK2rHT80H6qM698eQueDsfxFRN6IwqHb9s+VQcMsAGXUCOAEWgQvgEtgCtoEBoA24BSaBFWAK6AWqQJ4w5ygmjPh/TAa3phazwGyoAUz/6vJnzESuArNZoA+4CnC5BYGEcw30ZwGBTIA9LQh0R84AZoF7IBfgaQsCZ5FzwF1iYg1Azav1Pwx8VaeCW1OLqOPxwuajMKyW1YtU4426Gb8cdSF6RgmgkjykZE91JyVwnMIHg1siBXaoe1FINnlICTRSk5/UXbX9izMhUo7VDtWXpvsfRq30rblJaEwtqmdhaD2+Vz/unIp3S9HIzk08XRcAAAAASUVORK5CYII=)}.light{background:#fafafa}.light a,.light a:visited{color:#222}.light .one{color:#000}.light .zero{color:#888}.light .indicator{color:#ddd}.light .on{color:#121212}.light .prefix{color:#888}.light .other{color:#bbb}.light .hashLink,.light .hashLink:visited{color:#ddd}.light .hashLink:hover{color:#888}.light ul.top-links li:hover{background:#ddd}.light .error{color:#da586d}.dark{background:#121212}.dark,.dark .expression{color:#fff}.dark .expressionInput{background:#121212;color:#fff}.dark a,.dark a:visited{color:#fff}.dark .indicator{color:#555}.dark .on{color:#fff}.dark .prefix,.dark .zero{color:#999}.dark .other{color:#444}.dark .hashLink,.dark .hashLink:visited{color:#333}.dark .hashLink:hover{color:#999}.dark ul.top-links li:hover{background:#333}.dark .error{color:#da586d}.midnight .header-cmd{color:#85a0ad}.midnight{background:#2c3e50}.midnight,.midnight .expression{color:#fff}.midnight .expressionInput{background:#2c3e50;color:#fff;border-color:#85a0ad}.dark a:visited,.midnight a{color:#fff}.midnight .indicator{color:#85a0ad}.midnight .on{color:#fff}.midnight .prefix,.midnight .zero{color:#85a0ad}.midnight .other{color:#9fbac7}.dark .hashLink:visited,.midnight .hashLink{color:#85a0ad}.midnight .hashLink:hover{color:#9fbac7}.midnight ul.top-links li:hover{background:#132537}.midnight .error{color:#da586d}.midnight .changelog .item-new .date{font-weight:700}@media (max-width:800px){.top-links .link-text{display:none}}.social-container{position:fixed;bottom:10px;right:10px}@media (max-width:700px){body{padding:10px}.expressionInput{width:500px}}@media (max-width:500px){.expressionInput{width:350px}.top-links a{display:inline-block;padding:5px 10px}}@media (max-width:350px){.expressionInput{width:200px}} -/*# sourceMappingURL=main.8baa51c1.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.8baa51c1.chunk.css.map b/static/css/main.8baa51c1.chunk.css.map deleted file mode 100644 index 5cf5f16..0000000 --- a/static/css/main.8baa51c1.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["HelpResultView.css","WhatsNewResultView.css","IpAddressView.css","index.css"],"names":[],"mappings":"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","file":"main.8baa51c1.chunk.css","sourcesContent":[".help .section {margin-bottom:10px;}\r\n.help .panel-container {overflow: hidden;}\r\n.help .left-panel {float:left; margin-right: 20px;}\r\n.help .right-panel {float:left;}\r\n.help .section-title {opacity: 0.8;}",".changelog .item { margin-top: 2em; }\r\n.changelog .item-new .date { font-weight: bold; text-decoration: underline;}",".ip-address-info { padding-top: 1em; font-size: 0.85em; vertical-align: middle; display: none;}","body { padding:0; margin:0; height: 100%; overflow: hidden; }\r\nhtml { height: 100% }\r\n\r\n.app-root { font-family: Verdana; font-size: 0.8em; margin: 0; padding: 20px 100px 0 100px; height: 100%; overflow: auto; }\r\ncode { font-size: 1.2em; font-weight: bold; }\r\n\r\n.header-cmd { color: #c5c5c5 }\r\n\r\n.top-links { position: absolute; right: 10px; top: 10px; list-style-type: none; margin: 0 }\r\n.top-links li { float: left; }\r\n.top-links a { display: inline-block; padding: 10px 15px}\r\n.top-links .icon { margin-right: 5px; }\r\n\r\n.mono { font-family: monospace; font-size: 1.3em }\r\n.expressionInput { width: 500px; padding: 3px; border: solid 1px lightgray; }\r\n\r\n.result { margin: 10px 10px 30px; }\r\n.result .input { margin-bottom: 10px; }\r\n.result .content { padding-left: 10px}\r\n.result .cur { margin-right: 5px; }\r\n\r\n.hashLink { text-decoration: none; margin-left: 5px; visibility: hidden }\r\n.hashLink:hover { text-decoration: underline; margin-left: 5px; }\r\n.result:hover .hashLink { visibility: visible }\r\n\r\n.expression .label { font-weight: bold; padding-right: 5px; text-align: right; }\r\n.expression .bin { letter-spacing: 3px; }\r\n.expression .byte { margin: 0 3px; }\r\n.expression-result td { border-top: dotted 1px gray; }\r\n.expression { font-size: 1.5em; font-family: monospace }\r\n.expression .prefix { font-weight: normal; display: none; font-size: 0.9em }\r\n.expression .other { font-size: 0.9em}\r\n.expression .sign { text-align: right}\r\n\r\n.flipable { cursor: pointer; opacity: 1 }\r\n.flipable { cursor: pointer; opacity: 1 }\r\n.flipable:hover { opacity: 0.8 }\r\n\r\n.hex .prefix { display: inline; }\r\n\r\n.help { padding: 10px; }\r\n.help ul { list-style-type: none; margin: 0; padding: 0; }\r\n.help p { margin-top: 0 }\r\n\r\n.indicator { padding: 2px 5px; font-family: monospace; font-size: 1.3em; background: transparent; border: none; cursor: pointer }\r\n.error { color: maroon; }\r\n\r\n.soft { opacity: 0.7 }\r\n\r\n#view { padding: 10px}\r\n\r\n.cur { color: lightgray; }\r\n\r\n.icon { width: 16px; height: 16px; display: inline-block; }\r\n.light .twitter { background: url('./img/twitter-light.png') }\r\n.dark .twitter { background: url('./img/twitter-dark.png') }\r\n.midnight .twitter { background: url('./img/twitter-dark.png') }\r\n\r\n.light .feedback { background: url('./img/feedback-light.png') }\r\n.dark .feedback { background: url('./img/feedback-dark.png') }\r\n.midnight .feedback { background: url('./img/feedback-dark.png') }\r\n\r\n.light .github { background: url('./img/github-light.png') }\r\n.dark .github { background: url('./img/github-dark.png') }\r\n.midnight .github { background: url('./img/github-dark.png') }\r\n\r\n/* Light */\r\n.light { background: #fafafa; }\r\n.light a, .light a:visited { color: #222; }\r\n.light .one { color: black; }\r\n.light .zero { color: #888; }\r\n.light .indicator { color: #ddd; }\r\n.light .on { color: #121212; }\r\n.light .prefix { color: #888}\r\n.light .other { color: #bbb }\r\n.light .hashLink, .light .hashLink:visited { color: #ddd }\r\n.light .hashLink:hover { color: #888 }\r\n.light ul.top-links li:hover { background: #ddd }\r\n.light .error { color: #da586d }\r\n\r\n/* Dark */\r\n.dark { background: #121212; color: white;}\r\n.dark .expression { color: white;}\r\n.dark .expressionInput { background: #121212; color: white; }\r\n.dark a, .dark a:visited { color: white; }\r\n.dark .indicator { color: #555; }\r\n.dark .on { color: white; }\r\n.dark .zero { color: #999;}\r\n.dark .prefix { color: #999}\r\n.dark .other { color: #444;}\r\n.dark .hashLink, .dark .hashLink:visited { color: #333 }\r\n.dark .hashLink:hover { color: #999 }\r\n.dark ul.top-links li:hover { background: #333 }\r\n.dark .error { color: #da586d}\r\n\r\n/*\r\n Midnight Theme\r\n*/\r\n.midnight .header-cmd { color: #85a0ad }\r\n.midnight { background: #2c3e50; color: white }\r\n.midnight .expression { color: white;}\r\n.midnight .expressionInput { background: #2c3e50; color: white; border-color: #85a0ad }\r\n.midnight a, .dark a:visited { color: white; }\r\n.midnight .indicator { color: #85a0ad; }\r\n.midnight .on { color: white; }\r\n.midnight .zero { color: #85a0ad;}\r\n.midnight .prefix { color: #85a0ad}\r\n.midnight .other { color: #9FBAC7;}\r\n.midnight .hashLink, .dark .hashLink:visited { color: #85a0ad }\r\n.midnight .hashLink:hover { color: #9FBAC7 }\r\n.midnight ul.top-links li:hover { background: #132537 }\r\n.midnight .error { color:#da586d}\r\n.midnight .changelog .item-new .date { font-weight: bold }\r\n\r\n/* Top Links Shrink */\r\n@media (max-width: 800px) {\r\n\r\n .top-links .link-text { display: none }\r\n}\r\n\r\n.social-container{ position:fixed; bottom:10px; right:10px }\r\n\r\n/* Remove margin space on body. Inline top links with header */\r\n@media (max-width: 700px) {\r\n body { padding: 10px; }\r\n .expressionInput { width: 500px; }\r\n}\r\n\r\n/* Further shrink */\r\n@media (max-width: 500px) {\r\n .expressionInput { width: 350px; }\r\n .top-links a { display: inline-block; padding: 5px 10px}\r\n}\r\n\r\n@media (max-width: 350px) {\r\n .expressionInput { width: 200px; }\r\n}"]} \ No newline at end of file diff --git a/static/css/main.b773a0ed.chunk.css b/static/css/main.b773a0ed.chunk.css new file mode 100644 index 0000000..175d891 --- /dev/null +++ b/static/css/main.b773a0ed.chunk.css @@ -0,0 +1,2 @@ +.help .section{margin-bottom:10px}.help .panel-container{overflow:hidden}.help .left-panel{float:left;margin-right:20px}.help .right-panel{float:left}.changelog .item{margin-top:2em}.changelog .item-new .date{font-weight:700;text-decoration:underline}.ip-address-info{padding-top:1em;font-size:.85em;vertical-align:middle;display:none}body{padding:0;margin:0;overflow:hidden}.app-root,body,html{height:100%}.app-root{font-family:Verdana;font-size:.8em;margin:0;padding:20px 100px 0;overflow:auto}code{font-size:1.2em;font-weight:700}.header-cmd{color:#c5c5c5}.top-links{position:absolute;right:10px;top:10px;list-style-type:none;margin:0}.top-links li{float:left}.top-links a{display:inline-block;padding:10px 15px}.top-links .icon{margin-right:5px}.mono{font-family:monospace;font-size:1.3em}.expressionInput{width:500px;padding:3px;border:1px solid #d3d3d3}.result{margin:10px 10px 30px}.result .input{margin-bottom:10px}.result .content{padding-left:10px}.result .cur{margin-right:5px}.hashLink{text-decoration:none;margin-left:5px;visibility:hidden}.hashLink:hover{text-decoration:underline;margin-left:5px}.result:hover .hashLink{visibility:visible}.expression .label{font-weight:700;padding-right:5px;text-align:right}.expression .bin{letter-spacing:3px}.expression .byte{margin:0 3px}.expression-result td{border-top:1px dotted grey}.expression{font-size:1.5em;font-family:monospace}.expression .prefix{font-weight:400;display:none;font-size:.9em}.expression .other{font-size:.9em}.expression .sign{text-align:right}.flipable{cursor:pointer;opacity:1}.flipable:hover{opacity:.8}.hex .prefix{display:inline}.help{padding:10px}.help ul{list-style-type:none;margin:0;padding:0}.help p{margin-top:0}.indicator{padding:2px 5px;font-family:monospace;font-size:1.3em;background:transparent;border:none;cursor:pointer}.error{color:maroon}.soft{opacity:.7}#view{padding:10px}.cur{color:#d3d3d3}.icon{width:16px;height:16px;display:inline-block}.light .twitter{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAEG0lEQVQ4EQEQBO/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAKEhISWBUVFU5dXV0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxcXIjg4OAQAAAAAAAAAAAAAAAAAAAAAOjo6AgUFBbUBAQH9CwsLoxwcHA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhwAwMD4wcHB34YGBgUAAAAAAAAAAAJCQlmAAAA/wAAAP8AAAD/AgIC4w8PDyYAAAAAAAAAAAAAAAAAAAAAACMjIw4FBQXRAAAA/wEBAfMICAh6NDQ0BgMDA98AAAD/AAAA/wAAAP8AAAD/BAQEwwAAAAAAAAAAAAAAAAAAAAAAGxsbDgMDA+MAAAD/AAAA/wAAAP8FBQXTAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwMZBEREVAAAAAAAAAAAAAAAAAAERERQAMDA/MAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8EBATrERERfAAAAAAAAAAAAAAAAAAPDw8mBAQEwQICAvkAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wsLC2QXFxcYAAAAAAAAAAAAAAAAAAAAAAAXFxcaAQEB+wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8FBQXDAAAAAAAAAAAALCwsHAAAAAAAAAAAAAAAAAAAAAAMDAyXAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB9w4ODjIAAAAAAAAAAAAREREyCAgIpwUFBYEGBgaFBAQEywAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAfULCwtOAAAAAAAAAAAAAAAAAAAAAAASEhIgBQUFrwAAAP0AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAfsFBQWtERERJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRUVIggICGgGBgaRBwcHnQUFBYsJCQleGRkZGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5C2TxxrzdBwAAAABJRU5ErkJggg==)}.dark .twitter,.midnight .twitter{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAEG0lEQVQ4EQEQBO/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw8PAK+Pj4WPb29k7V1dUCAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Iubm5gQAAAAAAAAAAAAAAAAAAAAA5+fnAvz8/LX+/v79+vr6o/Pz8w4AAAAAAAAAAAAAAAAAAAAAAAAAAAD7+/tw/f394/z8/H709PQUAAAAAAAAAAD7+/tm/////////////////f394/n5+SYAAAAAAAAAAAAAAAAAAAAAAPDw8A78/PzR//////7+/vP7+/t66enpBv39/d///////////////////////f39wwAAAAAAAAAAAAAAAAAAAAAA9PT0Dv39/eP////////////////9/f3T///////////////////////////+/v7/+fn5ZPf391AAAAAAAAAAAAAAAAAA9/f3QP39/fP////////////////////////////////////////////////9/f3r+Pj4fAAAAAAAAAAAAAAAAAD5+fkm/f39wf7+/vn//////////////////////////////////////v7+//r6+mT19fUYAAAAAAAAAAAAAAAAAAAAAAD29vYa/v7++//////////////////////////////////////9/f3DAAAAAAAAAAAA7OzsHAAAAAAAAAAAAAAAAAAAAAD5+fmX/////////////////////////////////v7+9/n5+TIAAAAAAAAAAAD5+fky+/v7p/z8/IH8/PyF/f39y/7+/v////////////////////////////7+/vX6+vpOAAAAAAAAAAAAAAAAAAAAAAD39/cg/Pz8r/7+/v3///////////////////////////7+/vv8/Pyt+Pj4JgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2Ivv7+2j8/PyR/Pz8nfz8/Iv7+/te9fX1GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvO8cw5QWWiwAAAABJRU5ErkJggg==)}.light .feedback{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAEG0lEQVQ4EQEQBO/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMjwUFBdkFBQXZBQUF2QUFBdkFBQXZBQUF2QUFBdkFBQXZBQUF2QUFBdkFBQXZBQUF2QwMDKkAAAAAABAQEEwZGRkKBAQEvwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwPTFxcXFg4ODjwAAAAA/QsLC2IcHBwKBAQEvQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD0RgYGBQLCwtEAQEB9QAAAAD/AAAA/QsLC2IgICAKBQUFvQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wMDA88YGBgUCwsLRAEBAfUAAAD/AAAAAP8AAAD/AAAA/QsLC2QiIiIKBQUFuwAAAP8AAAD/AAAA/wAAAP8DAwPPGBgYFAsLC0QBAQH1AAAA/wAAAP8AAAAA/wAAAP8AAAD/AAAA/QsLC2QiIiIKBQUFuwAAAP8AAAD/AwMDzxcXFxILCwtEAQEB9QAAAP8AAAD/AAAA/wAAAAD/AAAA/wAAAP8AAAD/AAAA/QsLC2QiIiIIBQUFtwMDA8sXFxcSCwsLRAEBAfUAAAD/AAAA/wAAAP8AAAD/AAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QsLC2QzMzMCNjY2BAsLC0QBAQH1AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QsLC2gODg5KAQEB9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ABgYG2QUFBesFBQXrBQUF6wUFBesFBQXrBQUF6wUFBesFBQXrBQUF6wUFBesFBQXrBQUF6wUFBesFBQXrBQUF3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf7qgd+N2lCAAAAABJRU5ErkJggg==)}.dark .feedback,.midnight .feedback{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAEG0lEQVQ4EQEQBO/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+fn5j/z8/Nn8/PzZ/Pz82fz8/Nn8/PzZ/Pz82fz8/Nn8/PzZ/Pz82fz8/Nn8/PzZ/Pz82fn5+akAAAAAAPj4+Ez29vYK/f39v//////////////////////////////////////////////////////9/f3T9PT0Fvn5+TwA/v7+/fn5+WL09PQK/f39vf///////////////////////////////////////////f390fPz8xT6+vpE/v7+9QD//////v7+/fn5+WLw8PAK/Pz8vf////////////////////////////////39/c/z8/MU+vr6RP7+/vX/////AP///////////v7+/fn5+WTv7+8K/Pz8u//////////////////////9/f3P8/PzFPr6+kT+/v71//////////8A/////////////////v7+/fn5+WTv7+8K/Pz8u////////////f39z/X19RL6+vpE/v7+9f///////////////wD//////////////////////v7+/fn5+WTw8PAI/f39t/39/cv19fUS+vr6RP7+/vX/////////////////////AP///////////////////////////v7+/fn5+WTo6OgC5eXlBPr6+kT+/v71//////////////////////////8A/////////////////////////////////v7+/fr6+mj5+flK/v7+9f///////////////////////////////wD/////////////////////////////////////////////////////////////////////////////////////AP////////////////////////////////////////////////////////////////////////////////////8A/Pz82fz8/Ov8/Pzr/Pz86/z8/Ov8/Pzr/Pz86/z8/Ov8/Pzr/Pz86/z8/Ov8/Pzr/Pz86/z8/Ov8/Pzr/Pz83wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk3tE0RV7ybwAAAABJRU5ErkJggg==)}.light .github{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJElEQVQ4jYVTv2sUQRh93zez2Utu52739o4YsBMEC8EyajRiGbCwESxS2OY/sLEU7BQtRAWLFKYQsbEVTRQLG8FagygkJre3u0dYs5f5YZHbsAT0XvXNN++9780MQziGMAwvM/NNIrpKzs0BgCPacs69tda+yLJsvc6nWi26UfRcSLl83LQOo/VqP01vATB1AxHH8YZkPv8/cQVt7ackSS4BMAIAulG0KoVY0lqvlwcHNwZpusVCnGSiXedc4oBgt9+/XY5Gd6Y877QUYmHa908V+/uvoJSan+313Gyv5zqdzuPxkADATG1oUKXtdDqPK75Sap59KVeOomn9bFzuAShqBnsAHAAYY9aqpi/lCoN5AQCMtSMiSiadn4g2jbUlAIB5gQHMjXe28zzfnGSQZdkPEP0eL+e4igagDYAnGQBgOBeOa8cO+AkAgqgdx/G1SeowDJcEcwuHk3+xADasc9jp943V+mUUBBf/JY6UuiCFeFprveNS60ej8gDOOZMNh8O8KD4wc6GUmq9Yvu9fYebdqUbjo2A+UfWttQ85z/Mvnu89me31pkIpF5vN5rIKgs/MvFMz2Gu1Wt16Gm3t/TRNvx79hTiK3hPzWWPtOWvtMM/zrMZX3TjeFswzAGCMed0fDK4f3ugYSZougmhNMH/3pPyG6nkP0azEWuu7lRgARD1WURRvphuNfRB1Pc9bLcvyDwC0222PnDtjgQfJYHCvrvkLSwbV+Bu4NT8AAAAASUVORK5CYII=)}.dark .github,.midnight .github{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAFTSURBVDiNjZK7LkRhFIW/GUGCB1AhYSRumV5UROVSKZVeYh7CxGQmxBsop9G4tWISiaBwCQUVyhFRmHyafTjGbXbyZ5+svfba+1/nh6ZQJ9SSeq4+xzlX19TxZn66sVNdVxvqkVpQl+IUAntTK2rHT80H6qM698eQueDsfxFRN6IwqHb9s+VQcMsAGXUCOAEWgQvgEtgCtoEBoA24BSaBFWAK6AWqQJ4w5ygmjPh/TAa3phazwGyoAUz/6vJnzESuArNZoA+4CnC5BYGEcw30ZwGBTIA9LQh0R84AZoF7IBfgaQsCZ5FzwF1iYg1Azav1Pwx8VaeCW1OLqOPxwuajMKyW1YtU4426Gb8cdSF6RgmgkjykZE91JyVwnMIHg1siBXaoe1FINnlICTRSk5/UXbX9izMhUo7VDtWXpvsfRq30rblJaEwtqmdhaD2+Vz/unIp3S9HIzk08XRcAAAAASUVORK5CYII=)}.light{background:#fafafa}.light a,.light a:visited{color:#222}.light .one{color:#000}.light .zero{color:#888}.light .indicator{color:#ddd}.light .on{color:#121212}.light .prefix{color:#888}.light .other{color:#bbb}.light .hashLink,.light .hashLink:visited{color:#ddd}.light .hashLink:hover{color:#888}.light ul.top-links li:hover{background:#ddd}.light .error{color:#da586d}.dark{background:#121212}.dark,.dark .expression{color:#fff}.dark .expressionInput{background:#121212;color:#fff}.dark a,.dark a:visited{color:#fff}.dark .indicator{color:#555}.dark .on{color:#fff}.dark .prefix,.dark .zero{color:#999}.dark .other{color:#444}.dark .hashLink,.dark .hashLink:visited{color:#333}.dark .hashLink:hover{color:#999}.dark ul.top-links li:hover{background:#333}.dark .error{color:#da586d}.midnight .header-cmd{color:#85a0ad}.midnight{background:#2c3e50}.midnight,.midnight .expression{color:#fff}.midnight .expressionInput{background:#2c3e50;color:#fff;border-color:#85a0ad}.dark a:visited,.midnight a{color:#fff}.midnight .indicator{color:#85a0ad}.midnight .on{color:#fff}.midnight .prefix,.midnight .zero{color:#85a0ad}.midnight .other{color:#9fbac7}.dark .hashLink:visited,.midnight .hashLink{color:#85a0ad}.midnight .hashLink:hover{color:#9fbac7}.midnight ul.top-links li:hover{background:#132537}.midnight .error{color:#da586d}.midnight .changelog .item-new .date{font-weight:700}@media (max-width:800px){.top-links .link-text{display:none}}.social-container{position:fixed;bottom:10px;right:10px}@media (max-width:700px){body{padding:10px}.expressionInput{width:500px}}@media (max-width:500px){.expressionInput{width:350px}.top-links a{display:inline-block;padding:5px 10px}}@media (max-width:350px){.expressionInput{width:200px}} +/*# sourceMappingURL=main.b773a0ed.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.b773a0ed.chunk.css.map b/static/css/main.b773a0ed.chunk.css.map new file mode 100644 index 0000000..a11b90a --- /dev/null +++ b/static/css/main.b773a0ed.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["HelpResultView.css","WhatsNewResultView.css","IpAddressView.css","index.css"],"names":[],"mappings":"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","file":"main.b773a0ed.chunk.css","sourcesContent":[".help .section {margin-bottom:10px;}\r\n.help .panel-container {overflow: hidden;}\r\n.help .left-panel {float:left; margin-right: 20px;}\r\n.help .right-panel {float:left;}",".changelog .item { margin-top: 2em; }\r\n.changelog .item-new .date { font-weight: bold; text-decoration: underline;}",".ip-address-info { padding-top: 1em; font-size: 0.85em; vertical-align: middle; display: none;}","body { padding:0; margin:0; height: 100%; overflow: hidden; }\r\nhtml { height: 100% }\r\n\r\n.app-root { font-family: Verdana; font-size: 0.8em; margin: 0; padding: 20px 100px 0 100px; height: 100%; overflow: auto; }\r\ncode { font-size: 1.2em; font-weight: bold; }\r\n\r\n.header-cmd { color: #c5c5c5 }\r\n\r\n.top-links { position: absolute; right: 10px; top: 10px; list-style-type: none; margin: 0 }\r\n.top-links li { float: left; }\r\n.top-links a { display: inline-block; padding: 10px 15px}\r\n.top-links .icon { margin-right: 5px; }\r\n\r\n.mono { font-family: monospace; font-size: 1.3em }\r\n.expressionInput { width: 500px; padding: 3px; border: solid 1px lightgray; }\r\n\r\n.result { margin: 10px 10px 30px; }\r\n.result .input { margin-bottom: 10px; }\r\n.result .content { padding-left: 10px}\r\n.result .cur { margin-right: 5px; }\r\n\r\n.hashLink { text-decoration: none; margin-left: 5px; visibility: hidden }\r\n.hashLink:hover { text-decoration: underline; margin-left: 5px; }\r\n.result:hover .hashLink { visibility: visible }\r\n\r\n.expression .label { font-weight: bold; padding-right: 5px; text-align: right; }\r\n.expression .bin { letter-spacing: 3px; }\r\n.expression .byte { margin: 0 3px; }\r\n.expression-result td { border-top: dotted 1px gray; }\r\n.expression { font-size: 1.5em; font-family: monospace }\r\n.expression .prefix { font-weight: normal; display: none; font-size: 0.9em }\r\n.expression .other { font-size: 0.9em}\r\n.expression .sign { text-align: right}\r\n\r\n.flipable { cursor: pointer; opacity: 1 }\r\n.flipable { cursor: pointer; opacity: 1 }\r\n.flipable:hover { opacity: 0.8 }\r\n\r\n.hex .prefix { display: inline; }\r\n\r\n.help { padding: 10px; }\r\n.help ul { list-style-type: none; margin: 0; padding: 0; }\r\n.help p { margin-top: 0 }\r\n\r\n.indicator { padding: 2px 5px; font-family: monospace; font-size: 1.3em; background: transparent; border: none; cursor: pointer }\r\n.error { color: maroon; }\r\n\r\n.soft { opacity: 0.7 }\r\n\r\n#view { padding: 10px}\r\n\r\n.cur { color: lightgray; }\r\n\r\n.icon { width: 16px; height: 16px; display: inline-block; }\r\n.light .twitter { background: url('./img/twitter-light.png') }\r\n.dark .twitter { background: url('./img/twitter-dark.png') }\r\n.midnight .twitter { background: url('./img/twitter-dark.png') }\r\n\r\n.light .feedback { background: url('./img/feedback-light.png') }\r\n.dark .feedback { background: url('./img/feedback-dark.png') }\r\n.midnight .feedback { background: url('./img/feedback-dark.png') }\r\n\r\n.light .github { background: url('./img/github-light.png') }\r\n.dark .github { background: url('./img/github-dark.png') }\r\n.midnight .github { background: url('./img/github-dark.png') }\r\n\r\n/* Light */\r\n.light { background: #fafafa; }\r\n.light a, .light a:visited { color: #222; }\r\n.light .one { color: black; }\r\n.light .zero { color: #888; }\r\n.light .indicator { color: #ddd; }\r\n.light .on { color: #121212; }\r\n.light .prefix { color: #888}\r\n.light .other { color: #bbb }\r\n.light .hashLink, .light .hashLink:visited { color: #ddd }\r\n.light .hashLink:hover { color: #888 }\r\n.light ul.top-links li:hover { background: #ddd }\r\n.light .error { color: #da586d }\r\n\r\n/* Dark */\r\n.dark { background: #121212; color: white;}\r\n.dark .expression { color: white;}\r\n.dark .expressionInput { background: #121212; color: white; }\r\n.dark a, .dark a:visited { color: white; }\r\n.dark .indicator { color: #555; }\r\n.dark .on { color: white; }\r\n.dark .zero { color: #999;}\r\n.dark .prefix { color: #999}\r\n.dark .other { color: #444;}\r\n.dark .hashLink, .dark .hashLink:visited { color: #333 }\r\n.dark .hashLink:hover { color: #999 }\r\n.dark ul.top-links li:hover { background: #333 }\r\n.dark .error { color: #da586d}\r\n\r\n/*\r\n Midnight Theme\r\n*/\r\n.midnight .header-cmd { color: #85a0ad }\r\n.midnight { background: #2c3e50; color: white }\r\n.midnight .expression { color: white;}\r\n.midnight .expressionInput { background: #2c3e50; color: white; border-color: #85a0ad }\r\n.midnight a, .dark a:visited { color: white; }\r\n.midnight .indicator { color: #85a0ad; }\r\n.midnight .on { color: white; }\r\n.midnight .zero { color: #85a0ad;}\r\n.midnight .prefix { color: #85a0ad}\r\n.midnight .other { color: #9FBAC7;}\r\n.midnight .hashLink, .dark .hashLink:visited { color: #85a0ad }\r\n.midnight .hashLink:hover { color: #9FBAC7 }\r\n.midnight ul.top-links li:hover { background: #132537 }\r\n.midnight .error { color:#da586d}\r\n.midnight .changelog .item-new .date { font-weight: bold }\r\n\r\n/* Top Links Shrink */\r\n@media (max-width: 800px) {\r\n\r\n .top-links .link-text { display: none }\r\n}\r\n\r\n.social-container{ position:fixed; bottom:10px; right:10px }\r\n\r\n/* Remove margin space on body. Inline top links with header */\r\n@media (max-width: 700px) {\r\n body { padding: 10px; }\r\n .expressionInput { width: 500px; }\r\n}\r\n\r\n/* Further shrink */\r\n@media (max-width: 500px) {\r\n .expressionInput { width: 350px; }\r\n .top-links a { display: inline-block; padding: 5px 10px}\r\n}\r\n\r\n@media (max-width: 350px) {\r\n .expressionInput { width: 200px; }\r\n}"]} \ No newline at end of file diff --git a/static/js/main.7380a68e.chunk.js b/static/js/main.6a39483e.chunk.js similarity index 87% rename from static/js/main.7380a68e.chunk.js rename to static/js/main.6a39483e.chunk.js index 48bd661..eb642e5 100644 --- a/static/js/main.7380a68e.chunk.js +++ b/static/js/main.6a39483e.chunk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[,,,,,,,function(e,t,n){"use strict";var a=n(1),i=n(2),r=[{regex:/^-?\d+$/,radix:10,base:"dec",prefix:"^$"},{regex:/^-?0x[0-9,a-f]+$/i,radix:16,base:"hex",prefix:/0x/i},{regex:/^-?0b[0-1]+$/i,radix:2,base:"bin",prefix:/0b/i}],s=new(function(){function e(t){Object(a.a)(this,e),this.parsers=void 0,this.parsers=t}return Object(i.a)(e,[{key:"parse",value:function(e){var t=this;return this.parsers.map(function(n){return t.applyParser(n,e)}).reduce(function(e,t){return e||t})}},{key:"parseOperator",value:function(e){var t=e.match(e);return null==t||0==t.length?null:t[0]}},{key:"applyParser",value:function(e,t){return e.regex.test(t)?{value:parseInt(t.replace(e.prefix,""),e.radix),base:e.base,input:t}:null}}]),e}())(r);n.d(t,"a",function(){return o});var l=1,o=function(){function e(t,n){Object(a.a)(this,e),this.id=void 0,this.value=void 0,this.base=void 0,this.lengthInBits=void 0,this.isExpression=void 0,this.id=l++,this.value=t,this.base=n||"dec",this.lengthInBits=e.getBitLength(this.value),this.isExpression=!1}return Object(i.a)(e,[{key:"getLengthInBits",value:function(){return this.value<0?32:Math.floor(Math.log(this.value)/Math.log(2))+1}},{key:"getOtherBase",value:function(e){switch(e||this.base){case"dec":case"bin":return"hex";case"hex":return"dec";default:throw new Error(e+" kind doesn't have opposite kind")}}},{key:"toString",value:function(t){return e.toBaseString(this.value,t||this.base)}},{key:"toOtherKindString",value:function(){return this.toString(this.getOtherBase())}},{key:"toDecimalString",value:function(){return this.toString("dec")}},{key:"toHexString",value:function(){return this.toString("hex")}},{key:"toBinaryString",value:function(){return this.toString("bin")}},{key:"setValue",value:function(t){this.value=t,this.lengthInBits=e.getBitLength(t)}},{key:"evaluate",value:function(){return this}},{key:"getUnderlyingOperand",value:function(){return this}}],[{key:"getBitLength",value:function(e){return Math.floor(Math.log(e)/Math.log(2))+1}},{key:"getBase",value:function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}}},{key:"create",value:function(t,n){return new e(t,n||"dec")}},{key:"parse",value:function(t){var n=s.parse(t);if(!n)throw new Error(t+" is not a valid number");return new e(n.value,n.base)}},{key:"toBaseString",value:function(e,t){switch(t){case"hex":var n=Math.abs(e).toString(16);return e>=0?"0x"+n:"-0x"+n;case"bin":return(e>>>0).toString(2);case"dec":return e.toString(10);default:throw new Error("Unexpected kind: "+t)}}},{key:"toHexString",value:function(e){return 0===e.indexOf("-")?"-0x"+e.substr(1):"0x"+e}}]),e}()},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",function(){return ExpressionOperand});var D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1),D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2),_NumericOperand__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(7),ExpressionOperand=function(){function ExpressionOperand(e,t,n){Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.a)(this,ExpressionOperand),this.expressionString=void 0,this.operand=void 0,this.sign=void 0,this.isExpression=void 0,this.isShiftExpression=void 0,this.isNotExpression=void 0,this.expressionString=e,this.operand=t,this.sign=n,this.isExpression=!0,this.isShiftExpression=this.sign.indexOf("<")>=0||this.sign.indexOf(">")>=0,this.isNotExpression="~"===this.sign}return Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__.a)(ExpressionOperand,[{key:"evaluate",value:function evaluate(operand){if(operand instanceof ExpressionOperand)throw new Error("value shouldnt be expression");var evaluatedOperand=this.operand.evaluate(),str="";if("~"==this.sign)str="~"+evaluatedOperand.value;else{if(null==operand)throw new Error("Other is required for expression: "+this.expressionString);str=operand.value+this.sign+evaluatedOperand.value}return _NumericOperand__WEBPACK_IMPORTED_MODULE_2__.a.create(eval(str),evaluatedOperand.base)}},{key:"getUnderlyingOperand",value:function(){return this.operand.getUnderlyingOperand()}},{key:"toString",value:function(){return this.sign+this.operand.toString()}}]),ExpressionOperand}()},,,,function(e,t,n){e.exports=n(24)},,,,function(e,t,n){},function(e,t,n){},function(e,t,n){},,,,,function(e,t,n){},function(e,t,n){"use strict";n.r(t);var a=n(1),i=n(2),r=n(6),s=n.n(r),l=5,o=function(){function e(t,n){Object(a.a)(this,e),this.version=l,this.emphasizeBytes=void 0,this.debugMode=!1,this.uiTheme=void 0,this.handlers=void 0,this.commandResults=void 0,this.persistedVersion=void 0,this.wasOldVersion=void 0,this.env=void 0,this.commandResults=[],this.handlers=[],this.uiTheme=t.uiTheme||"midnight",this.env=n,this.emphasizeBytes=t.emphasizeBytes||!0,this.persistedVersion=t.version||.1,this.wasOldVersion=null!=t.version&&this.version>this.persistedVersion,this.debugMode="prod"!==n||!0===t.debugMode}return Object(i.a)(e,[{key:"addCommandResult",value:function(e){this.commandResults.unshift(e),s.a.debug("result added",e),this.triggerChanged()}},{key:"clearCommandResults",value:function(){this.commandResults=[],this.triggerChanged()}},{key:"toggleEmphasizeBytes",value:function(){this.emphasizeBytes=!this.emphasizeBytes,this.triggerChanged()}},{key:"onChange",value:function(e){this.handlers.push(e)}},{key:"triggerChanged",value:function(){var e=this;this.handlers.forEach(function(t){return t(e)})}},{key:"setUiTheme",value:function(e){this.uiTheme=e,this.triggerChanged()}},{key:"toggleDebugMode",value:function(){this.debugMode=!this.debugMode,this.triggerChanged()}},{key:"getPersistData",value:function(){return{emphasizeBytes:this.emphasizeBytes,uiTheme:this.uiTheme,version:this.version,debugMode:this.debugMode}}}]),e}(),u={getPersistedData:function(){var e=window.localStorage.getItem("AppState");if(!e)return{};try{return JSON.parse(e)}catch(t){return console.error("Failed to parse AppState json. Json Value: \n"+e,t),{}}},watch:function(e){var t=this;e.onChange(function(){return t.persistData(e)})},persistData:function(e){localStorage.setItem("AppState",JSON.stringify(e.getPersistData()))}},c=function(e){return"object"==typeof e&&!(e instanceof Array)&&e instanceof Object},h=function(e){return"function"==typeof e},d=function(e){return"string"==typeof e},m=new(function(){function e(){Object(a.a)(this,e),this.debugMode=void 0,this.handlers=void 0,this.errorHandler=void 0,this.handlers=[],this.debugMode=!1,this.errorHandler=null}return Object(i.a)(e,[{key:"execute",value:function(e){s.a.debug("Executing command: ".concat(e));var t=e.trim().toLowerCase(),n=this.findHandler(t);if(null!=n)if(this.debugMode)this.invokeHandler(t,n);else try{this.invokeHandler(t,n)}catch(a){this.handleError(t,a)}else s.a.debug("Handled is not found for command: ".concat(e)),this.handleError(t,new Error("Unsupported expression: "+t.trim()))}},{key:"onError",value:function(e){this.errorHandler=e}},{key:"command",value:function(e,t){var n=this.createHandler(e,t);null!=n?h(n.canHandle)?h(n.handle)?this.handlers.push(n):console.warn('handler is missing "handle" function. registration denied.'):console.warn('handler is missing "canHandle" function. registration denied.'):console.warn("unexpected set of arguments: ",JSON.stringify(arguments))}},{key:"createHandler",value:function(e,t){return c(e)?e:d(e)?{canHandle:function(t){return t===e},handle:t}:null}},{key:"findHandler",value:function(e){return this.handlers.filter(function(t){return t.canHandle(e)})[0]}},{key:"invokeHandler",value:function(e,t){var n=t.handle({input:e});null!=n&&s.a.debug(n)}},{key:"handleError",value:function(e,t){this.debugMode&&console.error(e,t),null!=this.errorHandler&&this.errorHandler(e,t)}}]),e}()),p=n(4),f=n(3),g=n(5),v=function(){function e(t){Object(a.a)(this,e),this.input=void 0,this.inputHash=void 0,this.input=t,this.inputHash=this.encodeHash(t)}return Object(i.a)(e,[{key:"encodeHash",value:function(e){return encodeURI(e.trim().replace(/\s/g,","))}}]),e}(),b=function(e){function t(e){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).call(this,e))}return Object(g.a)(t,e),t}(v),E=function(e){function t(e){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).call(this,e))}return Object(g.a)(t,e),t}(v),y=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(p.a)(this,Object(f.a)(t).call(this,e))).message=void 0,n.message="Sorry, i don''t know what ".concat(e," is :("),n}return Object(g.a)(t,e),t}(v),O=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).expression=void 0,i.expression=n,i}return Object(g.a)(t,e),t}(v),x=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).error=void 0,i.error=n,i}return Object(g.a)(t,e),t}(v),w=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).errorMessage=void 0,i.errorMessage=n,i}return Object(g.a)(t,e),t}(v),B=function(e){function t(e){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).call(this,e))}return Object(g.a)(t,e),t}(v),k=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).value=void 0,i.value=n,i}return Object(g.a)(t,e),t}(v),_=n(7),j=n(8),S=function(){function e(t,n){Object(a.a)(this,e),this.numbers=void 0,this.expressionString=void 0,this.maxBitsLength=void 0,this.expressionString=t,this.numbers=n,this.maxBitsLength=n.map(function(e){return e.lengthInBits}).reduce(function(e,t){return e>=t?e:t},0)}return Object(i.a)(e,[{key:"toString",value:function(){return this.numbers.map(function(e){return e.value.toString()}).join(" ")}}]),e}(),N=function e(t,n){Object(a.a)(this,e),this.expressionString=void 0,this.expressionItems=void 0,this.expressionString=t,this.expressionItems=n},C=function(){function e(){Object(a.a)(this,e),this.factories=void 0,this.factories=[]}return Object(i.a)(e,[{key:"canParse",value:function(e){for(var t=e.replace(/^\s+|\s+$/,""),n=this.factories.length-1;n>=0;n--)if(!0===this.factories[n].canCreate(t))return!0;return!1}},{key:"parse",value:function(e){for(var t,n=e.replace(/^\s+|\s+$/,""),a=0,i=this.factories.length;a0&&n.push(_.a.parse(e.trim()))}),new S(e,n)}}]),e}(),M=function(){function e(){Object(a.a)(this,e),this.fullRegex=void 0,this.regex=void 0,this.fullRegex=/^((<<|>>|>>>|\||\&|\^)?(~?-?([b,x,a-f,0-9]+)))+$/,this.regex=/(<<|>>|>>>|\||\&|\^)?(~?-?(?:[b,x,a-f,0-9]+))/g}return Object(i.a)(e,[{key:"canCreate",value:function(e){return this.fullRegex.lastIndex=0,this.fullRegex.test(this.normalizeString(e))}},{key:"create",value:function(e){for(var t,n=[],a=this.normalizeString(e);null!=(t=this.regex.exec(a));)n.push(this.parseMatch(t));return new N(a,n)}},{key:"parseMatch",value:function(e){var t=e[0],n=e[1],a=e[2],i=null;return i=0==a.indexOf("~")?new j.a(a,_.a.parse(a.substring(1)),"~"):_.a.parse(a),null==n?i:new j.a(t,i,n)}},{key:"normalizeString",value:function(e){return e.replace(/\s+/g,"")}}]),e}(),R=new C;R.addFactory(new I),R.addFactory(new M);var z=n(10),L=n.n(z),D={formatString:function(e,t){return e.toString(function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}throw new Error("Unsupported kind: "+e)}(t||"bin"))},padLeft:function(e,t,n){var a=Array.prototype.slice.call(e);n=n||"0";if(null==t)return e;for(;t>a.length;)a.unshift(n);return a.join("")}};var F={parse:function(e){var t=this,n=this.getMaches(e),a=n.filter(function(e){return null!=e.matches}),i=n.filter(function(e){return null==e.matches});if(0==a.length)return null;if(i.length>0)return new H("Value(s) ".concat(i.map(function(e){return e.input}).join(",")," was not recognized as valid ip address or ip address with a subnet mask"));var r=n.map(function(e){return t.parseSingle(e.matches,e.input)}),s=r.filter(function(e){return e instanceof H});return s.length>0?s[0]:r},getMaches:function(e){return e.replace(/[\t\s]+/g," ").split(" ").filter(function(e){return e.length>0}).map(function(e){var t=/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})(\/\d+)?$/.exec(e);return null==t||0===t.length?{matches:null,input:e}:{matches:t,input:e}})},parseSingle:function(e,t){var n=function(e){return e<0||e>255},a=parseInt(e[1]),i=parseInt(e[2]),r=parseInt(e[3]),s=parseInt(e[4]);if(n(a)||n(i)||n(r)||n(s))return new H("".concat(t," value doesn't fall within the valid range of the IP address space"));var l=new P(a,i,r,s);if(e[5]){var o=e[5].substr(1),u=parseInt(o);return u>32?new H("Subnet mask value in ".concat(t," is out of range")):new U(l,u)}return l}},H=function e(t){Object(a.a)(this,e),this.errorMessage=void 0,this.errorMessage=t},U=function(){function e(t,n){Object(a.a)(this,e),this.maskBits=void 0,this.ipAddress=void 0,this.ipAddress=t,this.maskBits=n}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.ipAddress.toString(),"/").concat(this.maskBits)}},{key:"createSubnetMaskIp",value:function(){var e=function(e){return 255<<8-e&255};return this.maskBits<=8?new P(e(this.maskBits),0,0,0):this.maskBits<=16?new P(255,e(this.maskBits-8),0,0):this.maskBits<=24?new P(255,255,e(this.maskBits-16),0):new P(255,255,255,e(this.maskBits-24))}}]),e}(),P=function(){function e(t,n,i,r){Object(a.a)(this,e),this.firstByte=void 0,this.secondByte=void 0,this.thirdByte=void 0,this.fourthByte=void 0,this.firstByte=t,this.secondByte=n,this.thirdByte=i,this.fourthByte=r}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.firstByte,".").concat(this.secondByte,".").concat(this.thirdByte,".").concat(this.fourthByte)}},{key:"setOctet",value:function(e,t){switch(e){case 1:this.firstByte=t;break;case 2:this.secondByte=t;break;case 3:this.thirdByte=t;break;case 4:this.fourthByte=t}}}]),e}(),A=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).ipAddresses=void 0,i.ipAddresses=n,i}return Object(g.a)(t,e),t}(v),T=function(e,t){e.debugMode=t.debugMode,t.onChange(function(){return e.debugMode=t.debugMode}),e.command("help",function(e){return t.addCommandResult(new b(e.input))}),e.command("clear",function(e){return t.clearCommandResults()}),e.command("em",function(e){return t.toggleEmphasizeBytes()}),e.command("dark",function(e){return t.setUiTheme("dark")}),e.command("light",function(e){return t.setUiTheme("light")}),e.command("midnight",function(e){return t.setUiTheme("midnight")}),e.command("about",function(e){return t.addCommandResult(new E(e.input))}),e.command("whatsnew",function(e){return t.addCommandResult(new B(e.input))}),e.command("guid",function(e){return t.addCommandResult(new k(e.input,L()()))}),e.command("-notrack",function(e){}),e.command("-debug",function(e){t.toggleDebugMode(),t.addCommandResult(new k(e.input,"Debug Mode: ".concat(t.debugMode)))}),e.command({canHandle:function(e){return null!=F.parse(e)},handle:function(e){var n=F.parse(e.input);if(null!=n)if(n instanceof H)t.addCommandResult(new w(e.input,n.errorMessage));else{var a=[];n.forEach(function(e){e instanceof U?(a.push(e.ipAddress),a.push(e.createSubnetMaskIp())):e instanceof P&&a.push(e)}),t.addCommandResult(new A(e.input,a))}}}),e.command({canHandle:function(e){return R.canParse(e)},handle:function(e){var n=R.parse(e.input);t.addCommandResult(new O(e.input,n))}}),e.command({canHandle:function(){return!0},handle:function(e){return t.addCommandResult(new y(e.input))}}),e.onError(function(e,n){return t.addCommandResult(new x(e,n))})},K=n(0),V=n.n(K),J=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(p.a)(this,Object(f.a)(t).call(this,e))).history=void 0,n.historyIndex=void 0,n.nameInput=void 0,n.nameInput=null,n.history=[],n.historyIndex=-1,n}return Object(g.a)(t,e),Object(i.a)(t,[{key:"componentDidMount",value:function(){null!=this.nameInput&&this.nameInput.focus()}},{key:"render",value:function(){var e=this;return V.a.createElement("input",{id:"in",type:"text",ref:function(t){e.nameInput=t},onKeyUp:function(t){return e.onKeyUp(t)},onKeyDown:function(t){return e.onKeyDown(t)},className:"expressionInput mono",placeholder:"type expression like '1>>2' or 'help' "})}},{key:"onKeyUp",value:function(e){var t=e.target;if(13==e.keyCode&&0!=t.value.trim().length){var n=t.value;this.history.unshift(n),this.historyIndex=-1,t.value="",this.props.onCommandEntered(n)}}},{key:"onKeyDown",value:function(e){if(38==e.keyCode){var t=this.historyIndex+1;return this.history.length>t&&(e.target.value=this.history[t],this.historyIndex=t),void e.preventDefault()}40==e.keyCode&&(this.historyIndex>0&&(e.target.value=this.history[--this.historyIndex]),e.preventDefault())}}]),t}(V.a.Component);var $=function(e){return V.a.createElement("a",{href:"javascript:void(0)",onClick:function(t){return m.execute(e.command||e.text)}},e.text)};n(16);var W=function(){return V.a.createElement("div",{className:"help helpResultTpl"},V.a.createElement("div",{className:"panel-container"},V.a.createElement("div",{className:"left-panel"},V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title"},"Bitiwse Calculation Commands"),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"23 | 34"}))," \u2014 type bitwise expression to see result in binary (only positive integers are supported now)"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"23 34"}))," \u2014 type one or more numbers to see their binary representations"))),V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title"},"Ip Address Commands"),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"127.0.0.1"}))," \u2014 enter single or multiple ip addresses (separated by space) to see their binary represenation"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"192.168.0.1/8"}))," \u2014 subnet mask notiations are support as well"))),V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title"},"Other Commands"),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"clear"}))," \u2014 clear output pane"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"help"}))," \u2014 display this help"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"whatsnew"}))," \u2014 display changelog"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"em"}))," \u2014 turn On/Off Emphasize Bytes"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"light"}))," \u2014 set Light theme"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"dark"}))," \u2014 set Dark theme"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"midnight"}))," \u2014 set Midnight theme"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"about"}))," \u2014 about the app"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"guid"}))," \u2014 generate ",V.a.createElement("a",{href:"https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29"},"v4")," GUID")))),V.a.createElement("div",{className:"right-panel"},V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title"},"Supported Bitwise Operations"),V.a.createElement("br",null),V.a.createElement("small",null,V.a.createElement("a",{href:"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators"},"as implemented in JavaScript engine")),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,"&")," \u2014 bitwise AND"),V.a.createElement("li",null,V.a.createElement("code",null,"|")," \u2014 bitwise inclusive OR"),V.a.createElement("li",null,V.a.createElement("code",null,"^")," \u2014 bitwise exclusive XOR"),V.a.createElement("li",null,V.a.createElement("code",null,"~")," \u2014 bitwise NOT"),V.a.createElement("li",null,V.a.createElement("code",null,"<<")," \u2014 left shift"),V.a.createElement("li",null,V.a.createElement("code",null,">>")," \u2014 sign propagating right shift"),V.a.createElement("li",null,V.a.createElement("code",null,">>>")," \u2014 zero-fill right shift"))))))};var q=function(){return V.a.createElement("div",{className:"aboutTpl","data-result-type":"help"},V.a.createElement("p",null," Created by ",V.a.createElement("a",{href:"http://boryslevytskyi.github.io/"},"Borys Levytskyi"),". Please give it a like if BitwiseCmd has helped you in your work."),V.a.createElement("p",null,"If you have an idea, suggestion or you've spotted a bug here, please send it to ",V.a.createElement("a",{href:"mailto:bitwisecmd@gmail.com?subject=Feedback"},"bitwisecmd@gmail.com")," or tweet on ",V.a.createElement("a",{href:"http://twitter.com/BitwiseCmd"},"@BitwiseCmd"),". Your feedback is greatly appreciated."),V.a.createElement("p",null,V.a.createElement("a",{href:"https://github.com/BorisLevitskiy/BitwiseCmd"},"Project on ",V.a.createElement("strong",null,"GitHub"))))},G=function(e){function t(){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).apply(this,arguments))}return Object(g.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){return V.a.createElement("span",null,this.getChildren())}},{key:"onBitClick",value:function(e,t){if(this.props.allowFlipBits&&this.props.onFlipBit){this.props.onFlipBit;var n=this.props.binaryString.split("");n[e]="0"==n[e]?"1":"0";var a=n.join("");this.props.onFlipBit({index:e,binaryString:this.props.binaryString,$event:t,newBinaryString:a})}}},{key:"getChildren",value:function(){var e=this.createBits(this.props.binaryString.split(""));return this.props.emphasizeBytes?this.splitIntoBytes(e):e}},{key:"createBits",value:function(e){var t=this,n=this.props.allowFlipBits||!1?" flipable":"";return e.map(function(e,a){var i="0"==e?"zero".concat(n):"one".concat(n);return V.a.createElement("span",{className:i,key:a,onClick:function(e){return t.onBitClick(a,e)}},e)})}},{key:"splitIntoBytes",value:function(e){for(var t=[],n=0;e.length>0;)t.push(V.a.createElement("span",{key:n++,className:"byte"},e.splice(0,8)));return t}}]),t}(V.a.Component),X=function(){function e(t){var n=t.emphasizeBytes,i=void 0!==n&&n,r=t.allowFlipBits,s=void 0!==r&&r;Object(a.a)(this,e),this.emphasizeBytes=void 0,this.items=void 0,this.maxNumberOfBits=void 0,this.allowFlipBits=void 0,this.emphasizeBytes=i,this.items=[],this.maxNumberOfBits=0,this.allowFlipBits=!0===s}return Object(i.a)(e,[{key:"addOperandRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"",css:"",expressionItem:e,allowFlipBits:this.allowFlipBits,label:""})}},{key:"addExpressionOperandRow",value:function(e){var t=e.isNotExpression?e.evaluate():e.getUnderlyingOperand();this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign,css:"",label:this.getLabel(t),expressionItem:e.operand,allowFlipBits:this.allowFlipBits})}},{key:"addShiftExpressionResultRow",value:function(e,t){this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign+e.operand.toString(),css:"expression-result",expressionItem:t,allowFlipBits:!1,label:""})}},{key:"addExpressionResultRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"=",css:"expression-result",expressionItem:e,allowFlipBits:!1,label:""})}},{key:"getLabel",value:function(e){return"bin"==e.base?e.toString("dec"):e.toString()}}],[{key:"buildListOfNumbers",value:function(t,n){var a=new e(n);return t.numbers.forEach(function(e){return a.addOperandRow(e)}),a.maxNumberOfBits=e.getNumberOfBits(a.maxNumberOfBits,a.emphasizeBytes),a}},{key:"buildMultiple",value:function(t,n){t.expressionItems[0];for(var a,i=0,r=t.expressionItems.length,s=new e(n),l=null;i"),this.props.content.input,V.a.createElement("a",{className:"hashLink",title:"Link for this expression",href:window.location.pathname+"#"+this.props.inputHash},"#")),V.a.createElement("div",{className:"content"},this.findResultComponent(this.props.content)))}},{key:"findResultComponent",value:function(e){if(e instanceof b)return V.a.createElement(W,null);if(e instanceof E)return V.a.createElement(q,null);if(e instanceof O)return V.a.createElement(Y,{expression:e.expression,emphasizeBytes:this.props.appState.emphasizeBytes});if(e instanceof B)return V.a.createElement(Z,null);if(e instanceof k)return V.a.createElement("p",null,e.value);if(e instanceof x)return V.a.createElement("div",{className:"result"},V.a.createElement("div",{className:"error"},"(X_X) Ooops.. Something ain' right: ",V.a.createElement("strong",null,e.error.message)));if(e instanceof w)return V.a.createElement("div",{className:"result"},V.a.createElement("div",{className:"error"},e.errorMessage));if(e instanceof A){var t=e;return V.a.createElement(ee,{ipAddresses:t.ipAddresses})}return V.a.createElement("div",{className:"result"},V.a.createElement("div",{className:"error"},"\xaf\\_(\u30c4)_/\xaf Sorry, i don\u2032t know what ",V.a.createElement("strong",null,this.props.content.input)," is"))}}]),t}(V.a.Component);var ne=function(e){var t=[],n=e.appState;return"prod"!=e.appState.env&&t.push(n.env),e.appState.debugMode&&t.push("debug"),"false"===localStorage.getItem("TrackAnalytics")&&t.push("notrack"),0==t.length?null:V.a.createElement("div",null,t.map(function(e){return V.a.createElement("span",null,e,"\xa0")}))},ae=function(e){function t(){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).apply(this,arguments))}return Object(g.a)(t,e),Object(i.a)(t,[{key:"componentWillMount",value:function(){var e=this;this.refresh(),this.props.appState.onChange(function(){return e.refresh()})}},{key:"refresh",value:function(){this.setState(this.props.appState)}},{key:"getIndicator",value:function(e){return e?"on":"off"}},{key:"getResultViews",value:function(){var e=this;return s.a.debug("getting result views"),this.state.commandResults.map(function(t,n){return V.a.createElement(te,{key:n,content:t,input:t.input,inputHash:t.inputHash,appState:e.props.appState})})}},{key:"toggleEmphasizeBytes",value:function(){this.props.appState.toggleEmphasizeBytes()}},{key:"render",value:function(){var e=this;return V.a.createElement("div",{className:"app-root ".concat(this.state.uiTheme)},V.a.createElement(ne,{appState:this.props.appState}),V.a.createElement("div",{className:"header"},V.a.createElement("h1",null,"Bitwise",V.a.createElement("span",{className:"header-cmd"},"Cmd")),V.a.createElement("ul",{className:"top-links"},V.a.createElement("li",null,V.a.createElement("a",{href:"https://github.com/BorisLevitskiy/BitwiseCmd"},V.a.createElement("i",{className:"icon github"},"\xa0"),V.a.createElement("span",{className:"link-text"},"Project on GitHub"))),V.a.createElement("li",null,V.a.createElement("a",{href:"https://twitter.com/BitwiseCmd"},V.a.createElement("i",{className:"icon twitter"},"\xa0"),V.a.createElement("span",{className:"link-text"},"Twitter"))),V.a.createElement("li",null,V.a.createElement("a",{href:"mailto:bitwisecmd@gmail.com?subject=Feedback"},V.a.createElement("i",{className:"icon feedback"},"\xa0"),V.a.createElement("span",{className:"link-text"},"Send Feedback"))))),V.a.createElement("div",{className:"expressionInput-container"},V.a.createElement(J,{onCommandEntered:function(e){return m.execute(e)}}),V.a.createElement("span",{className:"configPnl"},V.a.createElement("span",{id:"emphasizeBytes","data-cmd":"em",className:"indicator "+this.getIndicator(this.state.emphasizeBytes),title:"Toggle Emphasize Bytes",onClick:function(t){return e.toggleEmphasizeBytes()}},"[em]"))),V.a.createElement("div",{id:"output"},this.getResultViews()))}}]),t}(V.a.Component),ie={encodeHash:function(e){return encodeURI(e.trim().replace(/\s/g,","))},decodeHash:function(e){return decodeURI(e).replace(/^\#/,"").replace(/,/g," ")},getArgs:function(e){var t=this.decodeHash(e),n=[];return function(e){var t=[];e.indexOf("||")?e.split("||").forEach(function(e){e.length>0&&t.push(e)}):t.push(e);return t}(t).forEach(function(e){n.push(e)}),n}};var re,se=n(11),le=n.n(se),oe=(n(23),"bitwisecmd.com"===window.location.host?"prod":"stage");"prod"!=(re=oe)?(s.a.setLevel("debug"),s.a.debug("Log level is set to debug. Env: ".concat(re))):s.a.setLevel("warn");var ue=function(e){var t=u.getPersistedData(),n=new o(t,e);return u.watch(n),s.a.debug("appState initialized",n),n}(oe);T(m,ue),function(){var e=ie.getArgs(window.location.hash),t=["help","127.0.0.1 192.168.0.0/8","1|2&6","4 0b1000000 0x80"];ue.wasOldVersion&&(t=["whatsnew"]);e.length>0&&(t=e);t.forEach(m.execute.bind(m))}();var ce=V.a.createElement(ae,{appState:ue});le.a.render(ce,document.getElementById("root")),s.a.debug("started")}],[[12,1,2]]]); -//# sourceMappingURL=main.7380a68e.chunk.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[,,,,,,,function(e,t,n){"use strict";var a=n(1),i=n(2),r=[{regex:/^-?\d+$/,radix:10,base:"dec",prefix:"^$"},{regex:/^-?0x[0-9,a-f]+$/i,radix:16,base:"hex",prefix:/0x/i},{regex:/^-?0b[0-1]+$/i,radix:2,base:"bin",prefix:/0b/i}],s=new(function(){function e(t){Object(a.a)(this,e),this.parsers=void 0,this.parsers=t}return Object(i.a)(e,[{key:"parse",value:function(e){var t=this;return this.parsers.map(function(n){return t.applyParser(n,e)}).reduce(function(e,t){return e||t})}},{key:"parseOperator",value:function(e){var t=e.match(e);return null==t||0==t.length?null:t[0]}},{key:"applyParser",value:function(e,t){return e.regex.test(t)?{value:parseInt(t.replace(e.prefix,""),e.radix),base:e.base,input:t}:null}}]),e}())(r);n.d(t,"a",function(){return o});var l=1,o=function(){function e(t,n){Object(a.a)(this,e),this.id=void 0,this.value=void 0,this.base=void 0,this.lengthInBits=void 0,this.isExpression=void 0,this.id=l++,this.value=t,this.base=n||"dec",this.lengthInBits=e.getBitLength(this.value),this.isExpression=!1}return Object(i.a)(e,[{key:"getLengthInBits",value:function(){return this.value<0?32:Math.floor(Math.log(this.value)/Math.log(2))+1}},{key:"getOtherBase",value:function(e){switch(e||this.base){case"dec":case"bin":return"hex";case"hex":return"dec";default:throw new Error(e+" kind doesn't have opposite kind")}}},{key:"toString",value:function(t){return e.toBaseString(this.value,t||this.base)}},{key:"toOtherKindString",value:function(){return this.toString(this.getOtherBase())}},{key:"toDecimalString",value:function(){return this.toString("dec")}},{key:"toHexString",value:function(){return this.toString("hex")}},{key:"toBinaryString",value:function(){return this.toString("bin")}},{key:"setValue",value:function(t){this.value=t,this.lengthInBits=e.getBitLength(t)}},{key:"evaluate",value:function(){return this}},{key:"getUnderlyingOperand",value:function(){return this}}],[{key:"getBitLength",value:function(e){return Math.floor(Math.log(e)/Math.log(2))+1}},{key:"getBase",value:function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}}},{key:"create",value:function(t,n){return new e(t,n||"dec")}},{key:"parse",value:function(t){var n=s.parse(t);if(!n)throw new Error(t+" is not a valid number");return new e(n.value,n.base)}},{key:"toBaseString",value:function(e,t){switch(t){case"hex":var n=Math.abs(e).toString(16);return e>=0?"0x"+n:"-0x"+n;case"bin":return(e>>>0).toString(2);case"dec":return e.toString(10);default:throw new Error("Unexpected kind: "+t)}}},{key:"toHexString",value:function(e){return 0===e.indexOf("-")?"-0x"+e.substr(1):"0x"+e}}]),e}()},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",function(){return ExpressionOperand});var D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1),D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2),_NumericOperand__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(7),ExpressionOperand=function(){function ExpressionOperand(e,t,n){Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.a)(this,ExpressionOperand),this.expressionString=void 0,this.operand=void 0,this.sign=void 0,this.isExpression=void 0,this.isShiftExpression=void 0,this.isNotExpression=void 0,this.expressionString=e,this.operand=t,this.sign=n,this.isExpression=!0,this.isShiftExpression=this.sign.indexOf("<")>=0||this.sign.indexOf(">")>=0,this.isNotExpression="~"===this.sign}return Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__.a)(ExpressionOperand,[{key:"evaluate",value:function evaluate(operand){if(operand instanceof ExpressionOperand)throw new Error("value shouldnt be expression");var evaluatedOperand=this.operand.evaluate(),str="";if("~"==this.sign)str="~"+evaluatedOperand.value;else{if(null==operand)throw new Error("Other is required for expression: "+this.expressionString);str=operand.value+this.sign+evaluatedOperand.value}return _NumericOperand__WEBPACK_IMPORTED_MODULE_2__.a.create(eval(str),evaluatedOperand.base)}},{key:"getUnderlyingOperand",value:function(){return this.operand.getUnderlyingOperand()}},{key:"toString",value:function(){return this.sign+this.operand.toString()}}]),ExpressionOperand}()},,,,function(e,t,n){e.exports=n(24)},,,,function(e,t,n){},function(e,t,n){},function(e,t,n){},,,,,function(e,t,n){},function(e,t,n){"use strict";n.r(t);var a=n(1),i=n(2),r=n(6),s=n.n(r),l=5,o=function(){function e(t,n){Object(a.a)(this,e),this.version=l,this.emphasizeBytes=void 0,this.debugMode=!1,this.uiTheme=void 0,this.handlers=void 0,this.commandResults=void 0,this.persistedVersion=void 0,this.wasOldVersion=void 0,this.env=void 0,this.commandResults=[],this.handlers=[],this.uiTheme=t.uiTheme||"midnight",this.env=n,this.emphasizeBytes=t.emphasizeBytes||!0,this.persistedVersion=t.version||.1,this.wasOldVersion=null!=t.version&&this.version>this.persistedVersion,this.debugMode="prod"!==n||!0===t.debugMode}return Object(i.a)(e,[{key:"addCommandResult",value:function(e){this.commandResults.unshift(e),s.a.debug("result added",e),this.triggerChanged()}},{key:"clearCommandResults",value:function(){this.commandResults=[],this.triggerChanged()}},{key:"toggleEmphasizeBytes",value:function(){this.emphasizeBytes=!this.emphasizeBytes,this.triggerChanged()}},{key:"onChange",value:function(e){this.handlers.push(e)}},{key:"triggerChanged",value:function(){var e=this;this.handlers.forEach(function(t){return t(e)})}},{key:"setUiTheme",value:function(e){this.uiTheme=e,this.triggerChanged()}},{key:"toggleDebugMode",value:function(){this.debugMode=!this.debugMode,this.triggerChanged()}},{key:"getPersistData",value:function(){return{emphasizeBytes:this.emphasizeBytes,uiTheme:this.uiTheme,version:this.version,debugMode:this.debugMode}}}]),e}(),u={getPersistedData:function(){var e=window.localStorage.getItem("AppState");if(!e)return{};try{return JSON.parse(e)}catch(t){return console.error("Failed to parse AppState json. Json Value: \n"+e,t),{}}},watch:function(e){var t=this;e.onChange(function(){return t.persistData(e)})},persistData:function(e){localStorage.setItem("AppState",JSON.stringify(e.getPersistData()))}},c=function(e){return"object"==typeof e&&!(e instanceof Array)&&e instanceof Object},h=function(e){return"function"==typeof e},d=function(e){return"string"==typeof e},m=new(function(){function e(){Object(a.a)(this,e),this.debugMode=void 0,this.handlers=void 0,this.errorHandler=void 0,this.handlers=[],this.debugMode=!1,this.errorHandler=null}return Object(i.a)(e,[{key:"execute",value:function(e){s.a.debug("Executing command: ".concat(e));var t=e.trim().toLowerCase(),n=this.findHandler(t);if(null!=n)if(this.debugMode)this.invokeHandler(t,n);else try{this.invokeHandler(t,n)}catch(a){this.handleError(t,a)}else s.a.debug("Handled is not found for command: ".concat(e)),this.handleError(t,new Error("Unsupported expression: "+t.trim()))}},{key:"onError",value:function(e){this.errorHandler=e}},{key:"command",value:function(e,t){var n=this.createHandler(e,t);null!=n?h(n.canHandle)?h(n.handle)?this.handlers.push(n):console.warn('handler is missing "handle" function. registration denied.'):console.warn('handler is missing "canHandle" function. registration denied.'):console.warn("unexpected set of arguments: ",JSON.stringify(arguments))}},{key:"createHandler",value:function(e,t){return c(e)?e:d(e)?{canHandle:function(t){return t===e},handle:t}:null}},{key:"findHandler",value:function(e){return this.handlers.filter(function(t){return t.canHandle(e)})[0]}},{key:"invokeHandler",value:function(e,t){var n=t.handle({input:e});null!=n&&s.a.debug(n)}},{key:"handleError",value:function(e,t){this.debugMode&&console.error(e,t),null!=this.errorHandler&&this.errorHandler(e,t)}}]),e}()),p=n(4),f=n(3),g=n(5),v=function(){function e(t){Object(a.a)(this,e),this.input=void 0,this.inputHash=void 0,this.input=t,this.inputHash=this.encodeHash(t)}return Object(i.a)(e,[{key:"encodeHash",value:function(e){return encodeURI(e.trim().replace(/\s/g,","))}}]),e}(),b=function(e){function t(e){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).call(this,e))}return Object(g.a)(t,e),t}(v),E=function(e){function t(e){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).call(this,e))}return Object(g.a)(t,e),t}(v),y=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(p.a)(this,Object(f.a)(t).call(this,e))).message=void 0,n.message="Sorry, i don''t know what ".concat(e," is :("),n}return Object(g.a)(t,e),t}(v),x=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).expression=void 0,i.expression=n,i}return Object(g.a)(t,e),t}(v),O=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).error=void 0,i.error=n,i}return Object(g.a)(t,e),t}(v),w=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).errorMessage=void 0,i.errorMessage=n,i}return Object(g.a)(t,e),t}(v),B=function(e){function t(e){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).call(this,e))}return Object(g.a)(t,e),t}(v),k=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).value=void 0,i.value=n,i}return Object(g.a)(t,e),t}(v),_=n(7),j=n(8),S=function(){function e(t,n){Object(a.a)(this,e),this.numbers=void 0,this.expressionString=void 0,this.maxBitsLength=void 0,this.expressionString=t,this.numbers=n,this.maxBitsLength=n.map(function(e){return e.lengthInBits}).reduce(function(e,t){return e>=t?e:t},0)}return Object(i.a)(e,[{key:"toString",value:function(){return this.numbers.map(function(e){return e.value.toString()}).join(" ")}}]),e}(),N=function e(t,n){Object(a.a)(this,e),this.expressionString=void 0,this.expressionItems=void 0,this.expressionString=t,this.expressionItems=n},C=function(){function e(){Object(a.a)(this,e),this.factories=void 0,this.factories=[]}return Object(i.a)(e,[{key:"canParse",value:function(e){for(var t=e.replace(/^\s+|\s+$/,""),n=this.factories.length-1;n>=0;n--)if(!0===this.factories[n].canCreate(t))return!0;return!1}},{key:"parse",value:function(e){for(var t,n=e.replace(/^\s+|\s+$/,""),a=0,i=this.factories.length;a0&&n.push(_.a.parse(e.trim()))}),new S(e,n)}}]),e}(),M=function(){function e(){Object(a.a)(this,e),this.fullRegex=void 0,this.regex=void 0,this.fullRegex=/^((<<|>>|>>>|\||\&|\^)?(~?-?([b,x,a-f,0-9]+)))+$/,this.regex=/(<<|>>|>>>|\||\&|\^)?(~?-?(?:[b,x,a-f,0-9]+))/g}return Object(i.a)(e,[{key:"canCreate",value:function(e){return this.fullRegex.lastIndex=0,this.fullRegex.test(this.normalizeString(e))}},{key:"create",value:function(e){for(var t,n=[],a=this.normalizeString(e);null!=(t=this.regex.exec(a));)n.push(this.parseMatch(t));return new N(a,n)}},{key:"parseMatch",value:function(e){var t=e[0],n=e[1],a=e[2],i=null;return i=0==a.indexOf("~")?new j.a(a,_.a.parse(a.substring(1)),"~"):_.a.parse(a),null==n?i:new j.a(t,i,n)}},{key:"normalizeString",value:function(e){return e.replace(/\s+/g,"")}}]),e}(),R=new C;R.addFactory(new I),R.addFactory(new M);var z=n(10),L=n.n(z),D={formatString:function(e,t){return e.toString(function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}throw new Error("Unsupported kind: "+e)}(t||"bin"))},padLeft:function(e,t,n){var a=Array.prototype.slice.call(e);n=n||"0";if(null==t)return e;for(;t>a.length;)a.unshift(n);return a.join("")}};var F={parse:function(e){var t=this,n=this.getMaches(e),a=n.filter(function(e){return null!=e.matches}),i=n.filter(function(e){return null==e.matches});if(0==a.length)return null;if(i.length>0)return new H("Value(s) ".concat(i.map(function(e){return e.input}).join(",")," was not recognized as valid ip address or ip address with a subnet mask"));var r=n.map(function(e){return t.parseSingle(e.matches,e.input)}),s=r.filter(function(e){return e instanceof H});return s.length>0?s[0]:r},getMaches:function(e){return e.replace(/[\t\s]+/g," ").split(" ").filter(function(e){return e.length>0}).map(function(e){var t=/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})(\/\d+)?$/.exec(e);return null==t||0===t.length?{matches:null,input:e}:{matches:t,input:e}})},parseSingle:function(e,t){var n=function(e){return e<0||e>255},a=parseInt(e[1]),i=parseInt(e[2]),r=parseInt(e[3]),s=parseInt(e[4]);if(n(a)||n(i)||n(r)||n(s))return new H("".concat(t," value doesn't fall within the valid range of the IP address space"));var l=new U(a,i,r,s);if(e[5]){var o=e[5].substr(1),u=parseInt(o);return u>32?new H("Subnet mask value in ".concat(t," is out of range")):new P(l,u)}return l}},H=function e(t){Object(a.a)(this,e),this.errorMessage=void 0,this.errorMessage=t},P=function(){function e(t,n){Object(a.a)(this,e),this.maskBits=void 0,this.ipAddress=void 0,this.ipAddress=t,this.maskBits=n}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.ipAddress.toString(),"/").concat(this.maskBits)}},{key:"createSubnetMaskIp",value:function(){var e=function(e){return 255<<8-e&255};return this.maskBits<=8?new U(e(this.maskBits),0,0,0):this.maskBits<=16?new U(255,e(this.maskBits-8),0,0):this.maskBits<=24?new U(255,255,e(this.maskBits-16),0):new U(255,255,255,e(this.maskBits-24))}}]),e}(),U=function(){function e(t,n,i,r){Object(a.a)(this,e),this.firstByte=void 0,this.secondByte=void 0,this.thirdByte=void 0,this.fourthByte=void 0,this.firstByte=t,this.secondByte=n,this.thirdByte=i,this.fourthByte=r}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.firstByte,".").concat(this.secondByte,".").concat(this.thirdByte,".").concat(this.fourthByte)}},{key:"setOctet",value:function(e,t){switch(e){case 1:this.firstByte=t;break;case 2:this.secondByte=t;break;case 3:this.thirdByte=t;break;case 4:this.fourthByte=t}}}]),e}(),A=function(e){function t(e,n){var i;return Object(a.a)(this,t),(i=Object(p.a)(this,Object(f.a)(t).call(this,e))).ipAddresses=void 0,i.ipAddresses=n,i}return Object(g.a)(t,e),t}(v),T=function(e,t){e.debugMode=t.debugMode,t.onChange(function(){return e.debugMode=t.debugMode}),e.command("help",function(e){return t.addCommandResult(new b(e.input))}),e.command("clear",function(e){return t.clearCommandResults()}),e.command("em",function(e){return t.toggleEmphasizeBytes()}),e.command("dark",function(e){return t.setUiTheme("dark")}),e.command("light",function(e){return t.setUiTheme("light")}),e.command("midnight",function(e){return t.setUiTheme("midnight")}),e.command("about",function(e){return t.addCommandResult(new E(e.input))}),e.command("whatsnew",function(e){return t.addCommandResult(new B(e.input))}),e.command("guid",function(e){return t.addCommandResult(new k(e.input,L()()))}),e.command("-notrack",function(e){}),e.command("-debug",function(e){t.toggleDebugMode(),t.addCommandResult(new k(e.input,"Debug Mode: ".concat(t.debugMode)))}),e.command({canHandle:function(e){return null!=F.parse(e)},handle:function(e){var n=F.parse(e.input);if(null!=n)if(n instanceof H)t.addCommandResult(new w(e.input,n.errorMessage));else{var a=[];n.forEach(function(e){e instanceof P?(a.push(e.ipAddress),a.push(e.createSubnetMaskIp())):e instanceof U&&a.push(e)}),t.addCommandResult(new A(e.input,a))}}}),e.command({canHandle:function(e){return R.canParse(e)},handle:function(e){var n=R.parse(e.input);t.addCommandResult(new x(e.input,n))}}),e.command({canHandle:function(){return!0},handle:function(e){return t.addCommandResult(new y(e.input))}}),e.onError(function(e,n){return t.addCommandResult(new O(e,n))})},K=n(0),V=n.n(K),J=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(p.a)(this,Object(f.a)(t).call(this,e))).history=void 0,n.historyIndex=void 0,n.nameInput=void 0,n.nameInput=null,n.history=[],n.historyIndex=-1,n}return Object(g.a)(t,e),Object(i.a)(t,[{key:"componentDidMount",value:function(){null!=this.nameInput&&this.nameInput.focus()}},{key:"render",value:function(){var e=this;return V.a.createElement("input",{id:"in",type:"text",ref:function(t){e.nameInput=t},onKeyUp:function(t){return e.onKeyUp(t)},onKeyDown:function(t){return e.onKeyDown(t)},className:"expressionInput mono",placeholder:"type expression like '1>>2' or 'help' "})}},{key:"onKeyUp",value:function(e){var t=e.target;if(13==e.keyCode&&0!=t.value.trim().length){var n=t.value;this.history.unshift(n),this.historyIndex=-1,t.value="",this.props.onCommandEntered(n)}}},{key:"onKeyDown",value:function(e){if(38==e.keyCode){var t=this.historyIndex+1;return this.history.length>t&&(e.target.value=this.history[t],this.historyIndex=t),void e.preventDefault()}40==e.keyCode&&(this.historyIndex>0&&(e.target.value=this.history[--this.historyIndex]),e.preventDefault())}}]),t}(V.a.Component);var $=function(e){return V.a.createElement("a",{href:"javascript:void(0)",onClick:function(t){return m.execute(e.command||e.text)}},e.text)};n(16);var W=function(){return V.a.createElement("div",{className:"help helpResultTpl"},V.a.createElement("div",{className:"panel-container"},V.a.createElement("div",{className:"left-panel"},V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title soft"},"Bitiwse Calculation Commands"),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"23 | 34"}))," \u2014 type bitwise expression to see result in binary (only positive integers are supported now)"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"23 34"}))," \u2014 type one or more numbers to see their binary representations"))),V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title soft"},"IP Address Commands"),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"127.0.0.1"}))," \u2014 enter single or multiple ip addresses (separated by space) to see their binary represenation"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"192.168.0.1/8"}))," \u2014 subnet mask notiations are support as well"))),V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title soft"},"Color Theme Commands"),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"light"}))," \u2014 set Light theme"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"dark"}))," \u2014 set Dark theme"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"midnight"}))," \u2014 set Midnight theme"))),V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title soft"},"Other Commands"),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"clear"}))," \u2014 clear output pane"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"help"}))," \u2014 display this help"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"whatsnew"}))," \u2014 display changelog"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"em"}))," \u2014 turn On/Off Emphasize Bytes"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"about"}))," \u2014 about the app"),V.a.createElement("li",null,V.a.createElement("code",null,V.a.createElement($,{text:"guid"}))," \u2014 generate ",V.a.createElement("a",{href:"https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29"},"v4")," GUID")))),V.a.createElement("div",{className:"right-panel"},V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title soft"},"Supported Bitwise Operations"),V.a.createElement("br",null),V.a.createElement("small",null,V.a.createElement("a",{href:"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators"},"as implemented in JavaScript engine of your browser")),V.a.createElement("ul",null,V.a.createElement("li",null,V.a.createElement("code",null,"&")," \u2014 bitwise AND"),V.a.createElement("li",null,V.a.createElement("code",null,"|")," \u2014 bitwise inclusive OR"),V.a.createElement("li",null,V.a.createElement("code",null,"^")," \u2014 bitwise exclusive XOR"),V.a.createElement("li",null,V.a.createElement("code",null,"~")," \u2014 bitwise NOT"),V.a.createElement("li",null,V.a.createElement("code",null,"<<")," \u2014 left shift"),V.a.createElement("li",null,V.a.createElement("code",null,">>")," \u2014 sign propagating right shift"),V.a.createElement("li",null,V.a.createElement("code",null,">>>")," \u2014 zero-fill right shift"))),V.a.createElement("div",{className:"section"},V.a.createElement("strong",{className:"section-title soft"},"Tip"),V.a.createElement("p",null,"You can click on bits to flip them in number inputs (e.g. ",V.a.createElement($,{text:"2 4"}),") or IP addresses (e.g. ",V.a.createElement($,{text:"192.168.0.0/8"}),")")))))};var q=function(){return V.a.createElement("div",{className:"aboutTpl","data-result-type":"help"},V.a.createElement("p",null," Created by ",V.a.createElement("a",{href:"http://boryslevytskyi.github.io/"},"Borys Levytskyi"),". Please give it a like if BitwiseCmd has helped you in your work."),V.a.createElement("p",null,"If you have an idea, suggestion or you've spotted a bug here, please send it to ",V.a.createElement("a",{href:"mailto:bitwisecmd@gmail.com?subject=Feedback"},"bitwisecmd@gmail.com")," or tweet on ",V.a.createElement("a",{href:"http://twitter.com/BitwiseCmd"},"@BitwiseCmd"),". Your feedback is greatly appreciated."),V.a.createElement("p",null,V.a.createElement("a",{href:"https://github.com/BorisLevitskiy/BitwiseCmd"},"Project on ",V.a.createElement("strong",null,"GitHub"))))},G=function(e){function t(){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).apply(this,arguments))}return Object(g.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){return V.a.createElement("span",null,this.getChildren())}},{key:"onBitClick",value:function(e,t){if(this.props.allowFlipBits&&this.props.onFlipBit){this.props.onFlipBit;var n=this.props.binaryString.split("");n[e]="0"==n[e]?"1":"0";var a=n.join("");this.props.onFlipBit({index:e,binaryString:this.props.binaryString,$event:t,newBinaryString:a})}}},{key:"getChildren",value:function(){var e=this.createBits(this.props.binaryString.split(""));return this.props.emphasizeBytes?this.splitIntoBytes(e):e}},{key:"createBits",value:function(e){var t=this,n=this.props.allowFlipBits||!1?" flipable":"";return e.map(function(e,a){var i="0"==e?"zero".concat(n):"one".concat(n);return V.a.createElement("span",{className:i,key:a,onClick:function(e){return t.onBitClick(a,e)}},e)})}},{key:"splitIntoBytes",value:function(e){for(var t=[],n=0;e.length>0;)t.push(V.a.createElement("span",{key:n++,className:"byte"},e.splice(0,8)));return t}}]),t}(V.a.Component),X=function(){function e(t){var n=t.emphasizeBytes,i=void 0!==n&&n,r=t.allowFlipBits,s=void 0!==r&&r;Object(a.a)(this,e),this.emphasizeBytes=void 0,this.items=void 0,this.maxNumberOfBits=void 0,this.allowFlipBits=void 0,this.emphasizeBytes=i,this.items=[],this.maxNumberOfBits=0,this.allowFlipBits=!0===s}return Object(i.a)(e,[{key:"addOperandRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"",css:"",expressionItem:e,allowFlipBits:this.allowFlipBits,label:""})}},{key:"addExpressionOperandRow",value:function(e){var t=e.isNotExpression?e.evaluate():e.getUnderlyingOperand();this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign,css:"",label:this.getLabel(t),expressionItem:e.operand,allowFlipBits:this.allowFlipBits})}},{key:"addShiftExpressionResultRow",value:function(e,t){this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign+e.operand.toString(),css:"expression-result",expressionItem:t,allowFlipBits:!1,label:""})}},{key:"addExpressionResultRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"=",css:"expression-result",expressionItem:e,allowFlipBits:!1,label:""})}},{key:"getLabel",value:function(e){return"bin"==e.base?e.toString("dec"):e.toString()}}],[{key:"buildListOfNumbers",value:function(t,n){var a=new e(n);return t.numbers.forEach(function(e){return a.addOperandRow(e)}),a.maxNumberOfBits=e.getNumberOfBits(a.maxNumberOfBits,a.emphasizeBytes),a}},{key:"buildMultiple",value:function(t,n){t.expressionItems[0];for(var a,i=0,r=t.expressionItems.length,s=new e(n),l=null;i"),this.props.content.input,V.a.createElement("a",{className:"hashLink",title:"Link for this expression",href:window.location.pathname+"#"+this.props.inputHash},"#")),V.a.createElement("div",{className:"content"},this.findResultComponent(this.props.content)))}},{key:"findResultComponent",value:function(e){if(e instanceof b)return V.a.createElement(W,null);if(e instanceof E)return V.a.createElement(q,null);if(e instanceof x)return V.a.createElement(Y,{expression:e.expression,emphasizeBytes:this.props.appState.emphasizeBytes});if(e instanceof B)return V.a.createElement(Z,null);if(e instanceof k)return V.a.createElement("p",null,e.value);if(e instanceof O)return V.a.createElement("div",{className:"result"},V.a.createElement("div",{className:"error"},"(X_X) Ooops.. Something ain' right: ",V.a.createElement("strong",null,e.error.message)));if(e instanceof w)return V.a.createElement("div",{className:"result"},V.a.createElement("div",{className:"error"},e.errorMessage));if(e instanceof A){var t=e;return V.a.createElement(ee,{ipAddresses:t.ipAddresses})}return V.a.createElement("div",{className:"result"},V.a.createElement("div",{className:"error"},"\xaf\\_(\u30c4)_/\xaf Sorry, i don\u2032t know what ",V.a.createElement("strong",null,this.props.content.input)," is"))}}]),t}(V.a.Component);var ne=function(e){var t=[],n=e.appState;return"prod"!=e.appState.env&&t.push(n.env),e.appState.debugMode&&t.push("debug"),"false"===localStorage.getItem("TrackAnalytics")&&t.push("notrack"),0==t.length?null:V.a.createElement("div",null,t.map(function(e){return V.a.createElement("span",null,e,"\xa0")}))},ae=function(e){function t(){return Object(a.a)(this,t),Object(p.a)(this,Object(f.a)(t).apply(this,arguments))}return Object(g.a)(t,e),Object(i.a)(t,[{key:"componentWillMount",value:function(){var e=this;this.refresh(),this.props.appState.onChange(function(){return e.refresh()})}},{key:"refresh",value:function(){this.setState(this.props.appState)}},{key:"getIndicator",value:function(e){return e?"on":"off"}},{key:"getResultViews",value:function(){var e=this;return s.a.debug("getting result views"),this.state.commandResults.map(function(t,n){return V.a.createElement(te,{key:n,content:t,input:t.input,inputHash:t.inputHash,appState:e.props.appState})})}},{key:"toggleEmphasizeBytes",value:function(){this.props.appState.toggleEmphasizeBytes()}},{key:"render",value:function(){var e=this;return V.a.createElement("div",{className:"app-root ".concat(this.state.uiTheme)},V.a.createElement(ne,{appState:this.props.appState}),V.a.createElement("div",{className:"header"},V.a.createElement("h1",null,"Bitwise",V.a.createElement("span",{className:"header-cmd"},"Cmd")),V.a.createElement("ul",{className:"top-links"},V.a.createElement("li",null,V.a.createElement("a",{href:"https://github.com/BorisLevitskiy/BitwiseCmd"},V.a.createElement("i",{className:"icon github"},"\xa0"),V.a.createElement("span",{className:"link-text"},"Project on GitHub"))),V.a.createElement("li",null,V.a.createElement("a",{href:"https://twitter.com/BitwiseCmd"},V.a.createElement("i",{className:"icon twitter"},"\xa0"),V.a.createElement("span",{className:"link-text"},"Twitter"))),V.a.createElement("li",null,V.a.createElement("a",{href:"mailto:bitwisecmd@gmail.com?subject=Feedback"},V.a.createElement("i",{className:"icon feedback"},"\xa0"),V.a.createElement("span",{className:"link-text"},"Send Feedback"))))),V.a.createElement("div",{className:"expressionInput-container"},V.a.createElement(J,{onCommandEntered:function(e){return m.execute(e)}}),V.a.createElement("span",{className:"configPnl"},V.a.createElement("span",{id:"emphasizeBytes","data-cmd":"em",className:"indicator "+this.getIndicator(this.state.emphasizeBytes),title:"Toggle Emphasize Bytes",onClick:function(t){return e.toggleEmphasizeBytes()}},"[em]"))),V.a.createElement("div",{id:"output"},this.getResultViews()))}}]),t}(V.a.Component),ie={encodeHash:function(e){return encodeURI(e.trim().replace(/\s/g,","))},decodeHash:function(e){return decodeURI(e).replace(/^\#/,"").replace(/,/g," ")},getArgs:function(e){var t=this.decodeHash(e),n=[];return function(e){var t=[];e.indexOf("||")?e.split("||").forEach(function(e){e.length>0&&t.push(e)}):t.push(e);return t}(t).forEach(function(e){n.push(e)}),n}};var re,se=n(11),le=n.n(se),oe=(n(23),"bitwisecmd.com"===window.location.host?"prod":"stage");"prod"!=(re=oe)?(s.a.setLevel("debug"),s.a.debug("Log level is set to debug. Env: ".concat(re))):s.a.setLevel("warn");var ue=function(e){var t=u.getPersistedData(),n=new o(t,e);return u.watch(n),s.a.debug("appState initialized",n),n}(oe);T(m,ue),function(){var e=ie.getArgs(window.location.hash),t=["help","127.0.0.1 192.168.0.0/8","1|2&6","4 0b1000000 0x80"];ue.wasOldVersion&&(t=["whatsnew"]);e.length>0&&(t=e);t.forEach(m.execute.bind(m))}();var ce=V.a.createElement(ae,{appState:ue});le.a.render(ce,document.getElementById("root")),s.a.debug("started")}],[[12,1,2]]]); +//# sourceMappingURL=main.6a39483e.chunk.js.map \ No newline at end of file diff --git a/static/js/main.6a39483e.chunk.js.map b/static/js/main.6a39483e.chunk.js.map new file mode 100644 index 0000000..b7663c3 --- /dev/null +++ b/static/js/main.6a39483e.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["expression/numberParser.ts","expression/NumericOperand.ts","expression/ExpressionOperand.ts","core/AppState.ts","core/appStateStore.ts","core/is.ts","core/cmd.ts","models/CommandResult.ts","models/HelpResult.ts","models/AboutResult.ts","models/UnknownCommandResult.ts","models/ExpressionResult.ts","models/ErrorResults.ts","models/WhatsnewResult.ts","models/StringResult.ts","expression/ListOfNumbersExpression.ts","expression/BitwiseOperationExpression.ts","expression/expression.ts","core/formatter.ts","ipaddress/ip.ts","models/IpAddressResult.ts","commands.ts","components/InputBox.tsx","components/CommandLink.tsx","components/results/HelpResultView.tsx","components/results/AboutResultView.tsx","components/results/BinaryString.tsx","components/results/expressions/BitwiseExpressionModel.ts","components/results/expressions/BitwiseOperationExpressionView.tsx","components/results/WhatsNewResultView.tsx","components/results/IpAddressView.tsx","components/DisplayResultView.tsx","components/Indicators.tsx","AppRoot.tsx","core/hash.ts","index.tsx"],"names":["knownParsers","regex","radix","base","prefix","numberParser","NumberParser","parsers","Object","classCallCheck","this","input","_this","map","p","applyParser","reduce","c","n","m","match","length","parser","rawInput","test","value","parseInt","replace","globalId","NumericOperand","id","lengthInBits","isExpression","getBitLength","Math","floor","log","kind","Error","toBaseString","toString","getOtherBase","num","parsed","parse","hexVal","abs","hex","indexOf","substr","ExpressionOperand","expressionString","operand","sign","D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","isShiftExpression","isNotExpression","evaluatedOperand","evaluate","str","create","eval","getUnderlyingOperand","APP_VERSION","AppState","persistData","env","version","emphasizeBytes","debugMode","uiTheme","handlers","commandResults","persistedVersion","wasOldVersion","result","unshift","debug","triggerChanged","handler","push","forEach","h","theme","appStateStore","getPersistedData","json","window","localStorage","getItem","JSON","ex","console","error","watch","appState","onChange","setItem","stringify","getPersistData","is","obj","Array","core_cmd","CmdShell","errorHandler","createClass","key","concat","trim","toLowerCase","findHandler","invokeHandler","e","handleError","cmd","createHandler","canHandle","handle","warn","arguments","filter","cmdResult","err","CommandResult","inputHash","encodeHash","encodeURI","HelpResult","possibleConstructorReturn","getPrototypeOf","call","AboutResult","UnknownCommandResult","message","ExpressionResult","expression","UnhandledErrorResult","_CommandResult","inherits","ErrorResult","_CommandResult2","errorMessage","_this2","WhatsnewResult","StringResult","ListOfNumbersExpression","numbers","maxBitsLength","join","BitwiseOperationExpression","expressions","expressionItems","ExpressionParser","factories","trimmed","i","canCreate","factory","l","number","ListOfNumbersExpressionFactory","matches","exec","split","BitwiseOperationExpressionFactory","fullRegex","lastIndex","normalizeString","operands","normalizedString","parseMatch","substring","addFactory","formatter","formatString","getBase","padLeft","symbol","sb","prototype","slice","ipAddressParser","getMaches","correctInputs","incorrectInputs","ParsingError","v","parsedObjects","parseSingle","parsingErrors","s","invalid","first","second","third","fourth","ipAddress","IpAddress","maskPart","maskBits","IpAddressWithSubnetMask","mask","bits","firstByte","secondByte","thirdByte","fourthByte","octet","IpAddressResult","ipAddresses","commands","command","addCommandResult","clearCommandResults","toggleEmphasizeBytes","setUiTheme","WahtsnewResult","uuid","toggleDebugMode","r","createSubnetMaskIp","canParse","expr","onError","InputBox","props","history","historyIndex","nameInput","focus","react_default","a","createElement","type","ref","onKeyUp","onKeyDown","className","placeholder","target","keyCode","commandInput","onCommandEntered","args","newIndex","preventDefault","React","Component","CommandLink","href","onClick","execute","text","HelpResultView","components_CommandLink","AboutResultView","data-result-type","BinaryStringView","getChildren","index","allowFlipBits","onFlipBit","arr","binaryString","newBinaryString","$event","createBits","splitIntoBytes","bitChars","css","onBitClick","bytes","splice","BitwiseExpressionViewModel","_ref","_ref$emphasizeBytes","_ref$allowFlipBits","items","maxNumberOfBits","max","getLengthInBits","expressionItem","label","resultNumber","getLabel","resultOperand","op","config","model","addOperandRow","getNumberOfBits","len","prev","eo","addExpressionOperandRow","notResult","addExpressionResultRow","addShiftExpressionResultRow","buildListOfNumbers","buildMultiple","BitwiseOperationExpressionView","state","rows","getRows","createModel","itm","BitwiseOperationExpressionView_ExpressionRow","onBitFlipped","forceUpdate","ExpressionRow","_this3","_this4","_this$props","BinaryString_BinaryStringView","getBinaryString","flipBit","getOther","toBinaryString","getLabelString","toOtherKindString","bin","newValue","setValue","WhatsnewResultView","IpAddressView","_React$Component","apply","renderSingleIp","renderMultipleIps","ip","colSpan","byte","firstBitOne","secondBitOne","thirdBitOne","getNetworkClass","toUpperCase","octetNumber","onFlippedBit","setOctet","DisplayResult","content","title","location","pathname","findResultComponent","results_HelpResultView","results_AboutResultView","BitwiseOperationExpressionView_BitwiseOperationExpressionView","results_WhatsNewResultView","ipResult","components_results_IpAddressView","Indicators","list","AppRoot","refresh","setState","DisplayResultView_DisplayResult","components_Indicators","InputBox_InputBox","data-cmd","getIndicator","getResultViews","hash","decodeHash","hashValue","decodeURI","getArgs","decodedHash","values","splitHashList","host","setLevel","stateData","createAppState","hashArgs","startupCommands","bind","executeStartupCommands","root","AppRoot_AppRoot","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.6a39483e.chunk.js","sourcesContent":["import { NumberBase } from \"./expression-interfaces\";\r\n\r\nconst decimalRegex = /^-?\\d+$/;\r\nconst hexRegex = /^-?0x[0-9,a-f]+$/i;\r\nconst binRegex = /^-?0b[0-1]+$/i;\r\nconst operatorRegex = /^<<|>>|<<<|\\&|\\|\\^|~$/;\r\n\r\ninterface ParserConfig {\r\n regex: RegExp,\r\n radix: number,\r\n base: NumberBase,\r\n prefix: string|RegExp\r\n}\r\n\r\nexport interface ParsedNumber {\r\n value: number;\r\n base: NumberBase;\r\n input: string;\r\n}\r\n\r\nvar knownParsers : ParserConfig[] = [\r\n { regex: decimalRegex, radix: 10, base: 'dec', prefix: '^$' },\r\n { regex: hexRegex, radix: 16, base: 'hex', prefix:/0x/i },\r\n { regex: binRegex, radix: 2, base: 'bin', prefix:/0b/i }];\r\n\r\n\r\nclass NumberParser {\r\n\r\n parsers: ParserConfig[];\r\n\r\n constructor(parsers: ParserConfig[])\r\n {\r\n this.parsers = parsers;\r\n }\r\n\r\n parse (input : string) : ParsedNumber | null {\r\n return this.parsers.map(p => this.applyParser(p, input)).reduce((c, n) => c || n);\r\n };\r\n\r\n parseOperator (input: string) : string | null {\r\n var m = input.match(input);\r\n \r\n if(m == null || m.length == 0) {\r\n return null;\r\n }\r\n\r\n return m[0];\r\n };\r\n\r\n applyParser(parser : ParserConfig, rawInput: string) : ParsedNumber | null {\r\n \r\n if(!parser.regex.test(rawInput)) {\r\n return null;\r\n }\r\n \r\n var value = parseInt(rawInput.replace(parser.prefix, ''), parser.radix);\r\n \r\n return {\r\n value: value,\r\n base: parser.base,\r\n input: rawInput\r\n } \r\n }\r\n}\r\n\r\nconst numberParser = new NumberParser(knownParsers);\r\n\r\nexport {numberParser};","import {numberParser} from './numberParser';\r\nimport { ExpressionInputItem, NumberBase } from './expression-interfaces';\r\n\r\nvar globalId : number = 1;\r\n\r\n// Represents numeric value\r\nexport default class NumericOperand implements ExpressionInputItem {\r\n id: number;\r\n value: number;\r\n base: NumberBase;\r\n lengthInBits: number;\r\n isExpression: boolean;\r\n\r\n constructor(value : number, base?: NumberBase) {\r\n this.id = globalId++;\r\n this.value = value;\r\n this.base = base || \"dec\";\r\n this.lengthInBits = NumericOperand.getBitLength(this.value);\r\n this.isExpression = false;\r\n }\r\n \r\n getLengthInBits() {\r\n if(this.value < 0) {\r\n return 32;\r\n }\r\n return Math.floor(Math.log(this.value) / Math.log(2)) + 1;\r\n };\r\n\r\n getOtherBase(kind?: NumberBase) : NumberBase {\r\n switch(kind || this.base) {\r\n case 'dec': \r\n case 'bin':\r\n return 'hex';\r\n case 'hex': return 'dec';\r\n default : throw new Error(kind + \" kind doesn't have opposite kind\")\r\n }\r\n };\r\n\r\n toString(base?: NumberBase) : string {\r\n return NumericOperand.toBaseString(this.value, base || this.base);\r\n }\r\n\r\n toOtherKindString() : string {\r\n return this.toString(this.getOtherBase());\r\n }\r\n\r\n toDecimalString() {\r\n return this.toString('dec');\r\n }\r\n\r\n toHexString() {\r\n return this.toString('hex');\r\n }\r\n\r\n toBinaryString() : string {\r\n return this.toString('bin');\r\n }\r\n\r\n setValue(value : number) {\r\n this.value = value;\r\n this.lengthInBits = NumericOperand.getBitLength(value);\r\n }\r\n\r\n evaluate() : NumericOperand {\r\n return this;\r\n }\r\n\r\n getUnderlyingOperand() : NumericOperand {\r\n return this\r\n }\r\n \r\n static getBitLength(num : number) {\r\n return Math.floor(Math.log(num) / Math.log(2)) + 1;\r\n } \r\n \r\n static getBase(kind : string){\r\n switch (kind){\r\n case 'bin': return 2;\r\n case 'hex': return 16;\r\n case 'dec': return 10;\r\n }\r\n };\r\n\r\n static create(value : number, base? : NumberBase) {\r\n return new NumericOperand(value, base || \"dec\");\r\n };\r\n\r\n static parse(input: string) : NumericOperand {\r\n \r\n var parsed = numberParser.parse(input);\r\n\r\n if(!parsed) {\r\n throw new Error(input + \" is not a valid number\");\r\n }\r\n\r\n return new NumericOperand(parsed.value, parsed.base);\r\n }\r\n\r\n static toBaseString(value : number, base : NumberBase) : string {\r\n switch(base) {\r\n case 'hex':\r\n var hexVal = Math.abs(value).toString(16);\r\n return value >= 0 ? '0x' + hexVal : '-0x' + hexVal;\r\n case 'bin':\r\n return (value>>>0).toString(2);\r\n case 'dec':\r\n return value.toString(10);\r\n default:\r\n throw new Error(\"Unexpected kind: \" + base)\r\n }\r\n };\r\n\r\n static toHexString (hex : string) {\r\n return hex.indexOf('-') === 0 ? '-0x' + hex.substr(1) : '0x' + hex;\r\n };\r\n}","import NumericOperand from './NumericOperand';\r\nimport { ExpressionInputItem } from './expression-interfaces';\r\n\r\nexport default class ExpressionOperand implements ExpressionInputItem {\r\n expressionString: string;\r\n operand: ExpressionInputItem;\r\n sign: string;\r\n isExpression: boolean;\r\n isShiftExpression: boolean;\r\n isNotExpression: boolean;\r\n\r\n constructor(expressionString : string, operand : ExpressionInputItem, sign : string) {\r\n this.expressionString = expressionString;\r\n this.operand = operand;\r\n this.sign = sign;\r\n this.isExpression = true;\r\n this.isShiftExpression = this.sign.indexOf('<') >= 0 || this.sign.indexOf('>')>= 0;\r\n this.isNotExpression = this.sign === '~';\r\n }\r\n \r\n evaluate(operand?: NumericOperand) : NumericOperand {\r\n if (operand instanceof ExpressionOperand) {\r\n throw new Error('value shouldnt be expression'); \r\n }\r\n\r\n var evaluatedOperand = this.operand.evaluate();\r\n\r\n var str = '';\r\n if(this.sign == '~'){\r\n str = '~' + evaluatedOperand.value;\r\n } else {\r\n if(operand == null)\r\n throw new Error(\"Other is required for expression: \" + this.expressionString)\r\n\r\n str = operand.value + this.sign + evaluatedOperand.value;\r\n }\r\n\r\n return NumericOperand.create(eval(str), evaluatedOperand.base);\r\n }\r\n\r\n getUnderlyingOperand() : NumericOperand {\r\n return this.operand.getUnderlyingOperand();\r\n }\r\n\r\n toString(): string {\r\n return this.sign + this.operand.toString();\r\n }\r\n}","import log from 'loglevel';\r\n\r\nconst APP_VERSION = 5;\r\n\r\nexport type PersistedAppData = {\r\n emphasizeBytes: boolean;\r\n uiTheme: string;\r\n version: number;\r\n debugMode: boolean | null;\r\n}\r\n\r\nexport type AppStateChangeHandler = (state: AppState) => void;\r\n\r\nexport default class AppState {\r\n\r\n version: number = APP_VERSION;\r\n emphasizeBytes: boolean;\r\n debugMode: boolean = false;\r\n uiTheme: string;\r\n handlers: AppStateChangeHandler[];\r\n commandResults: any[];\r\n persistedVersion: number;\r\n wasOldVersion: boolean;\r\n env: string; \r\n\r\n constructor(persistData : PersistedAppData, env: string) {\r\n this.commandResults = [];\r\n this.handlers = [];\r\n this.uiTheme = persistData.uiTheme || 'midnight';\r\n this.env = env;\r\n\r\n this.emphasizeBytes = persistData.emphasizeBytes || true;\r\n this.persistedVersion = persistData.version || 0.1;\r\n this.wasOldVersion = persistData.version != null && this.version > this.persistedVersion;\r\n this.debugMode = env !== 'prod' || persistData.debugMode === true;\r\n }\r\n\r\n addCommandResult(result : any) {\r\n this.commandResults.unshift(result);\r\n log.debug(\"result added\", result);\r\n this.triggerChanged();\r\n }\r\n\r\n clearCommandResults() {\r\n this.commandResults = [];\r\n this.triggerChanged();\r\n }\r\n\r\n toggleEmphasizeBytes() {\r\n this.emphasizeBytes = !this.emphasizeBytes;\r\n this.triggerChanged();\r\n }\r\n\r\n onChange(handler : AppStateChangeHandler) {\r\n this.handlers.push(handler);\r\n }\r\n\r\n triggerChanged() {\r\n this.handlers.forEach(h => h(this));\r\n }\r\n\r\n setUiTheme(theme: string) {\r\n this.uiTheme = theme;\r\n this.triggerChanged(); \r\n }\r\n\r\n toggleDebugMode() {\r\n this.debugMode = !this.debugMode;\r\n this.triggerChanged();\r\n }\r\n\r\n getPersistData() : PersistedAppData {\r\n return {\r\n emphasizeBytes: this.emphasizeBytes,\r\n uiTheme: this.uiTheme,\r\n version: this.version,\r\n debugMode: this.debugMode\r\n }\r\n }\r\n};","import AppState, { PersistedAppData } from \"./AppState\";\r\n\r\nconst storeKey = 'AppState';\r\n\r\nexport default {\r\n getPersistedData() : PersistedAppData {\r\n var json = window.localStorage.getItem(storeKey);\r\n if(!json) {\r\n return {} as PersistedAppData;\r\n }\r\n\r\n try {\r\n return JSON.parse(json) as PersistedAppData;\r\n }\r\n catch(ex) {\r\n console.error('Failed to parse AppState json. Json Value: \\n' + json, ex);\r\n return {} as PersistedAppData;;\r\n }\r\n },\r\n\r\n watch (appState: AppState) {\r\n appState.onChange(() => this.persistData(appState));\r\n },\r\n\r\n persistData(appState: AppState) {\r\n localStorage.setItem(storeKey, JSON.stringify(appState.getPersistData()));\r\n }\r\n}","export default {\r\n plainObject: function(obj : any) : boolean {\r\n return typeof obj == \"object\" && !(obj instanceof Array) && obj instanceof Object;\r\n },\r\n\r\n aFunction: function(obj : any) : boolean {\r\n return typeof obj == \"function\";\r\n },\r\n\r\n string: function(obj : any) : boolean {\r\n return typeof obj == \"string\";\r\n },\r\n\r\n array: function(obj : any) : boolean {\r\n return obj instanceof Array;\r\n },\r\n\r\n number: function(obj : any) : boolean {\r\n return typeof obj == \"number\" && !isNaN(obj)\r\n }\r\n}","import is from './is';\r\nimport log from 'loglevel';\r\n\r\nexport type CommandInput = {\r\n input: string;\r\n}\r\n\r\ntype HandleFunction = (input: CommandInput) => void;\r\ntype InputErrorHandler = (input:string, error: Error) => void;\r\n\r\nexport interface ICommandHandler {\r\n canHandle (input:string) : boolean;\r\n handle: HandleFunction;\r\n}\r\n\r\nexport class CmdShell {\r\n debugMode: boolean;\r\n handlers: ICommandHandler[];\r\n errorHandler: InputErrorHandler | null; \r\n constructor() {\r\n this.handlers = [];\r\n this.debugMode = false;\r\n this.errorHandler = null;\r\n };\r\n\r\n execute (rawInput: string) {\r\n\r\n log.debug(`Executing command: ${rawInput}`)\r\n\r\n var input = rawInput.trim().toLowerCase();\r\n var handler = this.findHandler(input);\r\n\r\n if(handler != null) {\r\n if(this.debugMode) {\r\n this.invokeHandler(input, handler);\r\n } else {\r\n try {\r\n this.invokeHandler(input, handler);\r\n } catch (e) {\r\n this.handleError(input, e);\r\n }\r\n }\r\n }\r\n else {\r\n log.debug(`Handled is not found for command: ${rawInput}`)\r\n this.handleError(input, new Error(\"Unsupported expression: \" + input.trim()));\r\n }\r\n };\r\n\r\n onError(h: InputErrorHandler) {\r\n this.errorHandler = h;\r\n }\r\n \r\n command (cmd : string | object, handler? : any) {\r\n var h = this.createHandler(cmd, handler);\r\n if(h == null){\r\n console.warn('unexpected set of arguments: ', JSON.stringify(arguments));\r\n return;\r\n }\r\n\r\n if(!is.aFunction(h.canHandle)) {\r\n console.warn('handler is missing \"canHandle\" function. registration denied.');\r\n return;\r\n }\r\n\r\n if(!is.aFunction(h.handle)) {\r\n console.warn('handler is missing \"handle\" function. registration denied.');\r\n return;\r\n }\r\n\r\n this.handlers.push(h);\r\n };\r\n\r\n createHandler (cmd : string | object, handler : HandleFunction) : ICommandHandler | null {\r\n if(is.plainObject(cmd)) {\r\n return cmd as ICommandHandler;\r\n }\r\n\r\n if(is.string(cmd)) {\r\n return { canHandle: function (input) { return input === cmd; }, handle: handler };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n findHandler (input: string) : ICommandHandler | null {\r\n return this.handlers.filter(h => h.canHandle(input))[0];\r\n };\r\n\r\n invokeHandler (input : string, handler : ICommandHandler) {\r\n\r\n var cmdResult = handler.handle({ input: input});\r\n if(cmdResult != null) {\r\n log.debug(cmdResult);\r\n }\r\n };\r\n\r\n handleError (input: string, err: Error) {\r\n if(this.debugMode)\r\n console.error(input, err);\r\n\r\n if(this.errorHandler != null)\r\n this.errorHandler(input, err);\r\n }\r\n}\r\n\r\nexport default new CmdShell();","export default class CommandResult {\r\n input: string;\r\n inputHash: string;\r\n\r\n constructor(input: string) {\r\n this.input = input;\r\n this.inputHash = this.encodeHash(input);\r\n }\r\n\r\n encodeHash (input: string) {\r\n return encodeURI(input.trim().replace(/\\s/g,','));\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class HelpResult extends CommandResult {\r\n constructor(input: string) {\r\n super(input);\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class AboutResult extends CommandResult {\r\n constructor(input:string) {\r\n super(input);\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class UnknownCommandResult extends CommandResult {\r\n message:string;\r\n constructor(input : string) {\r\n super(input);\r\n this.message = `Sorry, i don''t know what ${input} is :(`;\r\n }\r\n}","import CommandResult from './CommandResult';\r\nimport { ExpressionInput } from '../expression/expression-interfaces';\r\n\r\nexport default class ExpressionResult extends CommandResult {\r\n expression: ExpressionInput;\r\n constructor(input: string, expression: ExpressionInput) {\r\n super(input);\r\n this.expression = expression;\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport class UnhandledErrorResult extends CommandResult {\r\n error: Error;\r\n constructor(input: string, error : Error) {\r\n super(input);\r\n this.error = error;\r\n }\r\n}\r\n\r\nexport class ErrorResult extends CommandResult {\r\n errorMessage: string;\r\n constructor(input: string, errorMessage : string) {\r\n super(input);\r\n this.errorMessage = errorMessage;\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class WhatsnewResult extends CommandResult {\r\n constructor(input: string) {\r\n super(input);\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class StringResult extends CommandResult {\r\n value:string;\r\n constructor(input: string, value : string) {\r\n super(input);\r\n this.value = value;\r\n }\r\n}","import NumericOperand from \"./NumericOperand\";\r\nimport { ExpressionInput, ExpressionInputItem } from \"./expression-interfaces\";\r\n\r\nexport default class ListOfNumbersExpression implements ExpressionInput {\r\n numbers: NumericOperand[];\r\n expressionString: string;\r\n maxBitsLength: number;\r\n\r\n constructor(expressionString: string, numbers: NumericOperand[]) {\r\n this.expressionString = expressionString;\r\n this.numbers = numbers;\r\n this.maxBitsLength = numbers.map(n => n.lengthInBits).reduce((n , c) => n >= c ? n : c, 0);\r\n }\r\n\r\n toString() {\r\n return this.numbers.map(n => n.value.toString()).join(' ');\r\n }\r\n}","import { ExpressionInput, ExpressionInputItem } from \"./expression-interfaces\";\r\n\r\nexport default class BitwiseOperationExpression implements ExpressionInput {\r\n \r\n expressionString: string;\r\n expressionItems: ExpressionInputItem[];\r\n\r\n constructor(expressionString: string, expressions: ExpressionInputItem[]) {\r\n this.expressionString = expressionString;\r\n this.expressionItems = expressions;\r\n }\r\n}","import NumericOperand from './NumericOperand';\r\nimport ExpressionOperand from './ExpressionOperand'\r\nimport ListOfNumbersExpression from './ListOfNumbersExpression';\r\nimport BitwiseOperationExpression from './BitwiseOperationExpression';\r\nimport { ExpressionInput, ExpressionInputItem, NumberBase } from './expression-interfaces';\r\n\r\nexport { default as NumericOperand } from './NumericOperand';\r\nexport { default as ExpressionOperand } from './ExpressionOperand';\r\nexport { default as ListOfNumbersExpression } from './ListOfNumbersExpression';\r\nexport { default as BitwiseOperationExpression } from './BitwiseOperationExpression';\r\n\r\ninterface IExpressionParserFactory {\r\n canCreate: (input: string) => boolean;\r\n create: (input: string) => ExpressionInput;\r\n};\r\n\r\nclass ExpressionParser {\r\n factories: IExpressionParserFactory[];\r\n constructor() {\r\n this.factories = [];\r\n };\r\n\r\n canParse (input: string) : boolean {\r\n var trimmed = input.replace(/^\\s+|\\s+$/, '');\r\n var i = this.factories.length-1;\r\n for(;i>=0;i--) {\r\n if(this.factories[i].canCreate(trimmed) === true){\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n parse (input: string) : ExpressionInput | null {\r\n var trimmed = input.replace(/^\\s+|\\s+$/, '');\r\n var i = 0, l = this.factories.length, factory;\r\n\r\n for(;i {\r\n if(n.trim().length > 0) {\r\n numbers.push(NumericOperand.parse(n.trim()));\r\n }\r\n });\r\n\r\n return new ListOfNumbersExpression(input, numbers);\r\n }\r\n}\r\n\r\nclass BitwiseOperationExpressionFactory implements IExpressionParserFactory {\r\n fullRegex: RegExp;\r\n regex: RegExp;\r\n\r\n constructor() {\r\n this.fullRegex = /^((<<|>>|>>>|\\||\\&|\\^)?(~?-?([b,x,a-f,0-9]+)))+$/;\r\n this.regex = /(<<|>>|>>>|\\||\\&|\\^)?(~?-?(?:[b,x,a-f,0-9]+))/g;\r\n }\r\n\r\n canCreate (input: string) : boolean {\r\n this.fullRegex.lastIndex = 0;\r\n return this.fullRegex.test(this.normalizeString(input));\r\n };\r\n\r\n create (input: string) : ExpressionInput {\r\n var m, operands : ExpressionInputItem[] = [],\r\n normalizedString = this.normalizeString(input);\r\n\r\n while ((m = this.regex.exec(normalizedString)) != null) {\r\n operands.push(this.parseMatch(m));\r\n }\r\n\r\n return new BitwiseOperationExpression(normalizedString, operands)\r\n };\r\n\r\n parseMatch (m:any): ExpressionInputItem {\r\n var input = m[0],\r\n sign = m[1],\r\n num = m[2];\r\n\r\n var parsed = null;\r\n if(num.indexOf('~') == 0) {\r\n parsed = new ExpressionOperand(num, NumericOperand.parse(num.substring(1)), '~');\r\n }\r\n else {\r\n parsed = NumericOperand.parse(num);\r\n }\r\n\r\n if(sign == null) {\r\n return parsed as ExpressionOperand;\r\n } else {\r\n return new ExpressionOperand(input, parsed as NumericOperand, sign);\r\n }\r\n };\r\n\r\n normalizeString (input : string): string {\r\n return input.replace(/\\s+/g,'');\r\n };\r\n}\r\n\r\nvar parser = new ExpressionParser();\r\nparser.addFactory(new ListOfNumbersExpressionFactory());\r\nparser.addFactory(new BitwiseOperationExpressionFactory());\r\n\r\nexport {parser};\r\n","export default {\r\n formatString: function(num: number, kind: string) : string {\r\n return num.toString(getBase(kind || \"bin\"));\r\n },\r\n padLeft: function (str: string, length: number, symbol: string) : string {\r\n var sb = Array.prototype.slice.call(str), symbol = symbol || \"0\";\r\n\r\n if(length == null) {\r\n return str;\r\n }\r\n\r\n while(length > sb.length) {\r\n sb.unshift(symbol);\r\n }\r\n\r\n return sb.join('');\r\n }\r\n};\r\n\r\nfunction getBase(kind:string) : number {\r\n switch (kind){\r\n case 'bin': return 2;\r\n case 'hex': return 16;\r\n case 'dec': return 10;\r\n }\r\n\r\n throw new Error(\"Unsupported kind: \" + kind);\r\n}","import formatter from '../core/formatter';\r\n\r\n\r\nexport type OctetNumber = 1 | 2 | 3 | 4;\r\nexport type NetworkClass = 'a' | 'b' | 'c' | 'd' | 'e';\r\nexport type ParsedIpObject = IpAddress | IpAddressWithSubnetMask;\r\n\r\nconst ipAddressParser = {\r\n parse: function(input: string) : ParsedIpObject[] | ParsingError | null {\r\n\r\n const matches = this.getMaches(input);\r\n const correctInputs = matches.filter(m => m.matches != null);\r\n const incorrectInputs = matches.filter(m => m.matches == null);\r\n \r\n if(correctInputs.length == 0)\r\n return null;\r\n\r\n if(incorrectInputs.length > 0) {\r\n return new ParsingError(`Value(s) ${incorrectInputs.map(v => v.input).join(',')} was not recognized as valid ip address or ip address with a subnet mask`);\r\n }\r\n\r\n const parsedObjects = matches.map(m => this.parseSingle(m.matches!, m.input));\r\n const parsingErrors = parsedObjects.filter(p => p instanceof ParsingError);\r\n\r\n if(parsingErrors.length > 0) {\r\n return parsingErrors[0] as ParsingError;\r\n }\r\n\r\n return parsedObjects as ParsedIpObject[];\r\n \r\n },\r\n\r\n getMaches(input : string) : { matches: RegExpExecArray | null, input: string }[] {\r\n\r\n return input.\r\n replace(/[\\t\\s]+/g, ' ')\r\n .split(' ')\r\n .filter(s => s.length>0)\r\n .map(s => {\r\n const ipV4Regex = /^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})(\\/\\d+)?$/;\r\n const matches = ipV4Regex.exec(s);\r\n \r\n if(matches == null || matches.length === 0)\r\n return {matches: null, input: s};\r\n \r\n return {matches, input: s};\r\n });\r\n },\r\n\r\n parseSingle(matches : RegExpExecArray, input: string) : ParsedIpObject | ParsingError {\r\n const invalid = (n: number) => n < 0 || n > 255;\r\n \r\n const first = parseInt(matches[1]);\r\n const second = parseInt(matches[2]);\r\n const third = parseInt(matches[3]);\r\n const fourth = parseInt(matches[4]);\r\n\r\n if(invalid(first) || invalid(second) || invalid(third) || invalid(fourth))\r\n return new ParsingError(`${input} value doesn't fall within the valid range of the IP address space`);\r\n\r\n const ipAddress = new IpAddress(first, second, third, fourth);\r\n\r\n if(matches[5]) {\r\n const maskPart = matches[5].substr(1);\r\n const maskBits = parseInt(maskPart);\r\n\r\n if(maskBits > 32) {\r\n return new ParsingError(`Subnet mask value in ${input} is out of range`);\r\n }\r\n\r\n return new IpAddressWithSubnetMask(ipAddress, maskBits);\r\n }\r\n\r\n return ipAddress;\r\n }\r\n}\r\n\r\nexport class ParsingError {\r\n errorMessage: string;\r\n constructor(message: string) {\r\n this.errorMessage = message;\r\n }\r\n}\r\n\r\nexport class IpAddressWithSubnetMask {\r\n maskBits: number;\r\n ipAddress: IpAddress;\r\n \r\n constructor(ipAddress : IpAddress, maskBits : number) {\r\n this.ipAddress = ipAddress;\r\n this.maskBits = maskBits;\r\n }\r\n\r\n toString() {\r\n return `${this.ipAddress.toString()}/${this.maskBits}`;\r\n }\r\n\r\n createSubnetMaskIp() : IpAddress {\r\n\r\n const mask = (bits: number) => 255<<(8-bits)&255;\r\n\r\n if(this.maskBits <= 8) {\r\n return new IpAddress(mask(this.maskBits), 0, 0, 0);\r\n }\r\n else if(this.maskBits <= 16) {\r\n return new IpAddress(255, mask(this.maskBits-8), 0, 0);\r\n }\r\n else if(this.maskBits <= 24) {\r\n return new IpAddress(255, 255, mask(this.maskBits-16), 0);\r\n }\r\n else {\r\n return new IpAddress(255, 255, 255, mask(this.maskBits-24));\r\n }\r\n }\r\n}\r\n\r\nexport class IpAddress {\r\n\r\n firstByte : number;\r\n secondByte: number;\r\n thirdByte : number;\r\n fourthByte: number\r\n\r\n constructor(firstByte : number, secondByte: number, thirdByte : number, fourthByte: number) {\r\n this.firstByte = firstByte;\r\n this.secondByte = secondByte;\r\n this.thirdByte = thirdByte;\r\n this.fourthByte = fourthByte;\r\n }\r\n\r\n toString() : string {\r\n return `${this.firstByte}.${this.secondByte}.${this.thirdByte}.${this.fourthByte}`;\r\n }\r\n\r\n setOctet(octet: OctetNumber, value : number) {\r\n switch(octet) {\r\n case 1:\r\n this.firstByte = value;\r\n break;\r\n case 2:\r\n this.secondByte = value;\r\n break;\r\n case 3:\r\n this.thirdByte = value;\r\n break;\r\n case 4:\r\n this.fourthByte = value;\r\n break;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\nconst getNetworkClass = function (ipAddress: IpAddress) : NetworkClass {\r\n const byte = ipAddress.firstByte;\r\n const bineryRep = formatter.formatString(ipAddress.firstByte, 'bin');\r\n\r\n const firstBitOne = (byte & 128) === 128;\r\n const firstBitZero = (byte & 128) === 0;\r\n const secondBitOne = (byte & 64) === 64;\r\n\r\n const thirdBitOne = (byte & 32) === 32;\r\n const thirdBitZero = (byte & 32) === 0;\r\n\r\n const forthBitZero = (byte & 16) === 0;\r\n const forthBitOne = (byte & 16) === 16;\r\n\r\n // e: 1111\r\n\r\n if(firstBitOne && secondBitOne && thirdBitOne && forthBitOne)\r\n return 'e';\r\n\r\n if(firstBitOne && secondBitOne && thirdBitOne && forthBitZero) // Start bits: 1110;\r\n return 'd';\r\n\r\n if(firstBitOne && secondBitOne && thirdBitZero) // Start bits: 110;\r\n return 'c';\r\n \r\n return firstBitOne ? 'b' : 'a';\r\n};\r\n\r\nexport {ipAddressParser, getNetworkClass};","import { IpAddress, ipAddressParser, IpAddressWithSubnetMask } from '../ipaddress/ip';\r\nimport CommandResult from './CommandResult';\r\n\r\nexport default class IpAddressResult extends CommandResult {\r\n ipAddresses: IpAddress[];\r\n constructor(input: string, ipAddresses: IpAddress[]) {\r\n super(input);\r\n this.ipAddresses = ipAddresses;\r\n }\r\n}","import HelpResult from './models/HelpResult';\r\nimport AboutResult from './models/AboutResult';\r\nimport UnknownCommandResult from './models/UnknownCommandResult';\r\nimport ExpressionResult from './models/ExpressionResult';\r\nimport {UnhandledErrorResult, ErrorResult} from './models/ErrorResults';\r\nimport WahtsnewResult from './models/WhatsnewResult';\r\nimport StringResult from './models/StringResult';\r\nimport * as expression from './expression/expression';\r\nimport uuid from 'uuid/v4';\r\nimport { CommandInput, CmdShell } from './core/cmd';\r\nimport { ExpressionInput } from './expression/expression-interfaces';\r\nimport AppState from './core/AppState';\r\nimport {ParsingError, IpAddress, ipAddressParser, IpAddressWithSubnetMask, ParsedIpObject} from './ipaddress/ip'\r\nimport IpAddressResult from './models/IpAddressResult';\r\nimport { isGetAccessor, isPrefixUnaryExpression } from 'typescript';\r\n\r\nexport default {\r\n initialize (cmd: CmdShell, appState: AppState) {\r\n\r\n cmd.debugMode = appState.debugMode;\r\n appState.onChange(() => cmd.debugMode = appState.debugMode);\r\n\r\n cmd.command(\"help\", (c: CommandInput) => appState.addCommandResult(new HelpResult(c.input)));\r\n cmd.command(\"clear\", (c: CommandInput) => appState.clearCommandResults());\r\n cmd.command(\"em\", (c: CommandInput) => appState.toggleEmphasizeBytes());\r\n cmd.command(\"dark\", (c: CommandInput) => appState.setUiTheme('dark'));\r\n cmd.command(\"light\", (c: CommandInput) => appState.setUiTheme('light'));\r\n cmd.command(\"midnight\", (c: CommandInput) => appState.setUiTheme('midnight'));\r\n cmd.command(\"about\", (c: CommandInput) => appState.addCommandResult(new AboutResult(c.input)));\r\n cmd.command(\"whatsnew\", (c: CommandInput) => appState.addCommandResult(new WahtsnewResult(c.input)));\r\n cmd.command(\"guid\", (c: CommandInput) => appState.addCommandResult(new StringResult(c.input, uuid())));\r\n cmd.command(\"-notrack\", (c: CommandInput) => {});\r\n cmd.command(\"-debug\", (c: CommandInput) => {\r\n appState.toggleDebugMode();\r\n appState.addCommandResult(new StringResult(c.input, `Debug Mode: ${appState.debugMode}`))\r\n }); \r\n\r\n\r\n // Ip Addresses\r\n cmd.command({\r\n canHandle: (input:string) => ipAddressParser.parse(input) != null,\r\n handle: function(c: CommandInput) {\r\n var result = ipAddressParser.parse(c.input);\r\n\r\n if(result == null)\r\n return;\r\n\r\n if(result instanceof ParsingError) {\r\n appState.addCommandResult(new ErrorResult(c.input, result.errorMessage));\r\n return;\r\n }\r\n\r\n const ipAddresses : IpAddress[] = [];\r\n \r\n (result as ParsedIpObject[]).forEach(r => {\r\n if(r instanceof IpAddressWithSubnetMask)\r\n {\r\n ipAddresses.push(r.ipAddress);\r\n ipAddresses.push(r.createSubnetMaskIp());\r\n }\r\n else if(r instanceof IpAddress) {\r\n ipAddresses.push(r);\r\n }\r\n });\r\n \r\n appState.addCommandResult(new IpAddressResult(c.input, ipAddresses));\r\n } \r\n })\r\n\r\n // Bitwise Expressions\r\n cmd.command({\r\n canHandle: (input:string) => expression.parser.canParse(input),\r\n handle: function(c: CommandInput) {\r\n var expr = expression.parser.parse(c.input);\r\n appState.addCommandResult(new ExpressionResult(c.input, expr as ExpressionInput));\r\n } \r\n })\r\n\r\n // Last command handler reports that input is unknown\r\n cmd.command({\r\n canHandle: () => true,\r\n handle: (c: CommandInput) => appState.addCommandResult(new UnknownCommandResult(c.input))\r\n });\r\n\r\n cmd.onError((input: string, err: Error) => appState.addCommandResult(new UnhandledErrorResult(input, err)));\r\n }\r\n }","import React from 'react';\r\nimport log from 'loglevel';\r\n\r\nexport interface IInputBoxProps\r\n{\r\n onCommandEntered: (input :string) => void;\r\n}\r\n\r\nexport default class InputBox extends React.Component {\r\n history: string[];\r\n historyIndex: number;\r\n nameInput: HTMLInputElement | null;\r\n\r\n constructor(props: IInputBoxProps) {\r\n super(props);\r\n this.nameInput = null;\r\n this.history = [];\r\n this.historyIndex = -1;\r\n }\r\n\r\n componentDidMount(){\r\n if(this.nameInput != null)\r\n this.nameInput.focus();\r\n }\r\n\r\n render() {\r\n return { this.nameInput = input; }} \r\n onKeyUp={e => this.onKeyUp(e)}\r\n onKeyDown={e => this.onKeyDown(e)}\r\n className=\"expressionInput mono\"\r\n placeholder=\"type expression like '1>>2' or 'help' \"/>;\r\n }\r\n\r\n onKeyUp(e: any) {\r\n var input = e.target;\r\n if (e.keyCode != 13 || input.value.trim().length == 0) {\r\n return;\r\n }\r\n \r\n var commandInput = input.value;\r\n this.history.unshift(commandInput);\r\n this.historyIndex = -1;\r\n\r\n input.value = ''; \r\n this.props.onCommandEntered(commandInput);\r\n }\r\n\r\n onKeyDown(args: any) {\r\n\r\n if(args.keyCode == 38) {\r\n var newIndex = this.historyIndex+1;\r\n\r\n if (this.history.length > newIndex) { // up\r\n args.target.value = this.history[newIndex];\r\n this.historyIndex = newIndex;\r\n }\r\n\r\n args.preventDefault();\r\n return;\r\n }\r\n\r\n if(args.keyCode == 40) {\r\n if(this.historyIndex > 0) { // down\r\n args.target.value = this.history[--this.historyIndex];\r\n }\r\n\r\n args.preventDefault();\r\n }\r\n }\r\n}","import React from 'react';\r\nimport cmd from '../core/cmd';\r\n\r\ntype CommandLinkProps = {\r\n command?:string;\r\n text:string;\r\n}\r\n\r\nfunction CommandLink(props: CommandLinkProps) {\r\n return cmd.execute(props.command || props.text)}>{props.text}\r\n}\r\n\r\nexport default CommandLink;","import React from 'react';\r\nimport CommandLink from '../CommandLink';\r\nimport './HelpResultView.css';\r\n\r\nfunction HelpResultView() {\r\n \r\n return
\r\n
\r\n
\r\n
\r\n Bitiwse Calculation Commands\r\n
    \r\n
  • — type bitwise expression to see result in binary (only positive integers are supported now)
  • \r\n
  • — type one or more numbers to see their binary representations
  • \r\n
\r\n
\r\n
\r\n IP Address Commands\r\n
    \r\n
  • — enter single or multiple ip addresses (separated by space) to see their binary represenation
  • \r\n
  • — subnet mask notiations are support as well
  • \r\n
\r\n
\r\n
\r\n Color Theme Commands\r\n
    \r\n
  • — set Light theme
  • \r\n
  • — set Dark theme
  • \r\n
  • — set Midnight theme
  • \r\n
\r\n
\r\n
\r\n Other Commands\r\n
    \r\n
  • — clear output pane
  • \r\n
  • — display this help
  • \r\n
  • — display changelog
  • \r\n
  • — turn On/Off Emphasize Bytes
  • \r\n
  • — about the app
  • \r\n
  • — generate v4 GUID
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Supported Bitwise Operations
\r\n \r\n \r\n as implemented in JavaScript engine of your browser\r\n \r\n \r\n
    \r\n
  • & — bitwise AND
  • \r\n
  • | — bitwise inclusive OR
  • \r\n
  • ^ — bitwise exclusive XOR
  • \r\n
  • ~ — bitwise NOT
  • \r\n
  • << — left shift
  • \r\n
  • >> — sign propagating right shift
  • \r\n
  • >>> — zero-fill right shift
  • \r\n
\r\n
\r\n
\r\n Tip\r\n

\r\n You can click on bits to flip them in number inputs (e.g. ) or IP addresses (e.g. )\r\n

\r\n
\r\n
\r\n
\r\n
;\r\n}\r\n\r\nexport default HelpResultView;\r\n","import React from 'react'\r\n\r\nfunction AboutResultView() {\r\n\r\n return
\r\n

Created by Borys Levytskyi. Please give it a like if BitwiseCmd has helped you in your work.

\r\n

If you have an idea, suggestion or you've spotted a bug here, please send it to bitwisecmd@gmail.com or tweet on @BitwiseCmd. Your feedback is greatly appreciated.

\r\n

Project on GitHub

\r\n
;\r\n};\r\n\r\nexport default AboutResultView;","import React from 'react';\r\n\r\nexport type BinaryStringViewProps = {\r\n allowFlipBits: boolean;\r\n binaryString: string;\r\n onFlipBit?: (input: FlipBitEventArg) => void;\r\n emphasizeBytes: boolean;\r\n};\r\n\r\nexport type FlipBitEventArg = {\r\n index: number;\r\n binaryString: string;\r\n $event: any;\r\n newBinaryString: string\r\n};\r\n\r\nexport default class BinaryStringView extends React.Component {\r\n render() {\r\n return {this.getChildren()}\r\n }\r\n\r\n onBitClick(index: number, e : any) {\r\n if(!this.props.allowFlipBits || !this.props.onFlipBit) {\r\n return;\r\n }\r\n\r\n if(!this.props.onFlipBit) {\r\n \r\n }\r\n\r\n const arr = this.props.binaryString.split('');\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n const newBinaryString = arr.join('');\r\n\r\n this.props.onFlipBit({ index: index, binaryString: this.props.binaryString, $event: e, newBinaryString }); \r\n }\r\n\r\n getChildren() {\r\n var bits = this.createBits(this.props.binaryString.split(''));\r\n \r\n if(this.props.emphasizeBytes) {\r\n return this.splitIntoBytes(bits);\r\n }\r\n\r\n return bits;\r\n }\r\n\r\n createBits(bitChars:string[]) : JSX.Element[] {\r\n const allowFlipBits = this.props.allowFlipBits || false;\r\n const css = allowFlipBits ? ' flipable' : ''\r\n\r\n return bitChars.map((c, i) => {\r\n var className = c == '0' ? `zero${css}` : `one${css}`;\r\n return this.onBitClick(i, e)}>{c}\r\n });\r\n }\r\n\r\n splitIntoBytes(bits: JSX.Element[]) {\r\n const bytes = [];\r\n\r\n var key = 0;\r\n while(bits.length > 0) {\r\n bytes.push({bits.splice(0, 8)});\r\n }\r\n \r\n return bytes;\r\n }\r\n}","import { NumericOperand, ListOfNumbersExpression, BitwiseOperationExpression, ExpressionOperand } from '../../../expression/expression';\r\nimport { ExpressionInputItem, ExpressionInput } from '../../../expression/expression-interfaces';\r\n\r\ntype Config = {\r\n emphasizeBytes: boolean;\r\n allowFlipBits: boolean;\r\n}\r\n\r\ntype ExpressionItemModel = {\r\n sign: string;\r\n css: string;\r\n expressionItem: ExpressionInputItem;\r\n allowFlipBits: boolean;\r\n label: string;\r\n}\r\n\r\nexport default class BitwiseExpressionViewModel {\r\n\r\n emphasizeBytes: boolean;\r\n items: ExpressionItemModel[];\r\n maxNumberOfBits: number;\r\n allowFlipBits: boolean;\r\n\r\n constructor({ emphasizeBytes = false, allowFlipBits = false} : Config) {\r\n this.emphasizeBytes = emphasizeBytes;\r\n this.items = [];\r\n this.maxNumberOfBits = 0;\r\n this.allowFlipBits = allowFlipBits === true;\r\n }\r\n\r\n static buildListOfNumbers(expr : ListOfNumbersExpression, config : Config) {\r\n var model = new BitwiseExpressionViewModel(config);\r\n expr.numbers.forEach(op => model.addOperandRow(op));\r\n model.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(model.maxNumberOfBits, model.emphasizeBytes);\r\n return model;\r\n }\r\n\r\n static buildMultiple (expr : BitwiseOperationExpression, config : Config) {\r\n\r\n var op = expr.expressionItems[0],\r\n i = 0, len = expr.expressionItems.length,\r\n ex, m = new BitwiseExpressionViewModel(config);\r\n\r\n var prev : NumericOperand | null = null;\r\n\r\n for (;i {\r\n constructor(props: BitwiseOperationExpressionViewProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n render() {\r\n var rows = this.getRows();\r\n if(!rows) {\r\n return null;\r\n }\r\n\r\n return \r\n \r\n {rows}\r\n \r\n
\r\n }\r\n\r\n getRows() : JSX.Element[] | null {\r\n var model = BitwiseExpressionViewModel.createModel(this.props.expression, this.props.emphasizeBytes);\r\n\r\n return model.items.map((itm, i) => \r\n this.onBitFlipped()} />);\r\n }\r\n\r\n onBitFlipped() {\r\n this.forceUpdate();\r\n //this.setState({d:new Date()});\r\n }\r\n}\r\n\r\ntype ExpressionRowProps = {\r\n sign: string, \r\n css: string, \r\n maxNumberOfBits: number, \r\n emphasizeBytes: boolean, \r\n allowFlipBits: boolean, \r\n expressionItem: ExpressionInputItem,\r\n onBitFlipped: any\r\n}\r\n\r\nclass ExpressionRow extends React.Component {\r\n constructor(props: ExpressionRowProps) {\r\n super(props);\r\n this.state = { operand: null };\r\n }\r\n render() {\r\n const { sign, css, maxNumberOfBits, emphasizeBytes, allowFlipBits } = this.props;\r\n \r\n return \r\n {sign}\r\n {this.getLabel()}\r\n \r\n this.flipBit(args)}/>\r\n \r\n {this.getOther()}\r\n ;;\r\n }\r\n\r\n getBinaryString() : string { \r\n return this.props.expressionItem.evaluate().toBinaryString();\r\n }\r\n\r\n getLabel(): string {\r\n\r\n // For expressions like |~2 \r\n // TODO: find a better way...\r\n if(this.props.expressionItem.isExpression) {\r\n const ex = this.props.expressionItem as ExpressionOperand;\r\n return ex.sign + this.getLabelString(ex.getUnderlyingOperand());\r\n }\r\n\r\n return this.getLabelString(this.props.expressionItem.getUnderlyingOperand()); \r\n }\r\n\r\n getOther() {\r\n\r\n if(this.props.expressionItem.isExpression) {\r\n const ex = this.props.expressionItem as ExpressionOperand;\r\n const op = ex.evaluate();\r\n\r\n return op.toString();\r\n }\r\n\r\n return this.props.expressionItem.evaluate().toOtherKindString();\r\n }\r\n\r\n getLabelString (op: NumericOperand) : string {\r\n return op.toString(op.base == 'bin' ? 'dec' : op.base);\r\n }\r\n\r\n flipBit(args: FlipBitEventArg) { \r\n\r\n const op = this.props.expressionItem.getUnderlyingOperand();\r\n const { index, binaryString } = args;\r\n\r\n var arr = binaryString.split('');\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n var bin = arr.join('');\r\n\r\n var newValue = parseInt(bin, 2);\r\n op.setValue(newValue);\r\n\r\n this.props.onBitFlipped();\r\n }\r\n}","import React from 'react';\r\nimport CommandLink from '../CommandLink';\r\nimport './WhatsNewResultView.css';\r\n\r\nfunction WhatsnewResultView() {\r\n \r\n return
\r\n

Changelog

\r\n
\r\n

Jun 14th, 2021
\r\n Added support of ip addresses and subnet masks notatioans. Try them out: \r\n

\r\n
    \r\n
  • Single IP address
  • \r\n
  • Multiple IP addresses and subnet mask notations
  • \r\n
\r\n \r\n
\r\n
\r\n

Jun 6th, 2017
\r\n Added command. Use it for generating v4 GUIDs

\r\n
\r\n
\r\n

May 27th, 2017
\r\n Added support of binary number notation (e.g. ).

\r\n
\r\n
\r\n

May 20th, 2017
\r\n New theme added.

\r\n
\r\n
\r\n

May 16th, 2017
\r\n Complete rewrite using React. Old implementation is available at http://bitwisecmd.com/old. Please let me know if you have problems with this release by creating issue in Github Repo.

\r\n
\r\n
;\r\n}\r\n\r\nexport default WhatsnewResultView;","import React from 'react';\r\nimport { IpAddress, OctetNumber, getNetworkClass } from '../../ipaddress/ip';\r\nimport formatter from '../../core/formatter'\r\nimport BinaryStringView from './BinaryString';\r\nimport './IpAddressView.css';\r\ntype IpAddressViewProps = {\r\n ipAddresses: IpAddress[]\r\n};\r\n\r\nexport class IpAddressView extends React.Component \r\n{\r\n \r\n render() {\r\n if(this.props.ipAddresses.length === 1)\r\n return this.renderSingleIp(this.props.ipAddresses[0]);\r\n \r\n return this.renderMultipleIps();\r\n }\r\n\r\n renderMultipleIps() {\r\n return \r\n \r\n {this.props.ipAddresses.map((ip, i) => \r\n \r\n \r\n )}\r\n \r\n
{ip.toString()}\r\n {this.bin(ip.firstByte, 1, ip)}.{this.bin(ip.secondByte, 2, ip)}.{this.bin(ip.thirdByte, 3, ip)}.{this.bin(ip.fourthByte, 4, ip)}\r\n
\r\n }\r\n\r\n renderSingleIp(ip: IpAddress) {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{ip.firstByte}{ip.secondByte}{ip.thirdByte}{ip.fourthByte}
{this.bin(ip.firstByte, 1, ip)}{this.bin(ip.secondByte, 2, ip)}{this.bin(ip.thirdByte, 3, ip)}{this.bin(ip.fourthByte, 4, ip)}
\r\n Network Class: {getNetworkClass(ip).toUpperCase()}\r\n
;\r\n }\r\n\r\n bin(value: number, octetNumber: OctetNumber, ip: IpAddress) {\r\n return this.onFlippedBit(e.newBinaryString, octetNumber, ip)} />;\r\n }\r\n \r\n onFlippedBit(binaryString: string, number: OctetNumber, ip : IpAddress) {\r\n ip.setOctet(number, parseInt(binaryString, 2));\r\n this.forceUpdate();\r\n }\r\n};\r\n\r\nfunction fmt(num: number) : string {\r\n return formatter.padLeft(formatter.formatString(num, 'bin'), 8, '0');\r\n}\r\n\r\nexport default IpAddressView;","import React from 'react';\r\nimport HelpResult from '../models/HelpResult';\r\nimport AboutResult from '../models/AboutResult';\r\nimport HelpResultView from './results/HelpResultView';\r\nimport AboutResultView from './results/AboutResultView';\r\nimport ExpressionResult from '../models/ExpressionResult';\r\nimport BitwiseOperationExpressionView from './results/expressions/BitwiseOperationExpressionView';\r\nimport WhatsnewResult from '../models/WhatsnewResult';\r\nimport WhatsnewResultView from './results/WhatsNewResultView';\r\nimport {UnhandledErrorResult, ErrorResult} from '../models/ErrorResults';\r\nimport StringResult from '../models/StringResult';\r\nimport IpAddressView from './results/IpAddressView';\r\n\r\nimport CommandResult from '../models/CommandResult';\r\nimport AppState from '../core/AppState';\r\nimport IpAddressResult from '../models/IpAddressResult';\r\n\r\ntype DisplayResultProps = {\r\n content : CommandResult,\r\n appState: AppState,\r\n inputHash: string,\r\n input: string,\r\n key: number\r\n}\r\n\r\nexport default class DisplayResult extends React.Component {\r\n render() {\r\n\r\n return
\r\n
>{this.props.content.input}#
\r\n
\r\n {this.findResultComponent(this.props.content)}\r\n
\r\n
;\r\n }\r\n\r\n findResultComponent(result: CommandResult) : JSX.Element {\r\n\r\n if(result instanceof HelpResult) {\r\n return \r\n }\r\n\r\n if(result instanceof AboutResult) {\r\n return \r\n }\r\n\r\n if(result instanceof ExpressionResult) {\r\n return \r\n }\r\n\r\n if(result instanceof WhatsnewResult) {\r\n return \r\n }\r\n\r\n if(result instanceof StringResult) {\r\n return

{result.value}

\r\n }\r\n\r\n if (result instanceof UnhandledErrorResult) {\r\n return
\r\n
(X_X) Ooops.. Something ain' right: {result.error.message}
\r\n
\r\n }\r\n\r\n if (result instanceof ErrorResult) {\r\n return
\r\n
{result.errorMessage}
\r\n
\r\n }\r\n\r\n if(result instanceof IpAddressResult) {\r\n const ipResult = result as IpAddressResult;\r\n\r\n return \r\n }\r\n\r\n return
\r\n
¯\\_(ツ)_/¯ Sorry, i don′t know what {this.props.content.input} is
\r\n
\r\n }\r\n}","import AppState from \"../core/AppState\";\r\nimport React from \"react\";\r\n\r\ntype IndicatorsProps = {\r\n appState: AppState\r\n};\r\n\r\nfunction Indicators(props: IndicatorsProps) {\r\n\r\n const list = [];\r\n const state = props.appState;\r\n\r\n if(props.appState.env != 'prod') {\r\n list.push(state.env);\r\n }\r\n\r\n if(props.appState.debugMode) {\r\n list.push(\"debug\");\r\n }\r\n\r\n if(localStorage.getItem('TrackAnalytics') === 'false') {\r\n list.push(\"notrack\");\r\n }\r\n\r\n if(list.length == 0)\r\n return null;\r\n\r\n return
\r\n {list.map(i => {i} )}\r\n
\r\n}\r\n\r\nexport default Indicators;","import React from 'react';\r\nimport InputBox from './components/InputBox';\r\nimport DisplayResultView from './components/DisplayResultView';\r\nimport AppState from './core/AppState';\r\nimport cmd from './core/cmd';\r\nimport CommandResult from './models/CommandResult';\r\nimport log from 'loglevel';\r\nimport Indicators from './components/Indicators';\r\nimport CommandLink from './components/CommandLink';\r\n\r\ntype AppRootProps = {\r\n appState: AppState, \r\n};\r\n\r\ntype AppRootState = {\r\n uiTheme: string,\r\n emphasizeBytes: boolean,\r\n commandResults: CommandResult[]\r\n}\r\n\r\nexport default class AppRoot extends React.Component {\r\n \r\n componentWillMount() {\r\n this.refresh();\r\n this.props.appState.onChange(() => this.refresh());\r\n }\r\n\r\n refresh() {\r\n this.setState(this.props.appState);\r\n }\r\n \r\n getIndicator(value : boolean) {\r\n return value ? 'on' : 'off';\r\n }\r\n\r\n getResultViews() : JSX.Element[] {\r\n log.debug('getting result views')\r\n var results = this.state.commandResults.map((r, i) => );\r\n return results;\r\n }\r\n\r\n toggleEmphasizeBytes() {\r\n this.props.appState.toggleEmphasizeBytes();\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n

BitwiseCmd\r\n

\r\n \r\n
\r\n\r\n
\r\n cmd.execute(input)} />\r\n\r\n \r\n this.toggleEmphasizeBytes()}>[em]\r\n \r\n
\r\n\r\n
\r\n {this.getResultViews()}\r\n
\r\n
;\r\n }\r\n}","export default {\r\n encodeHash: function(input:string):string {\r\n return encodeURI(input.trim().replace(/\\s/g,','));\r\n },\r\n decodeHash: function(hashValue:string):string {\r\n return decodeURI(hashValue).replace(/^\\#/, '').replace(/,/g,' ');\r\n },\r\n getArgs: function (hashValue:string) : string[] {\r\n\r\n var decodedHash = this.decodeHash(hashValue);\r\n var args : string[] = [];\r\n\r\n splitHashList(decodedHash).forEach(function(value) {\r\n args.push(value);\r\n });\r\n\r\n return args;\r\n }\r\n};\r\n\r\nfunction splitHashList(str: string) : string[] {\r\n var values = [];\r\n\r\n if(str.indexOf('||')) {\r\n str.split('||').forEach(function (v) {\r\n if (v.length > 0) {\r\n values.push(v);\r\n }\r\n });\r\n } else {\r\n values.push(str);\r\n }\r\n\r\n return values;\r\n}","import AppState from './core/AppState';\r\nimport appStateStore from './core/appStateStore';\r\nimport cmd from './core/cmd';\r\nimport commands from './commands';\r\nimport AppRoot from './AppRoot';\r\nimport hash from './core/hash';\r\nimport log from 'loglevel';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\n\r\nconst env = window.location.host === \"bitwisecmd.com\" ? 'prod' : 'stage';\r\nsetupLogger(env);\r\n\r\nconst appState = createAppState(env);\r\n\r\ncommands.initialize(cmd, appState);\r\n\r\nexecuteStartupCommands();\r\n\r\nvar root = ;\r\nReactDOM.render(root, document.getElementById('root'));\r\n\r\nlog.debug(\"started\");\r\n\r\nfunction createAppState(env:string) {\r\n var stateData = appStateStore.getPersistedData();\r\n const appState = new AppState(stateData, env);\r\n appStateStore.watch(appState);\r\n log.debug(\"appState initialized\", appState);\r\n return appState;\r\n}\r\n\r\nfunction setupLogger(env: Env) {\r\n if(env != 'prod'){\r\n log.setLevel(\"debug\");\r\n log.debug(`Log level is set to debug. Env: ${env}`)\r\n } else {\r\n log.setLevel(\"warn\");\r\n }\r\n}\r\n\r\nfunction executeStartupCommands() {\r\n var hashArgs = hash.getArgs(window.location.hash);\r\n\r\n var startupCommands = ['help', '127.0.0.1 192.168.0.0/8', '1|2&6','4 0b1000000 0x80'];\r\n\r\n if(appState.wasOldVersion) {\r\n startupCommands = [\"whatsnew\"];\r\n }\r\n\r\n if(hashArgs.length > 0) {\r\n startupCommands = hashArgs;\r\n }\r\n\r\n startupCommands.forEach(cmd.execute.bind(cmd));\r\n}\r\n\r\ntype Env = 'prod' | 'stage';\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.7380a68e.chunk.js.map b/static/js/main.7380a68e.chunk.js.map deleted file mode 100644 index 423889f..0000000 --- a/static/js/main.7380a68e.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["expression/numberParser.ts","expression/NumericOperand.ts","expression/ExpressionOperand.ts","core/AppState.ts","core/appStateStore.ts","core/is.ts","core/cmd.ts","models/CommandResult.ts","models/HelpResult.ts","models/AboutResult.ts","models/UnknownCommandResult.ts","models/ExpressionResult.ts","models/ErrorResults.ts","models/WhatsnewResult.ts","models/StringResult.ts","expression/ListOfNumbersExpression.ts","expression/BitwiseOperationExpression.ts","expression/expression.ts","core/formatter.ts","ipaddress/ip.ts","models/IpAddressResult.ts","commands.ts","components/InputBox.tsx","components/CommandLink.tsx","components/results/HelpResultView.tsx","components/results/AboutResultView.tsx","components/results/BinaryString.tsx","components/results/expressions/BitwiseExpressionModel.ts","components/results/expressions/BitwiseOperationExpressionView.tsx","components/results/WhatsNewResultView.tsx","components/results/IpAddressView.tsx","components/DisplayResultView.tsx","components/Indicators.tsx","AppRoot.tsx","core/hash.ts","index.tsx"],"names":["knownParsers","regex","radix","base","prefix","numberParser","NumberParser","parsers","Object","classCallCheck","this","input","_this","map","p","applyParser","reduce","c","n","m","match","length","parser","rawInput","test","value","parseInt","replace","globalId","NumericOperand","id","lengthInBits","isExpression","getBitLength","Math","floor","log","kind","Error","toBaseString","toString","getOtherBase","num","parsed","parse","hexVal","abs","hex","indexOf","substr","ExpressionOperand","expressionString","operand","sign","D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","isShiftExpression","isNotExpression","evaluatedOperand","evaluate","str","create","eval","getUnderlyingOperand","APP_VERSION","AppState","persistData","env","version","emphasizeBytes","debugMode","uiTheme","handlers","commandResults","persistedVersion","wasOldVersion","result","unshift","debug","triggerChanged","handler","push","forEach","h","theme","appStateStore","getPersistedData","json","window","localStorage","getItem","JSON","ex","console","error","watch","appState","onChange","setItem","stringify","getPersistData","is","obj","Array","core_cmd","CmdShell","errorHandler","createClass","key","concat","trim","toLowerCase","findHandler","invokeHandler","e","handleError","cmd","createHandler","canHandle","handle","warn","arguments","filter","cmdResult","err","CommandResult","inputHash","encodeHash","encodeURI","HelpResult","possibleConstructorReturn","getPrototypeOf","call","AboutResult","UnknownCommandResult","message","ExpressionResult","expression","UnhandledErrorResult","_CommandResult","inherits","ErrorResult","_CommandResult2","errorMessage","_this2","WhatsnewResult","StringResult","ListOfNumbersExpression","numbers","maxBitsLength","join","BitwiseOperationExpression","expressions","expressionItems","ExpressionParser","factories","trimmed","i","canCreate","factory","l","number","ListOfNumbersExpressionFactory","matches","exec","split","BitwiseOperationExpressionFactory","fullRegex","lastIndex","normalizeString","operands","normalizedString","parseMatch","substring","addFactory","formatter","formatString","getBase","padLeft","symbol","sb","prototype","slice","ipAddressParser","getMaches","correctInputs","incorrectInputs","ParsingError","v","parsedObjects","parseSingle","parsingErrors","s","invalid","first","second","third","fourth","ipAddress","IpAddress","maskPart","maskBits","IpAddressWithSubnetMask","mask","bits","firstByte","secondByte","thirdByte","fourthByte","octet","IpAddressResult","ipAddresses","commands","command","addCommandResult","clearCommandResults","toggleEmphasizeBytes","setUiTheme","WahtsnewResult","uuid","toggleDebugMode","r","createSubnetMaskIp","canParse","expr","onError","InputBox","props","history","historyIndex","nameInput","focus","react_default","a","createElement","type","ref","onKeyUp","onKeyDown","className","placeholder","target","keyCode","commandInput","onCommandEntered","args","newIndex","preventDefault","React","Component","CommandLink","href","onClick","execute","text","HelpResultView","components_CommandLink","AboutResultView","data-result-type","BinaryStringView","getChildren","index","allowFlipBits","onFlipBit","arr","binaryString","newBinaryString","$event","createBits","splitIntoBytes","bitChars","css","onBitClick","bytes","splice","BitwiseExpressionViewModel","_ref","_ref$emphasizeBytes","_ref$allowFlipBits","items","maxNumberOfBits","max","getLengthInBits","expressionItem","label","resultNumber","getLabel","resultOperand","op","config","model","addOperandRow","getNumberOfBits","len","prev","eo","addExpressionOperandRow","notResult","addExpressionResultRow","addShiftExpressionResultRow","buildListOfNumbers","buildMultiple","BitwiseOperationExpressionView","state","rows","getRows","createModel","itm","BitwiseOperationExpressionView_ExpressionRow","onBitFlipped","forceUpdate","ExpressionRow","_this3","_this4","_this$props","BinaryString_BinaryStringView","getBinaryString","flipBit","getOther","toBinaryString","getLabelString","toOtherKindString","bin","newValue","setValue","WhatsnewResultView","IpAddressView","_React$Component","apply","renderSingleIp","renderMultipleIps","ip","colSpan","byte","firstBitOne","secondBitOne","thirdBitOne","getNetworkClass","toUpperCase","octetNumber","onFlippedBit","setOctet","DisplayResult","content","title","location","pathname","findResultComponent","results_HelpResultView","results_AboutResultView","BitwiseOperationExpressionView_BitwiseOperationExpressionView","results_WhatsNewResultView","ipResult","components_results_IpAddressView","Indicators","list","AppRoot","refresh","setState","DisplayResultView_DisplayResult","components_Indicators","InputBox_InputBox","data-cmd","getIndicator","getResultViews","hash","decodeHash","hashValue","decodeURI","getArgs","decodedHash","values","splitHashList","host","setLevel","stateData","createAppState","hashArgs","startupCommands","bind","executeStartupCommands","root","AppRoot_AppRoot","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.7380a68e.chunk.js","sourcesContent":["import { NumberBase } from \"./expression-interfaces\";\r\n\r\nconst decimalRegex = /^-?\\d+$/;\r\nconst hexRegex = /^-?0x[0-9,a-f]+$/i;\r\nconst binRegex = /^-?0b[0-1]+$/i;\r\nconst operatorRegex = /^<<|>>|<<<|\\&|\\|\\^|~$/;\r\n\r\ninterface ParserConfig {\r\n regex: RegExp,\r\n radix: number,\r\n base: NumberBase,\r\n prefix: string|RegExp\r\n}\r\n\r\nexport interface ParsedNumber {\r\n value: number;\r\n base: NumberBase;\r\n input: string;\r\n}\r\n\r\nvar knownParsers : ParserConfig[] = [\r\n { regex: decimalRegex, radix: 10, base: 'dec', prefix: '^$' },\r\n { regex: hexRegex, radix: 16, base: 'hex', prefix:/0x/i },\r\n { regex: binRegex, radix: 2, base: 'bin', prefix:/0b/i }];\r\n\r\n\r\nclass NumberParser {\r\n\r\n parsers: ParserConfig[];\r\n\r\n constructor(parsers: ParserConfig[])\r\n {\r\n this.parsers = parsers;\r\n }\r\n\r\n parse (input : string) : ParsedNumber | null {\r\n return this.parsers.map(p => this.applyParser(p, input)).reduce((c, n) => c || n);\r\n };\r\n\r\n parseOperator (input: string) : string | null {\r\n var m = input.match(input);\r\n \r\n if(m == null || m.length == 0) {\r\n return null;\r\n }\r\n\r\n return m[0];\r\n };\r\n\r\n applyParser(parser : ParserConfig, rawInput: string) : ParsedNumber | null {\r\n \r\n if(!parser.regex.test(rawInput)) {\r\n return null;\r\n }\r\n \r\n var value = parseInt(rawInput.replace(parser.prefix, ''), parser.radix);\r\n \r\n return {\r\n value: value,\r\n base: parser.base,\r\n input: rawInput\r\n } \r\n }\r\n}\r\n\r\nconst numberParser = new NumberParser(knownParsers);\r\n\r\nexport {numberParser};","import {numberParser} from './numberParser';\r\nimport { ExpressionInputItem, NumberBase } from './expression-interfaces';\r\n\r\nvar globalId : number = 1;\r\n\r\n// Represents numeric value\r\nexport default class NumericOperand implements ExpressionInputItem {\r\n id: number;\r\n value: number;\r\n base: NumberBase;\r\n lengthInBits: number;\r\n isExpression: boolean;\r\n\r\n constructor(value : number, base?: NumberBase) {\r\n this.id = globalId++;\r\n this.value = value;\r\n this.base = base || \"dec\";\r\n this.lengthInBits = NumericOperand.getBitLength(this.value);\r\n this.isExpression = false;\r\n }\r\n \r\n getLengthInBits() {\r\n if(this.value < 0) {\r\n return 32;\r\n }\r\n return Math.floor(Math.log(this.value) / Math.log(2)) + 1;\r\n };\r\n\r\n getOtherBase(kind?: NumberBase) : NumberBase {\r\n switch(kind || this.base) {\r\n case 'dec': \r\n case 'bin':\r\n return 'hex';\r\n case 'hex': return 'dec';\r\n default : throw new Error(kind + \" kind doesn't have opposite kind\")\r\n }\r\n };\r\n\r\n toString(base?: NumberBase) : string {\r\n return NumericOperand.toBaseString(this.value, base || this.base);\r\n }\r\n\r\n toOtherKindString() : string {\r\n return this.toString(this.getOtherBase());\r\n }\r\n\r\n toDecimalString() {\r\n return this.toString('dec');\r\n }\r\n\r\n toHexString() {\r\n return this.toString('hex');\r\n }\r\n\r\n toBinaryString() : string {\r\n return this.toString('bin');\r\n }\r\n\r\n setValue(value : number) {\r\n this.value = value;\r\n this.lengthInBits = NumericOperand.getBitLength(value);\r\n }\r\n\r\n evaluate() : NumericOperand {\r\n return this;\r\n }\r\n\r\n getUnderlyingOperand() : NumericOperand {\r\n return this\r\n }\r\n \r\n static getBitLength(num : number) {\r\n return Math.floor(Math.log(num) / Math.log(2)) + 1;\r\n } \r\n \r\n static getBase(kind : string){\r\n switch (kind){\r\n case 'bin': return 2;\r\n case 'hex': return 16;\r\n case 'dec': return 10;\r\n }\r\n };\r\n\r\n static create(value : number, base? : NumberBase) {\r\n return new NumericOperand(value, base || \"dec\");\r\n };\r\n\r\n static parse(input: string) : NumericOperand {\r\n \r\n var parsed = numberParser.parse(input);\r\n\r\n if(!parsed) {\r\n throw new Error(input + \" is not a valid number\");\r\n }\r\n\r\n return new NumericOperand(parsed.value, parsed.base);\r\n }\r\n\r\n static toBaseString(value : number, base : NumberBase) : string {\r\n switch(base) {\r\n case 'hex':\r\n var hexVal = Math.abs(value).toString(16);\r\n return value >= 0 ? '0x' + hexVal : '-0x' + hexVal;\r\n case 'bin':\r\n return (value>>>0).toString(2);\r\n case 'dec':\r\n return value.toString(10);\r\n default:\r\n throw new Error(\"Unexpected kind: \" + base)\r\n }\r\n };\r\n\r\n static toHexString (hex : string) {\r\n return hex.indexOf('-') === 0 ? '-0x' + hex.substr(1) : '0x' + hex;\r\n };\r\n}","import NumericOperand from './NumericOperand';\r\nimport { ExpressionInputItem } from './expression-interfaces';\r\n\r\nexport default class ExpressionOperand implements ExpressionInputItem {\r\n expressionString: string;\r\n operand: ExpressionInputItem;\r\n sign: string;\r\n isExpression: boolean;\r\n isShiftExpression: boolean;\r\n isNotExpression: boolean;\r\n\r\n constructor(expressionString : string, operand : ExpressionInputItem, sign : string) {\r\n this.expressionString = expressionString;\r\n this.operand = operand;\r\n this.sign = sign;\r\n this.isExpression = true;\r\n this.isShiftExpression = this.sign.indexOf('<') >= 0 || this.sign.indexOf('>')>= 0;\r\n this.isNotExpression = this.sign === '~';\r\n }\r\n \r\n evaluate(operand?: NumericOperand) : NumericOperand {\r\n if (operand instanceof ExpressionOperand) {\r\n throw new Error('value shouldnt be expression'); \r\n }\r\n\r\n var evaluatedOperand = this.operand.evaluate();\r\n\r\n var str = '';\r\n if(this.sign == '~'){\r\n str = '~' + evaluatedOperand.value;\r\n } else {\r\n if(operand == null)\r\n throw new Error(\"Other is required for expression: \" + this.expressionString)\r\n\r\n str = operand.value + this.sign + evaluatedOperand.value;\r\n }\r\n\r\n return NumericOperand.create(eval(str), evaluatedOperand.base);\r\n }\r\n\r\n getUnderlyingOperand() : NumericOperand {\r\n return this.operand.getUnderlyingOperand();\r\n }\r\n\r\n toString(): string {\r\n return this.sign + this.operand.toString();\r\n }\r\n}","import log from 'loglevel';\r\n\r\nconst APP_VERSION = 5;\r\n\r\nexport type PersistedAppData = {\r\n emphasizeBytes: boolean;\r\n uiTheme: string;\r\n version: number;\r\n debugMode: boolean | null;\r\n}\r\n\r\nexport type AppStateChangeHandler = (state: AppState) => void;\r\n\r\nexport default class AppState {\r\n\r\n version: number = APP_VERSION;\r\n emphasizeBytes: boolean;\r\n debugMode: boolean = false;\r\n uiTheme: string;\r\n handlers: AppStateChangeHandler[];\r\n commandResults: any[];\r\n persistedVersion: number;\r\n wasOldVersion: boolean;\r\n env: string; \r\n\r\n constructor(persistData : PersistedAppData, env: string) {\r\n this.commandResults = [];\r\n this.handlers = [];\r\n this.uiTheme = persistData.uiTheme || 'midnight';\r\n this.env = env;\r\n\r\n this.emphasizeBytes = persistData.emphasizeBytes || true;\r\n this.persistedVersion = persistData.version || 0.1;\r\n this.wasOldVersion = persistData.version != null && this.version > this.persistedVersion;\r\n this.debugMode = env !== 'prod' || persistData.debugMode === true;\r\n }\r\n\r\n addCommandResult(result : any) {\r\n this.commandResults.unshift(result);\r\n log.debug(\"result added\", result);\r\n this.triggerChanged();\r\n }\r\n\r\n clearCommandResults() {\r\n this.commandResults = [];\r\n this.triggerChanged();\r\n }\r\n\r\n toggleEmphasizeBytes() {\r\n this.emphasizeBytes = !this.emphasizeBytes;\r\n this.triggerChanged();\r\n }\r\n\r\n onChange(handler : AppStateChangeHandler) {\r\n this.handlers.push(handler);\r\n }\r\n\r\n triggerChanged() {\r\n this.handlers.forEach(h => h(this));\r\n }\r\n\r\n setUiTheme(theme: string) {\r\n this.uiTheme = theme;\r\n this.triggerChanged(); \r\n }\r\n\r\n toggleDebugMode() {\r\n this.debugMode = !this.debugMode;\r\n this.triggerChanged();\r\n }\r\n\r\n getPersistData() : PersistedAppData {\r\n return {\r\n emphasizeBytes: this.emphasizeBytes,\r\n uiTheme: this.uiTheme,\r\n version: this.version,\r\n debugMode: this.debugMode\r\n }\r\n }\r\n};","import AppState, { PersistedAppData } from \"./AppState\";\r\n\r\nconst storeKey = 'AppState';\r\n\r\nexport default {\r\n getPersistedData() : PersistedAppData {\r\n var json = window.localStorage.getItem(storeKey);\r\n if(!json) {\r\n return {} as PersistedAppData;\r\n }\r\n\r\n try {\r\n return JSON.parse(json) as PersistedAppData;\r\n }\r\n catch(ex) {\r\n console.error('Failed to parse AppState json. Json Value: \\n' + json, ex);\r\n return {} as PersistedAppData;;\r\n }\r\n },\r\n\r\n watch (appState: AppState) {\r\n appState.onChange(() => this.persistData(appState));\r\n },\r\n\r\n persistData(appState: AppState) {\r\n localStorage.setItem(storeKey, JSON.stringify(appState.getPersistData()));\r\n }\r\n}","export default {\r\n plainObject: function(obj : any) : boolean {\r\n return typeof obj == \"object\" && !(obj instanceof Array) && obj instanceof Object;\r\n },\r\n\r\n aFunction: function(obj : any) : boolean {\r\n return typeof obj == \"function\";\r\n },\r\n\r\n string: function(obj : any) : boolean {\r\n return typeof obj == \"string\";\r\n },\r\n\r\n array: function(obj : any) : boolean {\r\n return obj instanceof Array;\r\n },\r\n\r\n number: function(obj : any) : boolean {\r\n return typeof obj == \"number\" && !isNaN(obj)\r\n }\r\n}","import is from './is';\r\nimport log from 'loglevel';\r\n\r\nexport type CommandInput = {\r\n input: string;\r\n}\r\n\r\ntype HandleFunction = (input: CommandInput) => void;\r\ntype InputErrorHandler = (input:string, error: Error) => void;\r\n\r\nexport interface ICommandHandler {\r\n canHandle (input:string) : boolean;\r\n handle: HandleFunction;\r\n}\r\n\r\nexport class CmdShell {\r\n debugMode: boolean;\r\n handlers: ICommandHandler[];\r\n errorHandler: InputErrorHandler | null; \r\n constructor() {\r\n this.handlers = [];\r\n this.debugMode = false;\r\n this.errorHandler = null;\r\n };\r\n\r\n execute (rawInput: string) {\r\n\r\n log.debug(`Executing command: ${rawInput}`)\r\n\r\n var input = rawInput.trim().toLowerCase();\r\n var handler = this.findHandler(input);\r\n\r\n if(handler != null) {\r\n if(this.debugMode) {\r\n this.invokeHandler(input, handler);\r\n } else {\r\n try {\r\n this.invokeHandler(input, handler);\r\n } catch (e) {\r\n this.handleError(input, e);\r\n }\r\n }\r\n }\r\n else {\r\n log.debug(`Handled is not found for command: ${rawInput}`)\r\n this.handleError(input, new Error(\"Unsupported expression: \" + input.trim()));\r\n }\r\n };\r\n\r\n onError(h: InputErrorHandler) {\r\n this.errorHandler = h;\r\n }\r\n \r\n command (cmd : string | object, handler? : any) {\r\n var h = this.createHandler(cmd, handler);\r\n if(h == null){\r\n console.warn('unexpected set of arguments: ', JSON.stringify(arguments));\r\n return;\r\n }\r\n\r\n if(!is.aFunction(h.canHandle)) {\r\n console.warn('handler is missing \"canHandle\" function. registration denied.');\r\n return;\r\n }\r\n\r\n if(!is.aFunction(h.handle)) {\r\n console.warn('handler is missing \"handle\" function. registration denied.');\r\n return;\r\n }\r\n\r\n this.handlers.push(h);\r\n };\r\n\r\n createHandler (cmd : string | object, handler : HandleFunction) : ICommandHandler | null {\r\n if(is.plainObject(cmd)) {\r\n return cmd as ICommandHandler;\r\n }\r\n\r\n if(is.string(cmd)) {\r\n return { canHandle: function (input) { return input === cmd; }, handle: handler };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n findHandler (input: string) : ICommandHandler | null {\r\n return this.handlers.filter(h => h.canHandle(input))[0];\r\n };\r\n\r\n invokeHandler (input : string, handler : ICommandHandler) {\r\n\r\n var cmdResult = handler.handle({ input: input});\r\n if(cmdResult != null) {\r\n log.debug(cmdResult);\r\n }\r\n };\r\n\r\n handleError (input: string, err: Error) {\r\n if(this.debugMode)\r\n console.error(input, err);\r\n\r\n if(this.errorHandler != null)\r\n this.errorHandler(input, err);\r\n }\r\n}\r\n\r\nexport default new CmdShell();","export default class CommandResult {\r\n input: string;\r\n inputHash: string;\r\n\r\n constructor(input: string) {\r\n this.input = input;\r\n this.inputHash = this.encodeHash(input);\r\n }\r\n\r\n encodeHash (input: string) {\r\n return encodeURI(input.trim().replace(/\\s/g,','));\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class HelpResult extends CommandResult {\r\n constructor(input: string) {\r\n super(input);\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class AboutResult extends CommandResult {\r\n constructor(input:string) {\r\n super(input);\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class UnknownCommandResult extends CommandResult {\r\n message:string;\r\n constructor(input : string) {\r\n super(input);\r\n this.message = `Sorry, i don''t know what ${input} is :(`;\r\n }\r\n}","import CommandResult from './CommandResult';\r\nimport { ExpressionInput } from '../expression/expression-interfaces';\r\n\r\nexport default class ExpressionResult extends CommandResult {\r\n expression: ExpressionInput;\r\n constructor(input: string, expression: ExpressionInput) {\r\n super(input);\r\n this.expression = expression;\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport class UnhandledErrorResult extends CommandResult {\r\n error: Error;\r\n constructor(input: string, error : Error) {\r\n super(input);\r\n this.error = error;\r\n }\r\n}\r\n\r\nexport class ErrorResult extends CommandResult {\r\n errorMessage: string;\r\n constructor(input: string, errorMessage : string) {\r\n super(input);\r\n this.errorMessage = errorMessage;\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class WhatsnewResult extends CommandResult {\r\n constructor(input: string) {\r\n super(input);\r\n }\r\n}","import CommandResult from './CommandResult';\r\n\r\nexport default class StringResult extends CommandResult {\r\n value:string;\r\n constructor(input: string, value : string) {\r\n super(input);\r\n this.value = value;\r\n }\r\n}","import NumericOperand from \"./NumericOperand\";\r\nimport { ExpressionInput, ExpressionInputItem } from \"./expression-interfaces\";\r\n\r\nexport default class ListOfNumbersExpression implements ExpressionInput {\r\n numbers: NumericOperand[];\r\n expressionString: string;\r\n maxBitsLength: number;\r\n\r\n constructor(expressionString: string, numbers: NumericOperand[]) {\r\n this.expressionString = expressionString;\r\n this.numbers = numbers;\r\n this.maxBitsLength = numbers.map(n => n.lengthInBits).reduce((n , c) => n >= c ? n : c, 0);\r\n }\r\n\r\n toString() {\r\n return this.numbers.map(n => n.value.toString()).join(' ');\r\n }\r\n}","import { ExpressionInput, ExpressionInputItem } from \"./expression-interfaces\";\r\n\r\nexport default class BitwiseOperationExpression implements ExpressionInput {\r\n \r\n expressionString: string;\r\n expressionItems: ExpressionInputItem[];\r\n\r\n constructor(expressionString: string, expressions: ExpressionInputItem[]) {\r\n this.expressionString = expressionString;\r\n this.expressionItems = expressions;\r\n }\r\n}","import NumericOperand from './NumericOperand';\r\nimport ExpressionOperand from './ExpressionOperand'\r\nimport ListOfNumbersExpression from './ListOfNumbersExpression';\r\nimport BitwiseOperationExpression from './BitwiseOperationExpression';\r\nimport { ExpressionInput, ExpressionInputItem, NumberBase } from './expression-interfaces';\r\n\r\nexport { default as NumericOperand } from './NumericOperand';\r\nexport { default as ExpressionOperand } from './ExpressionOperand';\r\nexport { default as ListOfNumbersExpression } from './ListOfNumbersExpression';\r\nexport { default as BitwiseOperationExpression } from './BitwiseOperationExpression';\r\n\r\ninterface IExpressionParserFactory {\r\n canCreate: (input: string) => boolean;\r\n create: (input: string) => ExpressionInput;\r\n};\r\n\r\nclass ExpressionParser {\r\n factories: IExpressionParserFactory[];\r\n constructor() {\r\n this.factories = [];\r\n };\r\n\r\n canParse (input: string) : boolean {\r\n var trimmed = input.replace(/^\\s+|\\s+$/, '');\r\n var i = this.factories.length-1;\r\n for(;i>=0;i--) {\r\n if(this.factories[i].canCreate(trimmed) === true){\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n parse (input: string) : ExpressionInput | null {\r\n var trimmed = input.replace(/^\\s+|\\s+$/, '');\r\n var i = 0, l = this.factories.length, factory;\r\n\r\n for(;i {\r\n if(n.trim().length > 0) {\r\n numbers.push(NumericOperand.parse(n.trim()));\r\n }\r\n });\r\n\r\n return new ListOfNumbersExpression(input, numbers);\r\n }\r\n}\r\n\r\nclass BitwiseOperationExpressionFactory implements IExpressionParserFactory {\r\n fullRegex: RegExp;\r\n regex: RegExp;\r\n\r\n constructor() {\r\n this.fullRegex = /^((<<|>>|>>>|\\||\\&|\\^)?(~?-?([b,x,a-f,0-9]+)))+$/;\r\n this.regex = /(<<|>>|>>>|\\||\\&|\\^)?(~?-?(?:[b,x,a-f,0-9]+))/g;\r\n }\r\n\r\n canCreate (input: string) : boolean {\r\n this.fullRegex.lastIndex = 0;\r\n return this.fullRegex.test(this.normalizeString(input));\r\n };\r\n\r\n create (input: string) : ExpressionInput {\r\n var m, operands : ExpressionInputItem[] = [],\r\n normalizedString = this.normalizeString(input);\r\n\r\n while ((m = this.regex.exec(normalizedString)) != null) {\r\n operands.push(this.parseMatch(m));\r\n }\r\n\r\n return new BitwiseOperationExpression(normalizedString, operands)\r\n };\r\n\r\n parseMatch (m:any): ExpressionInputItem {\r\n var input = m[0],\r\n sign = m[1],\r\n num = m[2];\r\n\r\n var parsed = null;\r\n if(num.indexOf('~') == 0) {\r\n parsed = new ExpressionOperand(num, NumericOperand.parse(num.substring(1)), '~');\r\n }\r\n else {\r\n parsed = NumericOperand.parse(num);\r\n }\r\n\r\n if(sign == null) {\r\n return parsed as ExpressionOperand;\r\n } else {\r\n return new ExpressionOperand(input, parsed as NumericOperand, sign);\r\n }\r\n };\r\n\r\n normalizeString (input : string): string {\r\n return input.replace(/\\s+/g,'');\r\n };\r\n}\r\n\r\nvar parser = new ExpressionParser();\r\nparser.addFactory(new ListOfNumbersExpressionFactory());\r\nparser.addFactory(new BitwiseOperationExpressionFactory());\r\n\r\nexport {parser};\r\n","export default {\r\n formatString: function(num: number, kind: string) : string {\r\n return num.toString(getBase(kind || \"bin\"));\r\n },\r\n padLeft: function (str: string, length: number, symbol: string) : string {\r\n var sb = Array.prototype.slice.call(str), symbol = symbol || \"0\";\r\n\r\n if(length == null) {\r\n return str;\r\n }\r\n\r\n while(length > sb.length) {\r\n sb.unshift(symbol);\r\n }\r\n\r\n return sb.join('');\r\n }\r\n};\r\n\r\nfunction getBase(kind:string) : number {\r\n switch (kind){\r\n case 'bin': return 2;\r\n case 'hex': return 16;\r\n case 'dec': return 10;\r\n }\r\n\r\n throw new Error(\"Unsupported kind: \" + kind);\r\n}","import formatter from '../core/formatter';\r\n\r\n\r\nexport type OctetNumber = 1 | 2 | 3 | 4;\r\nexport type NetworkClass = 'a' | 'b' | 'c' | 'd' | 'e';\r\nexport type ParsedIpObject = IpAddress | IpAddressWithSubnetMask;\r\n\r\nconst ipAddressParser = {\r\n parse: function(input: string) : ParsedIpObject[] | ParsingError | null {\r\n\r\n const matches = this.getMaches(input);\r\n const correctInputs = matches.filter(m => m.matches != null);\r\n const incorrectInputs = matches.filter(m => m.matches == null);\r\n \r\n if(correctInputs.length == 0)\r\n return null;\r\n\r\n if(incorrectInputs.length > 0) {\r\n return new ParsingError(`Value(s) ${incorrectInputs.map(v => v.input).join(',')} was not recognized as valid ip address or ip address with a subnet mask`);\r\n }\r\n\r\n const parsedObjects = matches.map(m => this.parseSingle(m.matches!, m.input));\r\n const parsingErrors = parsedObjects.filter(p => p instanceof ParsingError);\r\n\r\n if(parsingErrors.length > 0) {\r\n return parsingErrors[0] as ParsingError;\r\n }\r\n\r\n return parsedObjects as ParsedIpObject[];\r\n \r\n },\r\n\r\n getMaches(input : string) : { matches: RegExpExecArray | null, input: string }[] {\r\n\r\n return input.\r\n replace(/[\\t\\s]+/g, ' ')\r\n .split(' ')\r\n .filter(s => s.length>0)\r\n .map(s => {\r\n const ipV4Regex = /^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})(\\/\\d+)?$/;\r\n const matches = ipV4Regex.exec(s);\r\n \r\n if(matches == null || matches.length === 0)\r\n return {matches: null, input: s};\r\n \r\n return {matches, input: s};\r\n });\r\n },\r\n\r\n parseSingle(matches : RegExpExecArray, input: string) : ParsedIpObject | ParsingError {\r\n const invalid = (n: number) => n < 0 || n > 255;\r\n \r\n const first = parseInt(matches[1]);\r\n const second = parseInt(matches[2]);\r\n const third = parseInt(matches[3]);\r\n const fourth = parseInt(matches[4]);\r\n\r\n if(invalid(first) || invalid(second) || invalid(third) || invalid(fourth))\r\n return new ParsingError(`${input} value doesn't fall within the valid range of the IP address space`);\r\n\r\n const ipAddress = new IpAddress(first, second, third, fourth);\r\n\r\n if(matches[5]) {\r\n const maskPart = matches[5].substr(1);\r\n const maskBits = parseInt(maskPart);\r\n\r\n if(maskBits > 32) {\r\n return new ParsingError(`Subnet mask value in ${input} is out of range`);\r\n }\r\n\r\n return new IpAddressWithSubnetMask(ipAddress, maskBits);\r\n }\r\n\r\n return ipAddress;\r\n }\r\n}\r\n\r\nexport class ParsingError {\r\n errorMessage: string;\r\n constructor(message: string) {\r\n this.errorMessage = message;\r\n }\r\n}\r\n\r\nexport class IpAddressWithSubnetMask {\r\n maskBits: number;\r\n ipAddress: IpAddress;\r\n \r\n constructor(ipAddress : IpAddress, maskBits : number) {\r\n this.ipAddress = ipAddress;\r\n this.maskBits = maskBits;\r\n }\r\n\r\n toString() {\r\n return `${this.ipAddress.toString()}/${this.maskBits}`;\r\n }\r\n\r\n createSubnetMaskIp() : IpAddress {\r\n\r\n const mask = (bits: number) => 255<<(8-bits)&255;\r\n\r\n if(this.maskBits <= 8) {\r\n return new IpAddress(mask(this.maskBits), 0, 0, 0);\r\n }\r\n else if(this.maskBits <= 16) {\r\n return new IpAddress(255, mask(this.maskBits-8), 0, 0);\r\n }\r\n else if(this.maskBits <= 24) {\r\n return new IpAddress(255, 255, mask(this.maskBits-16), 0);\r\n }\r\n else {\r\n return new IpAddress(255, 255, 255, mask(this.maskBits-24));\r\n }\r\n }\r\n}\r\n\r\nexport class IpAddress {\r\n\r\n firstByte : number;\r\n secondByte: number;\r\n thirdByte : number;\r\n fourthByte: number\r\n\r\n constructor(firstByte : number, secondByte: number, thirdByte : number, fourthByte: number) {\r\n this.firstByte = firstByte;\r\n this.secondByte = secondByte;\r\n this.thirdByte = thirdByte;\r\n this.fourthByte = fourthByte;\r\n }\r\n\r\n toString() : string {\r\n return `${this.firstByte}.${this.secondByte}.${this.thirdByte}.${this.fourthByte}`;\r\n }\r\n\r\n setOctet(octet: OctetNumber, value : number) {\r\n switch(octet) {\r\n case 1:\r\n this.firstByte = value;\r\n break;\r\n case 2:\r\n this.secondByte = value;\r\n break;\r\n case 3:\r\n this.thirdByte = value;\r\n break;\r\n case 4:\r\n this.fourthByte = value;\r\n break;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\nconst getNetworkClass = function (ipAddress: IpAddress) : NetworkClass {\r\n const byte = ipAddress.firstByte;\r\n const bineryRep = formatter.formatString(ipAddress.firstByte, 'bin');\r\n\r\n const firstBitOne = (byte & 128) === 128;\r\n const firstBitZero = (byte & 128) === 0;\r\n const secondBitOne = (byte & 64) === 64;\r\n\r\n const thirdBitOne = (byte & 32) === 32;\r\n const thirdBitZero = (byte & 32) === 0;\r\n\r\n const forthBitZero = (byte & 16) === 0;\r\n const forthBitOne = (byte & 16) === 16;\r\n\r\n // e: 1111\r\n\r\n if(firstBitOne && secondBitOne && thirdBitOne && forthBitOne)\r\n return 'e';\r\n\r\n if(firstBitOne && secondBitOne && thirdBitOne && forthBitZero) // Start bits: 1110;\r\n return 'd';\r\n\r\n if(firstBitOne && secondBitOne && thirdBitZero) // Start bits: 110;\r\n return 'c';\r\n \r\n return firstBitOne ? 'b' : 'a';\r\n};\r\n\r\nexport {ipAddressParser, getNetworkClass};","import { IpAddress, ipAddressParser, IpAddressWithSubnetMask } from '../ipaddress/ip';\r\nimport CommandResult from './CommandResult';\r\n\r\nexport default class IpAddressResult extends CommandResult {\r\n ipAddresses: IpAddress[];\r\n constructor(input: string, ipAddresses: IpAddress[]) {\r\n super(input);\r\n this.ipAddresses = ipAddresses;\r\n }\r\n}","import HelpResult from './models/HelpResult';\r\nimport AboutResult from './models/AboutResult';\r\nimport UnknownCommandResult from './models/UnknownCommandResult';\r\nimport ExpressionResult from './models/ExpressionResult';\r\nimport {UnhandledErrorResult, ErrorResult} from './models/ErrorResults';\r\nimport WahtsnewResult from './models/WhatsnewResult';\r\nimport StringResult from './models/StringResult';\r\nimport * as expression from './expression/expression';\r\nimport uuid from 'uuid/v4';\r\nimport { CommandInput, CmdShell } from './core/cmd';\r\nimport { ExpressionInput } from './expression/expression-interfaces';\r\nimport AppState from './core/AppState';\r\nimport {ParsingError, IpAddress, ipAddressParser, IpAddressWithSubnetMask, ParsedIpObject} from './ipaddress/ip'\r\nimport IpAddressResult from './models/IpAddressResult';\r\nimport { isGetAccessor, isPrefixUnaryExpression } from 'typescript';\r\n\r\nexport default {\r\n initialize (cmd: CmdShell, appState: AppState) {\r\n\r\n cmd.debugMode = appState.debugMode;\r\n appState.onChange(() => cmd.debugMode = appState.debugMode);\r\n\r\n cmd.command(\"help\", (c: CommandInput) => appState.addCommandResult(new HelpResult(c.input)));\r\n cmd.command(\"clear\", (c: CommandInput) => appState.clearCommandResults());\r\n cmd.command(\"em\", (c: CommandInput) => appState.toggleEmphasizeBytes());\r\n cmd.command(\"dark\", (c: CommandInput) => appState.setUiTheme('dark'));\r\n cmd.command(\"light\", (c: CommandInput) => appState.setUiTheme('light'));\r\n cmd.command(\"midnight\", (c: CommandInput) => appState.setUiTheme('midnight'));\r\n cmd.command(\"about\", (c: CommandInput) => appState.addCommandResult(new AboutResult(c.input)));\r\n cmd.command(\"whatsnew\", (c: CommandInput) => appState.addCommandResult(new WahtsnewResult(c.input)));\r\n cmd.command(\"guid\", (c: CommandInput) => appState.addCommandResult(new StringResult(c.input, uuid())));\r\n cmd.command(\"-notrack\", (c: CommandInput) => {});\r\n cmd.command(\"-debug\", (c: CommandInput) => {\r\n appState.toggleDebugMode();\r\n appState.addCommandResult(new StringResult(c.input, `Debug Mode: ${appState.debugMode}`))\r\n }); \r\n\r\n\r\n // Ip Addresses\r\n cmd.command({\r\n canHandle: (input:string) => ipAddressParser.parse(input) != null,\r\n handle: function(c: CommandInput) {\r\n var result = ipAddressParser.parse(c.input);\r\n\r\n if(result == null)\r\n return;\r\n\r\n if(result instanceof ParsingError) {\r\n appState.addCommandResult(new ErrorResult(c.input, result.errorMessage));\r\n return;\r\n }\r\n\r\n const ipAddresses : IpAddress[] = [];\r\n \r\n (result as ParsedIpObject[]).forEach(r => {\r\n if(r instanceof IpAddressWithSubnetMask)\r\n {\r\n ipAddresses.push(r.ipAddress);\r\n ipAddresses.push(r.createSubnetMaskIp());\r\n }\r\n else if(r instanceof IpAddress) {\r\n ipAddresses.push(r);\r\n }\r\n });\r\n \r\n appState.addCommandResult(new IpAddressResult(c.input, ipAddresses));\r\n } \r\n })\r\n\r\n // Bitwise Expressions\r\n cmd.command({\r\n canHandle: (input:string) => expression.parser.canParse(input),\r\n handle: function(c: CommandInput) {\r\n var expr = expression.parser.parse(c.input);\r\n appState.addCommandResult(new ExpressionResult(c.input, expr as ExpressionInput));\r\n } \r\n })\r\n\r\n // Last command handler reports that input is unknown\r\n cmd.command({\r\n canHandle: () => true,\r\n handle: (c: CommandInput) => appState.addCommandResult(new UnknownCommandResult(c.input))\r\n });\r\n\r\n cmd.onError((input: string, err: Error) => appState.addCommandResult(new UnhandledErrorResult(input, err)));\r\n }\r\n }","import React from 'react';\r\nimport log from 'loglevel';\r\n\r\nexport interface IInputBoxProps\r\n{\r\n onCommandEntered: (input :string) => void;\r\n}\r\n\r\nexport default class InputBox extends React.Component {\r\n history: string[];\r\n historyIndex: number;\r\n nameInput: HTMLInputElement | null;\r\n\r\n constructor(props: IInputBoxProps) {\r\n super(props);\r\n this.nameInput = null;\r\n this.history = [];\r\n this.historyIndex = -1;\r\n }\r\n\r\n componentDidMount(){\r\n if(this.nameInput != null)\r\n this.nameInput.focus();\r\n }\r\n\r\n render() {\r\n return { this.nameInput = input; }} \r\n onKeyUp={e => this.onKeyUp(e)}\r\n onKeyDown={e => this.onKeyDown(e)}\r\n className=\"expressionInput mono\"\r\n placeholder=\"type expression like '1>>2' or 'help' \"/>;\r\n }\r\n\r\n onKeyUp(e: any) {\r\n var input = e.target;\r\n if (e.keyCode != 13 || input.value.trim().length == 0) {\r\n return;\r\n }\r\n \r\n var commandInput = input.value;\r\n this.history.unshift(commandInput);\r\n this.historyIndex = -1;\r\n\r\n input.value = ''; \r\n this.props.onCommandEntered(commandInput);\r\n }\r\n\r\n onKeyDown(args: any) {\r\n\r\n if(args.keyCode == 38) {\r\n var newIndex = this.historyIndex+1;\r\n\r\n if (this.history.length > newIndex) { // up\r\n args.target.value = this.history[newIndex];\r\n this.historyIndex = newIndex;\r\n }\r\n\r\n args.preventDefault();\r\n return;\r\n }\r\n\r\n if(args.keyCode == 40) {\r\n if(this.historyIndex > 0) { // down\r\n args.target.value = this.history[--this.historyIndex];\r\n }\r\n\r\n args.preventDefault();\r\n }\r\n }\r\n}","import React from 'react';\r\nimport cmd from '../core/cmd';\r\n\r\ntype CommandLinkProps = {\r\n command?:string;\r\n text:string;\r\n}\r\n\r\nfunction CommandLink(props: CommandLinkProps) {\r\n return cmd.execute(props.command || props.text)}>{props.text}\r\n}\r\n\r\nexport default CommandLink;","import React from 'react';\r\nimport CommandLink from '../CommandLink';\r\nimport './HelpResultView.css';\r\n\r\nfunction HelpResultView() {\r\n \r\n return
\r\n
\r\n
\r\n
\r\n Bitiwse Calculation Commands\r\n
    \r\n
  • — type bitwise expression to see result in binary (only positive integers are supported now)
  • \r\n
  • — type one or more numbers to see their binary representations
  • \r\n
\r\n
\r\n
\r\n Ip Address Commands\r\n
    \r\n
  • — enter single or multiple ip addresses (separated by space) to see their binary represenation
  • \r\n
  • — subnet mask notiations are support as well
  • \r\n
\r\n
\r\n
\r\n Other Commands\r\n
    \r\n
  • — clear output pane
  • \r\n
  • — display this help
  • \r\n
  • — display changelog
  • \r\n
  • — turn On/Off Emphasize Bytes
  • \r\n
  • — set Light theme
  • \r\n
  • — set Dark theme
  • \r\n
  • — set Midnight theme
  • \r\n
  • — about the app
  • \r\n
  • — generate v4 GUID
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Supported Bitwise Operations
\r\n \r\n \r\n as implemented in JavaScript engine\r\n \r\n \r\n
    \r\n
  • & — bitwise AND
  • \r\n
  • | — bitwise inclusive OR
  • \r\n
  • ^ — bitwise exclusive XOR
  • \r\n
  • ~ — bitwise NOT
  • \r\n
  • << — left shift
  • \r\n
  • >> — sign propagating right shift
  • \r\n
  • >>> — zero-fill right shift
  • \r\n
\r\n
\r\n
\r\n
\r\n
;\r\n}\r\n\r\nexport default HelpResultView;\r\n","import React from 'react'\r\n\r\nfunction AboutResultView() {\r\n\r\n return
\r\n

Created by Borys Levytskyi. Please give it a like if BitwiseCmd has helped you in your work.

\r\n

If you have an idea, suggestion or you've spotted a bug here, please send it to bitwisecmd@gmail.com or tweet on @BitwiseCmd. Your feedback is greatly appreciated.

\r\n

Project on GitHub

\r\n
;\r\n};\r\n\r\nexport default AboutResultView;","import React from 'react';\r\n\r\nexport type BinaryStringViewProps = {\r\n allowFlipBits: boolean;\r\n binaryString: string;\r\n onFlipBit?: (input: FlipBitEventArg) => void;\r\n emphasizeBytes: boolean;\r\n};\r\n\r\nexport type FlipBitEventArg = {\r\n index: number;\r\n binaryString: string;\r\n $event: any;\r\n newBinaryString: string\r\n};\r\n\r\nexport default class BinaryStringView extends React.Component {\r\n render() {\r\n return {this.getChildren()}\r\n }\r\n\r\n onBitClick(index: number, e : any) {\r\n if(!this.props.allowFlipBits || !this.props.onFlipBit) {\r\n return;\r\n }\r\n\r\n if(!this.props.onFlipBit) {\r\n \r\n }\r\n\r\n const arr = this.props.binaryString.split('');\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n const newBinaryString = arr.join('');\r\n\r\n this.props.onFlipBit({ index: index, binaryString: this.props.binaryString, $event: e, newBinaryString }); \r\n }\r\n\r\n getChildren() {\r\n var bits = this.createBits(this.props.binaryString.split(''));\r\n \r\n if(this.props.emphasizeBytes) {\r\n return this.splitIntoBytes(bits);\r\n }\r\n\r\n return bits;\r\n }\r\n\r\n createBits(bitChars:string[]) : JSX.Element[] {\r\n const allowFlipBits = this.props.allowFlipBits || false;\r\n const css = allowFlipBits ? ' flipable' : ''\r\n\r\n return bitChars.map((c, i) => {\r\n var className = c == '0' ? `zero${css}` : `one${css}`;\r\n return this.onBitClick(i, e)}>{c}\r\n });\r\n }\r\n\r\n splitIntoBytes(bits: JSX.Element[]) {\r\n const bytes = [];\r\n\r\n var key = 0;\r\n while(bits.length > 0) {\r\n bytes.push({bits.splice(0, 8)});\r\n }\r\n \r\n return bytes;\r\n }\r\n}","import { NumericOperand, ListOfNumbersExpression, BitwiseOperationExpression, ExpressionOperand } from '../../../expression/expression';\r\nimport { ExpressionInputItem, ExpressionInput } from '../../../expression/expression-interfaces';\r\n\r\ntype Config = {\r\n emphasizeBytes: boolean;\r\n allowFlipBits: boolean;\r\n}\r\n\r\ntype ExpressionItemModel = {\r\n sign: string;\r\n css: string;\r\n expressionItem: ExpressionInputItem;\r\n allowFlipBits: boolean;\r\n label: string;\r\n}\r\n\r\nexport default class BitwiseExpressionViewModel {\r\n\r\n emphasizeBytes: boolean;\r\n items: ExpressionItemModel[];\r\n maxNumberOfBits: number;\r\n allowFlipBits: boolean;\r\n\r\n constructor({ emphasizeBytes = false, allowFlipBits = false} : Config) {\r\n this.emphasizeBytes = emphasizeBytes;\r\n this.items = [];\r\n this.maxNumberOfBits = 0;\r\n this.allowFlipBits = allowFlipBits === true;\r\n }\r\n\r\n static buildListOfNumbers(expr : ListOfNumbersExpression, config : Config) {\r\n var model = new BitwiseExpressionViewModel(config);\r\n expr.numbers.forEach(op => model.addOperandRow(op));\r\n model.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(model.maxNumberOfBits, model.emphasizeBytes);\r\n return model;\r\n }\r\n\r\n static buildMultiple (expr : BitwiseOperationExpression, config : Config) {\r\n\r\n var op = expr.expressionItems[0],\r\n i = 0, len = expr.expressionItems.length,\r\n ex, m = new BitwiseExpressionViewModel(config);\r\n\r\n var prev : NumericOperand | null = null;\r\n\r\n for (;i {\r\n constructor(props: BitwiseOperationExpressionViewProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n render() {\r\n var rows = this.getRows();\r\n if(!rows) {\r\n return null;\r\n }\r\n\r\n return \r\n \r\n {rows}\r\n \r\n
\r\n }\r\n\r\n getRows() : JSX.Element[] | null {\r\n var model = BitwiseExpressionViewModel.createModel(this.props.expression, this.props.emphasizeBytes);\r\n\r\n return model.items.map((itm, i) => \r\n this.onBitFlipped()} />);\r\n }\r\n\r\n onBitFlipped() {\r\n this.forceUpdate();\r\n //this.setState({d:new Date()});\r\n }\r\n}\r\n\r\ntype ExpressionRowProps = {\r\n sign: string, \r\n css: string, \r\n maxNumberOfBits: number, \r\n emphasizeBytes: boolean, \r\n allowFlipBits: boolean, \r\n expressionItem: ExpressionInputItem,\r\n onBitFlipped: any\r\n}\r\n\r\nclass ExpressionRow extends React.Component {\r\n constructor(props: ExpressionRowProps) {\r\n super(props);\r\n this.state = { operand: null };\r\n }\r\n render() {\r\n const { sign, css, maxNumberOfBits, emphasizeBytes, allowFlipBits } = this.props;\r\n \r\n return \r\n {sign}\r\n {this.getLabel()}\r\n \r\n this.flipBit(args)}/>\r\n \r\n {this.getOther()}\r\n ;;\r\n }\r\n\r\n getBinaryString() : string { \r\n return this.props.expressionItem.evaluate().toBinaryString();\r\n }\r\n\r\n getLabel(): string {\r\n\r\n // For expressions like |~2 \r\n // TODO: find a better way...\r\n if(this.props.expressionItem.isExpression) {\r\n const ex = this.props.expressionItem as ExpressionOperand;\r\n return ex.sign + this.getLabelString(ex.getUnderlyingOperand());\r\n }\r\n\r\n return this.getLabelString(this.props.expressionItem.getUnderlyingOperand()); \r\n }\r\n\r\n getOther() {\r\n\r\n if(this.props.expressionItem.isExpression) {\r\n const ex = this.props.expressionItem as ExpressionOperand;\r\n const op = ex.evaluate();\r\n\r\n return op.toString();\r\n }\r\n\r\n return this.props.expressionItem.evaluate().toOtherKindString();\r\n }\r\n\r\n getLabelString (op: NumericOperand) : string {\r\n return op.toString(op.base == 'bin' ? 'dec' : op.base);\r\n }\r\n\r\n flipBit(args: FlipBitEventArg) { \r\n\r\n const op = this.props.expressionItem.getUnderlyingOperand();\r\n const { index, binaryString } = args;\r\n\r\n var arr = binaryString.split('');\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n var bin = arr.join('');\r\n\r\n var newValue = parseInt(bin, 2);\r\n op.setValue(newValue);\r\n\r\n this.props.onBitFlipped();\r\n }\r\n}","import React from 'react';\r\nimport CommandLink from '../CommandLink';\r\nimport './WhatsNewResultView.css';\r\n\r\nfunction WhatsnewResultView() {\r\n \r\n return
\r\n

Changelog

\r\n
\r\n

Jun 14th, 2021
\r\n Added support of ip addresses and subnet masks notatioans. Try them out: \r\n

\r\n
    \r\n
  • Single IP address
  • \r\n
  • Multiple IP addresses and subnet mask notations
  • \r\n
\r\n \r\n
\r\n
\r\n

Jun 6th, 2017
\r\n Added command. Use it for generating v4 GUIDs

\r\n
\r\n
\r\n

May 27th, 2017
\r\n Added support of binary number notation (e.g. ).

\r\n
\r\n
\r\n

May 20th, 2017
\r\n New theme added.

\r\n
\r\n
\r\n

May 16th, 2017
\r\n Complete rewrite using React. Old implementation is available at http://bitwisecmd.com/old. Please let me know if you have problems with this release by creating issue in Github Repo.

\r\n
\r\n
;\r\n}\r\n\r\nexport default WhatsnewResultView;","import React from 'react';\r\nimport { IpAddress, OctetNumber, getNetworkClass } from '../../ipaddress/ip';\r\nimport formatter from '../../core/formatter'\r\nimport BinaryStringView from './BinaryString';\r\nimport './IpAddressView.css';\r\ntype IpAddressViewProps = {\r\n ipAddresses: IpAddress[]\r\n};\r\n\r\nexport class IpAddressView extends React.Component \r\n{\r\n \r\n render() {\r\n if(this.props.ipAddresses.length === 1)\r\n return this.renderSingleIp(this.props.ipAddresses[0]);\r\n \r\n return this.renderMultipleIps();\r\n }\r\n\r\n renderMultipleIps() {\r\n return \r\n \r\n {this.props.ipAddresses.map((ip, i) => \r\n \r\n \r\n )}\r\n \r\n
{ip.toString()}\r\n {this.bin(ip.firstByte, 1, ip)}.{this.bin(ip.secondByte, 2, ip)}.{this.bin(ip.thirdByte, 3, ip)}.{this.bin(ip.fourthByte, 4, ip)}\r\n
\r\n }\r\n\r\n renderSingleIp(ip: IpAddress) {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{ip.firstByte}{ip.secondByte}{ip.thirdByte}{ip.fourthByte}
{this.bin(ip.firstByte, 1, ip)}{this.bin(ip.secondByte, 2, ip)}{this.bin(ip.thirdByte, 3, ip)}{this.bin(ip.fourthByte, 4, ip)}
\r\n Network Class: {getNetworkClass(ip).toUpperCase()}\r\n
;\r\n }\r\n\r\n bin(value: number, octetNumber: OctetNumber, ip: IpAddress) {\r\n return this.onFlippedBit(e.newBinaryString, octetNumber, ip)} />;\r\n }\r\n \r\n onFlippedBit(binaryString: string, number: OctetNumber, ip : IpAddress) {\r\n ip.setOctet(number, parseInt(binaryString, 2));\r\n this.forceUpdate();\r\n }\r\n};\r\n\r\nfunction fmt(num: number) : string {\r\n return formatter.padLeft(formatter.formatString(num, 'bin'), 8, '0');\r\n}\r\n\r\nexport default IpAddressView;","import React from 'react';\r\nimport HelpResult from '../models/HelpResult';\r\nimport AboutResult from '../models/AboutResult';\r\nimport HelpResultView from './results/HelpResultView';\r\nimport AboutResultView from './results/AboutResultView';\r\nimport ExpressionResult from '../models/ExpressionResult';\r\nimport BitwiseOperationExpressionView from './results/expressions/BitwiseOperationExpressionView';\r\nimport WhatsnewResult from '../models/WhatsnewResult';\r\nimport WhatsnewResultView from './results/WhatsNewResultView';\r\nimport {UnhandledErrorResult, ErrorResult} from '../models/ErrorResults';\r\nimport StringResult from '../models/StringResult';\r\nimport IpAddressView from './results/IpAddressView';\r\n\r\nimport CommandResult from '../models/CommandResult';\r\nimport AppState from '../core/AppState';\r\nimport IpAddressResult from '../models/IpAddressResult';\r\n\r\ntype DisplayResultProps = {\r\n content : CommandResult,\r\n appState: AppState,\r\n inputHash: string,\r\n input: string,\r\n key: number\r\n}\r\n\r\nexport default class DisplayResult extends React.Component {\r\n render() {\r\n\r\n return
\r\n
>{this.props.content.input}#
\r\n
\r\n {this.findResultComponent(this.props.content)}\r\n
\r\n
;\r\n }\r\n\r\n findResultComponent(result: CommandResult) : JSX.Element {\r\n\r\n if(result instanceof HelpResult) {\r\n return \r\n }\r\n\r\n if(result instanceof AboutResult) {\r\n return \r\n }\r\n\r\n if(result instanceof ExpressionResult) {\r\n return \r\n }\r\n\r\n if(result instanceof WhatsnewResult) {\r\n return \r\n }\r\n\r\n if(result instanceof StringResult) {\r\n return

{result.value}

\r\n }\r\n\r\n if (result instanceof UnhandledErrorResult) {\r\n return
\r\n
(X_X) Ooops.. Something ain' right: {result.error.message}
\r\n
\r\n }\r\n\r\n if (result instanceof ErrorResult) {\r\n return
\r\n
{result.errorMessage}
\r\n
\r\n }\r\n\r\n if(result instanceof IpAddressResult) {\r\n const ipResult = result as IpAddressResult;\r\n\r\n return \r\n }\r\n\r\n return
\r\n
¯\\_(ツ)_/¯ Sorry, i don′t know what {this.props.content.input} is
\r\n
\r\n }\r\n}","import AppState from \"../core/AppState\";\r\nimport React from \"react\";\r\n\r\ntype IndicatorsProps = {\r\n appState: AppState\r\n};\r\n\r\nfunction Indicators(props: IndicatorsProps) {\r\n\r\n const list = [];\r\n const state = props.appState;\r\n\r\n if(props.appState.env != 'prod') {\r\n list.push(state.env);\r\n }\r\n\r\n if(props.appState.debugMode) {\r\n list.push(\"debug\");\r\n }\r\n\r\n if(localStorage.getItem('TrackAnalytics') === 'false') {\r\n list.push(\"notrack\");\r\n }\r\n\r\n if(list.length == 0)\r\n return null;\r\n\r\n return
\r\n {list.map(i => {i} )}\r\n
\r\n}\r\n\r\nexport default Indicators;","import React from 'react';\r\nimport InputBox from './components/InputBox';\r\nimport DisplayResultView from './components/DisplayResultView';\r\nimport AppState from './core/AppState';\r\nimport cmd from './core/cmd';\r\nimport CommandResult from './models/CommandResult';\r\nimport log from 'loglevel';\r\nimport Indicators from './components/Indicators';\r\nimport CommandLink from './components/CommandLink';\r\n\r\ntype AppRootProps = {\r\n appState: AppState, \r\n};\r\n\r\ntype AppRootState = {\r\n uiTheme: string,\r\n emphasizeBytes: boolean,\r\n commandResults: CommandResult[]\r\n}\r\n\r\nexport default class AppRoot extends React.Component {\r\n \r\n componentWillMount() {\r\n this.refresh();\r\n this.props.appState.onChange(() => this.refresh());\r\n }\r\n\r\n refresh() {\r\n this.setState(this.props.appState);\r\n }\r\n \r\n getIndicator(value : boolean) {\r\n return value ? 'on' : 'off';\r\n }\r\n\r\n getResultViews() : JSX.Element[] {\r\n log.debug('getting result views')\r\n var results = this.state.commandResults.map((r, i) => );\r\n return results;\r\n }\r\n\r\n toggleEmphasizeBytes() {\r\n this.props.appState.toggleEmphasizeBytes();\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n

BitwiseCmd\r\n

\r\n \r\n
\r\n\r\n
\r\n cmd.execute(input)} />\r\n\r\n \r\n this.toggleEmphasizeBytes()}>[em]\r\n \r\n
\r\n\r\n
\r\n {this.getResultViews()}\r\n
\r\n
;\r\n }\r\n}","export default {\r\n encodeHash: function(input:string):string {\r\n return encodeURI(input.trim().replace(/\\s/g,','));\r\n },\r\n decodeHash: function(hashValue:string):string {\r\n return decodeURI(hashValue).replace(/^\\#/, '').replace(/,/g,' ');\r\n },\r\n getArgs: function (hashValue:string) : string[] {\r\n\r\n var decodedHash = this.decodeHash(hashValue);\r\n var args : string[] = [];\r\n\r\n splitHashList(decodedHash).forEach(function(value) {\r\n args.push(value);\r\n });\r\n\r\n return args;\r\n }\r\n};\r\n\r\nfunction splitHashList(str: string) : string[] {\r\n var values = [];\r\n\r\n if(str.indexOf('||')) {\r\n str.split('||').forEach(function (v) {\r\n if (v.length > 0) {\r\n values.push(v);\r\n }\r\n });\r\n } else {\r\n values.push(str);\r\n }\r\n\r\n return values;\r\n}","import AppState from './core/AppState';\r\nimport appStateStore from './core/appStateStore';\r\nimport cmd from './core/cmd';\r\nimport commands from './commands';\r\nimport AppRoot from './AppRoot';\r\nimport hash from './core/hash';\r\nimport log from 'loglevel';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\n\r\nconst env = window.location.host === \"bitwisecmd.com\" ? 'prod' : 'stage';\r\nsetupLogger(env);\r\n\r\nconst appState = createAppState(env);\r\n\r\ncommands.initialize(cmd, appState);\r\n\r\nexecuteStartupCommands();\r\n\r\nvar root = ;\r\nReactDOM.render(root, document.getElementById('root'));\r\n\r\nlog.debug(\"started\");\r\n\r\nfunction createAppState(env:string) {\r\n var stateData = appStateStore.getPersistedData();\r\n const appState = new AppState(stateData, env);\r\n appStateStore.watch(appState);\r\n log.debug(\"appState initialized\", appState);\r\n return appState;\r\n}\r\n\r\nfunction setupLogger(env: Env) {\r\n if(env != 'prod'){\r\n log.setLevel(\"debug\");\r\n log.debug(`Log level is set to debug. Env: ${env}`)\r\n } else {\r\n log.setLevel(\"warn\");\r\n }\r\n}\r\n\r\nfunction executeStartupCommands() {\r\n var hashArgs = hash.getArgs(window.location.hash);\r\n\r\n var startupCommands = ['help', '127.0.0.1 192.168.0.0/8', '1|2&6','4 0b1000000 0x80'];\r\n\r\n if(appState.wasOldVersion) {\r\n startupCommands = [\"whatsnew\"];\r\n }\r\n\r\n if(hashArgs.length > 0) {\r\n startupCommands = hashArgs;\r\n }\r\n\r\n startupCommands.forEach(cmd.execute.bind(cmd));\r\n}\r\n\r\ntype Env = 'prod' | 'stage';\r\n"],"sourceRoot":""} \ No newline at end of file