openc3-tool-cmdsender 5.0.9 → 5.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"js/780.js","mappings":"+iDAAA,IAAIA,EAAS,WAAiB,WAAC,IAAIC,GAAG,WAACC,MAAKC,GAAE,WAACF,EAAIG,MAAMD,IAAG,OAA9B,WAAqCA,EAAG,MAAM,CAAiB,OAAfF,EAAII,QAAL,cAAsBF,EAAG,eAAe,CAACG,MAAM,CAAC,MAAQL,EAAIM,eAAe,eAAe,GAAG,MAAQ,GAAG,YAAY,mBAAmBC,GAAG,CAAC,OAASP,EAAIQ,kBAAxJ,cAAwKN,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAACA,EAAG,iBAAiB,CAACO,MAAMT,EAAIU,aAAaC,YAAY,CAAC,EAAEN,MAAM,CAAC,MAAQL,EAAII,OAAO,YAAY,QAAQ,aAAa,QAAQ,MAAQ,QAAQ,eAAe,GAAG,MAAQ,GAAG,YAAY,oBAAoBG,GAAG,CAAC,OAASP,EAAIY,mBAAmBC,MAAM,CAACC,MAAOd,EAAIc,MAAMC,eAAgBC,SAAS,SAAUC,GAAK,sBAACjB,EAAIkB,KAAKlB,EAAIc,MAAO,iBAAkBG,EAAK,EAACE,WAAW,2BAA2B,GAAGjB,EAAG,QAAQ,CAACA,EAAG,eAAe,CAACG,MAAM,CAAC,MAAQL,EAAIoB,WAAW,eAAe,GAAG,MAAQ,GAAG,YAAY,mBAAmBb,GAAG,CAAC,OAASP,EAAIQ,iBAAiB,IAAI,IAAI,KAAI,EACp2B,EACGa,GAAe,WAAG,I,8+cC6DtB,OACAC,OAAAA,CAAAA,EAAAA,GACAT,MAAAA,CACAU,KAAAA,eACAC,MAAAA,SAEAC,MAAAA,CACAC,YAAAA,CACAC,KAAAA,QACAC,SAAAA,GAEAC,aAAAA,CACAF,KAAAA,OACAC,QAAAA,WAAA,8BACAE,IAAAA,GACA1B,OAAAA,KACAW,eAAAA,KACAgB,qBAAAA,GACAC,aAAAA,KACAC,WAAAA,EACA,IAGAC,KAvBA,WAwBA,OADA,sBACA,CACApB,MAAAA,KAAAA,aAEA,EACAqB,SAAAA,CACA7B,eADA,WAEA,OADA,sBACA,oCACA,EACAc,WAJA,WAKA,OADA,sBACA,2CACA,mCACA,yBACA,eAEA,EACAhB,OAXA,WAaA,GAFA,sBAEA,uCACA,sBACA,aAFA,WAEA,6BACA,qFACAgC,EAAAA,KAAAA,CACAC,MAAAA,EACAvB,MAAAA,KAAAA,MAAAA,OAAAA,GAAAA,MAEAmB,UAAAA,KAAAA,MAAAA,OAAAA,GAAAA,aALA,cAgBA,OAnBA,YAYAG,EAAAA,KAAAA,CACAC,MAAAA,mBACAvB,MAAAA,mBACAmB,eAAAA,IAfA,YAmBA,CACA,CACA,OADA,0BACA,IAEA,GAEAK,QAAAA,CACA5B,WADA,WAEA,OADA,uBACA,4EACA,EACAF,aAJA,SAIAM,GAGA,GAHA,uBACA,iBADA,YAEA,0BAFA,YAGA,iCACA,uCACA,mCAFA,gBAAI,EAAJ,UAGA,aAHA,IAGA,0CACA,GADA,YACA,iDACAC,EAAAA,SAAAA,GADA,YAEAgB,EAAAA,EAAAA,MAFA,iBAGA,2CACA,0BACA,0BACA,yBANA,YAQA,KAEA,qEACAhB,EAAAA,EADA,YAEAgB,EAAAA,EAAAA,MAFA,iBAGA,2CACA,0BACA,0BACA,yBANA,YAQA,KACA,2BACA,uBAEA,CA1BA,2CA2BA,4BA3BA,YA4BA,iCACA,gCACA,+BAjCA,YAmCA,8BACA,EAEAnB,kBA1CA,SA0CAE,GAAA,WACA,yBACA,qBAFA,YAGA,oDACA,GADA,YACA,yDACA,yDACA,0BACA,2BACA,yBAJA,YAMAiB,EAAAA,KAAAA,OAAAA,GAAAA,MANA,YAOAhB,EAAAA,EAPA,YAQA,KACA,CATA,aAUA,CAdA,YAeA,kCAfA,YAgBA,mDACA,wBADA,YAEA,yCAIA,2BACA,iBADA,YAEA,+BAEA,ICrMiS,I,oBCQ7RwB,GAAY,OACd,EACAxC,EACAsB,GACA,EACA,KACA,WACA,MAIF,EAAekB,EAAiB,O,2uKCnBhC,IAAIxC,EAAS,WAAiB,WAAC,IAAIC,GAAG,WAACC,MAAKC,GAAE,WAACF,EAAIG,MAAMD,IAAG,OAA9B,WAAqCA,EAAG,MAAM,CAACA,EAAG,UAAU,CAACG,MAAM,CAAC,MAAQL,EAAIwC,MAAM,MAAQxC,EAAIyC,SAASvC,EAAG,6BAA6B,CAACG,MAAM,CAAC,sBAAsBJ,KAAKyC,OAAOC,OAAOC,OAAO,sBAAsB3C,KAAKyC,OAAOC,OAAOE,OAAO,SAAW7C,EAAI8C,aAAa,cAAc,OAAO,KAAO,OAAOvC,GAAG,CAAC,SAAS,SAASwC,GAAQ,OAAD,sBAAQ/C,EAAIgD,eAAeD,EAAQ,EAAC,MAAQ,SAASA,GAAQ,OAAD,sBAAQ/C,EAAIiD,SAASF,EAAQ,KAAyB,IAApB/C,EAAIkD,KAAKC,QAAV,cAAwBjD,EAAG,SAAS,CAACA,EAAG,eAAe,CAACF,EAAIoD,GAAG,gBAAgBlD,EAAG,YAAYA,EAAG,eAAe,CAACG,MAAM,CAAC,cAAc,cAAc,MAAQ,SAAS,cAAc,GAAG,eAAe,IAAIQ,MAAM,CAACC,MAAOd,EAAIqD,OAAQrC,SAAS,SAAUC,GAAK,sBAACjB,EAAIqD,OAAOpC,CAAI,EAACE,WAAW,aAAa,GAAGjB,EAAG,eAAe,CAACG,MAAM,CAAC,QAAUL,EAAIsD,QAAQ,MAAQtD,EAAIkD,KAAK,OAASlD,EAAIqD,OAAO,mBAAmB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,aAAa,GAAG,MAAQ,IAAI9C,GAAG,CAAC,kBAAkBP,EAAIuD,iBAAiBC,YAAYxD,EAAIyD,GAAG,CAAC,CAACC,IAAI,sBAAsBC,GAAG,YAAkB,IAAPC,EAAO,EAAPA,KAAQ,OAAD,sBAAQ,CAAC1D,EAAG,2BAA2B,CAACG,MAAM,CAAC,gBAAgBL,EAAI0B,aAAab,MAAM,CAACC,MAAO8C,EAAKC,eAAgB7C,SAAS,SAAUC,GAAK,sBAACjB,EAAIkB,KAAK0C,EAAM,iBAAkB3C,EAAK,EAACE,WAAW,yBAA0B,IAAG,MAAK,EAAM,eAAe,KAAn0B,cAAs0BnB,EAAI8D,MAAK5D,EAAG,MAAM,CAAC6D,YAAY,QAAQ,CAAC/D,EAAIoD,GAAG,WAAWpD,EAAIgE,GAAGhE,EAAIiE,WAAW/D,EAAG,MAAM,CAAC6D,YAAY,QAAQ,CAAC/D,EAAIoD,GAAG,6EAA6ElD,EAAG,aAAa,CAACgE,IAAI,UAAU7D,MAAM,CAAC,MAAQL,EAAImE,QAAQ,KAAO,GAAG,MAAQ,GAAG,eAAe,GAAG,YAAY,iBAAiB,mBAAmBnE,EAAIoE,sBAAsB7D,GAAG,CAAC,QAAU,SAASwC,GAAQ,OAAD,sBAAI,eAACA,EAAOpB,KAAK0C,QAAQ,SAArB,cAA6BrE,EAAIsE,GAAGvB,EAAOwB,QAAQ,QAAQ,GAAGxB,EAAOW,IAAI,WAAS,0BAAO,OAA5F,cAAD,YAAyG1D,EAAIwE,aAAazB,GAAQ,KAAI7C,EAAG,SAAS,CAACG,MAAM,CAAC,aAAaL,EAAIyE,EAAE,aAAazE,EAAI0E,EAAE,SAAW,GAAG,WAAW,IAAI7D,MAAM,CAACC,MAAOd,EAAI2E,iBAAkB3D,SAAS,SAAUC,GAAK,uBAACjB,EAAI2E,iBAAiB1D,CAAI,EAACE,WAAW,qBAAqB,CAACjB,EAAG,SAASF,EAAI4E,GAAI5E,EAAI6E,oBAAoB,SAASjB,EAAKkB,GAAO,OAAD,uBAAQ5E,EAAG,cAAc,CAACwD,IAAIoB,EAAMvE,GAAG,CAAC,MAAQ,SAASwC,GAAiC,OAA1B,uBAACA,EAAOgC,kBAAR,YAAiCnB,EAAKoB,OAAOC,MAAM,KAAMC,UAAW,IAAG,CAAChF,EAAG,oBAAoB,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGJ,EAAKnB,WAAW,EAAG,IAAE,IAAI,GAAGvC,EAAG,iBAAiB,CAACG,MAAM,CAAC,cAAcL,EAAImF,WAAW,cAAcnF,EAAIoF,YAAY,YAAYpF,EAAIqF,cAAc,KAAO,OAAOxE,MAAM,CAACC,MAAOd,EAAIsF,YAAatE,SAAS,SAAUC,GAAK,wBAACjB,EAAIsF,YAAYrE,CAAI,EAACE,WAAW,iBAAiBjB,EAAG,WAAW,CAACG,MAAM,CAAC,YAAY,OAAOQ,MAAM,CAACC,MAAOd,EAAIuF,mBAAoBvE,SAAS,SAAUC,GAAK,wBAACjB,EAAIuF,mBAAmBtE,CAAI,EAACE,WAAW,uBAAuB,CAACjB,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,YAAYA,EAAG,OAAO,CAACF,EAAIoD,GAAG,aAAalD,EAAG,aAAa,GAAGA,EAAG,cAAc,CAACA,EAAG,MAAM,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,QAAQ,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,cAAc,CAACA,EAAG,OAAO,CAACsF,SAAS,CAAC,YAAcxF,EAAIgE,GAAGhE,EAAIiE,cAAc,GAAG/D,EAAG,QAAQ,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAACG,MAAM,CAAC,MAAQ,UAAU,YAAY,mBAAmBE,GAAG,CAAC,MAAQ,SAASwC,GAAO,wBAAC/C,EAAIuF,oBAAqB,CAAM,IAAG,CAACvF,EAAIoD,GAAG,WAAW,IAAI,MAAM,IAAI,GAAGlD,EAAG,WAAW,CAACG,MAAM,CAAC,YAAY,OAAOQ,MAAM,CAACC,MAAOd,EAAIyF,qBAAsBzE,SAAS,SAAUC,GAAK,wBAACjB,EAAIyF,qBAAqBxE,CAAI,EAACE,WAAW,yBAAyB,CAACjB,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,YAAYA,EAAG,OAAO,CAACF,EAAIoD,GAAG,yBAAyBlD,EAAG,aAAa,GAAGA,EAAG,cAAc,CAACA,EAAG,MAAM,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,QAAQ,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,OAAO,CAACF,EAAIoD,GAAG,qBAAqBpD,EAAIgE,GAAGhE,EAAImF,YAAY,IAAInF,EAAIgE,GAAGhE,EAAIoF,aAAa,6BAA6BlF,EAAG,QAAQ,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAACG,MAAM,CAAC,SAAW,GAAG,YAAY,qBAAqBE,GAAG,CAAC,MAAQP,EAAI0F,qBAAqB,CAAC1F,EAAIoD,GAAG,UAAUlD,EAAG,QAAQ,CAAC6D,YAAY,eAAe1D,MAAM,CAAC,YAAY,sBAAsBE,GAAG,CAAC,MAAQP,EAAI2F,mBAAmB,CAAC3F,EAAIoD,GAAG,YAAY,IAAI,MAAM,IAAI,GAAGlD,EAAG,WAAW,CAACG,MAAM,CAAC,YAAY,OAAOQ,MAAM,CAACC,MAAOd,EAAI4F,eAAgB5E,SAAS,SAAUC,GAAK,wBAACjB,EAAI4F,eAAe3E,CAAI,EAACE,WAAW,mBAAmB,CAACjB,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,YAAYA,EAAG,OAAO,CAACF,EAAIoD,GAAG,gBAAgBlD,EAAG,aAAa,GAAGA,EAAG,cAAc,CAACA,EAAG,MAAM,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,QAAQ,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,QAAQ,CAACF,EAAIoD,GAAG,gBAAgBlD,EAAG,QAAQ,CAACA,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,GAAG,eAAe,GAAG,MAAQ,GAAG,MAAQL,EAAI6F,WAAW,YAAY,QAAQ,aAAa,SAAShF,MAAM,CAACC,MAAOd,EAAI8F,kBAAmB9E,SAAS,SAAUC,GAAK,wBAACjB,EAAI8F,kBAAkB7E,CAAI,EAACE,WAAW,wBAAwB,IAAI,GAAGjB,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAACF,EAAIoD,GAAG,eAAelD,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,QAAQE,GAAG,CAAC,OAAS,SAASwC,GAAQ,OAAD,wBAAQ/C,EAAI+F,iBAAiBhD,EAAQ,QAAO,GAAG7C,EAAG,QAAQ,CAACA,EAAG,YAAYA,EAAG,QAAQ,CAACG,MAAM,CAAC,SAAW,GAAG,YAAY,cAAcE,GAAG,CAAC,MAAQP,EAAIgG,eAAe,CAAChG,EAAIoD,GAAG,cAAclD,EAAG,QAAQ,CAAC6D,YAAY,UAAU1D,MAAM,CAAC,YAAY,UAAUE,GAAG,CAAC,MAAQP,EAAIiG,aAAa,CAACjG,EAAIoD,GAAG,WAAW,IAAI,MAAM,IAAI,IAAI,EACj7J,EACG/B,GAAe,YAAG,I,UCFkQ,EAAe,EAAG,E,UCOtSkB,GAAY,OACd,EACAxC,EACAsB,GACA,EACA,KACA,KACA,MAIF,EAAekB,EAAiB,O,uFClB5BxC,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,WAAW,CAACG,MAAM,CAAC,MAAQ,OAAOQ,MAAM,CAACC,MAAOd,EAAIkG,KAAMlF,SAAS,SAAUC,GAAMjB,EAAIkG,KAAKjF,CAAI,EAACE,WAAW,SAAS,CAACjB,EAAG,SAAS,CAACA,EAAG,eAAe,CAACA,EAAG,YAAYA,EAAG,OAAO,CAACF,EAAIoD,GAAG,eAAelD,EAAG,aAAa,GAAGA,EAAG,eAAe,CAACF,EAAIoD,GAAG,IAAIpD,EAAIgE,GAAGhE,EAAImF,YAAY,IAAInF,EAAIgE,GAAGhE,EAAImG,YAAY,IAAInG,EAAIgE,GAAGhE,EAAIoG,UAAU,OAAOlG,EAAG,kBAAkB,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQC,gBAAgBpG,EAAG,cAAc,CAACA,EAAG,cAAc,CAACG,MAAM,CAAC,MAAQ,KAAK,CAAe,QAAbL,EAAI2B,KAAgBzB,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,iBAAiBlD,EAAG,SAASA,EAAG,cAAc,CAAC6D,YAAY,YAAY1D,MAAM,CAAC,MAAQ,KAAK,CAACH,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,eAAelD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIuG,cAAc,GAAGrG,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,qBAAqBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIwG,oBAAoB,GAAGtG,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,qBAAqBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIyG,oBAAoB,GAAGvG,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,sBAAsBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAI0G,gBAAgB,IAAI,IAAI,GAAG1G,EAAI8D,KAAK5D,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,gBAAgBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQM,gBAAgB,GAAGzG,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,cAAclD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQO,cAAc,GAAI5G,EAAIqG,QAAQQ,WAAY3G,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,gBAAgBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQQ,gBAAgB,GAAG7G,EAAI8D,KAAK5D,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,eAAelD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQS,eAAe,GAAiB,QAAb9G,EAAI2B,KAAgBzB,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,aAAalD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQU,aAAa,GAAG/G,EAAI8D,KAAmB,QAAb9D,EAAI2B,KAAgBzB,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,aAAalD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQW,aAAa,GAAGhH,EAAI8D,KAAmB,QAAb9D,EAAI2B,KAAgBzB,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,aAAalD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQzE,aAAa,GAAG5B,EAAI8D,KAAK5D,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,mBAAmBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQY,mBAAmB,GAAG/G,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,qBAAsBpD,EAAIqG,QAAQa,gBAAiBhH,EAAG,QAAQ,CAACF,EAAIoD,GAAG,WAAWpD,EAAIgE,GAAGhE,EAAIqG,QAAQa,gBAAgBzG,OAAO,KAAKP,EAAG,MAAMF,EAAIoD,GAAG,YAAYpD,EAAIgE,GAAGhE,EAAIqG,QAAQa,gBAAgBvE,QAAQ,OAAOzC,EAAG,UAAU,GAAGA,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,sBAAuBpD,EAAIqG,QAAQc,iBAAkBjH,EAAG,QAAQ,CAACF,EAAIoD,GAAG,WAAWpD,EAAIgE,GAAGhE,EAAIqG,QAAQc,iBAAiB1G,OAAO,KAAKP,EAAG,MAAMF,EAAIoD,GAAG,YAAYpD,EAAIgE,GAAGhE,EAAIqG,QAAQc,iBAAiBxE,QAAQ,OAAOzC,EAAG,UAAU,GAAGA,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,cAAclD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQe,cAAc,GAAGlH,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,gBAAgBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQgB,gBAAgB,GAAGnH,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,gBAAgBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQiB,WAAW,GAAGpH,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,gBAAgBlD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIqG,QAAQkB,gBAAgB,GAAIvH,EAAIqG,QAAQjG,OAAQF,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,YAAYlD,EAAG,SAASA,EAAG,cAAc,CAAC6D,YAAY,YAAY1D,MAAM,CAAC,MAAQ,KAAKL,EAAI4E,GAAI5E,EAAIqG,QAAQjG,QAAQ,SAASoH,EAAM9D,GAAK,OAAOxD,EAAG,QAAQ,CAACwD,IAAIA,EAAIrD,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAGpD,EAAIgE,GAAGN,MAAQxD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGwD,EAAM1G,WAAW,EAAG,IAAE,IAAI,GAAGZ,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,YAAYlD,EAAG,QAAQ,CAACF,EAAIoD,GAAG,WAAW,GAAIpD,EAAIqG,QAAQoB,OAAQvH,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,YAAYlD,EAAG,SAASA,EAAG,cAAc,CAAC6D,YAAY,YAAY1D,MAAM,CAAC,MAAQ,KAAKL,EAAI4E,GAAI5E,EAAIqG,QAAQoB,QAAQ,SAASC,EAAMhE,GAAK,OAAOxD,EAAG,QAAQ,CAACwD,IAAIA,EAAIrD,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAGpD,EAAIgE,GAAGN,MAAQ1D,EAAIoD,GAAG,IAAIpD,EAAIgE,GAAGhE,EAAI2H,YAAYD,IAAQ,KAAKxH,EAAG,UAAU,EAAG,IAAE,IAAI,GAAGA,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,YAAYlD,EAAG,QAAQ,CAACF,EAAIoD,GAAG,WAAW,GAAIpD,EAAIqG,QAAQuB,KAAM1H,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,UAAUlD,EAAG,SAASA,EAAG,cAAc,CAAC6D,YAAY,YAAY1D,MAAM,CAAC,MAAQ,KAAKL,EAAI4E,GAAI5E,EAAIqG,QAAQuB,MAAM,SAAS9G,EAAM4C,GAAK,OAAOxD,EAAG,QAAQ,CAACwD,IAAIA,EAAIrD,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAGpD,EAAIgE,GAAGN,MAAQxD,EAAG,QAAQ,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGlD,OAAW,EAAG,IAAE,IAAI,GAAGZ,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAACH,EAAG,QAAQ,CAAC6D,YAAY,QAAQ1D,MAAM,CAAC,KAAO,MAAM,CAACL,EAAIoD,GAAG,UAAUlD,EAAG,QAAQ,CAACF,EAAIoD,GAAG,WAAW,IAAI,IAAI,IAAI,IAAI,EAC90L,EACG/B,EAAkB,G,4BAsLtB,GACAI,MAAAA,CACAE,KAAAA,CACAC,QAAAA,MACAiG,UAAAA,SAAAA,GAEA,mCACA,GAEA1C,WAAAA,OACAgB,WAAAA,OACAC,SAAAA,OACAtF,MAAAA,SAEAoB,KAdA,WAeA,OACAmE,QAAAA,OACAyB,QAAAA,KACAvB,SAAAA,KACAC,eAAAA,KACAC,eAAAA,KACAC,WAAAA,KAEA,EACAvE,SAAAA,CACA+D,KAAAA,CACA6B,IADA,WAEA,iBACA,EACAC,IAJA,SAIAlH,GACA,qBACA,IAGAmH,QAlCA,WAmCA,gBACA,EACAC,cArCA,WAsCAC,cAAAA,KAAAA,SACA,iBACA,EACAC,MAAAA,CAIAtH,MAAAA,SAAAA,EAAAA,GAAA,WACA,GACA,sBACA,oBACA,qCACA,MACAuH,eAAA,WACA,aADA,aACA,aADA,aACA,WADA,mBAEA,aAFA,aAEA,aAFA,aAEA,WAFA,yBAGA,aAHA,aAGA,aAHA,aAGA,WAHA,yBAIA,aAJA,aAIA,aAJA,aAIA,WAJA,kBAMAC,MAAA,YACA,mBACA,yBACA,yBACA,oBACA,GACA,WAGAH,cAAAA,KAAAA,SACA,kBAEA,GAEA7F,QAAAA,CACAiG,eADA,WACA,WACA,kBACA,SACAC,SAAA,+CACAF,MAAA,YACA,WACA,IAEA,SACAG,cAAA,+CACAH,MAAA,YACA,WACA,GAEA,EACAX,YAhBA,SAgBAD,GACA,mBAEA,MACAA,EAAAA,QACA,OACAA,EAAAA,WACA,OACAA,EAAAA,YACA,OACAA,EAAAA,SACA,OACAA,EAAAA,UACA,OACAA,EAAAA,WAEA,UAEA,MACAA,EAAAA,QACA,OACAA,EAAAA,WACA,OACAA,EAAAA,YACA,OACAA,EAAAA,SAGA,CAEA,IC7S+Q,I,oBCQ3QnF,GAAY,OACd,EACAxC,EACAsB,GACA,EACA,KACA,WACA,MAIF,EAAekB,EAAiB,O,uFCnB5BxC,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,cAAc,CAAC6D,YAAY,kBAAkB,CAAC7D,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAOL,EAAI0I,QAAQ,YAAY,kBAAkB,CAACxI,EAAG,iBAAiB,CAACG,MAAM,CAAC,MAAQ,gBAAgB,eAAe,GAAG,MAAQ,GAAG,MAAQL,EAAI2I,YAAY,YAAY,QAAQ,aAAa,SAASpI,GAAG,CAAC,OAASP,EAAI4I,mBAAmB/H,MAAM,CAACC,MAAOd,EAAI6I,mBAAoB7H,SAAS,SAAUC,GAAMjB,EAAI6I,mBAAmB5H,CAAI,EAACE,WAAW,yBAAyB,GAAGjB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAOL,EAAI0I,QAAQ,YAAY,kBAAkB,CAACxI,EAAG,iBAAiB,CAACG,MAAM,CAAC,MAAQ,gBAAgB,eAAe,GAAG,MAAQ,GAAG,SAAWL,EAAI8I,iBAAmB9I,EAAI+I,eAAe,MAAQ/I,EAAIgJ,YAAY,YAAY,QAAQ,aAAa,SAASzI,GAAG,CAAC,OAASP,EAAIiJ,mBAAmBpI,MAAM,CAACC,MAAOd,EAAIkJ,mBAAoBlI,SAAS,SAAUC,GAAMjB,EAAIkJ,mBAAmBjI,CAAI,EAACE,WAAW,yBAAyB,GAAInB,EAAImJ,aAAenJ,EAAI+I,eAAgB7I,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAOL,EAAI0I,QAAQ,YAAY,gBAAgB,CAACxI,EAAG,iBAAiB,CAACG,MAAM,CAAC,MAAQ,cAAc,eAAe,GAAG,MAAQ,GAAG,SAAWL,EAAIoJ,eAAiBpJ,EAAI+I,eAAe,MAAQ/I,EAAIqJ,UAAU,YAAY,QAAQ,aAAa,SAAS9I,GAAG,CAAC,OAAS,SAASwC,GAAQ,OAAO/C,EAAIsJ,gBAAgBvG,EAAQ,GAAElC,MAAM,CAACC,MAAOd,EAAIuJ,iBAAkBvI,SAAS,SAAUC,GAAMjB,EAAIuJ,iBAAiBtI,CAAI,EAACE,WAAW,uBAAuB,GAAGnB,EAAI8D,KAAM9D,EAAIwJ,WAAYtJ,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAOL,EAAI0I,UAAU,CAACxI,EAAG,QAAQ,CAACG,MAAM,CAAC,SAAWL,EAAI+I,eAAe,MAAQ,GAAG,MAAQ,UAAU,YAAY,eAAexI,GAAG,CAAC,MAAQP,EAAIyJ,gBAAgB,CAACzJ,EAAIoD,GAAG,IAAIpD,EAAIgE,GAAGhE,EAAI0J,kBAAkB,QAAQ,GAAG1J,EAAI8D,MAAM,GAAG5D,EAAG,QAAQ,CAACG,MAAM,CAAC,aAAa,KAAK,CAAEL,EAAIiC,UAAW/B,EAAG,QAAQ,CAAC6D,YAAY,gBAAgB1D,MAAM,CAAC,KAAOL,EAAI0I,UAAU,CAACxI,EAAG,cAAc,CAACG,MAAM,CAAC,OAAS,UAAU,OAAS,KAAK,CAACL,EAAIoD,GAAG,iBAAiBpD,EAAIgE,GAAGhE,EAAIsG,aAAa,oBAAoB,GAAGpG,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAOL,EAAI0I,UAAU,CAAC1I,EAAIoD,GAAG,iBAAiBpD,EAAIgE,GAAGhE,EAAIsG,aAAa,QAAQ,IAAI,EAC3gE,EACGjF,EAAkB,G,oEAuFtB,GACAI,MAAAA,CACAkI,SAAAA,CACAhI,KAAAA,QACAC,SAAAA,GAEA4H,WAAAA,CACA7H,KAAAA,OACAC,QAAAA,MAEAuH,WAAAA,CACAxH,KAAAA,QACAC,SAAAA,GAEAgI,SAAAA,CACAjI,KAAAA,QACAC,SAAAA,GAEAiI,kBAAAA,CACAlI,KAAAA,OACAC,QAAAA,IAEAkI,kBAAAA,CACAnI,KAAAA,OACAC,QAAAA,IAEAmI,gBAAAA,CACApI,KAAAA,OACAC,QAAAA,IAEAoI,KAAAA,CACArI,KAAAA,OACAC,QAAAA,MAEAiG,UAAAA,SAAAA,GACA,+BACA,GAEAoC,QAAAA,CACAtI,KAAAA,OACAC,QAAAA,QACAiG,UAAAA,SAAAA,GACA,OACA,cACA,eACA,iBACA,SACAqC,SAAAC,EACA,GAEAC,QAAAA,CACAzI,KAAAA,QACAC,SAAAA,GAEAyI,SAAAA,CACA1I,KAAAA,QACAC,SAAAA,IAGAM,KA3DA,WA2DA,UACA,OACAyG,YAAAA,GACAK,YAAAA,GACAK,UAAAA,GACAR,mBAAAA,QAAAA,EAAAA,KAAAA,yBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,cACAK,mBAAAA,QAAAA,EAAAA,KAAAA,yBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,cACAK,iBAAAA,QAAAA,EAAAA,KAAAA,uBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,cACAjD,YAAAA,GACArE,WAAAA,EACAqI,kBAAAA,EACAxB,iBAAAA,EACAM,eAAAA,EACAmB,IAAAA,KACAC,IAAAA,CACAnI,MAAAA,UACAvB,MAAAA,MACAwF,YAAAA,OAEAmE,QAAAA,CACApI,MAAAA,cACAvB,MAAAA,UACAwF,YAAAA,WAGA,EACA2B,QArFA,WAqFA,WACA,yBACA,iBACA,6CACA,iCACA,OAAA5F,MAAAA,EAAAvB,MAAAA,EACA,IACA,uBACA,4CACA,2CAEA,kBACA,WACA,6BAEA,GACA,EACAqB,SAAAA,CACAuH,iBAAAA,WACA,sCACA,aAEA,8BACA,aAEA,eACA,EACAX,eAAAA,WACA,2CACA,EACA2B,mBAAAA,WACA,wCACA,CAAAC,MAAAA,MAAAC,MAAAA,OAAA,sBAEA,CAAAD,MAAAA,MAAAC,MAAAA,OAEA,EACAC,mBAAAA,WACA,wCACA,CAAAF,MAAAA,MAAAC,MAAAA,OAAA,sBAEA,CAAAD,MAAAA,MAAAC,MAAAA,QAEA,EACAlC,QAAAA,WACA,yBACA,GAEAN,MAAAA,CACA4B,KAAAA,SAAAA,EAAAA,GACA,qBACA,iBACA,EACAC,QAAAA,SAAAA,EAAAA,GACA,kBACA,GAEA3H,QAAAA,CACAwI,cAAAA,WAAA,WACA,uCAKA,OAJA,gCACA,kDACA,gDACA,4BAGA,yBACA,MACA,kBACA,0BACA,wBACA,uDACA,iCACA,OACAzI,MAAAA,EACAvB,MAAAA,EAEA,IACA,YACA,6BAEA,uBACA,6CAEA,0CACA,gCACA,qCACA,IACA,cACA,gBAEA,qBACA,GACA,EAEAiK,YAAAA,WAAA,WACA,oCAGA,yBACA,sDACA,mEACA,YACA,oBACAC,KAAA,YACA,0BACA,CACA,CACA3I,MAAAA,EAAAA,KACAvB,MAAAA,EAAAA,KACAwF,YAAAA,EAAAA,cAIA,qBAEA,IACA2E,QAAA,cACA,kBACA,OACA,YACA,2BAEA,qBACA,yCAEA,yCACA,sBACA,kBACA9F,WAAAA,EAAAA,mBACAgB,WAAAA,EAAAA,mBACAC,SAAAA,EAAAA,iBACA6D,QAAAA,EAAAA,SAEA,GApCA,CAsCA,EAEAiB,iBAAAA,SAAAA,GACA,+BACA,uDACA,8CACA,OACA7I,MAAAA,GAAAA,OAAAA,EAAAA,KAAAA,KAAAA,OAAAA,GACAvB,MAAAA,GAAAA,OAAAA,EAAAA,KAAAA,KAAAA,OAAAA,GACAwF,YAAAA,GAAAA,OAAAA,EAAAA,KAAAA,OAAAA,EAAAA,aAEA,IAEA,EACA,EAEAsC,kBAAAA,SAAAA,GACA,0BACA,2BACA,yBACA,oBACA,EAEAK,kBAAAA,SAAAA,GAAA,WACA,aACA,sBACA,6BACA,CACA,sBACA,yCACA,kBACA,IACA,gCACA,sDACA,mEACA,YACA,4BACA,uBACA,GAEA,CACA,iBACA,yBACA,oBAEA,qBACA9D,WAAAA,KAAAA,mBACAgB,WAAAA,KAAAA,mBACA8D,QAAAA,KAAAA,SAGA,EAEAX,gBAAAA,SAAAA,GACA,uCACA,kBACA,IACA,8BACA,+BACA,qBACAnE,WAAAA,KAAAA,mBACAgB,WAAAA,KAAAA,mBACAC,SAAAA,KAAAA,iBACA6D,QAAAA,KAAAA,SAEA,EAEAR,cAAAA,WACA,gCACA,4BACA,8BACA,sBACA,gBACA,oBACAtE,WAAAA,KAAAA,mBACAgB,WAAAA,KAAAA,mBACAC,SAAAA,KAAAA,iBACA6D,QAAAA,KAAAA,UAGA,oBACA9E,WAAAA,KAAAA,mBACAgB,WAAAA,KAAAA,mBACA8D,QAAAA,KAAAA,SAGA,EAEAkB,qBAAAA,WAAA,WACA,sCACA,cACA,mDACA,6CACA,YACAtI,EAAAA,MAAAA,SAAAA,SAAAA,GACA,iBACAsC,WAAAA,EAAAA,mBACAgB,WAAAA,EAAAA,MACAC,SAAAA,EAAAA,QACA6D,QAAAA,EAAAA,SAEA,GACA,GAZA,CAcA,GACA,EAEAmB,eAAAA,WAAA,WACA,oCACA,WACA,iBACAjG,WAAAA,EAAAA,mBACAgB,WAAAA,EAAAA,mBACAC,SAAAA,EAAAA,MACA6D,QAAAA,EAAAA,SAEA,GACA,IC3ayR,I,oBCQrR1H,GAAY,OACd,EACAxC,EACAsB,GACA,EACA,KACA,KACA,MAIF,EAAekB,EAAiB,O,gFCnB5BxC,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,kBAAkB,CAACG,MAAM,CAAC,WAAW,eAAe,OAAS,KAAK,CAACH,EAAG,MAAM,CAAC6D,YAAY,sBAAsB,CAAC/D,EAAI4E,GAAI5E,EAAIwC,OAAO,SAAS6I,EAAKC,GAAG,OAAOpL,EAAG,SAAS,CAACwD,IAAI4H,EAAEjL,MAAM,CAAC,WAAW,IAAImD,YAAYxD,EAAIyD,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,YAAuB,IAAZpD,EAAY,EAAZA,GAAIF,EAAQ,EAARA,MAAS,MAAO,CAACH,EAAG,QAAQF,EAAIuL,GAAGvL,EAAIwL,GAAG,CAACzH,YAAY,OAAO1D,MAAM,CAAC,SAAW,GAAG,YAAYL,EAAIyL,SAAJ,UAAgBzL,EAAIyC,MAApB,YAA6B4I,EAAKhJ,UAAW,QAAQhC,GAAM,GAAOE,GAAI,CAACL,EAAG,OAAO,CAACsF,SAAS,CAAC,YAAcxF,EAAIgE,GAAGqH,EAAKhJ,UAAUnC,EAAG,SAAS,CAACG,MAAM,CAAC,MAAQ,KAAK,CAACL,EAAIoD,GAAG,sBAAsB,GAAI,IAAG,MAAK,IAAO,CAAClD,EAAG,SAAS,CAACA,EAAG,gBAAgB,CAAC6D,YAAY,YAAY1D,MAAM,CAAC,MAAQgL,EAAKK,WAAW,eAAe,GAAG,MAAQ,KAAK,CAAC1L,EAAI4E,GAAIyG,EAAKM,OAAO,SAASC,EAAOC,GAAG,MAAO,CAAED,EAAOE,QAAS5L,EAAG,aAAaA,EAAG,cAAc,CAACwD,IAAImI,EAAExL,MAAM,CAAC,SAAWuL,EAAOhC,SAAS,YAAY5J,EAAIyL,SAAJ,UAAgBzL,EAAIyC,MAApB,YAA6B4I,EAAKhJ,MAAlC,YAA2CuJ,EAAOvJ,SAAU9B,GAAG,CAAC,MAAQqL,EAAOG,UAAU,CAAEH,EAAOI,MAAO9L,EAAG,qBAAqB,CAACA,EAAG,UAAU,CAACG,MAAM,CAAC,MAAQ,YAAY,MAAQuL,EAAOvJ,MAAM,MAAQuJ,EAAOvJ,UAAU,GAAGrC,EAAI8D,KAAM8H,EAAOK,SAAU/L,EAAG,qBAAqB,CAACA,EAAG,aAAa,CAACG,MAAM,CAAC,MAAQ,YAAY,MAAQuL,EAAOvJ,MAAM,MAAQuJ,EAAOvJ,OAAOxB,MAAM,CAACC,MAAOd,EAAIkM,QAASlL,SAAS,SAAUC,GAAMjB,EAAIkM,QAAQjL,CAAI,EAACE,WAAW,cAAc,GAAGnB,EAAI8D,KAAM8H,EAAOO,KAAMjM,EAAG,mBAAmB,CAACA,EAAG,SAAS,CAACG,MAAM,CAAC,SAAWuL,EAAOhC,WAAW,CAAC5J,EAAIoD,GAAGpD,EAAIgE,GAAG4H,EAAOO,UAAU,GAAGnM,EAAI8D,KAAO8H,EAAOI,OAAUJ,EAAOK,SAAwIjM,EAAI8D,KAAlI5D,EAAG,oBAAoB,CAACkM,MAAO,oBAAsBR,EAAOhC,SAAW,eAAiB,KAAM,CAAC5J,EAAIoD,GAAGpD,EAAIgE,GAAG4H,EAAOvJ,WAAoB,GAAI,KAAG,IAAI,IAAI,EAAG,IAAEnC,EAAG,YAAYA,EAAG,kBAAkB,CAACF,EAAIoD,GAAGpD,EAAIgE,GAAGhE,EAAIyC,UAAUvC,EAAG,aAAa,IACpuD,EACGmB,EAAkB,GAwFtB,G,wBAAA,CACAI,MAAAA,CACAe,MAAAA,CACAb,KAAAA,MACAC,QAAAA,WACA,QACA,GAEAa,MAAAA,CACAd,KAAAA,OACAC,QAAAA,KAGAU,QAAAA,CAEAmJ,SAAAA,SAAAA,GACA,0CACA,GAEAY,QAnBA,WAoBAC,SAAAA,MAAAA,KAAAA,KACA,IC/GwQ,I,oBCQpQ/J,GAAY,OACd,EACAxC,EACAsB,GACA,EACA,KACA,WACA,MAIF,EAAekB,EAAiB,O,qFChB5BgK,EAA0B,IAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,mNAAoN,KAE7P,c,qFCJIH,EAA0B,IAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,qEAAsE,KAE/G,c,qFCJIH,EAA0B,IAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,yCAA0C,KAEnF,c,oFCJIH,EAA0B,IAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,qKAAsK,KAE/M,c,k20DC0NA,0BACApL,OAAAA,CAAAA,6DAAAA,GACAqL,WAAAA,CACAC,cAAAA,+EAAAA,EACAC,wBAAAA,yFAAAA,EACAC,uBAAAA,0EAAAA,EACAC,OAAAA,wEAAAA,GAEA7K,KARA,WAQA,WACA,OADA,gDACA,CACAO,MAAAA,iBACAY,OAAAA,GACAC,QAAAA,CACA,CAAA0J,KAAAA,OAAAlM,MAAAA,kBACA,CAAAkM,KAAAA,iBAAAlM,MAAAA,kBACA,CAAAkM,KAAAA,QAAAlM,MAAAA,SACA,CAAAkM,KAAAA,cAAAlM,MAAAA,gBAEAqE,WAAAA,GACAC,YAAAA,GACA6H,mBAAAA,EACAvL,aAAAA,EACAwL,mBAAAA,EACAC,QAAAA,EACAC,cAAAA,GACAlK,KAAAA,GACA2C,WAAAA,GACAC,kBAAAA,GACAuH,WAAAA,KACApJ,OAAAA,GACAE,QAAAA,GACAsB,sBAAAA,EACAF,oBAAAA,EACAK,gBAAAA,EACA9C,cAAAA,EACAyH,IAAAA,KACAjF,aAAAA,EACAX,kBAAAA,EACAU,cAAAA,GACAiI,kBAAAA,GACA7I,EAAAA,EACAC,EAAAA,EACAG,mBAAAA,CACA,CACApC,MAAAA,UACAuC,OAAAA,WAAA,gDACA,sBADA,wBAEA,gBACA,IAGAxC,MAAAA,CAaA,CACAH,MAAAA,OACAsJ,MAAAA,CACA,CACAtJ,MAAAA,sBACA4J,UAAAA,EACAF,QAAAA,WAAA,gDACA,wCACA,GAEA,CACA1J,MAAAA,8BACA4J,UAAAA,EACAF,QAAAA,WAAA,gDACA,4BACA,GAEA,CACA1J,MAAAA,0BACA4J,UAAAA,EACAF,QAAAA,WAAA,gDACA,yCADA,wBAIA,mBACA,GAEA,CACA1J,MAAAA,gCACA4J,UAAAA,EACAF,QAAAA,WAAA,gDACA,kBACA,MAMA,EACA9D,QAvGA,WAuGA,2DACAsF,mEAAAA,EAAAA,IAAAA,gDAAAA,MAAAA,SAAAA,GAAA,gDACA,0BACA,IAHA,yBAIA,yFAJA,yBAMA,kKACA,qBACApI,WAAAA,KAAAA,OAAAA,OAAAA,OAAAA,cACAgB,WAAAA,KAAAA,OAAAA,OAAAA,OAAAA,iBAHA,0BAMA,EACA7D,QAAAA,CACA8B,mBADA,WAEA,OADA,iDACA,gDACA,EACAI,aAJA,SAIAhD,GAAA,iDAEAA,EAAAA,iBACA,gEACA,8CAEA,qDAEA,6DACA,2CAEA,GAXA,yBAWA,OACA,OADA,oFAKA,gDACA,gDAjBA,yBAkBAuK,EAAAA,EAAAA,OAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAlBA,yBAmBA,eACA,EAEAxI,gBA1BA,SA0BAiK,EAAAC,GAAA,6DACAD,EAAAA,iBADA,yBAEA,yCAFA,yBAGA,yBAHA,yBAIA,iBAJA,yBAKA,iBALA,yBAMA,6EACA,qBACA,GACA,EAEAE,eArCA,wBAqCAC,OACA,GADA,kDAEA,mGACAA,qBAAAA,MAAAA,eAAAA,gBAEA,OADA,oDACA,0CAEA,GANA,2BADA,yBAOA,2CACA,OADA,oDACA,yBADA,2BAIA,4DACA,gEACA,GAbA,yBAaA,gDACA,2DACA,GAFA,yBAGA,kIACAC,UAAAA,WAAAA,OAaA,OADA,oDACA,6EACA,MACA,oIACA,MACA,6HACA,MACA,6HACA,kBACA,2HACA,gBACA,6HACA,YACA,qDACA,UAzBA,2BACA,yDADA,yBAEA,yEACAC,OAAAA,IAAAA,QADA,2BAGA,oCAAAC,WAAAA,SAAAC,IAAAA,KALA,yBAMA,6DACA,0EADA,yBAEAC,KAAAA,IAAAA,KAAAA,SAAAA,OAAAA,IACA,CACA,OAVA,yBAUA,IAkBA,CACA,OADA,oDACA,aAEA,EAEAhL,eAxFA,SAwFAxB,GAAA,kDAEA,yFACA,kCACA,qDACA,6BADA,yBAEA,8BAFA,0BAIA,4EACA,wBADA,4BAJA,yBAOA,aACAyM,QAAA,CACAC,KAAAA,gBACAvL,OAAAA,CACAC,OAAAA,KAAAA,WACAC,OAAAA,KAAAA,eAIAsL,OAAA,yCAnBA,2BAqBA,EAEAC,gBAhHA,WAgHA,6DACA,qBADA,yBAEA,sBAFA,yBAGA,aAHA,yBAIA,SACAC,WAAA,iBACA/F,MACA,YAEA,OAFA,kDACA,qCADA,yBAEA,6CACA,IACA,8DACA,8CACA,IAEAA,MACA,8DACAyD,EAAAA,MAAAA,SAAAA,SAAAA,GACA,GADA,kDACA,sGACA,GADA,4BADA,yBAGA,4FACA,qBACA,6BACA,2CADA,yBAKA,iFACA,8BACA,qDACAjK,EAAAA,IAAAA,OAAAA,EAAAA,MAJA,4BAJA,yBAUA,iEACAA,EAAAA,IADA,4BAVA,yBAaA,sEACAA,EAAAA,QAAAA,EAAAA,cAAAA,EAAAA,UADA,4BAbA,yBAgBA,aACAwM,eAAAA,EAAAA,KACAzK,eAAAA,CACA/B,IAAAA,EACA1B,OAAAA,EAAAA,OACAW,eAAAA,KACAgB,qBAAAA,GACAC,aAAAA,MAEAsE,YAAAA,EAAAA,YACAgB,MAAAA,EAAAA,MACA3F,KAAAA,EAAAA,WAEA,MAhCA,2BAiCA,IApCA,yBAqCA,kBArCA,yBAsCA,WACA,IACA,8DACA,8CACA,GAEA,EAEA4M,gBA9KA,WA8KA,yBACA,oCADA,yBAEA,uFACAC,EAAAA,KAAAA,KAAAA,GAAAA,gBAAAA,KAAAA,eACA,cAGA,OAPA,yBAOA,CACA,EAEAvL,SAxLA,WAwLA,kDACA,qEACA,EAMAwL,QAhMA,SAgMAtJ,EAAAC,EAAAoJ,GAAA,6DACA,qBACA,qCACA,iCAHA,0BAIA,wCACA,YAMA,OANA,mDACAvM,EAAAA,EADA,0BAGA,0DACA,4BACA,sDAEA,gEACA,2EACAyM,EAAAA,yBADA,0BAEAC,EAAAA,EAAAA,IAAAA,uBACAxJ,EACAC,EACAoJ,KAEA,sDACAE,EAAAA,UADA,0BAEAC,EAAAA,EAAAA,IAAAA,QAAAA,EAAAA,EAAAA,EAAAA,CAGA,2BAGA,sDACA,2EACAD,EAAAA,qBADA,0BAEAC,EAAAA,EAAAA,IAAAA,mBACAxJ,EACAC,EACAoJ,KAEA,sDACAE,EAAAA,MADA,0BAEAC,EAAAA,EAAAA,IAAAA,IAAAA,EAAAA,EAAAA,EAAAA,CAGA,0BA/BA,0BAoCAA,EAAAA,MACA,+DACA,yBACA,IACA,+DACA,0BACA,IAGA,IACA,+DACA,0BACA,GAEA,EAEAhJ,iBA9PA,WA8PA,8DACA,6BACA,yDACA,iCACA,iCAJA,0BAKA,mEACA,8EACA+I,EAAAA,oBADA,0BAEAC,EAAAA,KAAAA,IAAAA,kBACA,gBACA,iBACAH,KAEA,sDACAE,EAAAA,6BADA,0BAEAC,EAAAA,KAAAA,IAAAA,2BACA,gBACA,iBACAH,EACA,CAGA,2BAIA,sDACA,8EACAE,EAAAA,gBADA,0BAEAC,EAAAA,KAAAA,IAAAA,cACA,gBACA,iBACAH,KAEA,sDACAE,EAAAA,yBADA,0BAEAC,EAAAA,KAAAA,IAAAA,uBACA,gBACA,iBACAH,EACA,CAGA,0BA3CA,0BAiDAG,EAAAA,MACA,+DACA,yBACA,IACA,+DACA,0BACA,GAEA,EAEAjJ,mBAzTA,WAyTA,mDACA,6BADA,0BAEA,yCAFA,0BAGA,oBACA,EAEAkJ,mBA/TA,SA+TAC,EAAAC,GAAA,yBACA,qCACA,GAFA,0BAEA,yDACAC,EAAAA,GAAAA,OAAAA,EAAAA,MAAAA,OAAAA,EAAAA,GAAAA,KAAAA,OAAAA,EAAAA,IACA,oDACA,GAHA,0BAGA,kEACAA,GAAAA,SADA,0BAEA,wDACA,uCACA,4DAFA,0BAKA,oFACAjO,MAAAA,EAAAA,OAAAA,MADA,4BAEAA,MAAAA,EAAAA,OAAAA,KACA,sDACAA,EAAAA,IAAAA,OAAAA,EAAAA,MALA,4BAJA,0BAWAiO,GAAAA,EAAAA,IAAAA,EAXA,0BAYA,oEACAA,GAAAA,MADA,2BAGA,CACA,MAlBA,4BAyBA,GA5BA,0BAsBAA,GAAAA,KAtBA,0BAuBA,4GACA,sBAxBA,0BA0BAA,GAAAA,SA1BA,0BA4BA,qDACA,6DACA,GAFA,0BAEA,gDACA,+EADA,0BAEAA,EAAAA,EAAAA,GAAAA,WAAAA,EAAAA,GAAAA,GACA,4DACAA,GAAAA,MAEA,MARA,4BA5BA,0BAqCA,aACA,kCACA,kFADA,0BAEA,yBACA,CA3CA,0BA4CA,oBACA,EAEAC,aA9WA,SA8WAC,EAAAC,GAAA,iJACA,yDADA,0BAEA,2IACA,kBADA,0BAEA,wBAFA,4BAFA,0BAMA,yDACA,4BADA,2BAGA,G,+tPCzrBA,QACE5M,QAAS,CACP6M,QADO,SACCC,GAEN,OAFW,sBAEP,wBAAwBC,KAAKD,IAAM,0BAC9B,IADT,cAFW,WAMP,mDAAmDC,KAAKD,IAAM,0BACzD,IADT,cANW,YASJ,GACR,EAEDE,MAbO,SAaDF,GAEJ,OAFS,sBAEL,mBAAmBC,KAAKD,IAAM,0BACzB,IADT,cAFS,WAOL,iCAAiCC,KAAKD,IAAM,0BACvC,IADT,cAPS,YAUF,GACR,EAEDG,QA1BO,SA0BCH,GAEN,OAFW,uBAEP,iBAAiBC,KAAKD,IAAM,2BACvB,IADT,cAFW,aAKJ,EACR,EAEDI,aAlCO,SAkCMJ,GAEX,GAFgB,uBAEZA,EAAIjM,OAAS,EACf,OADkB,0BACXiM,EADT,cAGA,IAAIK,GAAS,YAAGL,EAAIM,OAAO,IAC3B,GANgB,YAMZ,cAAc,MAAdD,IAAA,cAAmC,MAAdA,GACvB,OAD0C,0BACnCL,EADT,cAGA,IAAIO,GAAQ,YAAGP,EAAIM,OAAON,EAAIjM,OAAS,IACvC,OAVgB,YAUZsM,IAAcE,GAAU,0BACnBP,IADT,cAVgB,YAaTA,EAAIQ,MAAM,GAAI,GACtB,EAEDC,gBAlDO,SAkDS/O,GAAO,WACrB,IAAIwK,GAAC,YAAG,GACJwE,GAAW,YAAG,IAClB,GAHqB,YAGsC,UAAvDC,OAAOC,UAAUC,SAASC,KAAKpP,GAAO8O,MAAM,GAAI,GAAgB,eAClE,IAAIO,GAAW,YAAGrP,EAAMqC,QAExB,IAHkE,YAElE2M,EAAc,KAFoD,YAG7DxE,EAAI,EAAGA,EAAI6E,EAAa7E,IAAK,YAE4B,WAA1DyE,OAAOC,UAAUC,SAASC,KAAKpP,EAAMwK,IAAIsE,MAAM,GAAI,IACnD,2BACAE,GAAe,IAAMhP,EAAMwK,GAAK,MAC3B,2BACLwE,GAAehP,EAAMwK,IANS,YAQ5BA,IAAM6E,EAAc,GAAG,2BACzBL,GAAe,MADjB,eAXgE,YAelEA,GAAe,IAChB,MAAM,6BACkD,WAAvDC,OAAOC,UAAUC,SAASC,KAAKpP,GAAO8O,MAAM,GAAI,GAEhD,GADA,2BACI,eAAqB,WAArB9O,EAAMgN,aAAN,eAAiChN,EAAMiN,KAGzC,IAH8C,2BAE9C+B,EAAc,KAFgC,YAGzCxE,EAAI,EAAGA,EAAIxK,EAAMiN,IAAI5K,OAAQmI,IAAK,CACrC,IAAI8E,GAAM,YAAGtP,EAAMiN,IAAIzC,GAAG2E,SAAS,IAAII,eADF,YAEjCD,EAAOjN,OAAS,GAAG,2BACrBiN,EAAS,IAAMA,GADjB,eAFqC,YAKrCN,GAAeM,CAChB,MACI,2BAAI,eAAqB,UAArBtP,EAAMgN,aAAN,eAAgChN,EAAMiN,MAAK,2BACpD+B,EAAchP,EAAMiN,KADf,oBAGF,2BACL+B,EAAcQ,OAAOxP,GAEvB,OAtCqB,YAsCdgP,CACR,G,8ECxFCS,EAAO,yCAAG,WACdC,EACAC,GAFc,6IAGoD,CAAC,EAAjEvO,EAHY,EAGZA,KAHY,IAGNS,OAAAA,OAHM,MAGG,CAAC,EAHJ,EAGOW,EAHP,EAGOA,QAHP,IAGgBoN,OAAAA,OAHhB,aAGgCC,QAAAA,OAHhC,SAKTD,EALS,0CAOJE,WAAWC,YAAYD,WAAWE,oBAP9B,0DASVF,WAAWG,QATD,QAWZzN,EAAQ,iBAAmB0N,aAAaC,YAX5B,eAaTN,GAAYhO,EAAO,WACtBA,EAAO,SAAWuO,OAAOC,aAdb,mBAgBPC,EAAAA,EAAAA,GAAM,CACXZ,OAAAA,EACAC,IAAAA,EACAvO,KAAAA,EACAS,OAAAA,EACAW,QAAAA,KArBY,yDAAH,wDAyBP+N,EAA2B,CAC/BC,OAAQ,oBAGJC,GAAqB,kBACtBF,GADmB,IAEtB,eAAgB,qBAGlB,QACEtJ,IAAK,SACHyJ,GAEA,6DADkE,CAAC,EAAjE7O,EACF,EADEA,OACF,IADUW,QAAAA,OACV,MADoB+N,EACpB,EAD8CV,EAC9C,EAD8CA,QAASD,EACvD,EADuDA,OAEvD,OAAOH,EAAQ,MAAOiB,EAAM,CAAE7O,OAAAA,EAAQW,QAAAA,EAASqN,QAAAA,EAASD,OAAAA,GACzD,EAEDe,IAAK,SACHD,GAEA,6DADkE,CAAC,EAAjEtP,EACF,EADEA,KAAMS,EACR,EADQA,OACR,IADgBW,QAAAA,OAChB,MAD0BiO,EAC1B,EAD8CZ,EAC9C,EAD8CA,QAASD,EACvD,EADuDA,OAEvD,OAAOH,EAAQ,MAAOiB,EAAM,CAAEtP,KAAAA,EAAMS,OAAAA,EAAQW,QAAAA,EAASqN,QAAAA,EAASD,OAAAA,GAC/D,EAEDgB,KAAM,SACJF,GAEA,6DADkE,CAAC,EAAjEtP,EACF,EADEA,KAAMS,EACR,EADQA,OACR,IADgBW,QAAAA,OAChB,MAD0BiO,EAC1B,EAD8CZ,EAC9C,EAD8CA,QAASD,EACvD,EADuDA,OAEvD,OAAOH,EAAQ,OAAQiB,EAAM,CAAEtP,KAAAA,EAAMS,OAAAA,EAAQW,QAAAA,EAASqN,QAAAA,EAASD,OAAAA,GAChE,EAEDiB,OAAQ,SACNH,GAEA,6DADkE,CAAC,EAAjE7O,EACF,EADEA,OACF,IADUW,QAAAA,OACV,MADoB+N,EACpB,EAD8CV,EAC9C,EAD8CA,QAASD,EACvD,EADuDA,OAEvD,OAAOH,EAAQ,SAAUiB,EAAM,CAAE7O,OAAAA,EAAQW,QAAAA,EAASqN,QAAAA,EAASD,OAAAA,GAC5D,E,qGC5DGkB,EAAc,IAAIC,EAAAA,WAElBC,EAAgBV,IAAAA,OAAa,CACjCW,QAASC,SAASC,OAClBC,QAAS,IACTvP,OAAQ,CAAC,IAGXmP,EAAcK,aAAarD,SAASsD,KAClC,SAACtD,GAAD,OAAcA,CAAd,IACA,SAACI,GACC,GAAIA,EAAMJ,SAAU,yBAUlB,GAT8B,MAA1BI,EAAMJ,SAAS7K,QACjB2M,WAAWC,YAAYD,WAAWE,oBAAoB,GAStD5B,EAAMJ,SAASxL,QAAQ,kBACvB4L,EAAMJ,SAASxL,QAAQ,iBAAiB4G,SACtCgF,EAAMJ,SAAS7K,OAAOgM,YAGxB,OAAOoC,QAAQC,OAAOpD,GAExB,IAAIqD,EAAO,QAAH,OAAWrD,EAAMJ,SAAS7K,OAA1B,OAOR,GANA,UAAIiL,EAAMJ,gBAAV,OAAI,EAAgB0D,aAClBD,GAAQ,GAAJ,OAAOrD,EAAMJ,SAAS0D,WAAtB,MAEN,UAAItD,EAAMJ,gBAAV,iBAAI,EAAgB2D,cAApB,OAAI,EAAwBvQ,OAC1BqQ,GAAQ,GAAJ,OAAOrD,EAAMJ,SAAS2D,OAAOvQ,KAA7B,MAEN,UAAIgN,EAAMJ,gBAAV,iBAAI,EAAgB5M,YAApB,OAAI,EAAsBwQ,QACxBH,GAAQ,GAAJ,OAAOrD,EAAMJ,SAAS5M,KAAKwQ,cAC1B,aAAIxD,EAAMJ,gBAAV,iBAAI,EAAgB5M,YAApB,OAAI,EAAsByQ,UAC/BJ,GAAQ,GAAJ,OAAOrD,EAAMJ,SAAS5M,KAAKyQ,gBAC1B,aAAIzD,EAAMJ,gBAAV,iBAAI,EAAgB5M,YAApB,iBAAI,EAAsBgN,aAA1B,OAAI,EAA6BwD,QAClCxD,EAAMJ,SAAS5M,KAAKgN,MAAMzO,QAC5B8R,GAAQ,GAAJ,OAAOrD,EAAMJ,SAAS5M,KAAKgN,MAAMzO,MAAjC,MAEN8R,GAAQ,GAAJ,OAAOrD,EAAMJ,SAAS5M,KAAKgN,MAAMwD,aAChC,OACLH,GAAQ,GAAJ,iBAAOrD,EAAMJ,gBAAb,aAAO,EAAgB5M,KAC5B,CAKD,MAJA0P,EAAYgB,QAAQC,QAAQ,CAC1BpQ,MAAO,gBACP8P,KAAAA,IAEIrD,CACP,CACC,MAAMA,CAET,IAGH,Q,obC5Da4D,EAAb,WAGE,cAAc,iCAFT,EAEW,CAHlB,4EAME,WAAWtC,EAAQ7N,GAAnB,sGAA2BoQ,EAA3B,+BAAsC,CAAC,EAAGC,EAA1C,+BAA0D,CAAC,EAA3D,kBAEUpC,WAAWC,YAAYD,WAAWE,oBAF5C,0DAIIF,WAAWG,QAJf,eAME9Q,KAAKyM,GAAKzM,KAAKyM,GAAK,EANtB,UAQIqG,EAAS,SAAW7B,OAAOC,YAR/B,UAS2BC,EAAAA,EAAAA,KACrB,kBACA,CACE6B,QAAS,MACTzC,OAAQA,EACR7N,OAAQA,EACR+J,GAAIzM,KAAKyM,GACTwG,eAAgBH,GAElB,CACEzP,SAAS,QACP6P,cAAenC,aAAaC,YAC5B,eAAgB,wBACb+B,KAtBb,eASUlE,EATV,yBAkCWA,EAAS5M,KAAKkR,QAlCzB,4CAoCQC,EAAM,IAAIC,MACV,KAAMxE,UAGRuE,EAAInF,KAAO,KAAMY,SAAS5M,KAAKgN,MAAMhN,KAAKzB,MAC1C4S,EAAIX,QAAU,KAAM5D,SAAS5M,KAAKgN,MAAMhN,KAAKwQ,SACpC,KAAMnC,SAIf8C,EAAInF,KAAO,gBACXmF,EAAIX,QAAU,uCAGdW,EAAInF,KAAO,gBAGPmF,EArDV,iEANF,4FA+DE,SAAmBvR,GACjB,GAAY,OAARA,GAA+B,YAAf,OAAOA,IACH,SAAlBA,EAAIgM,YAAyBhM,EAAIiM,IAAK,CACxC,GAAe,OAAXjM,EAAIiM,IACN,OAAOwF,IACF,GAAe,YAAXzR,EAAIiM,IACb,OAAOyF,IACF,GAAe,aAAX1R,EAAIiM,IACb,OAAQyF,GAEX,CAEH,OAAO,IACR,GA5EH,gCA8EE,SAAmB1R,GACjB,OAAI2R,OAAOC,MAAM5R,GACR,CAAEgM,WAAY,QAASC,IAAK,OAC1BjM,GAAO2R,OAAOE,kBAChB,CAAE7F,WAAY,QAASC,IAAK,YAC1BjM,GAAO2R,OAAOG,kBAChB,CAAE9F,WAAY,QAASC,IAAK,aAE9B,IACR,GAvFH,oCA4FE,WACE,OAAO9N,KAAK4T,KAAK,yBAA0B,GAC5C,GA9FH,+BAgGE,SAAkBC,GAChB,OAAO7T,KAAK4T,KAAK,oBAAqB,CAACC,GACxC,GAlGH,kCAoGE,SAAqBA,GACnB,OAAO7T,KAAK4T,KAAK,uBAAwB,CAACC,GAC3C,GAtGH,iCAwGE,WACE,OAAO7T,KAAK4T,KAAK,sBAAuB,GACzC,GA1GH,4BA4GE,SAAeE,GACb,OAAO9T,KAAK4T,KAAK,iBAAkB,CAACE,GACrC,GA9GH,+BAgHE,SAAkBA,GAChB,OAAO9T,KAAK4T,KAAK,oBAAqB,CAACE,GACxC,GAlHH,iCAoHE,WACE,OAAO9T,KAAK4T,KAAK,sBAAuB,GACzC,GAtHH,0BAwHE,SAAaG,GACX,OAAO/T,KAAK4T,KAAK,eAAgB,CAACG,GACnC,GA1HH,sBA4HE,SAASpR,EAAQC,EAAQe,GACvB,OAAO3D,KAAK4T,KAAK,WAAY,CAACjR,EAAQC,EAAQe,GAC/C,GA9HH,2BAgIE,SAAchB,EAAQC,EAAQe,GAC5B,OAAO3D,KAAK4T,KAAK,gBAAiB,CAACjR,EAAQC,EAAQe,GACpD,GAlIH,wCAoIE,WACE,OAAO3D,KAAK4T,KAAK,6BAA8B,GAChD,GAtIH,2BAwIE,WACE,OAAO5T,KAAK4T,KAAK,gBAAiB,GACnC,GA1IH,0BA4IE,WACE,OAAO5T,KAAK4T,KAAK,eAAgB,GAClC,GA9IH,2BAgJE,SAAcI,GACZ,OAAOhU,KAAK4T,KAAK,gBAAiB,CAACI,GACpC,GAlJH,2BAoJE,SAAcA,GACZ,OAAOhU,KAAK4T,KAAK,gBAAiB,CAACI,GACpC,GAtJH,0BAwJE,SAAaA,GACX,OAAOhU,KAAK4T,KAAK,eAAgB,CAACI,GACnC,GA1JH,0BA4JE,SAAaA,GACX,OAAOhU,KAAK4T,KAAK,eAAgB,CAACI,GACnC,GA9JH,+BAgKE,WACE,OAAOhU,KAAK4T,KAAK,oBAAqB,GACvC,GAlKH,6BAoKE,WACE,OAAO5T,KAAK4T,KAAK,kBAAmB,GACrC,GAtKH,4BAwKE,WACE,OAAO5T,KAAK4T,KAAK,iBAAkB,GACpC,GA1KH,4BA4KE,SAAeK,GACb,OAAOjU,KAAK4T,KAAK,iBAAkB,CAACK,GACrC,GA9KH,kCAgLE,WACE,OAAOjU,KAAK4T,KAAK,uBAAwB,GAC1C,GAlLH,mCAoLE,SAAsB3F,GACpB,OAAOjO,KAAK4T,KAAK,wBAAyB,CAAC3F,GAC5C,GAtLH,kCAwLE,SAAqBA,GACnB,OAAOjO,KAAK4T,KAAK,uBAAwB,CAAC3F,GAC3C,GA1LH,gCAgME,WACE,OAAOjO,KAAK4T,KAAK,qBAAsB,GACxC,GAlMH,wBAoME,SAAWM,GACT,OAAOlU,KAAK4T,KAAK,aAAc,CAACM,GACjC,GAtMH,6BAwME,WACE,OAAOlU,KAAK4T,KAAK,kBAAmB,GACrC,GA1MH,2BA4ME,SAAcM,EAAaC,GACzB,OAAOnU,KAAK4T,KAAK,gBAAiB,CAACM,EAAaC,GACjD,GA9MH,+BAgNE,SAAkBD,GAChB,OAAOlU,KAAK4T,KAAK,oBAAqB,CAACM,GACxC,GAlNH,qCAoNE,SAAwBA,GACtB,OAAOlU,KAAK4T,KAAK,0BAA2B,CAACM,GAC9C,GAtNH,qEAwNE,WAAqBA,EAAaC,EAAaC,GAA/C,mGACqBpU,KAAK4T,KAAK,iBAAkB,CAACM,EAAaC,GAAc,CACzEzS,KAAM0S,IAFV,OAKE,GAJMnS,EADR,OAKc,MAARA,EAGF,IAFIoS,EAAMpS,EAAKiB,OACXoR,EAAY,KACPjJ,EAAI,EAAGA,EAAIgJ,EAAKhJ,IACvBiJ,EAAYtU,KAAKuU,mBAAmBtS,EAAKoJ,GAAG,IAC1B,OAAdiJ,IACFrS,EAAKoJ,GAAG,GAAKiJ,GAXrB,yBAeSrS,GAfT,gDAxNF,oGA0OE,SAAyBiS,EAAaC,GACpC,OAAOnU,KAAK4T,KAAK,2BAA4B,CAACM,EAAaC,GAC5D,GA5OH,4BA8OE,SAAeD,EAAaC,GAC1B,OAAOnU,KAAK4T,KAAK,iBAAkB,CAACM,EAAaC,GAClD,GAhPH,qEAkPE,WAAqBzI,GAArB,mGACqB1L,KAAK4T,KAAK,iBAAkB,CAAClI,IADlD,OAIE,IAHMzJ,EADR,OAEMoS,EAAMpS,EAAK,GAAGiB,OACdoR,EAAY,KACPjJ,EAAI,EAAGA,EAAIgJ,EAAKhJ,IACvBiJ,EAAYtU,KAAKuU,mBAAmBtS,EAAK,GAAGoJ,IAC1B,OAAdiJ,IACFrS,EAAK,GAAGoJ,GAAKiJ,GAPnB,yBAUSrS,GAVT,gDAlPF,kFA+PE,SAAWiS,EAAaC,EAAaK,GACnC,OAAOxU,KAAK4T,KAAK,aAAc,CAACM,EAAaC,EAAaK,GAC3D,GAjQH,0DAmQE,WAAUN,EAAaC,EAAaK,GAApC,kGAA+C3N,EAA/C,+BAA2D,YACrD5E,EAAO,UAESwS,IAAhBN,EAHN,gCAIiBnU,KAAK4T,KAAK,MAAO,CAACM,IAJnC,OAIIjS,EAJJ,sCAM2BwS,IAAdD,EANb,qBAQM,CAAC,MAAO,YAAa,YAAa,cAAcvK,SAASkK,GAR/D,kCAUmBnU,KAAK4T,KAAK,MAAO,CAACM,GAAc,CAAExS,KAAMyS,IAV3D,QAUMlS,EAVN,qCAYUmR,EAAM,IAAIC,MACdD,EAAInF,KAAO,YACXmF,EAAIX,QAAJ,4BAAmC0B,EAAnC,kEACMf,EAfZ,iDAkBiBpT,KAAK4T,KAAK,MAAO,CAACM,EAAaC,EAAaK,GAAY,CACnE9S,KAAMmF,IAnBZ,QAkBI5E,EAlBJ,sBAsBMqS,EAAYtU,KAAKuU,mBAAmBtS,GACtB,OAAdqS,IACFrS,EAAOqS,GAxBX,kBA0BSrS,GA1BT,iDAnQF,4FAgSE,SAAiBiS,GACf,OAAOlU,KAAK4T,KAAK,mBAAoB,CAACM,GACvC,GAlSH,mCAoSE,SAAsBA,GACpB,OAAOlU,KAAK4T,KAAK,wBAAyB,CAACM,GAC5C,GAtSH,yBAwSE,SAAYA,EAAaQ,GACvB,OAAO1U,KAAK4T,KAAK,cAAe,CAACM,EAAaQ,GAC/C,GA1SH,0BA4SE,SAAaX,GACX,OAAO/T,KAAK4T,KAAK,eAAgB,CAACG,GACnC,GA9SH,2BAgTE,SACEG,EACAC,EACA9F,GAEA,IADA+F,EACA,uDADa,YAEb,OAAOpU,KAAK4T,KAAK,gBAAiB,CAChCM,EACAC,EACA9F,EACA+F,GAEH,GA5TH,4BA8TE,SAAeF,EAAaC,GAC1B,OAAOnU,KAAK4T,KAAK,iBAAkB,CAACM,EAAaC,GAClD,GAhUH,kBAmUE,SAAK5D,EAAQ2D,EAAaQ,EAAcC,EAAY5B,GAClD,IAAIuB,EAAY,KAChB,IAAK,IAAI7Q,KAAOkR,EACV7E,OAAOC,UAAU6E,eAAe3E,KAAK0E,EAAYlR,KACnD6Q,EAAYtU,KAAK6U,mBAAmBF,EAAWlR,IAC7B,OAAd6Q,IACFK,EAAWlR,GAAO6Q,IAIxB,OAAOtU,KAAK4T,KACVrD,EACA,CAAC2D,EAAaQ,EAAcC,GAC5B,CAAC,EACD5B,EAEH,GAnVH,+BAqVE,SAAkBmB,EAAaQ,EAAcC,GAC3C,YAAqBF,IAAjBC,EACK1U,KAAK4T,KAAK,oBAAqBM,GAE/BlU,KAAK8U,KACV,oBACAZ,EACAQ,EACAC,EAGL,GAhWH,iBAkWE,SAAIT,EAAaQ,EAAcC,GAAgC,IAApB5B,EAAoB,uDAAJ,CAAC,EAC1D,YAAqB0B,IAAjBC,EACK1U,KAAK4T,KAAK,MAAOM,EAAa,CAAC,EAAGnB,GAElC/S,KAAK8U,KACV,MACAZ,EACAQ,EACAC,EACA5B,EAGL,GA9WH,gCAgXE,SAAmBmB,EAAaQ,EAAcC,GAC5C,YAAqBF,IAAjBC,EACK1U,KAAK4T,KAAK,qBAAsBM,GAEhClU,KAAK8U,KACV,qBACAZ,EACAQ,EACAC,EAGL,GA3XH,qBA6XE,SAAQT,EAAaQ,EAAcC,GACjC,YAAqBF,IAAjBC,EACK1U,KAAK4T,KAAK,UAAWM,GAErBlU,KAAK8U,KAAK,UAAWZ,EAAaQ,EAAcC,EAE1D,GAnYH,oCAqYE,SAAuBT,EAAaQ,EAAcC,GAChD,YAAqBF,IAAjBC,EACK1U,KAAK4T,KAAK,yBAA0BM,GAEpClU,KAAK8U,KACV,yBACAZ,EACAQ,EACAC,EAGL,GAhZH,oCAkZE,SAAuBT,EAAaQ,EAAcC,GAChD,YAAqBF,IAAjBC,EACK1U,KAAK4T,KAAK,yBAA0BM,GAEpClU,KAAK8U,KACV,yBACAZ,EACAQ,EACAC,EAGL,GA7ZH,2BA+ZE,SAAcT,EAAaQ,EAAcC,GACvC,YAAqBF,IAAjBC,EACK1U,KAAK4T,KAAK,gBAAiBM,GAE3BlU,KAAK8U,KAAK,gBAAiBZ,EAAaQ,EAAcC,EAEhE,GAraH,wCAuaE,SAA2BT,EAAaQ,EAAcC,GACpD,YAAqBF,IAAjBC,EACK1U,KAAK4T,KAAK,6BAA8BM,GAExClU,KAAK8U,KACV,6BACAZ,EACAQ,EACAC,EAGL,GAlbH,+BAobE,SAAkBT,EAAaQ,EAAcC,GAC3C,YAAqBF,IAAjBC,EACK1U,KAAK4T,KAAK,oBAAqBM,GAE/BlU,KAAK8U,KACV,oBACAZ,EACAQ,EACAC,EAGL,GA/bH,iCAicE,WACE,OAAO3U,KAAK4T,KAAK,sBAAuB,GACzC,GAncH,sBAqcE,SAASC,EAAgB5R,GACvB,OAAOjC,KAAK4T,KAAK,WAAY,CAACC,EAAgB5R,GAC/C,GAvcH,0BAycE,SAAa8S,GACX,OAAO/U,KAAK4T,KAAK,eAAgB,CAACmB,GACnC,GA3cH,yBA6cE,SAAYA,EAAM9G,GAChB,OAAOjO,KAAK4T,KAAK,cAAe,CAACmB,EAAM9G,GACxC,GA/cH,yBAidE,SAAY8G,EAAM9G,EAAMhM,GACtB,OAAOjC,KAAK4T,KAAK,cAAe,CAACmB,EAAM9G,EAAMhM,GAC9C,GAndH,2BAqdE,SAAc8S,EAAM9G,GAClB,OAAOjO,KAAK4T,KAAK,gBAAiB,CAACmB,EAAM9G,GAC1C,GAvdH,+BAydE,WACE,OAAOjO,KAAK4T,KAAK,oBAAqB,GACvC,GA3dH,sCA6dE,SAAyBoB,GACvB,OAAOhV,KAAK4T,KAAK,2BAA4B,CAACoB,GAC/C,GA/dH,2BAieE,WACE,OAAOhV,KAAK4T,KAAK,gBAAiB,GACnC,GAneH,8BAqeE,WACE,OAAO5T,KAAK4T,KAAK,mBAAoB,GACtC,GAveH,yBAyeE,SAAY3F,GACV,OAAOjO,KAAK4T,KAAK,cAAe,CAAC3F,GAClC,GA3eH,0BA6eE,SAAagH,GACX,OAAOjV,KAAK4T,KAAK,eAAgBqB,EAClC,GA/eH,0BAifE,SAAahH,EAAMhM,GACjB,OAAOjC,KAAK4T,KAAK,eAAgB,CAAC3F,EAAMhM,GACzC,GAnfH,iEAsfE,WAAiBiT,GAAjB,qFACMjE,OAAOkE,gBADb,uBAGUC,GAAc,IAAIC,aAAcC,OAAOJ,GAHjD,SAMoCK,OAAOC,OAAOC,OAC5C,UACAL,GARN,cAMUM,EANV,OAYUC,EAAkB,IAAIC,WAAWF,GAZ3C,kBAeWG,MAAMC,KAAKH,GACf5K,KAAI,SAACgL,GAAD,OAAOA,EAAE/F,SAAS,IAAIgG,SAAS,EAAG,IAAlC,IACJC,KAAK,KAjBZ,2CAtfF,gE,uBClBA,IAAIC,EAAU,EAAQ,MACnBA,EAAQC,aAAYD,EAAUA,EAAQvU,SACnB,kBAAZuU,IAAsBA,EAAU,CAAC,CAAC1J,EAAOC,GAAIyJ,EAAS,MAC7DA,EAAQE,SAAQ5J,EAAO6J,QAAUH,EAAQE,QAE5C,IAAIE,EAAM,UACGA,EAAI,WAAYJ,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,G,uBCN5E,IAAIA,EAAU,EAAQ,MACnBA,EAAQC,aAAYD,EAAUA,EAAQvU,SACnB,kBAAZuU,IAAsBA,EAAU,CAAC,CAAC1J,EAAOC,GAAIyJ,EAAS,MAC7DA,EAAQE,SAAQ5J,EAAO6J,QAAUH,EAAQE,QAE5C,IAAIE,EAAM,UACGA,EAAI,WAAYJ,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,G,uBCN5E,IAAIA,EAAU,EAAQ,MACnBA,EAAQC,aAAYD,EAAUA,EAAQvU,SACnB,kBAAZuU,IAAsBA,EAAU,CAAC,CAAC1J,EAAOC,GAAIyJ,EAAS,MAC7DA,EAAQE,SAAQ5J,EAAO6J,QAAUH,EAAQE,QAE5C,IAAIE,EAAM,UACGA,EAAI,WAAYJ,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,G,uBCN5E,IAAIA,EAAU,EAAQ,KACnBA,EAAQC,aAAYD,EAAUA,EAAQvU,SACnB,kBAAZuU,IAAsBA,EAAU,CAAC,CAAC1J,EAAOC,GAAIyJ,EAAS,MAC7DA,EAAQE,SAAQ5J,EAAO6J,QAAUH,EAAQE,QAE5C,IAAIE,EAAM,UACGA,EAAI,WAAYJ,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,G","sources":["webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue","webpack://@openc3/tool-cmdsender/src/tools/CommandSender/CommandParameterEditor.vue","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?384a","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?d137","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue?5ae4","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue?321f","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue?5daa","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue?e19f","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue?635c","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue?8eb7","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue?d3cb","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue?a437","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?6015","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue?63fb","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue?ae75","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue?ce29","webpack://@openc3/tool-cmdsender/src/tools/CommandSender/CommandSender.vue","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/utilities.js","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/services/api.js","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/services/axios.js","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/services/openc3-api.js","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?0bde","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue?b526","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue?40f1","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue?37f7"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.states === null)?_c('v-text-field',{attrs:{\"value\":_vm.textfieldValue,\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-value\"},on:{\"change\":_vm.handleChange}}):_c('v-container',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-overflow-btn',{class:_vm.stateClass(),staticStyle:{},attrs:{\"items\":_vm.states,\"item-text\":\"label\",\"item-value\":\"value\",\"label\":\"State\",\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-select\"},on:{\"change\":_vm.handleStateChange},model:{value:(_vm.value.selected_state),callback:function ($$v) {_vm.$set(_vm.value, \"selected_state\", $$v)},expression:\"value.selected_state\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"value\":_vm.stateValue,\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-value\"},on:{\"change\":_vm.handleChange}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n-->\n\n<template>\n <div>\n <v-text-field\n v-if=\"states === null\"\n :value=\"textfieldValue\"\n hide-details\n dense\n @change=\"handleChange\"\n data-test=\"cmd-param-value\"\n />\n <v-container v-else>\n <v-row no-gutters>\n <v-col>\n <v-overflow-btn\n :items=\"states\"\n v-model=\"value.selected_state\"\n @change=\"handleStateChange\"\n item-text=\"label\"\n item-value=\"value\"\n label=\"State\"\n style=\"primary\"\n :class=\"stateClass()\"\n hide-details\n dense\n data-test=\"cmd-param-select\"\n />\n </v-col>\n <v-col>\n <v-text-field\n :value=\"stateValue\"\n @change=\"handleChange\"\n hide-details\n dense\n data-test=\"cmd-param-value\"\n />\n </v-col>\n </v-row>\n </v-container>\n </div>\n</template>\n\n<script>\nimport Utilities from '@/tools/CommandSender/utilities'\n\nexport default {\n mixins: [Utilities],\n model: {\n prop: 'initialValue',\n event: 'input',\n },\n props: {\n statesInHex: {\n type: Boolean,\n default: false,\n },\n initialValue: {\n type: Object,\n default: () => ({\n val: '',\n states: null,\n selected_state: null,\n selected_state_label: '',\n manual_value: null,\n hazardous: false,\n }),\n },\n },\n data() {\n return {\n value: this.initialValue,\n }\n },\n computed: {\n textfieldValue() {\n return this.convertToString(this.value.val)\n },\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.value.val.toString(16)\n } else {\n return this.value.val\n }\n },\n states() {\n // check using != because compare with null\n if (this.value.states != null) {\n var calcStates = []\n for (var key in this.value.states) {\n if (Object.prototype.hasOwnProperty.call(this.value.states, key)) {\n calcStates.push({\n label: key,\n value: this.value.states[key].value,\n // states which are not hazardous don't have this property set so they are undefined\n hazardous: this.value.states[key].hazardous,\n })\n }\n }\n calcStates.push({\n label: 'MANUALLY ENTERED',\n value: 'MANUALLY ENTERED',\n hazardous: undefined, // see above\n })\n\n // TBD pick default better (use actual default instead of just first item in list)\n return calcStates\n } else {\n return null\n }\n },\n },\n methods: {\n stateClass() {\n return this.value.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n handleChange(value) {\n this.value.val = value\n this.value.manual_value = value\n if (this.value.states) {\n var selected_state = 'MANUALLY ENTERED'\n var selected_state_label = 'MANUALLY_ENTERED'\n for (const state of this.states) {\n if (state.value === parseInt(value)) {\n selected_state = parseInt(value)\n selected_state_label = state.label\n if (state.hazardous === undefined) {\n this.value.hazardous = false\n } else {\n this.value.hazardous = true\n }\n break\n // If they have ascii states the value might match the state value\n } else if (state.value === value) {\n selected_state = value\n selected_state_label = state.label\n if (state.hazardous === undefined) {\n this.value.hazardous = false\n } else {\n this.value.hazardous = true\n }\n break\n } else {\n this.value.hazardous = false\n }\n }\n this.value.selected_state = selected_state\n this.value.selected_state_label = selected_state_label\n } else {\n this.value.selected_state = null\n }\n this.$emit('input', this.value)\n },\n\n handleStateChange(value) {\n var selected_state_label = null\n var selected_state = null\n for (var index = 0; index < this.states.length; index++) {\n if (value === this.states[index].value) {\n if (this.states[index].hazardous === undefined) {\n this.value.hazardous = false\n } else {\n this.value.hazardous = true\n }\n selected_state_label = this.states[index].label\n selected_state = value\n break\n }\n }\n this.value.selected_state_label = selected_state_label\n if (selected_state_label === 'MANUALLY ENTERED') {\n this.value.hazardous = false\n this.value.val = this.value.manual_value\n // Stop propagation of the click event so the editor stays active\n // to let the operator enter a manual value.\n // event.originalEvent.stopPropagation()\n } else {\n this.value.val = selected_state\n this.$emit('input', this.value)\n }\n },\n },\n}\n</script>\n<style scoped>\n/* This allows Value or State selection to be wider and show state names */\n.container :deep(.v-select__selections) {\n width: auto;\n}\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n.hazardous :deep(.v-select__selection) {\n color: rgb(255, 220, 0);\n}\n</style>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommandParameterEditor.vue?vue&type=template&id=f74ed796&scoped=true&\"\nimport script from \"./CommandParameterEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./CommandParameterEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommandParameterEditor.vue?vue&type=style&index=0&id=f74ed796&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f74ed796\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('top-bar',{attrs:{\"menus\":_vm.menus,\"title\":_vm.title}}),_c('target-packet-item-chooser',{attrs:{\"initial-target-name\":this.$route.params.target,\"initial-packet-name\":this.$route.params.packet,\"disabled\":_vm.sendDisabled,\"button-text\":\"Send\",\"mode\":\"cmd\"},on:{\"on-set\":function($event){return _vm.commandChanged($event)},\"click\":function($event){return _vm.buildCmd($event)}}}),(_vm.rows.length !== 0)?_c('v-card',[_c('v-card-title',[_vm._v(\" Parameters \"),_c('v-spacer'),_c('v-text-field',{attrs:{\"append-icon\":\"mdi-magnify\",\"label\":\"Search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.rows,\"search\":_vm.search,\"calculate-widths\":\"\",\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"multi-sort\":\"\",\"dense\":\"\"},on:{\"contextmenu:row\":_vm.showContextMenu},scopedSlots:_vm._u([{key:\"item.val_and_states\",fn:function({ item }){return [_c('command-parameter-editor',{attrs:{\"states-in-hex\":_vm.statesInHex},model:{value:(item.val_and_states),callback:function ($$v) {_vm.$set(item, \"val_and_states\", $$v)},expression:\"item.val_and_states\"}})]}}],null,false,1123654540)})],1):_vm._e(),_c('div',{staticClass:\"ma-3\"},[_vm._v(\"Status: \"+_vm._s(_vm.status))]),_c('div',{staticClass:\"mt-3\"},[_vm._v(\" Command History: (Pressing Enter on the line re-executes the command) \")]),_c('v-textarea',{ref:\"history\",attrs:{\"value\":_vm.history,\"solo\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"data-test\":\"sender-history\",\"background-color\":_vm.getBackgroundColor()},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.historyEnter($event)}}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.targetName,\"packet-name\":_vm.commandName,\"item-name\":_vm.parameterName,\"type\":'cmd'},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}}),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displayErrorDialog),callback:function ($$v) {_vm.displayErrorDialog=$$v},expression:\"displayErrorDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Error \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('v-card-text',[_c('span',{domProps:{\"textContent\":_vm._s(_vm.status)}})])],1),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"data-test\":\"error-dialog-ok\"},on:{\"click\":function($event){_vm.displayErrorDialog = false}}},[_vm._v(\" Ok \")])],1)],1)])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displaySendHazardous),callback:function ($$v) {_vm.displaySendHazardous=$$v},expression:\"displaySendHazardous\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Hazardous Warning \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('span',[_vm._v(\" Warning: Command \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.commandName)+\" is Hazardous. Send? \")])]),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"outlined\":\"\",\"data-test\":\"send-hazardous-no\"},on:{\"click\":_vm.cancelHazardousCmd}},[_vm._v(\" No \")]),_c('v-btn',{staticClass:\"primary mx-1\",attrs:{\"data-test\":\"send-hazardous-yes\"},on:{\"click\":_vm.sendHazardousCmd}},[_vm._v(\" Yes \")])],1)],1)])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displaySendRaw),callback:function ($$v) {_vm.displaySendRaw=$$v},expression:\"displaySendRaw\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Send Raw \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('v-col',[_vm._v(\"Interface:\")]),_c('v-col',[_c('v-select',{attrs:{\"solo\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.interfaces,\"item-text\":\"label\",\"item-value\":\"value\"},model:{value:(_vm.selectedInterface),callback:function ($$v) {_vm.selectedInterface=$$v},expression:\"selectedInterface\"}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_vm._v(\"Filename:\")]),_c('v-col',[_c('input',{attrs:{\"type\":\"file\"},on:{\"change\":function($event){return _vm.selectRawCmdFile($event)}}})])],1),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"outlined\":\"\",\"data-test\":\"raw-cancel\"},on:{\"click\":_vm.cancelRawCmd}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"primary\",attrs:{\"data-test\":\"raw-ok\"},on:{\"click\":_vm.sendRawCmd}},[_vm._v(\" Ok \")])],1)],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandSender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandSender.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommandSender.vue?vue&type=template&id=278a12ec&\"\nimport script from \"./CommandSender.vue?vue&type=script&lang=js&\"\nexport * from \"./CommandSender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Details \")]),_c('v-spacer')],1),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.packetName)+\" \"+_vm._s(_vm.itemName)+\" \")]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.details.description))]),_c('v-card-text',[_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.type === 'tlm')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Item Values\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Raw Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.rawValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Converted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.convertedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Formatted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.formattedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"With Units Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.unitsValue))])],1)],1)],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Offset\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_offset))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_size))])],1),(_vm.details.array_size)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Array Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.array_size))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Data Type\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.data_type))])],1),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Minimum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.minimum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Maximum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.maximum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Default\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.default))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Format String\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.format_string))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Read Conversion\")]),(_vm.details.read_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.read_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.read_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Write Conversion\")]),(_vm.details.write_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.write_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.write_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Id Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.id_value))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Full\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units_full))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Abbr\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Endianness\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.endianness))])],1),(_vm.details.states)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.states),function(state,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(state.value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.limits)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.limits),function(limit,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_vm._v(\" \"+_vm._s(_vm.formatLimit(limit))+\" \"),_c('v-col')],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.meta)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.meta),function(value,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col',[_vm._v(\"None\")])],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailsDialog.vue?vue&type=template&id=2d350830&scoped=true&\"\nimport script from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsDialog.vue?vue&type=style&index=0&id=2d350830&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d350830\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{staticClass:\"c-chooser px-0\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-target\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Target\",\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.targetNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.targetNameChanged},model:{value:(_vm.selectedTargetName),callback:function ($$v) {_vm.selectedTargetName=$$v},expression:\"selectedTargetName\"}})],1),_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-packet\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Packet\",\"hide-details\":\"\",\"dense\":\"\",\"disabled\":_vm.packetsDisabled || _vm.buttonDisabled,\"items\":_vm.packetNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.packetNameChanged},model:{value:(_vm.selectedPacketName),callback:function ($$v) {_vm.selectedPacketName=$$v},expression:\"selectedPacketName\"}})],1),(_vm.chooseItem && !_vm.buttonDisabled)?_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-item\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Item\",\"hide-details\":\"\",\"dense\":\"\",\"disabled\":_vm.itemsDisabled || _vm.buttonDisabled,\"items\":_vm.itemNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":function($event){return _vm.itemNameChanged($event)}},model:{value:(_vm.selectedItemName),callback:function ($$v) {_vm.selectedItemName=$$v},expression:\"selectedItemName\"}})],1):_vm._e(),(_vm.buttonText)?_c('v-col',{attrs:{\"cols\":_vm.colSize}},[_c('v-btn',{attrs:{\"disabled\":_vm.buttonDisabled,\"block\":\"\",\"color\":\"primary\",\"data-test\":\"select-send\"},on:{\"click\":_vm.buttonPressed}},[_vm._v(\" \"+_vm._s(_vm.actualButtonText)+\" \")])],1):_vm._e()],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[(_vm.hazardous)?_c('v-col',{staticClass:\"openc3-yellow\",attrs:{\"cols\":_vm.colSize}},[_c('astro-badge',{attrs:{\"status\":\"caution\",\"inline\":\"\"}},[_vm._v(\" Description: \"+_vm._s(_vm.description)+\" (HAZARDOUS) \")])],1):_c('v-col',{attrs:{\"cols\":_vm.colSize}},[_vm._v(\" Description: \"+_vm._s(_vm.description)+\" \")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TargetPacketItemChooser.vue?vue&type=template&id=396dabb5&\"\nimport script from \"./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"\nexport * from \"./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TargetPacketItemChooser.vue?vue&type=style&index=0&id=396dabb5&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('mounting-portal',{attrs:{\"mount-to\":\"#openc3-menu\",\"append\":\"\"}},[_c('div',{staticClass:\"v-toolbar__content\"},[_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label}`)}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider'):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label} ${option.label}`)},on:{\"click\":option.command}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label},model:{value:(_vm.checked),callback:function ($$v) {_vm.checked=$$v},expression:\"checked\"}})],1):_vm._e(),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled}},[_vm._v(_vm._s(option.icon))])],1):_vm._e(),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : ''))},[_vm._v(_vm._s(option.label))]):_vm._e()],1)]})],2)],1)],1)}),_c('v-spacer'),_c('v-toolbar-title',[_vm._v(_vm._s(_vm.title))]),_c('v-spacer')],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=5fb8d7fb&scoped=true&\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js&\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=5fb8d7fb&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5fb8d7fb\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".container[data-v-f74ed796] .v-select__selections{width:auto}.v-overflow-btn[data-v-f74ed796]{margin-top:0}.container[data-v-f74ed796]{padding:0}.hazardous[data-v-f74ed796] .v-select__selection{color:#ffdc00}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-2d350830]{font-weight:700;text-transform:capitalize}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-badge__badge{height:auto;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-list[data-v-5fb8d7fb] .v-label{margin-left:5px}.v-list-item__icon[data-v-5fb8d7fb]{margin-right:15px!important}.v-list-item__title[data-v-5fb8d7fb]{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n-->\n\n<template>\n <div>\n <top-bar :menus=\"menus\" :title=\"title\" />\n\n <target-packet-item-chooser\n :initial-target-name=\"this.$route.params.target\"\n :initial-packet-name=\"this.$route.params.packet\"\n @on-set=\"commandChanged($event)\"\n @click=\"buildCmd($event)\"\n :disabled=\"sendDisabled\"\n button-text=\"Send\"\n mode=\"cmd\"\n />\n\n <v-card v-if=\"rows.length !== 0\">\n <v-card-title>\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n append-icon=\"mdi-magnify\"\n label=\"Search\"\n single-line\n hide-details\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"rows\"\n :search=\"search\"\n calculate-widths\n disable-pagination\n hide-default-footer\n multi-sort\n dense\n @contextmenu:row=\"showContextMenu\"\n >\n <template v-slot:item.val_and_states=\"{ item }\">\n <command-parameter-editor\n v-model=\"item.val_and_states\"\n :states-in-hex=\"statesInHex\"\n />\n </template>\n </v-data-table>\n </v-card>\n <div class=\"ma-3\">Status: {{ status }}</div>\n <div class=\"mt-3\">\n Command History: (Pressing Enter on the line re-executes the command)\n </div>\n <v-textarea\n ref=\"history\"\n :value=\"history\"\n solo\n dense\n hide-details\n data-test=\"sender-history\"\n @keydown.enter=\"historyEnter($event)\"\n :background-color=\"getBackgroundColor()\"\n />\n\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n <details-dialog\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n v-model=\"viewDetails\"\n />\n\n <v-dialog v-model=\"displayErrorDialog\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Error </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <v-card-text>\n <span v-text=\"status\" />\n </v-card-text>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"displayErrorDialog = false\"\n color=\"primary\"\n data-test=\"error-dialog-ok\"\n >\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"displaySendHazardous\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Hazardous Warning </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <span>\n Warning: Command {{ targetName }} {{ commandName }} is\n Hazardous. Send?\n </span>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"cancelHazardousCmd\"\n outlined\n data-test=\"send-hazardous-no\"\n >\n No\n </v-btn>\n <v-btn\n @click=\"sendHazardousCmd\"\n class=\"primary mx-1\"\n data-test=\"send-hazardous-yes\"\n >\n Yes\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"displaySendRaw\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Send Raw </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <v-col>Interface:</v-col>\n <v-col>\n <v-select\n solo\n hide-details\n dense\n :items=\"interfaces\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedInterface\"\n />\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col>Filename:</v-col>\n <v-col>\n <input type=\"file\" @change=\"selectRawCmdFile($event)\" />\n </v-col>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn @click=\"cancelRawCmd\" outlined data-test=\"raw-cancel\">\n Cancel\n </v-btn>\n <v-btn @click=\"sendRawCmd\" class=\"primary\" data-test=\"raw-ok\">\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport Api from '@openc3/tool-common/src/services/api'\nimport TargetPacketItemChooser from '@openc3/tool-common/src/components/TargetPacketItemChooser'\nimport CommandParameterEditor from '@/tools/CommandSender/CommandParameterEditor'\nimport Utilities from '@/tools/CommandSender/utilities'\nimport { OpenC3Api } from '@openc3/tool-common/src/services/openc3-api'\nimport DetailsDialog from '@openc3/tool-common/src/components/DetailsDialog'\nimport TopBar from '@openc3/tool-common/src/components/TopBar'\nimport 'sprintf-js'\n\nexport default {\n mixins: [Utilities],\n components: {\n DetailsDialog,\n TargetPacketItemChooser,\n CommandParameterEditor,\n TopBar,\n },\n data() {\n return {\n title: 'Command Sender',\n search: '',\n headers: [\n { text: 'Name', value: 'parameter_name' },\n { text: 'Value or State', value: 'val_and_states' },\n { text: 'Units', value: 'units' },\n { text: 'Description', value: 'description' },\n ],\n targetName: '',\n commandName: '',\n ignoreRangeChecks: false,\n statesInHex: false,\n showIgnoredParams: false,\n cmdRaw: false,\n ignoredParams: [],\n rows: [],\n interfaces: [],\n selectedInterface: '',\n rawCmdFile: null,\n status: '',\n history: '',\n displaySendHazardous: false,\n displayErrorDialog: false,\n displaySendRaw: false,\n sendDisabled: false,\n api: null,\n viewDetails: false,\n contextMenuShown: false,\n parameterName: '',\n reservedItemNames: [],\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n menus: [\n // TODO: Implement send raw\n // {\n // label: 'File',\n // items: [\n // {\n // label: 'Send Raw',\n // command: () => {\n // this.setupRawCmd()\n // }\n // }\n // ]\n // },\n {\n label: 'Mode',\n items: [\n {\n label: 'Ignore Range Checks',\n checkbox: true,\n command: () => {\n this.ignoreRangeChecks = !this.ignoreRangeChecks\n },\n },\n {\n label: 'Display State Values in Hex',\n checkbox: true,\n command: () => {\n this.statesInHex = !this.statesInHex\n },\n },\n {\n label: 'Show Ignored Parameters',\n checkbox: true,\n command: () => {\n this.showIgnoredParams = !this.showIgnoredParams\n // TODO: Maybe we don't need to do this if the data-table\n // can render the whole thing and we just display with v-if\n this.updateCmdParams()\n },\n },\n {\n label: 'Disable Parameter Conversions',\n checkbox: true,\n command: () => {\n this.cmdRaw = !this.cmdRaw\n },\n },\n ],\n },\n ],\n }\n },\n created() {\n Api.get(`/openc3-api/autocomplete/reserved-item-names`).then((response) => {\n this.reservedItemNames = response.data\n })\n this.api = new OpenC3Api()\n // If we're passed in the route then manually call commandChanged to update\n if (this.$route.params.target && this.$route.params.packet) {\n this.commandChanged({\n targetName: this.$route.params.target.toUpperCase(),\n packetName: this.$route.params.packet.toUpperCase(),\n })\n }\n },\n methods: {\n getBackgroundColor() {\n return this.$vuetify.theme.parsedTheme.tertiary.darken2\n },\n historyEnter(event) {\n // Prevent the enter key from actually causing a newline\n event.preventDefault()\n const textarea = this.$refs.history.$refs.input\n let pos = textarea.selectionStart\n // Find the newline after the cursor position\n let nextNewline = textarea.value.indexOf('\\n', pos)\n // Get everything up to the next newline and split on newlines\n const lines = textarea.value.substr(0, nextNewline).split('\\n')\n let command = lines[lines.length - 1]\n // Blank commands can happen if typing return on a blank line\n if (command === '') {\n return\n }\n\n // Remove the cmd(\"\") wrapper\n let firstQuote = command.indexOf('\"')\n let lastQuote = command.lastIndexOf('\"')\n command = command.substr(firstQuote + 1, lastQuote - firstQuote - 1)\n this.sendCmd(command)\n },\n\n showContextMenu(e, row) {\n e.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n\n convertToValue(param) {\n if (\n param.val_and_states.selected_state !== null &&\n param.val_and_states.selected_state !== 'MANUALLY ENTERED'\n ) {\n return param.val_and_states.selected_state_label\n }\n if (typeof param.val_and_states.val !== 'string') {\n return param.val_and_states.val\n }\n\n var str = param.val_and_states.val\n var quotesRemoved = this.removeQuotes(str)\n if (str === quotesRemoved) {\n var upcaseStr = str.toUpperCase()\n if (\n (param.type === 'STRING' || param.type === 'BLOCK') &&\n upcaseStr.startsWith('0X')\n ) {\n var hexStr = upcaseStr.slice(2)\n if (hexStr.length % 2 !== 0) {\n hexStr = '0' + hexStr\n }\n var jstr = { json_class: 'String', raw: [] }\n for (var i = 0; i < hexStr.length; i += 2) {\n var nibble = hexStr.charAt(i) + hexStr.charAt(i + 1)\n jstr.raw.push(parseInt(nibble, 16))\n }\n return jstr\n } else {\n if (upcaseStr === 'INFINITY') {\n return Infinity\n } else if (upcaseStr === '-INFINITY') {\n return -Infinity\n } else if (upcaseStr === 'NAN') {\n return NaN\n } else if (this.isFloat(str)) {\n return parseFloat(str)\n } else if (this.isInt(str)) {\n return parseInt(str)\n } else if (this.isArray(str)) {\n return eval(str)\n } else {\n return str\n }\n }\n } else {\n return quotesRemoved\n }\n },\n\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n // Only updateCmdParams if we're not already in the middle of an update\n if (this.sendDisabled === false) {\n this.updateCmdParams()\n }\n this.$router\n .replace({\n name: 'CommandSender',\n params: {\n target: this.targetName,\n packet: this.commandName,\n },\n })\n // catch the error in case we route to where we already are\n .catch((err) => {})\n }\n },\n\n updateCmdParams() {\n this.sendDisabled = true\n this.ignoredParams = []\n this.rows = []\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_command(this.targetName, this.commandName)\n },\n (error) => {\n this.displayError('getting ignored parameters', error)\n }\n )\n .then(\n (command) => {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams\n ) {\n let val = parameter.default\n // If the parameter is a string and the default is a string\n // (rather than object for binary) then we quote the string\n if (\n parameter.data_type === 'STRING' &&\n typeof parameter.default === 'string'\n ) {\n val = `'${val}'`\n }\n if (parameter.required) {\n val = ''\n }\n if (parameter.format_string) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n this.rows.push({\n parameter_name: parameter.name,\n val_and_states: {\n val: val,\n states: parameter.states,\n selected_state: null,\n selected_state_label: '',\n manual_value: null,\n },\n description: parameter.description,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.sendDisabled = false\n this.status = ''\n },\n (error) => {\n this.displayError('getting command parameters', error)\n }\n )\n },\n\n createParamList() {\n let paramList = {}\n for (var i = 0; i < this.rows.length; i++) {\n paramList[this.rows[i].parameter_name] = this.convertToValue(\n this.rows[i]\n )\n }\n return paramList\n },\n\n buildCmd() {\n this.sendCmd(this.targetName, this.commandName, this.createParamList())\n },\n\n // Note targetName can also be the entire command to send, e.g. \"INST ABORT\" or\n // \"INST COLLECT with TYPE 0, DURATION 1, OPCODE 171, TEMP 10\" when being\n // sent from the history. In that case commandName and paramList are undefined\n // and the api calls handle that.\n sendCmd(targetName, commandName, paramList) {\n this.sendDisabled = true\n let hazardous = false\n let cmd = ''\n this.api.get_cmd_hazardous(targetName, commandName, paramList).then(\n (response) => {\n hazardous = response\n\n if (hazardous) {\n this.displaySendHazardous = true\n } else {\n let obs\n if (this.cmdRaw) {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_raw_no_range_check'\n obs = this.api.cmd_raw_no_range_check(\n targetName,\n commandName,\n paramList\n )\n } else {\n cmd = 'cmd_raw'\n obs = this.api.cmd_raw(targetName, commandName, paramList, {\n // This request could be denied due to out of range but since\n // we're explicitly handling it we don't want the interceptor to fire\n 'Ignore-Errors': '500',\n })\n }\n } else {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_range_check'\n obs = this.api.cmd_no_range_check(\n targetName,\n commandName,\n paramList\n )\n } else {\n cmd = 'cmd'\n obs = this.api.cmd(targetName, commandName, paramList, {\n // This request could be denied due to out of range but since\n // we're explicitly handling it we don't want the interceptor to fire\n 'Ignore-Errors': '500',\n })\n }\n }\n\n obs.then(\n (response) => {\n this.processCmdResponse(cmd, response)\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n }\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n },\n\n sendHazardousCmd() {\n this.displaySendHazardous = false\n const paramList = this.createParamList()\n let obs = ''\n let cmd = ''\n if (this.cmdRaw) {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_raw_no_checks'\n obs = this.api.cmd_raw_no_checks(\n this.targetName,\n this.commandName,\n paramList\n )\n } else {\n cmd = 'cmd_raw_no_hazardous_check'\n obs = this.api.cmd_raw_no_hazardous_check(\n this.targetName,\n this.commandName,\n paramList,\n {\n // This request could be denied due to out of range but since\n // we're explicitly handling it we don't want the interceptor to fire\n 'Ignore-Errors': '500',\n }\n )\n }\n } else {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_checks'\n obs = this.api.cmd_no_checks(\n this.targetName,\n this.commandName,\n paramList\n )\n } else {\n cmd = 'cmd_no_hazardous_check'\n obs = this.api.cmd_no_hazardous_check(\n this.targetName,\n this.commandName,\n paramList,\n {\n // This request could be denied due to out of range but since\n // we're explicitly handling it we don't want the interceptor to fire\n 'Ignore-Errors': '500',\n }\n )\n }\n }\n\n obs.then(\n (response) => {\n this.processCmdResponse(cmd, response)\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n },\n\n cancelHazardousCmd() {\n this.displaySendHazardous = false\n this.status = 'Hazardous command not sent'\n this.sendDisabled = false\n },\n\n processCmdResponse(cmd_sent, response) {\n var msg = ''\n if (cmd_sent) {\n msg = `${cmd_sent}(\"${response[0]} ${response[1]}`\n var keys = Object.keys(response[2])\n if (keys.length > 0) {\n msg += ' with '\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var value = this.convertToString(response[2][key])\n // If the response has unquoted string data we add quotes\n if (\n typeof response[2][key] === 'string' &&\n value.charAt(0) !== \"'\" &&\n value.charAt(0) !== '\"'\n ) {\n value = `'${value}'`\n }\n msg += key + ' ' + value\n if (i < keys.length - 1) {\n msg += ', '\n }\n }\n }\n msg += '\")'\n if (!this.history.includes(msg)) {\n this.history += msg + '\\n'\n }\n msg += ' sent.'\n // Add the number of commands sent to the status message\n if (this.status.includes(msg)) {\n let parts = this.status.split('sent.')\n if (parts[1].includes('(')) {\n let num = parseInt(parts[1].substr(2, parts[1].indexOf(')') - 2))\n msg = parts[0] + 'sent. (' + (num + 1) + ')'\n } else {\n msg += ' (2)'\n }\n }\n this.status = msg\n } else {\n var context = 'sending ' + this.targetName + ' ' + this.commandName\n this.displayError(context, response, true)\n }\n this.sendDisabled = false\n },\n\n displayError(context, error, showDialog = false) {\n this.status = `Error ${context} due to ${error.name}`\n if (error.message && error.message !== '') {\n this.status += ': '\n this.status += error.message\n }\n if (showDialog) {\n this.displayErrorDialog = true\n }\n },\n\n // setupRawCmd() {\n // this.api.get_interface_names().then(\n // (response) => {\n // var interfaces = []\n // for (var i = 0; i < response.length; i++) {\n // interfaces.push({ label: response[i], value: response[i] })\n // }\n // this.interfaces = interfaces\n // this.selectedInterface = interfaces[0].value\n // this.displaySendRaw = true\n // },\n // (error) => {\n // this.displaySendRaw = false\n // this.displayError('getting interface names', error, true)\n // }\n // )\n // },\n\n // selectRawCmdFile(event) {\n // this.rawCmdFile = event.target.files[0]\n // },\n\n // onLoad(event) {\n // var bufView = new Uint8Array(event.target.result)\n // var jstr = { json_class: 'String', raw: [] }\n // for (var i = 0; i < bufView.length; i++) {\n // jstr.raw.push(bufView[i])\n // }\n\n // this.api.send_raw(this.selectedInterface, jstr).then(\n // () => {\n // this.displaySendRaw = false\n // this.status =\n // 'Sent ' +\n // bufView.length +\n // ' bytes to interface ' +\n // this.selectedInterface\n // },\n // (error) => {\n // this.displaySendRaw = false\n // this.displayError('sending raw data', error, true)\n // }\n // )\n // },\n\n // sendRawCmd() {\n // var self = this\n // var reader = new FileReader()\n // reader.onload = function (e) {\n // self.onLoad(e)\n // }\n // reader.onerror = function (e) {\n // self.displaySendRaw = false\n // var target = e.target\n // self.displayError('sending raw data', target.error, true)\n // }\n // // TBD - use the other event handlers to implement a progress bar for the\n // // file upload. Handle abort as well?\n // //reader.onloadstart = function(e) {}\n // //reader.onprogress = function(e) {}\n // //reader.onloadend = function(e) {}\n // //reader.onabort = function(e) {}\n\n // reader.readAsArrayBuffer(this.rawCmdFile)\n // },\n\n // cancelRawCmd() {\n // this.displaySendRaw = false\n // this.status = 'Raw command not sent'\n // },\n },\n}\n</script>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nexport default {\n methods: {\n isFloat(str) {\n // Regex to identify a string as a floating point number\n if (/^\\s*[-+]?\\d*\\.\\d+\\s*$/.test(str)) {\n return true\n }\n // Regex to identify a string as a floating point number in scientific notation.\n if (/^\\s*[-+]?(\\d+((\\.\\d+)?)|(\\.\\d+))[eE][-+]?\\d+\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n isInt(str) {\n // Regular expression to identify a String as an integer\n if (/^\\s*[-+]?\\d+\\s*$/.test(str)) {\n return true\n }\n\n // # Regular expression to identify a String as an integer in hexadecimal format\n if (/^\\s*0[xX][\\dabcdefABCDEF]+\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n isArray(str) {\n // Regular expression to identify a String as an Array\n if (/^\\s*\\[.*\\]\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n removeQuotes(str) {\n // Return the string with leading and trailing quotes removed\n if (str.length < 2) {\n return str\n }\n var firstChar = str.charAt(0)\n if (firstChar !== '\"' && firstChar !== \"'\") {\n return str\n }\n var lastChar = str.charAt(str.length - 1)\n if (firstChar !== lastChar) {\n return str\n }\n return str.slice(1, -1)\n },\n\n convertToString(value) {\n var i = 0\n var returnValue = ''\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n var arrayLength = value.length\n returnValue = '[ '\n for (i = 0; i < arrayLength; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n returnValue += '\"' + value[i] + '\"'\n } else {\n returnValue += value[i]\n }\n if (i !== arrayLength - 1) {\n returnValue += ', '\n }\n }\n returnValue += ' ]'\n } else if (\n Object.prototype.toString.call(value).slice(8, -1) === 'Object'\n ) {\n if (value.json_class === 'String' && value.raw) {\n // This is binary data, display in hex.\n returnValue = '0x'\n for (i = 0; i < value.raw.length; i++) {\n var nibble = value.raw[i].toString(16).toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n returnValue += nibble\n }\n } else if (value.json_class === 'Float' && value.raw) {\n returnValue = value.raw\n }\n } else {\n returnValue = String(value)\n }\n return returnValue\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity)\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true)\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // 'Ignore-Errors': '500',\n // })\n if (\n error.response.headers['ignore-errors'] &&\n error.response.headers['ignore-errors'].includes(\n error.response.status.toString()\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n throw error\n } else {\n throw error\n }\n }\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport axios from './axios.js'\n\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n // This is hacky Json-rpc for now. Should probably use a jsonrpc library.\n async exec(method, params, kwparams = {}, headerOptions = {}) {\n try {\n await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity)\n } catch (error) {\n OpenC3Auth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = window.openc3Scope\n const response = await axios.post(\n '/openc3-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.openc3Token,\n 'Content-Type': 'application/json-rpc',\n ...headerOptions,\n },\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n // console.log(error)\n throw err\n }\n }\n\n decode_openc3_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_openc3_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n connect_interface(interface_name) {\n return this.exec('connect_interface', [interface_name])\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_tlm_cnts(target_commands) {\n return this.exec('get_tlm_cnts', [target_commands])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_oldest_logfile() {\n return this.exec('get_oldest_logfile', [])\n }\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n async get_tlm_packet(target_name, packet_name, value_type) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n async get_tlm_values(items) {\n const data = await this.exec('get_tlm_values', [items])\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n async tlm(target_name, packet_name, item_name, data_type = 'CONVERTED') {\n let data = null\n // Check for the single string syntax: tlm(\"TGT PKT ITEM\")\n if (packet_name === undefined) {\n data = await this.exec('tlm', [target_name])\n // Check for the single string syntax with type: tlm(\"TGT PKT ITEM\", \"RAW\")\n } else if (item_name === undefined) {\n if (\n ['RAW', 'CONVERTED', 'FORMATTED', 'WITH_UNITS'].includes(packet_name)\n ) {\n data = await this.exec('tlm', [target_name], { type: packet_name })\n } else {\n var err = new Error()\n err.name = 'TypeError'\n err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`\n throw err\n }\n } else {\n data = await this.exec('tlm', [target_name, packet_name, item_name], {\n type: data_type,\n })\n }\n var converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_cnts(target_commands) {\n return this.exec('get_cmd_cnts', [target_commands])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list, headerOptions) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_openc3_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(\n method,\n [target_name, command_name, param_list],\n {},\n headerOptions\n )\n }\n\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd',\n target_name,\n command_name,\n param_list,\n headerOptions\n )\n }\n }\n\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n\n // TODO: Currently unused but seemed like a useful function\n async hashString(string) {\n if (window.isSecureContext) {\n // Encode the string as an arrayBuffer which the subtle crypto API uses\n const arrayBuffer = new TextEncoder().encode(string)\n // Use the subtle crypto API to perform a SHA256 Sum of the array buffer\n // The resulting hash is stored in an array buffer\n const hashAsArrayBuffer = await crypto.subtle.digest(\n 'SHA-256',\n arrayBuffer\n )\n // To create a string we will get the hexadecimal value of each byte of the array buffer\n // This gets us an array where each byte of the array buffer becomes one item in the array\n const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)\n // We then convert it to a regular array so we can convert each item to hexadecimal strings\n // Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).\n return Array.from(uint8ViewOfHash)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n // else ?\n }\n}\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=style&index=0&id=f74ed796&prod&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"48c87bfc\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=style&index=0&id=2d350830&prod&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7965124a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=style&index=0&id=396dabb5&prod&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6c0e906e\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=5fb8d7fb&prod&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7bc1978b\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["render","_vm","this","_c","_self","states","attrs","textfieldValue","on","handleChange","class","stateClass","staticStyle","handleStateChange","model","value","selected_state","callback","$$v","$set","expression","stateValue","staticRenderFns","mixins","prop","event","props","statesInHex","type","default","initialValue","val","selected_state_label","manual_value","hazardous","data","computed","calcStates","label","methods","component","menus","title","$route","params","target","packet","sendDisabled","$event","commandChanged","buildCmd","rows","length","_v","search","headers","showContextMenu","scopedSlots","_u","key","fn","item","val_and_states","_e","staticClass","_s","status","ref","history","getBackgroundColor","indexOf","_k","keyCode","historyEnter","x","y","contextMenuShown","_l","contextMenuOptions","index","stopPropagation","action","apply","arguments","targetName","commandName","parameterName","viewDetails","displayErrorDialog","domProps","displaySendHazardous","cancelHazardousCmd","sendHazardousCmd","displaySendRaw","interfaces","selectedInterface","selectRawCmdFile","cancelRawCmd","sendRawCmd","show","packetName","itemName","details","description","rawValue","convertedValue","formattedValue","unitsValue","bit_offset","bit_size","array_size","data_type","minimum","maximum","format_string","read_conversion","write_conversion","id_value","units_full","units","endianness","state","limits","limit","formatLimit","meta","validator","updater","get","set","created","beforeDestroy","clearInterval","watch","get_tlm_values","then","requestDetails","get_item","get_parameter","colSize","targetNames","targetNameChanged","selectedTargetName","packetsDisabled","buttonDisabled","packetNames","packetNameChanged","selectedPacketName","chooseItem","itemsDisabled","itemNames","itemNameChanged","selectedItemName","buttonText","buttonPressed","actualButtonText","allowAll","disabled","initialTargetName","initialPacketName","initialItemName","mode","reduced","includes","propValue","unknown","vertical","internalDisabled","api","ALL","UNKNOWN","targetChooserStyle","width","float","packetChooserStyle","updatePackets","updateItems","map","reduce","makeReducedItems","allTargetPacketItems","allPacketItems","menu","i","_g","_b","formatDT","radioGroup","items","option","j","divider","command","radio","checkbox","checked","icon","style","mounted","document","___CSS_LOADER_EXPORT___","push","module","id","components","DetailsDialog","TargetPacketItemChooser","CommandParameterEditor","TopBar","text","ignoreRangeChecks","showIgnoredParams","cmdRaw","ignoredParams","rawCmdFile","reservedItemNames","Api","e","row","convertToValue","param","upcaseStr","hexStr","json_class","raw","jstr","replace","name","catch","updateCmdParams","get_target","parameter_name","createParamList","paramList","sendCmd","cmd","obs","processCmdResponse","cmd_sent","response","msg","displayError","context","error","isFloat","str","test","isInt","isArray","removeQuotes","firstChar","charAt","lastChar","slice","convertToString","returnValue","Object","prototype","toString","call","arrayLength","nibble","toUpperCase","String","request","method","url","noAuth","noScope","OpenC3Auth","updateToken","defaultMinValidity","login","localStorage","openc3Token","window","openc3Scope","axios","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","path","put","post","delete","vueInstance","Vue","axiosInstance","baseURL","location","origin","timeout","interceptors","use","Promise","reject","body","statusText","config","message","exception","$notify","serious","OpenC3Api","kwparams","headerOptions","jsonrpc","keyword_params","Authorization","result","err","Error","NaN","Infinity","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","exec","interface_name","router_name","target_commands","log_writer_name","limits_set","target_name","packet_name","value_type","len","converted","decode_openc3_type","item_name","undefined","command_name","param_list","hasOwnProperty","encode_openc3_type","_cmd","tool","ignored","array","string","isSecureContext","arrayBuffer","TextEncoder","encode","crypto","subtle","digest","hashAsArrayBuffer","uint8ViewOfHash","Uint8Array","Array","from","b","padStart","join","content","__esModule","locals","exports","add"],"sourceRoot":""}
1
+ {"version":3,"file":"js/780.js","mappings":"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","sources":["webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue","webpack://@openc3/tool-cmdsender/src/tools/CommandSender/CommandParameterEditor.vue","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?384a","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?d137","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue?5ae4","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandSender.vue?321f","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue?5daa","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue?e19f","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue?635c","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue?8eb7","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue?d3cb","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue?a437","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?6015","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue?63fb","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue?ae75","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue?ce29","webpack://@openc3/tool-cmdsender/src/tools/CommandSender/CommandSender.vue","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/utilities.js","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/services/api.js","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/services/axios.js","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/services/openc3-api.js","webpack://@openc3/tool-cmdsender/./src/tools/CommandSender/CommandParameterEditor.vue?0bde","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/DetailsDialog.vue?b526","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TargetPacketItemChooser.vue?40f1","webpack://@openc3/tool-cmdsender/../openc3-tool-common/src/components/TopBar.vue?37f7"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.states === null)?_c('v-text-field',{attrs:{\"value\":_vm.textfieldValue,\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-value\"},on:{\"change\":_vm.handleChange}}):_c('v-container',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-overflow-btn',{class:_vm.stateClass(),staticStyle:{},attrs:{\"items\":_vm.states,\"item-text\":\"label\",\"item-value\":\"value\",\"label\":\"State\",\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-select\"},on:{\"change\":_vm.handleStateChange},model:{value:(_vm.value.selected_state),callback:function ($$v) {_vm.$set(_vm.value, \"selected_state\", $$v)},expression:\"value.selected_state\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"value\":_vm.stateValue,\"hide-details\":\"\",\"dense\":\"\",\"data-test\":\"cmd-param-value\"},on:{\"change\":_vm.handleChange}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n-->\n\n<template>\n <div>\n <v-text-field\n v-if=\"states === null\"\n :value=\"textfieldValue\"\n hide-details\n dense\n @change=\"handleChange\"\n data-test=\"cmd-param-value\"\n />\n <v-container v-else>\n <v-row no-gutters>\n <v-col>\n <v-overflow-btn\n :items=\"states\"\n v-model=\"value.selected_state\"\n @change=\"handleStateChange\"\n item-text=\"label\"\n item-value=\"value\"\n label=\"State\"\n style=\"primary\"\n :class=\"stateClass()\"\n hide-details\n dense\n data-test=\"cmd-param-select\"\n />\n </v-col>\n <v-col>\n <v-text-field\n :value=\"stateValue\"\n @change=\"handleChange\"\n hide-details\n dense\n data-test=\"cmd-param-value\"\n />\n </v-col>\n </v-row>\n </v-container>\n </div>\n</template>\n\n<script>\nimport Utilities from '@/tools/CommandSender/utilities'\n\nexport default {\n mixins: [Utilities],\n model: {\n prop: 'initialValue',\n event: 'input',\n },\n props: {\n statesInHex: {\n type: Boolean,\n default: false,\n },\n initialValue: {\n type: Object,\n default: () => ({\n val: '',\n states: null,\n selected_state: null,\n selected_state_label: '',\n manual_value: null,\n hazardous: false,\n }),\n },\n },\n data() {\n return {\n value: this.initialValue,\n }\n },\n computed: {\n textfieldValue() {\n return this.convertToString(this.value.val)\n },\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.value.val.toString(16)\n } else {\n return this.value.val\n }\n },\n states() {\n // check using != because compare with null\n if (this.value.states != null) {\n var calcStates = []\n for (var key in this.value.states) {\n if (Object.prototype.hasOwnProperty.call(this.value.states, key)) {\n calcStates.push({\n label: key,\n value: this.value.states[key].value,\n // states which are not hazardous don't have this property set so they are undefined\n hazardous: this.value.states[key].hazardous,\n })\n }\n }\n calcStates.push({\n label: 'MANUALLY ENTERED',\n value: 'MANUALLY ENTERED',\n hazardous: undefined, // see above\n })\n\n // TBD pick default better (use actual default instead of just first item in list)\n return calcStates\n } else {\n return null\n }\n },\n },\n methods: {\n stateClass() {\n return this.value.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n handleChange(value) {\n this.value.val = value\n this.value.manual_value = value\n if (this.value.states) {\n var selected_state = 'MANUALLY ENTERED'\n var selected_state_label = 'MANUALLY_ENTERED'\n for (const state of this.states) {\n if (state.value === parseInt(value)) {\n selected_state = parseInt(value)\n selected_state_label = state.label\n if (state.hazardous === undefined) {\n this.value.hazardous = false\n } else {\n this.value.hazardous = true\n }\n break\n // If they have ascii states the value might match the state value\n } else if (state.value === value) {\n selected_state = value\n selected_state_label = state.label\n if (state.hazardous === undefined) {\n this.value.hazardous = false\n } else {\n this.value.hazardous = true\n }\n break\n } else {\n this.value.hazardous = false\n }\n }\n this.value.selected_state = selected_state\n this.value.selected_state_label = selected_state_label\n } else {\n this.value.selected_state = null\n }\n this.$emit('input', this.value)\n },\n\n handleStateChange(value) {\n var selected_state_label = null\n var selected_state = null\n for (var index = 0; index < this.states.length; index++) {\n if (value === this.states[index].value) {\n if (this.states[index].hazardous === undefined) {\n this.value.hazardous = false\n } else {\n this.value.hazardous = true\n }\n selected_state_label = this.states[index].label\n selected_state = value\n break\n }\n }\n this.value.selected_state_label = selected_state_label\n if (selected_state_label === 'MANUALLY ENTERED') {\n this.value.hazardous = false\n this.value.val = this.value.manual_value\n // Stop propagation of the click event so the editor stays active\n // to let the operator enter a manual value.\n // event.originalEvent.stopPropagation()\n } else {\n this.value.val = selected_state\n this.$emit('input', this.value)\n }\n },\n },\n}\n</script>\n<style scoped>\n/* This allows Value or State selection to be wider and show state names */\n.container :deep(.v-select__selections) {\n width: auto;\n}\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n.hazardous :deep(.v-select__selection) {\n color: rgb(255, 220, 0);\n}\n</style>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommandParameterEditor.vue?vue&type=template&id=f74ed796&scoped=true&\"\nimport script from \"./CommandParameterEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./CommandParameterEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CommandParameterEditor.vue?vue&type=style&index=0&id=f74ed796&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f74ed796\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('top-bar',{attrs:{\"menus\":_vm.menus,\"title\":_vm.title}}),_c('target-packet-item-chooser',{attrs:{\"initial-target-name\":this.$route.params.target,\"initial-packet-name\":this.$route.params.packet,\"disabled\":_vm.sendDisabled,\"button-text\":\"Send\",\"mode\":\"cmd\"},on:{\"on-set\":function($event){return _vm.commandChanged($event)},\"click\":function($event){return _vm.buildCmd($event)}}}),(_vm.rows.length !== 0)?_c('v-card',[_c('v-card-title',[_vm._v(\" Parameters \"),_c('v-spacer'),_c('v-text-field',{attrs:{\"append-icon\":\"mdi-magnify\",\"label\":\"Search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.rows,\"search\":_vm.search,\"calculate-widths\":\"\",\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"multi-sort\":\"\",\"dense\":\"\"},on:{\"contextmenu:row\":_vm.showContextMenu},scopedSlots:_vm._u([{key:\"item.val_and_states\",fn:function({ item }){return [_c('command-parameter-editor',{attrs:{\"states-in-hex\":_vm.statesInHex},model:{value:(item.val_and_states),callback:function ($$v) {_vm.$set(item, \"val_and_states\", $$v)},expression:\"item.val_and_states\"}})]}}],null,false,1123654540)})],1):_vm._e(),_c('div',{staticClass:\"ma-3\"},[_vm._v(\"Status: \"+_vm._s(_vm.status))]),_c('div',{staticClass:\"mt-3\"},[_vm._v(\" Command History: (Pressing Enter on the line re-executes the command) \")]),_c('v-textarea',{ref:\"history\",attrs:{\"value\":_vm.history,\"solo\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"data-test\":\"sender-history\",\"background-color\":_vm.getBackgroundColor()},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.historyEnter($event)}}}),_c('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.contextMenuShown),callback:function ($$v) {_vm.contextMenuShown=$$v},expression:\"contextMenuShown\"}},[_c('v-list',_vm._l((_vm.contextMenuOptions),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){$event.stopPropagation();return item.action.apply(null, arguments)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1),_c('details-dialog',{attrs:{\"target-name\":_vm.targetName,\"packet-name\":_vm.commandName,\"item-name\":_vm.parameterName,\"type\":'cmd'},model:{value:(_vm.viewDetails),callback:function ($$v) {_vm.viewDetails=$$v},expression:\"viewDetails\"}}),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displayErrorDialog),callback:function ($$v) {_vm.displayErrorDialog=$$v},expression:\"displayErrorDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Error \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('v-card-text',[_c('span',{domProps:{\"textContent\":_vm._s(_vm.status)}})])],1),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"data-test\":\"error-dialog-ok\"},on:{\"click\":function($event){_vm.displayErrorDialog = false}}},[_vm._v(\" Ok \")])],1)],1)])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displaySendHazardous),callback:function ($$v) {_vm.displaySendHazardous=$$v},expression:\"displaySendHazardous\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Hazardous Warning \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('span',[_vm._v(\" Warning: Command \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.commandName)+\" is Hazardous. Send? \")])]),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"outlined\":\"\",\"data-test\":\"send-hazardous-no\"},on:{\"click\":_vm.cancelHazardousCmd}},[_vm._v(\" No \")]),_c('v-btn',{staticClass:\"primary mx-1\",attrs:{\"data-test\":\"send-hazardous-yes\"},on:{\"click\":_vm.sendHazardousCmd}},[_vm._v(\" Yes \")])],1)],1)])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.displaySendRaw),callback:function ($$v) {_vm.displaySendRaw=$$v},expression:\"displaySendRaw\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Send Raw \")]),_c('v-spacer')],1),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('v-col',[_vm._v(\"Interface:\")]),_c('v-col',[_c('v-select',{attrs:{\"solo\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.interfaces,\"item-text\":\"label\",\"item-value\":\"value\"},model:{value:(_vm.selectedInterface),callback:function ($$v) {_vm.selectedInterface=$$v},expression:\"selectedInterface\"}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_vm._v(\"Filename:\")]),_c('v-col',[_c('input',{attrs:{\"type\":\"file\"},on:{\"change\":function($event){return _vm.selectRawCmdFile($event)}}})])],1),_c('v-row',[_c('v-spacer'),_c('v-btn',{attrs:{\"outlined\":\"\",\"data-test\":\"raw-cancel\"},on:{\"click\":_vm.cancelRawCmd}},[_vm._v(\" Cancel \")]),_c('v-btn',{staticClass:\"primary\",attrs:{\"data-test\":\"raw-ok\"},on:{\"click\":_vm.sendRawCmd}},[_vm._v(\" Ok \")])],1)],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandSender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandSender.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CommandSender.vue?vue&type=template&id=278a12ec&\"\nimport script from \"./CommandSender.vue?vue&type=script&lang=js&\"\nexport * from \"./CommandSender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"width\":\"600\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_c('span',[_vm._v(\" Details \")]),_c('v-spacer')],1),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.targetName)+\" \"+_vm._s(_vm.packetName)+\" \"+_vm._s(_vm.itemName)+\" \")]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.details.description))]),_c('v-card-text',[_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.type === 'tlm')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Item Values\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Raw Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.rawValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Converted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.convertedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Formatted Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.formattedValue))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(\"With Units Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.unitsValue))])],1)],1)],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Offset\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_offset))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Bit Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.bit_size))])],1),(_vm.details.array_size)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Array Size\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.array_size))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Data Type\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.data_type))])],1),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Minimum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.minimum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Maximum\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.maximum))])],1):_vm._e(),(_vm.type === 'cmd')?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Default\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.default))])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Format String\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.format_string))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Read Conversion\")]),(_vm.details.read_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.read_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.read_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Write Conversion\")]),(_vm.details.write_conversion)?_c('v-col',[_vm._v(\" Class: \"+_vm._s(_vm.details.write_conversion.class)+\" \"),_c('br'),_vm._v(\" Params: \"+_vm._s(_vm.details.write_conversion.params)+\" \")]):_c('v-col')],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Id Value\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.id_value))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Full\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units_full))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Units Abbr\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.units))])],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Endianness\")]),_c('v-col',[_vm._v(_vm._s(_vm.details.endianness))])],1),(_vm.details.states)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.states),function(state,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(state.value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"States\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.limits)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.limits),function(limit,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_vm._v(\" \"+_vm._s(_vm.formatLimit(limit))+\" \"),_c('v-col')],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Limits\")]),_c('v-col',[_vm._v(\"None\")])],1),(_vm.details.meta)?_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col'),_c('v-container',{staticClass:\"ml-5 pa-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.details.meta),function(value,key){return _c('v-row',{key:key,attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(key))]),_c('v-col',[_vm._v(_vm._s(value))])],1)}),1)],1):_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"label\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Meta\")]),_c('v-col',[_vm._v(\"None\")])],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailsDialog.vue?vue&type=template&id=2d350830&scoped=true&\"\nimport script from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsDialog.vue?vue&type=style&index=0&id=2d350830&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d350830\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{staticClass:\"c-chooser px-0\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-target\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Target\",\"hide-details\":\"\",\"dense\":\"\",\"items\":_vm.targetNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.targetNameChanged},model:{value:(_vm.selectedTargetName),callback:function ($$v) {_vm.selectedTargetName=$$v},expression:\"selectedTargetName\"}})],1),_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-packet\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Packet\",\"hide-details\":\"\",\"dense\":\"\",\"disabled\":_vm.packetsDisabled || _vm.buttonDisabled,\"items\":_vm.packetNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":_vm.packetNameChanged},model:{value:(_vm.selectedPacketName),callback:function ($$v) {_vm.selectedPacketName=$$v},expression:\"selectedPacketName\"}})],1),(_vm.chooseItem && !_vm.buttonDisabled)?_c('v-col',{attrs:{\"cols\":_vm.colSize,\"data-test\":\"select-item\"}},[_c('v-autocomplete',{attrs:{\"label\":\"Select Item\",\"hide-details\":\"\",\"dense\":\"\",\"disabled\":_vm.itemsDisabled || _vm.buttonDisabled,\"items\":_vm.itemNames,\"item-text\":\"label\",\"item-value\":\"value\"},on:{\"change\":function($event){return _vm.itemNameChanged($event)}},model:{value:(_vm.selectedItemName),callback:function ($$v) {_vm.selectedItemName=$$v},expression:\"selectedItemName\"}})],1):_vm._e(),(_vm.buttonText)?_c('v-col',{attrs:{\"cols\":_vm.colSize}},[_c('v-btn',{attrs:{\"disabled\":_vm.buttonDisabled,\"block\":\"\",\"color\":\"primary\",\"data-test\":\"select-send\"},on:{\"click\":_vm.buttonPressed}},[_vm._v(\" \"+_vm._s(_vm.actualButtonText)+\" \")])],1):_vm._e()],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[(_vm.hazardous)?_c('v-col',{staticClass:\"openc3-yellow\",attrs:{\"cols\":_vm.colSize}},[_c('astro-badge',{attrs:{\"status\":\"caution\",\"inline\":\"\"}},[_vm._v(\" Description: \"+_vm._s(_vm.description)+\" (HAZARDOUS) \")])],1):_c('v-col',{attrs:{\"cols\":_vm.colSize}},[_vm._v(\" Description: \"+_vm._s(_vm.description)+\" \")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TargetPacketItemChooser.vue?vue&type=template&id=396dabb5&\"\nimport script from \"./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"\nexport * from \"./TargetPacketItemChooser.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TargetPacketItemChooser.vue?vue&type=style&index=0&id=396dabb5&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('mounting-portal',{attrs:{\"mount-to\":\"#openc3-menu\",\"append\":\"\"}},[_c('div',{staticClass:\"v-toolbar__content\"},[_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label}`)}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider'):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label} ${option.label}`)},on:{\"click\":option.command}},[(option.radio)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),(option.checkbox)?_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label},model:{value:(_vm.checked),callback:function ($$v) {_vm.checked=$$v},expression:\"checked\"}})],1):_vm._e(),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled}},[_vm._v(_vm._s(option.icon))])],1):_vm._e(),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : ''))},[_vm._v(_vm._s(option.label))]):_vm._e()],1)]})],2)],1)],1)}),_c('v-spacer'),_c('v-toolbar-title',[_vm._v(_vm._s(_vm.title))]),_c('v-spacer')],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=5fb8d7fb&scoped=true&\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js&\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=5fb8d7fb&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5fb8d7fb\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".container[data-v-f74ed796] .v-select__selections{width:auto}.v-overflow-btn[data-v-f74ed796]{margin-top:0}.container[data-v-f74ed796]{padding:0}.hazardous[data-v-f74ed796] .v-select__selection{color:#ffdc00}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".label[data-v-2d350830]{font-weight:700;text-transform:capitalize}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-badge__badge{height:auto;padding:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-list[data-v-5fb8d7fb] .v-label{margin-left:5px}.v-list-item__icon[data-v-5fb8d7fb]{margin-right:15px!important}.v-list-item__title[data-v-5fb8d7fb]{color:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n-->\n\n<template>\n <div>\n <top-bar :menus=\"menus\" :title=\"title\" />\n\n <target-packet-item-chooser\n :initial-target-name=\"this.$route.params.target\"\n :initial-packet-name=\"this.$route.params.packet\"\n @on-set=\"commandChanged($event)\"\n @click=\"buildCmd($event)\"\n :disabled=\"sendDisabled\"\n button-text=\"Send\"\n mode=\"cmd\"\n />\n\n <v-card v-if=\"rows.length !== 0\">\n <v-card-title>\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n append-icon=\"mdi-magnify\"\n label=\"Search\"\n single-line\n hide-details\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"rows\"\n :search=\"search\"\n calculate-widths\n disable-pagination\n hide-default-footer\n multi-sort\n dense\n @contextmenu:row=\"showContextMenu\"\n >\n <template v-slot:item.val_and_states=\"{ item }\">\n <command-parameter-editor\n v-model=\"item.val_and_states\"\n :states-in-hex=\"statesInHex\"\n />\n </template>\n </v-data-table>\n </v-card>\n <div class=\"ma-3\">Status: {{ status }}</div>\n <div class=\"mt-3\">\n Command History: (Pressing Enter on the line re-executes the command)\n </div>\n <v-textarea\n ref=\"history\"\n :value=\"history\"\n solo\n dense\n hide-details\n data-test=\"sender-history\"\n @keydown.enter=\"historyEnter($event)\"\n :background-color=\"getBackgroundColor()\"\n />\n\n <v-menu\n v-model=\"contextMenuShown\"\n :position-x=\"x\"\n :position-y=\"y\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n <details-dialog\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n v-model=\"viewDetails\"\n />\n\n <v-dialog v-model=\"displayErrorDialog\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Error </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <v-card-text>\n <span v-text=\"status\" />\n </v-card-text>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"displayErrorDialog = false\"\n color=\"primary\"\n data-test=\"error-dialog-ok\"\n >\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"displaySendHazardous\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Hazardous Warning </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <span>\n Warning: Command {{ targetName }} {{ commandName }} is\n Hazardous. Send?\n </span>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"cancelHazardousCmd\"\n outlined\n data-test=\"send-hazardous-no\"\n >\n No\n </v-btn>\n <v-btn\n @click=\"sendHazardousCmd\"\n class=\"primary mx-1\"\n data-test=\"send-hazardous-yes\"\n >\n Yes\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n\n <v-dialog v-model=\"displaySendRaw\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Send Raw </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <v-col>Interface:</v-col>\n <v-col>\n <v-select\n solo\n hide-details\n dense\n :items=\"interfaces\"\n item-text=\"label\"\n item-value=\"value\"\n v-model=\"selectedInterface\"\n />\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col>Filename:</v-col>\n <v-col>\n <input type=\"file\" @change=\"selectRawCmdFile($event)\" />\n </v-col>\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn @click=\"cancelRawCmd\" outlined data-test=\"raw-cancel\">\n Cancel\n </v-btn>\n <v-btn @click=\"sendRawCmd\" class=\"primary\" data-test=\"raw-ok\">\n Ok\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport Api from '@openc3/tool-common/src/services/api'\nimport TargetPacketItemChooser from '@openc3/tool-common/src/components/TargetPacketItemChooser'\nimport CommandParameterEditor from '@/tools/CommandSender/CommandParameterEditor'\nimport Utilities from '@/tools/CommandSender/utilities'\nimport { OpenC3Api } from '@openc3/tool-common/src/services/openc3-api'\nimport DetailsDialog from '@openc3/tool-common/src/components/DetailsDialog'\nimport TopBar from '@openc3/tool-common/src/components/TopBar'\nimport 'sprintf-js'\n\nexport default {\n mixins: [Utilities],\n components: {\n DetailsDialog,\n TargetPacketItemChooser,\n CommandParameterEditor,\n TopBar,\n },\n data() {\n return {\n title: 'Command Sender',\n search: '',\n headers: [\n { text: 'Name', value: 'parameter_name' },\n { text: 'Value or State', value: 'val_and_states' },\n { text: 'Units', value: 'units' },\n { text: 'Description', value: 'description' },\n ],\n targetName: '',\n commandName: '',\n ignoreRangeChecks: false,\n statesInHex: false,\n showIgnoredParams: false,\n cmdRaw: false,\n ignoredParams: [],\n rows: [],\n interfaces: [],\n selectedInterface: '',\n rawCmdFile: null,\n status: '',\n history: '',\n displaySendHazardous: false,\n displayErrorDialog: false,\n displaySendRaw: false,\n sendDisabled: false,\n api: null,\n viewDetails: false,\n contextMenuShown: false,\n parameterName: '',\n reservedItemNames: [],\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n menus: [\n // TODO: Implement send raw\n // {\n // label: 'File',\n // items: [\n // {\n // label: 'Send Raw',\n // command: () => {\n // this.setupRawCmd()\n // }\n // }\n // ]\n // },\n {\n label: 'Mode',\n items: [\n {\n label: 'Ignore Range Checks',\n checkbox: true,\n command: () => {\n this.ignoreRangeChecks = !this.ignoreRangeChecks\n },\n },\n {\n label: 'Display State Values in Hex',\n checkbox: true,\n command: () => {\n this.statesInHex = !this.statesInHex\n },\n },\n {\n label: 'Show Ignored Parameters',\n checkbox: true,\n command: () => {\n this.showIgnoredParams = !this.showIgnoredParams\n // TODO: Maybe we don't need to do this if the data-table\n // can render the whole thing and we just display with v-if\n this.updateCmdParams()\n },\n },\n {\n label: 'Disable Parameter Conversions',\n checkbox: true,\n command: () => {\n this.cmdRaw = !this.cmdRaw\n },\n },\n ],\n },\n ],\n }\n },\n created() {\n Api.get(`/openc3-api/autocomplete/reserved-item-names`).then((response) => {\n this.reservedItemNames = response.data\n })\n this.api = new OpenC3Api()\n // If we're passed in the route then manually call commandChanged to update\n if (this.$route.params.target && this.$route.params.packet) {\n this.commandChanged({\n targetName: this.$route.params.target.toUpperCase(),\n packetName: this.$route.params.packet.toUpperCase(),\n })\n }\n },\n methods: {\n getBackgroundColor() {\n return this.$vuetify.theme.parsedTheme.tertiary.darken2\n },\n historyEnter(event) {\n // Prevent the enter key from actually causing a newline\n event.preventDefault()\n const textarea = this.$refs.history.$refs.input\n let pos = textarea.selectionStart\n // Find the newline after the cursor position\n let nextNewline = textarea.value.indexOf('\\n', pos)\n // Get everything up to the next newline and split on newlines\n const lines = textarea.value.substr(0, nextNewline).split('\\n')\n let command = lines[lines.length - 1]\n // Blank commands can happen if typing return on a blank line\n if (command === '') {\n return\n }\n\n // Remove the cmd(\"\") wrapper\n let firstQuote = command.indexOf('\"')\n let lastQuote = command.lastIndexOf('\"')\n command = command.substr(firstQuote + 1, lastQuote - firstQuote - 1)\n this.sendCmd(command)\n },\n\n showContextMenu(e, row) {\n e.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = e.clientX\n this.y = e.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n\n convertToValue(param) {\n if (\n param.val_and_states.selected_state !== null &&\n param.val_and_states.selected_state !== 'MANUALLY ENTERED'\n ) {\n return param.val_and_states.selected_state_label\n }\n if (typeof param.val_and_states.val !== 'string') {\n return param.val_and_states.val\n }\n\n var str = param.val_and_states.val\n var quotesRemoved = this.removeQuotes(str)\n if (str === quotesRemoved) {\n var upcaseStr = str.toUpperCase()\n if (\n (param.type === 'STRING' || param.type === 'BLOCK') &&\n upcaseStr.startsWith('0X')\n ) {\n var hexStr = upcaseStr.slice(2)\n if (hexStr.length % 2 !== 0) {\n hexStr = '0' + hexStr\n }\n var jstr = { json_class: 'String', raw: [] }\n for (var i = 0; i < hexStr.length; i += 2) {\n var nibble = hexStr.charAt(i) + hexStr.charAt(i + 1)\n jstr.raw.push(parseInt(nibble, 16))\n }\n return jstr\n } else {\n if (upcaseStr === 'INFINITY') {\n return Infinity\n } else if (upcaseStr === '-INFINITY') {\n return -Infinity\n } else if (upcaseStr === 'NAN') {\n return NaN\n } else if (this.isFloat(str)) {\n return parseFloat(str)\n } else if (this.isInt(str)) {\n return parseInt(str)\n } else if (this.isArray(str)) {\n return eval(str)\n } else {\n return str\n }\n }\n } else {\n return quotesRemoved\n }\n },\n\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n // Only updateCmdParams if we're not already in the middle of an update\n if (this.sendDisabled === false) {\n this.updateCmdParams()\n }\n this.$router\n .replace({\n name: 'CommandSender',\n params: {\n target: this.targetName,\n packet: this.commandName,\n },\n })\n // catch the error in case we route to where we already are\n .catch((err) => {})\n }\n },\n\n updateCmdParams() {\n this.sendDisabled = true\n this.ignoredParams = []\n this.rows = []\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_command(this.targetName, this.commandName)\n },\n (error) => {\n this.displayError('getting ignored parameters', error)\n }\n )\n .then(\n (command) => {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams\n ) {\n let val = parameter.default\n // If the parameter is a string and the default is a string\n // (rather than object for binary) then we quote the string\n if (\n parameter.data_type === 'STRING' &&\n typeof parameter.default === 'string'\n ) {\n val = `'${val}'`\n }\n if (parameter.required) {\n val = ''\n }\n if (parameter.format_string) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n this.rows.push({\n parameter_name: parameter.name,\n val_and_states: {\n val: val,\n states: parameter.states,\n selected_state: null,\n selected_state_label: '',\n manual_value: null,\n },\n description: parameter.description,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.sendDisabled = false\n this.status = ''\n },\n (error) => {\n this.displayError('getting command parameters', error)\n }\n )\n },\n\n createParamList() {\n let paramList = {}\n for (var i = 0; i < this.rows.length; i++) {\n paramList[this.rows[i].parameter_name] = this.convertToValue(\n this.rows[i]\n )\n }\n return paramList\n },\n\n buildCmd() {\n this.sendCmd(this.targetName, this.commandName, this.createParamList())\n },\n\n // Note targetName can also be the entire command to send, e.g. \"INST ABORT\" or\n // \"INST COLLECT with TYPE 0, DURATION 1, OPCODE 171, TEMP 10\" when being\n // sent from the history. In that case commandName and paramList are undefined\n // and the api calls handle that.\n sendCmd(targetName, commandName, paramList) {\n this.sendDisabled = true\n let hazardous = false\n let cmd = ''\n this.api.get_cmd_hazardous(targetName, commandName, paramList).then(\n (response) => {\n hazardous = response\n\n if (hazardous) {\n this.displaySendHazardous = true\n } else {\n let obs\n if (this.cmdRaw) {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_raw_no_range_check'\n obs = this.api.cmd_raw_no_range_check(\n targetName,\n commandName,\n paramList\n )\n } else {\n cmd = 'cmd_raw'\n obs = this.api.cmd_raw(targetName, commandName, paramList, {\n // This request could be denied due to out of range but since\n // we're explicitly handling it we don't want the interceptor to fire\n 'Ignore-Errors': '500',\n })\n }\n } else {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_range_check'\n obs = this.api.cmd_no_range_check(\n targetName,\n commandName,\n paramList\n )\n } else {\n cmd = 'cmd'\n obs = this.api.cmd(targetName, commandName, paramList, {\n // This request could be denied due to out of range but since\n // we're explicitly handling it we don't want the interceptor to fire\n 'Ignore-Errors': '500',\n })\n }\n }\n\n obs.then(\n (response) => {\n this.processCmdResponse(cmd, response)\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n }\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n },\n\n sendHazardousCmd() {\n this.displaySendHazardous = false\n const paramList = this.createParamList()\n let obs = ''\n let cmd = ''\n if (this.cmdRaw) {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_raw_no_checks'\n obs = this.api.cmd_raw_no_checks(\n this.targetName,\n this.commandName,\n paramList\n )\n } else {\n cmd = 'cmd_raw_no_hazardous_check'\n obs = this.api.cmd_raw_no_hazardous_check(\n this.targetName,\n this.commandName,\n paramList,\n {\n // This request could be denied due to out of range but since\n // we're explicitly handling it we don't want the interceptor to fire\n 'Ignore-Errors': '500',\n }\n )\n }\n } else {\n if (this.ignoreRangeChecks) {\n cmd = 'cmd_no_checks'\n obs = this.api.cmd_no_checks(\n this.targetName,\n this.commandName,\n paramList\n )\n } else {\n cmd = 'cmd_no_hazardous_check'\n obs = this.api.cmd_no_hazardous_check(\n this.targetName,\n this.commandName,\n paramList,\n {\n // This request could be denied due to out of range but since\n // we're explicitly handling it we don't want the interceptor to fire\n 'Ignore-Errors': '500',\n }\n )\n }\n }\n\n obs.then(\n (response) => {\n this.processCmdResponse(cmd, response)\n },\n (error) => {\n this.processCmdResponse(false, error)\n }\n )\n },\n\n cancelHazardousCmd() {\n this.displaySendHazardous = false\n this.status = 'Hazardous command not sent'\n this.sendDisabled = false\n },\n\n processCmdResponse(cmd_sent, response) {\n var msg = ''\n if (cmd_sent) {\n msg = `${cmd_sent}(\"${response[0]} ${response[1]}`\n var keys = Object.keys(response[2])\n if (keys.length > 0) {\n msg += ' with '\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var value = this.convertToString(response[2][key])\n // If the response has unquoted string data we add quotes\n if (\n typeof response[2][key] === 'string' &&\n value.charAt(0) !== \"'\" &&\n value.charAt(0) !== '\"'\n ) {\n value = `'${value}'`\n }\n msg += key + ' ' + value\n if (i < keys.length - 1) {\n msg += ', '\n }\n }\n }\n msg += '\")'\n if (!this.history.includes(msg)) {\n this.history += msg + '\\n'\n }\n msg += ' sent.'\n // Add the number of commands sent to the status message\n if (this.status.includes(msg)) {\n let parts = this.status.split('sent.')\n if (parts[1].includes('(')) {\n let num = parseInt(parts[1].substr(2, parts[1].indexOf(')') - 2))\n msg = parts[0] + 'sent. (' + (num + 1) + ')'\n } else {\n msg += ' (2)'\n }\n }\n this.status = msg\n } else {\n var context = 'sending ' + this.targetName + ' ' + this.commandName\n this.displayError(context, response, true)\n }\n this.sendDisabled = false\n },\n\n displayError(context, error, showDialog = false) {\n this.status = `Error ${context} due to ${error.name}`\n if (error.message && error.message !== '') {\n this.status += ': '\n this.status += error.message\n }\n if (showDialog) {\n this.displayErrorDialog = true\n }\n },\n\n // setupRawCmd() {\n // this.api.get_interface_names().then(\n // (response) => {\n // var interfaces = []\n // for (var i = 0; i < response.length; i++) {\n // interfaces.push({ label: response[i], value: response[i] })\n // }\n // this.interfaces = interfaces\n // this.selectedInterface = interfaces[0].value\n // this.displaySendRaw = true\n // },\n // (error) => {\n // this.displaySendRaw = false\n // this.displayError('getting interface names', error, true)\n // }\n // )\n // },\n\n // selectRawCmdFile(event) {\n // this.rawCmdFile = event.target.files[0]\n // },\n\n // onLoad(event) {\n // var bufView = new Uint8Array(event.target.result)\n // var jstr = { json_class: 'String', raw: [] }\n // for (var i = 0; i < bufView.length; i++) {\n // jstr.raw.push(bufView[i])\n // }\n\n // this.api.send_raw(this.selectedInterface, jstr).then(\n // () => {\n // this.displaySendRaw = false\n // this.status =\n // 'Sent ' +\n // bufView.length +\n // ' bytes to interface ' +\n // this.selectedInterface\n // },\n // (error) => {\n // this.displaySendRaw = false\n // this.displayError('sending raw data', error, true)\n // }\n // )\n // },\n\n // sendRawCmd() {\n // var self = this\n // var reader = new FileReader()\n // reader.onload = function (e) {\n // self.onLoad(e)\n // }\n // reader.onerror = function (e) {\n // self.displaySendRaw = false\n // var target = e.target\n // self.displayError('sending raw data', target.error, true)\n // }\n // // TBD - use the other event handlers to implement a progress bar for the\n // // file upload. Handle abort as well?\n // //reader.onloadstart = function(e) {}\n // //reader.onprogress = function(e) {}\n // //reader.onloadend = function(e) {}\n // //reader.onabort = function(e) {}\n\n // reader.readAsArrayBuffer(this.rawCmdFile)\n // },\n\n // cancelRawCmd() {\n // this.displaySendRaw = false\n // this.status = 'Raw command not sent'\n // },\n },\n}\n</script>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nexport default {\n methods: {\n isFloat(str) {\n // Regex to identify a string as a floating point number\n if (/^\\s*[-+]?\\d*\\.\\d+\\s*$/.test(str)) {\n return true\n }\n // Regex to identify a string as a floating point number in scientific notation.\n if (/^\\s*[-+]?(\\d+((\\.\\d+)?)|(\\.\\d+))[eE][-+]?\\d+\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n isInt(str) {\n // Regular expression to identify a String as an integer\n if (/^\\s*[-+]?\\d+\\s*$/.test(str)) {\n return true\n }\n\n // # Regular expression to identify a String as an integer in hexadecimal format\n if (/^\\s*0[xX][\\dabcdefABCDEF]+\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n isArray(str) {\n // Regular expression to identify a String as an Array\n if (/^\\s*\\[.*\\]\\s*$/.test(str)) {\n return true\n }\n return false\n },\n\n removeQuotes(str) {\n // Return the string with leading and trailing quotes removed\n if (str.length < 2) {\n return str\n }\n var firstChar = str.charAt(0)\n if (firstChar !== '\"' && firstChar !== \"'\") {\n return str\n }\n var lastChar = str.charAt(str.length - 1)\n if (firstChar !== lastChar) {\n return str\n }\n return str.slice(1, -1)\n },\n\n convertToString(value) {\n var i = 0\n var returnValue = ''\n if (Object.prototype.toString.call(value).slice(8, -1) === 'Array') {\n var arrayLength = value.length\n returnValue = '[ '\n for (i = 0; i < arrayLength; i++) {\n if (\n Object.prototype.toString.call(value[i]).slice(8, -1) === 'String'\n ) {\n returnValue += '\"' + value[i] + '\"'\n } else {\n returnValue += value[i]\n }\n if (i !== arrayLength - 1) {\n returnValue += ', '\n }\n }\n returnValue += ' ]'\n } else if (\n Object.prototype.toString.call(value).slice(8, -1) === 'Object'\n ) {\n if (value.json_class === 'String' && value.raw) {\n // This is binary data, display in hex.\n returnValue = '0x'\n for (i = 0; i < value.raw.length; i++) {\n var nibble = value.raw[i].toString(16).toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n returnValue += nibble\n }\n } else if (value.json_class === 'Float' && value.raw) {\n returnValue = value.raw\n }\n } else {\n returnValue = String(value)\n }\n return returnValue\n },\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity)\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true)\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // 'Ignore-Errors': '500',\n // })\n if (\n error.response.headers['ignore-errors'] &&\n error.response.headers['ignore-errors'].includes(\n error.response.status.toString()\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n throw error\n } else {\n throw error\n }\n }\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport axios from './axios.js'\n\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n // This is hacky Json-rpc for now. Should probably use a jsonrpc library.\n async exec(method, params, kwparams = {}, headerOptions = {}) {\n try {\n await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity)\n } catch (error) {\n OpenC3Auth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = window.openc3Scope\n const response = await axios.post(\n '/openc3-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.openc3Token,\n 'Content-Type': 'application/json-rpc',\n ...headerOptions,\n },\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n // console.log(error)\n throw err\n }\n }\n\n decode_openc3_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_openc3_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n connect_interface(interface_name) {\n return this.exec('connect_interface', [interface_name])\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_tlm_cnts(target_commands) {\n return this.exec('get_tlm_cnts', [target_commands])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_oldest_logfile() {\n return this.exec('get_oldest_logfile', [])\n }\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n async get_tlm_packet(target_name, packet_name, value_type) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n async get_tlm_values(items) {\n const data = await this.exec('get_tlm_values', [items])\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n async tlm(target_name, packet_name, item_name, data_type = 'CONVERTED') {\n let data = null\n // Check for the single string syntax: tlm(\"TGT PKT ITEM\")\n if (packet_name === undefined) {\n data = await this.exec('tlm', [target_name])\n // Check for the single string syntax with type: tlm(\"TGT PKT ITEM\", \"RAW\")\n } else if (item_name === undefined) {\n if (\n ['RAW', 'CONVERTED', 'FORMATTED', 'WITH_UNITS'].includes(packet_name)\n ) {\n data = await this.exec('tlm', [target_name], { type: packet_name })\n } else {\n var err = new Error()\n err.name = 'TypeError'\n err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`\n throw err\n }\n } else {\n data = await this.exec('tlm', [target_name, packet_name, item_name], {\n type: data_type,\n })\n }\n var converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_cnts(target_commands) {\n return this.exec('get_cmd_cnts', [target_commands])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list, headerOptions) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_openc3_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(\n method,\n [target_name, command_name, param_list],\n {},\n headerOptions\n )\n }\n\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd',\n target_name,\n command_name,\n param_list,\n headerOptions\n )\n }\n }\n\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n\n // TODO: Currently unused but seemed like a useful function\n async hashString(string) {\n if (window.isSecureContext) {\n // Encode the string as an arrayBuffer which the subtle crypto API uses\n const arrayBuffer = new TextEncoder().encode(string)\n // Use the subtle crypto API to perform a SHA256 Sum of the array buffer\n // The resulting hash is stored in an array buffer\n const hashAsArrayBuffer = await crypto.subtle.digest(\n 'SHA-256',\n arrayBuffer\n )\n // To create a string we will get the hexadecimal value of each byte of the array buffer\n // This gets us an array where each byte of the array buffer becomes one item in the array\n const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)\n // We then convert it to a regular array so we can convert each item to hexadecimal strings\n // Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).\n return Array.from(uint8ViewOfHash)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n // else ?\n }\n}\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CommandParameterEditor.vue?vue&type=style&index=0&id=f74ed796&prod&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"48c87bfc\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DetailsDialog.vue?vue&type=style&index=0&id=2d350830&prod&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7965124a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TargetPacketItemChooser.vue?vue&type=style&index=0&id=396dabb5&prod&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6c0e906e\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=5fb8d7fb&prod&scoped=true&lang=css&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7bc1978b\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["render","_vm","this","_c","_self","states","attrs","textfieldValue","on","handleChange","class","stateClass","staticStyle","handleStateChange","model","value","selected_state","callback","$$v","$set","expression","stateValue","staticRenderFns","mixins","prop","event","props","statesInHex","type","default","initialValue","val","selected_state_label","manual_value","hazardous","data","computed","calcStates","label","methods","component","menus","title","$route","params","target","packet","sendDisabled","$event","commandChanged","buildCmd","rows","length","_v","search","headers","showContextMenu","scopedSlots","_u","key","fn","item","val_and_states","_e","staticClass","_s","status","ref","history","getBackgroundColor","indexOf","_k","keyCode","historyEnter","x","y","contextMenuShown","_l","contextMenuOptions","index","stopPropagation","action","apply","arguments","targetName","commandName","parameterName","viewDetails","displayErrorDialog","domProps","displaySendHazardous","cancelHazardousCmd","sendHazardousCmd","displaySendRaw","interfaces","selectedInterface","selectRawCmdFile","cancelRawCmd","sendRawCmd","show","packetName","itemName","details","description","rawValue","convertedValue","formattedValue","unitsValue","bit_offset","bit_size","array_size","data_type","minimum","maximum","format_string","read_conversion","write_conversion","id_value","units_full","units","endianness","state","limits","limit","formatLimit","meta","validator","updater","get","set","created","beforeDestroy","clearInterval","watch","get_tlm_values","then","requestDetails","get_item","get_parameter","colSize","targetNames","targetNameChanged","selectedTargetName","packetsDisabled","buttonDisabled","packetNames","packetNameChanged","selectedPacketName","chooseItem","itemsDisabled","itemNames","itemNameChanged","selectedItemName","buttonText","buttonPressed","actualButtonText","allowAll","disabled","initialTargetName","initialPacketName","initialItemName","mode","reduced","includes","propValue","unknown","vertical","internalDisabled","api","ALL","UNKNOWN","targetChooserStyle","width","float","packetChooserStyle","updatePackets","updateItems","map","reduce","makeReducedItems","allTargetPacketItems","allPacketItems","menu","i","_g","_b","formatDT","radioGroup","items","option","j","divider","command","radio","checkbox","checked","icon","style","mounted","document","___CSS_LOADER_EXPORT___","push","module","id","components","DetailsDialog","TargetPacketItemChooser","CommandParameterEditor","TopBar","text","ignoreRangeChecks","showIgnoredParams","cmdRaw","ignoredParams","rawCmdFile","reservedItemNames","Api","e","row","convertToValue","param","upcaseStr","hexStr","json_class","raw","jstr","replace","name","catch","updateCmdParams","get_target","parameter_name","createParamList","paramList","sendCmd","cmd","obs","processCmdResponse","cmd_sent","response","msg","displayError","context","error","isFloat","str","test","isInt","isArray","removeQuotes","firstChar","charAt","lastChar","slice","convertToString","returnValue","Object","prototype","toString","call","arrayLength","nibble","toUpperCase","String","request","method","url","noAuth","noScope","OpenC3Auth","updateToken","defaultMinValidity","login","localStorage","openc3Token","window","openc3Scope","axios","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","path","put","post","delete","vueInstance","Vue","axiosInstance","baseURL","location","origin","timeout","interceptors","use","Promise","reject","body","statusText","config","message","exception","$notify","serious","OpenC3Api","kwparams","headerOptions","jsonrpc","keyword_params","Authorization","result","err","Error","NaN","Infinity","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","exec","interface_name","router_name","target_commands","log_writer_name","limits_set","target_name","packet_name","value_type","len","converted","decode_openc3_type","item_name","undefined","command_name","param_list","hasOwnProperty","encode_openc3_type","_cmd","tool","ignored","array","string","isSecureContext","arrayBuffer","TextEncoder","encode","crypto","subtle","digest","hashAsArrayBuffer","uint8ViewOfHash","Uint8Array","Array","from","b","padStart","join","content","__esModule","locals","exports","add"],"sourceRoot":""}