Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/monara/public_html/test.athavaneng.com/themes.php on line 99
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 226
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 227
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 228
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 229
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 230
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 231
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Administration=t():e.Administration=t()}(this,(function(){return(this.webpackJsonpAdministration=this.webpackJsonpAdministration||[]).push([[5],{1:function(e,t,r){"use strict";var n=r(41),o=r(76),i=r(629),a=r(1669),s=r(1639),c=r(1640),l=r(843),p=r(1677),u=r(323),d=r(785),m=r(458),f=r.n(m),b=r(335),h=r.n(b),y=r(459),g=r.n(y),v=r(461),_=r.n(v),O=r(338),j=r.n(O),x=r(676),w=r.n(x),k=r(677),S=r.n(k),P=r(463),T=r.n(P),I=r(395),C=r.n(I),A=r(396),D=r.n(A),E=r(678),$=r.n(E),N=r(679),L=r.n(N),R=r(680),q=r.n(R),M=r(464),F=r.n(M),U=r(681),z=r.n(U),B=r(682),H=r.n(B),V=r(1671),W=r(685),G=r.n(W),K=r(48),Y=r(2),J=r.n(Y),Q=r(844),X=r(7),Z=r(1681),ee=r(465),te=r(0);function re(){return(re=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r svg":{position:"absolute",color:"#86878a",'&[data-testid="ArrowDropUpIcon"]':{top:0},'&[data-testid="ArrowDropDownIcon"]':{bottom:0}}},titleSort:{color:e.palette.primary.main,"& svg":{color:e.palette.primary.main}}}})),de=K.u.ArrowDropDownIcon,me=K.u.ArrowDropUpIcon,fe=function(e){var t=e.sortKey,r=e.label,n=e.handlePaginationChange,o=e.sort,i=Object(X.b)().t,a=ue(),s=a.classes,c=a.cx,l=function(e){n({sort:e})};return o===t?Object(te.c)(pe.a,{variant:"subtitle2",className:c(s.title,s.titleSort),onClick:function(){n({sort:""})}},i(r),Object(te.c)("div",{className:s.icons},Object(te.c)(me,{fontSize:"small"}))):o==="-".concat(t)?Object(te.c)(pe.a,{variant:"subtitle2",className:c(s.title,s.titleSort),onClick:function(){return l(t)}},i(r),Object(te.c)("div",{className:s.icons},Object(te.c)(de,{fontSize:"small"}))):Object(te.c)(pe.a,{variant:"subtitle2",className:s.title,onClick:function(){return l("-".concat(t))}},i(r),Object(te.c)("div",{className:s.icons},Object(te.c)(me,{fontSize:"small"}),Object(te.c)(de,{fontSize:"small"})))},be=r(1672),he=r(1665),ye=r(325),ge=function(e){var t=e.title,r=Object(X.b)().t;return"string"==typeof t?Object(te.c)(ye.a,{variant:"h6",component:"span",color:"textSecondary"},r(t)):t},ve=(r(686),function(e){var t=e.settings,r=e.index,n=e.cell;return Object(te.c)(J.a.Fragment,{key:r},Object(te.c)(he.a,{lgUp:!0},Object(te.c)(be.a,{item:!0,xs:3,sm:2,md:2,className:"uik-table-cell uik-table-header-cell"},Object(te.c)(ge,{title:t[r].title}))),Object(te.c)(be.a,{item:!0,xs:9,sm:10,md:10,lg:t[r].lg||1,className:"uik-table-cell"},n))}),_e=function(e){var t=e.rows,r=e.body,n=e.settings;return Object(te.c)(be.a,{container:!0},Object(te.c)(he.a,{lgDown:!0},Object(te.c)(be.a,{item:!0,container:!0,xs:12,className:"uik-table-block uik-header-block"},n.map((function(e,t){return Object(te.c)(be.a,{item:!0,lg:e.lg||1,className:"uik-table-cell uik-table-header-cell",key:t},Object(te.c)(ge,{title:e.title}))})))),r||t&&t.map((function(e,t){return Object(te.c)(be.a,{item:!0,container:!0,xs:12,className:"uik-table-block",key:t,"data-testid":"table-block-".concat(t)},e.map((function(e,t){return Object(te.c)(ve,{key:t,index:t,settings:n,cell:e})})))})))},Oe=r(1660),je=r(494),xe=r.n(je),we=r(340),ke=r.n(we),Se=r(125),Pe=(r(1196),r(50)),Te=["estimatedCount","page","limit","nextCursor","prevCursor","handlePaginationChange","handlePageChangeCb"];function Ie(){return(Ie=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Ae=function(e){var t=e.estimatedCount,r=e.page,n=e.limit,o=e.nextCursor,i=e.prevCursor,a=e.handlePaginationChange,s=e.handlePageChangeCb,c=Ce(e,Te);return t&&n&&null!=r?Object(te.c)(Oe.a,Ie({component:"div",count:t,page:r-1,onPageChange:function(e,t){if(e&&e.stopPropagation(),null!=r){var c="";r-1t&&(c=i),a({page:Number(t)+1,cursor:c,limit:n}),s&&s()}},rowsPerPage:Math.abs(n),onRowsPerPageChange:function(e){e.stopPropagation(),a({page:1,cursor:"",limit:parseInt(e.target.value,10)})},rowsPerPageOptions:Se.c,className:"pagination-root",nextIconButtonProps:{"data-testid":"pagination-next"}},c)):Object(te.c)(Pe.a,null,Object(te.c)(ee.a,{disabled:!i,onClick:function(){return a({cursor:i})},size:"large"},Object(te.c)(xe.a,null)),Object(te.c)(ee.a,{disabled:!o,onClick:function(){return a({cursor:o})},size:"large"},Object(te.c)(ke.a,null)))},De=r(143),Ee=r(889),$e=r(123),Ne=r(66),Le=r(78),Re=r(4),qe=r(72),Me=r(502);function Fe(e){return(Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Ue=["onChange","path","entity","index","data","templateData","showFullHelperInf","validation","validateOnMount","inputProps","InputProps","dimension","isCalculatedValue","warning","value","getValueFn","error","disabled","readOnly","force","docDescription","className","debounceTime"];function ze(){return(ze=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Qe=Object(n.a)()((function(e){var t,r,n,o,i,a;return{textField:{"& .MuiInputBase-input":{paddingTop:7,paddingBottom:6},"& .MuiInputBase-root":{paddingLeft:4}},warning:{"& label":{color:"".concat(null===(t=e.palette)||void 0===t?void 0:null===(r=t.warning)||void 0===r?void 0:r.main," !important")},"& .MuiInput-underline:after":{borderBottomColor:null===(n=e.palette)||void 0===n?void 0:null===(o=n.warning)||void 0===o?void 0:o.main,transform:"scaleX(1)"},"& .MuiFormHelperText-root":{color:null===(i=e.palette)||void 0===i?void 0:null===(a=i.warning)||void 0===a?void 0:a.main}}}})),Xe=function(e){var t=e.onChange,r=void 0===t?function(){}:t,n=e.path,o=void 0===n?[]:n,i=e.entity,a=e.index,s=e.data,c=e.templateData,l=e.showFullHelperInf,p=e.validation,u=e.validateOnMount,d=e.inputProps,m=void 0===d?{}:d,f=e.InputProps,b=void 0===f?{}:f,h=e.dimension,y=e.isCalculatedValue,g=e.warning,v=e.value,_=e.getValueFn,O=e.error,j=e.disabled,x=e.readOnly,w=e.force,k=e.docDescription,S=e.className,P=e.debounceTime,T=Je(e,Ue),I=Object(X.b)().t,C=Qe(),A=C.classes,D=C.cx,E=Object(Me.a)(r,P),$=Object($e.a)(),N=$.onError,L=void 0===N?function(){return function(){}}:N,R=$.onErrorResolve,q=void 0===R?function(){return function(){}}:R,M=$.errors,F=void 0===M?[]:M,U=Ge(Object(Y.useState)(v),2),z=U[0],B=U[1],H=Ge(Object(Y.useState)(!1),2),V=H[0],W=H[1],G=Object(Re.d)(a)?[].concat(We(o),[a]):o;G=i?[i].concat(We(G)):G;var K=Object(Le.b)(F[Object(Ne.c)(G)],I)||"",Q=i?[i].concat(We(o)).join("-"):We(o).join("-");Object(Y.useEffect)((function(){v===z||V&&!Object(Re.b)(v)&&!w||B(v||"")}),[v]),Object(Y.useEffect)((function(){return u&&p&&p(v)&&L(G)(p(v)),function(){W(!1),q(G)()}}),[]);var Z=function(){return k&&Object(te.c)(qe.a,{docDescription:k,diskValue:_?_(s):De.a(o)(s),templateValue:_?_(c):De.a(o)(c),showFullHelperInf:l})};return Object(te.c)(Ee.a,ze({variant:"standard",fullWidth:!0,label:I(Q),value:z,onChange:function(e){W(!0),E&&(B(e.target.value),E(e)),p&&(p(e.target.value)?L(G)(p(e.target.value)):q(G)())},onClick:function(e){return e.stopPropagation()},error:!!K||!!O,helperText:O||K||g,disabled:j||x,InputProps:He({endAdornment:h?Object(te.c)(J.a.Fragment,null,Object(te.c)(ye.a,{component:"span",variant:"body2"},h),Z()):Z()},b),inputProps:He({"data-testid":Object(Re.d)(a)?"".concat(Q,"-").concat(a):Q,style:{color:!y&&!j||x?"rgba(0, 0, 0, 0.87)":"#b0afaf"}},m),InputLabelProps:{shrink:Object(Re.e)(z)},className:D(A.textField,g&&!O?A.warning:"",S)},T))},Ze=r(1691),et=["docDescription"];function tt(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var rt=Object(n.a)()((function(){return{formControlWrapper:{display:"inline-flex",alignItems:"center"}}})),nt=function(e){var t=e.docDescription,r=tt(e,et),n=rt().classes;return Object(te.c)("span",{className:n.formControlWrapper},Object(te.c)(Ze.a,r),t&&Object(te.c)(qe.a,{docDescription:t}))},ot=r(1663),it=r(538),at=r(15),st=r(131),ct=Object(at.a)(it.a)((function(){return{minWidth:260,height:32,paddingTop:5,whiteSpace:"nowrap"}})),lt=Object(at.a)(it.a)((function(){return{height:32,paddingTop:5,whiteSpace:"nowrap"}})),pt=function(e){var t=e.onClick,r=e["data-testid"],n=e.docDescription;return Object(te.c)(J.a.Fragment,null,Object(te.c)(st.a,{color:"primary",size:"small",variant:"contained",onClick:t,"data-testid":null!=r?r:"add-button"},Object(te.c)(j.a,{fontSize:"small"})),n&&Object(te.c)(qe.a,{docDescription:n}))},ut=["children","maxWidth","title"];function dt(){return(dt=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var ft=Object(n.a)()((function(e,t){var r=t.maxWidth;return{tooltip:{backgroundColor:e.palette.common.white,color:e.palette.text.primary,border:"1px solid #D2D9DF",boxShadow:"0px 2px 7px rgba(31, 31, 34, 0.25)",borderRadius:4,fontSize:11,maxWidth:r||"none"}}})),bt=function(e){var t=e.children,r=e.maxWidth,n=e.title,o=mt(e,ut),i=ft({maxWidth:r}).classes;return Object(te.c)(Z.a,dt({classes:i,title:n},o),t)},ht=r(1644),yt=r(492),gt=r(1687),vt=r(1661),_t=r(1561),Ot=r(1645),jt=r(154),xt=r(1674),wt=["children"];function kt(){return(kt=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Pt=function(e){var t=e.children,r=St(e,wt);return Object(te.c)(xt.a,kt({},r,{underline:"hover"}),t)};Pt.muiName="Link";var Tt=r(471),It=r(1646),Ct=r(1692),At=r(1647),Dt=r(882),Et=r(266),$t=r(1650),Nt=r(1686),Lt=r(1693),Rt=r(1694),qt=r(1695),Mt=r(1651),Ft=r(1680),Ut=r(1696),zt=r(1697),Bt=r(1662),Ht=["children"];function Vt(){return(Vt=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Gt=function(e){var t=e.children,r=Wt(e,Ht);return Object(te.c)(Bt.a,Vt({variant:"standard"},r),t)};Gt.muiName="Select";var Kt=r(1688),Yt=r(1689),Jt=r(1666),Qt=Object(at.a)(Jt.a)((function(){return{background:"none !important"}})),Xt=r(1698),Zt=r(1564),er=r(1652),tr=r(1565),rr=r(1699),nr=r(618),or=r(1690),ir=r(472),ar=r(620),sr=r(1700),cr=r(684),lr=r(1641),pr=r(1685),ur=r(336),dr=r.n(ur),mr=["buttonText","onButtonClick","items","color","disabled","justify","className","handleScrollElementId"];function fr(){return(fr=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var gr=function(e){var t=e.buttonText,r=e.onButtonClick,n=e.items,o=e.color,i=e.disabled,a=e.justify,s=e.className,c=e.handleScrollElementId,l=yr(e,mr),p=br(J.a.useState(!1),2),u=p[0],d=p[1],m=J.a.useRef(null),f=function(){d((function(e){return!e}))},b=function(e){m.current&&m.current.contains(e.target)||d(!1)};Object(Y.useEffect)((function(){var e;c&&(null===(e=document.getElementById(c))||void 0===e||e.addEventListener("scroll",b));return function(){var e;c&&(null===(e=document.getElementById(c))||void 0===e||e.removeEventListener("scroll",b))}}),[]);var h=Object(Y.useCallback)((function(e){return function(t){f(),e(t)}}),[]);return Object(te.c)(ar.a,null,Object(te.c)(be.a,{container:!0},Object(te.c)(be.a,{container:!0,item:!0,xs:12,justifyContent:a},Object(te.c)(sr.a,{color:o,variant:l.variant||"contained",ref:m,"aria-label":"split button",className:s},Object(te.c)(it.a,{color:o,variant:l.variant||"contained",onClick:r||f,"data-testid":"".concat(l["data-testid"],"Button"),disabled:i},t),Object(te.c)(it.a,{color:o,variant:l.variant||"contained",size:"small",onClick:f,"data-testid":"".concat(l["data-testid"],"DropdownButton"),disabled:i},Object(te.c)(dr.a,null))),Object(te.c)(cr.a,{open:u,anchorEl:m.current,transition:!0,sx:{zIndex:1e4}},(function(e){var t=e.TransitionProps,r=e.placement;return Object(te.c)(lr.a,fr({},t,{style:{transformOrigin:"bottom"===r?"center top":"center bottom"}}),Object(te.c)(yt.a,{id:"menu-list-grow"},Object(te.c)(ht.a,{onClickAway:b},Object(te.c)(pr.a,{sx:{maxHeight:200,overflowY:"auto"}},n&&n.map((function(e,t){var r=e.text,n=e.onClick,o=e["data-testid"];return Object(te.c)(gt.a,{key:t,onClick:h(n),"data-testid":o},r)}))))))})))))};gr.defaultProps={onButtonClick:void 0,color:"primary","data-testid":void 0,disabled:!1,justify:"flex-end"};var vr=r(1701),_r=r(1675),Or=r(36),jr=r(42),xr=r.n(jr),wr=r(1668);function kr(e){return(kr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Sr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Pr(e){for(var t=1;t li":Pr({minWidth:"45px"},{overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}),"& .MuiBreadcrumbs-separator":{minWidth:"20px"}},minHeight:"33.5px"},breadcrumbLink:Pr({fontSize:"21px",fontWeight:500,textDecoration:"none !important",color:"rgba(152, 162, 178, 0.7)",width:"100%"},{overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}),breadcrumbCurrent:Pr({fontSize:"21px",color:e.palette.text.primary},{overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}),breadcrumbNavigateIcon:{color:"rgba(152, 162, 178, 0.7)",fontSize:"28px"}}}));function Cr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Ar(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ar(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ar(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0){var q=l[l.length-1];R=q.isDataLoaded?q.title||q.id:""}return Object(te.c)(J.a.Fragment,null,Object(te.c)(Vr.a,{className:N.appBar},Object(te.c)(Pe.a,{display:"flex",alignItems:"center",justifyContent:"center",className:N.appBarContent},p?Object(te.c)(st.b,{onClick:function(){b?O.push(b):T===I?O.push("/cameras"):O.goBack()},className:L(N.burger,N.appBarBurger)},Object(te.c)(sn,null)):Object(te.c)(st.b,{onClick:x?S:k,className:L(N.burger,N.appBarBurger)},x?Object(te.c)(K.f,null):Object(te.c)(K.l,null)),x&&E&&Object(te.c)(Pt,{to:"/",component:Or.b,className:N.logoLink},Object(te.c)("img",{src:E,alt:"",className:N.appBarLogo})),!x&&R&&Object(te.c)(pe.a,{variant:"h5",className:N.title},R),u&&u({isOpen:x}))),Object(te.c)(zr,{open:x,variant:"permanent",onOpen:k,onClose:S,classes:{paper:N.drawer},onMouseEnter:Object(rn.a)()?void 0:k,onMouseLeave:Object(rn.a)()?void 0:S},Object(te.c)(Pe.a,null,Object(te.c)(Pe.a,{display:"flex",justifyContent:x&&!$r.l||x&&$r.l&&y?"space-between":"center",alignItems:"center",className:N.logoBlock},x||$r.l&&!y?Object(te.c)(Pt,{to:"/",component:Or.b},Object(te.c)("img",{src:E,alt:"",className:N.logo})):null,(!$r.l||y)&&Object(te.c)(st.b,{onClick:x?S:k,className:N.burger,"data-testid":"main-menu-burger"},x?Object(te.c)(K.a,null):Object(te.c)(K.l,null))),Object(te.c)(er.a,{className:N.divider}),($r.i||$r.l)&&Object(te.c)(J.a.Fragment,null,Object(te.c)(Pe.a,{my:1},Object(te.c)(Nt.a,{component:"nav",className:N.menuItemsBlock,"data-testid":"avatar"},Object(te.c)(Jr,nn({},D,{handleMenuClose:S})))),Object(te.c)(er.a,{className:N.divider})),Object(te.c)(Pe.a,{className:N.menuItemsBlock},Object(te.c)(Nt.a,{component:"nav","data-testid":"main-menu-items"},r&&r.map((function(e){return Object(te.c)(Jr,{key:e.id,item:e,isOpen:x,activeItemId:C,handleMenuClose:S})}))))),Object(te.c)(Pe.a,null,d&&Object(te.c)(Pe.a,{className:N.menuItemsBlock},Object(te.c)(Nt.a,{component:"nav","data-testid":"main-bottom-menu-items"},d&&d.map((function(e){return Object(te.c)(Jr,{key:e.id,item:e,activeItemId:A,handleMenuClose:S})})))),i&&i({isOpen:x}),n&&Object(te.c)(J.a.Fragment,null,Object(te.c)(er.a,{className:N.divider}),Object(te.c)(Nt.a,{component:"nav",className:N.menuItemsBlock,"data-testid":"logout"},Object(te.c)(Hr.a,{onClick:n},Object(te.c)(Br.a,{className:N.menuItemIcon},Object(te.c)(K.k,null)),Object(te.c)(Mt.a,null,Object(te.c)(pe.a,{className:N.menuItemText},g("layout.logout")))))),m&&m({isOpen:x}))))},pn=r(1704),un=r(1664),dn=r(1679),mn=function(e){var t=e.route,r=e.component,n=Object(X.b)().t;return Object(te.c)(Pe.a,{pl:"11px",mt:1,pb:2,sx:{display:{lg:"none",md:"none",sm:"none"}}},Object(te.c)(xe.a,{fontSize:"small"}),Object(te.c)(Pt,{to:"/".concat(t),component:r,variant:"body2",color:"#232323","data-testid":"back-to"},"".concat(n("backTo")).concat(t.charAt(0).toUpperCase()+t.slice(1))))};function fn(e){return(fn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function bn(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==fn(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==fn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===fn(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var hn=Object(n.a)()((function(e){return{tabs:bn({minHeight:32,position:"relative",top:1,borderLeft:"1px solid #D0D7DD",borderRadius:"8px 0 0 0","& .MuiTab-root":{borderRight:"none","&:first-of-type":{borderLeft:0},"&:last-of-type":{borderRight:"1px solid #D0D7DD"}},"& .MuiTabs-indicator":{display:"none"}},e.breakpoints.only("xs"),{marginLeft:e.spacing(2)}),tab:{background:"#F2F4F7",border:"1px solid #D0D7DD",borderRadius:"8px 8px 0 0",textTransform:"none",fontWeight:400,padding:"6px ".concat(e.spacing(2)),minHeight:32,color:e.palette.text.primary,"&.Mui-selected":{background:e.palette.common.white,color:e.palette.text.primary,borderBottom:0,fontWeight:500}},specialTab:{marginRight:e.spacing(2),borderRight:"1px solid #D0D7DD !important",background:e.palette.primary.main,color:e.palette.primary.contrastText,fontWeight:500,whiteSpace:"nowrap",minWidth:40},plus:{lineHeight:1},addWrapper:{display:"flex",alignItems:"center"},addTitle:{fontSize:14,marginLeft:e.spacing(2)}}}));function yn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return gn(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return gn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function gn(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r button":{minWidth:"auto",whiteSpace:"nowrap",padding:"4px 10px",marginRight:e.spacing(2),border:"1px solid #D2D9DF !important",borderRadius:"4px !important","& > .MuiTypography-root":{color:e.palette.text.primary},"& .toggle-button-icon":{marginRight:e.spacing(1)},"&.Mui-selected":{"& > .MuiTypography-root":{color:e.palette.primary.contrastText}}}},e.breakpoints.only("xs"),{flexWrap:"wrap"})}}));function Dn(){return(Dn=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var oo=Object(at.a)(eo.c)((function(e){var t=e.theme,r=e.multiline;return{"&.MuiInputBase-root":{padding:"0 !important",background:t.palette.common.white,borderRadius:4,position:"relative",border:"1px solid #CACACA",maxHeight:r?"auto":32,"&:hover":{borderColor:"#7b7b7b"},"&.Mui-focused":{borderColor:"#232323"},"&.Mui-disabled":{background:"#f6f6f6",borderColor:"#d4d4d4"},"&.MuiInputBase-readOnly":{borderStyle:"dashed"},"&.MuiInputBase-adornedEnd":{paddingRight:t.spacing(.5)},"& .MuiSvgIcon-root":{fontSize:"1rem"}},"& .MuiInputBase-input":{padding:"5px ".concat(t.spacing(2)," !important"),MozAppearance:"textfield","&::-webkit-outer-spin-button, &::-webkit-inner-spin-button":{WebkitAppearance:"none",margin:0}},"label + &":{marginTop:t.spacing(3)}}})),io=Object(at.a)(Yt.a)((function(e){return{"&.MuiFormLabel-root":{transform:"none",color:e.theme.palette.text.primary,fontSize:12,maxWidth:"100%"}}})),ao=Object(at.a)(or.a)((function(){return{marginLeft:0,marginRight:0}})),so=function(e){var t=e.label,r=e.className,n=e.fullWidth,o=void 0===n||n,i=e.helperText,a=e.errorText,s=e.docDescription,c=e.endAdornment,l=e.inputProps,p=no(e,to);return Object(te.c)(Kt.a,{variant:"standard",fullWidth:o,className:r},Object(Zn.a)(t)?null:Object(te.c)(io,{shrink:!0},t),Object(te.c)(oo,ro({endAdornment:Object(te.c)(J.a.Fragment,null,c,s&&Object(te.c)(qe.a,{docDescription:s})),fullWidth:o,inputProps:l},p)),a&&Object(te.c)(ao,{"data-testid":"".concat(null==l?void 0:l["data-testid"],"-error"),error:!0},a),i&&Object(te.c)(ao,null,i))},co=["label","items","className","fullWidth","helperText","docDescription","endAdornment","placeholder"];function lo(){return(lo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function uo(e){return(uo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var mo=Object(at.a)(Bt.a)((function(e){var t=e.theme;return{"&.MuiInputBase-root":{maxHeight:32,background:t.palette.common.white,"& .MuiSelect-select":{padding:"6px ".concat(t.spacing(2)),lineHeight:2},"&:hover":{"& .MuiOutlinedInput-notchedOutline":{borderColor:"#7b7b7b"}},"&.Mui-focused":{"& .MuiOutlinedInput-notchedOutline":{borderColor:"#232323"}},"&.Mui-disabled":{background:"#f6f6f6","& .MuiOutlinedInput-notchedOutline":{borderColor:"#d4d4d4"}},"& .MuiOutlinedInput-notchedOutline":{border:"1px solid #CACACA",borderRadius:4}},"label + &":{marginTop:t.spacing(3)}}})),fo=Object(at.a)(Yt.a)((function(e){return{"&.MuiFormLabel-root":{transform:"none",color:e.theme.palette.text.primary,fontSize:12}}})),bo=Object(at.a)(or.a)((function(){return{marginLeft:0,marginRight:0}})),ho=function(e){return"object"===uo(e)},yo=function(e){var t=e.label,r=e.items,n=void 0===r?[]:r,o=e.className,i=e.fullWidth,a=void 0===i||i,s=e.helperText,c=e.docDescription,l=e.endAdornment,p=e.placeholder,u=po(e,co);return Object(te.c)(Kt.a,{fullWidth:!0,className:o},t&&Object(te.c)(fo,null,t),Object(te.c)(mo,lo({fullWidth:a},p?{displayEmpty:!0,value:"",renderValue:function(e){if(!e)return p;var t=n.find((function(t){return(ho(t)?t.value:t)===e}));return t?ho(t)?t.label:t:e}}:{},{inputProps:{"data-testid":"".concat(u["data-testid"],"-input")},endAdornment:Object(te.c)(ar.a,{mr:1},l,c&&Object(te.c)(qe.a,{docDescription:c})),MenuProps:{PaperProps:{style:{maxHeight:300,overflowY:"auto"}}}},u),n.map((function(e){return Object(te.c)(gt.a,{key:ho(e)?e.value:e,value:ho(e)?e.value:e},ho(e)?e.label:e)}))),Object(te.c)(bo,{error:u.error},s))},go=r(45),vo=r(184),_o=function(e){var t=e.saveButtonText,r=e.isSubmitting,n=e.disabled,o=e["data-testid"],i=void 0===o?"saveButton":o,a=Object(X.b)().t;return Object(te.c)(it.a,{type:"submit",variant:"contained",color:"primary",size:"small","data-testid":i,disabled:n||r,style:{minWidth:"100px"},endIcon:r&&Object(te.c)(jt.a,{size:20,color:"primary"})},null!=t?t:a("save"))},Oo=function(e){var t=e.saveButtonText,r=e.disabled,n=e["data-testid"],o=Object(go.g)(),i=o.isSubmitting,a=o.dirty,s=o.isValid;return Object(te.c)(_o,{isSubmitting:i,disabled:!a||!s||r,saveButtonText:t,"data-testid":n})},jo=Object(n.a)()((function(e){return{paper:{width:550,maxWidth:"100%",margin:"120px auto 0 auto",backgroundColor:e.palette.background.paper,padding:e.spacing(2,4,3),outline:"none"}}})),xo=function(e){var t=e.open,r=e.handleClose,n=e.onDelete,o=e.title,i=e.notice,a=e.removeButtonText,s=Object(X.b)().t,c=jo().classes;return Object(te.c)(_t.a,{open:t,onClose:r},Object(te.c)("div",{className:c.paper,"data-testid":"deleteItemModal"},Object(te.c)(ye.a,{variant:"h5"},o),Object(te.c)("div",{style:{marginTop:"16px"}},Object(te.c)(ye.a,{variant:"subtitle1"},i)),Object(te.c)("div",{style:{marginTop:"24px",display:"flex",justifyContent:"space-between"}},Object(te.c)(it.a,{variant:"contained",color:"primary",onClick:n,"data-testid":"delete-item-button"},a),Object(te.c)(it.a,{variant:"contained",color:"secondary",onClick:r},s("cancel")))))};function wo(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ko(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ko(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ko(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Do=function(e){var t=e.initialValues,r=e.onSubmit,n=e.saveButtonText,o=e.onDelete,i=e.deleteButtonText,a=e.modalTitle,s=e.modalNotice,c=e.modalButton,l=e.children,p=e.validationSchema,u=e.hideButtons,d=void 0!==u&&u,m=e.hideCancelButton,f=e.additionalButtons,b=e.initialTouched,h=e.saveButtonTestId,y=e.onCancel,g=Object(X.b)().t;return Object(te.c)(go.d,{enableReinitialize:!0,initialValues:t,onSubmit:function(e,n){var o=Object(vo.a)(t,e);return r(e,n,o)},validationSchema:p,isInitialValid:!1,initialTouched:b},(function(e){var t=e.isSubmitting,r=e.dirty,p=e.isValid,u=Ao(e,To);return Object(te.c)(go.c,null,l(function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Ro=function(e){var t=e.name,r=e.label,n=e.onChange,o=Lo(e,$o),i=Object(X.b)().t;return Object(te.c)(go.a,{name:t},(function(e){var t,a=e.field,s=e.meta,c=null!==(t=a.value)&&void 0!==t?t:"";return Object(te.c)(so,No({fullWidth:!0,label:r,errorText:s.touched?i(s.error||""):void 0,value:c},Eo.a(["value"],a),o,{onChange:function(e){a.onChange(e),n&&n(e)}}))}))},qo=["name","label","items"];function Mo(){return(Mo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Uo=function(e){var t=e.name,r=e.label,n=e.items,o=Fo(e,qo);return Object(te.c)(go.a,{name:t},(function(e){var t=e.field,i=o.multiple&&!t.value?[]:t.value;return Object(te.c)(yo,Mo({label:r,items:n},t,o,{value:i}))}))},zo=r(473);r(509);var Bo=r(1667);function Ho(e){return(Ho="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Vo=["name","label","onChange","isSeconds"];function Wo(){return(Wo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Qo=Object(n.a)()((function(){return{root:{"& .MuiInputAdornment-root":{"& .MuiButtonBase-root.MuiIconButton-root":{marginRight:-8}}}}})),Xo=function(e){var t=e.name,r=e.label,n=e.onChange,o=e.isSeconds,i=Jo(e,Vo),a=Qo().classes;return Object(te.c)(go.a,{name:t},(function(e){var s=e.field;return Object(te.c)(Bo.a,Wo({label:r,className:a.root},s,i,{renderInput:function(e){var t=Ko(Ko({},e),{},{inputProps:Ko(Ko({},e.inputProps),{},{"data-testid":i["data-testid"]})});return(Object(te.c)(so,t))},onChange:function(e){var r=e;o&&r&&(r/=1e3),s.onChange({target:{value:r,name:t}}),n&&n({target:{value:r,name:t}})}}))}))};function Zo(e){return(Zo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ei(e,t){for(var r=0;r-1?Math.pow(1024,r+1):1})),ci(this,"convertToUnits",(function(e,r){return e/t.getDiskDataUnitMultiplier(r)})),ci(this,"convertFromUnits",(function(e,r){return e*t.getDiskDataUnitMultiplier(r)}))}))),ui=["value","onChange","format","errorText"];function di(){return(di=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var hi=function(e){var t=e.value,r=void 0===t?null:t,n=e.onChange,o=e.format,i=e.errorText,a=bi(e,ui),s="time"===o?oi:pi,c=mi(Object(Y.useState)(function(e,t,r){if(null===e)return 0;for(var n=0;n0?n-1:0}return 0}(r,s.units,s.convertToUnits)),2),l=c[0],p=c[1],u=s.units[l],d=mi(J.a.useState(null),2),m=d[0],f=d[1],b=Boolean(m),h=function(){f(null)},y=null!==r&&u?s.convertToUnits(r,u):r,g=s.units.length>1;return Object(te.c)(J.a.Fragment,null,Object(te.c)(so,di({fullWidth:!0,value:null!=y?y:"",endAdornment:u&&Object(te.c)(it.a,{size:"small",disabled:!g,onClick:function(e){f(e.currentTarget)},endIcon:g&&Object(te.c)(F.a,null)},Object(te.c)(pe.a,{variant:"subtitle1"},u)),onChange:function(e){var t=e.target.value?+e.target.value:null;n&&n(u?null!==t?s.convertFromUnits(t,u):null:t)},errorText:i,type:"number"},a)),Object(te.c)(Dt.a,{anchorEl:m,open:b,onClose:h},s.units.map((function(e,t){return Object(te.c)(gt.a,{disabled:l===t,key:t,onClick:function(){return e=t,r=s.units[e],null!==y&&n&&n(s.convertFromUnits(y,r)),p(e),void h();var e,r}},e)}))))},yi=["name"],gi=["onChange"];function vi(){return(vi=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Oi=function(e){var t=e.name,r=_i(e,yi),n=Object(X.b)().t;return Object(te.c)(go.a,{name:t},(function(e){var o=e.field,i=e.form,a=e.meta,s=(o.onChange,_i(o,gi));return Object(te.c)(hi,vi({onChange:function(e){i.setFieldValue(t,e)},errorText:a.touched?n(a.error||""):void 0},r,s))}))};function ji(e){return(ji="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var xi=["name","label","docDescription","checked"];function wi(){return(wi=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Ii=function(e){var t=e.name,r=e.label,n=e.docDescription,o=e.checked,i=Ti(e,xi);return Object(te.c)(go.a,{name:t},(function(e){var t=e.field;return Object(te.c)(nt,{control:Object(te.c)(Qt,wi({color:"primary",checked:Zn.a(o)?t.value:o,inputProps:Si(Si({},i.inputProps),{},{"data-testid":i["data-testid"]})},t,Eo.a(["data-testid"],i))),label:r,docDescription:n})}))};function Ci(e){return(Ci="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Ai=["name","label","items","multiple","placeholder","freeSolo","disabled","error","helperText"];function Di(){return(Di=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Ri=Object(n.a)()((function(e){return{textField:{background:e.palette.common.white,marginTop:"9px !important"}}})),qi=function(e){var t=e.name,r=e.label,n=e.items,o=e.multiple,i=e.placeholder,a=e.freeSolo,s=e.disabled,c=e.error,l=(e.helperText,Li(e,Ai)),p=Ri().classes;return Object(te.c)(go.a,{name:t},(function(e){var u,d=e.field,m=e.form,f=d.value,b=null!=f?f:[],h=null!==(u=d.value)&&void 0!==u?u:"",y=o?b:h;return Object(te.c)(J.a.Fragment,null,Object(te.c)(io,{shrink:!0},r),Object(te.c)(Et.a,Di({fullWidth:!0,multiple:o,options:n,freeSolo:a,size:"small",renderInput:function(e){return Object(te.c)(Ee.a,Di({className:p.textField,placeholder:i},e,{error:!!c,helperText:c?"".concat(t," incorrect"):"",inputProps:$i($i({},e.inputProps),{},{"data-testid":"".concat(l["data-testid"],"-input")})}))}},d,{value:y,onChange:function(e,r){m.setFieldValue(t,r)},disabled:s},l)))}))},Mi=["value","onChange","checked"];function Fi(){return(Fi=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var zi=function(e){var t=e.name,r=e["data-testid"],n=e.label,o=e.value,i=e.allowUndefined,a=void 0!==i&&i;return Object(te.c)(go.a,{name:t},(function(e){var i=e.field,s=e.form,c=i.value,l=(i.onChange,i.checked,Ui(i,Mi)),p=i.value===o||a&&void 0===i.value;return Object(te.c)(nt,{control:Object(te.c)(ot.a,Fi({inputProps:{"data-testid":r},checked:p,onChange:function(e,r){r&&s.setFieldValue(t,o)},value:null!=c?c:""},l)),label:n})}))};Object(n.a)()((function(e){return{root:{display:"flex",gap:e.spacing()}}}));var Bi=Object(n.a)()((function(){return{hr:{border:"none",backgroundColor:"#edf0f2",height:1}}})),Hi=function(e){var t=e.mt,r=void 0===t?2:t,n=e.mb,o=void 0===n?2:n,i=Bi().classes;return Object(te.c)(ar.a,{mt:r,mb:o,width:"100%"},Object(te.c)("hr",{className:i.hr}))},Vi=r(1551),Wi=["value","textColor"];function Gi(){return(Gi=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Yi=Object(n.a)()((function(){return{labelWrapper:{top:0,left:0,bottom:0,right:0,position:"absolute",display:"flex",alignItems:"center",justifyContent:"center"}}})),Ji=function(e){var t=e.value,r=e.textColor,n=Ki(e,Wi),o=Yi().classes;return Object(te.c)(ar.a,{position:"relative",display:"inline-flex"},Object(te.c)(Vi.a,Gi({variant:"determinate",value:t},n)),Object(te.c)(ar.a,{className:o.labelWrapper},Object(te.c)(ye.a,{variant:"subtitle2",component:"div",fontSize:10,color:r},"".concat(Math.round(t),"%"))))},Qi=function(){return Object(te.c)(Pe.a,{width:"100%",textAlign:"center",my:2},Object(te.c)(jt.a,{size:30,color:"primary"}))},Xi=function(e){var t=e.isLoading,r=e.children;return Object(te.c)(Y.Fragment,null,t&&Object(te.c)(Qi,null),!t&&r)},Zi=r(337),ea=r.n(Zi);function ta(){return(ta=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var La=function(e){var t=e.value,r=e.startAdornmentLabel,n=e.color,o=e.link,i=e.hideEndAdornment,a=Na(e,Ea),s=Da().classes,c=Aa()();return Object(te.c)(so,$a({endAdornment:!i&&(o?Object(te.c)(Pt,{to:"".concat(o),component:Or.b},Object(te.c)(st.b,{size:"small",sx:{marginRight:c.spacing(1),color:"black"}},Object(te.c)(Ia.a,null))):Object(te.c)(le,{value:t,buttonProps:{className:s.copyButton}})),value:t,startAdornment:r?Object(te.c)(nr.a,{label:Object(te.c)(Pe.a,{display:"flex",alignItems:"center"},Object(te.c)("span",{className:"".concat(s.chipIcon," ").concat(n)},Object(te.c)(K.m,null))," ",r),className:"".concat(s.chip," ").concat(n)}):""},a))},Ra=r(319);function qa(e){return(qa="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ma(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==qa(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==qa(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===qa(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Fa(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Ua(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ua(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ua(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&e.field&&(i.includes(e.field)&&(a=e.field),i.includes("-".concat(e.field))&&(a="-".concat(e.field))),{children:Object(te.c)(J.a.Fragment,null,Object(te.c)(Xn,{className:l.radioButtons,label:e.label,radioButtons:e.radioButtons,onChange:function(t,r){return p(r,e.field)},value:null!==(o=a)&&void 0!==o?o:""}),t&&n===r.length-1&&Object(te.c)(Pe.a,{width:"100%",mt:2},Object(te.c)(it.a,{variant:"contained",color:"secondary",size:"small",onClick:u,fullWidth:!0},c("sort.reset"))))}}))}),[r]);return Object(te.c)(Yn,{label:"".concat(c("sortBy"),":"),buttonProps:{startIcon:Object(te.c)("span",{className:l.sortIcon},Object(te.c)(K.o,null)),endIcon:Object(te.c)(Xa,null),variant:"outlined",color:"inherit",className:l.dropdownButton,fullWidth:s},menuWidth:n,dropdownItems:d})};function es(e){return(es="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ts(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==es(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==es(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===es(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var rs=Object(n.a)()((function(e){return{text:ts(ts({},e.breakpoints.down("lg"),{fontSize:22}),"fontSize",26)}})),ns=function(){var e=rs().classes;return Object(te.c)(Pe.a,{display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",position:"absolute",top:0,left:0,right:0,bottom:0,p:2},Object(te.c)(pe.a,{className:e.text},"Something went wrong. We're aware of the problem and solving it now. Please try again later."))};r(1657),Object(n.a)()((function(){return{markDown:{p:{fontWeight:400},strong:{fontWeight:500}}}})),Object(n.a)()((function(){return{container:{display:"flex",flexDirection:"column",gap:"8px"},label:{marginBottom:"4px"},fileRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",gap:"8px"},uploadButton:{maxWidth:"150px",maxHeight:"32px",marginLeft:"auto",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},helperText:{marginTop:"8px"},errorText:{marginTop:"8px"}}}));r.d(t,"vc",(function(){return u.a})),r.d(t,"rc",(function(){return d.a})),r.d(t,"xc",(function(){return o.a})),r.d(t,"qc",(function(){return i.a})),r.d(t,"z",(function(){return s.a})),r.d(t,"fc",(function(){return a.a})),r.d(t,"uc",(function(){return n.a})),r.d(t,"Hb",(function(){return p.a})),r.d(t,"wc",(function(){return c.a})),r.d(t,"tc",(function(){return l.a})),r.d(t,"B",(function(){return f.a})),r.d(t,"ob",(function(){return h.a})),r.d(t,"sc",(function(){return K.u})),r.d(t,"N",(function(){return g.a})),r.d(t,"h",(function(){return _.a})),r.d(t,"e",(function(){return j.a})),r.d(t,"q",(function(){return w.a})),r.d(t,"r",(function(){return S.a})),r.d(t,"M",(function(){return T.a})),r.d(t,"nc",(function(){return C.a})),r.d(t,"mc",(function(){return D.a})),r.d(t,"sb",(function(){return $.a})),r.d(t,"w",(function(){return L.a})),r.d(t,"Xb",(function(){return q.a})),r.d(t,"tb",(function(){return F.a})),r.d(t,"ub",(function(){return z.a})),r.d(t,"j",(function(){return H.a})),r.d(t,"D",(function(){return V.a})),r.d(t,"K",(function(){return G.a})),r.d(t,"Wb",(function(){return fe})),r.d(t,"ac",(function(){return _e})),r.d(t,"bc",(function(){return ve})),r.d(t,"cc",(function(){return Ae})),r.d(t,"dc",(function(){return Xe})),r.d(t,"l",(function(){return Pe.a})),r.d(t,"db",(function(){return Pe.b})),r.d(t,"Q",(function(){return nt})),r.d(t,"Ob",(function(){return ot.a})),r.d(t,"n",(function(){return it.a})),r.d(t,"Yb",(function(){return ct})),r.d(t,"L",(function(){return lt})),r.d(t,"d",(function(){return pt})),r.d(t,"jc",(function(){return Z.a})),r.d(t,"vb",(function(){return bt})),r.d(t,"hb",(function(){return be.a})),r.d(t,"x",(function(){return ht.a})),r.d(t,"Mb",(function(){return yt.a})),r.d(t,"Fb",(function(){return gt.a})),r.d(t,"f",(function(){return vt.a})),r.d(t,"kc",(function(){return pe.a})),r.d(t,"Gb",(function(){return _t.a})),r.d(t,"lb",(function(){return st.b})),r.d(t,"k",(function(){return st.a})),r.d(t,"kb",(function(){return he.a})),r.d(t,"y",(function(){return Ot.a})),r.d(t,"u",(function(){return jt.a})),r.d(t,"xb",(function(){return Pt})),r.d(t,"Nb",(function(){return Tt.a})),r.d(t,"E",(function(){return It.a})),r.d(t,"G",(function(){return Ct.a})),r.d(t,"I",(function(){return At.a})),r.d(t,"Eb",(function(){return Dt.a})),r.d(t,"g",(function(){return Et.a})),r.d(t,"wb",(function(){return $t.a})),r.d(t,"yb",(function(){return Nt.a})),r.d(t,"a",(function(){return Lt.a})),r.d(t,"b",(function(){return Rt.a})),r.d(t,"c",(function(){return qt.a})),r.d(t,"Cb",(function(){return Mt.a})),r.d(t,"qb",(function(){return Ft.a})),r.d(t,"zb",(function(){return Ut.a})),r.d(t,"Bb",(function(){return zt.a})),r.d(t,"Tb",(function(){return Gt})),r.d(t,"P",(function(){return Kt.a})),r.d(t,"rb",(function(){return Yt.a})),r.d(t,"s",(function(){return Qt})),r.d(t,"Ab",(function(){return Xt.a})),r.d(t,"i",(function(){return Zt.a})),r.d(t,"J",(function(){return er.a})),r.d(t,"F",(function(){return tr.a})),r.d(t,"H",(function(){return rr.a})),r.d(t,"t",(function(){return nr.a})),r.d(t,"S",(function(){return or.a})),r.d(t,"Zb",(function(){return ir.a})),r.d(t,"p",(function(){return gr})),r.d(t,"m",(function(){return Dr})),r.d(t,"Db",(function(){return ln})),r.d(t,"O",(function(){return pn.a})),r.d(t,"Kb",(function(){return Pn})),r.d(t,"hc",(function(){return En})),r.d(t,"ic",(function(){return $n})),r.d(t,"A",(function(){return Bn})),r.d(t,"Ub",(function(){return so})),r.d(t,"W",(function(){return Do})),r.d(t,"bb",(function(){return Ro})),r.d(t,"Z",(function(){return Uo})),r.d(t,"ab",(function(){return zo.a})),r.d(t,"V",(function(){return Xo})),r.d(t,"cb",(function(){return Oi})),r.d(t,"U",(function(){return Ii})),r.d(t,"T",(function(){return qi})),r.d(t,"X",(function(){return zi})),r.d(t,"Y",(function(){return Oo})),r.d(t,"ib",(function(){return Hi})),r.d(t,"v",(function(){return Ji})),r.d(t,"Sb",(function(){return Xi})),r.d(t,"jb",(function(){return qe.a})),r.d(t,"Rb",(function(){return ra})),r.d(t,"o",(function(){return oa})),r.d(t,"R",(function(){return ia})),r.d(t,"Ib",(function(){return ha})),r.d(t,"oc",(function(){return ga})),r.d(t,"Jb",(function(){return ja})),r.d(t,"gc",(function(){return xa})),r.d(t,"eb",(function(){return wa.a})),r.d(t,"fb",(function(){return wa.b})),r.d(t,"gb",(function(){return wa.c})),r.d(t,"pc",(function(){return Nn.a})),r.d(t,"Lb",(function(){return ka})),r.d(t,"C",(function(){return xo})),r.d(t,"pb",(function(){return Pa})),r.d(t,"ec",(function(){return La})),r.d(t,"lc",(function(){return Ba})),r.d(t,"nb",(function(){return Wa.a})),r.d(t,"mb",(function(){return Ga.a})),r.d(t,"Qb",(function(){return Ka})),r.d(t,"Vb",(function(){return Za})),r.d(t,"Pb",(function(){return ns}))},10:function(e){e.exports=JSON.parse('{"a":{"schemas":{"ts_pid":{"maximum":8191,"minimum":0,"type":"integer"},"loglevel":{"type":"string","description":"The level of logging according to event importance. Several values separated by comma.","example":"debug","oneOf":[{"title":"None","const":"none","description":"Logging disabled.","x-api-deny":["watcher-admin"]},{"title":"Debug","const":"debug","description":"Messages of all types are logged."},{"title":"Info","const":"info","description":"Log info messages."},{"title":"Notice","const":"notice","description":"Log notices.","x-api-deny":["watcher-admin"]},{"title":"Warning","const":"warning","description":"Log warnings."},{"title":"Error","const":"error","description":"Log errors."},{"title":"Alert","const":"alert","description":"Log alerts.","x-api-deny":["watcher-admin"]},{"title":"Critical","const":"critical","description":"Log critical messages."}]},"collection_response":{"type":"object","properties":{"estimated_count":{"description":"Estimated total number of records for the query (regardless of the cursors).\\n","type":"integer","example":5},"next":{"description":"Next cursor: a properly encoded equivalent of offset allowing to read the next bunch of items.\\nLearn more in [Flussonic API design principles](https://flussonic.com/doc/rest-api-guidelines/#api-http-collections-cursor).\\n","example":"JTI0cG9zaXRpb25fZ3Q9MA==","type":"string"},"prev":{"description":"Previous cursor: a properly encoded equivalent of offset allowing to read the previous bunch of items.\\nLearn more in [Flussonic API design principles](https://flussonic.com/doc/rest-api-guidelines/#api-http-collections-cursor).\\n","example":"JTI0cG9zaXRpb25fbHQ9MSYlMjRyZXZlcnNlZD10cnVl","type":"string"},"timing":{"description":"An object with a list of different timings measured during this API call.","type":"object"}}},"error_response":{"type":"object","properties":{"errors":{"description":"List of structured errors","type":"array","items":{"$ref":"#/components/schemas/error"}},"error":{"type":"string","deprecated":true,"x-delete-at":23.09,"x-private":true,"description":"This is how flussonic serves errors right now. To be removed as we migrate to new format\\n"}}},"error":{"type":"object","properties":{"id":{"type":"string","description":"a unique identifier for this particular occurrence of the problem\\n"},"status":{"type":"string","description":"the HTTP status code applicable to this problem, expressed as a string value\\n"},"code":{"type":"string","description":"an application-specific error code, expressed as a string value\\n"},"title":{"type":"string","description":"a short, human-readable summary of the problem that SHOULD NOT change from\\noccurrence to occurrence of the problem, except for purposes of localization\\n"},"source":{"description":"an object containing references to the source of the error\\n","type":"object","properties":{"pointer":{"type":"string","description":"a JSON Pointer [RFC6901] to the associated entity in the request document\\n[e.g. `\\"/data\\"` for a primary data object, or `\\"/data/attributes/title\\"` for a specific attribute].\\n"},"parameter":{"type":"string","description":"a string indicating which URI query parameter caused the error."}}},"meta":{"type":"object","description":"a meta object containing non-standard meta-information about the error.\\n","additionalProperties":{"type":"string"}}}},"thumbnails_spec":{"type":"object","properties":{"url":{"description":"*Flussonic* takes a thumbnail from the specified URL on each keyframe.\\nMay reduce CPU usage on IP cameras.\\n","type":"string","example":"http://10.115.23.45/isapi/thumbnail.jpg"},"enabled":{"description":"Whether to generate thumbnails from the video stream.","oneOf":[{"$ref":"#/components/schemas/thumbnails_enabled_spec"}],"default":true},"sizes":{"description":"What sizes will be used for thumbnails generation.","type":"array","items":{"$ref":"#/components/schemas/thumbnails_size_spec"},"default":[]}}},"thumbnails_enabled_spec":{"oneOf":[{"type":"boolean","enum":[true,false],"description":"Configures thumbnails behaviour.\\n- true : \\n\\n In case of Stream: \\n Thumbnails are created and stored in DVR during the recording. If thumbnail is requested then it will be returned from DVR.\\n\\n In case of VOD:\\n Thumbnails are created and stored in VOD location at thumbnails folder during the VOD opening if they are not created yet.\\n If VOD location is `readonly` then it will be used only for thumbnails searching. Nothing will be created and stored. \\n\\n If thumbnail is requested then it will be returned from thumbnails folder in VOD location.\\n\\n- false : thumbnails are not stored at all. If thumbnail is requested then 403 \'Forbidden\' error will be returned.\\n"},{"type":"string","enum":["ondemand"],"description":"- ondemand : thumbnails are not stored at all. If thumbnail is requested then it will be generated from corresponding video frame.\\n"}]},"thumbnails_size_spec":{"type":"object","properties":{"width":{"type":"integer","description":"The thumbnail width."},"height":{"type":"integer","description":"The thumbnail height."}}},"session_key":{"anyOf":[{"oneOf":[{"title":"IP","const":"ip","description":"IP address"},{"title":"Name","const":"name","description":"Stream name"},{"title":"Proto","const":"proto","description":"Protocol"},{"title":"Token","const":"token","description":"Token"}],"type":"string"},{"allOf":[{"$ref":"#/components/schemas/session_key_query"}]}]},"session_status":{"oneOf":[{"title":"Establishing","const":"establishing"},{"title":"Running","const":"running"},{"title":"Stalling","const":"stalling"},{"title":"Finished","const":"finished"}],"type":"string"},"protocol":{"type":"string","oneOf":[{"title":"copy","const":"copy"},{"title":"fake","const":"fake"},{"title":"RTP","const":"rtp"},{"title":"RTMP","const":"rtmp"},{"title":"RTMPS","const":"rtmps"},{"title":"RTMPE","const":"rtmpe"},{"title":"RTSP","const":"rtsp"},{"title":"RTSP-UDP","const":"rtsp-udp"},{"title":"RTSP2","const":"rtsp2"},{"title":"RTSPS","const":"rtsps"},{"title":"EST","const":"est"},{"title":"SRT","const":"srt"},{"title":"MSE-LD","const":"mseld"},{"title":"SHOUTcast","const":"shoutcast"},{"title":"SHOUTcasts","const":"shoutcasts"},{"title":"WebRTC","const":"webrtc"},{"title":"HLS","const":"hls"},{"title":"HLSS","const":"hlss"},{"title":"HLS2","const":"hls2"},{"title":"HLSS2","const":"hlss2"},{"title":"LL-HLS","const":"llhls"},{"title":"CMAF","const":"cmaf"},{"title":"DASH","const":"dash"},{"title":"MSS","const":"mss"},{"title":"M4S","const":"m4s"},{"title":"M4SS","const":"m4ss"},{"title":"M4F","const":"m4f"},{"title":"M4FS","const":"m4fs"},{"title":"HTTP MPEG-TS","const":"tshttp"},{"title":"HTTPS MPEG-TS","const":"tshttps"},{"title":"TCP MPEG-TS","const":"tstcp"},{"title":"SSL MPEG-TS","const":"tsssl"},{"title":"FLV","const":"flv"},{"title":"annexB","const":"annexb"},{"title":"UDP","const":"udp"},{"title":"UDP1","const":"udp1"},{"title":"UDP2","const":"udp2"},{"title":"UDP3","const":"udp3"},{"title":"UDP MPTS","const":"mpts-udp"},{"title":"HTTP MPTS","const":"mpts-http"},{"title":"HTTPS MPTS","const":"mpts-https"},{"title":"DVB MPTS","const":"mpts-dvb"},{"title":"DVB","const":"dvb"},{"title":"Decklink","const":"decklink"},{"title":"DekTec","const":"dektec"},{"title":"DekTec ASI","const":"dektec-asi"},{"title":"v4l","const":"v4l"},{"title":"v4l2","const":"v4l2"},{"title":"Playlist","const":"playlist"},{"title":"Mixer","const":"mixer"},{"title":"Mosaic","const":"mosaic"},{"title":"Mosaic2","const":"mosaic2"},{"title":"Timeshift","const":"timeshift"},{"title":"File","const":"file"},{"title":"Download","const":"download"},{"title":"MBR","const":"mbr"},{"title":"MP4","const":"mp4"},{"title":"Logo","const":"logo"},{"title":"JPEG","const":"jpeg"},{"title":"MJPEG","const":"mjpeg"},{"title":"H.323","const":"h323"},{"title":"Ad injector","const":"ad_injector"},{"title":"ffmpeg","const":"ffmpeg"},{"title":"Transponder","const":"transponder"},{"title":"API","const":"api"},{"title":"JSON manifest","const":"json_manifest"},{"title":"Player","const":"player"},{"title":"NDI","const":"ndi"},{"title":"FRIP","const":"frip"},{"title":"ST2110","const":"st2110"}]},"auth_response_v1":{"type":"object","properties":{"ad_inject":{"description":"Configuration of injecting advertising video clips into played stream.","type":"object","properties":{"v":{"description":"The version of ad insertion mechanism used by Flussonic: \\n\\n* `v=1` is an extension of the authorization system, it works with HLS and DASH protocols only. \\nThe ad is inserted to the manifest (playlist), so plugins such as AdBlock can detect and block the advertisement.\\n\\n* `v=2` (default) provides more resistance to ad blockers. \\nThe ad replaces the stream segments within the play session so that it is impossible to distinguish \\nwhether it is a main stream segment or an ad segment. \\nIt also allows you to customize the advertisements for a particular user. \\nBesides, it works with a single-period as well as a multi-period DASH.\\n","type":"integer","default":2,"example":2},"preroll":{"description":"The paths to the pre-roll advertising files in a VOD location.\\n\\nAll the pre-roll files are played before switching to the main stream:\\n\\n* live main stream is *replaced* by the pre-roll so the content may be overlapped by the ads.\\n* VOD main stream is entirely played after the pre-roll without overlapping like in a playlist.\\n\\nThe order of pre-roll playback is defined by the order of values in the array.\\n","type":"array","items":{"type":"string"},"example":["ad_vod/preroll1.mp4"]},"midroll":{"description":"The paths to the mid-roll advertising files in a VOD location.\\n\\nYou may choose the mid-roll mode using the `midroll_insert_by` parameter.\\n\\nThe order of mid-roll playback is defined by the order of values in the array.\\n","type":"array","items":{"type":"string"},"example":["ad_vod/midroll1.mp4","ad_vod/midroll2.mp4"]},"midroll_insert_by":{"description":"When to perform midrolls.\\n","type":"string","oneOf":[{"title":"Interval","const":"interval","description":"All ad files are played in the specified order once every `midroll_interval`.\\n"},{"title":"Splicing","const":"splicing","description":"You can use this option if your stream has SCTE-35 or SCTE-104 markers.\\n\\nThe ad files are played in the specified order (looped, from the beginning of the array) \\nuntil a marker for switching to the main stream is received,\\nor until the end of the advertisement slot (whichever comes first).\\n"}],"default":"interval"},"midroll_interval":{"description":"The interval between showing mid-roll advertisement files. \\nUse with `midroll_insert_by=interval` only.\\n","type":"integer","example":180},"midroll_program_id":{"description":"You can use this option to choose SCTE-35 or SCTE-104 markers having this program_id only for this mid-roll.\\nUse with `midroll_insert_by=splicing` only.\\n","type":"integer","example":1}}},"allowed_dvr_ranges":{"type":"array","description":"Permitted DVR intervals.\\nBy default when no allowed_dvr_ranges defined all archive is available for requests.\\nEmpty list means no access.\\n","items":{"type":"object","description":"\'opened_at\' or \'closed_at\' can be omitted (not both), which means open interval.\\n","properties":{"opened_at":{"type":"integer","format":"utc","description":"Start of the interval, inclusive.\\n","example":1710010000,"x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000},"closed_at":{"type":"integer","format":"utc","description":"End of the interval, exclusive.\\n","example":1710020000,"x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000}}}},"label":{"type":"string","description":"A label that can be used to mark a session.","x-private":true,"example":"watcher_shared_token"}}},"playback_headers":{"type":"object","properties":{"playback":{"type":"string","description":"Playback type for which the HTTP headers apply.","oneOf":[{"title":"Live","const":"live"},{"title":"DVR","const":"dvr"}],"example":"live"},"protocols":{"description":"Configuration to allow/forbid headers for various playback protocols.","allOf":[{"$ref":"#/components/schemas/play_protocols_spec"}]},"headers":{"additionalProperties":{"type":"string","minLength":1,"maxLength":64},"type":"object","maxItems":10,"x-key-type":"string","description":"HTTP headers in name-value format for manifest requests.","example":{"Cache-Control":"max-age=3600"}},"segment_headers":{"additionalProperties":{"type":"string","minLength":1,"maxLength":64},"type":"object","maxItems":10,"x-key-type":"string","description":"HTTP headers in name-value format for segment requests.","example":{"Cache-Control":"max-age=3600"}}}},"frame_video_codec":{"type":"string","oneOf":[{"title":"H.264","const":"h264"},{"title":"HEVC (H.265)","const":"hevc"},{"title":"MP2V","const":"mp2v"},{"title":"VP9","const":"vp9","deprecated":true,"x-delete-at":23.09},{"title":"MJPEG","const":"mjpeg"},{"title":"Screen","const":"screen"},{"title":"JPEG","const":"jpeg"},{"title":"AV1","const":"av1"}]},"frame_audio_codec":{"type":"string","oneOf":[{"title":"AAC","const":"aac","x-api-allow":["watcher-client","watcher-admin"]},{"title":"MP3","const":"mp3"},{"title":"MP2A","const":"mp2a"},{"title":"Opus","const":"opus"},{"title":"AC3","const":"ac3"},{"title":"EAC3","const":"eac3"},{"title":"PCMA","const":"pcma"},{"title":"PCMU","const":"pcmu"}]},"frame_text_codec":{"type":"string","oneOf":[{"title":"TTXT","const":"ttxt"},{"title":"Text","const":"text"},{"title":"WVTT","const":"wvtt"},{"title":"TTML","const":"ttml"},{"title":"Subtitle","const":"subtitle"},{"title":"ID3T","const":"id3t"},{"title":"ONVIF","const":"onvif"},{"title":"TX3G","const":"tx3g"}]},"frame_raw_codec":{"type":"string","oneOf":[{"title":"YUV","const":"yuv"},{"title":"UYVY422","const":"uyvy422"},{"title":"YUYV422","const":"yuyv422"},{"title":"YUV422p10","const":"yuv422p10"},{"title":"ARGB","const":"argb"},{"title":"RGB48","const":"rgb48"},{"title":"V210","const":"v210"},{"title":"PCM","const":"pcm"}]},"frame_audio_raw_codec":{"type":"string","oneOf":[{"const":"pcm"}]},"frame_app_codec":{"oneOf":[{"title":"MPEG-TS","const":"mpegts"},{"title":"Object","const":"object"},{"title":"EIT","const":"eit"},{"title":"SCTE-27","const":"scte27"},{"title":"SCTE-35","const":"scte35"},{"title":"KLV","const":"klv"},{"title":"Empty","const":"empty"}],"type":"string"},"frame_codec":{"anyOf":[{"$ref":"#/components/schemas/frame_video_codec"},{"$ref":"#/components/schemas/frame_audio_codec"},{"$ref":"#/components/schemas/frame_raw_codec"},{"$ref":"#/components/schemas/frame_text_codec"},{"$ref":"#/components/schemas/frame_app_codec"},{"type":"string","readOnly":true,"x-private":true,"description":"We will show recieved codec, but it could not be configured."}]},"frame_content":{"type":"string","oneOf":[{"title":"Audio","const":"audio"},{"title":"Video","const":"video"},{"title":"Text","const":"text"},{"title":"Metadata","const":"metadata"},{"title":"Application","const":"application"}]},"frame_video_pix_fmt":{"type":"string","oneOf":[{"title":"YUV420P","const":"yuv420p"},{"title":"YUVJ420P","const":"yuvj420p"},{"title":"YUV422P","const":"yuv422p"},{"title":"YUV444P","const":"yuv444p"},{"title":"YUV420P10","const":"yuv420p10"},{"title":"YUV422P10","const":"yuv422p10"},{"title":"YUV444P10","const":"yuv444p10"},{"title":"YUV420P12","const":"yuv420p12"},{"title":"YUV422P12","const":"yuv422p12"},{"title":"YUV444P12","const":"yuv444p12"},{"title":"Gray8","const":"gray8"},{"title":"Gray10","const":"gray10"},{"title":"Gray12","const":"gray12"},{"title":"NV12","const":"nv12"},{"title":"P016","const":"p016"},{"title":"V210","const":"v210"},{"title":"UYVY422","const":"uyvy422"},{"title":"YUYV422","const":"yuyv422"},{"title":"RGB48","const":"rgb48"},{"title":"ARGB","const":"argb"}]},"track_info":{"oneOf":[{"$ref":"#/components/schemas/track_info_video"},{"$ref":"#/components/schemas/track_info_audio"},{"$ref":"#/components/schemas/track_info_text"},{"$ref":"#/components/schemas/track_info_metadata"},{"$ref":"#/components/schemas/track_info_application"}],"discriminator":{"propertyName":"content","mapping":{"video":"#/components/schemas/track_info_video","audio":"#/components/schemas/track_info_audio","text":"#/components/schemas/track_info_text","metadata":"#/components/schemas/track_info_metadata","application":"#/components/schemas/track_info_application"}},"x-record-definition":"#/components/schemas/track_info_full"},"track_info_base":{"type":"object","properties":{"track_id":{"description":"Track identifier assigned by Flussonic.","anyOf":[{"type":"integer"},{"type":"string"}],"example":"v1"},"frame_duration":{"description":"For video track, it is the time between the beginning of a frame and the beginning of the next frame.\\n\\nThis parameter is important for some protocols. Normally, frame duration is a difference between timestamps of two neighbouring frames.\\nHowever, sometimes (when the connection is broken) video breakups are possible.\\nAs result, the delta between two consequent frame timestamps will not be equal to the frame duration.\\nThis situation is considered as a frame gap and is handled differently across different protocols.\\n","type":"number","format":"ticks","x-format-description":"ticks"},"avg_fps":{"description":"Actual average FPS - the number of frames diplayed per second (calculated for the last 200 frames).\\nThe higher FPS is, the smoother the video playback is. \\nUsually, standard values of FPS for films and video are used in different countries (for example, in Russia and Europe it is 25 FPS).\\n","type":"number","x-notice":"calculated fps for statistic"},"bandwidth":{"description":"Bandwidth necessary to transfer this track.\\nThis is slightly grater than bitrate because transport (e.g. MPEG TS) adds some overhead\\n","type":"integer","format":"speed","example":2600,"x-format-description":"speed"}}},"track_info_base_configurable":{"type":"object","required":["content"],"properties":{"content":{"description":"Content of the track (audio, video, or text).","allOf":[{"$ref":"#/components/schemas/frame_content"}],"x-api-allow":["smartcam","iris-hal"]},"title":{"description":"Human-readable localized title of the track.","type":"string","x-notice":"Human-readable localized title for HDS/HLS","example":"Video1"},"bitrate":{"description":"Bitrate of the track in kbit/s.\\nWhen using sdtv/hdtv/uhdtv transcoder target, for video tracks\\nthis field sets the desired transport bandwidth instead of raw video bitrate.\\n","type":"integer","format":"speed","example":2543,"x-api-allow":["smartcam","iris-hal"],"x-format-description":"speed"},"pid":{"description":"This parameter sets PIDs values for outgoing MPEG-TS streams.\\nPID identifies separate data stream inside the multiplexed MPEG-TS stream.\\nIt is possible to set PID values for PMT, SDT, video, and audio tracks.\\nTracks are numbered starting from one. The code a1=123 sets a PID value for the first audio track.\\n\\nIt is possible to set the base index for the tracks of a certain type using the 0 (zero) index.\\nFor example, t0=100 sets PID=101 for the first track, 102 for the second, and so on.\\nNumbers can be given in decimal form (by default) or hexadecimal with 16# prefix.\\n","allOf":[{"$ref":"#/components/schemas/ts_pid"}]}}},"track_info_video":{"allOf":[{"$ref":"#/components/schemas/track_info_base"},{"$ref":"#/components/schemas/track_info_base_configurable"},{"type":"object","properties":{"codec":{"description":"Codec of the track. Different codecs do **not** get the same track.","allOf":[{"$ref":"#/components/schemas/frame_codec"}],"example":"h264","x-api-allow":["smartcam","iris-hal"]}}},{"$ref":"#/components/schemas/track_info_video_specific"},{"$ref":"#/components/schemas/track_info_video_configurable"}]},"track_info_video_specific":{"type":"object","properties":{"last_gop":{"description":"Last GOP size (expressed in number of frames).\\nThis parameter is used to monitor the quality of encoding: normally, average GOP size should be equal to the last GOP size.\\nIf this value is floating, this means that your transcoder is working in a flexible GOP size mode and some players may have problems.\\nThis is not acceptable by most ABR usecases and it will not pass DVB validation protocol.\\n","type":"integer","example":28},"avg_gop":{"type":"integer","description":"Average GOP size (expressed in number of frames) of the last 1000-2000 frames.\\nThis parameter is used to monitor the quality of encoding: normally, average GOP size should be equal to the last GOP size.\\nIf this value is floating, this means that your transcoder is working in flexible GOP size mode and some players may have problems.\\nThis is not acceptable by most ABR usecases and it will not pass DVB validation protocol.\\n","example":25},"length_size":{"enum":[2,4],"default":4,"type":"integer","x-notice":"H264 private option","description":"The size of the length field for H264 bitstream without start codes."},"is_progressive":{"description":"Indicates if progressive scanning method is used for all frames of the track\\n","type":"boolean","default":true},"closed_captions":{"description":"Parameters of closed captions.","items":{"allOf":[{"$ref":"#/components/schemas/closed_captions"}]},"type":"array","default":[]}}},"track_info_video_configurable":{"type":"object","properties":{"width":{"description":"The picture width in pixels on the display where it will be played by a player.\\nIf you need to insert a web-player into a web page, use this value for choosing the player size.\\n","type":"integer","format":"pixels","x-api-allow":["smartcam"],"x-format-description":"pixels"},"height":{"description":"The picture height in pixels on the display where it will be played by a player.\\nIf you need to insert a web-player into a web page, use this value for choosing the player size.\\n","type":"integer","format":"pixels","x-api-allow":["smartcam"],"x-format-description":"pixels"},"fps":{"description":"Frame rate (frames per second) - the speed at which a sequence of images is displayed on a screen.\\nHigher frame rates capture more images per second, which makes for smoother video.\\nThe standard frame rate for color television in the Phase Alternating Line (PAL) format is 25 fps.\\nThe standard frame rate for color television in the National Television System Committee (NTSC) format is 29,97 fps\\n(a little bit lower than the original frame rate of black and white NTSC television, equal to 30 fps.)\\nIf interlaced TV is used, two fields of each frame (with odd-numbered lines and with even-numbered lines) are displayed consequently,\\nbut the frame rate is actually not doubled (50 half-frames are still equal to 25 original frames). \\n","type":"number","x-api-allow":["smartcam"]},"pix_fmt":{"allOf":[{"$ref":"#/components/schemas/frame_video_pix_fmt"}],"default":"yuv420p","description":"The color model of the video."},"num_refs_frames":{"type":"integer","maximum":32,"minimum":0,"description":"The number of I-frames to be used for encoding."},"sar_width":{"description":"The first number in SAR. SAR is the ratio of the width of the display video representation to the width of the pixel representation.\\nSAR is used for creating non-anamorphic video from anamorphic video.\\n","default":1,"type":"integer","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-options_sar"}},"sar_height":{"description":"The second number in SAR. SAR is the ratio of the width of the display video representation to the width of the pixel representation.\\nSAR is used for creating non-anamorphic video from anamorphic video.\\n","default":1,"type":"integer","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-options_sar"}},"pixel_width":{"description":"The picture width in pixels of the original video before transcoding.","type":"integer","format":"pixels","x-format-description":"pixels"},"pixel_height":{"description":"The picture width in pixels of the original video before transcoding.","type":"integer","format":"pixels","x-format-description":"pixels"},"level":{"type":"string","description":"A set of constraints that indicate a degree of required decoder performance.\\nThis parameter is used for compatibility with old devices.\\n","x-api-allow":["smartcam"]},"profile":{"description":"A specific codec-dependent profile of the output video.\\nThe profile allows to assume if the track can be played on a particular device.\\n","type":"string","x-api-allow":["smartcam"]},"bframes":{"description":"Average number of B-frames in a GOP. B-frames contain links to keyframes and P-frames before and after themselves.\\nB-frames help to compress the video. However, some players impose limitations on this number: usually no more than 2 B-frames are used.\\nThis value also defines the GOP structure - the repeated pattern of frames after the keyframe: P, BP, BBP, BBBP, or BBBBP.\\n","type":"integer","x-notice":"calculated number of bframes for statistic","example":3},"gop_size":{"description":"The number of frames in a group of pictures (GOP). \\nThe encoder will create all GOPs of an exactly identical size - as specified in this option.\\nA bigger GOP can be good for video compression but it can result in big zap-time (the duration of time between changing a channel and displaying a new channel.)\\n","type":"integer","x-api-allow":["smartcam"]}}},"track_info_audio":{"allOf":[{"$ref":"#/components/schemas/track_info_base"},{"$ref":"#/components/schemas/track_info_base_configurable"},{"type":"object","properties":{"codec":{"description":"Codec of the track. Different codecs do **not** get the same track.","allOf":[{"$ref":"#/components/schemas/frame_codec"}],"example":"h264","x-api-allow":["smartcam","iris-hal"]}}},{"$ref":"#/components/schemas/track_info_audio_specific"}]},"track_info_audio_specific":{"type":"object","properties":{"channels":{"description":"The number of audio channels.","type":"integer","example":2,"x-api-allow":["smartcam"]},"sample_rate":{"description":"Sample rate, in hertz -\\nthe number of samples per second taken from a continuous signal to make a discrete or digital signal.\\n","type":"integer","example":8000,"x-api-allow":["smartcam"]},"language":{"description":"Language value of the track, if applicable.","type":"string","example":"eng"}}},"ti_audio_aac_spec":{"type":"object","title":"AAC codec","properties":{"sample_rate":{"description":"Sample rate, in hertz - \\nthe number of samples per second taken from a continuous signal to make a discrete or digital signal.\\nThe allowed values are: \\n`0` - to copy input sample rate, a number (input audio is resampled with equalization)\\n","type":"integer","example":48000,"oneOf":[{"const":96000},{"const":88200},{"const":64000},{"const":48000},{"const":44100},{"const":32000},{"const":24000},{"const":22050},{"const":16000},{"const":12000},{"const":11025},{"const":8000},{"const":0}]},"channels":{"description":"The number of audio channels in an output stream.","type":"integer","example":2,"oneOf":[{"const":1},{"const":2},{"const":3},{"const":4},{"const":5},{"const":6},{"const":7}]}}},"ti_audio_ac3_spec":{"type":"object","title":"AC3/EAC3 codec","properties":{"sample_rate":{"description":"Sample rate, in hertz - \\nthe number of samples per second taken from a continuous signal to make a discrete or digital signal.\\nThe allowed values are: \\n`0` - to copy input sample rate, a number (input audio is resampled with equalization)\\n","type":"integer","example":48000,"oneOf":[{"const":48000},{"const":44100},{"const":32000},{"const":0}]},"channels":{"description":"The number of audio channels in an output stream.","type":"integer","example":2,"oneOf":[{"const":1},{"const":2},{"const":3},{"const":4},{"const":5},{"const":6}]}}},"ti_audio_mp2a_spec":{"type":"object","title":"MP2 audio codec","properties":{"sample_rate":{"description":"Sample rate, in hertz - \\nthe number of samples per second taken from a continuous signal to make a discrete or digital signal.\\nThe allowed values are: \\n`0` - to copy input sample rate, a number (input audio is resampled with equalization)\\n","type":"integer","example":48000,"oneOf":[{"const":48000},{"const":44100},{"const":32000},{"const":24000},{"const":22050},{"const":16000},{"const":0}]},"channels":{"description":"The number of audio channels in an output stream.","type":"integer","example":2,"oneOf":[{"const":1},{"const":2}]}}},"ti_audio_mp3_spec":{"type":"object","title":"MP3 codec","properties":{"sample_rate":{"description":"Sample rate, in hertz - \\nthe number of samples per second taken from a continuous signal to make a discrete or digital signal.\\nThe allowed values are: \\n`0` - to copy input sample rate, a number (input audio is resampled with equalization)\\n","type":"integer","example":8000,"oneOf":[{"const":48000},{"const":44100},{"const":32000},{"const":24000},{"const":22050},{"const":16000},{"const":12000},{"const":11025},{"const":8000},{"const":0}]},"channels":{"description":"The number of audio channels in an output stream.","type":"integer","example":2,"oneOf":[{"const":1},{"const":2}]}}},"ti_audio_opus_spec":{"type":"object","title":"OPUS codec","properties":{"sample_rate":{"description":"Sample rate, in hertz - \\nthe number of samples per second taken from a continuous signal to make a discrete or digital signal.\\nThe allowed values are: \\n`0` - to copy input sample rate, a number (input audio is resampled with equalization)\\n","type":"integer","example":48000,"oneOf":[{"const":48000},{"const":24000},{"const":16000},{"const":12000},{"const":8000},{"const":0}]},"channels":{"description":"The number of audio channels in an output stream.","type":"integer","example":2,"oneOf":[{"const":1},{"const":2},{"const":3},{"const":4},{"const":5},{"const":6}]}}},"ti_audio_pcma_spec":{"type":"object","title":"PCM A-law/PCM mu-law codec","properties":{"sample_rate":{"description":"Sample rate, in hertz - \\nthe number of samples per second taken from a continuous signal to make a discrete or digital signal.\\nThe allowed values are: \\n`0` - to copy input sample rate, a number (input audio is resampled with equalization)\\n","type":"integer","example":8000,"oneOf":[{"const":8000},{"const":0}]},"channels":{"description":"The number of audio channels in an output stream.","type":"integer","example":1,"oneOf":[{"const":1}]}}},"ti_audio_pcm_spec":{"type":"object","title":"RAW PCM","properties":{"sample_rate":{"description":"Sample rate, in hertz - \\nthe number of samples per second taken from a continuous signal to make a discrete or digital signal.\\n","type":"integer","example":8000},"channels":{"description":"The number of audio channels in an output stream.","type":"integer","example":1}}},"ti_audio_aac":{"allOf":[{"$ref":"#/components/schemas/track_info_base_configurable"},{"$ref":"#/components/schemas/transcoder_track_info_audio_spec"},{"$ref":"#/components/schemas/ti_audio_aac_spec"}]},"ti_audio_ac3":{"allOf":[{"$ref":"#/components/schemas/track_info_base_configurable"},{"$ref":"#/components/schemas/transcoder_track_info_audio_spec"},{"$ref":"#/components/schemas/ti_audio_ac3_spec"}]},"ti_audio_mp2a":{"allOf":[{"$ref":"#/components/schemas/track_info_base_configurable"},{"$ref":"#/components/schemas/transcoder_track_info_audio_spec"},{"$ref":"#/components/schemas/ti_audio_mp2a_spec"}]},"ti_audio_mp3":{"allOf":[{"$ref":"#/components/schemas/track_info_base_configurable"},{"$ref":"#/components/schemas/transcoder_track_info_audio_spec"},{"$ref":"#/components/schemas/ti_audio_mp3_spec"}]},"ti_audio_opus":{"allOf":[{"$ref":"#/components/schemas/track_info_base_configurable"},{"$ref":"#/components/schemas/transcoder_track_info_audio_spec"},{"$ref":"#/components/schemas/ti_audio_opus_spec"}]},"ti_audio_pcma":{"allOf":[{"$ref":"#/components/schemas/track_info_base_configurable"},{"$ref":"#/components/schemas/transcoder_track_info_audio_spec"},{"$ref":"#/components/schemas/ti_audio_pcma_spec"}]},"ti_audio_pcm":{"allOf":[{"$ref":"#/components/schemas/track_info_base_configurable"},{"$ref":"#/components/schemas/transcoder_track_info_audio_spec"},{"$ref":"#/components/schemas/ti_audio_pcm_spec"}]},"track_info_text":{"allOf":[{"$ref":"#/components/schemas/track_info_base"},{"$ref":"#/components/schemas/track_info_base_configurable"},{"type":"object","properties":{"codec":{"description":"Codec of the track. Different codecs do **not** get the same track.","allOf":[{"$ref":"#/components/schemas/frame_codec"}],"example":"h264","x-api-allow":["smartcam","iris-hal"]}}},{"$ref":"#/components/schemas/track_info_text_specific"}]},"track_info_text_specific":{"type":"object","properties":{"language":{"description":"Language value of the track, if applicable.","type":"string","example":"eng"}}},"track_info_application":{"allOf":[{"$ref":"#/components/schemas/track_info_base"},{"$ref":"#/components/schemas/track_info_base_configurable"},{"type":"object","properties":{"codec":{"description":"Codec of the track. Different codecs do **not** get the same track.","allOf":[{"$ref":"#/components/schemas/frame_codec"}],"example":"h264","x-api-allow":["smartcam","iris-hal"]}}},{"$ref":"#/components/schemas/track_info_application_specific"}]},"track_info_application_specific":{"type":"object","properties":{"language":{"description":"Language value of the track, if applicable.","type":"string","example":"eng"}}},"track_info_metadata":{"allOf":[{"$ref":"#/components/schemas/track_info_base"},{"$ref":"#/components/schemas/track_info_base_configurable"},{"type":"object","properties":{"codec":{"description":"Codec of the track. Different codecs do **not** get the same track.","allOf":[{"$ref":"#/components/schemas/frame_codec"}],"example":"h264","x-api-allow":["smartcam","iris-hal"]}}}]},"track_info_full":{"allOf":[{"$ref":"#/components/schemas/track_info_base"},{"$ref":"#/components/schemas/track_info_base_configurable"},{"type":"object","properties":{"codec":{"description":"Codec of the track. Different codecs do **not** get the same track.","allOf":[{"$ref":"#/components/schemas/frame_codec"}],"example":"h264","x-api-allow":["smartcam","iris-hal"]}}},{"$ref":"#/components/schemas/track_info_audio_specific"},{"$ref":"#/components/schemas/track_info_video_specific"},{"$ref":"#/components/schemas/track_info_video_configurable"}]},"closed_captions":{"type":"object","properties":{"language":{"description":"Language of closed captions.","type":"string","example":"eng"},"name":{"description":"Under what name the audio track will be displayed on the player.","type":"string","example":"English"},"type":{"x-private":true,"description":"The standard of the closed captions. \\nThe value is either 608 or 708 for CEA-608 and CEA-708 standards respectively.\\n\\nThis value is important for HLS and DASH players to display closed captions. \\nFor such players the presence should be explicit in the manifest files.\\n","type":"string","x-notice":"CC 608, 708","example":"608"},"id":{"x-private":true,"description":"The number of the channel that has closed captions. \\nIt\'s an integer between 1 and 4 for CEA-608 and between 1 and 63 for CEA-708.\\n","type":"string","x-notice":"CC 608 channel, CC 708 service num","example":"3"}}},"media_info":{"allOf":[{"$ref":"#/components/schemas/media_info_specific"},{"$ref":"#/components/schemas/media_info_common"}]},"media_info_specific":{"type":"object","properties":{"flow_type":{"description":"Whether it is a file with a finite start and end time or a live stream.","oneOf":[{"const":"file"},{"const":"stream"},{"const":"dvr_file"},{"const":"dvr_stream"}],"type":"string","example":"stream"},"tracks":{"description":"Information about available tracks (video, audio, or text).","items":{"allOf":[{"$ref":"#/components/schemas/track_info"}]},"type":"array","default":[],"x-api-allow":["smartcam"]},"duration":{"type":"number","format":"ticks","description":"Duration of the media, if applicable.","x-format-description":"ticks"}}},"media_info_common":{"type":"object","properties":{"provider":{"description":"The media provider of this content.","type":"string","example":"Netflix"},"title":{"description":"Human-readable title of the media.","type":"string","example":"Bunny"},"stream_id":{"type":"integer","example":253,"description":"The identifier of the transport stream for MPEG TS streams."},"program_id":{"type":"integer","example":110,"description":"The program ID for MPEG TS streams."}}},"transcoder_track_info":{"oneOf":[{"$ref":"#/components/schemas/transcoder_track_info_audio"},{"$ref":"#/components/schemas/transcoder_track_info_video"}],"discriminator":{"propertyName":"content","mapping":{"video":"#/components/schemas/transcoder_track_info_video","audio":"#/components/schemas/transcoder_track_info_audio"}}},"transcoder_track_info_audio":{"oneOf":[{"$ref":"#/components/schemas/ti_audio_aac"},{"$ref":"#/components/schemas/ti_audio_opus"},{"$ref":"#/components/schemas/ti_audio_mp2a"},{"$ref":"#/components/schemas/ti_audio_mp3"},{"$ref":"#/components/schemas/ti_audio_ac3"},{"$ref":"#/components/schemas/ti_audio_pcma"},{"$ref":"#/components/schemas/ti_audio_pcm"}],"discriminator":{"propertyName":"codec","mapping":{"aac":"#/components/schemas/ti_audio_aac","opus":"#/components/schemas/ti_audio_opus","mp2a":"#/components/schemas/ti_audio_mp2a","mp3":"#/components/schemas/ti_audio_mp3","ac3":"#/components/schemas/ti_audio_ac3","eac3":"#/components/schemas/ti_audio_ac3","pcmu":"#/components/schemas/ti_audio_pcma","pcma":"#/components/schemas/ti_audio_pcma","pcm":"#/components/schemas/ti_audio_pcm"}},"x-record-definition":"#/components/schemas/ti_audio_aac"},"transcoder_track_info_video":{"allOf":[{"$ref":"#/components/schemas/track_info_base_configurable"},{"type":"object","properties":{"codec":{"description":"Codec of the track. Different codecs do **not** get the same track.","allOf":[{"$ref":"#/components/schemas/frame_codec"}],"example":"h264","x-api-allow":["smartcam","iris-hal"]},"preset":{"description":"A set of values that determine a certain encoding speed, which influences a compression ratio.\\nA slower preset will provide better compression (compression is quality per file size).\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-options_preset"},"default":"veryfast","allOf":[{"$ref":"#/components/schemas/tc_preset"}],"example":"medium"},"profile":{"description":"Limits the output to a specific H.264 profile.","x-api-allow":["iris-hal","smartcam"],"allOf":[{"$ref":"#/components/schemas/tc_profile"}]},"level":{"description":"A set of constraints that indicate a degree of required decoder performance.\\nThis parameter is used for compatibility with old devices.\\n","x-api-allow":["iris-hal","smartcam"],"anyOf":[{"allOf":[{"$ref":"#/components/schemas/h264_level"}]},{"allOf":[{"$ref":"#/components/schemas/hevc_level"}]},{"allOf":[{"$ref":"#/components/schemas/mp2v_level"}]}]},"size":{"description":"Target size of the image and the strategy to achieve it.","x-api-allow":["smartcam"],"allOf":[{"$ref":"#/components/schemas/tc_size"}]},"sar":{"description":"Target aspect ratio.","allOf":[{"$ref":"#/components/schemas/tc_sar"}]},"logo":{"description":"The configuration of a logo \\"burned\\" into the video track.\\nThe transcoder adds the logo before the video is resized as specified in the `size` option. \\nThis means that the logo can be visibly stretched if the size was changed significantly.\\n","allOf":[{"$ref":"#/components/schemas/tc_logo"}]},"alogo":{"description":"The configuration of a logo added to the video track after the video was resized as specified in the `size` option.\\n\\nThis prevents the logo picture from stretching that might occur when the `logo` option is used.\\nYou will need to prepare and specify a separate file with a logo for each size of the resulting video track.\\n","allOf":[{"$ref":"#/components/schemas/tc_logo"}]},"fps":{"description":"Frame rate (frames per second) - the speed at which a sequence of images is displayed on a screen.\\n\\nHigher frame rates capture more images per second, which makes for smoother video.\\nThe standard frame rate for color television in the Phase Alternating Line (PAL) format is 25 fps.\\nThe standard frame rate for color television in the National Television System Committee (NTSC) format is 29,97 fps\\n(a little bit lower than the original frame rate of black and white NTSC television, equal to 30 fps.)\\nIf interlaced TV is used, two fields of each frame (with odd-numbered lines and with even-numbered lines) are displayed consequently,\\nbut the frame rate is actually not doubled (50 half-frames are still equal to 25 original frames).\\n","x-api-allow":["smartcam","iris-hal"],"allOf":[{"$ref":"#/components/schemas/tc_fps"}]},"bframes":{"description":"Number of B-frames between I and P-frames. B-frames contain links to keyframes and P-frames before and after themselves.\\nB-frames help to compress the video. However, some players impose limitations on this number: usually no more than 2 B-frames are used.\\nThis value also defines the GOP structure - the repeated pattern of frames after the keyframe: P, BP, BBP, BBBP, or BBBBP.\\n\\nWhen set to 0, this option disables b-frames. This may be necessary, for example, when broadcasting to RTSP.\\n","enum":[0,1,2,3,4],"type":"integer","example":3},"refs":{"description":"The number of reference frames in a GOP.\\nReference frames are frames of a compressed video that are used to define other frames (P-frames and B-frames).\\n","maximum":6,"minimum":1,"type":"integer"},"gop":{"description":"Sets the number of frames in a GOP.\\nThe encoder will create all GOPs of an exactly identical size - as specified in this option.\\n","x-api-allow":["smartcam"],"type":"integer","example":150},"qp_range":{"description":"The ranges of the quantization parameter for different types of frames in a GOP.\\n\\nQuantization is an algorithm used for video compression. It is based on fragmentation of video frames.\\nIncreasing this parameter allows to improve the compression but may lower the picture quality.\\nUsually, these ranges are defined automatically by the transcoder, but for some types of transcoders it makes sense to set them manually.\\n","allOf":[{"$ref":"#/components/schemas/tc_qp_range"}]},"threads":{"description":"Number of threads used by the encoder when transcoding with CPU (it is not used for other types of transcoder).\\nThis parameter allows to increase performance by adding new threads. By default, it is autodetected.\\n","type":"integer"},"open_gop":{"description":"Whether open GOP is used. Open GOP contains P-frames that refer to the frames before the keyframe.\\nIt allows to decrease bitrate to 5-7%, but can result in breaking the picture.\\n\\nDo not enable this option if the track will be played over segment-based protocols (HLS, DASH, etc.) because \\nabsence of keyframes or IDR frames in the same segment with P-frames may prevent playback. \\n[Read more about tracks, GOP and segments](https://flussonic.com/doc/live-stream-internals/).\\n","default":false,"type":"boolean"},"interlace":{"description":"This parameter is used to get an interlaced stream from a progressive one.\\nThe allowed values are `true` (interlaced video), `false` (progressive video), or one of the methods for producing interlaced video supported for the selected type of transcoder.\\n","allOf":[{"$ref":"#/components/schemas/interlace_settings"}]},"rc_method":{"description":"A method for creating output video with constant bitrate suitable for broadcasting to television networks.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-rc_method"},"allOf":[{"$ref":"#/components/schemas/rc_method"}]},"temporal_tradeoff":{"description":"Drop some frames in dynamic scenes when the transcoder does not have time to code all frames.\\nThe allowed values are:\\n\\n* `15` - drop 1 from 5\\n* `13` - drop 1 from 3\\n* `12` - drop 1 from 2\\n* `23` - drop 2 from 3\\n* `0` - do not drop frames\\n","type":"integer"},"vbv_bufsize":{"description":"Virtual buffer size, it bits. The default value is `gop / fps * bitrate`.\\n","type":"integer"},"resize_mode":{"description":"The mode to be used for resizing video tracks. It is one of the computing platforms for Flussonic Coder:\\n\\n* vic - Video Image Converter, specific for Jetson Nvidia\\n* cuda - CUDA (or Compute Unified Device Architecture)\\n","allOf":[{"$ref":"#/components/schemas/transcoder_resize_mode"}]},"burn":{"description":"Configuration of burn-in text, timestamp, or subtitles to video frames.","x-api-allow":["smartcam","iris-hal"],"allOf":[{"$ref":"#/components/schemas/tc_burn"}]},"extra":{"additionalProperties":{"type":"string"},"type":"object","description":"Some additional options."}}}]},"transcoder_track_info_audio_spec":{"type":"object","properties":{"codec":{"description":"Audio codec (the AAC codec is used by default).","anyOf":[{"$ref":"#/components/schemas/frame_audio_codec"}],"type":"string","example":"opus","default":"aac","x-api-allow":["smartcam","iris-hal"]},"language":{"description":"Language value of the track, if applicable.","type":"string","example":"eng"},"input_track":{"description":"Input audio track to be transcoded.\\n","anyOf":[{"type":"integer"}],"example":1},"volume":{"description":"Output audio volume. The value can be specified in decibels (dB) or it can be an integer/float (3, 0.5, etc.).\\n\\nIf it is just an integer or a float, the output audio volume is calculated by this formula:\\n\\n`output_volume = volume * input_volume`\\n\\nIf specified in decibels (dB), the output audio volume is calculated as follows:\\n\\n`output_volume = input_volume +/- volume`\\n\\ndepending whether it is a positive (+9dB) or a negative value (-6dB).\\n\\nBy default it equals to 1 (the input audio volume).\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/change-stream-volume/"},"type":"string","pattern":"^([0-9]+(\\\\.[0-9]+)?|(\\\\+|\\\\-)[0-9]+(\\\\.[0-9]+)?dB)$","example":"-6dB"},"split_channels":{"description":"This option allows to split each audio track with multiple channels into several mono tracks.\\n","type":"boolean","default":false}}},"webrtc_prefer_video_codec":{"type":"string","enum":["h264","av1"]},"webrtc_transport":{"type":"string","oneOf":[{"title":"UDP","const":"udp"},{"title":"TCP","const":"tcp"}]},"output_audio":{"type":"string","oneOf":[{"title":"Keep","const":"keep","description":"Keep the original audio codec."},{"title":"AAC","const":"aac","description":"Keep AAC if available or transcode to AAC; delete other tracks if any."},{"title":"Add_AAC","const":"add_aac","description":"Add AAC if it was not available already while keeping the original track."}]},"h264_level":{"enum":["1","1b","1.1","1.2","1.3","2","2.1","2.2","3","3.0","3.1","3.2","4","4.0","4.1","4.2","5","5.1","5.2","6","6.1","6.2"],"type":"string"},"hevc_level":{"enum":["1","2","2.1","3","3.1","4","4.1","5","5.1","5.2","6","6.1","6.2"],"type":"string"},"mp2v_level":{"oneOf":[{"title":"Low","const":"low"},{"title":"Main","const":"main"},{"title":"High","const":"high"},{"title":"High 1440","const":"high1440"}],"type":"string"},"video_adapter_device_stats":{"type":"object","properties":{"hw":{"description":"The type of the device.","type":"string","oneOf":[{"const":"dektec","title":"DekTec card"},{"const":"decklink","title":"Blackmagic Decklink Card"},{"const":"v4l","title":"Video4Linux device detected on the server"},{"const":"tbs","title":"TBS product series include DVB-S2/S, DVB-C, DVB-T,ATSC digital TV Tuner PCI-e card"}],"example":"dektec"},"id":{"type":"string","description":"The ID of the device. It could be serial number or any other ID.\\n","examples":{"default":{"value":"serial"},"dektec":{"value":"2174220024"},"v4l":{"value":"/dev/video1"}}},"title":{"type":"string","description":"The name/model of the device.","example":"Decklink Quad 2"}}},"transcoder_device":{"oneOf":[{"title":"CPU","const":"cpu"},{"title":"Intel Quick Sync Video","const":"qsv"},{"title":"Nvidia NVENC (encoder only)","const":"nvenc"},{"title":"Nvidia NVENC 2","const":"nvenc2","x-private":true},{"title":"Flussonic Coder","const":"coder"},{"title":"Raspberry Pi OMX","const":"omx","x-private":true},{"title":"L4T2","const":"l4t2","x-private":true}],"type":"string"},"transcoder_device_stats":{"type":"object","properties":{"type":{"allOf":[{"$ref":"#/components/schemas/transcoder_device"}],"description":"The type of the device used for transcoding.","example":"cpu"},"id":{"allOf":[{"$ref":"#/components/schemas/tc_deviceid"}],"description":"The ID of the device used for transcoding.\\n\\nIn PUT requests, you can use `auto` for Flussonic to set the ID itself. \\nIn the response to GET requests, the `id` will always be a number.\\n"},"name":{"type":"string","description":"The name of the transcoder device."},"can_logo":{"type":"boolean","description":"Shows if the device can put a logo on the image."},"can_interlace":{"type":"boolean","description":"Shows if the device can make an interlaced stream from a progressive one."},"can_internal":{"type":"boolean","description":"Shows if the transcoder with this device can run in the same process as Flussonic Media Server."},"memTotal":{"type":"integer","description":"Total RAM on the device."},"memFree":{"type":"integer","description":"Free RAM."},"memUsed":{"type":"integer","description":"Utilized RAM."},"reconfig_support":{"allOf":[{"$ref":"#/components/schemas/tc_reconfig_support"}],"description":"The ability of the device to be reconfigured online, i.e. without complete restart of the transcoder.\\n\\n`full` means that both decoder and encoder can be reconfigured online.\\n`encoder` means that only encoder can be reconfigured online.\\n`decoder` means that only decoder can be reconfigured online.\\n`false` means that online reconfiguration is not supported.\\n"},"gpu_temp":{"type":"integer","description":"GPU temperature, C."},"gpu_enc":{"type":"integer","description":"GPU encoder load percentage."},"gpu_dec":{"type":"integer","description":"GPU decoder load percentage."},"gpu_sm":{"type":"integer","description":"GPU shared memory amount."}}},"transcoder_resize_mode":{"oneOf":[{"title":"VIC","const":"vic"},{"title":"CUDA","const":"cuda"}],"type":"string"},"tc_bitrate":{"anyOf":[{"oneOf":[{"title":"Copy the input track as-is without any processing.","const":"copy","type":"string"}]},{"type":"integer"}]},"tc_reconfig_support":{"anyOf":[{"type":"string","oneOf":[{"title":"Full","const":"full"},{"title":"Decoder","const":"decoder"},{"title":"Encoder","const":"encoder"}]},{"type":"boolean","oneOf":[{"title":"False","const":false}]}]},"tc_deviceid":{"anyOf":[{"oneOf":[{"title":"Auto","const":"auto","type":"string"}]},{"type":"integer"}]},"tc_fps":{"anyOf":[{"oneOf":[{"title":"Any","const":"any","type":"string"},{"title":"Auto","const":"auto","type":"string"}]},{"type":"integer"}]},"tc_preset":{"oneOf":[{"title":"Slow","const":"slow"},{"title":"Medium","const":"medium"},{"title":"Fast","const":"fast"},{"title":"Very fast","const":"veryfast"},{"title":"Ultra fast","const":"ultrafast"}],"type":"string"},"tc_profile":{"oneOf":[{"title":"Simple","const":"simple"},{"title":"Baseline","const":"baseline"},{"title":"Main","const":"main"},{"title":"Main 10","const":"main10"},{"title":"High","const":"high"},{"title":"High 10","const":"high10"},{"title":"High 422","const":"high422"},{"title":"High 444","const":"high444"}],"type":"string"},"rc_method":{"oneOf":[{"title":"VBR","const":"vbr","description":"The encoder will not encode a stream to be DVB compliant.\\nHowever, VBR (Variable Bit Rate) produces better compression compared to CBR at about the same quality.\\n"},{"title":"CBR","const":"cbr","description":"The encoder will produce a DVB compliant stream.\\nThe bitrate of the output stream will be stable to fit the fixed-bandwidth channel. \\nIn other words, we guarantee that the bitrate has a certain upper bound in a sliding window.\\n"},{"title":"CBR2pass","const":"cbr2pass","description":"The encoder will encode the video once in CBR, \\nthen it will encode it second time in CBR but using the information from the previous pass to improve quality.\\n"}],"type":"string"},"tc_label_box":{"type":"object","properties":{"borderw":{"description":"The width, in pixel, of the border to be drawn around the text, timestamp, or subtitles.","type":"integer","example":10},"color":{"description":"Box color.","anyOf":[{"type":"string","examples":{"default":{"value":"black"},"mylive/bunny":{"value":"white"}}},{"type":"string","format":"hexcolor","example":"#d62d20","x-format-description":"hexcolor"}]},"alpha":{"description":"Box opacity (use values from 0.1 to 1.0, 0.0 - completely transparent, 1.0 - completely opaque).","maximum":1,"minimum":0,"type":"number","example":0}}},"tc_label_font":{"type":"object","properties":{"file":{"description":"The subpath to the `.ttf` font file in the `font` subdirectory of the `/etc/flussonic/` directory. \\nThis means you can place the font file like `/etc/flussonic/font/SomeFont.ttf`.\\n\\nIf the font file specified is missing in `/etc/flussonic/font/`, the default `FiraCode-Regular.ttf` font will be used, which is included in Flussonic.\\n\\nYou can also specify the full path to a font file. Make sure you put the font file in the directory you specified. \\n","type":"string","example":"/usr/share/fonts/truetype/freefont/FONT_NAME.ttf"},"size":{"description":"The font size in pixel.","type":"integer","example":24},"color":{"description":"Font color.","anyOf":[{"type":"string","examples":{"default":{"value":"black"},"mylive/bunny":{"value":"white"}}},{"type":"string","format":"hexcolor","example":"#d62d20","x-format-description":"hexcolor"}]},"alpha":{"description":"Font opacity (use values from 0.1 to 1.0, 0.0 - completely transparent, 1.0 - completely opaque).","maximum":1,"minimum":0,"type":"number","example":1}}},"tc_label":{"type":"object","properties":{"text":{"description":"Text, time, or subtitles to burn-in to video frames.\\n\\n* For text - it is the text\\n* For subtitles - it is the subtitles track, e.g., `t1`.\\n* For time - it is the time in one of the formats:\\n** `%T` - the time in 24-hour notation (`%H:%M:%S`).\\n** `%F` - equivalent to `%Y-%m-%d` (the ISO 8601 date format).\\n","type":"string"},"x":{"description":"The offset of the text, timestamp, or subtitles position, in pixel, to the right or left to the center of the screen.","type":"integer"},"y":{"description":"The offset of the text, timestamp, or subtitles position, in pixel, up or down to the center of the screen.","type":"integer"},"position":{"description":"Position to burn text.","oneOf":[{"title":"Top left","const":"tl"},{"title":"Bottom left","const":"bl"},{"title":"Top right","const":"tr"},{"title":"Bottom right","const":"br"},{"title":"Center","const":"c"},{"title":"Center top","const":"ct"},{"title":"Center bottom","const":"cb"}],"type":"string"},"font":{"description":"Font to be used for text, timestamp, or subtitles burn-in to video frames.","allOf":[{"$ref":"#/components/schemas/tc_label_font"}]},"box":{"description":"Parameters of the box around the text, timestamp, or subtitles.","allOf":[{"$ref":"#/components/schemas/tc_label_box"}]}}},"tc_burn":{"type":"object","properties":{"text":{"description":"Configuration of burn-in text to video frames. \\n","allOf":[{"$ref":"#/components/schemas/tc_label"}]},"time":{"description":"Configuration of burn-in timestamp to video frames. \\n","allOf":[{"$ref":"#/components/schemas/tc_label"}]},"sub":{"description":"Configuration of burn-in subtitles to video frames. \\n","allOf":[{"$ref":"#/components/schemas/tc_label"}]}}},"tc_global":{"type":"object","properties":{"target":{"description":"What use is the stream intended for.\\nSpecifying this option applies useful defaults in conformance with standards\\n","type":"string","oneOf":[{"title":"UHD television","const":"uhdtv","description":"The resulting stream is ready to be transmitted over Ultra HD television networks\\ni.e. H.264 4K (2160p) with higher bitrate, BT.2020 colors\\nand AAC audio\\n"},{"title":"HD television","const":"hdtv","description":"The resulting stream is ready to be transmitted over HD television networks,\\ni.e. H.264 1080p with BT.709 colors\\nand AAC audio\\n"},{"title":"SD television (PAL)","const":"sdtv_pal","description":"The resulting stream is ready to be transmitted over older European (PAL) television networks,\\ni.e. H.264 576i video with lower bitrate, BT.470 colors, 16:11 SAR\\nand AAC audio\\n"},{"title":"SD television (NTSC)","const":"sdtv_ntsc","description":"The resulting stream is ready to be transmitted over older American (NTSC) television networks,\\ni.e. H.264 480i video with lower bitrate, SMPTE 170M colors, 40:33 SAR\\nand AC-3 audio\\n"}]},"hw":{"description":"Transcoder hardware device type to be used for transcoding a stream.","allOf":[{"$ref":"#/components/schemas/transcoder_device"}]},"deviceid":{"description":"Identifier of hardware device to be used for transcoding a stream.","allOf":[{"$ref":"#/components/schemas/tc_deviceid"}]},"external":{"description":"If this parameter is se to `true` (by default), the transcoder runs in a separate process from Flussonic.\\n\\nIf it is set to `false`, the transcoder will run in the same process as Flussonic. \\nThis mode speeds up encoding, especially when encoding audio or when using an Nvidia device. \\nHowever, a transcoder error may cause Flussonic to crash.\\n","type":"boolean"},"keep_ts":{"x-private":true,"description":"Do not bind frames timestamps to realtime before transcoding (disables timestamps being monotonic even if source switches/restarts).","type":"boolean"},"fps":{"description":"FPS (frames per second) value to be applied for any video track in the stream. May be overridden for a track.","x-private":true,"allOf":[{"$ref":"#/components/schemas/tc_fps"}],"example":24},"gop":{"description":"GOP (group of pictures) size (in frames) to be applied for any video track in the stream.\\nThe encoder will create all GOPs of an exactly identical size - as specified in this option.\\nMay be overridden for a track. \\n","type":"integer","example":150},"resize_mode":{"description":"The mode to be used for resizing video tracks. It is one of the computing platforms for Flussonic Coder:\\n\\n* vic - Video Image Converter, specific for Jetson Nvidia\\n* cuda - CUDA (or Compute Unified Device Architecture)\\n","x-private":true,"allOf":[{"$ref":"#/components/schemas/transcoder_resize_mode"}]},"burn":{"description":"Configuration of text, timestamp or subtitles burn-in to video frames. \\n","allOf":[{"$ref":"#/components/schemas/tc_burn"}]}}},"tc_crop":{"type":"object","properties":{"left":{"description":"The `x` coordinate of the upper-left corner of the output video withing the input video.","type":"integer"},"top":{"description":"The `y` coordinate of the upper-left corner of the output video withing the input video.","type":"integer"},"width":{"description":"The width of the output video.","type":"integer"},"height":{"description":"The height of the output video.","type":"integer"}},"required":["left","top","width","height"]},"deinterlace_settings":{"anyOf":[{"oneOf":[{"title":"Enabled","const":true,"description":"Deinterlacing enabled."},{"title":"Disabled","const":false,"description":"Deinterlacing disabled."}],"type":"boolean"},{"oneOf":[{"title":"Adaptive","const":"adaptive","description":"Use adaptive deinterlacing method."},{"title":"CUDA yadif","const":"yadif","description":"Use CUDA yadif deinterlacing method."}],"type":"string"}]},"tc_decoder":{"type":"object","properties":{"pix_fmt":{"description":"The required pixel format according to a color model.","allOf":[{"$ref":"#/components/schemas/frame_video_pix_fmt"}]},"deinterlace":{"description":"Activate deinterlacing, i.e., converting an interlaced image to a progressive image. \\nIt is necessary for comfortable viewing of legacy TV video on PC/mobile devices.\\n","allOf":[{"$ref":"#/components/schemas/deinterlace_settings"}],"example":true},"deinterlace_rate":{"description":"This parameter is used when encoding with Nvidia NVENC.\\nYou can remove duplicate frames that were produced after deinterlacing, preventing increased bitrate, by one of two methods.\\n","oneOf":[{"title":"Frame","const":"frame","description":"From field sequence `1a 1b 2a 2b 3a 3b` we get frame sequence `1a1b 2a2b 3a3b`. \\nThe FPS stays the same.\\n"},{"title":"Field","const":"field","description":"Fields `1a 1b 2a 2b 3a 3b` transform into `1a1b 1b2a 2a2b 2b3a` frames. \\nThe FPS increases two times after transcoding.\\n"}],"type":"string","example":"frame"},"crop":{"description":"Video cropping options.","allOf":[{"$ref":"#/components/schemas/tc_crop"}]},"drop_frame_interval":{"description":"This parameter is applicable for NVIDIA Jetson transcoder only.\\nThis is the number of frames after wich the decoder skips a frame and, thus, allows to save the resources. For example:\\n\\n* 1 - sip each frame\\n* 2 - skip each second frame\\n* 3 - skip each third frame, etc.\\n\\nThis option can be useful for streams with high FPS (e.g., 60) as it allows to increase the bandwidth.\\n","maximum":1000,"minimum":1,"type":"integer","example":3},"no_dpb":{"description":"Switch off the decoded picture buffer. Works for the streams with 1 reference frame.\\nThe default value is `false`.\\n","type":"boolean","example":false},"streaming_frame":{"description":"Allow receiving incomplete frames from the input buffer.\\nIf it is set to `true`, the decoder can start decoding before the complete frame is received.\\n","type":"boolean","example":false}}},"tc_audio_opts":{"oneOf":[{"$ref":"#/components/schemas/tc_audio_aac"},{"$ref":"#/components/schemas/tc_audio_opus"},{"$ref":"#/components/schemas/tc_audio_mp2a"},{"$ref":"#/components/schemas/tc_audio_mp3"},{"$ref":"#/components/schemas/tc_audio_ac3"},{"$ref":"#/components/schemas/tc_audio_pcma"},{"$ref":"#/components/schemas/tc_audio_pcm"}],"discriminator":{"propertyName":"codec","mapping":{"aac":"#/components/schemas/tc_audio_aac","opus":"#/components/schemas/tc_audio_opus","mp2a":"#/components/schemas/tc_audio_mp2a","mp3":"#/components/schemas/tc_audio_mp3","ac3":"#/components/schemas/tc_audio_ac3","eac3":"#/components/schemas/tc_audio_ac3","pcmu":"#/components/schemas/tc_audio_pcma","pcma":"#/components/schemas/tc_audio_pcma","pcm":"#/components/schemas/tc_audio_pcm"}},"x-record-definition":"#/components/schemas/tc_audio_all"},"tc_audio_all":{"allOf":[{"$ref":"#/components/schemas/tc_audio_aac"}]},"tc_audio_base":{"type":"object","properties":{"codec":{"description":"Audio codec (the AAC codec is used by default).","anyOf":[{"$ref":"#/components/schemas/frame_audio_codec"},{"$ref":"#/components/schemas/frame_audio_raw_codec"}],"type":"string","example":"opus","default":"aac"},"bitrate":{"description":"Audio bitrate. The allowed values are:\\n\\n* `copy` - the bitrate or the original stream is copied to the outgoing stream.\\n* a full number of bits (e.g., 64000) or a short form of the number with `k` (e.g., 64k).\\n","allOf":[{"$ref":"#/components/schemas/tc_bitrate"}],"example":64000},"avol":{"description":"Output audio volume. The value can be specified in decibels (dB) or it can be an integer/float (3, 0.5, etc.).\\n\\nIf it is just an integer or a float, the output audio volume is calculated by this formula:\\n\\n`output_volume = avol * input_volume`\\n\\nIf specified in decibels (dB), the output audio volume is calculated as follows:\\n\\n`output_volume = input_volume +/- avol`\\n\\ndepending whether it is a positive (+9dB) or a negative value (-6dB).\\n\\nBy default it equals to 1 (the input audio volume).\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/change-stream-volume/"},"type":"string","pattern":"^([0-9]+(\\\\.[0-9]+)?|(\\\\+|\\\\-)[0-9]+(\\\\.[0-9]+)?dB)$","example":"-6dB"},"split_channels":{"description":"This option allows to split each audio track with multiple channels into several mono tracks.\\n","type":"boolean","default":false}}},"tc_audio_aac":{"allOf":[{"$ref":"#/components/schemas/tc_audio_base"},{"$ref":"#/components/schemas/ti_audio_aac_spec"}]},"tc_audio_opus":{"allOf":[{"$ref":"#/components/schemas/tc_audio_base"},{"$ref":"#/components/schemas/ti_audio_opus_spec"}]},"tc_audio_ac3":{"allOf":[{"$ref":"#/components/schemas/tc_audio_base"},{"$ref":"#/components/schemas/ti_audio_ac3_spec"}]},"tc_audio_pcma":{"allOf":[{"$ref":"#/components/schemas/tc_audio_base"},{"$ref":"#/components/schemas/ti_audio_pcma_spec"}]},"tc_audio_pcm":{"allOf":[{"$ref":"#/components/schemas/tc_audio_base"},{"$ref":"#/components/schemas/ti_audio_pcm_spec"}]},"tc_audio_mp3":{"allOf":[{"$ref":"#/components/schemas/tc_audio_base"},{"$ref":"#/components/schemas/ti_audio_mp3_spec"}]},"tc_audio_mp2a":{"allOf":[{"$ref":"#/components/schemas/tc_audio_base"},{"$ref":"#/components/schemas/ti_audio_mp2a_spec"}]},"tc_size":{"type":"object","properties":{"width":{"description":"The picture width in pixels on the display where it will be played by a player.\\nIf you need to insert a web-player into a web page, use this value for choosing the player size.\\nA value of -1 means that the heigth will be used to calculate the actual width with maintaining the aspect ratio.\\nOnly one of width or height may have value -1.\\nZero value (0) is not allowed.\\n","type":"integer","minimum":-1},"height":{"description":"The picture height in pixels on the display where it will be played by a player.\\nIf you need to insert a web-player into a web page, use this value for choosing the player size.\\nA value of -1 means that the width will be used to calculate the actual height with maintaining the aspect ratio.\\nOnly one of width or height may have value -1.\\nZero value (0) is not allowed.\\n","type":"integer","minimum":-1},"strategy":{"description":"The algorithm of the picture resizing: crop, scale, or fit.\\n","default":"fit","oneOf":[{"title":"Crop","const":"crop"},{"title":"Scale","const":"scale"},{"title":"Fit","const":"fit"}],"type":"string","example":"crop"},"background":{"description":"The color of the area in the player that is not occupied by the video after resizing. \\nIt is used only with the \'fit\' strategy.\\n","anyOf":[{"oneOf":[{"title":"Blur","const":"blur"}],"type":"string"},{"type":"string","format":"hexcolor","x-format-description":"hexcolor"}]}}},"tc_sar":{"type":"object","properties":{"x":{"description":"The first number in SAR. SAR is the ratio of the width of the display video representation to the width of the pixel representation.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-options_sar"},"type":"integer"},"y":{"description":"The second number in SAR. SAR is the ratio of the width of the display video representation to the width of the pixel representation.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-options_sar"},"type":"integer"}}},"tc_logo":{"type":"object","properties":{"path":{"description":"Path to the logo image.","type":"string","pattern":"^.+\\\\.png$","example":"@chan.png"},"x":{"description":"The offset of the logo position, in pixel, to the right or left to the center of the screen.","type":"integer","example":10},"y":{"description":"The offset of the logo position, in pixel, up or down to the center of the screen.","type":"integer","example":10},"position":{"description":"Position to place the logo.\\n","oneOf":[{"title":"Top left","const":"tl"},{"title":"Top right","const":"tr"},{"title":"Bottom left","const":"bl"},{"title":"Bottom right","const":"br"},{"title":"Center","const":"c"}],"type":"string","example":"tl"}}},"tc_qp_range":{"type":"object","properties":{"qpmini":{"description":"Minimal quantization parameter for I-frames.","maximum":100,"minimum":0,"type":"integer"},"qpmaxi":{"description":"Maximal quantization parameter for I-frames.","maximum":100,"minimum":0,"type":"integer"},"qpminp":{"description":"Minimal quantization parameter for P-frames.","maximum":100,"minimum":0,"type":"integer"},"qpmaxp":{"description":"Maximal quantization parameter for P-frames.","maximum":100,"minimum":0,"type":"integer"},"qpminb":{"description":"Minimal quantization parameter for B-frames.","maximum":100,"minimum":0,"type":"integer"},"qpmaxb":{"description":"Maximal quantization parameter for B-frames.","maximum":100,"minimum":0,"type":"integer"}}},"interlace_settings":{"anyOf":[{"oneOf":[{"title":"Top field first","const":"tff","description":"Top field first. This method is used with hw=qsv, nvenc."},{"title":"Bottom field first","const":"bff","description":"Bottom field first. This method is used with hw=qsv, nvenc."},{"title":"Top field first separated","const":"tff_separated","description":"Top field first, separated fields. This method is used with hw=qsv."},{"title":"Bottom field first separated","const":"bff_separated","description":"Bottom field first, separated fields. This method is used with hw=qsv."},{"title":"MBAFF","const":"mbaff","description":"Interlaced libx264 MBAFF method. This method is used only with hw=cpu."}],"type":"string"},{"type":"boolean","description":"Enables encoding into interlaced video by using the default method for the encoder specified\\n(`mbaff` is the default method for `hw=cpu`, `tff` is the default method for `hw=qsv`, `hw=nvenc`)\\n"}]},"tc_video_opts":{"type":"object","required":["track"],"properties":{"track":{"description":"Number of a video track.","type":"integer","example":1},"bitrate":{"description":"The bitrate of a video track.","allOf":[{"$ref":"#/components/schemas/tc_bitrate"}],"example":1000000},"codec":{"description":"The video codec.","default":"h264","oneOf":[{"title":"H.264","const":"h264"},{"title":"HEVC","const":"hevc"},{"title":"AV1","const":"av1"},{"title":"MP2V","const":"mp2v"}],"type":"string"},"preset":{"description":"A set of values that determine a certain encoding speed, which influences a compression ratio. \\nA slower preset will provide better compression (compression is quality per file size).\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-options_preset"},"default":"veryfast","allOf":[{"$ref":"#/components/schemas/tc_preset"}],"example":"medium"},"profile":{"description":"Limits the output to a specific H.264 profile.","allOf":[{"$ref":"#/components/schemas/tc_profile"}]},"level":{"description":"A set of constraints that indicate a degree of required decoder performance.\\nThis parameter is used for compatibility with old devices.\\n","anyOf":[{"allOf":[{"$ref":"#/components/schemas/h264_level"}]},{"allOf":[{"$ref":"#/components/schemas/hevc_level"}]},{"allOf":[{"$ref":"#/components/schemas/mp2v_level"}]}]},"size":{"description":"Target size of the image and the strategy to achieve it.","allOf":[{"$ref":"#/components/schemas/tc_size"}]},"sar":{"description":"Target aspect ratio.","allOf":[{"$ref":"#/components/schemas/tc_sar"}]},"logo":{"description":"The configuration of a logo \\"burned\\" into the video track.\\nThe transcoder adds the logo before the video is resized as specified in the `size` option. \\nThis means that the logo can be visibly stretched if the size was changed significantly.\\n","allOf":[{"$ref":"#/components/schemas/tc_logo"}]},"alogo":{"description":"The configuration of a logo added to the video track after the video was resized as specified in the `size` option.\\n\\nThis prevents the logo picture from stretching that might occur when the `logo` option is used. \\nYou will need to prepare and specify a separate file with a logo for each size of the resulting video track.\\n","allOf":[{"$ref":"#/components/schemas/tc_logo"}]},"fps":{"description":"Frame rate (frames per second) - the speed at which a sequence of images is displayed on a screen.\\n\\nHigher frame rates capture more images per second, which makes for smoother video.\\nThe standard frame rate for color television in the Phase Alternating Line (PAL) format is 25 fps.\\nThe standard frame rate for color television in the National Television System Committee (NTSC) format is 29,97 fps\\n(a little bit lower than the original frame rate of black and white NTSC television, equal to 30 fps.)\\nIf interlaced TV is used, two fields of each frame (with odd-numbered lines and with even-numbered lines) are displayed consequently,\\nbut the frame rate is actually not doubled (50 half-frames are still equal to 25 original frames).\\n","allOf":[{"$ref":"#/components/schemas/tc_fps"}]},"bframes":{"description":"Number of B-frames in a GOP. B-frames contain links to keyframes and P-frames before and after themselves.\\nB-frames help to compress the video. However, some players impose limitations on this number: usually no more than 2 B-frames are used.\\nThis value also defines the GOP structure - the repeated pattern of frames after the keyframe: P, BP, BBP, BBBP, or BBBBP.\\n\\nWhen set to 0, this option disables b-frames. This may be necessary, for example, when broadcasting to RTSP.\\n","enum":[0,1,2,3,4],"type":"integer","example":3},"refs":{"description":"The number of reference frames in a GOP.\\nReference frames are frames of a compressed video that are used to define other frames (P-frames and B-frames).\\n","maximum":6,"minimum":1,"type":"integer"},"gop":{"description":"Sets the number of frames in a GOP. \\nThe encoder will create all GOPs of an exactly identical size - as specified in this option.\\n","type":"integer","example":150},"qp_range":{"description":"The ranges of the quantization parameter for different types of frames in a GOP.\\n\\nQuantization is an algorithm used for video compression. It is based on fragmentation of video frames.\\nIncreasing this parameter allows to improve the compression but may lower the picture quality.\\nUsually, these ranges are defined automatically by the transcoder, but for some types of transcoders it makes sense to set them manually.\\n","allOf":[{"$ref":"#/components/schemas/tc_qp_range"}]},"threads":{"description":"Number of threads used by the encoder when transcoding with CPU (it is not used for other types of transcoder).\\nThis parameter allows to increase performance by adding new threads. By default, it is autodetected.\\n","type":"integer"},"open_gop":{"description":"Whether open GOP is used. Open GOP contains P-frames that refer to the frames before the keyframe.\\nIt allows to decrease bitrate to 5-7%, but can result in breaking the picture.\\n","default":false,"type":"boolean"},"interlace":{"description":"This parameter is used to get an interlaced stream from a progressive one.\\nThe allowed values are `true` (interlaced video), `false` (progressive video), or one of the methods for producing interlaced video supported for the selected type of transcoder.\\n","allOf":[{"$ref":"#/components/schemas/interlace_settings"}]},"rc_method":{"description":"A method for creating output video with constant bitrate suitable for broadcasting to television networks.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-rc_method"},"allOf":[{"$ref":"#/components/schemas/rc_method"}]},"temporal_tradeoff":{"description":"Drop some frames in dynamic scenes when the transcoder does not have time to code all frames.\\nThe allowed values are: \\n\\n* `15` - drop 1 from 5\\n* `13` - drop 1 from 3\\n* `12` - drop 1 from 2\\n* `23` - drop 2 from 3\\n* `0` - do not drop frames\\n","type":"integer"},"vbv_bufsize":{"description":"Virtual buffer size, it bits. The default value is `gop / fps * bitrate`.\\n","type":"integer"},"resize_mode":{"description":"The mode to be used for resizing video tracks. It is one of the computing platforms for Flussonic Coder:\\n\\n* vic - Video Image Converter, specific for Jetson Nvidia\\n* cuda - CUDA (or Compute Unified Device Architecture)\\n","allOf":[{"$ref":"#/components/schemas/transcoder_resize_mode"}]},"burn":{"description":"Configuration of burn-in text, timestamp, or subtitles to video frames.","allOf":[{"$ref":"#/components/schemas/tc_burn"}]},"extra":{"additionalProperties":{"type":"string"},"type":"object","description":"Some additional options."}}},"transcoder_opts":{"type":"object","properties":{"global":{"description":"Transcoder settings to be used for transcoding. \\n","allOf":[{"$ref":"#/components/schemas/tc_global"}],"x-default":{"$ref":"#/components/schemas/tc_global"}},"decoder":{"description":"Decoder settings to be used for transcoding. \\n","allOf":[{"$ref":"#/components/schemas/tc_decoder"}],"x-default":{"$ref":"#/components/schemas/tc_decoder"}},"audio":{"description":"List of audio tracks the stream audio track will be transcoded into.\\n","allOf":[{"$ref":"#/components/schemas/tc_audio_opts"}],"x-default":{"$ref":"#/components/schemas/tc_audio_opts"},"deprecated":true,"x-delete-at":23.09},"video":{"description":"List of video tracks the stream video track will be transcoded into. \\n","items":{"allOf":[{"$ref":"#/components/schemas/tc_video_opts"}]},"type":"array","default":[],"deprecated":true,"x-delete-at":24.08},"tracks":{"description":"Info on the tracks. In the case of iris-hal, the first video track must be\\nhigh-resolution track, second one (if present) must be lower-resolution\\n","items":{"allOf":[{"$ref":"#/components/schemas/transcoder_track_info"}]},"type":"array","default":[],"x-api-allow":["smartcam","iris-hal"]}}},"dvr_schedule_range":{"items":{"type":"integer"},"type":"array"},"dvr_range":{"type":"object","properties":{"from":{"description":"The beginning of the recorded DVR range. Use opened_at instead.\\nMention that opened_at has milliseconds\\n","type":"integer","format":"utc","example":1525186456,"deprecated":true,"x-delete-at":24.11,"x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000},"duration":{"description":"The duration of the recorded DVR range.\\nUse closed_at instead of this field. \\n","type":"integer","format":"seconds","example":28800,"deprecated":true,"x-delete-at":24.11,"x-format-description":"seconds"},"opened_at":{"type":"integer","format":"utc_ms","description":"The time when this range was started. Naming is standard for whole flussonic ecosystem.\\n\\nIs a replacement for field `from`\\n","examples":{"default":{"value":1637094994000}},"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"closed_at":{"type":"integer","format":"utc_ms","description":"The the of the last recorded data.\\n\\nPlease notice that closed_at could be changed. There are two reasons.\\n- Cleaner process reduced data. Read [more](https://flussonic.com/doc/api/reference/#tag/stream/operation/stream_get/response%7Cdvr%7Cepisodes_url).\\n- Recording is still working. Near real-time value means that DVR is active at the moment.\\n\\nThis is a replacement for `duration` field\\n","examples":{"default":{"value":1637094994000}},"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000}}},"dvr_base_config":{"type":"object","properties":{"storage_limit":{"description":"Maximum disk consumption in bytes. When this limit is reached, \\nthe oldest segment of the recording will be overridden by later data.\\n\\nThis option affects both continuous recording and locked episodes (see `episodes_url`).\\n\\nIf `episodes_url` does not respond, the archive clean-up by `storage_limit` is not performed\\nto avoid deleting the recordings that should not be deleted.\\n","type":"integer","format":"bytes","example":400000000000,"x-format-description":"bytes"},"expiration":{"description":"Archive depth - a period (in seconds) back from the current moment during which the \\ncontigious part of archive is stored. \\nAs time goes, the parts of the recording which are older than the archive depth are deleted.\\n\\nIf you have option `episodes_expiration` enabled, then some parts of DVR that are \\nlocked by episode signalling mechanism may be kept more than this `expiration` depth.\\n\\nIf `episodes_url` does not respond, the archive clean-up by `expiration` is not performed;\\nonly the archive with expired episodes (`episodes_expiration`) is cleaned up until the `episodes_url` restores.\\n","type":"integer","format":"seconds","examples":{"default":{"value":604800}},"x-api-allow":["central-layouter"],"x-format-description":"seconds"},"episodes_expiration":{"description":"Additional archive depth in seconds for episodes. If set, episodes and their corresponding DVR record\\nwill be saved for `expiration + episodes_expiration` seconds.\\n\\nThe archive clean-up within `[expiration, expiration+episodes_expiration]` seconds of the\\nrecording performed depending on [external_episodes_list](https://flussonic.com/doc/api/config-external/#tag/dvr/operation/external_episodes_list)\\nresponse of `episodes_url`.\\n\\nAnything older than `expiration+episodes_expiration` seconds will\\nbe cleaned even if `episodes_url` does not respond.\\n","type":"integer","format":"seconds","examples":{"default":{"value":6048000}},"x-format-description":"seconds"},"episodes_url":{"description":"External URL that will be triggered for fetching episodes list.\\nTake a look at config_external API for method `external_episodes_list`.\\n\\nIf the `episodes_url` not set or responds with any HTTP code other than `200` or `501` or does not respond within a timeout,\\nthe archive clean-up is only performed by `episodes_expiration` time while `expiration` and `storage_limit` are ignored until the `episodes_url` restores.\\n\\n\\nIf `episodes_url` is a blank string, then current config_external API endpoint will be used to request episodes.\\nIt is most common usage of this field.\\n","type":"string","examples":{"default":{"value":"http://central-host.local/config-external/episodes"},"simple":{"value":""}}},"schedule":{"description":"One or several time intervals for recording by schedule.\\nThe beginning and the end of each interval are set in \\"hhmm\\" format (without leading zeros ) according to UTC standard. \\nFor example, `2330` is for 23:30, `800` - for 08:00. The interval can go over midnight, e.g. 22:00-1:30. In this case it is set as follows: `[2200,130]`.\\n\\nScheduled recording can be useful for the channels with part-time broadcasting. \\nIt allows to save disk space significantly.\\n","items":{"allOf":[{"$ref":"#/components/schemas/dvr_schedule_range"}]},"type":"array","example":[[800,1600],[2200,130]]},"disk_usage_limit":{"description":"Maximum disk consumption in percents. When this limit is reached, \\nthe oldest segment of the recording will be overridden by later data.\\n\\nIt important to understand that this is not a \\"per-stream\\" option, this option means\\nthat cleaning of this stream will be triggered if overall disk usage reaches this number.\\n\\nIf you have all streams with configuration 98% and one stream with 95%, it will be permanently\\nempty.\\n","type":"integer","format":"percent","example":98,"x-format-description":"percent"},"dvr_replicate":{"description":"Whether DVR replication is used. Replication means that a DVR archive is stored on two (or more) Flussonic servers.\\nIt can be used for reliability or for broadcasting with a time shift. Learn more in [Flussonic documentation](https://flussonic.com/doc/scale-dvr-playback-with-new-server/).\\n","type":"boolean","example":true},"replication_speed":{"x-private":true,"description":"Replication speed limitation. \\nThe secondary server can limit the total speed of replication in order not to interrupt the live broadcast or reduce its quality. \\n","type":"integer","format":"speed","x-format-description":"speed"},"replication_port":{"description":"Replication port. \\nBy default, replication is enabled on the port specified when configuring the M4F source. \\nYou can specify a separate port for replication.\\n","allOf":[{"$ref":"#/components/schemas/network_port"}],"example":8002},"no_index":{"x-private":true,"description":"Don\'t generate a file with the list of streams and their depths.","type":"boolean"},"dvr_offline":{"description":"If this option is enabled, Flussonic detects DVR at the start of the stream,\\nbut does not start recording immediately and waits for external API request.\\n","type":"boolean"},"copy":{"description":"The URL of another storage to copy the blobs (hours of the archive) into. \\nCopying is done when a blob is complete (i.e., once an hour), and therefore helps significantly reduce the number of network requests to a cloud storage.\\n","type":"string","format":"dvr_url","example":"s3://token@minio.mycompany.com/dvr-bucket","x-format-description":"dvr_url"},"keep_locks":{"description":"Whether the locked DVR recordings will be kept when disk usage limit is reached (in bytes or percents).\\n\\nThis option will be now always enabled, consider managing your free space.\\n\\nSwitch to `episodes_url` mechanism instead.\\n","type":"boolean","example":false,"deprecated":true,"x-delete-at":23.11}}},"dvr_storage_config":{"type":"object","properties":{"name":{"description":"DVR configuration name.","type":"string","format":"dvr_name","openmetrics_label":"dvr_name","x-primary-key":true,"readOnly":true,"x-api-allow":["central-layouter"],"x-format-description":"dvr_name"},"root":{"description":"A path where the DVR archive is stored.","type":"string","format":"dvr_url","x-api-allow":["central-layouter"],"x-format-description":"dvr_url"},"raid":{"description":"This value is present if RAID (redundant array of independent disks) is enabled. Learn more in [Flussonic RAID for DVR](https://flussonic.com/doc/extend-video-storage-on-fly/). \\n","allOf":[{"$ref":"#/components/schemas/dvr_raid_level"}]},"check_mount":{"description":"If this parameter is set to \'true\' (by default), \\nFlussonic will check if the disks were mounted properly before writing to them.\\n","type":"boolean"},"active":{"description":"The number of disks to write the archive.","type":"integer"},"index":{"description":"A directory on an SSD disk where the data will be cached.","type":"string","format":"disk_path","x-format-description":"disk_path"},"disks":{"description":"RAID disks mounted on the server.","type":"array","items":{"$ref":"#/components/schemas/raid_disk_config"}},"stats":{"description":"The runtime statistics about DVR.\\n","allOf":[{"$ref":"#/components/schemas/dvr_storage_stats"},{"$ref":"#/components/schemas/dvr_capacity_stats"}],"readOnly":true,"x-api-allow":["central-layouter"]}},"required":["name","root"]},"dvr_raid_level":{"type":"integer","oneOf":[{"title":0,"const":0,"description":"RAID level 0"}]},"dvr_storage_stats":{"type":"object","properties":{"errors":{"description":"The runtime DVR errors.\\n","allOf":[{"$ref":"#/components/schemas/dvr_storage_errors"}]}}},"dvr_storage_errors":{"type":"object","properties":{"read_errors":{"description":"Total number of errors while reading the archive.","type":"integer"},"write_errors":{"description":"Total number of errors while writing to the archive.","type":"integer"},"delete_errors":{"description":"Total number of errors while deleting from the archive.","type":"integer"},"collapsed_write_count":{"description":"Total number of collapsed segments while writing to the archive. Collapsed segments are pack of segments written together occur due to lack of storage performance.","type":"integer"},"drop_write_count":{"description":"Total number of dropped segments while writing to the archive.","type":"integer"}}},"dvr_config":{"allOf":[{"$ref":"#/components/schemas/dvr_storage_config"},{"$ref":"#/components/schemas/dvr_base_config"}]},"dvr_capacity_stats":{"type":"object","description":"This list of stats can be used to monitor health of invidiual disk in storage.\\n\\nThere are several layers of indexes in internal database, here you can validate\\nintegrity of data.\\n","properties":{"blobs_count_db":{"description":"The number of blobs on the disk according to centralized Raid DB that is\\nused to allocate blobs across whole storage.\\n","type":"integer","openmetrics_metric":"storage_blobs_count_db","x-metric-type":"gauge"},"blobs_count":{"description":"The number of blobs on the disk that are enlisted in individual stream indexes.\\nIt must be equal to blobs_count_db and can be different in case of software\\nor hardware errors.\\n","type":"integer","openmetrics_metric":"storage_blobs_count","x-metric-type":"gauge"},"size":{"description":"Disk capacity in bytes.\\n","type":"integer","format":"bytes","openmetrics_metric":"storage_size","x-metric-type":"gauge","x-api-allow":["central-layouter"],"x-format-description":"bytes"},"used":{"description":"Used disk space in bytes according to linux metrics. It must be equal (almost equal) to\\n`used_index`. If it differs more than in 1%, then it means that there are lot of unknown files.\\n\\nIf this disk is used exclusively for Raid, then it may mean that some blobs are lost from\\ndatabase and repairing is required.\\n","type":"integer","format":"bytes","openmetrics_metric":"storage_used","x-metric-type":"gauge","x-api-allow":["central-layouter"],"x-format-description":"bytes"},"used_index":{"description":"Used disk space in bytes according to internal database index.\\n","type":"integer","format":"bytes","openmetrics_metric":"storage_used_index","x-metric-type":"gauge","x-format-description":"bytes"},"usage":{"description":"Disk utilization percentage.","type":"integer","format":"percent","openmetrics_metric":"storage_usage","x-metric-type":"gauge","x-api-allow":["central-layouter"],"x-format-description":"percent"}}},"raid_disk_config":{"type":"object","properties":{"path":{"description":"The path to a mounted disk. \\n","example":"volume1","type":"string","format":"disk_path","openmetrics_label":"disk","x-primary-key":true,"readOnly":true,"x-format-description":"disk_path"},"mode":{"description":"The mode of using the disk.\\n","example":"keep","allOf":[{"$ref":"#/components/schemas/raid_disk_mode"}]},"stats":{"description":"The runtime statistics about RAID. The statistics shows the state of disks.\\nLearn more in [Flussonic RAID for DVR](https://flussonic.com/doc/extend-video-storage-on-fly/#dvr-flussonic-raid-stats)\\n","allOf":[{"$ref":"#/components/schemas/raid_disk_stats"},{"$ref":"#/components/schemas/dvr_capacity_stats"}],"readOnly":true}},"required":["path"]},"raid_disk_mode":{"type":"string","oneOf":[{"title":"Normal","const":"normal","description":"Flussonic reads the data from and writes it to the hard drive, removing the data according to the DVR settings.\\nThe default mode.\\n"},{"title":"Migrate","const":"migrate","description":"Flussonic migrates the data from the current hard drive to other hard drives in the array on the fly, cleaning up the current hard drive.\\nYou can check that Flussonic finished migrating the data, when there aren\'t any calls to this hard drive.\\nIn the meantime, Flussonic continues archive recording, so it isn\'t interrupted. You don\'t need to restart Flussonic after you remove the disk.\\nUse this option if you need to extract the hard drive and don\'t want to lose the data.\\n"},{"title":"Readonly","const":"readonly","description":"Flussonic reads the data from the hard drive, restricting any writing to it. Use this option in the following cases: \\nFlussonic reads the data from the hard drive until the data on it expires. Then Flussonic deletes the data.\\n* If the hard drive is worn out and you can\'t write the data to the hard drive, delete files, update the index, or copy the data to another hard drive.\\n* If the hard drive stores the records written in the `keep` mode and you want to store the data permanently.\\n"},{"title":"Rescue","const":"rescue","description":"Flussonic copies all the data from the old hard drive that\'s going to fail and stops writing the data to this hard drive.\\nFlussonic doesn\'t delete the data from the hard drive, unlike in `migrate` mode, so you can still access the archive.\\nUse this option in an emergency.\\n"},{"title":"Abandon","const":"abandon","description":"Flussonic stops writing new data on this hard drive. When the data becomes obsolete, Flussonic deletes it, updating the index. \\nUse this option when you want to replace a hard drive, for example, with a larger one.\\n"},{"title":"Keep","const":"keep","description":"Flussonic writes the data to the hard drive, but doesn\'t delete it.\\nUse this option if you need to store the entire archive permanently.\\n"}]},"raid_disk_errors":{"type":"object","properties":{"eacces":{"description":"Total number of permission denied errors\\n","example":1,"type":"integer"},"eagain":{"description":"Total number of temporarily unavailable errors\\n","example":1,"type":"integer"},"ebusy":{"description":"Total number of file busy errors\\n","example":1,"type":"integer"},"edquot":{"description":"Total number of disk quota exceeded errors\\n","example":1,"type":"integer"},"emfile":{"description":"Total number of too many open files errors\\n","example":1,"type":"integer"},"enoent":{"description":"Total number of no such file or directory errors\\n","example":1,"type":"integer"},"enodev":{"description":"Total number of no such device errors\\n","example":1,"type":"integer"},"enospc":{"description":"Total number of no space left on device errors\\n","example":1,"type":"integer"},"erofs":{"description":"Total number of read-only file system errors\\n","example":1,"type":"integer"},"connection_timeout":{"description":"Total number of connection timeout errors\\n","example":1,"type":"integer"},"ssl_error":{"description":"Total number of SSL errors\\n","example":1,"type":"integer"},"nxdomain":{"description":"Total number of non-existing domain errors\\n","example":1,"type":"integer"},"econnrefused":{"description":"Total number of connection refused errors\\n","example":1,"type":"integer"},"other":{"description":"Total number of other errors\\n","example":1,"type":"integer"}}},"raid_disk_stats":{"type":"object","properties":{"mounted":{"description":"Whether the disk is mounted correctly.","type":"boolean"},"mode":{"description":"The mode of using the disk.\\n","example":"keep","allOf":[{"$ref":"#/components/schemas/raid_disk_mode"}]},"io_usage":{"description":"Disk I/O utilization percentage from `/proc/devstat`.","type":"integer","format":"percent","openmetrics_metric":"raid_disk_io_usage","x-metric-type":"gauge","x-format-description":"percent"},"migration_speed":{"description":"The speed of copying the last blob, in bytes per second.","type":"integer","format":"speed","x-format-description":"speed"},"migration_eta":{"description":"The estimated migration end time, in UTC seconds.","type":"integer","format":"utc","x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000},"migration_updated":{"description":"The time when the values of `migration_speed` and `migration_eta` were last updated.","type":"integer","format":"utc","x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000},"errors":{"description":"Errors of using the disk.\\n","allOf":[{"$ref":"#/components/schemas/raid_disk_errors"}]}}},"debug_stream_spec":{"type":"object","properties":{"ips":{"description":"Client IP addresses which data is recorded.","type":"array","items":{"allOf":[{"$ref":"#/components/schemas/network_addr"}]},"example":["10.10.10.9"]},"tracepoints":{"description":"Points in stream pipeline where data is recorded.\\n","type":"array","items":{"$ref":"#/components/schemas/debug_stream_tracepoints"},"default":["input"],"example":["input","stream","webrtc_play_network"]},"root":{"description":"The path to the directory where the session data will be recorded.\\nRecommended for debugging needs **only**.\\n","type":"string","format":"dvr_url","example":"/tmp/debug","x-format-description":"dvr_url"},"storage_limit":{"description":"Maximum disk consumption in bytes. When this limit is reached, \\nthe oldest segment of the recording will be overridden by later data.\\n","type":"integer","format":"bytes","example":400000000000,"x-format-description":"bytes"},"expiration":{"description":"A period (in seconds) back from the current moment during which the files are stored.\\nAs time goes, the files which are older than this period are being overridden by the later files.\\n","type":"integer","format":"seconds","example":604800,"x-format-description":"seconds"},"duration":{"description":"Time for recording in milliseconds.","type":"integer","format":"milliseconds","example":6000,"x-format-description":"milliseconds"}},"required":["root"]},"debug_stream_tracepoints":{"anyOf":[{"oneOf":[{"title":"Input","const":"input","description":"Record raw bytes at stream input. Not all protocols support this."},{"title":"Stream","const":"stream","description":"Record frames after all pre-processing, as would be output via push or play."},{"title":"WEBRTC network output data","const":"webrtc_play_network","description":"Record webrtc play session rtp packets"},{"title":"WEBRTC frames before encoding","const":"webrtc_play_frame","description":"Record webrtc play session frames"},{"title":"RTSP network output data","const":"rtsp_play_network","description":"Record rtsp play session packets"}],"type":"string"}]},"motion_detector_spec":{"type":"object","properties":{"enabled":{"description":"This parameter allows Flussonic to receive motion detection events from cameras via ONVIF protocol. \\nFlussonic adds corresponding marks in the archive recordings in the places when motion was detected. \\n","default":true,"type":"boolean","example":true},"pull":{"description":"The address from which Flussonic will get motion detection events.\\nThe events are taken from the ONVIF pull point provided by the cameras.\\n\\nThe format of the address is `onvif://{login}:{password}@{address}:{port}/onvif/device_service`\\n","externalDocs":{"description":"Find more information here","url":"http://www.onvif.org/specs/core/ONVIF-Core-Specification.pdf"},"type":"string","examples":{"default":{"value":"onvif://admin:admin@127.0.0.1:80"},"iris":{"value":"http+iris://localhost"}}}}},"vbi_line":{"anyOf":[{"maximum":23,"minimum":6,"type":"integer"},{"maximum":335,"minimum":318,"type":"integer"}]},"ttxt_descriptors":{"properties":{"page":{"description":"Page number of the teletext received from an SDI card.\\nIt is defined according to ETS 300 706 teletext specification.\\n\\nThe information about the pages is received from the stream provider.\\n","type":"integer","x-primary-key":true,"example":100},"lang":{"description":"The language code of the teletext.","anyOf":[{"$ref":"#/components/schemas/language_value"}]},"type":{"description":"Teletext page type defined according to the Specification for Service Information (SI) in DVB systems, 6.2.32 Teletext descriptor in EN 300 468 Digital Video Broadcasting (DVB).","enum":["initial","subtitle","impaired"],"type":"string","example":"initial"}},"required":["page","lang","type"],"type":"object"},"vbi_service":{"enum":["ttxt"],"type":"string"},"srt_config":{"allOf":[{"type":"object","properties":{"port":{"description":"Listening port or a `host:port` pair for the SRT configuration.\\nMust be unique on the whole server.\\n","allOf":[{"$ref":"#/components/schemas/listen_spec"}],"example":9050},"v":{"description":"What implementation to use.\\n","oneOf":[{"const":"srt1","description":"libsrt bindings"},{"const":"srt2","description":"erlang implementation"}],"x-private":true},"timeout":{"description":"Data transmission timeout in seconds. \\nIf set to `false` then data transmission time is unlimited. This is a defalut behavior.\\n","anyOf":[{"type":"integer","format":"seconds","x-format-description":"seconds"},{"enum":[false],"type":"boolean"}],"x-notice":"SRTO_RCVTIMEO SRTO_SNDTIMEO (ms, -1 no limit)","example":10}}},{"$ref":"#/components/schemas/srt_config_base"}]},"srt_config_base":{"type":"object","properties":{"minversion":{"description":"The minimum SRT version that is required from the peer for SRT publication.\\n","type":"string","pattern":"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$","example":"1.1.0"},"version":{"description":"Required SRT version.\\n","type":"string","pattern":"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$","example":"1.3.0"},"enforcedencryption":{"description":"Whether both connection parties must have the same password set (including empty, in other words, with no encryption). \\nIf the passwords do not match or only one side is unencrypted, the connection is rejected. \\nThe default value is `true`.\\n","type":"boolean","example":true},"passphrase":{"description":"The password for the encrypted transmission. \\nIts length should be not less than 10 and not more than 79 characters.\\n\\nUnlike [password](https://flussonic.com/doc/api/reference/#tag/stream/operation/stream_save%7Cbody%7Cpassword),\\nthe passphrase is not transmitted openly but is used to encrypt the key that is transmitted by the Caller\\nand decoded by Listener.\\n","type":"string","minLength":10,"maxLength":79,"example":"9876543210","x-notice":"SRTO_PASSPHRASE (\\"\\")"},"linger":{"description":"The time, in seconds, that the socket waits for the unsent data before closing. \\nThe default value is 180.\\n","type":"integer","format":"seconds","x-notice":"SRTO_LINGER on, (180s) (off - 0s)","example":15,"x-format-description":"seconds"},"latency":{"description":"The latency value for both directions of the socket.\\nBy default initial value latency is 0 when transmitting and 120ms when receiving video.\\nActual value established after connection handshake.\\nIncreased value helps tolerate network losses and delays.\\n","type":"integer","format":"milliseconds","x-notice":"SRTO_LATENCY","example":150,"x-format-description":"milliseconds"},"streamid":{"description":"A string of maximum 512 characters set on the socket before the connection. \\n\\nThis string is a part of a callback that is sent by the caller and regisered by the listener. \\nBased on this information the listener can accept or reject the connection, select the desired data stream, or set an appropriate passphrase for the connection.\\n\\nIts format is `#!::` optionally followed by the parameters:\\n* `r=` - stream name\\n* `m=` - mode expected for the connection: `publish` (if the caller wants to send the stream data) or `request` (if the caller wants to receive the stream).\\n* `password=` - a password for the authorization in a publish session (not recommended, better use `passphrase` option instead)\\n\\nDuring SRT sessions the following parameters are automaticly added to streamid:\\n* `s=` - the identifier of a session\\n* `a=` - Flussonic version\\n\\nNOTE: you can specify a string in the format you need; to disable this extension, you need specify empty string.\\n","type":"string","maxLength":512,"example":"#!::r=my-stream,m=publish"}}},"mpegts_lang_track":{"anyOf":[{"enum":["default"],"type":"string"},{"type":"string"}]},"audio_track":{"type":"object","required":["channels"],"properties":{"track":{"description":"The audio track name in Media Server.","type":"string","example":"a1","x-primary-key":true},"sample_type":{"description":"The audio track format.","type":"string","oneOf":[{"const":"pcm"},{"const":"smpte337"}],"default":"pcm"},"channels":{"description":"The list of SDI audio channels from which you want to assemble the audio track.","type":"array","items":{"type":"integer"}},"lang":{"description":"The audio track language.","anyOf":[{"$ref":"#/components/schemas/language_value"}]}}},"push_audio_track":{"properties":{"track":{"description":"The audio track name.","type":"string","example":"a1"},"sample_type":{"description":"The audio track output format.","type":"string","oneOf":[{"const":"pcm"}],"default":"pcm"},"channels":{"description":"The list of SDI audio channel numbers to which the audio track shall be pushed.","type":"array","items":{"type":"integer"}}},"type":"object","required":["track","channels"]},"stream_dvr_specific_spec":{"type":"object","properties":{"reference":{"description":"Stream can refer to the globally declared DVR. This option referres to a single DVR entry.","type":"string","format":"dvr_name","example":"localdvr0","x-format-description":"dvr_name"},"remotes":{"description":"The address of the source from which Media server will read the archive. This address will not be used for capturing live video, it is strictly for data exchange on the availability of the archive and the transmission of segments.","type":"array","items":{"type":"string","format":"dvr_url","pattern":"^(m4f|m4fs|m4s|m4ss|hls)://.*$","examples":{"default":{"value":"m4f://clusterkey@secondserver/otherstream"}},"x-format-description":"dvr_url"}},"redundancy_factor":{"description":"How many servers will contain a copy of the DVR archive.\\nYou can find more information [here](https://flussonic.com/doc/api/layouter/#tag/stream/operation/streams_list/response%7Cstreams%7Cdvr%7Credundancy_factor)\\n","x-api-description":{"central-layouter":"How many servers will contain a copy of the DVR archive.\\nLayouter will select nodes to copy the stream archive based on the load of the node and [labels](https://flussonic.com/doc/api/layouter/#tag/stream/operation/streams_list/response%7Cstreams%7Clabels).\\nThe hostname of the selected nodes will be contained in the [layout.dvr_backup](https://flussonic.com/doc/api/layouter/#tag/stream/operation/streams_list/response%7Cstreams%7Clayout%7Cdvr_backup) field\\n"},"type":"integer","example":1,"minimum":0,"x-api-allow":["central-layouter"]},"root":{"description":"If no `reference` specified, then `root` must be specified. Video recording will be made to `root/name` directory.\\nThis option works only in media server and should be used only as a quickstart mechanism. Should be avoided in large installations, because it mixes infrastructure and content setup and lacks configurability.","type":"string","format":"dvr_url","examples":{"default":{"value":"/storage"}},"x-format-description":"dvr_url"}}},"stream_dvr_spec":{"allOf":[{"$ref":"#/components/schemas/stream_dvr_specific_spec"},{"$ref":"#/components/schemas/dvr_base_config"}]},"subtitle_style":{"type":"object","properties":{"align":{"description":"Horizontal alignment of subtitles.\\nAllowed values: `left`, `center`, `right`.\\n","type":"string","example":"middle"},"valign":{"description":"Vertical alignment of subtitles.\\nAllowed values: `top`, `middle`, `bottom `.\\n","type":"string","example":"bottom"}}},"transponder_pid":{"type":"object","properties":{"pid":{"description":"A PID to assign to a matched track or system table.\\nPID identifies the payload (media or service) in the resulting MPTS stream.\\n\\nMultiplexer will include only the tracks with specified PIDs.\\n\\nIt is possible to set PID values for video, audio and other media tracks, as well as for PMT and SDT.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/multiplex-several-streams-into-mpts-for-contribution/#choosing-output-tracks"},"allOf":[{"$ref":"#/components/schemas/ts_pid"}],"x-primary-key":true,"openmetrics_label":"pid"},"content":{"description":"Content of the track.","enum":["system","video","audio","application","metadata"],"type":"string","example":"audio"},"codec":{"description":"Codec for this pid. Use this if just content+track is not enough.","allOf":[{"$ref":"#/components/schemas/frame_codec"}],"example":"scte35"},"track":{"description":"Index of a track with specified content and maybe codec.\\nE.g. when you specify content=audio and track=2 the second audio track will be selected.\\nIf you specify content=audio, codec=aac and track=1, the first AAC track will be selected\\neven if it is a third audio track and fifth track in stream media_info\\n","type":"integer","example":1},"bitrate":{"description":"Bitrate of the track.","type":"integer","format":"speed","example":2543,"x-format-description":"speed"},"stream_type":{"description":"Custom program element type in PMT\\nCombined with bypass (content=metadata, track=0) this option makes\\nproprietary PSI streams appear in PMT program info with given stream_type field\\n\\nThis is an optional parameter for advanced users. By default, the media Server\\nis automatically sets the stream_type according to the track codec.\\n","type":"integer","minimum":1,"maximum":255,"example":12},"es_info":{"description":"Raw elementary stream descriptors to describe proprietary stream in PMT program info\\nPlese refer to ISO/IEC 13818-1 section 2.6 for syntax\\n\\nThis is an optional parameter for advanced users. By default, the media Server\\nis automatically sets the stream_type according to the track codec.\\n","type":"string","format":"hexbinary","example":"52010D","x-format-description":"hexbinary"},"stats":{"description":"Detailed runtime information about the multiplexer pid.","allOf":[{"$ref":"#/components/schemas/transponder_pid_stats"}],"readOnly":true}},"required":["pid","content","track"]},"transponder_pid_stats":{"type":"object","properties":{"payload":{"description":"The payload bytes count.","type":"integer","format":"bytes","openmetrics_metric":"pid_payload","x-metric-type":"counter","x-format-description":"bytes"},"fillers":{"description":"The filler bytes count.","type":"integer","format":"bytes","openmetrics_metric":"pid_fillers","x-metric-type":"counter","x-format-description":"bytes"},"stuffing":{"description":"The stuff packets count.","type":"integer","openmetrics_metric":"pid_stuffing","x-metric-type":"counter"},"trimmed_bytes":{"description":"The trimmed bytes count.","type":"integer","format":"bytes","openmetrics_metric":"pid_trimmed_bytes","x-metric-type":"counter","x-format-description":"bytes"},"trimmed_frames":{"description":"The trimmed frames count.","type":"integer","openmetrics_metric":"pid_trimmed_frames","x-metric-type":"counter"}}},"vision_spec":{"type":"object","properties":{"alg":{"description":"The algorithm used for video analytics.\\n","type":"string","oneOf":[{"const":"faces","description":"The algorithm for face recognition is used."},{"const":"plates","description":"The algorithm for license plate recognition is used."}],"example":"faces","x-api-allow":["vision-config-external","vision","central","watcher-admin","watcher-client"]},"areas":{"description":"This parameter allows you to select specific polygonal area(s) for detection.\\nBy default, it is empty, and the recognition system searches over the entire camera field of view.\\n\\nEach area is specified as a sequence of comma-separated coordinates of vertices of the polygon: `x0,y0,x1,y1,x2,y2,...`.\\nThe vertices are specified in a counter-clockwise direction. Multiple areas are separated by `:`.\\n","type":"string","x-api-allow":["vision-config-external","vision","central","watcher-admin","watcher-client"]},"detectors":{"description":"Configuration of videoanalytics modules.\\nThis configuration supersedes `alg` and `areas` parameters. \\nIf this field is specified, values of `alg` and `areas` fields are being ignored.\\n","type":"array","items":{"$ref":"#/components/schemas/vision_detector_config"},"x-api-allow":["smartcam","iris-hal","iris-web","vision","vision-config-external","central","watcher-admin","watcher-client"]}}},"auth_spec":{"type":"object","properties":{"url":{"description":"The URL of an HTTP backend.","allOf":[{"$ref":"#/components/schemas/auth_url"}],"example":"http://middleware-address/auth/v2"},"domains":{"description":"Specifying the domains, within which playing this video is allowed. \\nThis does not work for those clients that do not pass the value of Referer HTTP header.\\n","items":{"type":"string"},"type":"array","example":["mycompany.com"]},"max_sessions":{"description":"The maximal number of streams or files the user can view simultaneously.\\nThis limitation allows to prevent users from full restreaming to their servers.\\n","type":"integer","example":5000},"allowed_countries":{"description":"Explicit list of countries (two-letter country codes according to ISO 3166-1) that have access to the content without any other checks. \\n\\nFlussonic uses the MaxMind GeoLite2 Country database to map a country to a block of IP addresses. \\nNew releases of GeoIP2 databases come out more often than the releases of Flussonic server, so sometimes the used database can become outdated. \\nTherefore we recommend you to install a separate GeoIP2 library and set up Flussonic to use it.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/restrict-viewer-country-with-geoip/"},"items":{"type":"string","format":"iso3166","x-format-description":"iso3166"},"type":"array","example":["US","DE","GB"]},"disallowed_countries":{"description":"Explicit list of countries (two-letter country codes according to ISO 3166-1) that are banned from accessing the content. \\n\\nFlussonic uses the MaxMind GeoLite2 Country database to map a country to a block of IP addresses. \\nNew releases of GeoIP2 databases come out more often than the releases of Flussonic server, so sometimes the used database can become outdated. \\nTherefore we recommend you to install a separate GeoIP2 library and set up Flussonic to use it.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/restrict-viewer-country-with-geoip/"},"items":{"type":"string","format":"iso3166","x-format-description":"iso3166"},"type":"array","example":["US","DE","GB"]},"soft_limitation":{"description":"If this option is enabled and `max_sessions` limitation is used, the extra sessions are interrupted not immediately, but in 30 or 90 seconds.\\nThis can be useful for middlewares that cannot generate a new token for every new stream or file request \\nand therefore need time to understand that all sessions are being used.\\n","type":"boolean","example":false},"session_keys":{"description":"A list of keys to generate a session ID value, allowing to configure the authorization scheme \\nwhich is a hash sum calculated as follows: `hash(name + ip + proto)`.\\nThis parameter allows to finish one session and start another one with the same authorization token.\\nThe keys `name`,`ip`, and `proto` are required.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/authorize-clients/#auth-session-keys"},"items":{"allOf":[{"$ref":"#/components/schemas/session_key"}]},"type":"array","example":["name","token","proto","ip"]},"extra":{"additionalProperties":{"type":"string"},"type":"object","description":"Some additional options."}}},"stream_stats":{"type":"object","properties":{"lifetime":{"type":"number","format":"milliseconds","description":"The time period in seconds during which the stream is being captured.\\nCan be calculated from `opened_at`\\n","x-api-allow":["central","watcher-core","watcher-client","watcher-admin"],"example":71977,"x-format-description":"milliseconds"},"last_dts_at":{"type":"number","format":"utc_ms","description":"The time when the last time frame was sent to the stream output (in UTC).","example":1636383841974,"x-api-allow":["watcher-client","watcher-core","watcher-admin","central"],"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"media_info":{"allOf":[{"$ref":"#/components/schemas/media_info"}],"description":"Technical information about the output media content.","x-api-allow":["watcher-client","watcher-core","watcher-admin","central","smartcam"]},"ts_delay":{"type":"number","format":"ticks","example":1284,"description":"The time period during which no frames were received from the stream\'s input.","x-api-allow":["central","watcher-core","watcher-client","watcher-admin"],"x-format-description":"ticks"},"status":{"description":"Indicates the status of the stream.\\n","allOf":[{"$ref":"#/components/schemas/stream_status"}],"x-api-allow":["watcher-client","watcher-core","watcher-admin","central","vision"]},"last_running_at":{"type":"integer","format":"utc_ms","description":"The last time when the stream was running.\\n","example":1737975543123,"x-api-allow":["central","central-layouter"],"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"input_error_rate":{"type":"integer","description":"The number of packets dropped per second.\\n\\nSwitch to `stream.stats.input.errors`\\n","example":0,"x-api-allow":["central","watcher-core","watcher-client","watcher-admin"],"deprecated":true,"x-delete-at":25.03},"bytes_in":{"type":"integer","format":"bytes","description":"The amount of stream data received from the input.\\n\\nUse `stream.stats.input.bytes`\\n","openmetrics_metric":"stream_bytes_in","x-metric-type":"counter","example":2445568,"x-api-allow":["watcher-core","central"],"deprecated":true,"x-delete-at":25.03,"x-format-description":"bytes"},"retry_count":{"type":"integer","description":"The number of attempts to restore the stream if `alive=false`.\\nUse `input.retries` instead\\n","openmetrics_metric":"stream_retry_count","x-metric-type":"counter","example":0,"x-api-allow":["central","watcher-core","watcher-client","watcher-admin"],"deprecated":true,"x-delete-at":25.03},"current_agent_id":{"type":"string","format":"agent_id","description":"The identifier of the Agent that is currently serving the stream.","x-api-allow":["watcher-core","central","watcher-client","watcher-admin"],"x-format-description":"agent_id"},"agent_status":{"enum":["connected","not_connected","rproxy_not_configured"],"type":"string","description":"The status of the Agent serving the stream.","x-api-allow":["watcher-core","central","watcher-client","watcher-admin"]},"dvr_info":{"description":"The information about the recorded DVR archive.","allOf":[{"$ref":"#/components/schemas/dvr_info"}],"x-api-allow":["watcher-client","watcher-core","watcher-admin","central","central-layouter"]},"alive":{"default":false,"type":"boolean","example":true,"description":"Becomes `false` when `ts_delay` > 12000 (= 12 seconds)","x-api-allow":["watcher-client","watcher-core","watcher-admin","central"]},"bitrate":{"type":"integer","format":"speed","description":"Stream bitrate.","openmetrics_metric":"stream_bitrate","x-metric-type":"gauge","example":186,"x-api-allow":["watcher-core","central","watcher-client","watcher-admin"],"x-format-description":"speed"},"running_on":{"type":"array","items":{"type":"string","format":"server_name","x-format-description":"server_name"},"description":"List of servers hostnames where the stream is running on.","example":["streamer1.example.com"],"x-api-allow":["central","watcher-core"]},"streaming_endpoint":{"description":"HTTP(s) URL that can be used for streaming API of this stream","type":"string","x-api-allow":["watcher-core","central","watcher-client","watcher-admin"]},"online_clients":{"type":"integer","format":"client_count","description":"The number of clients receiving the stream.\\nUse play.play_opened_sessions instead\\n","openmetrics_metric":"stream_online_clients","x-metric-type":"gauge","example":3,"x-api-allow":["watcher-core","central","watcher-client","watcher-admin"],"deprecated":true,"x-delete-at":25.04,"x-format-description":"client_count"},"bytes_out":{"type":"integer","format":"bytes","description":"The amount of stream data sent to the clients.","openmetrics_metric":"stream_bytes_out","x-metric-type":"counter","example":0,"x-api-allow":["watcher-core","central","watcher-client","watcher-admin"],"x-format-description":"bytes"},"id":{"type":"string","format":"uuid","description":"Runtime stream ID. Was used to identify different stream instances","example":"61893ba6-07b3-431b-b2f7-716ac1643953","deprecated":true,"x-delete-at":25.06,"x-format-description":"uuid"},"source_id":{"type":"string","format":"uuid","description":"Use `stream.stats.input.id` if you still need it. This is deprecated\\n","example":"61893be1-054e-4acc-8d24-8ed92efe6ad0","deprecated":true,"x-delete-at":25.04,"x-format-description":"uuid"},"opened_at":{"type":"integer","format":"utc_ms","description":"The time when the stream opened before authorization/connection completed(in UTC milliseconds).\\n","example":1636383729002,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"last_dts":{"type":"number","format":"ticks","description":"Last frame timestamp read from the stream.","example":383835646,"x-format-description":"ticks"},"backup_running":{"description":"Whether a backup is currently running.","type":"boolean"},"push":{"type":"array","items":{"$ref":"#/components/schemas/push_counters"},"description":"Per pusher statistic for the stream\\n"},"input":{"description":"Accumulated stats of stream input.\\n\\nThis is not a duplicate of `streams.inputs[N].stats`, but an accumulator of all active inputs.\\n","allOf":[{"$ref":"#/components/schemas/input_stats"}]},"inputs_duration":{"default":0,"format":"seconds","x-metric-type":"counter","title":"Input Duration","description":"Total duration of all inputs successfully captured since `opened_at` (counter)","type":"integer","deprecated":true,"x-delete-at":25.03,"x-format-description":"seconds"},"inputs_bytes":{"default":0,"format":"bytes","title":"Input Traffic","x-metric-type":"counter","description":"Total amount of data in all inputs captured since `opened_at` (counter)\\nUse `stream.stats.input.bytes`\\n","type":"integer","deprecated":true,"x-delete-at":25.03,"x-format-description":"bytes"},"input_bitrate":{"type":"integer","format":"speed","description":"Input bitrate.\\n\\nBetter calculate from input.bytes\\n","example":186,"x-format-description":"speed"},"dvr_enabled":{"description":"If DVR is enabled for the stream.","type":"boolean"},"dvr_replication":{"description":"If DVR replication is enabled for the stream.\\nReplication means that a DVR archive is stored on two (or more) Flussonic servers for reliability.\\n","type":"integer","format":"percent","deprecated":true,"x-delete-at":25.03,"x-format-description":"percent"},"dvr_replication_running":{"description":"If DVR replication is in progress for the stream.\\nReplication means that a DVR archive is stored on two (or more) Flussonic servers for reliability.\\n\\nRead `dvr_write_stats.segments_written_from_replication` instead\\n","type":"boolean","deprecated":true,"x-delete-at":25.03},"dvr_read_popularity":{"description":"DVR read popularity statistics\\nThis list of stats shows \\"read depth\\" -- how much segments are read from the ram, cache, local DVR or remote DVR.\\nIt also shows how segment\'s popularity changes from day to day. \\nThis information can be useful to decide how much disk space needed for DVR cache.\\n","allOf":[{"$ref":"#/components/schemas/dvr_read_popularity_stats"}]},"dvr_read_performance":{"description":"Various statistics on DVR archive read requests, such as read speed and failed requests.\\nThis list of stats shows \\"read performance\\" -- how fast segments were read and from what source the data was finally obtained\\n","allOf":[{"$ref":"#/components/schemas/dvr_read_performance_stats"}]},"dvr_write":{"description":"Various statistics for DVR archive writing\\n","allOf":[{"$ref":"#/components/schemas/dvr_write_counters"}]},"coder_error":{"type":"boolean","description":"Shows if there was any encoding error.\\nWas not fully implemented.\\n","deprecated":true,"x-delete-at":25.03},"running_transcoder":{"default":false,"type":"boolean","description":"If the transcoder is enabled for the stream."},"transcoder_overloaded":{"type":"boolean","openmetrics_metric":"stream_transcoder_overloaded","x-metric-type":"gauge","description":"If the transcoder is overloaded."},"start_running_at":{"type":"number","format":"utc_ms","description":"Date and time when `status = running` was set.","x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"srt_port_resolve":{"type":"boolean","example":false,"description":"This flag shows that the stream name was resolved via srt_port_resolve call.\\nSee [endpoint](https://flussonic.com/doc/api/config-external/#tag/srt/operation/srt_port_resolve)\\nand [listener](https://flussonic.com/doc/api/reference/#tag/config/operation/config_save%7Cbody%7Clisteners%7Csrt)\\nfor feature description.\\n"},"play":{"description":"Playback statistics\\n","allOf":[{"$ref":"#/components/schemas/play_counters"}]},"last_access_at":{"type":"number","format":"utc_ms","description":"Date and time the stream was accessed the last time.","example":1669106270979,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"output_bandwidth":{"type":"integer","format":"bps","x-metric-type":"gauge","title":"Output Bandwidth","description":"Upstream bandwidth on the time of the request.\\nThe same as `out_bandwidth`, but this is bits/s\\n\\nConsider using bytes_out instead.\\n","x-format-description":"bps"}}},"stream_status":{"type":"string","oneOf":[{"title":"Running","const":"running","description":"Input is OK, stream is ready to be served to your audience."},{"title":"Waiting","const":"waiting","description":"Flussonic awaits for input (publish) or it\'s an \'on demand\' stream waiting for client."},{"title":"Error","const":"error","description":"Something is wrong and Flussonic is not able to serve the stream to your audience."}]},"pusher_status":{"anyOf":[{"enum":["starting","pending","retry","error"],"type":"string"},{"allOf":[{"$ref":"#/components/schemas/session_status"}]}]},"pusher_standby_status":{"oneOf":[{"title":"Pusher is sending right now packets, because it does not see any traffic from main source.","const":"active"},{"title":"Pusher can see traffic from main source, so it is holding and does not send any packets.","const":"waiting"}]},"play_protocols_spec":{"type":"object","properties":{"whitelist":{"description":"- If set to `True`, server **allows** a playback only for listed protocols;\\n- If set to `False`, server **forbids** a playback only for listed protocols;\\n","default":false,"type":"boolean"},"hls":{"description":"Whether to allow or deny an HLS stream playback, depending on the `whitelist` properties.","type":"boolean"},"cmaf":{"description":"Whether to allow or deny an LL-HLS stream playback, depending on the `whitelist` properties.","type":"boolean"},"dash":{"description":"Whether to allow or deny a DASH stream playback, depending on the `whitelist` properties.","type":"boolean"},"player":{"description":"Whether to allow or deny playback in embed.html, depending on the `whitelist` properties.","type":"boolean"},"mss":{"description":"Whether to allow or deny an MSS stream playback, depending on the `whitelist` properties.","type":"boolean"},"rtmp":{"description":"Whether to allow or deny an RTMP stream playback, depending on the `whitelist` properties.","type":"boolean"},"rtsp":{"description":"Whether to allow or deny an RTSP stream playback, depending on the `whitelist` properties.","type":"boolean"},"m4f":{"description":"Whether to allow or deny an M4F stream playback, depending on the `whitelist` properties.","type":"boolean"},"m4s":{"description":"Whether to allow or deny an M4S stream playback, depending on the `whitelist` properties.","type":"boolean"},"mseld":{"description":"Whether to allow or deny an MSE-LD stream playback, depending on the `whitelist` properties.","type":"boolean"},"tshttp":{"description":"Whether to allow or deny an MPEG-TS stream playback over HTTP(S), depending on the `whitelist` properties.","type":"boolean"},"webrtc":{"description":"Whether to allow or deny an WebRTC stream playback, depending on the `whitelist` properties.","type":"boolean"},"srt":{"description":"Whether to allow or deny an SRT stream playback, depending on the `whitelist` properties.","type":"boolean"},"shoutcast":{"description":"Whether to allow or deny a SHOUTcast/Icecast stream playback, depending on the `whitelist` properties.","type":"boolean"},"mp4":{"description":"Whether to allow or deny an MP4 file download over HTTP(S), depending on the `whitelist` properties.\\nUsed to export DVR segment(s) in MP4 file.\\n","type":"boolean"},"jpeg":{"description":"Whether to allow or deny delivering JPEG thumbnails over HTTP(S), depending on the `whitelist` properties.","type":"boolean"},"api":{"description":"Whether to allow or deny API requests, depending on the `whitelist` properties.","type":"boolean"}}},"stream_config":{"allOf":[{"$ref":"#/components/schemas/stream_config_specific"},{"$ref":"#/components/schemas/stream_config_base"},{"$ref":"#/components/schemas/stream_config_input"},{"$ref":"#/components/schemas/stream_config_media"},{"$ref":"#/components/schemas/stream_config_onpremises"},{"$ref":"#/components/schemas/stream_config_single_media"},{"$ref":"#/components/schemas/stream_config_deprecated"},{"$ref":"#/components/schemas/stream_config_additional"}]},"stream_config_stripped":{"description":"This is a reduced configuration of stream that contains only actual used config.\\nCan compare it with stream_config that includes some runtime information and \\ninterpretation of stream config information, like config_on_disk\\n","allOf":[{"$ref":"#/components/schemas/stream_config_specific"},{"$ref":"#/components/schemas/stream_config_base"},{"$ref":"#/components/schemas/stream_config_input"},{"$ref":"#/components/schemas/stream_config_media"},{"$ref":"#/components/schemas/stream_config_onpremises"},{"$ref":"#/components/schemas/stream_config_single_media"},{"$ref":"#/components/schemas/stream_config_deprecated"}]},"stream_config_specific":{"type":"object","properties":{"name":{"type":"string","format":"media_name","description":"Globally unique stream name.","readOnly":true,"x-primary-key":true,"openmetrics_label":"name","examples":{"default":{"value":"hockey1"},"mylive/bunny":{"value":"mylive/bunny"},"decklink":{"value":"Decklink-Stream"},"dektec":{"value":"Dektec-Stream"},"test_stream":{"value":"test_stream"}},"x-api-allow":["watcher-client","watcher-core","watcher-admin","vision-config-external","smartcam","central-layouter","vision"],"x-format-description":"media_name"},"comment":{"description":"Human-readable description of the stream.\\n","type":"string","example":"This is a test stream","x-api-allow":["watcher-client","watcher-core","watcher-admin"]},"title":{"description":"Human-readable title of the stream. Provided for SDT MPEG-TS table or\\nSDP RTSP title parameter.\\n","type":"string","example":"Hockey channel","x-api-allow":["watcher-client","watcher-core","watcher-admin"]},"position":{"type":"integer","format":"sort_index","description":"Position of the stream in order of streams in the config file, if declared.","example":2,"x-format-description":"sort_index"},"named_by":{"allOf":[{"$ref":"#/components/schemas/named_by"}],"description":"Where the stream is initialized: config, user play/publication, or remote\\ncluster server.\\n","example":"config","readOnly":true},"srt_port_resolve":{"type":"boolean","example":false,"readOnly":true,"deprecated":true,"x-delete-at":24.06,"description":"Stream name was resolved via `srt_port_resolve` call.\\n\\nSee [endpoint](https://flussonic.com/doc/api/config-external/#tag/srt/operation/srt_port_resolve)\\nand [listener](https://flussonic.com/doc/api/reference/#tag/config/operation/config_save%7Cbody%7Clisteners%7Csrt)\\nfor feature description.\\n\\nThis parameter now lives in `stats` object.\\n"},"template":{"description":"Template of the stream.","type":"string","format":"media_name","example":"sports-hd","x-format-description":"media_name"},"recheck_secondary_inputs_interval":{"description":"How often to re-check secondary inputs. If this option is not set than check is never performed.","type":"integer","format":"seconds","example":120,"x-format-description":"seconds"}},"required":["name"]},"stream_config_base":{"type":"object","properties":{"static":{"default":true,"description":"Whether a stream is `static` or not. \\nIf set to `True` the server will try to keep this stream running even if\\nthere are no viewers or errors encountered.\\n\\nStreamer restarts *all* `static` streams even if any internal errors occur\\nand the `static` streams crash.\\n","type":"boolean","example":true,"x-api-allow":["watcher-core","watcher-client","watcher-admin"]},"disabled":{"description":"Whether a stream is disabled. Disabled streams are inactive and do not run. \\nDisplayed only with the API calls.\\n","type":"boolean","example":false,"x-api-allow":["watcher-core","watcher-client","watcher-admin","central-layouter"]}}},"stream_config_input":{"type":"object","properties":{"inputs":{"description":"List of stream inputs. \\n***Important:*** A stream without any inputs can receive video frames **only** if backup file is specified.\\n","items":{"allOf":[{"$ref":"#/components/schemas/stream_input"}]},"type":"array","x-api-allow":["smartcam","watcher-core","vision-config-external","watcher-client","watcher-admin","central-layouter"]},"input_media_info":{"description":"Use this option for fine-grained control over each input track.\\n\\nYou can select, rename, change name and title for each video, audio track.\\n","allOf":[{"$ref":"#/components/schemas/input_media_info"}]},"provider":{"description":"Human-readable name of the content provider. Used, for example, for MPEG-TS.\\n\\nDeprecated, use `input_media_info.provider` instead\\n","type":"string","example":"SportsTV","deprecated":true,"x-delete-at":25.03},"dvbocr":{"description":"This parameter allows to manage subtitles in an output stream.\\n","oneOf":[{"const":"replace","description":"An output stream will have a track containing subtitles converted to a text format (WebVTT)."},{"const":"add","description":"An output stream will have two tracks containing subtitles: \\nthe original track with subtitles in DVB and a new track with text subtitles.\\n"}],"example":"replace"},"source_timeout":{"description":"If a connected source does not send any data within this timeout period (in seconds), \\nthe source connection is considered to be lost.\\nThis is a default configuration for a stream, can be modified for any input.\\n","anyOf":[{"type":"integer","format":"seconds","x-format-description":"seconds"},{"enum":[false],"type":"boolean"}],"example":10,"x-api-allow":["watcher-core"]},"video_timeout":{"description":"If a connected source does not send video data within this timeout period (in seconds), \\nthe source connection is considered to be lost.\\nThis is a default configuration for a stream, can be modified for any input.\\n","type":"integer","format":"seconds","example":20,"x-api-allow":["watcher-core"],"x-format-description":"seconds"},"audio_timeout":{"description":"If a connected source does not send audio data within this timeout period (in seconds), \\nthe source connection is considered to be lost.\\nThis is a default configuration for a stream, can be modified for any input.\\n","type":"integer","format":"seconds","example":20,"x-api-allow":["watcher-core"],"x-format-description":"seconds"},"max_retry_timeout":{"description":"The maximum time that Media Server will set for attempts to reconnect to sources when source problems occur.\\nThe time between attempts is not linear and may increase if source problems are not fixed. This parameter limits this value, but the time itself between attempts may be longer.\\n","type":"integer","format":"seconds","example":30,"minimum":1,"x-api-allow":["watcher-core"],"x-format-description":"seconds"},"silencedetect":{"x-private":true,"description":"Configuration of silence detection for the stream.","allOf":[{"$ref":"#/components/schemas/silencedetect_spec"}]},"motion_detector":{"x-private":true,"description":"Configuration of motion detection for a stream.","allOf":[{"$ref":"#/components/schemas/motion_detector_spec"}],"x-api-allow":["watcher-core"]},"backup":{"description":"When all inputs are down, this can be used to show at least something to users.\\nIt is important to understand that backup video behaves differently, not as inputs. \\nIt is not a _last input_ in the list. After any input stops sending frames, timer starts.\\nAfter `source_timeout` seconds backup starts working, while all other inputs are still trying to\\nconnect and start working.\\nSo backup and all inputs are working in parallel.\\n","allOf":[{"$ref":"#/components/schemas/backup_config"}],"x-api-allow":["watcher-core"]},"epg_enabled":{"description":"Whether to extract EPG from the input.","type":"boolean","example":true},"nomedia":{"x-private":true,"description":"The stream does not expected to have video or audio tracks.\\nWe need this flag to receive mpegts consisting of EIT PSIs only and pass it to mutiplexor.\\n","default":false,"type":"boolean"},"mpegts_ac3":{"description":"It allows to specify pack information about ac3 for outgoing MPEGTS-TS streams. The default value is `system_b`.","allOf":[{"$ref":"#/components/schemas/output_mpegts_ac3"}]},"password":{"description":"Specify a password when publishing a password-protected stream.\\n\\nThe password is passed unencrypted in a query string. \\nSome protocols may additionally offer built-in tools for stream protection, \\nfor example you can use `passphrase` for SRT publications.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/publish-video-on-media-server/#live-publish-on_publish"},"type":"string"}}},"stream_config_media":{"type":"object","properties":{"clients_timeout":{"description":"Stream\'s lifetime after the last client was disconnected (can be expressed in *seconds* or set to `False`). \\nApplicable to on-demand streams **only**. \\n","anyOf":[{"type":"integer"},{"type":"boolean"}],"example":485,"x-api-allow":["watcher-core"]},"retry_limit":{"description":"Number of attempts for the server to reconnect to a data source.\\nApplicable to on-demand streams **only**. If not defined, server will constantly try to reconnect (unlimited number of retries). \\nIf the input does not become active after specified amount of attempts, stream shuts down till the next user request.\\n","type":"integer","x-api-allow":["watcher-core"]},"transcoder":{"description":"Configuration of the transcoder settings.","allOf":[{"$ref":"#/components/schemas/transcoder_opts"}],"examples":{"mylive/bunny":{"value":{}}},"x-api-allow":["smartcam","central-layouter"]},"logo":{"x-private":true,"x-notice":"not documented yet","description":"Overlay logo.","allOf":[{"$ref":"#/components/schemas/web_logo_spec"}]},"thumbnails":{"description":"Configuration of thumbnails generator.","allOf":[{"$ref":"#/components/schemas/thumbnails_spec"}],"x-api-allow":["watcher-core"]},"jpeg_snapshot_sign_key":{"description":"A key to sign jpeg_snapshot requests","type":"string","x-api-allow":["watcher-core"]},"dvr":{"description":"DVR configuraton.","allOf":[{"$ref":"#/components/schemas/stream_dvr_spec"}],"x-api-allow":["watcher-core","watcher-admin","watcher-client","central-layouter"]},"on_play":{"description":"Configuration of authorization backend for play sessions.","externalDocs":{"description":"Find more information about `on_play` and `on_publish` here.","url":"https://flussonic.com/doc/authorize-clients/#auth-on_play-on_publish"},"allOf":[{"$ref":"#/components/schemas/auth_spec"}],"x-api-allow":["watcher-core"]},"on_publish":{"description":"Configuration of authorization backend for publish sessions.","allOf":[{"$ref":"#/components/schemas/auth_spec"}]},"drm":{"description":"Configuraton of Digital Rights Management system (DRM).","allOf":[{"$ref":"#/components/schemas/drm_spec"}]},"protocols":{"description":"Configuration to allow/forbid playing the stream via various protocols. \\n- If the `whitelist` option is set to \'true\', the server allows a playback only for listed protocols;\\n- If the `whitelist` option is set to \'false\', the server forbids a playback for listed protocols;\\n- Server allows a playback for all the protocols by default.\\n","allOf":[{"$ref":"#/components/schemas/play_protocols_spec"}]},"prepush":{"description":"The time (in seconds) that Media Server reserves for preloading the data, i. e. *buffering*.\\nPrepush is always defined through GoP, but this option provides you with a more flexible way\\nto configure the buffer size, e. g. a 1-3 or 7-10 seconds time interval.\\n\\nThe bigger the buffer size, the better the user experience is for the users\\nwith a bad internet connection. However, the latency also increases.\\n\\nIf set to `False` to remove the latency, the stream\'s start time \\nincreases. To decrease it, reduce the GoP size and make the bitrate higher \\nor the video quality lower.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/technology-glossary/#glossary-prepush"},"anyOf":[{"type":"boolean"},{"type":"integer"}],"example":false,"x-api-allow":["watcher-core"]},"cmaf_enabled":{"x-private":true,"x-notice":"this should be opt-out in `protocols`, not here","description":"Whether CMAF is enabled for the HLS protocol.","type":"boolean","example":true,"deprecated":true,"x-deleted-at":24.05},"segment_count":{"description":"Number of segments stored in memory for the segment-based protocols, such as HLS and DASH.\\nAdded to HLS live manifest. Do not forget that one more segment is stored for stale clients\\nthat come too late, but the latest segment is not shown in the manifest.\\n","type":"integer","example":4},"segment_duration":{"description":"The time of the segment duration. Used for the protocols like HLS or DASH. \\nThe disk config offers this value in seconds.\\n","allOf":[{"$ref":"#/components/schemas/segment_duration"}],"example":5000},"chunk_duration":{"description":"Chunk duration in LL-HLS manifest to be used for tunning latency.","type":"integer","format":"milliseconds","example":200,"x-format-description":"milliseconds"},"dash_update_period":{"description":"The option allows to override \\"minimumUpdatePeriod\\" attribute in DASH manifest.\\nIn fact the option controls how often a client will request an updated manifest.\\nPlease notice that it may broke playback, we recommend use it at your own risk.\\n","type":"integer","format":"milliseconds","example":270000000,"x-private":true,"x-format-description":"milliseconds"},"url_prefix":{"description":"A string starting the addresses of separate segments within a *segment-based* playlists (HLS or DASH).\\nEach sub-playlist is stored on Media Server.\\n\\nIf set to `false`, the configured value in a template will be disabled. \\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/configure-similar-streams-with-templates/#global-options-of-streams"},"allOf":[{"$ref":"#/components/schemas/url_prefix"}]},"hls_scte35":{"description":"Whether to enable SCTE-35 ad insertion markers signaling in HLS manifest.\\nAd markers can be included in SCTE-35 (`scte35`), AWS (`aws`), EXT-X-DATERANGE (`rfc8216`) formats or not included (`false`).\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/advertisement-scte-markers/","type":"string"},"oneOf":[{"title":"aws","const":"aws","description":"AWS format"},{"title":"scte35","const":"scte35","description":"ANSI SCTE35 format"},{"title":"rfc8216","const":"rfc8216","description":"Apple RFC 8216 EXT-X-DATERANGE format"}],"example":"scte35"},"add_audio_only":{"description":"Whether to add an audio-only version of an HLS stream. \\nUsed to create App Store compliant HLS streams to deliver the content to Apple iOS devices. \\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/what-is-live-stream/#live-audio_only_hls"},"type":"boolean","example":true},"substyle":{"x-private":true,"x-notice":"This option should be renamed to something more clear","description":"Subtitles style configuration.","allOf":[{"$ref":"#/components/schemas/subtitle_style"}]},"webrtc_abr":{"description":"WebRTC play configuration for a stream.","allOf":[{"$ref":"#/components/schemas/webrtc_abr_opts"}]},"pushes":{"description":"A list of pushes. When a server initiates the connection and sends a stream \\nto other server(s), it is called a `push`. \\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/push-video-from-media-server/"},"items":{"allOf":[{"$ref":"#/components/schemas/stream_push"}]},"type":"array","x-api-allow":["watcher-core","watcher-admin"]},"mpegts_pids":{"description":"This parameter sets PIDs values for outgoing MPEG-TS streams. PID contains information about the TS package content and can be decoded according to special service tables. \\nIt is possible to set PID values for PMT, SDT, video, and audio tracks. Tracks are numbered starting from one. \\nThe code `a1=123` sets a PID value for the first audio track. It is possible to set the base index for the tracks of a certain type using the 0 (zero) index. \\nFor example, `t0=100` sets PID=101 for the first track, 102 for the second, and so on. Numbers can be given in decimal form (by default) or hexadecimal with 16# prefix. \\n","allOf":[{"$ref":"#/components/schemas/output_mpegts_pids"}]},"labels":{"type":"object","additionalProperties":{"type":"string","maxLength":40,"minLength":1},"maxItems":10,"x-key-type":"string","description":"Stream labels in key value format.","x-api-description":{"central-layouter":"Stream labels in key value format.\\nYou can use labels to control the desired stream layout.\\n\\nNote, that if you are using a multi-stream agent (i.e. multiple streams use the same agent in their inputs),\\nthen the labels of these streams **must** be the same. Otherwise, one or more streams will not work.\\n\\nLayouter can process next labels:\\n\\n- With `required_` prefix. If stream has `required_x=y` label, layouter will provision stream only to nodes with label `x=y`.\\nIf there are no available nodes with label `x=y`, then the stream will not be provisioned. \\n\\n**Use cases**\\n\\nSuppose you have a server used to test new hardware models, and you want the new streams to be provisioned only to the test nodes.\\nTo provide this layout you can add the `required_env=test` label for stream and the `env=test` label for test nodes.\\n"},"examples":[{"key1":"value1","key2":"value2"},{"required_env":"test","location":"eu"}],"x-api-allow":["watcher-core","central-layouter","watcher-admin"]},"playback_headers":{"description":"This parameter sets playback HTTP headers for streams.\\n","items":{"$ref":"#/components/schemas/playback_headers"},"maxItems":10,"type":"array"}}},"stream_config_onpremises":{"type":"object","properties":{"debug_stream":{"x-private":true,"description":"Configuration of recording the stream sessions data. Recommended for debugging needs **only**.","allOf":[{"$ref":"#/components/schemas/debug_stream_spec"}]},"meta":{"additionalProperties":{"type":"string"},"type":"object","description":"The param is deprecated and now used only for onvif_url and onvif_profile options.","deprecated":true,"x-delete-at":23.12},"vision":{"allOf":[{"$ref":"#/components/schemas/vision_spec"}],"description":"Video analytics parameters.","x-api-allow":["vision-config-external","smartcam","vision","watcher-core","watcher-admin","watcher-client","central-layouter"]},"cluster_ingest":{"description":"Server configuration for a cluster ingest group.\\nUsed to connect several servers between each other to capture the stream(s) and prevent the failover when one of the servers (peers) fails.\\nLearn more about cluster ingest in [How to add failover to input](https://flussonic.com/doc/ingest-failover-with-cluster/#ingest-failover-with-cluster).\\n","allOf":[{"$ref":"#/components/schemas/cluster_ingest_config"}]},"cache":{"description":"Configuration of DVR cache.","allOf":[{"$ref":"#/components/schemas/cache_spec"}]},"pulse_off":{"description":"If this option is enabled, the data about playing the stream is not collected for the Pulse tab in Flussonic UI.","x-private":true,"type":"boolean","x-notice":"Do not collect pulse data for this stream."}}},"stream_config_single_media":{"type":"object","properties":{"srt_publish":{"description":"SRT publishing configuration for a stream.","allOf":[{"$ref":"#/components/schemas/srt_config"}]},"srt2_publish":{"description":"SRT2 publishing configuration for a stream.","allOf":[{"$ref":"#/components/schemas/srt_config"}]},"srt":{"description":"A port used for playing SRT streams. Can be set in global settings or for a particular stream. \\nIf it is used in the configuration, Flussonic works as a \\"Listener\\" and receives connection requests from a source working as a \\"Caller\\".\\nLearn more in [SRT port](https://flussonic.com/doc/srt-protocol/#srt_ports).\\n","allOf":[{"$ref":"#/components/schemas/listen_spec"}],"example":9060},"srt2":{"description":"A port used for playing SRT2 streams. Can be set in global settings or for a particular stream.\\nIf it is used in the configuration, Flussonic works as a \\"Listener\\" and receives connection requests from a source working as a \\"Caller\\".\\nLearn more in [SRT port](https://flussonic.com/doc/srt-protocol/#srt_ports).\\n","allOf":[{"$ref":"#/components/schemas/listen_spec"}],"example":9062},"srt_play":{"description":"SRT play configuration for a stream.","allOf":[{"$ref":"#/components/schemas/srt_config"}]},"srt2_play":{"description":"SRT2 play configuration for a stream.","allOf":[{"$ref":"#/components/schemas/srt_config"}]}}},"stream_config_deprecated":{"type":"object","properties":{"aac_ab":{"type":"integer","description":"Bitrate of the AAC audio track."},"output_audio":{"allOf":[{"$ref":"#/components/schemas/output_audio"}],"description":"Audio transcoding options."},"prefer_codec":{"allOf":[{"$ref":"#/components/schemas/webrtc_prefer_video_codec"}],"description":"Preferred codec for WebRTC."},"transport":{"allOf":[{"$ref":"#/components/schemas/webrtc_transport"}],"description":"Transport protocol for WebRTC."},"max_bitrate":{"type":"integer","format":"speed","description":"Maximum bitrate for WebRTC.","x-format-description":"speed"},"min_bitrate":{"type":"integer","description":"Minimum bitrate for WebRTC."},"frames_timeout":{"type":"integer","description":"Specifies the period of time, in seconds, \\nfor which Flussonic Media Server waits for new frames to come from the data source \\nbefore it generates the `frames_timed_out` event that informs you that the source might soon be lost. \\nThis period of time must be smaller than `source_timeout`. \\nIf frames come again from this source, before `source_timeout` has passed, Flussonic issues the `frames_restored` event.\\n"},"abr_stepup":{"type":"integer","description":"Increment step for raising the bitrate to the maximum, in percent. The default step is 30%. \\nIf the loss is less than `abr_loss_lower`, \\nFlussonic makes the publisher to step up from the current bitrate to the maximum one with the rate of `abr_stepup percent`.\\n"},"abr_correction":{"type":"integer","description":"The correction between the target bitrate (Receiver Estimated Maximum Bitrate, calculated in Flussonic) and browser bitrate, in kbit/s.\\nFlussonic sends the target bitrate to the browser from which the publication is carried out so that the browser adjusts the bitrate of the publication by this value.\\nThe default value is 300 kbit/s.\\n"},"abr_loss_lower":{"type":"number","description":"The lower limit of packet loss. When it is reached, Flussonic raises the bitrate. \\nThat is, if packet loss is less than `abr_loss_lower`, Flussonic makes the publisher to step up from the current bitrate to the maximum one with the rate of `abr_stepup` percent.\\n"},"abr_loss_upper":{"type":"number","description":"The upper limit of packet loss. When it is reached, Flussonic reduces the bitrate. \\nThat is, if packet loss is greater than `abr_loss_upper`, Flussonic makes the publisher to reduce the current bitrate in steps with the maximum rate of `abr_stepdown` percent.\\n"},"abr_stepdown":{"type":"number","description":"A step of reducing the bitrate to the minimum. \\nIf packet losses are greater than `abr_loss_upper`, Flussonic makes the publisher to reduce the current bitrate in steps with the maximum rate of `abr_stepdown` percent.\\n"},"abr_mode":{"type":"integer","description":"The algorithm for determining the need to change the bitrate of the published stream and for calculating the target bitrate. \\nTwo options are possible:\\n\\n* `abr_mode=0` - This mode takes into account the packet losses, target bitrate, browser bitrate and the number of auto-adjustment cycles.\\n* `abr_mode=1` - This mode considers only packet losses and target bitrate.\\n"},"abr_debug":{"type":"integer","description":"Whether adaptive bitrate process is logged."},"abr_cycles":{"type":"integer","description":"The number of cycles of bitrate auto-adjustment.\\nAfter the specified number of auto-adjustment cycles passes, Flussonic considers the bitrate to be optimal, and it is no longer analyzed. \\nBy default, `abr_cycles`=5. \\nIf `abr_cycles`=0, the adjustment process takes place all the time while the publication lasts.\\n"}}},"stream_config_additional":{"type":"object","properties":{"config_on_disk":{"description":"Part of the effective config from the configuration file.","allOf":[{"$ref":"#/components/schemas/stream_config_stripped"}]},"stats":{"description":"Stream\'s metrics and other statistical information.","allOf":[{"$ref":"#/components/schemas/stream_stats"}],"readOnly":true,"x-api-allow":["watcher-client","watcher-core","watcher-admin","smartcam","vision","central-layouter"]},"project_id":{"type":"string","format":"base62","example":"aBc","description":"Project ID","x-format-description":"base62"},"egress_hostnames":{"allOf":[{"$ref":"#/components/schemas/cloud_hostnames"}],"description":"Egress hostname (hls, dash, ...) only for Admin UI, not public API.\\nNeed for cloud only for replace window.location\\n","x-private":true,"example":["egress-1.example.com","egress-2.example.com"]},"ingress_hostnames":{"allOf":[{"$ref":"#/components/schemas/cloud_hostnames"}],"description":"Igress hostname (hls, dash, ...) only for Admin UI, not public API.\\nNeed for cloud only for replace window.location \\n","x-private":true,"example":["igress-1.example.com","igress-2.example.com"]}}},"push_counters":{"type":"object","properties":{"url":{"description":"Obfuscated URL where to push to","type":"string","format":"input_url","x-format-description":"input_url"},"opened_at":{"type":"integer","format":"utc_ms","description":"The time in milliseconds when the pusher instance was created.","x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"status":{"description":"State of the push session.","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/sessions-in-media-server/#events-and-session-states"},"allOf":[{"$ref":"#/components/schemas/pusher_status"}]},"standby_status":{"description":"State of the standby push.","allOf":[{"$ref":"#/components/schemas/pusher_standby_status"}]},"bytes":{"type":"integer","format":"bytes","description":"Total amount of bytes sent since the pusher was created.","x-format-description":"bytes"},"frames":{"type":"integer","description":"Number of frames sent by this pusher.\\n"},"segments":{"type":"integer","description":"Number of segments sent by this pusher.\\n"},"pusher_restarts":{"description":"How many times pusher was restarted","type":"integer"},"errors_stop_overloaded":{"description":"How many times pusher was stopped due to overload","type":"integer"},"errors_dropped_frames":{"description":"Number of dropped frames","type":"integer"},"errors_dropped_segments":{"description":"Number of dropped segments","type":"integer"},"pids":{"type":"array","items":{"$ref":"#/components/schemas/push_pid_counters"},"description":"Per pid statistics for MPEG-TS encoding calculated for the pusher\\n"},"sys_fillers_bytes":{"description":"The fillers bytes count for system traffic.","type":"integer","format":"bytes","x-format-description":"bytes"},"sys_payload_bytes":{"description":"The payload bytes count for system traffic.","type":"integer","format":"bytes","x-format-description":"bytes"},"sys_stuffing_packets":{"description":"The stuff packets count for system traffic.","type":"integer"},"encoded_bytes":{"description":"The encoded bytes count.","type":"integer","format":"bytes","x-format-description":"bytes"},"resent_packets":{"description":"Number of retries since the last successful push.","type":"integer"},"errors_device_not_opened":{"description":"How much times pusher was unable to open (attach to) device for pushing","type":"integer"},"errors_device_buffer_overflow":{"description":"How many times internal device buffer was overflowed.","type":"integer"},"errors_audio_frame_decode":{"description":"Number of errors during of audio frame decoding to raw format.","type":"integer"},"errors_video_frame_decode":{"description":"Number of errors during of video frame decoding to raw format.","type":"integer"},"errors_no_destination":{"description":"How many times pusher did not establish connection because of destination peer is not reached","type":"integer"},"errors_tls":{"description":"How many times pusher got TLS errors.","type":"integer"},"errors_connection_lost":{"description":"How many times pusher unexpectedly lost connection with peer","type":"integer"},"errors_401":{"type":"integer","description":"How many times we\'ve got 401 (unauthorized).\\n"},"errors_403":{"type":"integer","description":"How many times we\'ve got 403 (forbidden).\\n"},"errors_404":{"type":"integer","description":"How many times we\'ve got 404 (enoent).\\n"},"errors_409":{"type":"integer","description":"How many times we\'ve got 409 (double_publish_denied).\\n"},"errors_500":{"type":"integer","description":"How many times we\'ve got 500 (server_error).\\n"},"errors_redirect_limit":{"type":"integer","description":"How many times pusher was stopped because of redirect limit is reached\\n"},"errors_not_authorized":{"description":"How many times pusher did not establish connection because of missing or wrong credentials","type":"integer"},"genlock_status":{"description":"SDI card output clock-lock state.","allOf":[{"$ref":"#/components/schemas/genlock_status"}]},"genref_status":{"description":"SDI card reference port (Ref In Port) status.","allOf":[{"$ref":"#/components/schemas/genref_status"}]}}},"push_pid_counters":{"type":"object","required":["pid"],"properties":{"pid":{"description":"Related MPEG-TS pid","type":"integer"},"pnr":{"description":"What program does have this pid","type":"integer"},"packets":{"description":"How many MPEG-TS packets with 188 bytes on this pid produced\\n","type":"integer"},"payload_bytes":{"description":"The payload bytes count.","type":"integer","format":"bytes","x-format-description":"bytes"},"fillers_bytes":{"type":"integer","format":"bytes","description":"How many bytes were seen in NAL fillers\\n","x-format-description":"bytes"},"stuffing_packets":{"description":"The stuff packets count.","type":"integer"},"trimmed_bytes":{"description":"The trimmed bytes count.","type":"integer","format":"bytes","x-format-description":"bytes"},"trimmed_frames":{"description":"The trimmed frames count.","type":"integer"}}},"silencedetect_spec":{"type":"object","required":["noise"],"properties":{"duration":{"description":"The duration, in seconds, of a continuous time interval during which silence must last for Flussonic to generate the `audio_silence_detected` event.","type":"integer","format":"seconds","example":20,"x-format-description":"seconds"},"interval":{"description":"Flussonic will keep sending the `audio_silence_detected` event once upon the specified time interval until the sound reappears in the source.","type":"integer","example":10},"noise":{"description":"The threshold value of the sound level, in dB. \\nSound of this and lower level will be considered by Flussonic as silence.\\n","type":"number","format":"decibels","example":-30,"x-format-description":"decibels"}}},"vbi_lines":{"type":"object","properties":{"service":{"description":"The service information passed to VBI of the output analog stream.\\nThe allowed value is `ttxt` - teletext.\\n","allOf":[{"$ref":"#/components/schemas/vbi_service"}]},"lines":{"description":"Numbers of VBI lines that will carry a teletext track.","items":{"allOf":[{"$ref":"#/components/schemas/vbi_line"}]},"type":"array"}}},"scale_algorithm":{"enum":["fast_bilinear","bilinear","bicubic","experimental","neighbor","area","bicublin","gauss","sinc","lanczos","spline"],"type":"string"},"web_logo_spec":{"type":"object","properties":{"path":{"description":"Path to the logo file.\\nIf specified without the `@` in the beginning, the logo will be served from the webroot (***not recommended***).\\nIf specified with the `@` in the beginning, the logo will be served from the special directory and can be\\nmanaged by the logo API.\\n","type":"string","format":"logo_path","example":"@chan.png","x-format-description":"logo_path"},"height":{"description":"Set the specified height for the logo.","type":"integer","example":100},"width":{"description":"Set the specified width for the logo.","type":"integer","example":200},"left":{"description":"Change the position of the logo to the left.","type":"integer","example":15},"top":{"description":"Change the position of the logo to the top.","type":"integer","example":15},"right":{"description":"Change the position of the logo to the right.","type":"integer"},"bottom":{"description":"Change the position of the logo to the bottom.","type":"integer"}}},"map_spec":{"type":"object","properties":{"latitude":{"description":"Geographic latitude.","type":"number","example":55.7512},"longitude":{"description":"Geographic longitude.","type":"number","example":37.6184}},"required":["latitude","longitude"]},"network_port":{"maximum":65535,"minimum":0,"type":"integer"},"listen_spec":{"anyOf":[{"allOf":[{"$ref":"#/components/schemas/network_port"}]},{"type":"string","format":"hostport","x-format-description":"Hostname with port"}]},"listeners":{"type":"object","properties":{"http":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_http_config"}]},"description":"List of HTTP ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":80,"api":false}]}},"x-api-allow":["watcher-admin"]},"https":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_https_config"}]},"description":"List of HTTPS ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":443}]}}},"rtmp":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_config"}]},"description":"List of RTMP ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":1935}]}}},"rtmps":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_rtmps_config"}]},"description":"List of RTMPS ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":1936}]}}},"rtsp":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_config"}]},"description":"List of RTSP ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":554}]}}},"rtsps":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_rtsps_config"}]},"description":"List of RTSPS ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":555}]}}},"turn":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_config"}]},"description":"List of TURN ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":3478}]}}},"snmp":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_config"}]},"description":"List of SNMP ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":161}]}}},"sip":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_config"}]},"description":"List of SIP ports or `host:port` pairs that will be used for listening.","examples":{"default":{"value":[{"port":5060}]}}},"srt":{"description":"The list of port ranges or `host:port-range` pairs that may be in use for playing SRT or accepting SRT publications \\n(depending on the `mode` parameter).\\n\\nWhen playing from or publishing to one of the ports from the range using `srt://server:port` URL with `stream_id` not specified,\\nMedia Server requests the stream name from `config_external` backend using \\n[GET /srt_port_resolve/{port}](https://flussonic.com/doc/api/config-external/#tag/srt/operation/srt_port_resolve) endpoint\\nand uses the stream with such name for further playback or publishing.\\n\\nSo for resolving a stream name by SRT port you need:\\n\\n* `srt` ranges set (this option)\\n* `config_external` option set in Media Server\\n* `/streams` and `/srt_port_resolve` endpoints implemented on the config backend side\\n* a stream name in the provisioned external config equals to the name returned by `/srt_port_resolve` for the specified port.\\n\\nNote that you should use `stream.srt_publish` and `stream.srt_play` options \\nfor SRT-specific settings of streams involved to `/srt_port_resolve` logics.\\n","type":"array","items":{"allOf":[{"$ref":"#/components/schemas/listen_srt_config"}]}}}},"listen_config":{"type":"object","properties":{"port":{"type":"integer","format":"network_port","description":"Port that will be used for listening.","example":80,"x-primary-key":true,"x-format-description":"network_port"},"address":{"type":"string","description":"Network address that will be used for listening.","example":"10.0.35.1"}},"required":["port"]},"listen_ssl_config":{"type":"object","properties":{"ssl_protocols":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/tls_version"}]},"description":"List of SSL protocol versions that will be used for listening.","example":["tlsv1.1","tlsv1.2"]},"certificate":{"type":"string","description":"Path to ssl certificate","example":"/etc/letsencrypt/live/central/fullchain.pem"},"certificate_key":{"type":"string","description":"Path to ssl certificate key","example":"/etc/letsencrypt/live/central/privkey.pem"}}},"listen_http_config":{"allOf":[{"$ref":"#/components/schemas/listen_config"},{"$ref":"#/components/schemas/listen_http_config_params"}]},"listen_http_config_params":{"type":"object","properties":{"api":{"type":"boolean","default":true,"description":"If false, listener do not serve api calls."},"read_timeout":{"type":"integer","description":"Time from when the connection is accepted to when the request body is fully read","example":5},"write_timeout":{"type":"integer","description":"Time from the end of the request header read to the end of the response write","example":5}}},"listen_https_config":{"allOf":[{"$ref":"#/components/schemas/listen_http_config"},{"$ref":"#/components/schemas/listen_ssl_config"}]},"session_key_query":{"format":"query_session_key","type":"string","x-format-description":"query_session_key"},"input_stats":{"allOf":[{"type":"object","properties":{"ip":{"type":"string","description":"IP address of the connected peer.","example":"172.16.25.73"},"proto":{"allOf":[{"$ref":"#/components/schemas/protocol"}],"description":"Protocol used for the data transmission in the session.","example":"dash"},"opened_at":{"type":"number","format":"utc_ms","description":"The time when this session was created.","example":1637094994000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"media_info":{"allOf":[{"$ref":"#/components/schemas/media_info"}],"description":"Technical description of the input content.\\n"},"ts_delay":{"type":"number","format":"ticks","example":1284,"description":"The time period during which no frames were received from the stream\'s input.\\n","x-format-description":"ticks"},"ts_delay_per_tracks":{"type":"array","items":{"type":"number","format":"ticks","x-format-description":"ticks"},"example":[1284],"description":"The time period during which no frames were received per each track according to `media_info`\\n"},"url":{"type":"string","format":"url","description":"Final URL after redirects.\\n\\nDeprecated because was never actually used.\\n","example":"udp://239.0.0.1:1234","deprecated":true,"x-delete-at":25.03,"x-format-description":"url"},"user_agent":{"type":"string","description":"Client\'s user agent for selected protocol.","example":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML. like Gecko) Chrome/90.0.4430.72 Safari/537.36"},"active":{"description":"Whether this input is selected as active for the stream.","type":"boolean","example":true},"dvr_info":{"description":"Information about DVR that this input has\\n","allOf":[{"$ref":"#/components/schemas/dvr_info"}]}}},{"$ref":"#/components/schemas/input_counters"}]},"input_counters":{"type":"object","description":"Here are grouped different counters for sessions: generic and errors\\n","properties":{"bytes":{"type":"integer","format":"bytes","default":0,"description":"Number of bytes received by this stream from outside.\\nIt will be counted before transcoding and will sum all inputs working together.\\n","openmetrics_metric":"stream_input_bytes","x-format-description":"bytes"},"frames":{"type":"integer","default":0,"description":"Number of frames passed to this stream from the inputs.\\n"},"retries":{"type":"integer","description":"How many times has this stream retried to connect to source"},"media_info_changes":{"type":"integer","description":"Indicates, how often does media_info changes\\n"},"valid_secondary_inputs":{"description":"Number of secondary inputs that have no problems.","type":"integer","example":2},"invalid_secondary_inputs":{"description":"Number of secondary inputs that have some problems.","type":"integer","example":0},"resync_count_normal":{"type":"integer","description":"Stream timestamps are synchronized with real time. This counter tells, how many times\\nit was syncronized after source reconnect.\\n"},"resync_count_jump":{"type":"integer","description":"Source may change timestamps without any signalling. This counter indicates how bad is the source\\n"},"resync_count_drift":{"type":"integer","description":"Source may send frames timestamps faster or slower than realtime.\\nLive stream will catch it and resync. This counter indicates how many times did it happened.\\n"},"reorder_count":{"type":"integer","description":"Source may send frames not in the order they should be played. It will be catched and reordered.\\nThis counter indicates how many times did it happened.\\n"},"ad_splices_ingested":{"type":"integer","description":"How many Ad markers passed to this stream from the inputs.\\n"},"ad_splices_inserted":{"type":"integer","description":"How many Ad markers inserted to this stream by user.\\n"},"srt":{"type":"object","$ref":"#/components/schemas/input_srt_counters"},"onvif":{"type":"object","$ref":"#/components/schemas/input_onvif_events_counters"},"errors":{"type":"integer","description":"Sum of all other specific errors. Can be used for triggering alert on any error\\n","example":0},"errors_lost_packets":{"type":"integer","description":"RTP, MPEG-TS or other protocols have enough information to tell how many packets were lost\\n"},"errors_decoder_reset":{"type":"integer","description":"Decoder reset count due to abnormal DTS change. Can happen in MPEG-TS, RTP.\\n"},"errors_broken_payload":{"type":"integer","description":"Demultiplexing was done right, but content is broken.\\n"},"errors_dropped_frames":{"type":"integer","description":"Dropped frames count due timestamp adjustment.\\n"},"errors_desync":{"type":"integer","description":"This can be used as a `TS_sync_loss` - how many times MPEG-TS sync was lost.\\n\\nAlso this counter refers to RTSP desync, when camera starts dropping TCP data and\\nwe have to find packet boundaries.\\n\\nHere we write count of such resynchronizations.\\n"},"errors_ts_pat":{"type":"integer","description":"how many times PAT was missing during 0,5 seconds or pid 0 misses PAT\\n\\n`PAT_error`\\n"},"pids":{"type":"array","items":{"$ref":"#/components/schemas/input_pid_counters"},"description":"Per pid statistics calculated for MPEG-TS input\\n"},"rtp_channels":{"type":"array","items":{"$ref":"#/components/schemas/input_rtp_counters"},"description":"Per channel statistics calculated for RTP input\\n"},"errors_ts_service_lost":{"type":"integer","description":"How many times have received PAT that was missing required service (program)\\n"},"errors_ts_stuck_restarts":{"type":"integer","description":"Number of connection restarts to fix ts_stuck issue. Can happen in RTSP.\\n"},"errors_404":{"type":"integer","description":"How many times we\'ve got 404 (enoent).\\n"},"errors_403":{"type":"integer","description":"How many times we\'ve got 403 (eaccess).\\n"},"errors_500":{"type":"integer","description":"How many times we\'ve got 500 (backend error).\\n"},"errors_crashed":{"type":"integer","description":"How many times input was restarted due to internal crash.\\n\\nThis may happen due to unhandled input.\\n"},"sdi":{"type":"object","$ref":"#/components/schemas/input_sdi_counters"}}},"input_pid_counters":{"type":"object","required":["pid"],"properties":{"pid":{"description":"Related MPEG-TS pid with following problems\\n","type":"integer"},"pnr":{"description":"What program does have this pid\\n","type":"integer"},"packets":{"description":"How many MPEG-TS packets with 188 bytes on this pid received\\n","type":"integer"},"frames":{"description":"Frame count on this pid\\n","type":"integer"},"empty_packets":{"description":"Packets without payload and adaptation field\\n","type":"integer"},"errors_adaptation_broken":{"description":"Packets with adaptation field larger than packet size\\n","type":"integer"},"errors_ts_scrambled":{"type":"integer","description":"Amount of scrambled TS packets\\n"},"errors_ts_pmt":{"type":"integer","description":"how many times PMT was not received after 0,5 seconds\\n\\n`PMT_error`\\n"},"errors_ts_cc":{"type":"integer","description":"how many MPEG-TS packets were received with non-contigious contiuity counters.\\n\\n`Continuity_count_error`\\n","example":0},"errors_ts_tei":{"type":"integer","description":"How many MPEG-TS packets with Transport Error Indicator were received\\n\\n`Transport_error`, 2.1\\n"},"errors_ts_psi_checksum":{"type":"integer","description":"How many times have received PSI entry with broken checksum\\n\\n`CRC_error`\\n"},"errors_pid_lost":{"type":"integer","description":"How many times pid has been lost\\n"},"broken_pes_count":{"type":"integer","description":"How many PES packets were started not from startcode\\n"},"broken_pes_sum":{"type":"integer","description":"How many bytes were discarded due to lack of PES startcode\\n"},"time_corrections":{"type":"integer","description":"Jumps of timestamps inside a MPEG-TS stream\\n"},"repeated_frames":{"type":"integer","description":"In case of CC error last frame can be repeated. This is a count of repeated frames\\n"},"corrected_backward_pts":{"type":"integer","description":"How many times PTS was less than PCR or previous PTS\\n"},"pcr_resync":{"type":"integer","description":"If PTS is drifting away from PCR, it can be resynchronized with PCR. This is a resync count\\n"},"discarded_buffer_count":{"type":"integer","description":"How many times was discarded too big ES buffer without making a frame of it\\n"},"discarded_buffer_sum":{"type":"integer","description":"How many bytes were lost due to discarding ES buffer\\n"},"fillers_count":{"type":"integer","description":"How many H264(5) NAL fillers were seen in the input\\n"},"fillers_sum":{"type":"integer","description":"How many bytes were seen in NAL fillers\\n"},"padding_pes_count":{"type":"integer","description":"How many PES packets were on the Padding streamId\\n"},"padding_pes_sum":{"type":"integer","description":"How many bytes were in PES packets on the Padding streamId\\n"},"crashed":{"type":"integer","description":"Unhandled crashes inside mpegts decoding process due\\n"},"dts_goes_backwards":{"type":"integer","description":"Time on this PID jumped back from reference PTS and it was not a roll over zero\\n"},"dts_jump_forward":{"type":"integer","description":"Time on this PID jumped forward too far away from reference PTS\\n"},"too_large_dts_jump":{"type":"integer","description":"Jump of the PTS was so big from previous, that had to flush all frames and restart parsing\\n"}}},"input_rtp_counters":{"allOf":[{"$ref":"#/components/schemas/rtp_counters_base"},{"$ref":"#/components/schemas/h26x_decoder_counters"}]},"input_srt_counters":{"type":"object","description":"SRT specific counters\\n","properties":{"rtt":{"type":"integer","description":"Round-trip time\\n"},"latency":{"type":"integer","description":"Receiver buffering delay"},"packets":{"type":"integer","description":"Total incoming SRT packets counter\\n"},"retransmitted_packets":{"type":"integer","description":"How many packets were retransmitted\\n"},"error_lost_packets":{"type":"integer","description":"How many SRT packets were lost\\n"},"error_dropped_packets":{"type":"integer","description":"How many SRT packets were dropped by various reasons\\n"}}},"input_onvif_events_counters":{"type":"object","description":"ONVIF events specific counters to get insights on current state of getting events from cameras.\\nDesigned to be used by analyzers, monitoring and alerting tools\\n","properties":{"motion_detected_count":{"type":"integer","description":"Number of detected motions.\\n"},"errors_not_authorized_count":{"type":"integer","description":"Number of not authorized requests\\n"},"errors_url_unreachable_count":{"type":"integer","description":"Number of failed requests because of bad url or network issues. \\n"},"errors_no_service_count":{"type":"integer","description":"Number of attempts to request disabled or unsupported ONVIF service \\n"},"errors_incorrect_time_values_count":{"type":"integer","description":"`ONVIF Event Handling Test Specification` says that valid values for `CurrentTime` and `TerminationTime` are \\n`TerminationTime >= CurrentTime + InitialTerminationTime`.\\n\\nHow many responses did not met the condition.\\n"}}},"input_sdi_counters":{"type":"object","description":"SDI,HDMI and other raw input counters","properties":{"errors_no_signal":{"type":"integer","description":"Frames dropped due to \'No signal\'."},"errors_duplicate":{"type":"integer","description":"Frame data is duplicated from previous frame because the input was too slow."},"errors_ts_duplicate":{"type":"integer","description":"Frame time is the same as the previous frame."},"errors_cpu_stall":{"type":"integer","description":"The frame was dropped due to too high CPU load."},"peak_duration_deviation":{"type":"integer","description":"Gauge of maximum deviation from the estimated frame duration."},"avg_recv_duration":{"type":"integer","description":"Gauge of average duration of incoming frame calculated in real time."},"error_lost_audio":{"type":"integer","description":"Counter of configured audio sdi channels without samples or non valid."}}},"rtp_counters_base":{"type":"object","required":["channel_id"],"properties":{"channel_id":{"description":"RTP channel number\\n","type":"integer","example":0},"content":{"description":"Content of the track transmitted in the channel\\n","type":"string","example":"video"},"rtp_packets":{"type":"integer","description":"How many RTP packets received for this channel\\n"},"rtcp_packets":{"type":"integer","description":"How many RTCP packets received for this channel\\n"},"bytes":{"type":"integer","description":"How many bytes received for this channel\\n"},"frames":{"type":"integer","description":"How many frames received for this channel\\n"},"pt_reject_count":{"type":"integer","description":"Number of rtp packets rejected due to wrong payload type\\n"},"pt_reject_sum":{"type":"integer","description":"Total size of rejected packets due to wrong payload type (pt_reject_count) rtp packets\\n"},"ts_goes_backwards":{"type":"integer","description":"Time on this channel is jumped back from reference wallclock.\\n"},"ts_jump_forward":{"type":"integer","description":"Time on this channel is jumped forward from reference wallclock.\\n"},"ts_stuck":{"type":"integer","description":"https://datatracker.ietf.org/doc/html/rfc6184#section-4.1\\n\\naccess unit: A set of NAL units always containing a primary coded picture. In addition to the primary coded\\npicture, an access unit may also contain one or more redundant coded pictures or other NAL units not containing\\nslices or slice data partitions of a coded picture. The decoding of an access unit always results in a\\ndecoded picture.\\n\\nThere is `marker bit` in RTP packet which is set for the very last packet of the access unit indicated by the RTP timestamp.\\n\\nIt is protocol violation if received RTP packet has the same timestamp as previous marker bit packet.\\n\\nThis counter is a number of RTP packets which `RTP timestamp` is equal to previous RTP marker bit packet.\\n"},"errors_dts_stuck":{"type":"integer","description":"Number of frames which dts is same as previous frame dts.\\n"},"sr_ts_stuck":{"type":"integer","description":"Number of rtcp SR packets which `RTP timestamp` is equal to the previous rtcp SR packet `RTP timestamp`. \\n"},"sender_clock_deviation":{"type":"integer","description":"Sender wallclock deviation from server time in ms. Positive value means that sender time is ahead of server time.\\n"},"marker_packets_count":{"type":"integer","description":"Number of RTP packets which marker bit is set to one.\\n"},"no_marker_mode_flag":{"type":"boolean","description":"If no marker bit packet is received after 400 RTP packets then decoder switches to `no_marker_mode` and\\nmakes frame on each timecode change. \\n\\nThis flag shows if decoder works in `no_marker_mode`.\\n"},"errors_broken_payload":{"type":"integer","description":"Demultiplexing was done right, but content is broken.\\n"},"errors_lost_packets":{"type":"integer","description":"RTP have enough information to tell how many packets were lost\\n"}}},"h26x_decoder_counters":{"type":"object","description":"Here are counters for h264/h265 decoder.\\n","properties":{"nal_count":{"type":"integer","description":"How many NAL units handled by this decoder.\\n"},"discarded_broken_nal_count":{"type":"integer","description":"Number of NAL units, which `forbidden_zero_bit` is set to one.\\n"},"discarded_not_allowed_nal_count":{"type":"integer","description":"Number of NAL units, which type is not allowed in `non-interleaved packetization mode`.\\n"},"nal_fu_count":{"type":"integer","description":"`Fragmentation Unit` used to fragment a single NAL unit over multiple RTP packets.\\n`H.264` uses `FU-A` NAL. `H.265` has its own fragmentation unit.\\n\\nThis counter shows how many `Fragmentation Units` handled by this decoder. \\n"},"nal_stap_a_count":{"type":"integer","description":"How many NAL `STAP_A` units handled by this decoder.\\n"},"nal_aggregation_count":{"type":"integer","description":"How many NAL `AGGREGATION` units handled by this decoder.\\n"},"fu_pattern_is_broken_count":{"type":"integer","description":"`Fragmentation Unit` used to fragment a single NAL unit over multiple RTP packets.\\n`H.264` uses `FU-A` NAL. `H.265` has its own fragmentation unit.\\n\\n`Fragmentation Units` pattern must have a `Start FU`, `End FU` and could have `FUs` between these ones. \\n\\nThis counter indicates how many times pattern was broken.\\n"},"fu_has_both_start_end_bits_count":{"type":"integer","description":"`Fragmentation Unit` used to fragment a single NAL unit over multiple RTP packets.\\n`H.264` uses `FU-A` NAL. `H.265` has its own fragmentation unit.\\n\\nThis counter shows number of `Fragmentation Units` which `Start bit` and `End bit` are set to one in the same `FU` header\\n"},"incomplete_nal_count":{"type":"integer","description":"NAL deframentation could be interrupted by unexpected NAL or broken/incomplete packet.\\nIf NAL deframentation is interrupted then incomplete fragment of NAL is not discarded and used in decoding process.\\n\\nThis counter indicates how many incomplete NALs were used. \\n"},"discarded_fu_count":{"type":"integer","description":"`Fragmentation Unit` used to fragment a single NAL unit over multiple RTP packets.\\n`H.264` uses `FU-A` NAL. `H.265` has its own fragmentation unit.\\n\\nThis counter shows number of discarded `Fragmentation Units`\\n"},"fu_end_then_middle_workaround_count":{"type":"integer","description":"There is workaround to not interrupt `FU` sequence if `end-FU` followed by `middle-FU`. \\nThis counter shows how many time the workaround was applied.\\n"},"nal_sei_count":{"type":"integer","description":"How many NAL `SEI` units handled by this decoder.\\n"},"invalid_sei_type_count":{"type":"integer","description":"Number of `SEI` NAL units with invalid type\\n"},"invalid_sei_size_count":{"type":"integer","description":"Number of `SEI` NAL units with invalid size\\n"},"invalid_sei_payload_count":{"type":"integer","description":"Number of `SEI` NAL units with bad payload\\n"},"discarded_sei_count":{"type":"integer","description":"Number of discarded `SEI` NAL units\\n"},"nal_idr_count":{"type":"integer","description":"How many NAL `IDR` units handled by this decoder.\\n"},"nal_single_count":{"type":"integer","description":"How many NAL `SINGLE` units handled by this decoder. \\n"},"nal_sps_count":{"type":"integer","description":"How many NAL `SPS` units handled by this decoder.\\n"},"nal_pps_count":{"type":"integer","description":"How many NAL `PPS` units handled by this decoder.\\n"},"nal_aud_count":{"type":"integer","description":"How many NAL `AUD` units handled by this decoder.\\n"},"nal_filler_count":{"type":"integer","description":"How many NAL `FILLER` units handled by this decoder.\\n"},"nal_slice_count":{"type":"integer","description":"How many NAL `SLICE` units handled by this decoder.\\n"},"nal_vps_count":{"type":"integer","description":"How many NAL `VPS` units handled by this decoder.\\n"},"nal_other_count":{"type":"integer","description":"How many other NAL units handled by this decoder.\\n"},"discarded_nal_count":{"type":"integer","description":"Number of discarded NAL units.\\n"}}},"segment_duration":{"type":"integer","format":"milliseconds","minimum":1000,"maximum":15000,"x-format-description":"milliseconds"},"stream_push":{"oneOf":[{"$ref":"#/components/schemas/stream_push_rtmp","x-api-allow":["watcher-admin"]},{"$ref":"#/components/schemas/stream_push_udp"},{"$ref":"#/components/schemas/stream_push_m4f"},{"$ref":"#/components/schemas/stream_push_m4s"},{"$ref":"#/components/schemas/stream_push_decklink"},{"$ref":"#/components/schemas/stream_push_dektec"},{"$ref":"#/components/schemas/stream_push_dektec_asi"},{"$ref":"#/components/schemas/stream_push_tshttp"},{"$ref":"#/components/schemas/stream_push_hls"},{"$ref":"#/components/schemas/stream_push_srt"},{"$ref":"#/components/schemas/stream_push_st2110"}],"x-pattern-discriminator":"url"},"stream_push_base":{"type":"object","properties":{"comment":{"description":"Human-readable description of the pusher.\\n","type":"string","example":"This is a test push","x-api-allow":["watcher-admin"]},"stats":{"description":"Detailed runtime information about the push.","allOf":[{"$ref":"#/components/schemas/push_counters"}],"readOnly":true,"x-api-allow":["watcher-admin"]},"retry_limit":{"description":"The maximum number of times *Flussonic* retries to push the stream.","type":"integer","x-api-allow":["watcher-admin"]},"retry_timeout":{"description":"How often *Flussonic* should retry attempts to send the stream, e.g., if it has become offline. \\nIt is an interval in seconds, 5 seconds by default. \\nYou can increase this value to reduce server load.\\n","type":"integer","format":"seconds","example":7,"x-api-allow":["watcher-admin"],"x-format-description":"seconds"},"timeout":{"description":"Time interval, in seconds, after which the pusher is stopped if the source stream or publishing is stopped.\\n","type":"integer","format":"seconds","example":10,"x-api-allow":["watcher-admin"],"x-format-description":"seconds"},"connect_timeout":{"description":"Connection timeout, in seconds. Equals to 0 by default.","type":"integer","format":"seconds","example":2,"x-format-description":"seconds"},"disabled":{"description":"Disable pushing the stream.\\n\\nTemporary disabling, or pausing, an offline stream eliminates the necessity to remove it from the the configuration in order to stop Flussonic trying to push it. \\nIn this way, the URL and other settings of a disabled stream remain in Flussonic.\\n","type":"boolean","x-api-allow":["watcher-admin"]}}},"stream_push_rtmp":{"allOf":[{"type":"object","title":"RTMP","required":["url"],"properties":{"url":{"description":"RTMP URL where to push.\\nYou can publish to RTMP servers. Usually it is a social network streaming.\\n","type":"string","x-api-allow":["watcher-admin"],"format":"input_url","examples":{"default":{"value":"rtmp://your-server.com/app/stream1"}},"pattern":"^rtmps?://.*$","x-format-description":"input_url"},"service":{"description":"The name of the service.\\nThe value will be sent within FlashVer string when establishing a connection.\\nString template is `FMLE/3.0 (compatible; #{encoder}; Streamer #{streamer_version}; #{service}`.\\nExample of the resulting FlashVer string is `FMLE/3.0 (compatible; Lavf56.40.101; Streamer 25.01; My service)`.\\n","type":"string","example":"My service"},"domain":{"description":"Service public domain name.\\nThe value will be sent within notify message with command name \'onMetaData\'\\nMetadata also will contain the name `Streamer`, streamer version, the type and version of the operating system.\\nMetadata will be sent as map with associated map key `yt_project`.\\nString template is `Streamer #{streamer_version} #{encoder} #{os_type} #{os_version} #{domain}`.\\nExample of the resulting string is `{\\"yt_project\\" : \\"Streamer 25.01 Lavf56.40.101 unix-linux 6.1.0 officialdomain.com\\"}`.\\n","type":"string","example":"officialdomain.com"},"encoder":{"description":"The name of the encoder used by the pusher. Can also be used as a device name.\\nThe value will be sent within notify message with command name \'onMetaData\' and within FlashVer string (see above).\\n","type":"string","example":"Lavf57"}}},{"$ref":"#/components/schemas/stream_push_base"}]},"stream_push_udp":{"allOf":[{"type":"object","title":"Multicast MPEG-TS","required":["url"],"properties":{"url":{"description":"UDP URL of multicast group\\n","type":"string","format":"input_url","examples":{"default":{"value":"udp://239.0.0.1:1234"},"interface":{"value":"udp://eth0@239.0.0.1:1234"},"bind_ip":{"value":"udp://239.0.0.1:1234/192.168.20.24"}},"pattern":"^udp[12]?://([^@]+\\\\@)?[0-9]+\\\\.[0-9]+\\\\.[0-9]+\\\\.[0-9]+:[0-9]+.*$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"},{"$ref":"#/components/schemas/stream_push_udp_base"},{"$ref":"#/components/schemas/stream_push_mpegts_base"}]},"stream_push_m4f":{"allOf":[{"type":"object","title":"M4F","required":["url"],"properties":{"url":{"description":"Another Flussonic URL where to push video to.\\n","type":"string","format":"input_url","examples":{"default":{"value":"m4f://your-server.com/app/stream1"}},"pattern":"^m4fs?://.*$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"}]},"stream_push_m4s":{"allOf":[{"type":"object","title":"M4S","required":["url"],"properties":{"url":{"description":"Flussonic stream URL where to push to.\\n","type":"string","format":"input_url","examples":{"default":{"value":"m4s://your-server.com/app/stream1"}},"pattern":"^m4ss?://.*$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"}]},"stream_push_decklink":{"allOf":[{"type":"object","title":"Decklink SDI","required":["url"],"properties":{"url":{"description":"Specify Blackmagic Decklink SDI card as a destination for this stream.\\n\\nYou need to specify exact number of output, refer to decklink manual to find\\nenumeration rules.\\n","type":"string","format":"input_url","examples":{"default":{"value":"decklink://0"}},"pattern":"^decklink://[0-9]+$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"},{"$ref":"#/components/schemas/stream_push_sdi_base"}]},"stream_push_dektec":{"allOf":[{"type":"object","title":"Dektec SDI","required":["url"],"properties":{"url":{"description":"Select which Dektec SDI card to use as a sink for this stream.\\n\\nDektec url is combined of card serial # and number of output port on this card.\\n\\nOutput ports on a card are numbered starting from 1.\\nSerial numbers are uniq for each produced card. Take a look at admin UI or use\\nnative dektec tools to find the serial number.\\n","type":"string","format":"input_url","examples":{"default":{"value":"dektec://2174223350:1"}},"pattern":"^dektec://[0-9]+:[0-9]+$","x-format-description":"input_url"},"push_audio_tracks":{"description":"Configuration of an audio track push to DekTec SDI.","items":{"allOf":[{"$ref":"#/components/schemas/push_audio_track"}]},"type":"array","x-private":true},"genlock":{"description":"Enable clock-lock feature (if supported). See also genlock_status property in pusher stats.","type":"boolean"},"pixel_offset":{"description":"Adjusting genlock timing pixel offset.","type":"integer"}}},{"$ref":"#/components/schemas/stream_push_base"},{"$ref":"#/components/schemas/stream_push_sdi_base"}]},"stream_push_dektec_asi":{"allOf":[{"type":"object","title":"Dektec ASI","required":["url"],"properties":{"url":{"description":"Select which Dektec ASI card to use as a sink for this stream.\\n\\nDektec url is combined of card serial # and number of output port on this card.\\n\\nOutput ports on a card are numbered starting from 1.\\nSerial numbers are uniq for each produced card. Take a look at admin UI or use\\nnative dektec tools to find the serial number.\\n\\nMention that ASI is a MPEG-TS transport\\n","type":"string","format":"input_url","examples":{"default":{"value":"dektec-asi://"}},"pattern":"^dektec-asi://.*$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"},{"$ref":"#/components/schemas/stream_push_mpegts_base"}]},"stream_push_tshttp":{"allOf":[{"type":"object","title":"HTTP MPEG-TS","required":["url"],"properties":{"url":{"description":"Content will be similar to multicast MPEG-TS, but endless HTTP POST will be used to upload content.\\n","type":"string","format":"input_url","examples":{"default":{"value":"tshttp://your-server.com/app/stream1"},"https":{"value":"tshttps://your-server.com/app/stream1"}},"pattern":"^tshttps?://.*$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"},{"$ref":"#/components/schemas/stream_push_mpegts_base"}]},"stream_push_hls":{"allOf":[{"type":"object","title":"HLS","required":["url"],"properties":{"url":{"description":"It is possible to publish HLS to a CDN. Segments will be uploaded together with manifests.\\n","type":"string","format":"input_url","examples":{"default":{"value":"hls://your-server.com/app/stream1"}},"pattern":"^hlss?://.*$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"}]},"stream_push_srt":{"allOf":[{"type":"object","title":"SRT","required":["url"],"properties":{"url":{"description":"SRT URL where to push video.\\n","type":"string","format":"input_url","examples":{"default":{"value":"srt://my-server.com:8994"}},"pattern":"^srt[12]?://[^:]+:[0-9]+.*$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"},{"$ref":"#/components/schemas/stream_push_udp_base"},{"$ref":"#/components/schemas/stream_push_mpegts_base"},{"$ref":"#/components/schemas/srt_config_base"}]},"stream_push_udp_base":{"type":"object","properties":{"multicast_loop":{"description":"Whether to capture multicast back to the *Flussonic* host. \\nThis option allows you to ingest the sent stream on the sending host by *Flussonic* or other application.\\nSet to `True` for a UDP MPEG-TS push.\\n","type":"boolean","example":true},"standby":{"description":"Monitoring multicast group and stop pushing if another publisher presented","type":"boolean"},"v":{"description":"This option allows to enable non-default, probably experimental, version of udp pusher.","x-private":true,"type":"string","enum":["timed"]},"bind_to_core":{"description":"Timed pusher option. CPU core to bind sending thread to. Will not bind by default.","x-private":true,"type":"integer"},"timed_wait":{"description":"Timed pusher option. How to wait to send a packet.","x-private":true,"type":"string","enum":["sleep","busy"]}}},"stream_push_mpegts_base":{"type":"object","properties":{"vb":{"description":"Average bitrate per second that you can send of a video track, including all the headers and encapsulation in the transport stream. \\nSo, for example, the value of vb=2720 approximately corresponds to the bitrate 2600 specified in the transcoder settings.\\n","type":"integer","format":"speed","example":2720,"x-format-description":"speed"},"bitrate":{"description":"The bitrate of the whole stream.","type":"integer","format":"speed","example":3200,"x-format-description":"speed"},"pnr":{"description":"Program number in the outgoing MPEG-TS stream. A program may represent a television channel.\\n","type":"integer"},"pids":{"description":"This parameter sets PIDs values for outgoing MPEG-TS streams. \\nIt is possible to set PID values for PMT, STD and video and audio tracks.\\n","allOf":[{"$ref":"#/components/schemas/output_mpegts_pids"}]},"mpegts_ac3":{"description":"It allows to specify pack information about ac3 for outgoing MPEGTS-TS streams. The default value is `system_b`.","allOf":[{"$ref":"#/components/schemas/output_mpegts_ac3"}]},"service":{"description":"Service name. Used to fill in the field service name within SDT MPEG-TS table.\\n","type":"string","example":"My service name"},"provider":{"description":"Provider name. Used to fill in the field service provider within SDT MPEG-TS table.\\n","type":"string","example":"My provider name"}}},"stream_push_sdi_base":{"type":"object","properties":{"volume":{"description":"Audio volume coefficient.\\nThe output audio volume is given by the relation: `output_volume = volume * input_volume`.\\nThe maximum volume value is 1.0 (default value).\\n","type":"number","example":0.5},"deinterlace":{"description":"Activate deinterlacing, i.e., converting an interlaced image to a progressive image. \\nIt is necessary for comfortable viewing of legacy TV video on PC/mobile devices.\\n","type":"boolean"},"video_format":{"description":"Specify SDI/HDMI output format","anyOf":[{"$ref":"#/components/schemas/video_format"}]},"vbi_lines":{"description":"Lines of VBI (vertical blanking interval) of an output analog stream that will contain teletext.\\nIt is used for passing teletext from MPEG-TS to analog streams.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/push-teletext-to-sdi-vbi/"},"items":{"allOf":[{"$ref":"#/components/schemas/vbi_lines"}]},"type":"array"},"dthreads":{"description":"Defines a number of threads in a decoder. \\nOne thread uses one core. \\nThe default value equals 4, but you can set it equal to the number of cores of your CPU.\\n","type":"integer","x-notice":"video decoder threads number"},"scale":{"description":"Defines a scaling algorithm.\\nYou can choose only one algorithm at a time. \\nIf a pushing stream has the same video resolution as an ingest stream, the `fast_bilinear` algorithm is used by default. \\nIf a video resolution of a pushing stream does not equal the video resolution of an ingest stream, the bicubic algorithm is used by default. \\nIf the algorithm is specified explicitly, it applies to all the formats.\\n","allOf":[{"$ref":"#/components/schemas/scale_algorithm"}]}}},"stream_push_st2110":{"allOf":[{"type":"object","title":"SMPTE 2110","required":["url"],"properties":{"url":{"description":"UDP URL of multicast group\\n","type":"string","format":"input_url","examples":{"default":{"value":"st2110://239.0.0.1:1234"},"interface":{"value":"st2110://eth0@239.0.0.1:1234"},"bind_ip":{"value":"st2110://239.0.0.1:1234/192.168.20.24"}},"pattern":"^st2110?://([^@]+\\\\@)?[0-9]+\\\\.[0-9]+\\\\.[0-9]+\\\\.[0-9]+:[0-9]+.*$","x-format-description":"input_url"}}},{"$ref":"#/components/schemas/stream_push_base"}]},"stream_input":{"oneOf":[{"$ref":"#/components/schemas/stream_input_fake"},{"$ref":"#/components/schemas/stream_input_file"},{"$ref":"#/components/schemas/stream_input_h323"},{"$ref":"#/components/schemas/stream_input_hls"},{"$ref":"#/components/schemas/stream_input_rtmp"},{"$ref":"#/components/schemas/stream_input_rtsp"},{"$ref":"#/components/schemas/stream_input_srt"},{"$ref":"#/components/schemas/stream_input_tshttp"},{"$ref":"#/components/schemas/stream_input_mixer"},{"$ref":"#/components/schemas/stream_input_mosaic"},{"$ref":"#/components/schemas/stream_input_m4f"},{"$ref":"#/components/schemas/stream_input_m4s"},{"$ref":"#/components/schemas/stream_input_rtp"},{"$ref":"#/components/schemas/stream_input_shoutcast"},{"$ref":"#/components/schemas/stream_input_timeshift"},{"$ref":"#/components/schemas/stream_input_playlist"},{"$ref":"#/components/schemas/stream_input_copy"},{"$ref":"#/components/schemas/stream_input_spts"},{"$ref":"#/components/schemas/stream_input_mpts"},{"$ref":"#/components/schemas/stream_input_publish"},{"$ref":"#/components/schemas/stream_input_v4l"},{"$ref":"#/components/schemas/stream_input_decklink"},{"$ref":"#/components/schemas/stream_input_dektec"},{"$ref":"#/components/schemas/stream_input_external"},{"$ref":"#/components/schemas/stream_input_ndi"},{"$ref":"#/components/schemas/stream_input_st2110"},{"$ref":"#/components/schemas/stream_input_frip"}],"x-pattern-discriminator":"url"},"stream_input_base":{"type":"object","properties":{"comment":{"description":"Human-readable description of the input.\\n","type":"string","example":"This is a test input"},"source_timeout":{"description":"The period of time, in seconds, for which Media Server will wait for new frames until it considers the source as lost.","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/add-secondary-source-for-redundancy/#source_timeout"},"anyOf":[{"type":"integer","format":"seconds","x-format-description":"seconds"},{"enum":[false],"type":"boolean"}],"example":20,"x-api-allow":["watcher-core"]},"audio_timeout":{"description":"The period of time, in seconds, for which Media Server will wait for new audio frames until it considers the source as lost.","externalDocs":{"description":"Find more information here"},"type":"integer","format":"seconds","example":20,"x-api-allow":["watcher-core"],"x-format-description":"seconds"},"video_timeout":{"description":"The period of time, in seconds, for which Media Server will wait for new video frames until it considers the source as lost.","type":"integer","format":"seconds","example":20,"x-api-allow":["watcher-core"],"x-format-description":"seconds"},"max_retry_timeout":{"description":"The maximum time that Media Server will set for attempts to reconnect to source when source problems occur.\\nThe time between attempts is not linear and may increase if source problems are not fixed. This parameter limits this value, but the time itself between attempts may be longer.\\n","type":"integer","format":"seconds","example":30,"minimum":1,"x-api-allow":["watcher-core"],"x-format-description":"seconds"},"timeout":{"description":"The time, in seconds, for Media Server to switch to the fallback source if the main source stops sending frames (video or audio). \\nThe important thing here is that the source remains active (connected), allowing for a client-publisher to stay on the socket.\\n","type":"integer","example":10,"x-api-allow":["watcher-core"]},"frames_timeout":{"description":"Specifies the period of time, in seconds, for which Media Server waits for new frames to come from the data source before it generates the `frames_timed_out` event that informs you that the source might soon be lost. \\nThis period of time must be smaller than `source_timeout`. \\nIf frames come again from this source, before `source_timeout` has passed, Media Server issues the `frames_restored` event.\\n","type":"integer","example":3,"x-api-allow":["watcher-core"]},"priority":{"description":"The priority that Media Server takes into account when switching to another source.\\nThe source with `priority=1` has the first priority, the source with `priority=2` has the second priority, and so on.\\n\\nBy default, the first source in the list has the highest priority and the last source in the list has the lowest priority. \\nIf priority is not specified for some sources, or if some sources have equal priorities, then the default order is applied. \\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/add-secondary-source-for-redundancy/#priority"},"type":"integer","example":1,"x-api-allow":["watcher-core"]},"stats":{"description":"Detailed runtime information about the input.","allOf":[{"$ref":"#/components/schemas/input_stats"}],"readOnly":true,"x-api-allow":["watcher-core"]},"user_agent":{"type":"string","description":"User agent. Can be modified if a protocol allows it.","x-api-allow":["watcher-core"]},"via":{"type":"string","format":"agent_url","description":"Agent ID. Used as a proxy to connect to the input server.","x-api-allow":["watcher-core","central-layouter"],"x-format-description":"agent://ID identification for `via` configuration option\\n"},"output_audio":{"description":"Enables transcoding of the published audio to another codec.\\nThe option is useful when you want to get an AAC audio track from WebRTC publish with OPUS or RTSP camera with PCMU.\\n","allOf":[{"$ref":"#/components/schemas/output_audio"}],"x-api-allow":["watcher-core"]},"headers":{"additionalProperties":{"type":"string"},"type":"object","description":"Request headers as key-value pairs.","example":{"User-Agent":"curl/7.85.0","Authorization":"Basic dXNlcjpwYXNzd29yZA=="},"x-api-allow":["watcher-core"]},"no_clients_reconnect_delay":{"type":"integer","description":"Skip input start if the stream has no clients."},"allow_if":{"type":"string","description":"Path to a file. The input will be allowed if you put `1` in the file, or denied if `0` (reverse logic to `deny_if`).\\nThis option allows you to manage inputs without API requests.\\n\\nFor example, your stream has two inputs and you set `allow_if = /path/to/file` for the first input.\\nThe `/path/to/file` file contains only the digit `1`. That means that the first input is used when you play the stream.\\nWhen you put `0` to the `/path/to/file` file, the first input is denied, so the second one is played.\\n\\nIf no such file, the input is allowed.\\n"},"deny_if":{"type":"string","description":"Path to a file. The input will be denied if you put `1` in the file, or allowed if `0` (reverse logic to `allow_if`).\\nThis option allows you to manage inputs without API requests.\\n\\nFor example, your stream has two inputs and you set `deny_if = /path/to/file` for the first input.\\nThe `/path/to/file` file contains only the digit `1`. \\nThat means that the first input will not be used when you play the stream, so the second one will.\\nWhen you put `0` to the `/path/to/file` file, the first input is allowed to be played.\\n\\nIf no such file, the input is allowed.\\n"},"bind_ip":{"type":"string","x-private":true,"description":"Interface ip address, to bind socket to."},"mbr":{"x-private":true,"type":"string","deprecated":true,"description":"Enables the multi-bitrate mode for transcoding the input.\\nNeed to remove it, but must offer some replacement to Watcher\\n","x-api-allow":["watcher-core"]},"max_bitrate":{"description":"Maximum bitrate value. Media Server checks the input bitrate value, and if it overflows this value, the input will be disconnected.","type":"integer","format":"speed","x-format-description":"speed"},"cluster_key":{"type":"string","description":"Authorization key used to fetch the stream from another streamer in a cluster."},"remote_dvr":{"enum":["nochain","chain","none"],"type":"string","description":"Mode to describe the interconnection with a DVR on a remote server.\\nAllows to chain requests to other servers or read-only from a peer.\\n"},"output_dts_shift":{"x-private":true,"type":"integer","description":"Allow to hardcode some additional DTS shift to the stream. Required for mixing\\ninside transponder and forcing DTS jump.\\n"}}},"stream_input_fake":{"allOf":[{"type":"object","title":"Demo source","properties":{"url":{"description":"URL to get a demo stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"fake://fake","pattern":"^fake://.*$","x-format-description":"input_url"},"width":{"type":"integer","description":"Width of an artificially created test video stream. \\nApplicable to the `fake://fake` URL.\\n"},"height":{"type":"integer","description":"Height of an artificially created test video stream. \\nApplicable to the `fake://fake` URL.\\n"},"bitrate":{"type":"integer","format":"speed","description":"Bitrate of an artificially created test video stream. \\nApplicable to the `fake://fake` URL.\\n","x-format-description":"speed"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_file":{"allOf":[{"type":"object","title":"File","properties":{"url":{"description":"URL to get a stream from file.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"file://vod/bunny.mp4","pattern":"^file://.*$","x-format-description":"input_url"},"raw":{"x-private":true,"description":"If this option is enabled, file source produce raw stream.","type":"boolean"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_mpegts_specific"},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_h323":{"allOf":[{"type":"object","title":"H323","properties":{"url":{"description":"URL to connect to the H323 source and get the stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"h323://192.168.100.150","pattern":"^h323://.*$","x-format-description":"input_url"},"id":{"type":"string","description":"H323 input ID."},"video_bitrate":{"type":"integer","format":"speed","description":"H323 input bitrate.","x-format-description":"speed"},"audio_bitrate":{"type":"integer","format":"speed","description":"H323 audio bitrate.","x-format-description":"speed"},"connections":{"type":"integer","description":"H323 connections."}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_hls":{"allOf":[{"type":"object","title":"HLS","properties":{"url":{"description":"URL to get a stream from HLS source.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"hls://remote.host.com/example/video.m3u8"},"apple_standard":{"value":"hls://remote.host.com/example/index.m3u8"},"secure":{"value":"hlss://remote.host.com/example/video.m3u8"},"hls2":{"value":"hls2://remote.host.com/example/video.m3u8"},"hlss2":{"value":"hlss2://remote.host.com/example/video.m3u8"},"http":{"value":"http://remote.host.com/index.m3u8"},"https":{"value":"https://remote.host.com/index.m3u8"}},"pattern":"^(hls|hlss|hls2|hlss2)://.*$|^(http|https)://.*\\\\.m3u8((#|\\\\?).*)?$","x-format-description":"input_url"},"skip_stalled_check":{"description":"By default Flussonic will wait for at least 2-3 new segments before making stream available.\\n\\nThis parameter allows to disable this protection. Use it at your own risk - with it enabled, old content might be repeated over and over.\\n","type":"boolean"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_mpegts_specific"},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_rtmp":{"allOf":[{"type":"object","title":"RTMP","properties":{"url":{"description":"URL to connect to the RTMP source and get the stream.\\n\\nRTMP uses a special URL consisting of at least two segments. *Flussonic* parses the URL and splits it into parts, \\nusing the first segment as an RTMP application name.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"rtmp://remote.host.com/static/example"},"secure":{"value":"rtmps://remote.host.com/static/example"}},"pattern":"^(rtmp|rtmps)://.*$","x-format-description":"input_url"},"pageUrl":{"description":"URL of the web page from where the SWF file was loaded. \\nThis is an RTMP header (Referer) used for establishing connection.\\n","type":"string","format":"url","example":"http://somehost/sample.html","x-format-description":"url"},"swfUrl":{"description":"URL of the source SWF file making the connection by RTMP.","type":"string","example":"file://C:/FlvPlayer.swf"},"tcUrl":{"description":"URL of the remote Server for entering credentials. \\nIt has the following format: `protocol://servername:port/appName/appInstance`.\\n","type":"string","format":"url","example":"rtmp://localhost:1935/testapp/instance1","x-format-description":"url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_rtsp":{"allOf":[{"type":"object","title":"RTSP","properties":{"url":{"description":"URL to connect to the RTSP source and get the stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"rtsp://remote.host.com/example"},"secure":{"value":"rtsps://remote.host.com/example"},"rtsp-udp":{"value":"rtsp-udp://remote.host.com/example"},"rtsp2":{"value":"rtsp2://remote.host.com/example"}},"pattern":"^(rtsp|rtsps|rtsp-udp|rtsp2)://.*$","x-format-description":"input_url"},"rtp":{"enum":["udp"],"type":"string","description":"Whether to force UDP to capture a video from RTSP cameras.","x-api-allow":["watcher-core"]},"tracks":{"x-private":true,"type":"array","items":{"type":"integer"},"description":"List of track numbers to receive when capturing a stream from an RTSP camera.","example":[1],"x-api-allow":["watcher-core"]},"wait_rtcp":{"type":"boolean","description":"Whether to wait for the full RTP time synchronization before the processing of frames from the RTSP camera.\\n","x-api-allow":["watcher-core"]}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_v4l":{"allOf":[{"type":"object","title":"V4L","required":["url"],"properties":{"url":{"description":"URL to connect to the Video4Linux source and get the stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"v4l2://"},"v4l":{"value":"v4l://"}},"pattern":"^(v4l|v4l2)://.*$","x-format-description":"input_url"},"audio_device":{"description":"The audio device to capture audio from Stream Labs SDI cards.\\n\\nThis parameter is specified for ALSA devices in the following format `interface:card,device`.\\n","type":"string","example":"plughw:1,0"},"video_device":{"description":"The video device to capture video from Stream Labs SDI cards.\\nIt is actually a path to a device file created on the disk by Video4Linux.\\n","type":"string","example":"/dev/video0"},"vbi_device":{"description":"The VBI device to capture raw VBI data from Stream Labs SDI cards. VBI data can contain information about teletext or closed captions.\\nIt is actually a path to a VBI device file created on the disk by Video4Linux.\\n","type":"string","example":"/dev/vbi"},"ttxt_descriptors":{"description":"This information is necessary for adding into the PMT table to identify streams which carry teletext data in the resulting MPEG-TS stream.","items":{"allOf":[{"$ref":"#/components/schemas/ttxt_descriptors"}]},"type":"array"},"vbi_threshold":{"description":"This parameter is used for debugging when reading teletext from VBI.\\nThis is a threshold, in seconds, for turning on the decoder.\\n","type":"integer"},"vbi_debug":{"description":"This parameter allows logging the decoded data when reading teletext from VBI.","type":"boolean"},"vbi_decoder":{"description":"This parameter is used for debugging when reading teletext from VBI.\\nIt allows to specify which decoder is used.\\n","x-private":true,"oneOf":[{"const":"erl","description":"The decoder in Erlang is used."},{"const":"nif","description":"The decoder in C is used."}]},"sample_rate":{"x-private":true,"type":"integer","description":"The input sample rate."}}},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_decklink":{"allOf":[{"type":"object","title":"Decklink SDI","properties":{"url":{"description":"URL to connect to the Decklink SDI source and get the stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"decklink://0","pattern":"^decklink://.*$","x-format-description":"input_url"},"mode":{"description":"Mode of the input stream captured from the Decklink card. It is composed of the size and FPS of the captured video. \\n\\nUsually, it is autodetected, but for some Decklink models you\'ll need to specify it manually.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/ingest-sdi-with-blackmagic/#live-sdi-capture"},"anyOf":[{"$ref":"#/components/schemas/bm_display_mode"}],"example":"4d30"},"ainput":{"description":"Audio interface for capturing from the Decklink card.\\n\\nUsually, it is autodetected, but for some Decklink models you should specify it manually.\\n","anyOf":[{"type":"integer","enum":[1,2,3,4,5,6,7]},{"enum":["embedded","aes_ebu","analog","analog_xlr","analog_rca","microphone","headphones"],"type":"string"}],"example":"microphone"},"vinput":{"description":"Video interface for capturing from the Decklink card.\\n\\nUsually, it is autodetected, but for some Decklink models you should specify it manually.\\n","anyOf":[{"type":"integer","enum":[1,2,3,4,5,6]},{"enum":["sdi","hdmi","optical_sdi","component","composite","s_video"],"type":"string"}],"example":"hdmi"},"vpts":{"description":"Synchronization mode for video captured from the Decklink card.\\n","oneOf":[{"const":"audio","description":"Synchronization by audio."},{"const":"ref","description":"Synchronization according to the timing reference signal."},{"const":2,"description":"Equivalent of \'audio\'."},{"const":3,"description":"Equivalent of \'ref\'."}]},"apts":{"description":"Synchronization mode for audio captured from the Decklink card.\\n","oneOf":[{"const":"video","description":"Synchronization by video."},{"const":"ref","description":"Synchronization according to the timing reference signal."},{"const":1,"description":"Equivalent of \'video\'."},{"const":3,"description":"Equivalent of \'ref\'."}]},"pixel":{"description":"Preferred pixel format for captured video.","oneOf":[{"const":"rgb8","description":"rgb color model and 8 bits per pixel."},{"const":"rgb10","description":"rgb color model and 10 bits per pixel."},{"const":"rgb12","description":"rgb color model and 12 bits per pixel."},{"const":"yuv8","description":"YUV color model and 8 bits per pixel."},{"const":"yuv10","description":"YUV color model and 10 bits per pixel."},{"const":"8","description":"equivalent of `yuv8`."},{"const":"10","description":"equivalent of `yuv10`."}]},"sar":{"description":"The ratio of the width of the display representation to the width of the pixel representation of video.\\n\\nThis parameter is used for creating non-anamorphic video from anamorphic video.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder-internals/#transcoder-options_sar"},"type":"string","example":"16:9"},"ttxt_descriptors":{"description":"This information is necessary for adding into the PMT table to identify streams which carry teletext data in the resulting MPEG-TS stream.","items":{"allOf":[{"$ref":"#/components/schemas/ttxt_descriptors"}]},"type":"array"},"vbi_threshold":{"description":"This parameter is used for debugging when reading teletext from VBI.\\nThis is a threshold, in seconds, for turning on the decoder.\\n","type":"integer"},"vbi_debug":{"description":"This parameter allows logging the decoded data when reading teletext from VBI.","type":"boolean"},"audio_tracks":{"description":"The configuration of an audio track received from DekTec SDI.","items":{"allOf":[{"$ref":"#/components/schemas/audio_track"}]},"type":"array","x-private":true}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_dektec":{"allOf":[{"type":"object","title":"DekTec SDI","properties":{"url":{"description":"URL to connect to the DekTec SDI source and get the stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"dektec://2174220025:2","pattern":"^dektec://.*$","x-format-description":"input_url"},"pixel":{"description":"Preferred pixel format for captured video.","oneOf":[{"const":"rgb8","description":"rgb color model and 8 bits per pixel."},{"const":"rgb10","description":"rgb color model and 10 bits per pixel."},{"const":"rgb12","description":"rgb color model and 12 bits per pixel."},{"const":"yuv8","description":"YUV color model and 8 bits per pixel."},{"const":"yuv10","description":"YUV color model and 10 bits per pixel."},{"const":"8","description":"equivalent of `yuv8`."},{"const":"10","description":"equivalent of `yuv10`."}]},"sar":{"description":"The ratio of the width of the display representation to the width of the pixel representation of video.\\n\\nThis parameter is used for creating non-anamorphic video from anamorphic video.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/transcoder/#video-options"},"type":"string","example":"16:9"},"ttxt_descriptors":{"description":"This information is necessary for adding into the PMT table to identify streams which carry teletext data in the resulting MPEG-TS stream.","items":{"allOf":[{"$ref":"#/components/schemas/ttxt_descriptors"}]},"type":"array"},"vbi_debug":{"description":"This parameter allows logging the decoded data when reading teletext from VBI.","type":"boolean"},"audio_tracks":{"description":"The configuration of an audio track received from DekTec SDI.","items":{"allOf":[{"$ref":"#/components/schemas/audio_track"}]},"type":"array","x-private":true},"scte35":{"description":"This option disables processing of SCTE-35 markers from an MPEG-TS input stream.\\nDeprecated since 22.12.\\nAvailable ways to disable processing of SCTE-35 markers:\\n1. pids option to select tracks without SCTE-35 markers\\n2. hls_scte35 option from stream_config_media for hls output\\n3. performing appropriate tuning pids in the transponder\\n","type":"boolean","default":true,"example":true,"deprecated":true,"x-delete-at":23.09}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_srt":{"allOf":[{"type":"object","title":"SRT","required":["url"],"properties":{"url":{"description":"Artificial URL to connect to the SRT source and get the stream.\\n\\nSRT requires IP and port, so we create an artificial URL to specify the options to manage the data interchange.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"srt://remote.host.com:1234?bind_ip=10.77.0.100"},"srt1":{"value":"srt1://remote.host.com:1234?bind_ip=10.77.0.100"},"srt2":{"value":"srt2://remote.host.com:1234?bind_ip=10.77.0.100"}},"pattern":"^(srt|srt1|srt2)://.*$","x-format-description":"input_url"},"closed_captions":{"additionalProperties":{"type":"string"},"type":"object","x-key-type":"string","description":"The rules for handling the closed captions.\\n"}}},{"$ref":"#/components/schemas/stream_input_srt_publish_specific"},{"$ref":"#/components/schemas/stream_input_base"},{"$ref":"#/components/schemas/srt_config_base"}]},"stream_input_srt_publish_specific":{"type":"object","properties":{"subtitles":{"description":"This configuration is deprecated. Use `dvbocr` configuration field in stream.\\n\\nThis parameter allows to manage subtitles in an output stream.\\n","oneOf":[{"const":"drop","description":"An output stream will have no subtitles track."},{"const":"accept","description":"An output stream will have a subtitles track in DVB, without conversion to text (default behavior)."},{"const":"ocr_replace","description":"An output stream will have a track containing subtitles converted to a text format (WebVTT)."},{"const":"ocr_add","description":"An output stream will have two tracks containing subtitles: \\nthe original track with subtitles in DVB and a new track with text subtitles.\\n"}],"example":"drop","deprecated":true,"x-delete-at":25.03},"scte35":{"description":"This option disables processing of SCTE-35 markers from SRT input stream.\\n","type":"boolean","default":true,"example":true}}},"stream_input_tshttp":{"allOf":[{"type":"object","title":"TSHTTP","properties":{"url":{"description":"URL for ingest and pass a stream \\"as is\\" without repackaging.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"tshttp://ADMIN:PASSWORD@FLUSSONIC_IP/flussonic/api/dvbts/a0"},"secure":{"value":"tshttps://127.0.0.1:8080"},"mpegts":{"value":"http://remote.host.com/mpegts"},"mpegts_secure":{"value":"https://remote.host.com/mpegts"},"ts":{"value":"http://remote.host.com/example.ts"},"ts_secure":{"value":"https://remote.host.com/example.ts"}},"pattern":"^(tshttp|tshttps)://.*$|^(http|https)://.*(\\\\.ts|/mpegts)$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_mpegts_specific"},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_webrtc_publish_specific":{"type":"object","title":"WebRTC","properties":{"prefer_codec":{"description":"Choose one of the listed video codecs at the start of the publication via WebRTC.\\n","deprecated":true,"x-delete-at":24.11,"x-alias":"prefer_video_codec","allOf":[{"$ref":"#/components/schemas/webrtc_prefer_video_codec"}],"example":"av1"},"prefer_video_codec":{"description":"Prefer one of the listed video codecs at the start of the publication via WebRTC.\\n","allOf":[{"$ref":"#/components/schemas/webrtc_prefer_video_codec"}],"example":"av1"},"prefer_video_profile":{"description":"Prefer one of the listed video profiles at the start of the publication via WebRTC.\\nThis option should help if the client\'s equipment cannot encode correctly to the automatically selected profile. Use with option if the publication does not work.\\n","type":"string","example":"42e01f","x-private":true},"transport":{"description":"Choose the prefered transport of the publication via WebRTC: UDP or TCP.\\n","allOf":[{"$ref":"#/components/schemas/webrtc_transport"}],"example":"udp"},"min_bitrate":{"description":"The minimum bitrate threshold, in kbit/s. The default value is 100 kbit/s.","type":"integer","example":150},"webrtc_abr":{"description":"Whether the adaptive bitrate mechanism is used for WebRTC publications.","type":"boolean","example":true},"abr_stepup":{"description":"Increment step for raising the bitrate to the maximum, in percent. The default step is 30%. \\nIf the loss is less than `abr_loss_lower`, Flussonic makes the publisher to step up from the current bitrate to the maximum one with the rate of `abr_stepup percent`.\\n","type":"integer"},"abr_correction":{"description":"The correction between the target bitrate (Receiver Estimated Maximum Bitrate, calculated in Flussonic) and browser bitrate, in kbit/s.\\nFlussonic sends the target bitrate to the browser from which the publication is carried out so that the browser adjusts the bitrate of the publication by this value.\\nThe default value is 300 kbit/s.\\n","type":"integer","example":200},"abr_loss_lower":{"type":"number","description":"The lower limit of packet loss. When it is reached, Flussonic raises the bitrate. \\nThat is, if packet loss is less than `abr_loss_lower`, Flussonic makes the publisher to step up from the current bitrate to the maximum one with the rate of `abr_stepup` percent.\\n","example":2},"abr_loss_upper":{"description":"The upper limit of packet loss. When it is reached, Flussonic reduces the bitrate. \\nThat is, if packet loss is greater than `abr_loss_upper`, Flussonic makes the publisher to reduce the current bitrate in steps with the maximum rate of `abr_stepdown` percent.\\n","type":"number","example":10},"abr_stepdown":{"description":"A step of reducing the bitrate to the minimum. \\nIf packet losses are greater than `abr_loss_upper`, Flussonic makes the publisher to reduce the current bitrate in steps with the maximum rate of `abr_stepdown` percent.\\n","type":"number"},"abr_mode":{"description":"The algorithm for determining the need to change the bitrate of the published stream and for calculating the target bitrate. \\nTwo options are possible:\\n\\n* `abr_mode=0` - This mode takes into account the packet losses, target bitrate, browser bitrate and the number of auto-adjustment cycles.\\n* `abr_mode=1` - This mode considers only packet losses and target bitrate.\\n","type":"integer","example":1},"abr_debug":{"description":"Whether adaptive bitrate process is logged.","type":"integer","example":1},"abr_cycles":{"description":"The number of cycles of bitrate auto-adjustment.\\nAfter the specified number of auto-adjustment cycles passes, Flussonic considers the bitrate to be optimal, and it is no longer analyzed. \\nBy default, `abr_cycles`=5. \\nIf `abr_cycles`=0, the adjustment process takes place all the time while the publication lasts.\\n","type":"integer","example":3},"abr_max_bitrate":{"description":"Maximum bitrate for adjustment process, in kbit/s.\\nFlussonic will keep the publication bitrate equal or below of the specified value.\\n","type":"integer","default":2500,"example":1000}}},"stream_input_mixer":{"allOf":[{"type":"object","title":"Mixer","properties":{"url":{"description":"URL to make a mixer stream from other streams.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"mixer://stream1,stream2","pattern":"^mixer://.*$","x-format-description":"input_url"},"sync":{"description":"This parameter is used for a mixer stream that uses other streams as its video and audio sources.\\n\\nIf the parameter is set to `realtime`, audio frames will be played in sync with video frames: \\nif the difference between timestamps of an audio frame and a corresponding video frame is more than 2 seconds, \\nthe audio frame will be played at the timestamp of the video frame. \\n\\nIf this parameter is set to `dts`, no synchronization is performed.\\n","enum":["dts","realtime"],"type":"string","example":"dts","default":"dts","x-api-allow":["watcher-core"]},"audio_add":{"type":"integer","description":"Moves audio timestamp forwards or backwards on a specified number of milliseconds.","deprecated":true,"x-delete-at":23.09,"format":"milliseconds","x-alias":"audio_offset","x-api-allow":["watcher-core"],"x-format-description":"milliseconds"},"audio_offset":{"type":"integer","description":"Rename audio_add, worked only for dts sync method","x-private":true,"format":"milliseconds","x-format-description":"milliseconds"},"mixer_strategy":{"description":"The mixing mode for the `mixer://` input type.\\n","oneOf":[{"const":"all","description":"Mix all input tracks."},{"const":"first_video_audio","description":"Mix only a first video track of the first input with a first audio track of the second input."}],"default":"first_video_audio","type":"string"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_timeshift":{"allOf":[{"type":"object","title":"Timeshift","properties":{"url":{"description":"Special URL to play the archive record of a stream with a fixed delay.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"timeshift://channel/7200"}},"pattern":"^timeshift://.*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_m4f":{"allOf":[{"type":"object","title":"M4F","properties":{"url":{"description":"URL to get a stream from m4f source.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"m4f://remote.host.com/example"},"secure":{"value":"m4fs://remote.host.com/example"}},"pattern":"^(m4f|m4fs)://.*$","x-format-description":"input_url"},"closed_captions":{"additionalProperties":{"type":"string"},"type":"object","x-key-type":"string","description":"The rules for handling the closed captions.\\n"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_copy":{"allOf":[{"type":"object","title":"Copy source","properties":{"url":{"description":"URL to connect to the source and get a copy of the original stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"copy://stream1","pattern":"^copy://.*$","x-format-description":"input_url"},"closed_captions":{"additionalProperties":{"type":"string"},"type":"object","x-key-type":"string","description":"The rules for handling the closed captions.\\n"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_shoutcast":{"allOf":[{"type":"object","title":"SHOUTcast","properties":{"url":{"description":"URL to connect to the SHOUTcast source and get the stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"shoutcast://remote.host.com/example/shoutcast"},"secure":{"value":"shoutcasts://remote.host.com/example/shoutcast"}},"pattern":"^(shoutcast|shoutcasts)://.*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_rtp":{"allOf":[{"type":"object","title":"RTP","properties":{"url":{"description":"URL to connect to RTP source and get the stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"rtp://remote.host.com","pattern":"^rtp://.*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_m4s":{"allOf":[{"type":"object","title":"M4S","properties":{"url":{"description":"URL to get a stream from m4s source.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"m4s://remote.host.com/example"},"secure":{"value":"m4ss://remote.host.com/example"}},"pattern":"^(m4s|m4ss)://.*$","x-format-description":"input_url"},"closed_captions":{"additionalProperties":{"type":"string"},"type":"object","x-key-type":"string","description":"The rules for handling the closed captions.\\n"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_mosaic":{"allOf":[{"type":"object","title":"Mosaic","properties":{"url":{"description":"Special URL to make a mosaic stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"mosaic://cam1,cam2,cam3,cam4?fps=20&preset=ultrafast&bitrate=1024k&size=340x240&mosaic_size=16"},"mosaic2":{"value":"mosaic2://"}},"pattern":"^(mosaic|mosaic2)://.*$","x-format-description":"input_url"},"disable_video":{"x-private":true,"type":"boolean","description":"Whether to show video from streams included into the mosaic."},"samples":{"x-private":true,"type":"integer","description":"The input samples."},"sample_rate":{"x-private":true,"type":"integer","description":"The input sample rate."},"bitrate":{"type":"integer","format":"speed","description":"Bitrate of the audio. \\n","x-format-description":"speed"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_publish":{"allOf":[{"type":"object","title":"Publish","properties":{"url":{"description":"The publish:// URL used to indicate where this stream started in publish mode.\\n\\nYou can publish videos to Flussonic using the following URLs: \\n __RTSP__: rtsp://FLUSSONIC-IP/stream_name \\n __HTTP MPEG-TS__: http://FLUSSONIC-IP/stream_name/mpegts \\n __RTMP__: rtmp://flussonic-ip/published or rtmp://flussonic-ip/static/published \\n __WebRTC__: http://FLUSSONIC-IP/stream_name/whip \\n __SRT__: srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME,m=publish\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"publish://","pattern":"^publish://.*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_webrtc_publish_specific"},{"$ref":"#/components/schemas/stream_input_srt_publish_specific"},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_playlist":{"allOf":[{"type":"object","title":"Playlist","properties":{"url":{"description":"URL to get a stream from playlist.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"playlist://remote.host.com/example.m3u8","pattern":"^playlist://.*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_ndi":{"allOf":[{"type":"object","title":"NDI","properties":{"url":{"description":"URL to get a stream from NDI source. Usually NDI software display sources like `My PC (Camera1)`, convert it into `ndi://My PC/Camera1`.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"ndi://hostname/Source1","pattern":"^ndi://.*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_frip":{"allOf":[{"type":"object","title":"FRIP","properties":{"url":{"description":"FRIP input. Can be a cmd if started from `-` or an existing socket.\\n","type":"string","examples":{"socket":{"value":"frip://hostname/Source1"},"cmd":{"value":"frip://-contrib/devel/simulator.erl"}},"pattern":"^frip://.*$","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"]},"socket_dir":{"description":"Directory for shmem files\\n","type":"string","example":"tmp"},"shmem_size":{"description":"Size of shared memory buffer. Omit to make it auto\\n","type":"integer","example":1024000}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_spts":{"allOf":[{"type":"object","title":"SPTS","properties":{"url":{"description":"URL to connect to the SPTS source and get the stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"udp://239.0.0.1:1234"},"udp1":{"value":"udp1://239.0.0.1:1234"},"udp2":{"value":"udp2://239.0.0.1:1234"},"udp3":{"value":"udp3://239.0.0.1:1234"}},"pattern":"^(udp|udp1|udp2|udp3)://.*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_mpegts_specific"},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_mpts":{"allOf":[{"type":"object","title":"MPTS","properties":{"url":{"description":"URL to get a stream from MPTS source.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"examples":{"default":{"value":"mpts-udp://239.0.0.1:1234"},"mpts-http":{"value":"mpts-http://239.0.0.1:1234"},"mpts-https":{"value":"mpts-https://239.0.0.1:1234"},"mpts-dvb":{"value":"mpts-dvb://asi_10?program=15"},"dvb":{"value":"dvb://asi_10?program=15"}},"pattern":"^(mpts-udp|mpts-http|mpts-https|mpts-dvb|dvb)://.*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_mpegts_specific"},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_mpegts_specific":{"type":"object","properties":{"programs":{"description":"Choose a program to ingest from an MPEG-TS stream.","items":{"type":"integer"},"type":"array","example":[1]},"pids":{"description":"Choose a specific PID to ingest from an MPEG-TS stream. \\nPID identifies separate data stream inside the multiplexed MPEG-TS stream. \\nIt is possible to set PID values for PMT, SDT, video, and audio tracks.\\n","items":{"type":"integer"},"type":"array","example":[211]},"no_fix_subs_dts":{"x-private":true,"description":"If this option is enabled, Flussonic will not try to fix subtitles DTS.","type":"boolean"},"cc_check":{"x-private":true,"description":"This parameter defines the behavior when getting a CC (Continuity Counter) error.\\n","oneOf":[{"const":"no","description":"Do nothing."},{"const":"log","description":"Write to the log."},{"const":"repeat","description":"Try again."}]},"subtitles":{"description":"This configuration is deprecated. Use `dvbocr` configuration field in stream.\\n\\nThis parameter allows to manage subtitles in an output stream.\\n","oneOf":[{"const":"drop","description":"An output stream will have no subtitles track."},{"const":"accept","description":"An output stream will have a subtitles track in DVB, without conversion to text (default behavior)."},{"const":"ocr_replace","description":"An output stream will have a track containing subtitles converted to a text format (WebVTT)."},{"const":"ocr_add","description":"An output stream will have two tracks containing subtitles: \\nthe original track with subtitles in DVB and a new track with text subtitles.\\n"}],"example":"drop","deprecated":true,"x-delete-at":25.03},"closed_captions":{"additionalProperties":{"type":"string"},"type":"object","x-key-type":"string","description":"The rules for handling the closed captions.\\n"},"scte35":{"description":"This option disables processing of SCTE-35 markers from an MPEG-TS input stream.\\nDeprecated since 22.12.\\nAvailable ways to disable processing of SCTE-35 markers:\\n1. pids option to select tracks without SCTE-35 markers\\n2. hls_scte35 option from stream_config_media for hls output\\n3. performing appropriate tuning pids in the transponder\\n","type":"boolean","default":true,"example":true,"deprecated":true,"x-delete-at":23.09},"languages":{"additionalProperties":{"type":"string"},"type":"object","x-key-type":"mpegts_lang_track","description":"An array of MPEG-TS language descriptors in format `[{key: track, value: language}]`\\n"},"bypass_psis":{"x-private":true,"description":"The list of PIDs that will transmit PSI tables as video frames (content=metadata).","items":{"type":"integer"},"type":"array"},"try_adts":{"x-private":true,"description":"If this option is enabled, the decoder tries to decode LATM as ADTS.","type":"boolean"}}},"stream_input_external":{"allOf":[{"type":"object","title":"External","x-private":true,"properties":{"url":{"description":"URL to make an External stream.\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","smartcam","central-layouter"],"example":"ffmpeg -i mmsh://wideo.umk.um","pattern":"^ffmpeg .*$","x-format-description":"input_url"}},"required":["url"]},{"$ref":"#/components/schemas/stream_input_base"}]},"stream_input_st2110":{"allOf":[{"type":"object","title":"SMPTE 2110\\n","required":["url"],"properties":{"url":{"description":"SMPTE 2110 UDP multicast group\\n","type":"string","format":"input_url","x-api-allow":["watcher-core","vision-config-external","central-layouter"],"examples":{"default":{"value":"st2110://239.0.0.1:1234"},"interface":{"value":"st2110://eth0@239.0.0.1:1234"},"bind_ip":{"value":"st2110://239.0.0.1:1234/192.168.20.24"}},"pattern":"^st2110://.*$","x-format-description":"input_url"},"width":{"type":"integer","description":"Must specify received pixel width\\n"},"height":{"type":"integer","description":"Must specify received pixel height\\n"},"bind_to_core":{"type":"integer","description":"Optional bind core\\n"}}},{"$ref":"#/components/schemas/stream_input_base"}]},"webrtc_abr_opts":{"type":"object","properties":{"start_track":{"description":"Video track number from which playback starts. Possible values: `v1`, `v2`, `v3` and so on.\\n\\nIf not specified, or an audio track specified (`start_track=a3`), or a video track number does not exist, \\nplayback starts with the track number in the middle of the list (e.g. `v2` if you have tracks `v1`, `v2`, and `v3`) \\nand then adjusts to the bandwidth availability.\\n\\nIf some tracks are excluded by the query parameter `?filter=tracks:...`, Flussonic searches for an available track with a lower number up to v0. \\nIf no track with a lower number was found, Flussonic searches for a closest track with a higher number.\\n","type":"string","example":"v2"},"loss_count":{"description":"Number of recent packet loss events to consider when switching bitrate.","default":2,"type":"integer","x-private":true},"up_window":{"description":"Switch bitrate to a higher value if in the last `up_window` number of seconds there were less than `loss_count` lost packets.","default":20,"type":"integer","x-private":true,"example":17},"down_window":{"description":"Switch bitrate to a lower value if in the last `down_window` number of seconds there were more than `loss_count` lost packets.","default":5,"type":"integer","x-private":true,"example":6},"ignore_remb":{"description":"If `true`, Flussonic ignores REMB (Receiver Estimated Maximum Bitrate) reported by the client when switching bitrate to a higher value.\\nIf false, the bitrate will not exceed the one sent by the client in the REMB.\\n","default":true,"type":"boolean","x-private":true,"example":true},"bitrate_prober":{"description":"If `true`, Flussonic periodically sends `probe` packets to measure available bandwidth and switches bitrate to a higher value if it possible.\\n","default":true,"type":"boolean","x-private":true,"example":true},"bitrate_probing_interval":{"description":"How often Flussonic sends `probe` packets in seconds\\n","default":5,"type":"integer","x-private":true,"example":6}}},"named_by":{"type":"string","oneOf":[{"const":"config","description":"Media is described in file on local disk"},{"const":"user","description":"Media was started and configured by user request: play or publish\\n"},{"const":"remote","description":"Media was sourced from another streamer via `source` directive"},{"const":"external","description":"Media was configured via config_external backend"}]},"backup_config":{"type":"object","properties":{"file":{"description":"Path to the backup file in a VOD location on the server (**not on the local disk!**). \\nThe backup file is played to fill in a time interval when the source is down.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/add-secondary-source-for-redundancy/#live-sources-url_file"},"type":"string","example":"vod/blank.mp4"},"timeout":{"description":"The time (in seconds) for Flussonic to switch to the fallback source if the main source stops sending frames. \\nThe important thing here is that the source remains active (connected), allowing for a client-publisher to stay on the socket.\\nThis option takes any type of frames into account. \\n\\nIf you do not specify timeout specifically for a fallback source, then in the absence of frames, `source_timeout` of the main source will be used.\\n","type":"integer","example":10},"audio_timeout":{"description":"The time (in seconds) for Flussonic to switch to the fallback source if the main source stops sending audio frames.","type":"integer","example":5},"video_timeout":{"description":"The time (in seconds) for Flussonic to switch to the fallback source if the main source stops sending video frames.","type":"integer","example":4},"transcode":{"description":"Whether or not to transcode the backup file. Set to `True` by default. \\nIf set to `False`, backup file frames will bypass as-is to the output stream.\\n\\nShould not be set to `False` unless the backup file has the same stream characteristics\\nas the live stream.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/add-secondary-source-for-redundancy/#live-sources-backup_transcode"},"type":"boolean"},"dvr":{"description":"Whether or not to record a backup to DVR. \\nSet to `False` by default (backup is not recorded).\\n","type":"boolean"}}},"auth_url":{"anyOf":[{"type":"string","format":"auth_url","x-format-description":"This may be a limited amount of schemas or a .lua file on disk\\n"},{"type":"string","oneOf":[{"const":"true","description":"Allow all playback sessions. Use the value to override template value."}]}]},"dvr_info":{"type":"object","properties":{"from":{"type":"integer","format":"utc","description":"The UTC timestamp of the first recording in this archive.","example":1641045644,"x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000},"depth":{"type":"integer","format":"seconds","description":"The time interval between the start of the *first* recording segment and the end of the *last* one.","example":259200,"x-format-description":"seconds"},"ranges":{"deprecated":true,"x-delete-at":24.09,"description":"The list of DVR ranges. The param is replaced with `ranges_list` method.","items":{"allOf":[{"$ref":"#/components/schemas/dvr_range"}]},"type":"array"},"bytes":{"description":"The size of the recorded archive.","type":"integer","format":"bytes","example":129600000000,"x-format-description":"bytes"},"disk_size":{"description":"The size of the recorded archive. Please, use bytes instead.","type":"integer","format":"bytes","example":1099511627776,"deprecated":true,"x-delete-at":25.07,"x-format-description":"bytes"},"duration":{"type":"integer","format":"seconds","description":"A total duration of the recorded segments, excluding recording gaps.\\nIt can be smaller than depth if you have gaps.\\n","example":172800,"x-format-description":"seconds"}},"required":["from","depth","ranges"]},"url_prefix":{"anyOf":[{"enum":[false],"type":"boolean"},{"type":"string"}]},"output_mpegts_pids":{"type":"object","properties":{"pmt":{"description":"PID of the elementary stream that contains Program Map Table (PMT) in the outgoing MPEG-TS stream.\\n\\nPMT contains the description of each program and lists the PIDs of elementary streams associated with that program.\\nFor instance, a transport stream used in digital television might contain three programs, to represent three television channels. \\nSuppose each channel consists of one video stream, one or two audio streams, and any necessary metadata. \\nA receiver wishing to decode one of the three channels merely has to decode the payloads of each PID associated with its program. \\nIt can discard the contents of all other PIDs.\\n","allOf":[{"$ref":"#/components/schemas/ts_pid"}]},"pcr":{"description":"PID of the elementary stream that contains PCR (Program Clock Reference) in the outgoing MPEG-TS stream.\\n\\nPCR is the time label used for synchronization of a stream playback with real time. \\nAdditionally, for DVB streams it is used for managing a decoder and its buffer. \\nIn this case, PCR gives a signal to the frames with DTS$"},"only":{"description":"If specified, only the events that match **every** filter in the filter set will be passed to the event sink target.\\n\\nThat is, if even one of the conditions is not satisfied, an event will **not** be processed. \\nEach filter (condition) has several possible values. For an event to satisfy the condition, \\nan event should match **any** of the specified values, not all of them.\\n","type":"array","items":{"$ref":"#/components/schemas/event_sink_filter"},"examples":{"default":{"value":[{"event":["listener_start"],"group":["system_overloaded"]}]}}},"except":{"description":"If specified, only the events that match **every** filter in the filter set will not be be passed to the event sink target.\\n\\nThat is, if even one of the conditions is not satisfied, an event will be processed.\\n\\nEach filter (condition) has several possible values. For an event to satisfy the condition, \\nan event should match **any** of the specified values, not all of them.\\n","type":"array","examples":{"default":{"value":[{"event":["stream_stopped","stream_started","source_*"]}]}},"items":{"$ref":"#/components/schemas/event_sink_filter"}},"throttle_delay":{"description":"The delay (in seconds) before sending an event to the sink after saving it into the buffer. \\nThis parameter allows to lower frequency of sending events.\\n\\nIf there are more than 100 events in the buffer, all of them will be sent to the sink without any delay. \\n","type":"integer","format":"seconds","example":1,"x-format-description":"seconds"},"max_size":{"description":"Maximum size of a log file. \\n\\nWhen this limit is reached, log rotation is performed: the oldest events will be overridden by later data.\\n","type":"integer","format":"bytes","example":10000,"x-format-description":"bytes"},"max_depth":{"description":"Maximal number of log files with events (JSON or text) that can be stored on a disk.\\n\\nWhen this limit is reached, log rotation is performed: the oldest files will be overridden by later data.\\n","type":"integer","example":100},"resend_limit":{"description":"If an error occurs (`HTTP 500` or any other error), then *Flussonic* will try to buffer events and send them later.\\n\\nThe option defines the **number** of events to keep in memory for further delivery.\\n\\nThe default value is `unlimited`.\\n","type":"integer","example":1000},"resend_timeout":{"description":"How often *Flussonic* will try to resend non-confirmed events to the handler (in seconds).","type":"integer","example":10},"level":{"allOf":[{"$ref":"#/components/schemas/loglevel"}],"description":"Specify logging level for this sink. Anything more verbose than it will not get into this sink.\\n"},"extra":{"additionalProperties":{"type":"string"},"type":"object","description":"Some additional options."}}},"event_default":{"type":"object","properties":{"utc_ms":{"type":"integer","format":"utc_ms","description":"The time of the event registration on the server.\\n","x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"event_id":{"type":"integer","description":"Event identifier.\\n"},"trace_id":{"type":"string","format":"uuid","description":"Unique identifier of the operation.\\nYou can use this field to search for events related to same operation.\\nValue of this field is taken from the `X-Trace-Id` header.\\nIf `X-Trace-Id` header is not set, it will be generated automatically.\\nService will use the value of this field to make outgoing requests.\\n","example":"05cec7ee-fbd0-11ed-be56-0242ac120002","x-format-description":"uuid"},"server":{"type":"string","description":"Originator of event.\\nThis field is present if [event_sink.url](https://flussonic.com/doc/api/reference/#tag/events/operation/event_sink_get/response%7Curl)\\nis configured as HTTP/HTTPS url.\\n","example":"flussonic.host"}}},"event_media":{"type":"object","properties":{"media":{"type":"string","description":"The name of the stream or file where the event was captured.\\n"},"submedia":{"description":"Some additional info on the media, may vary depending on the media type.\\n","type":"string"}}},"server_starting":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Server started booting."},"version":{"description":"Version of service.","type":"string"},"full_version":{"description":"Full version of service with the build number.","type":"string"}}},{"$ref":"#/components/schemas/event_default"}]},"server_started":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Server started successfully."},"previous_state":{"$ref":"#/components/schemas/previous_server_state"},"version":{"description":"Version of Service.","type":"string"},"instance_id":{"description":"The ID of the started instance.","type":"string"}}},{"$ref":"#/components/schemas/event_default"}]},"motion_base":{"type":"object","properties":{"motion_id":{"type":"string","description":"Uniq motion id.","example":"b639b21f-3926-4a9f-812e-4eb57e283d59"},"motion_data":{"type":"string","description":"Non-structured data received from source.","example":"#{<<\\\\\\"Message\\\\\\">> => #{<<\\\\\\"Topic\\\\\\">> => <<\\\\\\"tns1:VideoSource/MotionAlarm\\\\\\">>}]"}}},"motion_started":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Motion started.","example":"stream_motion_started"}}},{"$ref":"#/components/schemas/motion_base"},{"$ref":"#/components/schemas/event_media"}]},"motion_stopped":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Motion stopped.","example":"stream_motion_stopped"},"duration":{"type":"integer","description":"How long has the movement been active.","example":15}}},{"$ref":"#/components/schemas/motion_base"},{"$ref":"#/components/schemas/event_media"}]},"api_call_event":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"The api call.","const":"api_call"},"path":{"description":"The api call path.","type":"string"},"qs":{"description":"The api call query string.","type":"string"}}},{"$ref":"#/components/schemas/api_call"},{"$ref":"#/components/schemas/entity_event"}]},"auth_backend_url":{"type":"object","properties":{"url":{"description":"The URL of an HTTP backend. \\n","example":"http://stalker-1.iptv.net/auth.php","type":"string"},"extra":{"x-private":true,"type":"object","additionalProperties":{"type":"string"},"description":"Some additional options."}},"required":["url"]},"auth_backend_config":{"type":"object","required":["name"],"properties":{"name":{"type":"string","format":"auth_backend_name","description":"Globally unique [`auth_backend`](https://flussonic.com/doc/complex-authorization-with-backends/) name.","x-primary-key":true,"readOnly":true,"x-format-description":"auth_backend_name"},"allow_tokens":{"description":"Explicit list of tokens that give access to the content without any other checks.\\n","example":["test_token1","test_token2"],"type":"array","items":{"type":"string"}},"deny_tokens":{"description":"Explicit list of tokens that deny access to the content and stop any other checks.\\n","example":["test_token3","test_token4"],"type":"array","items":{"type":"string"}},"allow_ips":{"description":"Explicit list of IP-addresses or subnet masks that have access to the content without any other checks.\\n","example":["127.0.0.1","10.10.0.0/24"],"type":"array","items":{"type":"string"}},"deny_ips":{"description":"Explicit list of IP-addresses or subnet masks that are banned from accessing the content. \\n","example":["8.8.8.8","10.10.0.0/24"],"type":"array","items":{"type":"string"}},"allow_countries":{"description":"Explicit list of countries (two-letter country codes according to ISO 3166-1) that have access to the content without any other checks.\\nFlussonic uses the MaxMind GeoLite2 Country database to map a country to a block of IP addresses. \\nNew releases of GeoIP2 databases come out more often than the releases of Flussonic server, so sometimes the used database can become outdated.\\nTherefore we recommend you to install a separate GeoIP2 library and set up Flussonic to use it.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/restrict-viewer-country-with-geoip/"},"example":["RU","US"],"type":"array","items":{"type":"string"}},"deny_countries":{"description":"Explicit list of countries (two-letter country codes according to ISO 3166-1) that are banned from accessing the content.\\nFlussonic uses the MaxMind GeoLite2 Country database to map a country to a block of IP addresses. \\nNew releases of GeoIP2 databases come out more often than the releases of Flussonic server, so sometimes the used database can become outdated.\\nTherefore we recommend you to install a separate GeoIP2 library and set up Flussonic to use it.\\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/restrict-viewer-country-with-geoip/"},"example":["RU","GB"],"type":"array","items":{"type":"string"}},"allow_uas":{"description":"Explicit list of user agents (set-top boxes or browsers) that have access to the content without any other checks. \\n","example":["AppleWebKit/533.3 (KHTML, like Gecko)","VLC/3.0.8 LibVLC/3.0.8"],"type":"array","items":{"type":"string"}},"deny_uas":{"description":"The list of user agents (set-top boxes or browsers) that are banned from accessing the content. \\n","example":["Mobile Safari/533.3","VLC/3.0.8 LibVLC/3.0.8"],"type":"array","items":{"type":"string"}},"backends":{"description":"URL(s) of the HTTP backend(s).","type":"array","items":{"$ref":"#/components/schemas/auth_backend_url"}},"allow_default":{"description":"This option defines the default behavior when all backends are not responding (usually, because of errors in HTTP responses) and the session is not started yet.\\nIf this option is enabled, all clients or devices except those listed in `deny` option will have access to the content.\\nIf this option is disabled, all clients or devices except those listed in `allow` option will not have access to the content. \\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/complex-authorization-with-backends/#auth-configurator-allowdefault"},"type":"boolean","default":false}}},"http_proxy_config":{"type":"object","properties":{"prefix":{"type":"string","format":"media_name","x-primary-key":true,"description":"HTTP prefix that will be intercepted by this http proxy configuration\\n","x-format-description":"media_name"},"url":{"type":"string","format":"url","description":"Upstream url\\n","x-format-description":"url"},"mainpage":{"type":"boolean","default":false,"description":"If this flag is set, then streamer will redirect from \\"/\\" to this proxy configuration.\\n"},"stats":{"description":"The runtime statistics about http proxy\\n","allOf":[{"$ref":"#/components/schemas/http_proxy_stats"}],"readOnly":true}},"required":["prefix","url"]},"http_proxy_stats":{"type":"object","properties":{"requests":{"description":"Total number of requests this prefix received\\n","type":"integer","openmetrics_metric":"http_proxy_requests","x-metric-type":"counter","example":1000},"protocol_upgrades":{"description":"Total number of requests with protocol upgrade (e.g. websocket)\\n","type":"integer","openmetrics_metric":"http_proxy_protocol_upgrades","x-metric-type":"counter","example":1000},"proxy_error":{"description":"Number of requests with error on proxy itself\\n","type":"integer","example":10,"openmetrics_metric":"http_proxy_error","x-metric-type":"counter"},"proxy_error_connection":{"description":"Number of requests with connection errors - econnrefused, etc\\n","type":"integer","example":10,"openmetrics_metric":"http_proxy_error_connection","x-metric-type":"counter"},"http_100":{"description":"Number of requests with HTTP code 1xx (e.g. protocol upgrades)\\n","type":"integer","example":1000,"openmetrics_metric":"http_proxy_100","x-metric-type":"counter"},"http_200":{"description":"Number of requests with HTTP code 2xx\\n","type":"integer","example":1000,"openmetrics_metric":"http_proxy_200","x-metric-type":"counter"},"http_300":{"description":"Number of requests with HTTP code 3xx\\n","type":"integer","example":10,"openmetrics_metric":"http_proxy_300","x-metric-type":"counter"},"http_400":{"description":"Number of requests with HTTP code 4xx\\n","type":"integer","example":10,"openmetrics_metric":"http_proxy_400","x-metric-type":"counter"},"http_500":{"description":"Number of requests with HTTP code 5xx\\n","type":"integer","example":10,"openmetrics_metric":"http_proxy_500","x-metric-type":"counter"},"time_100ms":{"type":"integer","description":"Number of API calls that took less than 100ms","example":10,"openmetrics_metric":"http_proxy_time_100ms","x-metric-type":"counter"},"time_500ms":{"type":"integer","description":"Number of API calls that took more than 100ms and less than 500ms","example":5,"openmetrics_metric":"http_proxy_time_500ms","x-metric-type":"counter"},"time_1000ms":{"type":"integer","description":"Number of API calls that took more than 500ms and less than 1s","example":2,"openmetrics_metric":"http_proxy_time_1000ms","x-metric-type":"counter"},"time_5000ms":{"type":"integer","description":"Number of API calls that took more than 1s and less than 5s","example":2,"openmetrics_metric":"http_proxy_time_5000ms","x-metric-type":"counter"},"time_longms":{"type":"integer","description":"Number of API calls that took more than 5s","example":1,"openmetrics_metric":"http_proxy_time_longms","x-metric-type":"counter"}}},"network_addr":{"type":"string","minLength":1},"config_version":{"type":"array","items":{"type":"integer"}},"previous_server_state":{"type":"string","enum":["shutdown","killed","unknown","none","error_reading","unconfigured"],"description":"The previous state of the server."},"config_path_segment":{"anyOf":[{"type":"string"},{"type":"string","x-atom":true},{"type":"integer"}]},"config_error_status":{"type":"object","properties":{"error":{"description":"Short error description.","type":"string","x-atom":true,"example":"bad_url"},"config":{"description":"Partial configuration that can be recovered if an error occurs.","type":"object"},"line":{"description":"Line number pointing to where an error was detected.","type":"integer","example":15},"first_error_line":{"description":"If an error takes up to several lines, it is the first line where the error was detected.","type":"integer","example":14},"col":{"description":"The column number pointing to where the error was detected.","type":"integer","example":20},"first_error_col":{"description":"Last column with something valid.","type":"integer","example":5},"path":{"description":"Config path to the erroneous element.","type":"array","items":{"$ref":"#/components/schemas/config_path_segment"},"example":["streams",0,"inputs",0,"url","input_url"]},"detail":{"description":"Some other details that may help to identify the error.","anyOf":[{"type":"string"},{"type":"number"},{"type":"object","additionalProperties":{"type":"string"}},{"type":"array","items":{"$ref":"#/components/schemas/config_path_segment"}}]},"errors":{"description":"List of structured errors. Just to conform with JSONAPI format","type":"array","x-private":true,"deprecated":true,"x-delete-at":23.09,"items":{"$ref":"#/components/schemas/error"}}}},"license_type":{"type":"string","enum":["undefined","online","usb","network","offline"]},"partition_stats":{"type":"object","properties":{"path":{"description":"Mount path.","type":"string","format":"disk_path","example":"_var_lib_docker_overlay2_3684778579db0a4d418fdc1a8a6953b680ab92d179a7d6f9506710d073095e36_merged","openmetrics_label":"path","x-format-description":"disk_path"},"device":{"description":"The block device or file related to a mount path.","type":"string","format":"disk_device","example":"sda1","openmetrics_label":"device","x-format-description":"disk_device"},"total_mb":{"description":"Total number of megabytes shown by the OS for this partition.","type":"integer","format":"megabytes","openmetrics_metric":"partition_total_mb","x-metric-type":"gauge","example":45423,"x-format-description":"megabytes"},"usage":{"description":"Percentage of usage of this partition.","type":"integer","format":"percent","openmetrics_metric":"partition_usage","x-metric-type":"gauge","example":30,"x-format-description":"percent"},"io_util":{"description":"Percentage of IO utilization for device related to a mount path.","type":"integer","format":"percent","example":42,"openmetrics_metric":"device_io_util","x-metric-type":"gauge","x-format-description":"percent"}}},"server_stats_whoami":{"type":"object","properties":{"server_version":{"description":"Package version of the server. Might be simple a number of release like 21.11 or longer if you have a rolling release installed.","type":"string","format":"server_version","openmetrics_label":"version","example":"23.04","x-format-description":"server_version"},"build":{"type":"integer","description":"Build version\\n","openmetrics_label":"build"},"now":{"type":"number","format":"utc_ms","description":"Current response time\\n","x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"started_at":{"description":"Boot time of this instance.","type":"integer","format":"utc","openmetrics_metric":"server_started_at","x-metric-type":"gauge","example":1639337825,"x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000}}},"server_stats_streamer":{"type":"object","properties":{"config_version":{"description":"Current runtime version of config. We do not declare exact structure, but we promise\\nthat it will be always comparable and increasing (if server has proper NTP configuration, of course).\\nRight now it is a tuple of server start time and incrementing version of config.\\n","allOf":[{"$ref":"#/components/schemas/config_version"}],"example":[1636709231,4]},"next_version":{"description":"Notification about a newer version in the repository.","type":"string","format":"server_version","example":"22.01","x-format-description":"server_version"},"streamer_status":{"description":"*Flussonic* will always try to start even if there are severe errors that do not\\nallow functioning.\\n\\n`starting` status means you should wait for some time (not more than\\na minute).\\n\\n`running` status means all configuration was loaded. However, the status does not provide\\nan information about your streams and the quality of provided service.\\n\\nAll other statuses mean there are some severe problems on the server\\nthat cannot be repaired by Flussonic itself.\\n","allOf":[{"$ref":"#/components/schemas/server_stats_streamer_status"}],"x-api-allow":["central-layouter"]},"config_external_status":{"description":"Information about current external config status","allOf":[{"$ref":"#/components/schemas/config_external_error_status"}],"x-api-allow":["central-layouter"]},"hostname":{"description":"Hostname of your server. Please, use FQDN, do not leave your Linux misconfigured.","type":"string","example":"openapi.flussonic.com"},"license_txt":{"description":"The code of the license applied on the server.","type":"string","example":"uO8v12HJhNXVj5gM"},"license_type":{"description":"The license type.","allOf":[{"$ref":"#/components/schemas/license_type"}]},"license_request":{"description":"Base64 encoded license activation request which is used to prepare licence activation.","x-private":true,"type":"string","example":"QSBwYXJ0IG9mIGEgZHVtbXkgYWN0aXZhdGlvbiBwYXlsb2FkIHN0cmluZw=="},"id":{"description":"Unique runtime ID of this instance. Updated with the restart.","type":"string","format":"uuid","example":"61893b15-75b2-4fcb-b4cf-ae1dd0858ea2","x-format-description":"uuid"},"vsaas":{"description":"Shows if Flussonic Watcher is enabled in the license.","type":"boolean"},"vsaas_branding":{"description":"Shows if Watcher branding is enabled in the license.","type":"boolean"},"vsaas_running":{"description":"Shows if Watcher is currently running.","type":"boolean"},"rproxy":{"description":"Shows if rproxy is configured.","type":"boolean"},"rproxy_running":{"description":"Shows if rproxy is running.","type":"boolean"},"transcoder":{"description":"Shows if the server\'s CPU can be used for transcoding \\n(i.e. if the `flussonic-transcoder` package is installed on the server). \\n","type":"boolean","x-api-allow":["central-layouter"]},"bandwidth_usage":{"description":"Outbound bandwidth usage (load balancing in `usage` mode is based on this value).","type":"integer","format":"percent","example":67,"x-format-description":"percent"},"total_bandwidth":{"description":"Total server bandwidth.","type":"integer","format":"speed","deprecated":true,"x-notice":"duplicate of config total_bandwidth","x-deleted-at":22.03,"x-format-description":"speed"},"cpu_usage":{"description":"CPU usage on the server.","type":"integer","format":"percent","openmetrics_metric":"server_cpu_usage","x-metric-type":"gauge","example":48,"x-format-description":"percent"},"memory_usage":{"description":"Memory usage on the server.","type":"integer","format":"percent","openmetrics_metric":"server_memory_usage","x-metric-type":"gauge","example":27,"x-format-description":"percent"},"scheduler_load":{"description":"Erlang scheduler load.","type":"integer","format":"percent","openmetrics_metric":"server_scheduler_load","x-metric-type":"gauge","example":40,"x-format-description":"percent"},"uptime":{"description":"The server uptime.","type":"integer","format":"seconds","example":4325502,"x-format-description":"seconds"},"partitions":{"description":"The list of disk partitions on the server.","type":"array","items":{"allOf":[{"$ref":"#/components/schemas/partition_stats"}]},"x-api-allow":["central-layouter"]},"transcoder_devices":{"description":"Statistics on the devices used for transcoding.","type":"array","items":{"allOf":[{"$ref":"#/components/schemas/transcoder_device_stats"}]},"x-api-allow":["central-layouter"]},"video_devices":{"x-private":true,"description":"List of DVB/ASI/ATSC/ISDB/SDI cards.","type":"array","items":{"allOf":[{"$ref":"#/components/schemas/video_adapter_device_stats"}]}},"text_alerts":{"description":"Human-readable format of errors and alerts that need to be fixed. \\nProvided by some *Flussonic* subsystems.\\n","additionalProperties":{"type":"string"},"type":"object"},"config_error":{"description":"Information about errors in the config file.","allOf":[{"$ref":"#/components/schemas/config_error_status"}]},"is_chassis":{"description":"The flag shows if Flussonic runs on Flussonic Coder.\\n","type":"boolean"}}},"server_stats_network":{"type":"object","properties":{"total_clients":{"description":"The number of clients receiving the streams from the server at the moment of request.","type":"integer","openmetrics_metric":"server_total_clients","x-metric-type":"gauge","example":2040},"total_streams":{"description":"The number of streams created on the server.","type":"integer","example":45,"x-api-allow":["central-layouter"]},"online_streams":{"description":"The number of streams that are ready to be served to the clients.","type":"integer","openmetrics_metric":"server_online_streams","x-metric-type":"gauge","example":27,"x-api-allow":["central-layouter"]},"opened_files":{"description":"The number of opened files.","type":"integer","openmetrics_metric":"server_opened_files","x-metric-type":"gauge","example":5},"input_kbit":{"description":"Current incoming speed (bitrate) of the data transmission over the network.","type":"integer","format":"speed","openmetrics_metric":"server_input_bitrate","x-metric-type":"gauge","example":400300,"x-format-description":"speed"},"output_kbit":{"description":"Current outgoing speed (bitrate) of the data transmission over the network.","type":"integer","format":"speed","openmetrics_metric":"server_output_bitrate","x-metric-type":"gauge","example":500400,"x-format-description":"speed"}}},"server_stats_streamer_status":{"type":"string","oneOf":[{"title":"Config is missing","const":"no_config","description":"The configuration file is not found at `/etc/flussonic/flussonic.conf`."},{"title":"Config is broken","const":"broken_config","description":"There are some errors in the config file saved at `/etc/flussonic/flussonic.conf`.\\nTry checking logs and `text_alerts` for details.\\n"},{"title":"Could not obtain valid external config from Central.","const":"config_external_error","description":"There are some errors during external config receiving or validating.\\nTry checking logs and `config_external_error` for details.\\n"},{"title":"License is failing","const":"license_failure","description":"The license cannot be activated. Please contact the support team."},{"title":"License is missing","const":"no_license","description":"The license file is not found at `/etc/flussonic/license.txt`."},{"title":"Starting","const":"starting","description":"The server is starting."},{"title":"Running","const":"running","description":"Normal operation mode."}],"example":"running"},"config_external_error_status":{"type":"object","properties":{"status":{"description":"External config status","type":"string","oneOf":[{"const":"loaded","description":"External config is successfully loaded, parsed and applied."},{"const":"error","description":"Valid external config could not be obtained because of error"}]},"reason":{"$ref":"#/components/schemas/request_error_reason"},"while":{"description":"Conditions of the error occurrence.","type":"string","oneOf":[{"const":"refresh","description":"Configuration server returned an error while performing a background batch refresh."},{"const":"request","description":"Configuration server returned an error while requesting a stream configuration for the first time."},{"const":"srt_port_resolve","description":"Configuration server returned an error while resolving srt port."}]},"code":{"type":"integer","description":"HTTP response code"},"error":{"type":"string","description":"Error description (optional)","example":"invalid_authorization"},"path":{"description":"Config path to the erroneous element.","type":"array","items":{"$ref":"#/components/schemas/config_path_segment"},"example":["streams",0,"inputs",0,"url","input_url"]},"detail":{"type":"string","description":"Detailed error description (optional)"}}},"request_error_reason":{"description":"Reason of the error.","type":"string","oneOf":[{"const":"validation_error","description":"New configuration does not match reference."},{"const":"network_error","description":"Streamer could not get reply from the configuration server."},{"const":"malformed_json","description":"Configuration server returned an malformed json body."},{"const":"invalid_request","description":"Configuration server received an invalid request, e.g. required headers is missing or invalid authorization."},{"const":"unknown","description":"Configuration server returned an error for an unknown reason."}]},"admin_credentials":{"type":"object","properties":{"login":{"type":"string","description":"Login","example":"secretlogin"},"password":{"type":"string","description":"Password","example":"passw","format":"password","x-format-description":"password"},"hash":{"type":"boolean","description":"Server will pass your password through a hashing algorithm.","example":true}},"required":["login","password"]},"server_config_base":{"type":"object","properties":{"cluster_key":{"description":"The cluster key to unite several servers with the same key into a cluster.","type":"string","example":"xS6i6Q3DCc5nEvnu"},"listeners":{"allOf":[{"$ref":"#/components/schemas/listeners"}],"description":"The configuration of network listeners."},"srt":{"allOf":[{"$ref":"#/components/schemas/listen_spec"}],"description":"Global SRT listening port. It is possible to use a single port for playback and publishing, but it is not compatible with clients.\\nConsider configuring separate ports for playback and publishing for each stream."},"srt2":{"x-private":true,"allOf":[{"$ref":"#/components/schemas/listen_spec"}],"description":"Global SRT2 listening port. It is not possible to use a single port for playback and publishing.\\nConfigure separate ports for playback and publishing for each stream."},"srt_play":{"allOf":[{"$ref":"#/components/schemas/srt_config"}],"description":"SRT play configuration with single-port mode. Not supported by many clients, better use per-stream mode."},"srt2_play":{"allOf":[{"$ref":"#/components/schemas/srt_config"}],"description":"SRT2 play configuration with single-port mode. Not supported by many clients, better use per-stream mode."},"srt_publish":{"allOf":[{"$ref":"#/components/schemas/srt_config"}],"description":"SRT publish configuration with single-port mode. Not supported by many clients, better use per-stream mode."},"srt2_publish":{"allOf":[{"$ref":"#/components/schemas/srt_config"}],"description":"SRT2 publish configuration with single-port mode. Not supported by many clients, better use per-stream mode."},"geoip":{"type":"string","format":"disk_path","description":"Use your own GeoIP database.","example":"/usr/share/GeoIP/GeoLite2-City.mmdb","x-format-description":"disk_path"},"meta":{"description":"Some additional options of the server.","allOf":[{"$ref":"#/components/schemas/server_meta"}],"example":"{\\"role\\": \\"transcoder\\"}"},"loglevel":{"allOf":[{"$ref":"#/components/schemas/loglevel"}],"description":"Raise loglevel to debug if needed.","example":"error"},"nvidia_monitor":{"description":"Enables saving statistics on Nvidia performance.","type":"boolean","example":true},"total_bandwidth":{"description":"Total server bandwidth.","type":"integer","format":"speed","example":1000000000,"x-format-description":"speed"},"log_requests":{"description":"Enables logging of requests for streams (manifests, segments) and API request.","type":"boolean"},"pulsedb":{"description":"Directory to store Pulse statistics.","type":"string","format":"disk_path","example":"/var/run/flussonic/pulsedb","x-format-description":"disk_path"},"session_log":{"description":"Directory to store the session log.","type":"string","format":"disk_path","example":"/var/run/flussonic/session_log","x-format-description":"disk_path"},"url_prefix":{"description":"This option applies to HLS and DASH protocols, for all streams on the server. \\nThe addresses of individual segments within a segment-based playlist will start with the specified prefix.\\nThis setting is available in the global part of the config file as well as locally for any individual stream. \\nWhen specified at the stream level, it is only valid for this particular stream.\\n","allOf":[{"$ref":"#/components/schemas/url_prefix"}]},"view_auth":{"allOf":[{"$ref":"#/components/schemas/admin_credentials"}],"description":"Credentials for access to readonly API functions like getting streams info, status, and statistics.\\n"},"edit_auth":{"allOf":[{"$ref":"#/components/schemas/admin_credentials"}],"description":"Credentials for administrator access to the server."},"api_allowed_from":{"description":"The list of allowed subnets to accept API requests from.","type":"array","items":{"type":"string","format":"cidr","x-format-description":"cidr"}},"wwwroot":{"type":"string","format":"disk_path","x-private":true,"description":"Alternative wwwroot directory\\n","x-format-description":"disk_path"},"auth_token":{"allOf":[{"$ref":"#/components/schemas/auth_token"}],"description":"Configure key name of query string key-value pair for token authentication\\n"},"max_sessions":{"type":"integer","x-private":true,"description":"Maximum allowed sessions for whole streamer\\n"},"aliaser":{"type":"string","format":"aliaser_url","x-private":true,"description":"HTTP url of media name aliaser backend\\n","x-format-description":"aliaser_url"},"init_script":{"type":"string","format":"disk_path","x-private":true,"description":"Path to lua script that will be called on server start\\n","x-format-description":"disk_path"}}},"server_config_full":{"type":"object","properties":{"event_sinks":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/event_sink_config"}]},"description":"The configuration of event notifications"},"rproxy":{"allOf":[{"$ref":"#/components/schemas/rproxy_config"}],"description":"The configuration of the port forwarding."},"http_proxies":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/http_proxy_config"}]},"description":"List of HTTP prefixes that can be handled via call to remote http server\\n"},"chassis":{"allOf":[{"$ref":"#/components/schemas/chassis_config"}],"description":"The configuration of the chassis."},"auth_backends":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/auth_backend_config"}]},"description":"The configuration of auth backends"},"vods":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/vod_config"}]},"description":"The configuration of VODs"},"dvrs":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/dvr_config"}]},"description":"The configuration of the DVRs"},"peers":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/peer_config"}]},"description":"The configuration of peers in the cluster."},"sources":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/source_config"}]},"description":"The configuration of the video sources."},"transponders":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/transponder_config"}]},"description":"The configuration of the transponders."},"templates":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/template_config"}]},"description":"The configuration of the templates."},"streams":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/stream_config"}]},"default":[],"description":"The configuration of the streams."},"caches":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/cache_config"}]},"description":"The configuration of the cache."},"dvb_cards":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/dvb_card_config"}]},"description":"The configuration of the DVB cards."},"balancers":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/balancer_config"}]},"description":"The configuration of the balancers."},"camera_alarm":{"allOf":[{"$ref":"#/components/schemas/camera_alarm_config"}],"description":"The configuration of the camera alarms."},"vsaas":{"allOf":[{"$ref":"#/components/schemas/vsaas_config"}],"description":"The configuration of the video surveillance subsystem."},"file_processor":{"allOf":[{"$ref":"#/components/schemas/file_processor_config"}],"description":"The configuration of the file processor."},"iptv":{"allOf":[{"$ref":"#/components/schemas/iptv_config"}],"description":"The configuration of the IPTV"},"decklinks":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/decklink_config"}]},"description":"Configuration of decklink SDI capture cards\\n"},"web_scripts":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/web_script_config"}]},"x-private":true,"description":"Prefixed lua handlers that can handle simple web requests\\n"}}},"ui_settings_config":{"type":"object","properties":{"title":{"description":"The product title.","type":"string","examples":{"flussonic":{"value":"Streamer","x-scope":["flussonic"]},"central":{"value":"Central","x-scope":["central"]},"cloud":{"value":"Cloud","x-scope":["cloud"]},"client-area":{"value":"Billing","x-scope":["client-area"]}}},"brand":{"description":"The product brand.","type":"string","examples":{"flussonic":{"value":"Streamer","x-scope":["flussonic"]},"central":{"value":"Central","x-scope":["central"]},"cloud":{"value":"Cloud","x-scope":["cloud"]}}},"product":{"description":"The product type.","type":"string","examples":{"flussonic":{"value":"streamer","x-scope":["flussonic"]},"central":{"value":"central","x-scope":["central"]},"cloud":{"value":"cloud","x-scope":["cloud"]}}},"fonts":{"description":"The fonts in the UI.","type":"object","properties":{"light":{"description":"The light font style.","type":"string","x-private":true,"example":"fira-sans-300.woff2","format":"byte","x-notice":"file_base64","x-format-description":"byte"},"regular":{"description":"The regular font style.","type":"string","x-private":true,"example":"fira-sans-400.woff2","format":"byte","x-notice":"file_base64","x-format-description":"byte"},"medium":{"description":"The medium font style.","type":"string","x-private":true,"example":"fira-sans-500.woff2","format":"byte","x-notice":"file_base64","x-format-description":"byte"}}},"logo":{"description":"The logo in the header. The user interface supports values with or without the mime type.","type":"string","examples":{"with-mime":{"value":"data:image/svg+xml;base64,"},"just-png":{"value":""}},"x-private":true,"format":"byte","x-notice":"file_base64","x-format-description":"byte"},"logoAuth":{"description":"The logo on the login page.","type":"string","example":"logoLogin.png","x-private":true,"format":"byte","x-notice":"file_base64","x-format-description":"byte"},"favicons":{"description":"The favicons of different sizes for different OSes and browsers.","type":"object","properties":{"16":{"description":"16x16 pixels favicon.","type":"string","x-private":true,"format":"byte","example":"icons/favicon-16.png","x-format-description":"byte"},"32":{"description":"32x32 pixels favicon.","type":"string","x-private":true,"example":"icons/favicon-32.png","format":"byte","x-notice":"file_base64","x-format-description":"byte"},"48":{"description":"48x48 pixels favicon.","type":"string","x-private":true,"example":"icons/favicon-48.png","format":"byte","x-notice":"file_base64","x-format-description":"byte"},"64":{"description":"64x64 pixels favicon.","type":"string","x-private":true,"example":"icons/favicon-64.png","format":"byte","x-notice":"file_base64","x-format-description":"byte"},"128":{"description":"128x128 pixels favicon.","type":"string","x-private":true,"example":"icons/favicon-128.png","format":"byte","x-notice":"file_base64","x-format-description":"byte"}}},"colors":{"description":"The interface colors.","type":"object","properties":{"primary":{"description":"Primary color for interface elements like selection in the main menu, info icons, buttons, etc.","type":"string","examples":{"flussonic":{"value":"#002DAB","x-scope":["flussonic"]},"central":{"value":"#4549F2","x-scope":["central"]},"cloud":{"value":"#4549F2","x-scope":["cloud"]},"client-area":{"value":"#002DAB","x-scope":["client-area"]}}},"secondary":{"description":"Secondary color for obsolete interface elements like active tab.","type":"string","examples":{"flussonic":{"value":"#FF0D70","x-scope":["flussonic"]},"central":{"value":"#E91E63","x-scope":["central"]},"cloud":{"value":"#E91E63","x-scope":["cloud"]},"client-area":{"value":"#FF0D70","x-scope":["client-area"]}}},"background":{"description":"The background color.","type":"string","example":"#fff"}}},"menu_items":{"description":"The list of the main menu items and Streams page tabs that are available on the server.","x-private":true,"type":"object","properties":{"pulse":{"description":"The Pulse page.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"streamer_config":{"description":"The Config page.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"cluster":{"description":"The Cluster page.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":true,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"ipcam":{"description":"The IP Cameras page (for Watcher DB settings).","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"audit_logs":{"description":"The Audit Logs page.","type":"boolean","default":true,"examples":{"flussonic":{"value":false,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":true,"x-scope":["cloud"]},"watcher-client":{"value":true,"x-scope":["watcher-client"]}}},"pins":{"description":"Pins page for RTRN.","type":"boolean","default":false,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]}}},"iptv":{"description":"The IPTV page.","type":"boolean","default":false,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"upload_logs":{"description":"The Support page.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"streamer_upgrade":{"description":"Info about available upgrades for the server.","type":"object","properties":{"package_name":{"description":"The name of the upgrade package.","type":"string","example":"streamer"}}},"usages":{"description":"The Usages page.","type":"boolean","default":true,"examples":{"flussonic":{"value":false,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":true,"x-scope":["cloud"]}}},"chassis":{"description":"The Chassis page.","type":"boolean","default":false,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"nvrs":{"description":"Watcher page that allows view streams from NVRs.","type":"boolean","default":false,"examples":{"flussonic":{"value":false,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"watcher-client":{"value":true,"x-scope":["watcher-client"]}}},"map":{"description":"Watcher page with map.","type":"boolean","default":true,"examples":{"flussonic":{"value":false,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"watcher-client":{"value":true,"x-scope":["watcher-client"]}}},"main_templates":{"description":"The Streams - Templates tab.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"main_transponders":{"description":"The Streams - Transponders tab.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"main_cluster_sources":{"description":"The Streams - Sources tab.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"main_vod_locations":{"description":"The Streams - VODs tab.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"main_dvb_cards":{"description":"The Streams - DVB cards tab.","type":"boolean","default":true,"examples":{"flussonic":{"value":true,"x-scope":["flussonic"]},"central":{"value":false,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"main_agents":{"description":"The Streams - Agents tab.","type":"boolean","default":true,"examples":{"flussonic":{"value":false,"x-scope":["flussonic"]},"central":{"value":true,"x-scope":["central"]},"cloud":{"value":false,"x-scope":["cloud"]}}},"my_cameras":{"description":"Page with cameras.","type":"boolean","default":true,"x-scope":["watcher-client"]},"cameras":{"description":"The admin page with cameras.","type":"boolean","default":false,"x-scope":["watcher-client"]},"persons":{"description":"Page with persons.","type":"boolean","default":false,"x-scope":["watcher-client"]},"streamers":{"description":"Page with streamers.","type":"boolean","default":false,"x-scope":["watcher-client"]},"adverts":{"description":"Page with adverts.","type":"boolean","default":false,"x-scope":["watcher-client"]},"favorites":{"description":"Page with favorites cameras.","type":"boolean","default":true,"x-scope":["watcher-client"]},"mosaics":{"description":"Page with mosaics.","type":"boolean","default":true,"x-scope":["watcher-client"]},"agents":{"description":"Page with agents.","type":"boolean","default":false,"x-scope":["watcher-client"]},"episodes":{"description":"Page with episodes.","type":"boolean","default":true,"x-scope":["watcher-client"]},"users":{"description":"Page with users.","type":"boolean","default":false,"example":true,"x-scope":["watcher-client"]},"organizations":{"description":"Page with organizations.","type":"boolean","default":true,"example":true,"x-scope":["watcher-client"]},"presets":{"description":"Page with presets.","type":"boolean","default":false,"x-scope":["watcher-client"]},"settings":{"description":"Page with settings.","type":"boolean","default":false,"x-scope":["watcher-client"]},"health_status":{"description":"Page with health status.","type":"boolean","default":false,"x-scope":["watcher-client"]},"access_log":{"description":"Page with access log.","type":"boolean","default":false,"x-scope":["watcher-client"]},"support":{"description":"Indicates is support chat enabled.","type":"boolean","example":false,"x-scope":["watcher-client"]}}},"locales":{"type":"array","description":"The list of possible locales","example":["en","ru"],"items":{"$ref":"#/components/schemas/locale"}},"default_locale":{"description":"The default locale","allOf":[{"$ref":"#/components/schemas/locale"}]},"map":{"description":"Map settings for displaying streams with specified coordinates.","allOf":[{"$ref":"#/components/schemas/map"}]}}},"api_tokens_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"api_tokens":{"description":"List of available api tokens","items":{"$ref":"#/components/schemas/api_token"},"type":"array"}}}]},"api_token":{"type":"object","description":"This object describes one API token with its unique text, permissions, etc.\\n","properties":{"key":{"type":"string","description":"unique secret string, it\'s interpreted according to optional `key_format` field","examples":{"default":{"value":"IJCo3KGLBf6NAqMCGgHf5gNhpl9"},"plaintext":{"value":"1234"},"crypt":{"value":"$5$tz/6I0KpagoQ9kQN$nnnKQCxuhCOCaZ7q9WEWvHo6.dRb2hawYofHPdAhHV."}},"readOnly":true},"name":{"type":"string","description":"unique name of the token that can be used to distinguish tokens\\n","examples":{"default":{"value":"root"},"inference_server":{"value":"inference_server"}}},"auth_scopes":{"type":"array","description":"Interected list of scopes that will limit this api token.\\nIt cannot have more permissions than this array allows\\n","items":{"type":"string"},"examples":{"default":{"value":["user/15"]}}},"permissions":{"type":"array","description":"list of independent permissions, available for this token","items":{"allOf":[{"$ref":"#/components/schemas/api_token_permission"}]}}},"required":["key","name"]},"api_token_permission":{"type":"object","required":["scopes"],"properties":{"read":{"type":"boolean","description":"reading one item is allowed"},"write":{"type":"boolean","description":"writing/updating/deletion one item is allowed"},"list":{"type":"boolean","description":"listing items is allowed"},"execute":{"type":"boolean","description":"executing this function (if it is a function) is allowed"},"scopes":{"type":"array","description":"List of permission scopes that will be intersected\\nEach scope is a name of the collection or a function with nested resource name\\nthat is covered with this permission\\n","items":{"type":"string"},"examples":{"default":{"value":["streams/*"]},"fine_grained":{"value":["streams/location1%2F*"]},"superadmin":{"value":["*"]}}}}},"forward_ports_config":{"type":"object","properties":{"handler":{"description":"The handler name.","type":"string","x-atom":true},"options":{"description":"The handler options.","type":"object"}}},"rproxy_config":{"type":"object","required":["streampoint_key"],"properties":{"streampoint_key":{"description":"The streamer ID key.","type":"string","minLength":1,"maxLength":256},"forward_ports":{"description":"Configuration of port handlers.","type":"object","additionalProperties":{"$ref":"#/components/schemas/forward_ports_config"},"x-key-type":"network_port"},"endpoint_auth":{"description":"Path to authorization backend on the endpoint to check if the Agents are allowed to connect.","type":"string"}}},"central_streams_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"streams":{"items":{"$ref":"#/components/schemas/central_stream_config"},"type":"array","description":"List of fetched streams according to the query parameters."}}}]},"central_stream_config":{"allOf":[{"$ref":"#/components/schemas/stream_config"},{"$ref":"#/components/schemas/central_stream_config_additional"},{"$ref":"#/components/schemas/central_stream_layout_config"}]},"central_stream_config_additional":{"type":"object","required":["updated_at"],"properties":{"updated_at":{"type":"integer","readOnly":true,"format":"utc_ms","description":"The time of the last change of any stream field.\\n","example":1637098611000,"x-api-allow":["watcher-core","watcher-admin","central-layouter"],"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"autogenerated_episodes_close_timeout":{"type":"integer","description":"This option has sense only for published streams. For all other behavior is undefined and unpredicted.\\n\\nIf the value is greater than 0, Central will generate episodes for the stream automatically based on the\\n[stream DVR ranges](https://flussonic.com/doc/api/reference/#tag/stream-dvr/operation/stream_dvr_ranges_list).\\nEach range is considered an episode given that at least timeout seconds passed between these ranges.\\n\\nAn episode is created at the start of the publication and is closed after a timeout after the end of publication.\\nIf new publication started in less than timeout - two publications will be merged into one episode.\\n","minimum":0,"format":"seconds","x-format-description":"seconds"}}},"streamers_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"streamers":{"items":{"$ref":"#/components/schemas/streamer_config"},"type":"array","description":"The list of streamers fetched according to the query parameters."}}}]},"streamer_config":{"discriminator":{"propertyName":"role","mapping":{"streamer":"#/components/schemas/central_streamer_node","inference":"#/components/schemas/central_inference_node","identification":"#/components/schemas/central_identification_node"}},"oneOf":[{"$ref":"#/components/schemas/central_streamer_node"},{"$ref":"#/components/schemas/central_inference_node"},{"$ref":"#/components/schemas/central_identification_node"}]},"central_inference_node":{"allOf":[{"$ref":"#/components/schemas/central_node_role"},{"$ref":"#/components/schemas/peer_config"},{"type":"object","properties":{"labels":{"$ref":"#/components/schemas/central_streamer_labels","x-api-allow":["central-layouter"]}}}],"required":["role","hostname"]},"central_streamer_node":{"allOf":[{"$ref":"#/components/schemas/central_node_role"},{"$ref":"#/components/schemas/peer_config"},{"type":"object","properties":{"public_payload_url":{"description":"The public address that is exposed to clients. It can also contain a port number.\\nThe client will be redirected to this URL and port when requesting for the stream captured on the peer\\neven if other `http` port is set in the peer\'s own config.\\n","type":"string","format":"url","example":"http://public.example.com","x-format-description":"url"},"private_payload_url":{"description":"The internal address for communication in a local network (by default, it is equal to API URL).\\n","type":"string","format":"url","example":"http://streamer.local","x-format-description":"url"},"dvrs":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/dvr_config"}]},"description":"The configuration of the DVRs","readOnly":true,"x-api-allow":["central-layouter"]},"config":{"allOf":[{"$ref":"#/components/schemas/server_config_base"},{"$ref":"#/components/schemas/server_config_full"}],"description":"Flussonic Media Server configuration which will be provided to Streamer"},"total_bandwidth":{"description":"Server network bandwidth limit in kbit.\\nThis value is used to calculate the current network load status.\\n","type":"integer","format":"speed","example":1024,"x-format-description":"speed"},"labels":{"$ref":"#/components/schemas/central_streamer_labels","x-api-allow":["central-layouter"]}}}],"required":["cluster_key","role","hostname"]},"central_identification_node":{"allOf":[{"$ref":"#/components/schemas/central_node_role"},{"$ref":"#/components/schemas/peer_config"}],"required":["role","hostname"]},"central_dvrs_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"dvrs":{"items":{"$ref":"#/components/schemas/central_dvr_config"},"type":"array","description":"List of available dvr storages"}}}]},"central_dvr_config":{"allOf":[{"type":"object","properties":{"name":{"description":"DVR configuration name.","type":"string","format":"dvr_name","x-primary-key":true,"x-format-description":"dvr_name"}}}]},"central_events_batch":{"items":{"oneOf":[{"$ref":"#/components/schemas/motion_started"},{"$ref":"#/components/schemas/motion_stopped"}]},"type":"array","description":"Batch of events"},"central_node_role":{"type":"object","properties":{"role":{"type":"string","description":"Role of node","oneOf":[{"const":"streamer","description":"The \\"streamer\\" role is used for nodes where Flussonic Media Server is deployed."},{"const":"inference","description":"The \\"inference\\" role is used for nodes where Flussonic Vision Inference is deployed. On \\"inference\\" nodes, Central provisions streams with the \\"vision\\" parameter set."},{"const":"identification","description":"The \\"identification\\" role is used for nodes where Flussonic Vision Identification is deployed. Central fetches enriched episodes with persons from Flussonic Identification Service."}],"x-api-allow":["central-layouter"]}}},"central_config":{"type":"object","properties":{"database":{"allOf":[{"$ref":"#/components/schemas/central_config_database"}],"description":"The configuration of database connection","readOnly":true},"redis":{"allOf":[{"$ref":"#/components/schemas/central_config_redis"}],"description":"The configuration of Redis connection. \\nIf not specified, Central will store temporary data in memory.\\n\\nUsing Redis is useful in multi-instance installation to store data between instances. In other cases specifying this field is not recommended.\\n","readOnly":true},"listeners":{"allOf":[{"$ref":"#/components/schemas/listeners"}],"description":"The configuration of network listeners.","readOnly":true},"edit_auth":{"allOf":[{"$ref":"#/components/schemas/admin_credentials"}],"description":"Credentials for administrator access to the server."},"api_key":{"type":"string","description":"API_KEY is used to access Central API","example":"api_key"},"api_url":{"type":"string","description":"API URL used for setting the hostname and port under which Central is accessible by Flussonic for CONFIG_EXTERNAL and http_proxy requests","example":"http://central.ru:9019/streamer/api/v3","format":"url","x-format-description":"url"},"upstream_url":{"type":"string","description":"UPSTREAM URL used as watcher\'s address","format":"url","x-private":true,"x-format-description":"url"},"cluster":{"allOf":[{"$ref":"#/components/schemas/central_config_cluster"}],"description":"Describes how Сentral interacts with nodes in the cluster"},"loglevel":{"allOf":[{"$ref":"#/components/schemas/loglevel"}],"description":"Set logging level","example":"error"},"log_requests":{"type":"string","description":"Enables logging HTTP-requests","example":"false","default":"false"},"pprof_enabled":{"type":"string","description":"Enables Go pprof for profiling Central","example":"false","default":"false","x-private":true},"opentelemetry_url":{"type":"string","description":"URL (agent or collector) that is used to collect traces and spans with configuration in query parameters.\\nFORMAT: `http://{JAEGER-URL}?service_name={CENTRAL_NAME}` (The prefix “central” will be added to the service name)\\n","format":"url","example":"http://jaeger-server:14268/v1/traces?service_name=some-name","x-format-description":"url"},"stats":{"allOf":[{"$ref":"#/components/schemas/central_stats"}],"description":"Server runtime stats","readOnly":true},"server_id":{"type":"string","format":"uuid","openmetrics_label":"server_id","description":"Unique server ID generated on a first start or license change.\\nShould not changing until running on the same hardware.\\n","readOnly":true,"x-format-description":"uuid"},"layouter_enabled":{"type":"string","description":"Enables layouter","example":"false","default":"false","enum":["true","false"]},"layouter_sleeping_interval":{"type":"number","description":"Interval in milliseconds between layouter runs","format":"milliseconds","example":30000,"default":30000,"x-format-description":"milliseconds"},"identification_sleeping_interval":{"type":"number","description":"Interval in milliseconds between identifier runs","format":"milliseconds","example":1000,"default":1000,"x-private":true,"x-format-description":"milliseconds"},"layouter_failover_enabled":{"type":"boolean","description":"Enables failover mechanism in layouter. It means that if streamer is unavailable from central, layouter will try to relayout its streams after `failover_dead_streamer_delay`.","example":true,"default":false,"x-private":true},"streamer_dead_timeout":{"type":"number","description":"The delay in milliseconds after the last successful connection attempt to the streamer before it is considered unavailable.","format":"milliseconds","example":180000,"default":180000,"x-private":true,"x-format-description":"milliseconds"},"config_external_reconciliation_interval":{"type":"number","description":"You can use the default value or increase it to reduce server load, but increase time for the streamer to receive changes.\\n","example":5000,"default":5000},"episodes_buffer_delay":{"type":"number","description":"Delay in milliseconds after which episodes from the buffer will be inserted into the database.\\nSet 0 to disable buffer accumulation before inserting episodes into the database. \\n","format":"milliseconds","example":3000,"default":1000,"x-format-description":"milliseconds"},"episodes_buffer_limit":{"type":"number","description":"Limit on the number of episodes in the buffer.\\nIf the number of episodes in the buffer exceeds the limit, the insertion into the database will be done instantly, regardless of the limit.\\nSet 0 to disable buffer accumulation before inserting episodes into the database. \\n","example":100,"default":250}},"required":["database","api_key"]},"central_config_database":{"type":"object","properties":{"url":{"type":"string","description":"Connection string to PostgreSQL database. \\n\\n Format: `postgres://[user[:password]@][host][:port][/dbname][?param1=value1&...¶mN=valueN]`\\n\\n Allowed parameters:\\n - `sslmode` - configuring SSL connection to the database.\\n This parameter defines whether and how SSL should be used to connect to the database.\\n Possible values include `disable`, `allow`, `prefer`, `require`, `verify-ca`, and `verify-full`.\\n - `default_query_exec_mode` - if you use PgBouncer, it\'s necessary to set this parameter to `cache_describe`.\\n","example":"postgres://central:pass@localhost:5432/central_dev","x-api-allow":["watcher-admin"]},"max_connections":{"type":"integer","description":"Max connection pool size that Central use to connect with database","example":40,"default":40},"connect_max_retries":{"type":"integer","description":"The number of retries for Central to connect with its database","default":20,"example":20},"connect_retry_timeout":{"type":"string","description":"Timeout of retry for Central to connect with its database","default":"1s","example":"2s"}},"required":["url"]},"central_config_redis":{"type":"object","properties":{"url":{"type":"string","description":"Connection string to Redis database\\nFormat: `redis://[:]@:/`\\n","example":"redis://:pass@localhost:6379"},"max_connections":{"type":"integer","description":"Max connection pool size that Central use to connect with database","example":40,"default":40},"connect_max_retries":{"type":"integer","description":"The number of retries for Central to connect with its database","default":20,"example":20},"connect_retry_timeout":{"type":"string","description":"Timeout of retry for Central to connect with its database","default":"1s","example":"2s"}}},"central_config_cluster":{"type":"object","properties":{"node_config_provision_enabled":{"type":"boolean","description":"If enabled Central will provide [configuration](#tag/streamer/operation/streamer_save%7Cbody__0%7Cconfig) to nodes in cluster.\\nAlso, Central will automatically provide `config_external` configuration to nodes.\\nYou must disable this option if you are using orchestration system for deployment and management.\\n","example":true,"default":true},"streamer_connector_retries":{"type":"integer","description":"Number of retries for sending requests to streamers","example":5,"default":5}}},"central_stats":{"type":"object","description":"Cluster stats","properties":{"server_version":{"description":"Package version of the server. Might be simple a number of release like 21.11 or longer if you have a rolling release installed.","type":"string","format":"server_version","openmetrics_label":"version","example":"23.10","x-format-description":"server_version"},"uptime":{"description":"The server uptime.","type":"integer","format":"seconds","example":4325502,"x-format-description":"seconds"},"started_at":{"description":"Boot time of this instance.","type":"integer","format":"utc","example":1639337825,"x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000},"id":{"description":"Unique runtime ID of this instance. Updated with the restart.","type":"string","format":"uuid","example":"61893b15-75b2-4fcb-b4cf-ae1dd0858ea2","x-format-description":"uuid"},"goruntime":{"allOf":[{"$ref":"#/components/schemas/central_goruntime_stats"}],"description":"Golang Runtime statistics","x-private":true}}},"central_goruntime_stats":{"type":"object","description":"Golang Runtime stats","properties":{"gouroutines":{"description":"Number of total spawned goroutines","type":"integer","example":2000,"openmetrics_metric":"goroutines_count","x-metric-type":"gauge"},"num_cpu":{"description":"The number of logical CPUs usable by the current process","type":"integer","example":4,"openmetrics_metric":"num_cpu","x-metric-type":"gauge"},"sys":{"description":"Total mb of memory obtained from the OS","type":"integer","example":1639337825,"openmetrics_metric":"sys_count","x-metric-type":"gauge"},"alloc":{"description":"Mbytes of allocated heap objects","type":"integer","example":1639337825,"openmetrics_metric":"alloc_count","x-metric-type":"gauge"},"total_alloc":{"description":"Cumulative mbytes allocated for heap objects","type":"integer","example":1639337825},"num_gc":{"description":"Total number of GC cycles","type":"integer","example":1639337825},"next_gc":{"description":"The target heap size of the next GC cycle","type":"integer","example":1639337825},"last_gc":{"description":"The time the last garbage collection finished","type":"integer","example":1639337825},"heap_objects":{"description":"The number of allocated heap objects","type":"integer","example":1639337825}}},"central_stream_layout_config":{"type":"object","properties":{"layout":{"x-api-allow":["watcher-core","central-layouter","watcher-admin"],"description":"Current layout of stream. Central will provide configuration to nodes based on this layout.\\n","allOf":[{"$ref":"#/components/schemas/central_stream_layout"}]},"claims":{"type":"object","x-api-allow":["watcher-core","central-layouter"],"description":"User-defined claims about the stream parameters.\\nSet this field so that [layouter](https://flussonic.com/doc/api/layouter/) can rely on this data when distributing streams.\\n","x-api-description":{"central-layouter":"User-defined claims about the stream parameters.\\nSet this field for more precise distribution of streams to nodes including its available resources.\\n"},"properties":{"bitrate":{"description":"Stream bitrate in kbps.\\nThis value is used to calculate disk and network consumption.\\n","type":"integer","format":"speed","example":2543,"x-format-description":"speed"}}}}},"central_stream_layouts":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"layouts":{"items":{"$ref":"#/components/schemas/central_stream_layout"},"type":"array","description":"List of streams layouts records according to the query parameters."}}}]},"central_stream_layout_base":{"type":"object","properties":{"ingest":{"type":"string","format":"server_name","description":"Hostname of current ingest on which the stream is being captured","x-api-description":{"central-layouter":"Current ingest on which the stream is being captured.\\nIngest is selected as the least loaded node matching the labels for the stream.\\n\\nThe rules for matching labels are described [here](https://flussonic.com/doc/api/layouter/#tag/stream/operation/streams_list/response%7Cstreams%7Clabels).\\n\\nThe load is calculated as the number of streams captured by the node divided by [channel_limit](https://flussonic.com/doc/api/layouter/#tag/streamer/operation/streamers_list/response%7Cstreamers__0%7Cchannel_limit).\\n"},"x-format-description":"server_name"},"created_at":{"type":"integer","readOnly":true,"format":"utc_ms","description":"Time when the node change occurred","example":1637094994000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"originator":{"description":"Service or admin user who changed the layout of the stream using an API call.","allOf":[{"$ref":"#/components/schemas/central_stream_layout_originator"}]}}},"central_stream_layout":{"allOf":[{"type":"object","description":"Current layout of stream.\\nCentral will provide configuration to nodes based on this layout.\\n","properties":{"change_reason":{"description":"Reason why layout was changed","allOf":[{"$ref":"#/components/schemas/central_stream_layout_change_reason"}]},"dvr_backups":{"description":"Current nodes on which the dvr backup is saving","type":"array","items":{"type":"string","format":"server_name","x-format-description":"server_name"},"x-api-description":{"central-layouter":"Current nodes on which the dvr backup is saving.\\nNodes for this field are selected in the same way as [layout.ingest](https://flussonic.com/doc/api/layouter/#tag/stream/operation/streams_list/response%7Cstreams%7Clayout%7Cingest).\\n"}},"inference":{"type":"string","format":"server_name","description":"Hostname of current inference node on which stream analytics running.","x-api-description":{"central-layouter":"Current inference node on which stream analytics running.\\n\\nNode for this field is selected in the same way as [layout.ingest](https://flussonic.com/doc/api/layouter/#tag/stream/operation/streams_list/response%7Cstreams%7Clayout%7Cingest).\\n"},"x-format-description":"server_name"},"failover_from":{"type":"string","format":"server_name","description":"Hostname of node on which the stream was captured before failover.\\nThis field is used to restore the [layout.ingest](https://flussonic.com/doc/api/central/#tag/stream/operation/stream_get/response%7Clayout%7Cingest)\\nafter failover.\\n","x-api-description":{"central-layouter":"Hostname of node on which the stream was captured before failover.\\nThis field is used to restore the [layout.ingest](https://flussonic.com/doc/api/layouter/#tag/stream/operation/streams_list/response%7Cstreams%7Clayout%7Cingest)\\nafter failover.\\n"},"x-format-description":"server_name"},"node_layout_decisions":{"type":"array","description":"List of decisions made by [layouter](https://flussonic.com/doc/api/layouter/) for each node.\\nThese decisions are used to determine the final layout of the stream.\\n","items":{"allOf":[{"$ref":"#/components/schemas/central_node_layout_decision"}]}}}},{"$ref":"#/components/schemas/central_stream_layout_base"}]},"central_stream_layout_prediction":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","description":"Predicted layout based on changed properties of stream.\\nIf stream config was not changed, the result will be empty.\\n","properties":{"changes":{"items":{"$ref":"#/components/schemas/central_stream_layout_list_item"},"type":"array","description":"List of streams layout changes"}}}]},"central_streamer_layout_prediction":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","description":"Streamer layout prediction","properties":{"changes":{"type":"array","description":"Predicted layout based on changed properties of streamer grouped by hostname and role.\\nThe result does not contain unchanged streamers.\\nIf streamer config was not changed, the result will be empty.\\n","items":{"$ref":"#/components/schemas/central_streamer_layout_prediction_item"}}}}]},"central_streamer_layout_prediction_item":{"type":"object","properties":{"hostname":{"type":"string","description":"Hostname of streamer","example":"streamer1","format":"server_name","x-format-description":"server_name"},"role":{"type":"string","description":"Layout role of streamer.\\n","example":"ingest","oneOf":[{"const":"ingest","description":"Streamer is used as ingest.\\n"},{"const":"inference","description":"Streamer is used as inference.\\n"},{"const":"dvr_backup","description":"Streamer is used as dvr backup.\\n"}]},"before":{"type":"integer","description":"Number of streams assigned to the streamer before the layouter iteration.\\n","example":321},"after":{"type":"integer","description":"Number of streams assigned to the streamer after the layouter iteration.\\n","example":123},"delta":{"type":"integer","description":"`after - before` value.\\n","example":1}}},"central_stream_layout_change_reason":{"type":"string","description":"Reason why layout was changed","oneOf":[{"const":"stream_misses_node_required_labels","description":"Stream doesn\'t have labels that match all the node\'s required labels."},{"const":"node_misses_stream_required_labels","description":"Node doesn\'t have labels that match all the stream\'s required labels."},{"const":"node_become_offline","description":"Previous node become offline"},{"const":"stream_disabled","description":"Stream has been disabled"},{"const":"node_become_online","description":"Node become online after failover and stream returned to previous node"},{"const":"node_deleted","description":"Node has been deleted"},{"const":"node_channel_limit_exceeded","description":"Channel limit of previous node was exceeded"},{"const":"multistream_agent_ingest_conflict","description":"Other stream has same agent_id in its inputs, but different ingest.\\n"},{"const":"streamer_dvr_size_exceeded","description":"Estimated disk space load exceeds the threshold for the streamer\'s DVR.\\n"}]},"central_node_layout_decision":{"allOf":[{"$ref":"#/components/schemas/central_node_role"},{"type":"object","properties":{"hostname":{"type":"string","format":"server_name","description":"Hostname of streamer","example":"streamer1.com","x-format-description":"server_name"},"node_decision":{"type":"boolean","description":"This field is true if the stream can be layouted on this node.\\n","example":false},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/central_node_layout_decision_reason"},"description":"List of decision reasons explaining why the stream cannot be layouted on this node. This field may be empty if stream can be layouted on this node.\\n","example":["stream_misses_node_required_labels","node_misses_stream_required_labels","node_channel_limit_exceeded"]}}}]},"central_node_layout_decision_reason":{"type":"string","description":"Name of decision reason for node incompatibility with the stream","oneOf":[{"const":"stream_misses_node_required_labels","description":"Stream doesn\'t have labels that match all the node\'s required labels."},{"const":"node_misses_stream_required_labels","description":"Node doesn\'t have labels that match all the stream\'s required labels."},{"const":"node_channel_limit_exceeded","description":"Channel limit of previous node was exceeded"},{"const":"streamer_dvr_size_exceeded","description":"Estimated disk space load exceeds the threshold for the streamer\'s DVR."},{"const":"node_not_available_for_transcoding","description":"Node is not available for transcoding."},{"const":"node_offline","description":"Node is offline."}]},"central_stream_layout_originator":{"readOnly":true,"type":"string","description":"Service or admin user who changed the layout of the stream using an API call.","oneOf":[{"const":"layouter","description":"Layout was changed via layouter."},{"const":"other","description":"Layout was changed via something other."}]},"central_stream_layout_list_item":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"Name of the stream"}}},{"$ref":"#/components/schemas/central_stream_layout"}],"required":["name"]},"central_stream_layout_list":{"type":"object","properties":{"layouts":{"items":{"$ref":"#/components/schemas/central_stream_layout_list_item"},"type":"array","description":"List of streams layouts"}}},"central_agent_config":{"allOf":[{"$ref":"#/components/schemas/watcher_agent_config"},{"type":"object","properties":{"layout":{"description":"Current layout of agent.\\nThis field will be ignored for agents with an existing stream on update, use `stream.layout` instead.\\nCentral will provide configuration to nodes based on this layout.\\n","allOf":[{"$ref":"#/components/schemas/central_stream_layout_base"}]}}}]},"central_agents_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"agents":{"items":{"$ref":"#/components/schemas/central_agent_config"},"type":"array","description":"The list of Agents fetched according to the query parameters."}}}]},"central_agent_layout_list_item":{"allOf":[{"type":"object","properties":{"id":{"type":"string","description":"ID of the agent"}}},{"$ref":"#/components/schemas/central_stream_layout_base"}],"required":["id"]},"central_agent_layout_list":{"type":"object","properties":{"layouts":{"items":{"$ref":"#/components/schemas/central_agent_layout_list_item"},"type":"array","description":"List of agent layouts"}}},"central_disk_predictions":{"type":"object","description":"Predictions for disk usage.\\n","properties":{"estimated_disk_usage":{"type":"integer","format":"percent","description":"Estimated disk usage in percent.\\nThis value is estimated on the based on streamer disk space and current configurations of streams processed by the streamer,\\nwhich specify the rate of data writing to disk by them and the duration of their data storage.\\n\\nNote: This value represents what percentage of the disk will be filled when all streams on the streamer reach the point where the disk is static. \\nIt can be greater than 100% if streamer can\'t store estimated amount of data.\\n","x-format-description":"percent"}}},"central_streamer_labels":{"type":"object","additionalProperties":{"type":"string"},"x-key-type":"string","description":"Streamer labels in key value format.\\n","x-api-description":{"central-layouter":"Streamer labels in key-value format.\\nYou can use labels to manage the requirements of the streams that can be provisioned to the streamer.\\n\\nLayouter can process next labels:\\n\\n- With `required_` prefix. If streamer has `required_x=y` label, layouter will provision streams only with label `x=y` to this streamer.\\nIf there are no available streams with the label `x=y`, then no stream will be provisioned.\\n\\n**Use cases**\\n\\nLet\'s say you have 3 nodes - 2 production and 1 test node for testing new equipment \\nand you don\'t want the production streams to be provisioned to the test node.\\nTo solve this problem you can add `required_env=test` label for the test node.\\nSpecifying this label will prevent layouter from provisioning streams without the `env=test` label to this node.\\n"},"example":{"key1":"value1","key2":"value2"}},"cluster_health_stats":{"type":"object","properties":{"version":{"type":"integer","description":"The running version of instance in format TAGCNUM. TAG is a five-digit number that contains the year number, month number, and version number. CNUM is a four-digit number that indicates the commit number. Number 240100023 represents version 24.01-23.","openmetrics_metric":"version","example":240100023},"server_id":{"description":"Unique server ID generated on a first run.","type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426655440000","openmetrics_label":"server_id","x-format-description":"uuid"},"collected_at":{"description":"Metrics collection time","type":"integer","format":"utc_ms","x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"stream_metrics_total":{"type":"object","description":"Number of streams, grouped by status","openmetrics_metric_segment":"stream","allOf":[{"$ref":"#/components/schemas/cluster_health_metrics_total"}]},"agent_metrics_total":{"type":"object","description":"Number of agents, grouped by status","openmetrics_metric_segment":"agent","allOf":[{"$ref":"#/components/schemas/cluster_health_metrics_total"}]},"streamer_metrics_total":{"type":"object","description":"Number of streamers, grouped by status","openmetrics_metric_segment":"streamer","allOf":[{"$ref":"#/components/schemas/cluster_health_metrics_total"}]},"streamer_bitrate_metrics_total":{"description":"Cluster total bitrate metrics","type":"object","properties":{"input_kbit":{"type":"integer","description":"Current incoming speed (bitrate) of the data transmission over the network of all streamers.","format":"speed","openmetrics_metric":"streamer_inbound_kbit_total","x-metric-type":"gauge","x-format-description":"speed"},"output_kbit":{"type":"integer","description":"Current outgoing speed (bitrate) of the data transmission over the network of all streamers.","format":"speed","openmetrics_metric":"streamer_outbound_kbit_total","x-metric-type":"gauge","x-format-description":"speed"}}},"streamer_metrics":{"type":"array","items":{"$ref":"#/components/schemas/cluster_health_streamer_stats"},"description":"Streamer stats"}}},"central_healthcheck_status":{"type":"object","description":"Status of Central healthcheck.\\n","properties":{"status":{"type":"string","description":"Status of the healthcheck.\\n","oneOf":[{"const":"ok","description":"Peer is healthy.\\n"},{"const":"error","description":"Peer has errors.\\n"}]},"status_changed_at":{"type":"integer","description":"Unix timestamp of the last status change.\\n","format":"utc_ms","x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"checks":{"type":"object","description":"List of healthcheck checks with their results.\\n","properties":{"reachable":{"type":"boolean","description":"`true` if peer is reachable from central by its credentials\\n"},"valid_cluster_key":{"type":"boolean","description":"`true` if peer has a valid cluster key\\n"},"time_synchronized":{"type":"boolean","description":"`true` if server time is synchronized between peer and central\\n"},"rproxy_ok":{"type":"boolean","description":"`true` if rproxy configuration is valid\\n"},"running":{"type":"boolean","description":"`true` if peer is running\\n"},"config_external_ok":{"type":"boolean","description":"`true` if peer has no `error` in \\n[stats.config_external_status](https://flussonic.com/doc/api/central/#tag/streamer/operation/streamer_get/response__0%7Cstats%7Cconfig_external_status) field.\\n"},"config_ok":{"type":"boolean","description":"`true` if peer has no `error` in \\n[stats.config_error](https://flussonic.com/doc/api/central/#tag/streamer/operation/streamer_get/response__0%7Cstats%7Cconfig_error) field.\\n"},"errors_details":{"type":"array","description":"List of errors details","items":{"type":"object","description":"Error details","properties":{"rule":{"type":"string","description":"Failed healthcheck rule name\\n"},"error":{"type":"string","description":"Error message"}}}}}}}},"cluster_health_streamer_stats":{"type":"object","description":"Streamer stats","properties":{"hostname":{"description":"Hostname of streamer.","type":"string","format":"server_name","openmetrics_label":"hostname","x-format-description":"server_name"},"uptime":{"description":"The server uptime.","type":"integer","format":"seconds","example":4325502,"x-format-description":"seconds"},"config":{"type":"object","description":"Streamer config info.","properties":{"status":{"$ref":"#/components/schemas/cluster_health_status"}}},"status":{"$ref":"#/components/schemas/cluster_health_status"},"stream_metrics":{"type":"object","description":"Streamer streams info.","allOf":[{"$ref":"#/components/schemas/cluster_health_metrics_total"},{"type":"object","description":"Collective status of streams on the streamer","properties":{"status":{"$ref":"#/components/schemas/cluster_health_status"}}}]},"agent_metrics":{"type":"object","description":"Streamer agents info.","allOf":[{"$ref":"#/components/schemas/cluster_health_metrics_total"},{"type":"object","description":"Collective status of agents on the streamer","properties":{"status":{"$ref":"#/components/schemas/cluster_health_status"}}}]},"cpu":{"type":"object","description":"CPU usage info.","properties":{"usage":{"description":"CPU usage on the server.","type":"integer","format":"percent","example":48,"openmetrics_metric":"cpu_usage","x-metric-type":"gauge","x-format-description":"percent"},"status":{"$ref":"#/components/schemas/cluster_health_status"}}},"memory":{"type":"object","description":"Memory usage info.","properties":{"usage":{"description":"Memory usage on the server.","type":"integer","format":"percent","example":27,"openmetrics_metric":"memory_usage","x-metric-type":"gauge","x-format-description":"percent"},"status":{"$ref":"#/components/schemas/cluster_health_status"}}},"storage":{"type":"object","description":"Total disk usage info.","properties":{"usage":{"description":"Total disk space usage on the server.\\n","type":"integer","format":"percent","example":18,"openmetrics_metric":"storage_usage","x-metric-type":"gauge","x-format-description":"percent"},"status":{"$ref":"#/components/schemas/cluster_health_status"}}},"network":{"description":"Network IO info.","type":"object","properties":{"in_kbit":{"description":"Inbound network info on the server.","properties":{"usage":{"description":"Inbound network usage on the server.","type":"integer","format":"speed","openmetrics_metric":"network_usage_in","x-metric-type":"gauge","x-format-description":"speed"},"status":{"$ref":"#/components/schemas/cluster_health_status"}}},"out_kbit":{"description":"Outbound network info on the server.","properties":{"usage":{"description":"Outbound network usage on the server.","type":"integer","format":"speed","openmetrics_metric":"network_usage_out","x-metric-type":"gauge","x-format-description":"speed"},"status":{"$ref":"#/components/schemas/cluster_health_status"}}}}}},"required":["hostname"]},"cluster_health_metrics_total":{"type":"object","description":"Number of entities, grouped by status","properties":{"operational":{"type":"integer","description":"Number of operational entities","openmetrics_metric":"operational_count","x-metric-type":"gauge"},"degradated":{"type":"integer","description":"Number of degraded entities","openmetrics_metric":"degradated_count","x-metric-type":"gauge"},"partial_outage":{"type":"integer","description":"Number of partial outage entities","openmetrics_metric":"partial_outage_count","x-metric-type":"gauge"},"outage":{"type":"integer","description":"Number of outage entities","openmetrics_metric":"outage_count","x-metric-type":"gauge"},"disabled":{"type":"integer","description":"Number of disabled entities","openmetrics_metric":"disabled_count","x-metric-type":"gauge"},"total":{"type":"integer","description":"Total number of entities","openmetrics_metric":"total_count","x-metric-type":"gauge"}}},"cluster_health_status":{"type":"string","description":"Collective status of certain object\'s metric.","oneOf":[{"title":"Operational","const":"operational","description":"Indicates that the entity is fully functional and performing optimally."},{"title":"Degradated","const":"degradated","description":"Indicates that the entity is partly functional but performing optimally."},{"title":"Partial Outage","const":"partial_outage","description":"Indicates that the entity is mostly non-functional, reduced performance."},{"title":"Outage","const":"outage","description":"Indicates that the entity is non-functional."},{"type":"string","title":"Disabled","const":"disabled","description":"Indicates that the entity is disabled"}]},"central_event":{"oneOf":[{"$ref":"#/components/schemas/server_starting"},{"$ref":"#/components/schemas/server_started"},{"$ref":"#/components/schemas/database_error"},{"$ref":"#/components/schemas/api_call_event"},{"$ref":"#/components/schemas/agent_command_handling"},{"$ref":"#/components/schemas/agent_connect_failed"},{"$ref":"#/components/schemas/agent_connected"},{"$ref":"#/components/schemas/agent_disconnected"},{"$ref":"#/components/schemas/agent_make_streampoint_location_error"},{"$ref":"#/components/schemas/layouter_process_agents_success"},{"$ref":"#/components/schemas/layouter_process_agents_error"},{"$ref":"#/components/schemas/layouter_process_streams_success"},{"$ref":"#/components/schemas/layouter_process_streams_error"}],"discriminator":{"propertyName":"event","mapping":{"server_starting":"#/components/schemas/server_starting","server_started":"#/components/schemas/server_started","database_error":"#/components/schemas/database_error","api_call_event":"#/components/schemas/api_call_event","agent_command_handling":"#/components/schemas/agent_command_handling","agent_connected":"#/components/schemas/agent_connected","agent_connect_failed":"#/components/schemas/agent_connect_failed","agent_disconnected":"#/components/schemas/agent_disconnected","agent_make_streampoint_location_error":"#/components/schemas/agent_make_streampoint_location_error","layouter_process_agents_success":"#/components/schemas/layouter_process_agents_success","layouter_process_agents_error":"#/components/schemas/layouter_process_agents_error","layouter_process_streams_success":"#/components/schemas/layouter_process_streams_success","layouter_process_streams_error":"#/components/schemas/layouter_process_streams_error"}}},"central_events_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","description":"List of central events","properties":{"events":{"type":"array","description":"List of central events","items":{"$ref":"#/components/schemas/central_event"}}}}]},"entity_event":{"allOf":[{"$ref":"#/components/schemas/event_default"},{"type":"object","properties":{}}]},"agent_initiator":{"type":"string","description":"Initiator of event","oneOf":[{"const":"agent","type":"string","description":"Event initiated by agent."},{"const":"endpoint","type":"string","description":"Event initiated by endpoint."}]},"agent_command_handling":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Event of handling commands via the interaction protocol between the agent and the endpoint.","const":"agent_command"},"initiator":{"$ref":"#/components/schemas/agent_initiator"},"command":{"type":"string","description":"Command name.","example":"streampoint_connect","oneOf":[{"const":"hello","description":"Hello command."},{"const":"description","description":"Contains info about agent\'s IP and MAC addresses.\\n"},{"const":"streampoint_connect","description":"Telling agent that specific streampoint should be connected.\\n"},{"const":"streampoint_connected","description":"Agent successfully connected to streampoint.\\n"},{"const":"streampoint_connect_failure","description":"Failed to connect to streampoint.\\n"},{"const":"streampoint_disconnect","description":"Telling agent that streampoint should be disconnected.\\n"},{"const":"streampoint_disconnected","description":"Streampoint is disconnected.\\n"},{"const":"reset","description":"Telling agent that it should reset.\\n"},{"const":"reboot","description":"Telling agent that it should reboot.\\n"},{"const":"disconnect","description":"Telling agent that it should disconnect.\\n"}]},"payload":{"type":"string","description":"Payload of the command."},"error":{"type":"string","description":"Error message explaining why command failed.\\nIf command was successful, this field absent.\\n","oneOf":[{"const":"timeout","description":"Failed to write/read command because of IO timeout."},{"const":"connection_closed","description":"Failed to write/read command because connection was closed."}]}}},{"$ref":"#/components/schemas/entity_event"}]},"agent_connected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Agent successfully connected to endpoint.","const":"agent_connected"}}},{"$ref":"#/components/schemas/entity_event"}]},"agent_connect_failed":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Agent failed to connect to endpoint.","const":"agent_connect_failed"},"reason":{"type":"string","description":"Why agent failed to connect.","oneOf":[{"const":"internal_server_error","description":"Server encountered an internal error."},{"const":"authentication_failed","description":"Failed to authenticate agent."}]},"message":{"type":"string","description":"Additional information about the error."}}},{"$ref":"#/components/schemas/entity_event"}]},"agent_disconnected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Agent disconnected from endpoint.","const":"agent_disconnected"},"initiator":{"$ref":"#/components/schemas/agent_initiator"},"reason":{"type":"string","description":"Why agent disconnected","oneOf":[{"const":"ping_timeout","description":"No ping from agent for more than 1 minute"},{"const":"set_write_deadline_fail","description":"Failed to set write deadline"},{"const":"set_read_deadline_fail","description":"Failed to set read deadline"},{"const":"agent_closed_connection","description":"Connection was closed by agent"}]}}},{"$ref":"#/components/schemas/entity_event"}]},"agent_make_streampoint_location_error":{"allOf":[{"type":"object","properties":{"event":{"type":"string","description":"Failed to make streampoint location for agent.\\n","const":"agent_make_streampoint_location_error"},"reason":{"type":"string","description":"Why agent failed to make streampoint location.","oneOf":[{"const":"streamer_misses_streampoint_key","description":"Streamer misses streampoint key.\\nUsually it means that streamer\'s Rproxy config is not configured yet by Central.\\nIn case of using Central without config provision enabled (`CLUSTER_NODE_CONFIG_PROVISION_ENABLED = false`),\\nyou should configure Rproxy manually.\\n"}]},"streampoint":{"type":"string","description":"The hostname of current agent\'s streampoint.\\n"},"message":{"type":"string","description":"Additional information about the error."}}},{"$ref":"#/components/schemas/entity_event"}]},"database_error":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Database error.","const":"database_error"},"query":{"type":"string","description":"The query that caused the error.\\n"},"message":{"type":"string","description":"The error message."}}},{"$ref":"#/components/schemas/event_default"}]},"layouter_process_agents_success":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Layouter process agents (without streams) success.","const":"layouter_process_agents_success"},"agents_updated":{"type":"int","description":"Number of updated agents (without streams) layouts."}}},{"$ref":"#/components/schemas/event_default"}]},"layouter_process_agents_error":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Layouter process agents (without streams) error.","const":"layouter_process_agents_error"},"error":{"type":"object","description":"structured error","allOf":[{"$ref":"#/components/schemas/error"}]}}},{"$ref":"#/components/schemas/event_default"}]},"layouter_process_streams_success":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Layouter process streams success.","const":"layouter_process_streams_success"},"streams_updated":{"type":"int","description":"Number of updated streams layouts."}}},{"$ref":"#/components/schemas/event_default"}]},"layouter_process_streams_error":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Layouter process streams error.","const":"layouter_process_streams_error"},"error":{"type":"object","description":"structured error","allOf":[{"$ref":"#/components/schemas/error"}]}}},{"$ref":"#/components/schemas/event_default"}]},"watcher_agent_config":{"allOf":[{"$ref":"#/components/schemas/agent_config_base"},{"type":"object","properties":{}}]},"watcher_agent_stats":{"type":"object","properties":{"agent_type":{"type":"string","enum":["single","router"],"default":"single","description":"The type of Agent installed on the device: \\n\\n* `single` means \\"one Agent = one camera\\", i.e. Agent is installed on a camera itself.\\n* `router` means \\"one Agent = multiple cameras\\", i.e. Agent is installed on a router\\nto provision the cameras from LAN to Watcher.\\n"},"connections_requested":{"type":"integer","default":0,"description":"The number of connections requested by Agent."},"connections_established":{"type":"integer","default":0,"description":"The number of successfully established connections."},"peer_ip":{"type":"string","format":"ipv4","description":"Public IP address of the device (camera or router) on which the Agent is running.","example":"185.134.232.183","x-format-description":"ipv4"},"local_ip":{"type":"string","format":"ipv4","description":"IP address of the device (camera or router) in the local network.","example":"10.10.17.88","x-format-description":"ipv4"},"mac_address":{"type":"string","example":"F0-23-B9-59-20-F1","description":"MAC-address of the device."},"version":{"type":"string","description":"Agent version.","example":"v21.02-8-g535c85d"},"endpoint_connection":{"description":"Parameters of the connection between Agent and its endpoint.","allOf":[{"$ref":"#/components/schemas/watcher_agent_control_connection"}]},"streampoint_connection":{"description":"Parameters of the connection between Agent and its streampoint.","allOf":[{"$ref":"#/components/schemas/watcher_agent_control_connection"},{"$ref":"#/components/schemas/watcher_agent_data_connections"}]}}},"watcher_agent_logs":{"type":"object","properties":{"status":{"type":"string","description":"Agent status","example":"ok"},"version":{"type":"string","description":"Agent version","example":"version"},"agent_id":{"type":"string","description":"Agent id","example":"1234567"},"cid":{"description":"Agent client ID.","type":"string","example":"42195"},"mid":{"description":"Agent model ID.","type":"string","example":"3059"},"serial":{"type":"string","description":"Agent serial","example":"a3dccd69f53deb79723a2a7a5f2037e1"},"main_url":{"type":"string","description":"Main endpoint URL (Watcher host)","example":"http://example.com"},"meminfo":{"description":"Physical memory size available on the device.","type":"string","example":"806400"},"buffer_limit":{"description":"Shows agent\'s buffer limit.","type":"integer","example":0},"buffer_size":{"description":"Shows agent\'s buffer size.","type":"integer","example":0},"a":{"type":"string","description":"Encoded log data for security purposes. Only the support team can decrypt it.","example":"VDEVSvaNZZWeNOXqi7tA5Hm+KAqBjfHQKMzMl5aqRdYxHZkSnJ"},"b":{"type":"string","description":"Encoded log data for security purposes. Only the support team can decrypt it.","example":"xglytWCTztsbTAUVBIhQymqik7nvzXi5VbJWEQNBHFCxw/NdvY6hdknh87/3gslKpER0hIaymR67Qo8zGKICFN=="}}},"watcher_agent_control_connection":{"type":"object","properties":{"opened_at":{"type":"number","format":"utc_ms","description":"Timestamp of the current Agent control connection opening.","example":1637094994000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"hostname":{"type":"string","description":"Hostname of the server","example":"agents-001.vsaas.io"},"alive":{"type":"boolean","description":"A flag showing if Agent is connected at the moment of the request."},"status_changed_at":{"description":"UTC timestamp of the last Agent status change to offline or online.\\nSame as `opened_at` if Agent is now connected.\\n","type":"integer","format":"utc","example":1634560921,"x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000},"bytes_from_server":{"type":"integer","format":"bytes","description":"A number of bytes received from the server by Agent since `opened_at`.","example":40000,"x-format-description":"bytes"},"bytes_to_server":{"type":"integer","format":"bytes","description":"A number of bytes sent to the server by Agent since `opened_at`.","example":400000000000,"x-format-description":"bytes"}}},"watcher_agent_data_connections":{"type":"object","properties":{"connections_attempted":{"type":"integer","description":"A number of times the streamer tried to open a data connection via this Agent.","example":400},"connections_opened":{"type":"integer","description":"A number of successfully opened data connections via this Agent.","example":300},"connections_current":{"type":"integer","description":"A number of currently active data connections opened via this Agent.","example":2}}},"episode":{"discriminator":{"propertyName":"episode_type","mapping":{"generic":"#/components/schemas/episode_generic","face":"#/components/schemas/vision_episode_face","vehicle":"#/components/schemas/vision_episode_vehicle","context_search":"#/components/schemas/vision_episode_context_search","qr_code":"#/components/schemas/vision_episode_qr_code","custom":"#/components/schemas/episode_custom"}},"oneOf":[{"$ref":"#/components/schemas/episode_generic"},{"$ref":"#/components/schemas/vision_episode_face"},{"$ref":"#/components/schemas/vision_episode_vehicle"},{"$ref":"#/components/schemas/vision_episode_context_search"},{"$ref":"#/components/schemas/vision_episode_qr_code"},{"$ref":"#/components/schemas/episode_custom"}]},"episode_base":{"type":"object","description":"# Definition\\n\\nEpisode is a record about continious part of one video stream.\\n\\nIt is used in video analytics, television systems, etc. for describing one continious and logically\\nconsolidated part of video stream.\\n\\nFor example, episode can describe one TV show or a part of video when the car with specific license plate\\npassed the camera view.\\n\\nDifferent systems in our ecosystem can emit and consume episodes of different `episode_type`.\\n\\n# Alternatives\\n\\nWhat episodes are not:\\n\\n * they cannot combine multiple streams. If you have multicamera view on the scene, you will have to create many episodes and join then in another system\\n * they cannot be multipart. Only one continious uninterrupted episode. However, it is ok for them to overlap.\\n\\n# Updates\\n\\nEpisodes are supposed to be streamable and updatable. \\n\\nIf you consume episodes, you must be ready to see old `episode_id`\\nwith new updated data. You MUST overwrite previous data.\\n\\nIf you emit episodes and you change any fields, you MUST accumulate previous data of episode and send full copy of\\nupdated episode.\\n\\n# Borders\\n\\nEpisode have two mandatory fields: `opened_at` and `updated_at`, they are default borders of the episode:\\nbeginning and the end.\\n\\nSometimes you need to look at another fields: `started_at` and `closed_at`.\\n\\n`started_at` appears when episode emitter decides that beginning of the episode should be different from `opened_at`,\\nfor example if video analytics has analysed previous frames and decided that this object appeared earlier.\\n\\n`closed_at` can appear if episode source have decided that episode will not continue anymore, for example\\ncar have run out of camera view. However, `updated_at` can be still changed, if any other system will add \\nmore data there, for example detected licence plates of some other auxiliary information.\\n","required":["episode_id","media","opened_at","updated_at"],"properties":{"episode_id":{"type":"integer","format":"snowflake_id","description":"Unique identifier of the episode. Must be created by the system that first creates this episode.\\n\\nPlease, mention that it is assumed to be 64 bit length including time of creation in it (refer to snowflake),\\nso you cannot handle it in javascript with simple `JSON.parse()`, you need to use parsed that will properly\\nhandle very long integers.\\n","examples":{"default":{"value":1722279170848854000}},"x-format-description":"snowflake_id"},"media":{"type":"string","format":"media_name","description":"Stream name on which this episode exists.\\n","x-format-description":"media_name"},"region_id":{"type":"string","x-private":true,"description":"Identifier of the detection area.\\nIt is used to distinguish episodes from various regions of interest within the frame.\\nFor instance, it can be used with a single camera facing two entrances to count visitors independently at each entrance.\\nCurrently, it contains string representation of the index of the region\\nspecified in the `areas` field of stream\'s videoanalytics configuration.\\nThis field is omitted if no `areas` is configured for the stream\\n"},"close_reason":{"description":"The reason for closing the episode.\\n","allOf":[{"$ref":"#/components/schemas/episode_close_reason"}]},"opened_at":{"type":"integer","format":"utc_ms","description":"The time when this episode was created. Naming is standard for whole flussonic ecosystem.\\nUsually this time will be the same as `started_at`, but can differ, refer to the description of that field.\\n\\nThe value of this field is copied into `episode_id`, so sorting by `episode_id` will give you the same\\nsort as by `opened_at`\\n","examples":{"default":{"value":1637094994000}},"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"started_at":{"type":"integer","format":"utc_ms","description":"This field can be used as indication of the fact that some system have checked and ensured that\\nthis episode has really started at some time, that may differ from `opened_at`.\\n\\nFor example video analytics will use this field for the time when this episode was confirmed as confident.\\n\\nMay be not relevant for television systems.\\n","examples":{"default":{"value":1637094994000}},"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"updated_at":{"type":"integer","format":"utc_ms","description":"The time of last change of the episode.\\n\\nSystem that processes episodes and can send them to other systems, MUST update this field\\non any changes in this episode.\\n\\nThis field MUST be updated strictly monotonical and increasing. The updater MUST guarantee that\\nthis `updated_at` can be used as a sort key for fetching fresh updates.\\n\\nConsumer of the episodes can use `updated_at` in the following scenario:\\n\\n * fetch all exisiting episodes from the source\\n * take biggest `updated_at` from this dataset, it will be T\\n * ask source for all episodes with `updated_at > T`\\n\\nThis algorithm can be used for fetching update stream from the source.\\n","examples":{"default":{"value":1637098611000}},"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"closed_at":{"type":"integer","format":"utc_ms","description":"Episode emitter can decide that episode considered closed and will not grow further.\\n`closed_at` MUST NOT change, it must be emitted only once.\\n\\nEpisode can live without `closed_at`, in this case you should use `updated_at` as the last time\\nof the episode.\\n","examples":{"default":{"value":1637094994000}},"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"preview_timestamp":{"type":"integer","format":"utc_ms","description":"The time when the preview of this episode is available.\\nUse it to request preview image via Mediaserver\'s DVR API (`jpeg_preview_dvr`).\\n\\nVisit the [Getting JPEGs from DVR by specific time](https://flussonic.com/doc/thumbnails/#thumbnails-dvr-time) article\\nand [JPEG thumbnail from DVR](https://flussonic.com/doc/api/streaming/#tag/image/operation/jpeg_preview_dvr) section of the Mediaserver\'s API Reference\\nfor details.\\n\\nThis field may not be present. If so, you may use the timestamp from the `started_at` field to request the preview image\\n","examples":{"default":{"value":1637094994000}},"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"preview":{"type":"string","contentEncoding":"base64","format":"base64","description":"Small inline image for previewing in UI\\n","x-format-description":"base64"},"originator":{"description":"This describes the way this episode was updated, whether via an inference node or an API.\\nIn the case of an inference node, its hostname will be provided.\\n","allOf":[{"$ref":"#/components/schemas/episode_originator"}]},"episode_appearance_timestamps":{"description":"The time when the episode appeared in the service relative to the server time.\\n","allOf":[{"$ref":"#/components/schemas/episode_appearance_timestamps"}]},"has_dvr":{"type":"bool","description":"Streamer has DVR for the episode","readOnly":true}}},"episodes_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"episodes":{"description":"The list of Episodes fetched according to the query parameters.","type":"array","items":{"$ref":"#/components/schemas/episode"}}}}]},"episode_close_reason":{"type":"string","oneOf":[{"title":"Timeout","description":"Episode was closed because of no activity was detected in it.","const":"timeout"}]},"episode_generic":{"allOf":[{"$ref":"#/components/schemas/episode_base"},{"type":"object","properties":{"episode_type":{"type":"string","description":"Generic stream episode","const":"generic"}}}]},"episode_custom":{"allOf":[{"$ref":"#/components/schemas/episode_base"},{"type":"object","properties":{"episode_type":{"type":"string","description":"Custom episode type.\\nUse this field to define your own episode types when integrating custom analytics. \\nIf episode type is not specified, episode will be saved with `generic` type.\\n","maxLength":20,"minLength":1},"payload":{"type":"object","description":"Custom episode payload. Use this field to provide additional information about the episode."}}}]},"external_episode":{"type":"object","required":["opened_at","updated_at"],"properties":{"opened_at":{"type":"integer","format":"utc_ms","description":"The time when this episode was created.","example":1637094994000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"updated_at":{"type":"integer","format":"utc_ms","description":"The time of last detection associated with this episode.","example":1637098611000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"closed_at":{"type":"integer","format":"utc_ms","description":"The time when this episode was closed.","example":1637094994000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000}}},"external_episodes_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"episodes":{"description":"The list of Episodes fetched according to the query parameters.","type":"array","items":{"$ref":"#/components/schemas/external_episode"}}}}]},"episode_originator":{"type":"object","required":["source"],"properties":{"source":{"type":"string","oneOf":[{"const":"api","description":"Episode was updated by an api.\\n"},{"const":"inference","description":"Episode was updated by an inference node.\\n"},{"const":"motion_detector","description":"Episode was updated by a motion detector.\\n"}]},"hostname":{"type":"string","description":"This field will provide hostname if the source is an inference node or motion detector.\\n","example":"example.com"}}},"episode_appearance_timestamps":{"type":"object","properties":{"inference_timestamp":{"type":"integer","format":"utc_ms","description":"The time when this episode was created in inference service.","example":1637094994000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"central_timestamp":{"type":"integer","format":"utc_ms","description":"The time when this episode was fetched by Central.","example":1637098611000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"watcher_timestamp":{"type":"integer","format":"utc_ms","description":"The time when this episode was fetched by Watcher.","example":1637094994000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000}}},"vision_detector_config":{"type":"object","required":["detector_type","region_id"],"properties":{"detector_type":{"allOf":[{"description":"Detection module"},{"$ref":"#/components/schemas/vision_detector"}]},"region_id":{"type":"string","description":"Identifier of the detection area.\\nIt is used to distinguish episodes from various regions of interest within the frame.\\nFor instance, it can be used with a single camera facing two entrances to count visitors independently at each entrance.\\n"},"region_coordinates":{"allOf":[{"description":"This parameter allows you to select specific polygonal area(s) to detect objects in.\\nThe vertices are specified in a counter-clockwise direction.\\n"},{"$ref":"#/components/schemas/vision_region"}]}}},"vision_confidence":{"description":"Confidence metric","type":"number","examples":{"default":{"value":0.34},"one":{"value":0.98}},"minimum":0,"maximum":1},"vision_region":{"type":"array","description":"region","items":{"$ref":"#/components/schemas/vision_point"},"minItems":3},"vision_box":{"type":"object","description":"Rectangle","required":["top","left","bottom","right"],"properties":{"top":{"description":"Top border of the bounding box. Fraction of full frame height","type":"number","minimum":0,"maximum":1},"left":{"description":"Left border of the bounding box. Fraction of full frame width","type":"number","minimum":0,"maximum":1},"bottom":{"description":"Bottom border of the bounding box. Fraction of full frame height","type":"number","minimum":0,"maximum":1},"right":{"description":"Right border of the bounding box. Fraction of full frame width","type":"number","minimum":0,"maximum":1}}},"vision_point":{"type":"object","description":"2D point","required":["x","y"],"properties":{"x":{"description":"X coordinate. Fraction of full frame width","type":"number","minimum":0,"maximum":1,"examples":{"default":{"value":0.54},"one":{"value":0.78}}},"y":{"description":"Y coordinate. Fraction of full frame height","type":"number","minimum":0,"maximum":1,"examples":{"default":{"value":0.38},"one":{"value":0.12}}}}},"vision_episode_face":{"allOf":[{"$ref":"#/components/schemas/episode_base"},{"type":"object","properties":{"episode_type":{"type":"string","description":"Face is detected","const":"face"},"detections":{"type":"array","description":"Detections associated with this episode","items":{"$ref":"#/components/schemas/vision_detected_face"}},"fingerprint":{"description":"The fingerprint of the detected face","allOf":[{"$ref":"#/components/schemas/vision_face_fingerprint"}]},"matched_persons":{"description":"List of matched persons with similarity metric. \\nVideoanalytics identification service enriches episode\'s data and fills this field\\nwith the list of persons that are similar to the face detected in this episode.\\n","type":"array","items":{"$ref":"#/components/schemas/vision_person_match"}}}}]},"vision_episode_vehicle":{"allOf":[{"$ref":"#/components/schemas/episode_base"},{"type":"object","description":"Vehicle episode","properties":{"episode_type":{"type":"string","description":"Vehicle is detected","const":"vehicle"},"detections":{"type":"array","description":"Detections associated with this episode","items":{"oneOf":[{"$ref":"#/components/schemas/vision_detected_vehicle"},{"$ref":"#/components/schemas/vision_detected_license_plate"}]}},"vehicle_purpose":{"description":"The purpose of the vehicle, e.g. emergency or regular.","allOf":[{"$ref":"#/components/schemas/vision_vehicle_purpose"}]},"vehicle_emergency_subtype":{"description":"Emergency type of the vehicle.","allOf":[{"$ref":"#/components/schemas/vision_vehicle_emergency_subtype"}]},"license_plate_text":{"description":"Recognized vehicle\'s license plate number","allOf":[{"$ref":"#/components/schemas/vision_license_plate_text"}]},"license_plate_missing":{"type":"boolean","description":"Indicates if no license plate is detected on this vehicle"},"vehicle_facing_side":{"description":"Shows from which side the vehicle was detected.","allOf":[{"$ref":"#/components/schemas/vision_vehicle_facing_side"}]}}}]},"vision_episode_context_search":{"allOf":[{"$ref":"#/components/schemas/episode_base"},{"type":"object","properties":{"episode_type":{"type":"string","description":"Episode matches context search text query","const":"context_search"},"matches":{"type":"array","description":"List of matches that the context search episode contains.\\nActing as a metric of similarity between a text query and an episode.\\n","items":{"$ref":"#/components/schemas/vision_detected_face"},"x-private":true},"match_score":{"type":"number","description":"Maximum matching score between the text query and episode.","examples":{"default":{"value":0.2345}}}}}]},"vision_episode_qr_code":{"allOf":[{"$ref":"#/components/schemas/episode_base"},{"type":"object","properties":{"episode_type":{"type":"string","description":"QR-code is detected","const":"qr_code"},"payload":{"type":"string","description":"Raw data extracted from QR-code","example":"WIFI:T:WPA;S:MyOfficeWiFi;P:Mypassword;H:;"}}}]},"vision_detected_object_base":{"type":"object","required":["detected_at","object_class"],"properties":{"detected_at":{"description":"Timestamp when the object was detected","type":"integer","format":"utc_ms","x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"object_class":{"description":"Class of the detected object","allOf":[{"$ref":"#/components/schemas/vision_object_class"}]},"appearance":{"description":"Appearance attributes of the detected object","allOf":[{"$ref":"#/components/schemas/vision_appearance"}]},"confidence":{"description":"Confidence level of object detection","allOf":[{"$ref":"#/components/schemas/vision_confidence"}]},"thumbnail_quality":{"description":"Quality of the thumbnail","allOf":[{"$ref":"#/components/schemas/vision_confidence"}]},"thumbnail":{"description":"Preview of the detected object","allOf":[{"$ref":"#/components/schemas/vision_image_attributes"}]}}},"vision_detected_face":{"allOf":[{"$ref":"#/components/schemas/vision_detected_object_base"},{"$ref":"#/components/schemas/vision_face_attributes"},{"type":"object","description":"Detected face"}]},"vision_detected_vehicle":{"allOf":[{"$ref":"#/components/schemas/vision_detected_object_base"},{"$ref":"#/components/schemas/vision_vehicle_attributes"},{"type":"object","description":"Detected vehicle"}]},"vision_detected_license_plate":{"allOf":[{"$ref":"#/components/schemas/vision_detected_object_base"},{"$ref":"#/components/schemas/vision_license_plate_attributes"},{"type":"object","description":"Detected license plate"}]},"vision_vehicle_facing_side":{"description":"Shows from which side the vehicle was detected.","type":"string","oneOf":[{"title":"Front","const":"front","description":"The vehicle was detected from the front."},{"title":"Rear","const":"rear","description":"The vehicle was detected from the rear."}]},"vision_face_attributes":{"type":"object","properties":{"fingerprint":{"description":"The fingerprint of the detected face","allOf":[{"$ref":"#/components/schemas/vision_face_fingerprint"}]}}},"vision_face_fingerprint":{"type":"object","description":"Digital fingerprint of the face","required":["data","version"],"properties":{"data":{"description":"Base64 encoded representation of the fingerprint","type":"string","format":"base64","x-format-description":"base64"},"version":{"description":"Version identifier of the fingerprint\'s data. The version is assigned automatically.\\nFingerprints of different versions cannot be compared to each other.\\n","type":"string","examples":{"default":{"value":"aabbccdd"},"one":{"value":"c6ba4246"}}}}},"vision_vehicle_attributes":{"type":"object","properties":{"purpose":{"description":"The purpose of the vehicle, e.g. emergency or regular.","allOf":[{"$ref":"#/components/schemas/vision_vehicle_purpose"}]},"license_plate_missing":{"type":"boolean","description":"Indicates if no license plate is detected on this vehicle"}}},"vision_vehicle_purpose":{"description":"The purpose of the vehicle, e.g. emergency or regular.\\nPolice, ambulance cars and firetrucks are being detected by the videoanalytics as `emergency`.\\nAny other type of vehicle is marked as `regular`.\\n","type":"string","oneOf":[{"title":"Regular","const":"regular","description":"Regular car"},{"title":"Emergency","const":"emergency","description":"Emergency vehicle (police, ambulance or firetruck)"}]},"vision_vehicle_emergency_subtype":{"description":"Emergency type of the vehicle, e.g. ambulance, police, firetruck.\\n","type":"string","oneOf":[{"title":"Ambulance","const":"ambulance","description":"ambulance car"},{"title":"Police","const":"police","description":"police car"},{"title":"Firetruck","const":"firetruck","description":"firetruck car"}]},"vision_license_plate_attributes":{"type":"object","description":"Attributes of the detected vehicle","properties":{"plate_text":{"description":"Recognized vehicle\'s license plate number","allOf":[{"$ref":"#/components/schemas/vision_license_plate_text"}]},"facing_side":{"description":"Shows from which side the vehicle was detected.","allOf":[{"$ref":"#/components/schemas/vision_vehicle_facing_side"}]}}},"vision_license_plate_text":{"description":"Recognized vehicle\'s license plate number","type":"string","examples":{"default":{"value":"A123BC45"},"one":{"value":"B98365H"},"two":{"value":"7BTK345"}}},"vision_object_class":{"type":"string","description":"Object class","oneOf":[{"title":"Face","const":"face"},{"title":"License plate","const":"license_plate"},{"title":"Vehicle","const":"vehicle"}]},"vision_detector":{"type":"string","oneOf":[{"title":"Face detector","const":"faces"},{"title":"Vehicle and license plate detector","const":"vehicles"},{"title":"Motion detector (SAD or similar type)","const":"motion"},{"title":"QR detector","const":"qr-codes"}]},"vision_appearance":{"type":"object","properties":{"box":{"description":"Position of the objects at the frame","allOf":[{"$ref":"#/components/schemas/vision_box"}]}}},"vision_image_mimetype":{"type":"string","oneOf":[{"const":"image/jpeg","title":"jpeg","description":"jpeg"}]},"vision_image_attributes":{"type":"object","required":["data"],"properties":{"data":{"description":"Base64-encoded image data","type":"string","format":"base64","x-format-description":"base64"},"sha256":{"type":"string","format":"hexbinary","description":"Checksum of this image","minLength":64,"maxLength":64,"x-format-description":"hexbinary"},"mime_type":{"description":"MIME type of the image","allOf":[{"$ref":"#/components/schemas/vision_image_mimetype"}]}}},"vision_person":{"type":"object","description":"Person","required":["person_id","updated_at","originator"],"properties":{"person_id":{"description":"Identifier of the person","readOnly":true,"format":"snowflake_id","type":"integer","examples":{"default":{"value":7036001172460667000}},"x-format-description":"snowflake_id"},"external_id":{"description":"Identifier of the person in the external system. \\nUse it when supplying the recognition results further into the external system\\n(e.g. for access level check) if the person identifiers in the external system \\nare different from the ones in Flussonic Identification database.\\n\\nThis field may contain `null` when video analytics detects a new person\\nwhich explicitly has no association in the external system (i.e. if `originator=identification_service`). \\n","type":"string","examples":{"default":{"value":"dedcc8e8"}}},"originator":{"description":"Indicates the way this person was created: \\nmanually via an api or automatically in the identification service.\\n","allOf":[{"$ref":"#/components/schemas/vision_person_originator"}]},"updated_at":{"description":"When this person was last updated","type":"integer","format":"utc_ms","example":1637034282845,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"deleted_at":{"description":"When this person was marked as deleted","type":"integer","format":"utc_ms","example":1637095014573,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"fingerprints":{"description":"Digital fingerprints of the person.\\nVideoanalytics makes digital fingerprint of the person\\nusing uploaded photos or videostreams being processed\\n","type":"array","items":{"$ref":"#/components/schemas/vision_face_fingerprint"}},"photos":{"description":"Person\'s photos. External system uploads images\\nwhich are being processed by videoanalytics\\nto get digital fingerprint of the person\\n","type":"array","items":{"$ref":"#/components/schemas/vision_image_attributes"}}}},"vision_person_match":{"type":"object","description":"Person matching information","required":["person","match_score"],"properties":{"person":{"description":"Matched person","allOf":[{"$ref":"#/components/schemas/vision_person"}]},"match_score":{"description":"Score of the match with person. 1.0 means absolute match","allOf":[{"$ref":"#/components/schemas/vision_confidence"}]}}},"vision_person_originator":{"type":"string","oneOf":[{"title":"api","const":"api","description":"Person is created by operator or external system via API.\\nFor example, when you add the person in Watcher UI, it has `originator=api`.\\nBut when you edit an automatically created person in UI, `originator=identification_service` remains.\\n"},{"title":"identification_service","const":"identification_service","description":"Person is created automatically by the Identification service\\nbecause no matching person was found in the persons database.\\n\\nThe Identification service stores unrecognized persons and matches new episodes with them\\nin case if it becomes known who this is (i.e. if operator edits such person in UI to specify name).\\n"}]},"vision_persons_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","required":["persons"],"properties":{"persons":{"description":"List of fetched persons according to the query parameters.","type":"array","items":{"$ref":"#/components/schemas/vision_person"}}}}]},"api_call":{"type":"object","properties":{"created_at":{"type":"string","format":"date_time","description":"Creation date and time","example":"2021-01-30T08:30:00.432567Z","x-format-description":"date_time"},"ip":{"description":"IP address of the caller.","type":"string","format":"ip","example":"192.34.32.10","x-format-description":"ip"},"user_agent":{"description":"The type of the device from which the API call was produced.","type":"string","example":"Flussonic 24.04"},"originator":{"description":"The program produced the API call. Content of `X-Originator` header.","type":"string","example":"flussonic"},"operation_id":{"description":"API method ID.","type":"string","example":"streams_list"},"payload":{"description":"Payload data transmitter in the API call.","type":"string"},"status":{"description":"Request status code.","type":"integer"},"duration":{"type":"integer","format":"microseconds","description":"Microseconds that this request took","x-format-description":"microseconds"},"request_id":{"x-primary-key":true,"type":"string","description":"Internal request-id for this operation"},"object":{"x-private":true,"description":"Object kind, clarifies information about api call target entity.\\n","type":"object","oneOf":[{"$ref":"#/components/schemas/agent_object"},{"$ref":"#/components/schemas/api_key_object"},{"$ref":"#/components/schemas/disk_file_object"},{"$ref":"#/components/schemas/stream_object"},{"$ref":"#/components/schemas/vod_object"},{"$ref":"#/components/schemas/project_object"}],"discriminator":{"propertyName":"type","mapping":{"agent":"#/components/schemas/agent_object","api_key":"#/components/schemas/api_key_object","disk_file":"#/components/schemas/disk_file_object","stream":"#/components/schemas/stream_object","vod":"#/components/schemas/vod_object","project":"#/components/schemas/project_object"}}}}},"tls_certificate":{"type":"object","properties":{"cert":{"description":"Information about the server certificate.","allOf":[{"$ref":"#/components/schemas/certificate_info"}]},"cacert":{"description":"Information about the CA certificate applied on the server.","allOf":[{"$ref":"#/components/schemas/certificate_info"}]},"private_key_match_certificate":{"description":"Shows if the server private key matches the server certificate.","type":"boolean"}}},"certificate_info":{"type":"object","properties":{"domains":{"description":"One or more domains for which the certificate is issued.","type":"array","items":{"type":"string"}},"not_before":{"description":"Start date of the certificate.","type":"integer"},"not_after":{"description":"End date of the certificate.","type":"integer"},"issuer_name":{"description":"The name of the issuing authority.","type":"string"},"public_key":{"description":"Public key.","type":"string"}}},"letsencrypt_request":{"type":"object","properties":{"domains":{"description":"One or more domain names to issue the Let\'s Encrypt certificate for.","type":"array","items":{"type":"string"}}}},"tls_version":{"type":"string","oneOf":[{"title":"TLSv1","const":"tlsv1"},{"title":"TLSv1.1","const":"tlsv1.1"},{"title":"TLSv1.2","const":"tlsv1.2"},{"title":"TLSv1.3","const":"tlsv1.3"}]},"streams_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"$ref":"#/components/schemas/openmetrics_labels"},{"type":"object","properties":{"streams":{"items":{"$ref":"#/components/schemas/stream_config"},"type":"array","description":"List of fetched streams according to the query parameters."}}}]},"auth_backends_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"auth_backends":{"description":"Configurations of the authorization backends.","items":{"$ref":"#/components/schemas/auth_backend_config"},"type":"array"}}}]},"admin_view_token":{"type":"object","properties":{"token":{"type":"string","description":"The admin auth token represented as an ASCII string.","example":"ADM1-1659967259-a4ff9221f358938cc091b38679291378ac49f720"}}},"openmetrics_labels":{"type":"object","properties":{"server_id":{"type":"string","format":"uuid","openmetrics_label":"server_id","description":"Unique server ID generated on a first start or license change.\\nShould not changing until running on the same hardware.\\n","x-format-description":"uuid"}}},"agent_config_base":{"type":"object","properties":{"id":{"type":"string","description":"Agent identifier","x-primary-key":true,"example":"1234567"},"key":{"type":"string","description":"Agent authentication key."},"stats":{"description":"Agents\'s metrics and other statistical information.","allOf":[{"$ref":"#/components/schemas/watcher_agent_stats"}],"readOnly":true}}},"security_protocol":{"type":"string","oneOf":[{"title":"TLSv1","const":"tlsv1"},{"title":"TLSv1.1","const":"tlsv1.1"},{"title":"TLSv1.2","const":"tlsv1.2"},{"title":"TLSv1.3","const":"tlsv1.3"}]},"segments_container":{"type":"string","oneOf":[{"title":"CMAF","const":"cmaf"},{"title":"fMP4","const":"fmp4"},{"title":"MPEG-TS","const":"mpegts"}]},"session_generic":{"type":"object","description":"Ancestor for all session-like entities. Something like a generic report for a flow.\\nCan be suitable for an input, push or play\\n","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier (or UUID) of the session.","example":"61942414-8c15-4809-8bb6-adf1ae846027","x-format-description":"uuid"},"ip":{"type":"string","description":"IP address of the connected peer.","example":"172.16.25.73"},"proto":{"allOf":[{"$ref":"#/components/schemas/protocol"}],"description":"Protocol used for the data transmission in the session.","example":"dash"},"opened_at":{"type":"number","format":"utc_ms","description":"The time when this session was created.","example":1637094994000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"first_byte_at":{"type":"number","format":"utc_ms","description":"When the first byte was received on this session.\\n","example":1637098611000,"x-telemetry-mapping":"Session/fFirstByteAt","x-private":true,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"started_at":{"type":"number","format":"utc_ms","description":"The time when the frames transmission started in the session.","example":1637095014000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"updated_at":{"type":"number","format":"utc_ms","description":"The time when the session was last updated.","example":1637098611000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"closed_at":{"type":"number","format":"utc_ms","description":"The time when the session was closed.","example":1637098821000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"segments_container":{"allOf":[{"$ref":"#/components/schemas/segments_container"}],"description":"Media container used for this protocol.\\nFor instance, HLS can go with MPEG-TS or fMP4 segments and DASH with big fMP4 or small CMAF segments.\\n"},"secure":{"type":"boolean","description":"This flag indicates that TLS (SSL) was used to serve this session.\\nIt may be either input (ingest, publish) or output (push, play) session, this flag will be\\nfilled for any of them.\\n"},"security_protocol":{"allOf":[{"$ref":"#/components/schemas/security_protocol"}],"description":"TLS protocol version used to protect the connection","example":"tlsv1.2"},"manifest_type":{"allOf":[{"$ref":"#/components/schemas/manifest_type"}],"description":"Type of requested manifest. Applicable for HLS, DASH and MSS.","example":"rewind"},"named_by":{"allOf":[{"$ref":"#/components/schemas/named_by"}],"example":"config","description":"Where the media was configured","deprecated":true,"x-delete-at":25.02},"media_info":{"allOf":[{"$ref":"#/components/schemas/media_info"}],"description":"Technical description of the input content.\\n"},"ts_delay":{"type":"number","format":"ticks","example":1284,"description":"The time period during which no frames were received from the stream\'s input.\\n","openmetrics_metric":"ts_delay","x-format-description":"ticks"},"ts_delay_per_tracks":{"type":"array","items":{"type":"number","format":"ticks","x-format-description":"ticks"},"example":[1284],"description":"The time period during which no frames were received per each track according to `media_info`\\n","openmetrics_metric":"ts_delay"}}},"session_details":{"type":"object","description":"This fields can deanonymise user and thus can be sent to telemetry only if allowed.\\n","properties":{"name":{"type":"string","format":"media_name","description":"File used in the streaming session.","example":"hockey1","x-format-description":"media_name"},"token":{"type":"string","format":"session_token","description":"Token provided by the client.","example":"zGAFxLkoWluO1pG7_nJmQAbCnM5","x-format-description":"session_token"},"country":{"type":"string","format":"iso3166","description":"Peer\'s IP geolocation (country).","example":"us","x-format-description":"iso3166"},"user_id":{"type":"string","description":"User ID provided by the Middleware authorization backend.","example":"5435"},"user_name":{"type":"string","format":"media_name","description":"User-provided original stream or VOD name before the rewrite of a media [aliaser](https://flussonic.com/doc/hide-publisher-stream-name-from-viewers/).","x-format-description":"media_name"},"referer":{"type":"string","format":"uri","description":"Referer HTTP header or its analog for other protocols.","example":"http://my-tv-portal.local/hockey1","x-format-description":"uri"},"query_string":{"type":"string","description":"Full query string for the initial request of the session."},"current_time":{"type":"number","format":"milliseconds","description":"The current time value of the playback session.","x-format-description":"milliseconds"},"user_agent":{"type":"string","description":"Client\'s user agent for selected protocol.","example":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML. like Gecko) Chrome/90.0.4430.72 Safari/537.36"},"allowed_dvr_from":{"type":"integer","format":"utc","description":"This field indicates that session has allowed_dvr_ranges delivered from authorization backend and shows maximum depth of allowed content.\\n","x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000}}},"session_playback":{"type":"object","description":"Playback specific fields\\n","properties":{"hls_separate_audio":{"type":"boolean","description":"The flag shows if the HLS separate_audio mode is enabled for the session."},"filter_tracks":{"type":"boolean","description":"The flag shows if the track filtering is applied for the session."},"dvr":{"type":"boolean","description":"This flag indicates that this session was using DVR.\\n"},"advertising":{"type":"boolean","description":"This flag indicates that advertising was shown in this session.\\n"},"max_sessions":{"type":"integer","description":"The maximum number of sessions allowed for the given `user_id` by the middleware authorization backend."},"soft_limitation":{"type":"boolean","default":false,"description":"The flag shows if the soft limitation mode is enabled for the sessions with the given `user_id`."}}},"session_counters":{"type":"object","properties":{"bytes":{"type":"integer","format":"bytes","default":0,"description":"Number of bytes sent in the session.","openmetrics_metric":"bytes","x-format-description":"bytes"},"disk_bytes":{"type":"integer","format":"bytes","description":"Number of bytes read from disk in the session.\\n","x-format-description":"bytes"},"disk_orig_bytes":{"type":"integer","format":"bytes","description":"The total number of bytes the media occupies on disk, all track including.\\n","x-format-description":"bytes"}}},"session":{"allOf":[{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/session_details"},{"$ref":"#/components/schemas/session_counters"},{"$ref":"#/components/schemas/session_player"},{"$ref":"#/components/schemas/session_playback"}]},"session_player":{"type":"object","properties":{"application":{"allOf":[{"$ref":"#/components/schemas/session_player_details"}],"description":"Player\'s application session details","x-private":true}}},"session_player_details":{"type":"object","properties":{"application_name":{"allOf":[{"$ref":"#/components/schemas/application_name"}],"description":"Application name","example":"mseld_player","x-telemetry-mapping":"Session/fApplicationName","x-private":true},"application_version":{"type":"string","description":"Application version","example":"21.10.3","x-telemetry-mapping":"Session/fApplicationVersion","x-private":true},"stall_count":{"type":"integer","x-telemetry-mapping":"Session/fPlayerStallCount","x-private":true,"description":"The number of stalls during the playback in the player."},"pause_count":{"type":"integer","x-telemetry-mapping":"Session/fPlayerPauseCount","description":"The number of times the user paused the playback in the player."},"error_count":{"type":"integer","x-telemetry-mapping":"Session/fPlayerErrorCount","x-private":true,"description":"The number of errors during the playback in the player."},"reconnect_count":{"type":"integer","x-telemetry-mapping":"Session/fPlayerReconnectCount","x-private":true,"description":"The number of reconnects during the playback in the player."},"bitrate_change_count":{"type":"integer","x-telemetry-mapping":"Session/fPlayerBitrateChangeCount","x-private":true,"description":"Number of bitrate changes during playback of the player."},"live_duration":{"type":"integer","format":"milliseconds","x-telemetry-mapping":"Session/fLiveDuration","x-private":true,"description":"The time during which the player was in the playback state.","x-format-description":"milliseconds"},"stall_duration":{"type":"integer","format":"milliseconds","x-telemetry-mapping":"Session/fStallDuration","x-private":true,"description":"Duration of stall the live broadcast.","x-format-description":"milliseconds"},"pause_duration":{"type":"integer","format":"milliseconds","x-telemetry-mapping":"Session/fPauseDuration","x-private":true,"description":"Duration of pause the live broadcast by user initiation.","x-format-description":"milliseconds"},"total_video_frames":{"type":"integer","description":"The number of video frames played during the session."},"dropped_video_frames":{"type":"integer","description":"The number of dropped video frames in the session."},"corrupted_video_frames":{"type":"integer","description":"The number of corrupted video frames in the session."},"advertising_duration":{"type":"integer","format":"milliseconds","description":"Duration of advertising in the live broadcast by user initiation.","x-format-description":"milliseconds"}}},"application_name":{"type":"string","enum":["mseld_player","live_player","dvr_player","webrtc_player","webrtc_publisher"]},"manifest_type":{"type":"string","oneOf":[{"title":"index","description":"Simple live stream or file playlist","const":"index"},{"title":"archive","description":"DVR playlist","const":"archive"},{"title":"event","description":"Event playlist","const":"event"},{"title":"rewind","description":"Playlist with a wide sliding window.","const":"rewind"},{"title":"timeshift_abs","description":"DVR playlist using absolute timeshift","const":"timeshiftAbs"},{"title":"timeshift_rel","description":"DVR playlist using relative timeshift","const":"timeshiftRel"}]},"dvr_write_counters":{"type":"object","properties":{"segments_written":{"type":"integer","description":"How many segments have been written since stream start\\n","openmetrics_metric":"segments_written"},"segments_skipped":{"type":"integer","description":"How many segments were not written due to delay of storage.\\n\\nThey could be written, if storage was faster, but they were deleted from memory.\\n"},"segments_failed":{"type":"integer","description":"How many segments got some error from the storage during write\\n"},"segments_written_collapsed":{"type":"integer","description":"Total amount of segments that were written in batch with another one.\\n\\nFor 2 segments written in a single batch, here will be recorded 1.\\n\\nMonitor this to see how your storage is delaying\\n"},"segments_written_fast":{"type":"integer","description":"How many segments were written faster than 1/2 of segment duration\\n"},"segments_written_slow":{"type":"integer","description":"How many segments were written slower than 1/2 of segment duration, but faster than 90%\\nof segment duration\\n"},"segments_written_delayed":{"type":"integer","description":"How many segments were written slower than 90% of segment duration, which means\\nthat DVR cannot write this stream\\n"},"segments_discontinuity":{"type":"integer","description":"How many segments have timestamps gap or different media info between them while source is being written to the archive. This counter does not change during replication.\\n"}}},"dvr_read_source_counters":{"type":"object","properties":{"ram":{"description":"Number of times when requested segment was readed from RAM.","type":"integer","example":100},"cache":{"description":"Number of times when requested segment was readed from cache.","type":"integer","example":100},"local":{"description":"Number of times when requested segment was readed from local DVR.","type":"integer","example":10},"remote":{"description":"Number of times when requested segment was readed from remote DVR.","type":"integer","example":10}}},"dvr_read_popularity_counters":{"allOf":[{"$ref":"#/components/schemas/dvr_read_source_counters"},{"type":"object","properties":{"enoent":{"description":"Number of times when requested segment was not found.","type":"integer","example":0}}}]},"dvr_read_popularity_stats":{"type":"object","properties":{"today":{"description":"Read counters for the current day segments.","allOf":[{"$ref":"#/components/schemas/dvr_read_popularity_counters"}]},"yesterday":{"description":"Read counters for yesterday\'s segments.","allOf":[{"$ref":"#/components/schemas/dvr_read_popularity_counters"}]},"week":{"description":"Read counters for one week old segments.","allOf":[{"$ref":"#/components/schemas/dvr_read_popularity_counters"}]},"other":{"description":"Read counters for segments older than week.","allOf":[{"$ref":"#/components/schemas/dvr_read_popularity_counters"}]}}},"dvr_read_performance_stats":{"type":"object","properties":{"segments_read_fast":{"allOf":[{"$ref":"#/components/schemas/dvr_read_source_counters"}],"description":"How many segment read operations were performed faster than 1/2 of segment duration, grouped by source\\n"},"segments_read_slow":{"allOf":[{"$ref":"#/components/schemas/dvr_read_source_counters"}],"description":"How many segment read operations were performed slower than 1/2 of segment duration, but faster than 90%\\nof segment duration, grouped by source\\n"},"segments_read_delayed":{"allOf":[{"$ref":"#/components/schemas/dvr_read_source_counters"}],"description":"How many segment read operations were performed slower than 90% of segment duration, which means \\nplayback may stall and move jerkily, grouped by source\\n"},"segments_read_enoent":{"type":"integer","description":"How many segment read operations have been performed on segments that are not present on the DVR\\n"},"segments_read_failed":{"type":"integer","description":"How many segment read operations were performed with errors\\n"}}},"cache_spec":{"type":"object","properties":{"reference":{"description":"The name of the cache.","type":"string","format":"cache_name","example":"cache1","x-format-description":"cache_name"},"misses":{"description":"The number of requests necessary for a file to be cached.","type":"integer","example":3},"storage_limit":{"description":"Maximum disk consumption in bytes. \\nWhen this limit is reached, the oldest files will be overridden by later files.\\n","type":"integer","format":"bytes","example":400000,"x-format-description":"bytes"},"expiration":{"description":"A period (in seconds) back from the current moment during which the files are stored.\\nAs time goes, the files which are older than this period are being overridden by the later files.\\n","type":"integer","format":"seconds","example":3600,"x-format-description":"seconds"},"path":{"description":"The path where the files from the cloud or HTTP are cached to speed up broadcasting.","type":"string","format":"disk_path","example":"/storage/cache","x-format-description":"disk_path"}}},"play_counters":{"type":"object","properties":{"play_opened_sessions":{"type":"integer","description":"How many play sessions are active at the moment\\n","openmetrics_metric":"play_opened_sessions","x-metrics-type":"gauge"},"play_opened_sessions_by_proto":{"type":"object","additionalProperties":{"type":"integer"},"description":"How many play sessions are active at the moment groupped by protocol\\n"},"play_total_sessions":{"type":"integer","description":"All sessions opened from the stream star\\n","openmetrics_metric":"play_total_sessions"},"play_total_sessions_by_proto":{"type":"object","additionalProperties":{"type":"integer"},"description":"All sessions opened from the stream start groupped by protocol\\n"},"play_bytes":{"type":"integer","description":"How many bytes sent totally\\n","openmetrics_metric":"play_bytes"},"play_bytes_by_proto":{"type":"object","additionalProperties":{"type":"integer"},"description":"How many bytes sent totally groupped by protocol\\n"},"play_duration":{"type":"integer","format":"seconds","description":"How many human-hours (duration*clients) were delivered\\n","openmetrics_metric":"play_duration","x-format-description":"seconds"},"play_duration_by_proto":{"type":"object","additionalProperties":{"type":"integer"},"format":"seconds","description":"How many human-hours (duration*clients) were delivered groupped by protocol\\n","x-format-description":"seconds"},"authorizations_success":{"type":"integer","description":"Count of successful requests made to external authorization backend\\n"},"authorizations_denied":{"type":"integer","description":"Count of denied authorization backend requests. This will be incremented when auth backend replies,\\nbut denies playing. This means that backend is working, but denying playback.\\n"},"authorizations_failed":{"type":"integer","description":"Authorization backend can fail and do not reply at all, or give HTTP 500 errors. These cases will be counted here.\\n"},"authorizations_declined":{"type":"integer","description":"Authorization can be denied without even touching external authorization backend, for example in case of\\ndenied IP or token. This counter will increase in this case.\\n"}}},"disk_file":{"type":"object","properties":{"name":{"description":"The file or directory name.","type":"string","format":"media_name","examples":{"default":{"value":"vod/bunny.mp4"},"bunny1":{"value":"vod/bunny1.mp4"},"bunny2":{"value":"vod/bunny2.mp4"},"bunny3":{"value":"vod/bunny3.mp4"}},"x-format-description":"media_name"},"prefix":{"description":"The unique name of VOD location. \\nIt is used as a prefix for playing VOD files in this location.\\n","type":"string","format":"media_name","examples":{"default":{"value":"vod"},"bunny1":{"value":"vod1"},"bunny2":{"value":"vod2"},"bunny3":{"value":"vod3"}},"x-format-description":"media_name"},"url":{"description":"URL of the file or directory.","type":"string","examples":{"default":{"value":"/storage/bunny.mp4"},"bunny1":{"value":"/storage/bunny1.mp4"},"bunny2":{"value":"/storage/bunny2.mp4"},"bunny3":{"value":"/storage/bunny3.mp4"}}},"folder":{"description":"Name of the folder containing the file or directory.","type":"string","example":"example"},"subpath":{"description":"Subpath to the file or directory in the storage.","type":"string","examples":{"default":{"value":"bunny.mp4"},"bunny1":{"value":"bunny1.mp4"},"bunny2":{"value":"bunny2.mp4"},"bunny3":{"value":"bunny3.mp4"}}},"bytes":{"description":"File size in bytes.","type":"integer","example":42309561},"is_directory":{"description":"Whether it is a directory.","type":"boolean","default":false,"example":false},"is_multibitrate_directory":{"description":"Whether it is a directory with multi-bitrate content.","type":"boolean","default":false,"example":false},"opened":{"description":"Whether the file or directory is currently opened.","type":"boolean","default":false,"example":true},"egress_hostnames":{"allOf":[{"$ref":"#/components/schemas/cloud_hostnames"}],"description":"Egress hostname (hls, dash, ...) only for Admin UI, not public API.\\nNeed for cloud only for replace window.location\\n","x-private":true,"example":["egress-1.example.com","egress-2.example.com"]},"stats":{"description":"Statistics of the file usage.","allOf":[{"$ref":"#/components/schemas/disk_file_stats"}]},"project_id":{"type":"string","format":"base62","example":"aBc","description":"Project ID","x-format-description":"base62"}}},"disk_file_stats":{"type":"object","properties":{"worker_count":{"description":"Number of worker threads on the server executing the task of playing the file.","type":"integer","example":1},"client_count":{"description":"Number of clients playing the file.","type":"integer","format":"client_count","examples":{"default":{"value":2},"bunny1":{"value":1},"bunny2":{"value":10},"bunny3":{"value":5}},"x-format-description":"client_count"},"bytes_in":{"description":"Number of bytes read from the disk.","type":"integer","format":"bytes","example":1700923231,"x-format-description":"bytes"},"bytes_out":{"description":"Number of bytes downloaded form the disk.","type":"integer","format":"bytes","example":1700923231,"x-format-description":"bytes"},"media_info":{"description":"Technical information about the output media content.","allOf":[{"$ref":"#/components/schemas/media_info"}]}}},"vod_storage":{"type":"object","properties":{"url":{"type":"string","description":"The storage (on the disk or on another server) that Flussonic will scan for VOD files.\\nIf it is a path on the disk, it should be specified relating to the disk root.\\n\\nIt is possible to specify multiple storages for one VOD location. When Flussonic gets the URL for playing the file, it finds the prefix in this URL, \\ncuts the path after it and consequently searches for this path in all specified storages.\\n","example":"/storage"},"extra":{"additionalProperties":{"type":"string"},"type":"object","description":"Some additional options."}}},"vod_config":{"type":"object","properties":{"prefix":{"description":"The unique name of VOD location. \\n\\nIt is used as a prefix in file playback requests to explicitly specify where the system should find the files for playing. \\nAll the path after the prefix will be cut and added to the specified path on the disk (the storage configured for this VOD location). \\nThus, the system will find the file on the disk and play it.\\n","type":"string","format":"media_name","x-primary-key":true,"example":"movies","x-format-description":"media_name"},"auto_mbr":{"description":"Turns on automatic creation of a multi-bitrate HLS playlist from several files with different bitrates.","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/play-mbr-vod-with-auto-mbr/"},"type":"boolean","default":false},"position":{"type":"integer","format":"sort_index","description":"If an order of VOD locations is declared, it is a position of the this VOD location in the order.","x-notice":"only for stream","example":1,"x-format-description":"sort_index"},"disabled":{"description":"Whether this VOD location is disabled.","type":"boolean","example":false},"storages":{"description":"The directories (on disk or on another server) that Flussonic scans for VOD files.","items":{"allOf":[{"$ref":"#/components/schemas/vod_storage"}]},"type":"array"},"on_play":{"description":"Configuraton of the authorization backend for play sessions **only**. \\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/authorize-clients/#auth-on_play"},"allOf":[{"$ref":"#/components/schemas/auth_spec"}]},"cache":{"description":"Configuraton of the local file cache which is used for files from a cloud or an HTTP server.\\n\\nIf this option is enabled, a file will be downloaded to a local cache path by megabyte blocks. \\nDuring playback, the file will be first read from the cache. \\nThis allows to avoid multiple HTTP requests to the source for each part of data and, thus, to speed up broadcasting.\\n","allOf":[{"$ref":"#/components/schemas/cache_spec"}]},"segment_cache":{"x-private":true,"description":"Configuraton of the intermediate cache of video file segements for files on SSD drives.\\nIt is not recommended to use this option without local cahe.\\n","allOf":[{"$ref":"#/components/schemas/segment_cache_spec"}]},"read_queue":{"description":"The number of simultaneous readers form disk that should wait in a queue for playing a file.","type":"integer","example":100},"thumbnails":{"description":"Configuration of thumbnails generator.","allOf":[{"$ref":"#/components/schemas/thumbnails_spec"}]},"download":{"description":"Enables downloading files from the URL `http://FLUSSONIC-IP:80/vod_prefix/file_subpath.mp4`. \\nThe `Range` HTTP headers are supported.\\n","type":"boolean","default":false,"example":false},"protocols":{"description":"Configuraton of play protocols.","allOf":[{"$ref":"#/components/schemas/play_protocols_spec"}]},"url_prefix":{"description":"The names of separate segments within a segment-based HLS or DASH playlist start with the *specified* prefix. \\nThe option no longer works for *variant playlists*.\\n","allOf":[{"$ref":"#/components/schemas/url_prefix"}]},"segment_duration":{"description":"The time, in seconds, of the segment duration. Used for the protocols like HLS or DASH.","allOf":[{"$ref":"#/components/schemas/segment_duration"}]},"logo":{"description":"Overlay logo.","allOf":[{"$ref":"#/components/schemas/web_logo_spec"}]},"timeout":{"description":"The time (in milliseconds) passed since the last file request.\\nIf the file was not requested within this period, it will be closed and its resources will be deallocated.\\n","type":"integer","example":3},"drm":{"description":"Configuraton of the content encryption (DRM).","allOf":[{"$ref":"#/components/schemas/drm_spec"}]},"pulse_off":{"x-private":true,"description":"If this option is enabled, the data about playing the files is not collected for the Pulse tab in Flussonic UI.","type":"boolean","example":false,"x-notice":"do not collect pulse data on this stream"},"add_audio_only":{"description":"Whether to add an audio-only version of an HLS stream. \\nUsed to create App Store compliant HLS streams to deliver the content to Apple iOS devices.\\nAdd audio-only HLS playlist to variant MBR playlist for iOS compliant streaming.\\n","type":"boolean","example":false},"provider":{"description":"Human-readable name of the content provider. Applicable to MPEG-TS.","type":"string"},"project_id":{"type":"string","format":"base62","example":"aBc","description":"Project ID","x-format-description":"base62"}}},"segment_cache_spec":{"type":"object","properties":{"path":{"description":"The path where the files from the cloud or HTTP are cached to speed up broadcasting.","type":"string","format":"disk_path","example":"/mount/ssd1","x-format-description":"disk_path"},"misses":{"description":"The number of requests necessary for a file to be cached.","type":"integer","example":3},"storage_limit":{"description":"Maximum disk consumption in bytes. \\nWhen this limit is reached, the oldest segments will be overridden by later data.\\n","type":"integer","format":"bytes","example":400000,"x-format-description":"bytes"},"expiration":{"description":"A period (in seconds) back from the current moment during which the segments are stored.\\nAs time goes, the segments which are older than this period are being overridden by the later data.\\n","type":"integer","format":"seconds","x-format-description":"seconds"}}},"cloud_dvrs_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"dvrs":{"items":{"$ref":"#/components/schemas/cloud_dvr_config"},"type":"array","description":"List of available dvr storages"}}}]},"cloud_dvr_config":{"type":"object","properties":{"name":{"type":"string","description":"Name of available DVR storage","example":"ssd_storage"},"storage_limit":{"description":"DVR storage size limit.\\nWhen this limit is reached, the oldest segments are overridden by later data.\\n","type":"integer","format":"bytes","nullable":true,"x-format-description":"bytes"},"expiration":{"description":"Archive depth in the DVR storage, i.e. the retention period \\nafter which the DVR recordings are removed from the directory.\\n","type":"integer","format":"seconds","nullable":true,"x-format-description":"seconds"}}},"cloud_api_key":{"type":"object","properties":{"name":{"type":"string","maxLength":1000,"example":"middleware deploy key","description":"User provided name, e.g. the name of your application."},"key_id":{"type":"integer","format":"snowflake_id","example":6902558627475886000,"description":"Key Id","x-format-description":"snowflake_id"},"created_at":{"format":"date_time","type":"string","description":"Date and time of the api key creation.\\n","x-format-description":"date_time"},"bearer":{"type":"string","format":"api-key","readOnly":true,"nullable":true,"example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXlfaWQiOjY5MDI1NTg2Mjc0NzU4ODYwMDAsInByb2plY3RzX2lkcyI6WzY5MDI1NTg2Mjc0NzU4ODUwMDBdLCJzY29wZSI6WyJhZG1pbiJdfQ.VeVqLzU9Wv7bWNEH-qibHdlsBpBAPT4AMq7hDZ-S8-8","description":"An API authentication token that is generated only once on the key creation. In other cases this field will not be transmitted.","x-format-description":"api-key"},"project_ids":{"type":"array","items":{"type":"string"},"description":"The list of the identifiers of the Projects to which the user has access with the key.\\n","example":["aBc","dEf"]},"scope":{"type":"array","items":{"type":"string","oneOf":[{"title":"admin","const":"admin","description":"Admin access"}]},"description":"The list of access rights to the Projects that the user can access with the key.\\n"}},"required":["name"]},"cloud_api_keys_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"api_keys":{"items":{"$ref":"#/components/schemas/cloud_api_key"},"type":"array","description":"List of API keys"}}}]},"cloud_projects_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"projects":{"items":{"$ref":"#/components/schemas/cloud_project"},"type":"array","description":"List of fetched according to query parameters projects"}}}]},"cloud_project":{"properties":{"project_id":{"type":"string","format":"base62","example":"aBc","description":"Project ID","x-format-description":"base62"},"is_default":{"title":"is_default","type":"boolean","readOnly":true,"description":"True if this project is default for account.\\nAll new streams without specified project_id will be create in this project.\\n"},"allow_streams_named_by_user":{"type":"boolean","description":"Cloud will allow publisher to use own name for publishing streams`/{project_id}_{user_provided_name}?{params}`"}},"required":["allow_streams_named_by_user"]},"api_calls_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"api_calls":{"items":{"$ref":"#/components/schemas/api_call"},"type":"array","description":"List of fetched according to query parameters api calls recorded in audit log"}}}]},"agent_object":{"type":"object","required":["type","agent_id"],"properties":{"type":{"type":"string","description":"Object type","format":"object_type","const":"agent","x-format-description":"object_type"},"agent_id":{"type":"string","description":"ID of target object"}}},"api_key_object":{"type":"object","required":["type","key_id","name"],"properties":{"type":{"type":"string","description":"Object type","format":"object_type","const":"api_key","x-format-description":"object_type"},"key_id":{"type":"integer","format":"snowflake_id","example":6902558627475886000,"description":"Key Id","x-format-description":"snowflake_id"},"name":{"type":"string","description":"User provided name, e.g. the name of your application.","example":"middleware deploy key"}}},"disk_file_object":{"type":"object","required":["type","subpath"],"properties":{"type":{"type":"string","description":"Object type","format":"object_type","const":"disk_file","x-format-description":"object_type"},"subpath":{"type":"string","description":"Subpath to the file or directory in the storage.","example":"bunny.mp4"}}},"stream_object":{"type":"object","required":["type","name","title"],"properties":{"type":{"type":"string","description":"Object type","format":"object_type","const":"stream","x-format-description":"object_type"},"name":{"type":"string","format":"media_name","description":"Globally unique stream name.","x-primary-key":true,"example":"hockey1","x-format-description":"media_name"},"title":{"type":"string","nullable":true,"example":"Hockey channel","description":"Last known user provided title of the stream."}}},"vod_object":{"type":"object","required":["type","prefix"],"properties":{"type":{"type":"string","description":"Object type","format":"object_type","const":"vod","x-format-description":"object_type"},"prefix":{"type":"string","description":"The unique name of VOD location.\\nIt is used as a prefix for playing VOD files in this location.\\n","format":"media_name","example":"movies","x-format-description":"media_name"}}},"project_object":{"type":"object","required":["type","project_id","name"],"properties":{"type":{"type":"string","description":"Object type","format":"object_type","const":"project","x-format-description":"object_type"},"project_id":{"type":"integer","format":"snowflake_id","example":6902558627475886000,"description":"Project Id","x-format-description":"snowflake_id"},"name":{"type":"string","description":"Encoded ID, used as Project ID for external requests.","example":"aBc"}}},"cloud_usages_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"usages":{"items":{"$ref":"#/components/schemas/cloud_usage"},"type":"array","description":"List of fetched according to query parameters usage reports"},"prices":{"items":{"$ref":"#/components/schemas/cloud_price"},"type":"array","description":"List of prices used for reported usages"}}}]},"cloud_usage":{"allOf":[{"type":"object","properties":{"datetime":{"type":"string","format":"date_time","description":"Measurement date and time","example":"2021-01-30T08:30:00Z","x-format-description":"date_time"},"project_id":{"type":"string","format":"base62","example":"aBc","description":"project id","x-format-description":"base62"},"price_id":{"type":"integer","format":"snowflake_id","example":1479629459169476600,"description":"price id","x-format-description":"snowflake_id"},"media":{"type":"string","example":"aBc-xYz","description":"Stream or VOD file name including project id as prefix"},"title":{"description":"User provided title of the stream.","type":"string","nullable":true,"example":"Hockey channel"}}}]},"cloud_price":{"allOf":[{"$ref":"#/components/schemas/cloud_price_base"}]},"cloud_price_base":{"type":"object","properties":{"price_id":{"type":"integer","format":"snowflake_id","example":1479629459169476600,"description":"price id","x-format-description":"snowflake_id"}},"required":["price_id"]},"cloud_hostnames":{"type":"array","items":{"type":"string"}},"sessions_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"sessions":{"type":"array","description":"List of fetched sessions according to query parameters.","items":{"$ref":"#/components/schemas/session"}}}}]},"event_sinks_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"event_sinks":{"description":"The configuration of event notifications.","type":"array","items":{"$ref":"#/components/schemas/event_sink_config"}}}}]},"vods_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"vods":{"description":"Configurations of the VODs.","type":"array","items":{"$ref":"#/components/schemas/vod_config"}}}}]},"disk_files_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"files":{"description":"The list of VOD files.","type":"array","items":{"$ref":"#/components/schemas/disk_file"}}}}]},"program_id":{"type":"integer","minimum":1,"maximum":65535,"x-notice":"mpegts program number"},"iso8601":{"type":"integer","x-notice":"2016-07-08T09:04:46Z"},"psi_version":{"type":"integer","minimum":0,"maximum":31},"auth_token":{"type":"string","format":"auth_token","default":"token","example":"token","description":"Configure key name of query string key-value pair for token authentication\\n","x-format-description":"auth_token"},"ad_inserted_splice":{"discriminator":{"propertyName":"type","mapping":{"scte35_splice_insert_out":"#/components/schemas/ad_inserted_scte35_insert_out","scte35_splice_insert_in":"#/components/schemas/ad_inserted_scte35_insert_in","scte35_binary":"#/components/schemas/ad_inserted_scte35_binary"}},"oneOf":[{"$ref":"#/components/schemas/ad_inserted_scte35_insert_out"},{"$ref":"#/components/schemas/ad_inserted_scte35_insert_in"},{"$ref":"#/components/schemas/ad_inserted_scte35_binary"}]},"ad_inserted_scte35_insert_out":{"description":"SCTE35 splice_insert (out=true) splice to be inserted to a stream\\n","type":"object","properties":{"type":{"description":"Advertisement splice type","type":"string","const":"scte35_splice_insert_out"},"id":{"description":"splice_event_id field","type":"integer","example":123545},"offset":{"description":"Optional offset (in milliseconds) that can be added to the advertisement presentation timestamp (PTS) of advertisement splice\\n","type":"integer","format":"milliseconds","example":0,"x-format-description":"milliseconds"},"schedule_at":{"description":"The splice will be inserted as close to the specified time as possible.","type":"integer","format":"utc_ms","example":1732627020220,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"duration":{"description":"Optional advertisement duration","type":"integer","format":"milliseconds","example":17000,"x-format-description":"milliseconds"}},"required":["type","id"]},"ad_inserted_scte35_insert_in":{"description":"SCTE35 splice_insert (out=false) to be inserted to a stream\\n","type":"object","properties":{"type":{"description":"Advertisement splice type","type":"string","const":"scte35_splice_insert_in"},"id":{"description":"splice_event_id field","type":"integer","example":123545},"offset":{"description":"Optional offset (in milliseconds) that can be added to the advertisement presentation timestamp (PTS) of advertisement splice\\n","type":"integer","format":"milliseconds","example":0,"x-format-description":"milliseconds"},"schedule_at":{"description":"The splice will be inserted as close to the specified time as possible.","type":"integer","format":"utc_ms","example":1732627020220,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000}},"required":["type","id"]},"ad_inserted_scte35_binary":{"description":"SCTE35 binary to be inserted to a stream\\n","type":"object","properties":{"type":{"description":"Advertisement splice type","type":"string","const":"scte35_binary"},"base64":{"description":"SCTE35 binary in base64 format","type":"string","format":"base64","x-format-description":"base64"}},"required":["type","base64"]},"ad_placement":{"type":"string","oneOf":[{"title":"Preroll","const":"preroll","description":"Path to the pre-roll video file (in VOD) to be shown before the main video."},{"title":"Midroll","const":"midroll","description":"Path to the mid-roll video file (in VOD) to be shown during the video according to the ad markers."}],"description":"The advertising placement type."},"dvr_export_job":{"description":"DVR export job","type":"object","properties":{"id":{"description":"Job ID","type":"string","format":"uuid","example":"3c448252-2516-4950-a1f6-fa2c7e8f4cb1","x-format-description":"uuid"},"name":{"description":"Source stream name","type":"string","example":"demo"},"from":{"description":"Beginning of the range to export","type":"integer","format":"utc_ms","example":1730205876000,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"duration":{"description":"Duration of the range to export","type":"integer","format":"milliseconds","example":4200000,"x-format-description":"milliseconds"},"path":{"description":"Destination file path","examples":{"local":{"value":"/home/example/file.mp4"},"s3":{"value":"s3://example.com/bucket/path/to/file.mp4"}},"type":"string"},"packing":{"description":"How to pack a recording data in the exported file","oneOf":[{"type":"string","const":"fragmented","description":"Make a fragmented MP4.\\nThis allows a download to start with a minimal delay.\\nThe resulting file may be not playable by some old players.\\n"},{"type":"string","const":"compat","description":"Construct a traditional MP4 file.\\nThis may require a significant time to start (especially with large `duration`)\\nbut the resulting file is compatible with all players.\\n"}],"default":"fragmented","example":"compat"},"timelapse":{"description":"Request a timelapse instead of normal speed","oneOf":[{"type":"string","const":true},{"type":"integer","format":"milliseconds","x-format-description":"milliseconds"}]},"timelapse_kbps":{"description":"Custom bitrate for timelapse","type":"integer","example":3000},"started_at":{"description":"When this job was started","type":"number","format":"utc_ms","example":1730479930721,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"finished_at":{"description":"When this job finished (successfully or not)","type":"number","format":"utc_ms","example":1730479931103,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000},"status":{"description":"Status of this job","oneOf":[{"type":"string","const":"running","description":"The job is currently running"},{"type":"string","const":"succeeded","description":"The job has finished successfully"},{"type":"string","const":"failed","description":"The job has encountered an error"},{"type":"string","const":"canceled","description":"The job has been canceled by user"}]},"error":{"description":"when status=\'failed\' this field contains a reason for failure","type":"string","example":"no_dvr"}},"required":["name","from","duration","path"]},"dvr_export_job_list":{"type":"object","properties":{"jobs":{"description":"List of known DVR jobs","type":"array","items":{"$ref":"#/components/schemas/dvr_export_job"}}}},"dvr_consistency_errors":{"description":"Errors found during DVR consistency checks","type":"object","properties":{"name":{"description":"stream name","type":"string","example":"demo"},"errors":{"description":"List of errors found during checks","type":"array","items":{"type":"object","properties":{"failed_check":{"description":"Name of the check that raised this error","type":"string","example":"blob_coherence"},"details":{"description":"Arbitrary details that can help to understand the problem","type":"object","additionalProperties":{"type":"string"}}}}}}},"multiplexer_stats":{"type":"object","properties":{"payload":{"description":"The payload bytes count.","type":"integer","format":"bytes","openmetrics_metric":"multiplexer_payload","x-metric-type":"counter","x-format-description":"bytes"},"encoded":{"description":"The encoded bytes count.","type":"integer","format":"bytes","openmetrics_metric":"multiplexer_encoded","x-metric-type":"counter","x-format-description":"bytes"},"fillers":{"description":"The filler packets count.","type":"integer","openmetrics_metric":"multiplexer_fillers","x-metric-type":"counter"},"stuffing":{"description":"The stuff packets count.","type":"integer","openmetrics_metric":"multiplexer_stuffing","x-metric-type":"counter"},"trimmed_bytes":{"description":"The trimmed bytes count.","type":"integer","format":"bytes","openmetrics_metric":"multiplexer_trimmed_bytes","x-metric-type":"counter","x-format-description":"bytes"},"trimmed_frames":{"description":"The trimmed frames count.","type":"integer","openmetrics_metric":"multiplexer_trimmed_frames","x-metric-type":"counter"},"ts_overflow":{"description":"Is TS overflowed. True if no stuffing at last time.","type":"boolean"}}},"template_config":{"allOf":[{"$ref":"#/components/schemas/template_config_specific"},{"$ref":"#/components/schemas/stream_config_base"},{"$ref":"#/components/schemas/stream_config_input"},{"$ref":"#/components/schemas/stream_config_media"},{"$ref":"#/components/schemas/stream_config_onpremises"},{"$ref":"#/components/schemas/stream_config_deprecated"}]},"template_config_specific":{"type":"object","properties":{"name":{"type":"string","format":"media_name","description":"Globally unique template name.","x-primary-key":true,"x-format-description":"media_name"},"prefixes":{"description":"List of prefixes that will be used to create dynamic names for published streams. \\nA template creates one publishing point with one or more publishing locations, depending on the number of prefixes you define. \\nAll settings within the template with prefixes apply to the streams published under the name of the prefixes. \\nYou can also specify an empty prefix (`\\"\\"`) to publish a stream with any prefix or even without a prefix. \\n","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/configure-similar-streams-with-templates/#stream-templates-page-prefixes"},"items":{"type":"string","format":"media_name","x-format-description":"media_name"},"type":"array","example":["chats",""]}}},"network_port_range":{"type":"object","properties":{"first":{"allOf":[{"$ref":"#/components/schemas/network_port"}],"description":"First port in the range","example":10001},"last":{"allOf":[{"$ref":"#/components/schemas/network_port"}],"description":"Last port in the range","example":10099}},"required":["first","last"]},"listen_rtmps_config":{"allOf":[{"$ref":"#/components/schemas/listen_config"},{"$ref":"#/components/schemas/listen_ssl_config"}]},"listen_rtsps_config":{"allOf":[{"$ref":"#/components/schemas/listen_config"},{"$ref":"#/components/schemas/listen_ssl_config"}]},"listen_srt_config":{"allOf":[{"$ref":"#/components/schemas/srt_direction"},{"$ref":"#/components/schemas/listen_port_range_config"}]},"listen_port_range_config":{"type":"object","properties":{"address":{"type":"string","description":"Network address that will be used for listening.","example":"10.0.35.1"},"ports":{"description":"The range of ports that will be listened.","allOf":[{"$ref":"#/components/schemas/network_port_range"}]}},"required":["ports"]},"cluster_ingest_config":{"type":"object","properties":{"capture_at":{"description":"Preferred server to run the main stream on.","type":"string"}}},"srt_direction":{"type":"object","properties":{"mode":{"description":"The type of SRT sessions expected for the port.","enum":["play","publish"],"type":"string"}},"required":["mode"]},"transponder_push":{"properties":{"url":{"description":"Push URL for the MPTS stream. Usually it is a `udp://` multicast address and port.\\n","type":"string"},"multicast_loop":{"description":"The multicast socket option that enables ingesting the sent data back to the transponder.\\nUse for test purposes, e.g. if the same server creates MTPS and splits MPTS to separate programs.\\n","type":"boolean","default":true},"tos":{"description":"ToS byte in the IP packages of the multicasted data.","type":"integer","default":0},"depth_limit":{"description":"Maximum allowable duration of the file. For push to `file://` only.","type":"integer","x-private":true},"pkt_limit":{"description":"Maximum allowable number of 188-byte TS packages in the file. For push to `file://` only.","type":"integer","x-private":true},"standby":{"description":"Monitoring multicast group and stop pushing if another publisher presented","type":"boolean"},"stats":{"description":"Detailed runtime information about the push.","allOf":[{"$ref":"#/components/schemas/push_counters"}],"readOnly":true},"v":{"description":"This option allows to enable non-default, probably experimental, version of udp pusher.","x-private":true,"type":"string","enum":["timed"]},"bind_to_core":{"description":"Timed pusher option. CPU core to bind sending thread to. Will not bind by default.","x-private":true,"type":"integer"},"timed_wait":{"description":"Timed pusher option. How to wait to send a packet.","x-private":true,"type":"string","enum":["sleep","busy"]}},"required":["url"],"type":"object"},"ts_descriptor":{"type":"object","properties":{"tag":{"type":"integer","description":"Identifier of the descriptor."},"hex":{"type":"string","format":"hexbinary","description":"Descriptor data.","x-format-description":"hexbinary"}},"required":["tag","hex"]},"ts_timeouts":{"type":"object","properties":{"service_type":{"type":"integer","description":"The type of the program."},"media_info":{"type":"integer","description":"The timeout value."}}},"ts_service_type":{"anyOf":[{"type":"integer"},{"type":"string","enum":["none","digital_tv","digital_radio","teletext","nvod_reference","nvod_shifted","mosaic","fm_radio","dvb_srm","digital_radio_aac","mosaic_avc","data","common_interface","rcs_map","rcs_fls","dvb_mhp","digital_tv_mpeg2_hd","digital_tv_avc_sd","nvod_shifted_avc_sd","nvod_reference_avc_sd","digital_tv_avc_hd","digital_tv_avc_stereo_hd","nvod_shifted_avc_stereo_hd","nvod_reference_avc_stereo_hd","digital_tv_hevc","digital_tv_hevc_uhd"]}]},"ts_versions":{"type":"object","properties":{"psi":{"description":"Global version for all PSI tables.","allOf":[{"$ref":"#/components/schemas/psi_version"}]},"pat":{"description":"The version of PAT table.","allOf":[{"$ref":"#/components/schemas/psi_version"}]},"pmt":{"description":"The version of PMT table.","allOf":[{"$ref":"#/components/schemas/psi_version"}]},"nit":{"description":"The version of NIT table.","allOf":[{"$ref":"#/components/schemas/psi_version"}]},"sdt":{"description":"The version of SDT table.","allOf":[{"$ref":"#/components/schemas/psi_version"}]},"cat":{"description":"The version of CAT table.","allOf":[{"$ref":"#/components/schemas/psi_version"}]}}},"transponder_time_offset":{"type":"object","required":["country"],"properties":{"country":{"description":"The country code.","type":"string"},"region":{"description":"The region code.","type":"integer"},"time_of_change":{"description":"Date and time when the time change takes place.","allOf":[{"$ref":"#/components/schemas/iso8601"}]},"local_time_offset":{"description":"The current offset time from UTC.","type":"string"},"next_time_offset":{"description":"The next offset time after the change.","type":"string"}}},"ts_eit_intervals":{"type":"object","properties":{"actual":{"description":"Period for the actual transponder.","type":"integer"},"other":{"description":"Period for the other transponder.","type":"integer"}}},"transponder_eit":{"type":"object","properties":{"sources":{"description":"List of epg sources\\n","items":{"allOf":[{"$ref":"#/components/schemas/epg_source"}]},"type":"array","x-private":true},"max_bitrate":{"description":"Maximum bitrate for the transponder\'s EIT EPG.","type":"integer","format":"max_bitrate","x-format-description":"max_bitrate"},"xmltv_url":{"description":"Directory for storing the XMLTV EPG files.","type":"string","example":"xmltv_dir"},"keep_epg":{"description":"Period for storing the XMLTV files.","type":"integer","format":"seconds","x-format-description":"seconds"},"intervals_pf":{"description":"Periods for sending the present/following events.","allOf":[{"$ref":"#/components/schemas/ts_eit_intervals"}]},"intervals_schedule":{"description":"Periods for sending the event schedules.","allOf":[{"$ref":"#/components/schemas/ts_eit_intervals"}]}}},"transponder_program":{"type":"object","properties":{"program_id":{"description":"Identifier of the program within the transponder.","allOf":[{"$ref":"#/components/schemas/program_id"}],"x-primary-key":true,"openmetrics_label":"program_id"},"source":{"description":"The stream that is in use as the program source.","type":"string","format":"media_name","openmetrics_label":"source","example":"hockey1","x-format-description":"media_name"},"lcn":{"description":"Logical channel number.","type":"integer","example":5},"service_type":{"description":"Information about the program type.","allOf":[{"$ref":"#/components/schemas/ts_service_type"}],"example":"digital_tv"},"title":{"description":"The program title.","type":"string","example":"ProgramTitle"},"pids":{"description":"The list of PIDs.","allOf":[{"$ref":"#/components/schemas/output_mpegts_pids"}]},"eit_title":{"description":"The name of the EIT.","type":"string","example":"EIT_Title"}},"required":["program_id"]},"transponder_config":{"type":"object","required":["name"],"properties":{"name":{"description":"The name of the transponder.","type":"string","format":"media_name","x-primary-key":true,"readOnly":true,"openmetrics_label":"name","example":"multiplexer","x-format-description":"media_name"},"pushes":{"description":"The list of pushes for the transponder.","items":{"allOf":[{"$ref":"#/components/schemas/transponder_push"}]},"type":"array"},"bitrate":{"description":"Transponder bitrate.","type":"integer","format":"speed","x-format-description":"speed"},"provider":{"description":"Provider of the transponder.","type":"string","example":"Example Provider"},"network_name":{"description":"The name of the TV network.","type":"string","example":"Example Network"},"ts_stream_id":{"description":"The identifier of the transport stream for the transponder.","type":"integer"},"network_id":{"description":"Identifier of the delivery network.","type":"integer"},"original_network_id":{"description":"Identifier of the original delivery network. The same original network is used for NIT and SDT.","type":"integer"},"ts_descriptors":{"description":"The list of transport stream descriptors. Descriptors are added to NIT and SDT.","items":{"allOf":[{"$ref":"#/components/schemas/ts_descriptor"}]},"type":"array","default":[]},"timeouts":{"description":"The list of timeouts for autodetect of provider, title, and service_type of the programs.\\n","allOf":[{"$ref":"#/components/schemas/ts_timeouts"}]},"programs":{"description":"The list of programs in the transponder.","items":{"allOf":[{"$ref":"#/components/schemas/transponder_program"}]},"type":"array"},"time_offsets":{"description":"The list of time offsets.","items":{"allOf":[{"$ref":"#/components/schemas/transponder_time_offset"}]},"type":"array","default":[]},"versions":{"description":"Versions of PSI tables.","allOf":[{"$ref":"#/components/schemas/ts_versions"}]},"others":{"description":"The list of other transponders on the network.","items":{"allOf":[{"$ref":"#/components/schemas/transponder_other"}]},"type":"array","default":[]},"eit":{"description":"Transponder\'s program guide in EIT format.","allOf":[{"$ref":"#/components/schemas/transponder_eit"}]},"video_buffer":{"description":"The size of the video buffer for the transponder.","type":"integer"},"prebuffer":{"description":"The length of multiplexer input buffer.\\nThe higher value makes the multiplexer more robust to non-uniform inputs.\\nThe lower value reduces input-to-output latency, but requires more stable bitrate (CBR) on input.\\n","format":"milliseconds","default":300,"example":800,"type":"integer","x-format-description":"milliseconds"},"stats":{"description":"Detailed runtime information about the multiplexer.","allOf":[{"$ref":"#/components/schemas/multiplexer_stats"}],"readOnly":true}}},"transponder_other":{"type":"object","properties":{"name":{"description":"The name of the other transponder on the network.","type":"string","format":"media_name","x-primary-key":true,"readOnly":true,"x-format-description":"media_name"}},"required":["name"]},"epg_source":{"type":"object","properties":{"url":{"description":"URL of the epg source.\\n","type":"string","examples":{"stream":{"value":"copy://local_stream_name"}}}}},"balancer_config":{"type":"object","properties":{"name":{"type":"string","format":"media_name","description":"Globally unique balancer name.","readOnly":true,"x-primary-key":true,"x-format-description":"media_name"},"servers":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/balancer_server_config"}]},"description":"Balancer will distribute requests between these servers."},"peers":{"description":"Configuration of the peers.","type":"array","items":{"allOf":[{"$ref":"#/components/schemas/peer_config"}]},"deprecated":true,"x-delete-at":23.09},"mode":{"description":"Balancing mode","type":"string","default":"bitrate","oneOf":[{"title":"Usage","const":"usage","description":"Bandwidth usage"},{"title":"Clients","const":"clients","description":"Total clients number"},{"title":"Bitrate","const":"bitrate","description":"Total output bitrate"},{"title":"Streams","const":"streams","description":"Streams number"}]}}},"balancer_server_config":{"type":"object","properties":{"name":{"type":"string","description":"Hostname of the peer. Can refer to globally defined peer.","x-primary-key":true,"readOnly":true},"max_bitrate":{"type":"integer","format":"speed","description":"Maximum allowed bitrate, request is redirecting if current bitrate is lower.","x-format-description":"speed"},"countries":{"type":"array","items":{"type":"string","format":"iso3166","x-format-description":"iso3166"},"description":"Client will be redirected to the peer if its IP belongs to one of these countries."},"countries_default":{"type":"boolean","default":false,"description":"This flag allows to redirect a request to this peer if \\"countries\\" list not matched."}}},"source_config":{"allOf":[{"$ref":"#/components/schemas/source_specific_config"},{"$ref":"#/components/schemas/stream_config_media"},{"$ref":"#/components/schemas/stream_config_onpremises"}]},"source_group_config":{"type":"object","properties":{"name":{"description":"Tha name of the source group.","type":"string","format":"group_name","x-format-description":"group_name"},"on_play":{"description":"Path to auth backend, either HTTP URL or path to script on disk. Play sessions only.","allOf":[{"$ref":"#/components/schemas/auth_spec"}]},"cache":{"description":"Cache configuration.","allOf":[{"$ref":"#/components/schemas/cache_spec"}]},"segment_duration":{"description":"The time, in seconds, of the segment duration. Used for the protocols like HLS or DASH. \\n","allOf":[{"$ref":"#/components/schemas/segment_duration"}]},"dvr":{"description":"DVR configuration.","allOf":[{"$ref":"#/components/schemas/stream_dvr_spec"}]}}},"source_specific_config":{"type":"object","properties":{"url":{"description":"URL and port of the remote server to get streams from.","type":"string","format":"hostport","x-primary-key":true,"pattern":"^(m4f:|m4fs:|m4s:|m4ss:).+","x-format-description":"Hostname with port"},"prefix":{"description":"The prefix used for the streams on the remote server from which the peer gets them.\\n","type":"string","format":"media_name","x-format-description":"media_name"},"stats":{"description":"Statistics of the peer.","allOf":[{"$ref":"#/components/schemas/peer_stats"}]},"only":{"description":"White list of streams. \\nThe items of the array may be individual stream names or values like `prefix/*`\\nwhich stands for all streams with the given prefix.\\n","type":"array","items":{"type":"string","format":"media_name","x-format-description":"media_name"}},"except":{"description":"Black list of streams. Higher priority than `only`.","type":"array","items":{"type":"string","format":"media_name","x-format-description":"media_name"}},"group_config":{"description":"Configuration applied to the specific group of streams (all or limited by `only` and `except`) received from the sources.","type":"object","additionalProperties":{"$ref":"#/components/schemas/source_group_config"},"x-key-type":"string"},"cluster_key":{"description":"Cluster ingest stream key.","type":"string"}}},"logo_file":{"type":"object","properties":{"name":{"type":"string","description":"The logo name."},"stream_names":{"description":"List of streams that use this logo","type":"array","items":{"type":"string"},"default":[],"readOnly":true},"content":{"description":"Payload of this logo","type":"string","format":"byte","x-format-description":"byte"},"content_type":{"description":"Content type of this logo. Calculated from file name extension\\n","type":"string","readOnly":true}}},"dvb_card_config":{"type":"object","properties":{"name":{"description":"DVB card name.","type":"string","format":"dvb_card_name","x-primary-key":true,"readOnly":true,"openmetrics_label":"name","example":"a16","x-format-description":"dvb_card_name"},"hw":{"description":"Adapter card hardware type.","type":"string","enum":["dvb","dektec_asi","record_input","resi","tbs6014"],"example":"dvb"},"system":{"description":"Adapter type. Different systems are supported besides DVB, as the configuring is similar.","type":"string","enum":["dvbs","dvbs2","dvbt","dvbt2","dvbca","dvbcb","dvbcc","atsc","isdbt"]},"adapter":{"description":"Adapter number.","type":"integer","example":16},"device":{"description":"Modulator number in adapter.","type":"integer"},"frontend":{"description":"Frontend number.","type":"integer"},"frequency":{"description":"The carrier frequency of the transponder for this channel, in Hz.","type":"integer","example":11606},"symbol_rate":{"description":"The symbol rate of the transponder, in symbols per second.\\nA symbol is a pulse in digital baseband transmission.\\n","type":"integer","example":27500},"int_freq":{"description":"Base frequency, in MHz.","type":"integer"},"high_band":{"description":"Whether high frequency band is used.","type":"boolean"},"polarization":{"description":"Polarization of the transponder for this channel. \\nThe supported values are: \\n\\n * `v`- vertical linear polarization, \\n * `h` - horizontal linear polarization, \\n * `r` - right-hand circular polarization, \\n * `l` - left-hand circular polarization.\\n","type":"string","enum":["v","h","r","l"],"example":"v"},"hierarchy":{"description":"Constellation ratio for hierarchical transmission.\\n","externalDocs":{"description":"Find more information here","url":"https://dvb.org/wp-content/uploads/2019/12/a012_dvb-t_june_2015.pdf"},"type":"string","enum":["1","2","4","none","auto"]},"transmission_mode":{"description":"DVB transmission mode.","type":"string","enum":["1k","2k","8k","16k","32k","c1","c3780"]},"guard_interval":{"description":"The mode of inserting a guard interval - a padding separating transmissions so that they do not interfere with each other.\\n","type":"string","enum":["1_128","1_32","1_16","1_8","1_4","19_128","19_256","pn420","pn595","pn945"],"example":"1_16"},"pilot":{"description":"Enable, disable, or autodetect pilot tones.\\n","type":"string","enum":["auto","on","off"],"example":"auto"},"rolloff":{"description":"Rolloff factor, in %.\\nIt is used to estimate bandwidth, together with symbol rate.\\n","type":"string","enum":["35","25","20"]},"bandwidth":{"description":"Bandwidth, in Hz.","type":"integer","enum":[1712000,5000000,6000000,7000000,8000000,10000000],"example":6000000},"code_rate_lp":{"description":"Low priority stream code rate.","allOf":[{"$ref":"#/components/schemas/dvb_fec"}]},"code_rate_hp":{"description":"High priority stream code rate.","allOf":[{"$ref":"#/components/schemas/dvb_fec"}]},"modulation":{"description":"DVB-C modulation method.","type":"string","enum":["auto","qpsk","qam16","qam32","qam64","qam128","qam256","qam_auto","psk8","apsk16","apsk32","vsb8","vsb16","dqpsk","qam4nr"],"example":"auto"},"disabled":{"description":"Whether this DVB card is disabled.","type":"boolean","example":false},"comment":{"description":"Any text comment.","type":"string"},"stats":{"description":"Statistic information about the captured signal.","allOf":[{"$ref":"#/components/schemas/dvb_card_stats"}]},"serial":{"description":"Serial number of the card, used for capturing from DekTec ASI cards.","type":"integer"},"port":{"description":"Port number, used for capturing from DekTec ASI cards.","type":"integer"},"asi_annex":{"description":"The EN 50083-9 Annex followed by the DVB card.","x-private":true,"type":"string","oneOf":[{"title":"Annex A","const":"a","description":"Synchronous Serial Interface (SSI)."},{"title":"Annex B","const":"b","description":"Asynchronous Serial Interface (ASI)."},{"title":"Annex C","const":"c","description":"SSI clock and data recovery."}]},"asi_isdbt_segments":{"description":"The number of segments in a stream.","x-private":true,"type":"string","enum":["1","3","13"]},"asi_isdbt_subchannel":{"description":"Sub channel of the center segment of the spectrum, which implicitly specifies the sub-channels of the 1-segment streams in the signal. \\nThe valid range is 0 … 41.\\n","x-private":true,"type":"integer"},"asi_dvb2_streamid":{"description":"Stream-id for the generated T2-MI stream. The valid range is 0 … 7.","x-private":true,"type":"integer"},"asi_diseqcpg":{"description":"The last byte of DiSEqC switch port command.","x-private":true,"type":"string","enum":["f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"]},"asi_polarity":{"description":"Inversion of the DVB-ASI signal.","x-private":true,"type":"string","oneOf":[{"title":"Auto","const":"auto","description":"Automatically detect and correct the polarity."},{"title":"Normal","const":"normal","description":"Do not invert the DVB-ASI signal."},{"title":"Invert","const":"invert","description":"Invert DVB-ASI signal."}]},"asi_iqdem":{"description":"Modulation type.","x-private":true,"type":"string","enum":["qam","ofdm"]},"asi_iqbandwidth":{"description":"Channel raster of the network.","x-private":true,"type":"integer"},"asi_iqsamplerate":{"description":"I/Q sample rate in Hz.","x-private":true,"type":"integer"},"debug_stream":{"x-private":true,"description":"Configuration of recording the stream sessions data. Recommended for debugging needs **only**.","allOf":[{"$ref":"#/components/schemas/debug_stream_spec"}]},"compensate_time_drift_ppm":{"description":"Max source\'s internal clock drift to compensate, rounding to six decimal places.","type":"integer"},"plp_stream_id":{"description":"PLP stream selector. Used in DVB-T2.","type":"integer"},"attenuator":{"description":"Attenuation of the signal level. Takes values from 0 to 10.\\n","type":"integer"},"interleave":{"description":"Use interleaver.\\nThe interlaver disperses sequence of bits in bit stream to minimize effect of burst errors during transmission.\\n","type":"integer","minimum":0,"maximum":15},"gain":{"description":"Adjust the output gain to the specified value in dB.","type":"integer"},"input_bitrate":{"description":"Input bitrate, in Mbps.","type":"integer"},"video_device":{"description":"The video device to capture video from Stream Labs SDI/ASI cards.\\nIt is actually a path to a device file created on the disk by Video4Linux.\\n","type":"string","example":"/dev/video0"}},"required":["name"]},"dvb_card_stats":{"type":"object","properties":{"ber":{"description":"Bit error rate. It is the percent of bit errors from total number of transferred bits.\\n","type":"integer","example":5},"strength_raw":{"description":"Signal strength, as a raw 16-bit number received from DVB API.","type":"integer","example":62446},"strength":{"description":"Signal strength, in percent.","type":"integer","openmetrics_metric":"dvb_card_strength","x-metric-type":"gauge","example":95},"snr_raw":{"description":"Signal-noise ratio, as a raw 16-bit number received from DVB API. It is the ratio of signal power to the noise power.\\n","type":"integer","example":894},"snr":{"description":"Signal-noise ratio, in percent. It is the ratio of signal power to the noise power. \\n","type":"integer","example":1},"has_signal":{"description":"Whether a signal is detected above the normal noise level.","type":"boolean","example":true},"has_carrier":{"description":"Carrier detected in signal.","type":"boolean","example":true},"has_viterbi":{"description":"DVB signal was locked at Viterbi decoder stage.","type":"boolean","example":true},"has_sync":{"description":"Synchronization bytes detected.","type":"boolean","example":true},"has_lock":{"description":"DVB signal was successfully locked.","type":"boolean","example":true},"has_timedout":{"description":"The signal was not locked within the last about 2 seconds.","type":"boolean","example":false},"has_reinit":{"description":"The frontend was reinitialized, the application is recommended to reset DiSEqC, tone and parameters.\\n","type":"boolean","example":false},"has_rate":{"description":"Input rate is sufficient (900 bps or greater). Used for capturing from DekTec ASI cards.\\n","type":"boolean","example":true}}},"dvb_fec":{"type":"string","enum":["1_2","2_3","2_5","3_4","3_5","4_5","5_6","6_7","7_8","8_9","9_10"]},"decklink_card_id":{"oneOf":[{"type":"integer"},{"const":"test_fake","type":"string"}]},"decklink_config":{"type":"object","properties":{"name":{"description":"The Decklink card name.","allOf":[{"$ref":"#/components/schemas/decklink_card_id"}],"x-primary-key":true,"readOnly":true},"profile":{"description":"The Decklink card profile that allows choosing between input and output direction.","oneOf":[{"const":"one_full","description":"The `bmdProfileOneSubDeviceFullDuplex` mode."},{"const":"one_half","description":"The `bmdProfileOneSubDeviceHalfDuplex` mode."},{"const":"two_full","description":"The `bmdProfileTwoSubDevicesFullDuplex` mode."},{"const":"two_half","description":"The `bmdProfileTwoSubDevicesHalfDuplex` mode."},{"const":"four_half","description":"The `bmdProfileFourSubDevicesHalfDuplex` mode."}]}}},"streamer_event1":{"oneOf":[{"$ref":"#/components/schemas/server_starting"},{"$ref":"#/components/schemas/server_started"},{"$ref":"#/components/schemas/change_server_id"},{"$ref":"#/components/schemas/presence_connected"},{"$ref":"#/components/schemas/presence_disconnected"},{"$ref":"#/components/schemas/config_external_error"},{"$ref":"#/components/schemas/config_external_success"},{"$ref":"#/components/schemas/source_opened"},{"$ref":"#/components/schemas/source_connected"},{"$ref":"#/components/schemas/source_started"},{"$ref":"#/components/schemas/source_updated"},{"$ref":"#/components/schemas/source_closed"},{"$ref":"#/components/schemas/stream_opened"},{"$ref":"#/components/schemas/stream_updated"},{"$ref":"#/components/schemas/stream_closed"},{"$ref":"#/components/schemas/play_opened"},{"$ref":"#/components/schemas/play_started"},{"$ref":"#/components/schemas/play_updated"},{"$ref":"#/components/schemas/play_closed"},{"$ref":"#/components/schemas/push_opened"},{"$ref":"#/components/schemas/push_connected"},{"$ref":"#/components/schemas/push_started"},{"$ref":"#/components/schemas/push_updated"},{"$ref":"#/components/schemas/push_closed"},{"$ref":"#/components/schemas/push_blocked"},{"$ref":"#/components/schemas/push_restored"},{"$ref":"#/components/schemas/push_reconfigured"},{"$ref":"#/components/schemas/chassis_connected"},{"$ref":"#/components/schemas/chassis_disconnected"},{"$ref":"#/components/schemas/transcoder_device_insufficient_resources"},{"$ref":"#/components/schemas/webrtc_play_prober_timeout"},{"$ref":"#/components/schemas/webrtc_play_prober_wrong_interval"},{"$ref":"#/components/schemas/ad_injected"},{"$ref":"#/components/schemas/multiplexer_pid_on"},{"$ref":"#/components/schemas/multiplexer_pid_off"},{"$ref":"#/components/schemas/motion_started"},{"$ref":"#/components/schemas/motion_stopped"},{"$ref":"#/components/schemas/api_call_event"},{"$ref":"#/components/schemas/dvr_clean"},{"$ref":"#/components/schemas/dvr_drop_write"},{"$ref":"#/components/schemas/dvr_collapsed_write"},{"$ref":"#/components/schemas/dvr_export_finished"},{"$ref":"#/components/schemas/dvr_consistency_check_finished"}],"discriminator":{"propertyName":"event"}},"event_session":{"type":"object","properties":{"token":{"type":"string","format":"session_token","description":"Token provided by the client.","example":"zGAFxLkoWluO1pG7_nJmQAbCnM5","x-format-description":"session_token"},"duration":{"description":"Duration of the session.","type":"integer","format":"seconds","x-format-description":"seconds"},"referer":{"type":"string","format":"uri","description":"Referer HTTP header or its analog for other protocols.","example":"http://my-tv-portal.local/hockey1","x-format-description":"uri"},"user_agent":{"type":"string","format":"user_agent","description":"Client\'s user agent for selected protocol.","example":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML. like Gecko) Chrome/90.0.4430.72 Safari/537.36","x-format-description":"user_agent"},"query_string":{"type":"string","description":"Full query string of initial request of the session."}}},"event_play":{"type":"object","properties":{"country":{"description":"The country determined from the user\'s IP address.","type":"string"},"user_name":{"description":"User-provided original stream/VOD name.","type":"string"},"user_id":{"description":"User ID provided by the authorization backend like Middleware, your billing, or web portal.","type":"string"}}},"change_server_id":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Change the server ID."},"old":{"description":"The previous server ID.","type":"string"},"instance_id":{"description":"The instance ID.","type":"string"}}},{"$ref":"#/components/schemas/event_default"}]},"presence_connected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Presence connected."},"flush":{"description":"The number of flushes.","type":"integer"},"ip":{"description":"Presence server IP address.","type":"string"}}},{"$ref":"#/components/schemas/event_default"}]},"presence_disconnected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Presence disconnected."},"reason":{"description":"Reason for disconnecting from the presence server.","type":"string","x-atom":true},"ip":{"description":"Presence server IP address.","type":"string"}}},{"$ref":"#/components/schemas/event_default"}]},"config_external_error":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"External config is not valid."}}},{"$ref":"#/components/schemas/config_external_error_status"},{"$ref":"#/components/schemas/event_default"}]},"config_external_success":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"External config is successfully refreshed."}}},{"$ref":"#/components/schemas/event_default"}]},"source_opened":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Source opened."},"url":{"description":"The input (source) URL.","type":"string","format":"url","x-format-description":"url"},"priority":{"description":"The input priority.","type":"integer"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"source_connected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Source is connected"},"url":{"description":"The input (source) URL.","type":"string","format":"url","x-format-description":"url"},"priority":{"description":"The input priority.","type":"integer"},"status":{"type":"string","description":"Status","oneOf":[{"title":"Connecting","const":"connecting","description":"Connection is in progress"},{"title":"Connected","const":"connected","description":"Source is connected"},{"title":"Retrying","const":"retrying","description":"Retrying connection"},{"title":"Redirected","const":"redirected","description":"Redirection received from the source"},{"title":"Socket_connected","const":"socket_connected","description":"Socket is connected"},{"title":"Transport_connected","const":"transport_connected","description":"Transport is connected"}],"example":"socket_connected"},"while":{"type":"string","description":"The state of connection","example":"rtsp_setup"},"version":{"type":"string","description":"Protocol version (when applicable)"},"redirected_to":{"type":"string","description":"URL to which connection was redirected. The value is available only on \'redirected\' status. \\n"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"source_started":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Source started."},"url":{"description":"The input (source) URL.","type":"string","format":"url","x-format-description":"url"},"priority":{"description":"The input priority.","type":"integer"},"dts":{"description":"First frame DTS (Decoding Time Stamp).","type":"number"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"source_updated":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Source updated."},"url":{"description":"The input (source) URL.","type":"string","format":"url","x-format-description":"url"},"priority":{"description":"The input priority.","type":"integer"},"bitrate":{"description":"The input bitrate.","type":"number","format":"speed","x-format-description":"speed"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"source_closed":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Source closed."},"url":{"description":"The input (source) URL.","type":"string","format":"url","x-format-description":"url"},"priority":{"description":"The input priority.","type":"integer"},"bitrate":{"description":"The input bitrate.","type":"number","format":"speed","x-format-description":"speed"},"reason":{"description":"Reason for closing the source.","type":"object"},"limit":{"description":"Retry limit.","type":"integer"},"count":{"description":"Retry count.","type":"integer"},"client_count":{"description":"The number of clients.","type":"integer"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"stream_opened":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Stream opened."}}},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"stream_updated":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Stream updated."},"reason":{"description":"Reason for updating the stream.","type":"string","x-atom":true},"sub_id":{"description":"Sub-stream ID.","type":"string","format":"uuid","x-format-description":"uuid"},"sub_bytes":{"description":"The number of bytes sent in the sub-stream.","type":"integer","format":"bytes","x-format-description":"bytes"},"sub_opened_at":{"description":"The time when the sub-stream was created.","type":"integer","format":"milliseconds","x-format-description":"milliseconds"},"bytes_in":{"description":"The amount of stream data received.","type":"integer","format":"bytes","x-format-description":"bytes"},"bytes_out":{"description":"The amount of stream data sent to the clients.","type":"integer","format":"bytes","x-format-description":"bytes"}}},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"stream_closed":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Stream closed."},"reason":{"description":"Reason for closing the stream.","type":"string","x-atom":true},"bytes_out":{"description":"The number of bytes transmitted.","type":"integer","format":"bytes","x-format-description":"bytes"}}},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"play_opened":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Play session opened."}}},{"$ref":"#/components/schemas/event_play"},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"play_started":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Play session started."}}},{"$ref":"#/components/schemas/event_play"},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"play_updated":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Play session updated."}}},{"$ref":"#/components/schemas/event_play"},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"play_closed":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Play session closed."},"reason":{"description":"Reason for closing the play session.","type":"object"}}},{"$ref":"#/components/schemas/event_default"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/event_play"}]},"push_opened":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Push opened."},"url":{"description":"The push URL.","type":"string","format":"url","x-format-description":"url"},"retry_count":{"description":"The number of attempts to start pushing.","type":"integer"},"retry_limit":{"description":"The maximum number of attempts to push the stream.","type":"integer"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"push_connected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Push connected."},"url":{"description":"The push URL.","type":"string","format":"url","x-format-description":"url"},"status":{"description":"The push status.","type":"object"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"push_started":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Push started."},"url":{"description":"The push URL.","type":"string","format":"url","x-format-description":"url"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"push_updated":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Push updated."},"url":{"description":"The push URL.","type":"string","format":"url","x-format-description":"url"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"push_closed":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Push closed."},"url":{"description":"The push URL.","type":"string","format":"url","x-format-description":"url"},"reason":{"description":"Reason for closing the push.","type":"object"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"push_blocked":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Push blocked."},"url":{"description":"The push URL.","type":"string","format":"url","x-format-description":"url"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"push_restored":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Push restored."},"url":{"description":"The push URL.","type":"string","format":"url","x-format-description":"url"}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"push_reconfigured":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Push reconfigured."},"url":{"description":"The push URL.","type":"string","format":"url","x-format-description":"url"},"options":{"description":"Changed options list.","type":"array","items":{"type":"string"}}}},{"$ref":"#/components/schemas/event_session"},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"chassis_connected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Chassis is connected."},"node":{"description":"The node name.","type":"string","x-atom":true}}},{"$ref":"#/components/schemas/event_default"}]},"chassis_disconnected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Chassis is disconnected."},"node":{"description":"The node name.","type":"string","x-atom":true}}},{"$ref":"#/components/schemas/event_default"}]},"transcoder_device_insufficient_resources":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"description":"No resources to autodistribute","type":"string"},"deviceid":{"description":"Transcoder module ID in Flussonic Coder.","type":"integer"},"reason":{"description":"One of the two reasons for the event: `manual_resource_allocation` or `auto_resource_allocation`.\\nThe first one is a warning, the second one is an error.\\n","type":"string"},"decoder":{"type":"boolean","description":"Decoder overload indicator","x-private":true},"encoder":{"type":"boolean","description":"Encoder overload indicator","x-private":true},"resize":{"type":"boolean","description":"Resize overload indicator","x-private":true},"audio":{"type":"boolean","description":"Audio transcoder overload indicator","x-private":true}}},{"$ref":"#/components/schemas/event_default"}]},"webrtc_play_prober_timeout":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"WebRTC Play Prober timeout"}}},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"webrtc_play_prober_wrong_interval":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"WebRTC Play Prober wrong interval"},"direction":{"description":"Shows if the problem occurs when sending or receiving the `probe` packets.","type":"string","enum":["sending","receiving"]},"value":{"description":"The interval value that is wrong.","type":"integer"}}},{"$ref":"#/components/schemas/session_generic"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"ad_injected":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Advertisement injected."},"path":{"type":"string","description":"The path to the advertising file in a VOD location."},"placement":{"allOf":[{"$ref":"#/components/schemas/ad_placement"}]},"duration":{"type":"integer","format":"seconds","description":"Duration of injected advertising.","x-format-description":"seconds"},"midroll_insert_by":{"type":"string","enum":["interval","splicing"],"description":"When to perform midrolls.\\nIf your stream has SCTE35 or SCTE104 you may opt to use them.\\nBy default ads are inserted on regular intervals\\n"},"program_id":{"type":"integer","description":"SCTE-35 or SCTE-104 markers program_id if set by `midroll_program_id`.","example":1},"session_id":{"type":"string","format":"uuid","description":"Unique identifier (or UUID) of the session.","example":"61942414-8c15-4809-8bb6-adf1ae846027","x-format-description":"uuid"},"dts":{"type":"integer","format":"utc_ms","description":"First advertising keyframe\'s DTS","example":1655362349383,"x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000}}},{"$ref":"#/components/schemas/event_default"},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_play"}]},"multiplexer_pid_on":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Pid is added to the output multiplexed stream"}}},{"$ref":"#/components/schemas/event_default"},{"$ref":"#/components/schemas/event_media"}]},"multiplexer_pid_off":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"Pid is dropped from the output multiplexed stream"},"reason":{"description":"Reason for dropping the PID.","type":"string","x-atom":true}}},{"$ref":"#/components/schemas/event_default"},{"$ref":"#/components/schemas/event_media"}]},"dvr_clean":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"The dvr clean occured.","const":"dvr_clean"},"episodes_count":{"type":"integer","minimum":0,"description":"The total count of all deleted episodes."},"episodes_duration":{"description":"The total duration of all deleted episodes.","type":"integer","minimum":0}}},{"$ref":"#/components/schemas/dvr_config"},{"$ref":"#/components/schemas/event_default"}]},"dvr_drop_write":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"The dvr drop write occured.","const":"dvr_drop_write"},"duration":{"type":"integer","description":"Dropped duration in milliseconds."},"path":{"type":"string","description":"Segment disk path which dropped."}}},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"dvr_collapsed_write":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"The dvr collapsed write occured.","const":"dvr_collapsed_write"},"duration":{"type":"integer","description":"Collapsed duration in milliseconds."},"count":{"type":"integer","description":"Segments count which collapsed."}}},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"}]},"dvr_export_finished":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"DVR export operation finished","const":"dvr_export_finished"}}},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"},{"$ref":"#/components/schemas/dvr_export_job"}]},"dvr_consistency_check_finished":{"allOf":[{"type":"object","required":["event"],"properties":{"event":{"type":"string","description":"A DVR consistency check finished","const":"dvr_consistency_check_finished"}}},{"$ref":"#/components/schemas/event_media"},{"$ref":"#/components/schemas/event_default"},{"$ref":"#/components/schemas/dvr_consistency_errors"}]},"cache_config":{"type":"object","required":["name"],"properties":{"name":{"type":"string","format":"cache_name","description":"Globally unique cache name.","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/scale-vod-playback-with-ssd-cache/"},"x-primary-key":true,"readOnly":true,"example":"cache1","x-format-description":"cache_name"},"path":{"description":"The path where the files from the cloud or HTTP are cached to speed up broadcasting.","type":"string","format":"disk_path","example":"/storage/cache","x-format-description":"disk_path"},"misses":{"description":"The number of requests necessary for a file to be cached.","type":"integer","example":3},"storage_limit":{"description":"Maximum disk consumption in bytes. \\nWhen this limit is reached, the oldest files will be overridden by later files.\\n","type":"integer","format":"bytes","example":400000,"x-format-description":"bytes"},"expiration":{"description":"A period (in seconds) back from the current moment during which the files are stored.\\nAs time goes, the files which are older than this period are being overridden by the later files.\\n","type":"integer","format":"seconds","example":604800,"x-format-description":"seconds"}}},"web_script_config":{"type":"object","required":["prefix","path"],"properties":{"prefix":{"type":"string","format":"media_name","x-primary-key":true,"description":"HTTP prefix that will be intercepted by this lua script\\n","x-format-description":"media_name"},"path":{"type":"string","format":"disk_path","description":"Path to the lua handler\\n","x-format-description":"disk_path"},"extra":{"x-private":true,"type":"object","additionalProperties":{"type":"string"},"description":"Some additional options.\\n"}}},"http_proxies_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"$ref":"#/components/schemas/openmetrics_labels"},{"type":"object","properties":{"http_proxies":{"description":"List of http proxies","type":"array","items":{"$ref":"#/components/schemas/http_proxy_config"}}}}]},"ssh_agent":{"type":"object","properties":{"configured":{"type":"boolean","readOnly":true,"description":"SSH keys support configured in `authorized_keys`."},"enabled":{"type":"boolean","readOnly":true,"description":"Whether `ssh_agent` will start on reboot."},"running":{"type":"boolean","readOnly":true,"description":"Whether `ssh_agent` is running right now."},"connected":{"type":"boolean","readOnly":true,"description":"Whether `ssh_agent` is connected. In this case our support team has an access to your server."}}},"system_updater_status":{"type":"object","properties":{"status":{"description":"Indicates the current status of upgrade.","type":"string","oneOf":[{"title":"Running","const":"running","description":"Indicates the upgrade is in progress."},{"title":"Not running","const":"not_running","description":"Indicates the upgrade is not in progress and not required.\\nInstalled version is the last available version.\\n"},{"title":"Error","const":"error","description":"Something wrong and Flussonic is not able to get the upgrade status."},{"title":"Upgrade available","const":"upgrade_available","description":"The installed version is not the last. \\nIt is possible to upgrade to the next version.\\n"},{"title":"Restart required","const":"restart_required","description":"The running version is older than installed version.\\nRestart is required to run the installed version.\\n"}]},"target_version":{"type":"string","description":"Indicates target version for upgrading, if status is \\"running\\".\\n","nullable":true},"repo_uri":{"type":"string","description":"Path to repository with upgrade packages.\\n","nullable":true},"repository":{"type":"string","description":"Indicates the type of repository.\\n","nullable":true},"running_version":{"type":"string","description":"Currently launched streamer version.\\n"},"installed_version":{"type":"string","description":"Version installed on disk.\\nCan differ from running_version if just installed.\\n"},"next_version":{"type":"string","nullable":true,"description":"The latest version in repository which is available for installing.\\nCan be null if network error doesn\'t allow to fetch it.\\n"},"previous_version":{"type":"string","nullable":true,"description":"The version in repository which is previous for the installed version.\\nCan be null if network error doesn\'t allow to fetch it.\\n"},"last_update_error":{"description":"The text of the error that occurred the last time an action was performed by the updater. \\nResets to null when another action is performed.\\n","type":"string","nullable":true}}},"system_upgrade_request":{"type":"object","properties":{"version":{"type":"string","description":"Provide exact version or null if you want last version.\\n"}}},"upload_logs_req":{"type":"object","properties":{"comment":{"type":"string","description":"Comment.\\n"}}},"upload_logs_res":{"type":"object","properties":{"id":{"description":"Uploaded logs identifier","type":"string","format":"uuid","x-format-description":"uuid"}}},"chassis_config":{"type":"object","properties":{"product_name":{"description":"Coder product name","allOf":[{"$ref":"#/components/schemas/chassis_product"}],"readOnly":true},"api_port":{"description":"Private port for API requests to the chassis from coders.","allOf":[{"$ref":"#/components/schemas/listen_spec"}],"readOnly":true},"auto_reboot":{"description":"Shows if auto restart of coders when (re)starting chassis is enabled.","type":"boolean","default":false,"readOnly":true},"dhcpd_iface":{"description":"Network interface for automatic reception of IP address from DHCP server. \\nThis interface will be used for launching coders.\\n","type":"string","format":"interface_name","readOnly":true,"x-format-description":"interface_name"},"dhcpd_port":{"description":"Source port for DHCP requests.","allOf":[{"$ref":"#/components/schemas/listen_spec"}],"readOnly":true},"dhcpd_port_dest":{"description":"Destination port for DHCP requests.","allOf":[{"$ref":"#/components/schemas/listen_spec"}],"readOnly":true},"lcd":{"description":"Shows if LCD monitor capabilities are enabled in the firmware.","type":"boolean","default":false,"readOnly":true},"ntpd_iface":{"description":"Network interface for NTP daemon.","type":"string","format":"interface_name","readOnly":true,"x-format-description":"interface_name"},"ntpd_port":{"description":"Port for NTP daemon.","allOf":[{"$ref":"#/components/schemas/listen_spec"}],"readOnly":true},"tftp_port":{"description":"Port for TFTP used for loading program core to the coders.","allOf":[{"$ref":"#/components/schemas/listen_spec"}],"readOnly":true},"tftp_root":{"description":"TFTP root directory.","type":"string","format":"disk_path","readOnly":true,"x-format-description":"disk_path"},"update_channel":{"description":"Update channel specified in the config file.","type":"string","readOnly":true},"firmware_host":{"description":"URL for downloading firmware.","type":"string","format":"url","readOnly":true,"x-format-description":"url"},"firmware_version":{"description":"Firmware version installed on the device.","allOf":[{"$ref":"#/components/schemas/chassis_version"}],"readOnly":true},"firmware_boot_dir":{"description":"Directory to boot the device from. This is also where the firmware is downloaded on updates.","type":"string","format":"disk_path","readOnly":true,"x-format-description":"disk_path"},"stats":{"description":"Statistics of the chassis connections.","allOf":[{"$ref":"#/components/schemas/chassis_stats"}],"readOnly":true},"restart_coder_timeout":{"description":"Timeout for restarting coders.","type":"integer","readOnly":true},"hostname":{"description":"The name of the chassis server.","type":"string","format":"server_name","example":"coder1.example.com","x-format-description":"server_name"},"default_gateway_interface":{"description":"If `default_gateway` parameters are set the individual interfaces config, \\nthis gateway is only used for checking license and updates. \\nOtherwise, it is used as gateway for all traffic.\\n","type":"string","example":"streaming"},"ntp_servers":{"description":"List of NTP server host names or IP addresses","type":"array","items":{"type":"string"}}}},"chassis_stats":{"type":"object","properties":{"dhcp":{"description":"DHCP statistics.","allOf":[{"$ref":"#/components/schemas/chassis_dhcpd_stats"}],"x-private":true},"tftp":{"description":"TFTP statistics.","allOf":[{"$ref":"#/components/schemas/chassis_tftp_stats"}],"x-private":true},"ntpd":{"description":"NTP daemon statistics.","allOf":[{"$ref":"#/components/schemas/chassis_ntpd_stats"}],"x-private":true},"model":{"description":"The chassis model name.","type":"string","example":"chassis_model"},"version":{"description":"Full version number of the firmware. Deprecated. Version could be found at `chassis_config/firmware_version`","deprecated":true,"x-delete-at":"24.10","allOf":[{"$ref":"#/components/schemas/chassis_version"}],"example":"21.09.1-234"},"next_version":{"deprecated":true,"x-delete-at":"24.10","description":"The latest available version of the firmware, if any. Deprecated. Last available version could be obtained from `chassis_firmwares_list`","allOf":[{"$ref":"#/components/schemas/chassis_version"}]},"serial_number":{"description":"The serial number of the chassis.","type":"string","example":"2174220024"},"hardware_id":{"description":"MAC address of the manage0 interface.","type":"string"},"hostname":{"type":"string","description":"Hostname of the server.","example":"coder1.example.com"},"ntp_clock_synchronized":{"type":"boolean","description":"Whether a system clock synchronized with NTP server"},"system_time":{"type":"number","format":"utc_ms","description":"Chassis system time (in UTC milliseconds)","x-format-description":"Unix timestamp in milliseconds","minimum":1000000000000,"maximum":10000000000000}}},"chassis_dhcpd_stats":{"type":"object","properties":{"error":{"description":"The error code, if any.","type":"string","enum":["listen_failure","port_busy","no_interface"]},"leases":{"description":"The list of leased IP addresses.","type":"array","items":{"type":"object","properties":{"mac":{"description":"MAC address corresponding to the IP address.","type":"string"},"ip":{"description":"IP address.","type":"string"},"count":{"description":"The number of uses.","type":"integer"},"last_seen_at":{"description":"When the IP address was used the last time.","type":"integer"}}},"default":[]}}},"chassis_tftp_stats":{"type":"object","properties":{"error":{"description":"Error code, if any.","type":"string","enum":["listen_failure","port_busy","no_interface"]},"file_count":{"description":"The number of files sent over TFTP.","type":"integer"},"sent_bytes":{"description":"The number of bytes sent over TFTP.","type":"integer"}}},"chassis_ntpd_stats":{"type":"object","properties":{"port":{"description":"The port used for NTP daemon.","type":"integer"},"requests_count":{"description":"The number of requests sent.","type":"integer"}}},"chassis_product":{"type":"string","oneOf":[{"title":"Coder","const":"coder_transcoder","description":"Basic coder with transcoding support"},{"title":"Vision Coder","const":"coder_vision","description":"Coder with video analytic support"},{"title":"DVB Coder","const":"coder_dvb","description":"Basic coder with transcoding support and DVB output"}]},"chassis_version":{"type":"string"},"server_meta":{"type":"string"},"server_stats":{"allOf":[{"$ref":"#/components/schemas/server_stats_whoami"},{"$ref":"#/components/schemas/server_stats_streamer"},{"$ref":"#/components/schemas/server_stats_network"},{"$ref":"#/components/schemas/server_stats_events"}]},"server_stats_events":{"type":"object","properties":{"events":{"type":"object","description":"Events statistics","properties":{"resent_events":{"description":"Number of events, which have been retransmitted due to network issues.\\nThe counter relates with events sinks `resend_timeout` parameter.\\n","type":"integer","example":100},"dropped_events":{"description":"Number of events, which have been dropped due to buffer limitation\\nconfigured by events sinks `resend_limit` parameter.\\n","type":"integer","example":100}}}}},"server_config":{"allOf":[{"$ref":"#/components/schemas/server_config_base"},{"$ref":"#/components/schemas/server_config_full"},{"$ref":"#/components/schemas/server_config_external"},{"$ref":"#/components/schemas/server_config_stats"},{"$ref":"#/components/schemas/openmetrics_labels"},{"$ref":"#/components/schemas/opentelemetry"}],"description":"Global server configuration and current runtime status"},"server_config_stats":{"type":"object","properties":{"stats":{"allOf":[{"$ref":"#/components/schemas/server_stats"}],"description":"Server runtime stats."}}},"server_config_external":{"type":"object","properties":{"config_external":{"type":"string","format":"url","description":"Specify stream config backend.","example":"http://central.example.com/streamer/api/v3/streamers","externalDocs":{"description":"Find more information here","url":"https://flussonic.com/doc/centralized-cluster-configuration-with-config-external/"},"x-format-description":"url"}}},"activate":{"allOf":[{"$ref":"#/components/schemas/license"},{"$ref":"#/components/schemas/admin_credentials"}]},"license":{"type":"object","properties":{"key":{"type":"string","description":"License key","example":"l4|QSBkdW1teSBsaWNlbnNlIGtleQ==|eWVrIGVzbmVjaWwgeW1tdWQgQQ=="}},"required":["key"]},"license_activation":{"type":"object","properties":{"version":{"type":"string","description":"Version number","example":"22.07","x-primary-key":true},"payload":{"type":"string","description":"Base64 encoded string","example":"QSBwYXJ0IG9mIGEgZHVtbXkgYWN0aXZhdGlvbiBwYXlsb2FkIHN0cmluZw=="}},"required":["version","payload"]},"license_client":{"type":"object","properties":{"ip":{"description":"The client API.","type":"string"},"connected_at":{"description":"Date and time the client connected.","type":"integer"}}},"license_request":{"type":"object","properties":{"payload":{"description":"JSON with license request data.","type":"string"}}},"vsaas_config":{"type":"object","properties":{"watcher_url":{"type":"string","description":"All requests to /vsaas and /watcher will be proxied to this url.\\nWatcher will not be launched by flussonic with this option.\\n"},"central_url":{"type":"string","description":"All requests to /central will be proxied to this url.\\n"}}},"camera_alarm_config":{"type":"object","properties":{"listen":{"description":"The `smtp://` link to get camera alarms from.","allOf":[{"$ref":"#/components/schemas/listen_spec"}]},"catch":{"description":"The list of keywords in the e-mails that are considered alarms.","type":"array","items":{"type":"string"}}}},"vision_config":{"type":"object","properties":{"jpeg_vector_helper":{"description":"Enables JPEG generation for recognized objects. By default, vision process will generate only text events.","type":"string"},"hw":{"description":"Hardware device type to be used for a vision process.","type":"string"},"debug":{"description":"The debug option. Description is not required.","type":"boolean","x-private":true},"face_only_detect":{"description":"The debug option. Description is not required.","type":"boolean","x-private":true},"face_ssd_net_path":{"description":"The debug option. Description is not required.","type":"string","format":"disk_path","x-private":true,"x-format-description":"disk_path"},"face_recon_net_path":{"description":"The debug option. Description is not required.","type":"string","format":"disk_path","x-private":true,"x-format-description":"disk_path"},"ssd_net_path":{"description":"The debug option. Description is not required.","type":"string","format":"disk_path","x-private":true,"x-format-description":"disk_path"},"lp_net_path":{"description":"The debug option. Description is not required.","type":"string","format":"disk_path","x-private":true,"x-format-description":"disk_path"}}},"iptv_config":{"type":"object","properties":{"database":{"description":"DB connection string.","type":"string"}}},"subscribers_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"subscribers":{"items":{"$ref":"#/components/schemas/subscriber_config"},"type":"array","description":"List of fetched subscribers according to query parameters."}}}]},"subscriber_config":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Unique identifier of the subscriber.\\n","example":"client01","readOnly":true},"token":{"type":"string","description":"Simple static unique token that will be automatically created for the\\nsubscriber if not provided.\\n\\nThis token can be used in play URLs.\\n\\nShould be URL-friendly.\\n","example":"ybBb5CFLqSFYc2"},"max_sessions":{"type":"integer","description":"Limit of simulateously played sessions for this subscriber.\\n","example":3},"packages":{"type":"array","items":{"type":"string","format":"package_name","x-format-description":"package_name"},"default":[],"description":"List of available packages of channels for this subscriber.\\n\\nChannels (streams) are not added directly, only via packages.\\n"}}},"packages_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"packages":{"items":{"$ref":"#/components/schemas/package_config"},"type":"array","description":"List of fetched packages according to query parameters."}}}]},"package_config":{"type":"object","properties":{"name":{"description":"The package name.","type":"string","readOnly":true},"channels":{"description":"The list of channels in the package.","type":"array","items":{"type":"string"},"default":[]}},"required":["name"]},"watcher_agents_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"agents":{"items":{"$ref":"#/components/schemas/watcher_agent_config"},"type":"array","description":"The list of Agents fetched according to the query parameters."}}}]},"certificate_save_request":{"type":"object","required":["cert","cacert","private_key"],"properties":{"cert":{"description":"Server certificate file. \\nClients check this certificate to make sure the server is trusted.\\n","type":"string","format":"byte","x-format-description":"byte"},"cacert":{"description":"CA certificate file. \\nThe server uses the CA certificate to check that \\nall connecting clients are trusted by the CA (Certification Authority).\\n","type":"string","format":"byte","x-format-description":"byte"},"private_key":{"description":"Server private key file. \\nThe private key is used for encryption/decryption of data sent between the server and clients.\\n","type":"string","format":"byte","x-format-description":"byte"}}},"stream_dvr_ranges_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"ranges":{"description":"List of DVR ranges.","type":"array","items":{"$ref":"#/components/schemas/dvr_range"}}}}]},"stream_dvr_locks_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"locks":{"description":"List of locked DVR ranges.","type":"array","items":{"$ref":"#/components/schemas/dvr_range"}}}}]},"templates_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"templates":{"items":{"$ref":"#/components/schemas/template_config"},"type":"array","description":"List of templates."}}}]},"transponder_ts_descriptors_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"ts_descriptors":{"description":"The list of transport stream descriptors. Descriptors are added to NIT and SDT.","type":"array","items":{"$ref":"#/components/schemas/ts_descriptor"}}}}]},"transponder_others_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"others":{"description":"The list of other multiplexers added for the current multiplexer.","items":{"$ref":"#/components/schemas/transponder_other"},"type":"array"}}}]},"transponder_programs_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"programs":{"description":"The list of programs configured in the multiplexer.","type":"array","items":{"$ref":"#/components/schemas/transponder_program"}}}}]},"transponder_pushes_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"pushes":{"description":"The list of pushes configured for the multiplexer.","type":"array","items":{"$ref":"#/components/schemas/transponder_push"}}}}]},"transponder_time_offsets_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"time_offsets":{"description":"The list of time offsets.","type":"array","items":{"$ref":"#/components/schemas/transponder_time_offset"}}}}]},"transponders_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"$ref":"#/components/schemas/openmetrics_labels"},{"type":"object","properties":{"transponders":{"description":"The list of multiplexers.","type":"array","items":{"$ref":"#/components/schemas/transponder_config"}}}}]},"dvb_cards_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"dvb_cards":{"description":"The list of DVB cards configured on the server.","type":"array","items":{"$ref":"#/components/schemas/dvb_card_config"}}}}]},"available_events_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"events":{"description":"The list of available events.","type":"array","items":{"$ref":"#/components/schemas/streamer_event1"}}}}]},"caches_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"caches":{"description":"The list of caches.","type":"array","items":{"$ref":"#/components/schemas/cache_config"}}}}]},"dvrs_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"$ref":"#/components/schemas/openmetrics_labels"},{"type":"object","properties":{"dvrs":{"description":"Configurations of the DVRs.","type":"array","items":{"$ref":"#/components/schemas/dvr_config"}}}}]},"dvr_disks_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"disks":{"description":"Configurations of the RAID disks.","type":"array","items":{"$ref":"#/components/schemas/raid_disk_config"}}}}]},"peers_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"peers":{"description":"The list of peers.","type":"array","items":{"$ref":"#/components/schemas/peer_config"}}}}]},"balancers_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"balancers":{"description":"The list of balancers.","type":"array","items":{"$ref":"#/components/schemas/balancer_config"}}}}]},"sources_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"sources":{"description":"The list of sources.","type":"array","items":{"$ref":"#/components/schemas/source_config"}}}}]},"logos_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"logos":{"description":"The array of logo files.","type":"array","items":{"$ref":"#/components/schemas/logo_file"}}}}]},"media_info_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"media_info_list":{"description":"The list of `media_info` for each program transmitted via the DVB card.","type":"array","items":{"$ref":"#/components/schemas/media_info"}}}}]},"license_activations_list":{"type":"object","properties":{"activations":{"description":"The list of license activations.","type":"array","items":{"$ref":"#/components/schemas/license_activation"}}}},"license_clients_list":{"allOf":[{"$ref":"#/components/schemas/collection_response"},{"type":"object","properties":{"license_clients":{"description":"The list of license clients.","type":"array","items":{"$ref":"#/components/schemas/license_client"}}}}]},"file_processor_config":{"type":"object","properties":{"path":{"description":"The directory where Flussonic puts output files.","type":"string","format":"disk_path","x-format-description":"disk_path"}}},"file_processor_job":{"description":"Video files processing request","type":"object","properties":{"input_files":{"description":"Input files","type":"array","minItems":1,"items":{"type":"string","format":"disk_path","x-format-description":"disk_path"}},"output_file":{"description":"Prefix of the output file. Resulting name of the output file \\nhas the following structure: {output_file}.processed.{timestamp}.mp4.\\n","type":"string"},"filters":{"description":"Processing filters","type":"array","minItems":1,"items":{"$ref":"#/components/schemas/file_processor_filter"}},"id":{"description":"Job id","type":"string","readOnly":true},"status":{"description":"Job status.","type":"string","enum":["new","running","done","error"],"readOnly":true},"size":{"description":"Output file size","type":"integer","readOnly":true},"duration":{"description":"Output file duration","type":"integer","readOnly":true},"progress":{"description":"Percent done","type":"integer","minimum":0,"maximum":100,"readOnly":true},"errors":{"description":"List of errors","type":"array","items":{"$ref":"#/components/schemas/error"},"readOnly":true}}},"file_processor_filter":{"oneOf":[{"$ref":"#/components/schemas/file_processor_filter_overlay"},{"$ref":"#/components/schemas/file_processor_filter_crop"},{"$ref":"#/components/schemas/file_processor_filter_mute"},{"$ref":"#/components/schemas/file_processor_filter_mosaic"},{"$ref":"#/components/schemas/file_processor_filter_transcoder"}],"discriminator":{"propertyName":"group","mapping":{"overlay":"#/components/schemas/file_processor_filter_overlay","crop":"#/components/schemas/file_processor_filter_crop","mute":"#/components/schemas/file_processor_filter_mute","mosaic":"#/components/schemas/file_processor_filter_mosaic","transcoder":"#/components/schemas/file_processor_filter_transcoder"}}},"file_processor_filter_overlay":{"type":"object","required":["group","start","stop","position"],"properties":{"group":{"type":"string","title":"Overlay","const":"overlay","description":"Put black rectangle to the specified place"},"start":{"description":"Filter start time","type":"integer","format":"milliseconds","x-format-description":"milliseconds"},"stop":{"description":"Filter end time","type":"integer","format":"milliseconds","x-format-description":"milliseconds"},"position":{"description":"Overlay position at the output image","type":"object","required":["x1","y1","x2","y2"],"properties":{"x1":{"description":"Top overlay coordinate","type":"integer"},"y1":{"description":"Left overlay coordinate","type":"integer"},"x2":{"description":"Right overlay coordinate","type":"integer"},"y2":{"description":"Bottom overlay coordinate","type":"integer"}}}}},"file_processor_filter_crop":{"type":"object","required":["group","start","stop"],"properties":{"group":{"type":"string","title":"Crop","const":"crop","description":"Cut off interval [start, stop] from the output"},"start":{"description":"Filter start time","type":"integer","format":"milliseconds","x-format-description":"milliseconds"},"stop":{"description":"Filter end time","type":"integer","format":"milliseconds","x-format-description":"milliseconds"}}},"file_processor_filter_mute":{"type":"object","required":["group","start","stop"],"properties":{"group":{"type":"string","title":"Mute","const":"mute","description":"Mute audio on interval [start, stop]"},"start":{"description":"Filter start time","type":"integer","format":"milliseconds","x-format-description":"milliseconds"},"stop":{"description":"Filter end time","type":"integer","format":"milliseconds","x-format-description":"milliseconds"}}},"file_processor_filter_mosaic":{"type":"object","required":["group"],"properties":{"group":{"type":"string","title":"Mosaic","const":"mosaic","description":"Combine all input files into single image. Cannot be used with other filters"}}},"file_processor_filter_transcoder":{"type":"object","required":["group","transcoder"],"properties":{"group":{"type":"string","title":"Transcoder","const":"transcoder","description":"Transcode the input file. Cannot be used with other filters"},"transcoder":{"description":"Transcoder configuration","oneOf":[{"$ref":"#/components/schemas/transcoder_opts"},{"$ref":"#/components/schemas/media_info"}]}}},"admin_session":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Session id.","example":"05cec7ee-fbd0-11ed-be56-0242ac120002","x-format-description":"uuid"},"ui":{"description":"The using UI type.","type":"string","oneOf":[{"const":"mobile"},{"const":"tablet"},{"const":"desktop"}],"example":"mobile"},"opened_at":{"type":"integer","format":"utc","description":"The time when the admin session started.","example":1643789953,"x-format-description":"Unix timestamp in seconds","minimum":1000000000,"maximum":10000000000},"duration":{"type":"integer","format":"milliseconds","description":"The session duration.","x-format-description":"milliseconds"},"pages_sessions":{"type":"array","items":{"type":"object","properties":{"page":{"type":"string","description":"The path to the page from the address line.","example":"/streams"},"id":{"type":"string","format":"uuid","description":"Page session id.","example":"05cec7ee-fbd0-11ed-be56-0242ac120002","x-format-description":"uuid"},"visit_count":{"type":"integer","description":"The number of visits to the page.","example":5}}},"description":"The sessions of the pages."}}},"opentelemetry":{"type":"object","properties":{"opentelemetry_url":{"x-private":true,"type":"string","description":"URL (agent or collector) that is used to collect traces and spans with configuration in query parameters.\\nFORMAT: `http://{JAEGER-URL}?service_name={CENTRAL_NAME}` (The prefix “central” will be added to the service name)\\n","format":"url","example":"http://jaeger-server:14268/v1/traces?service_name=some-name","x-format-description":"url"}}},"opentelemetry_stats":{"type":"object","properties":{"sent_count":{"description":"How many traces were sent","type":"integer"},"drop_overload_count":{"description":"How many traces were dropped due to overload","type":"integer"},"drop_sampling_count":{"description":"How many traces were dropped due to sampling limit.","type":"integer"},"drop_network_count":{"description":"How many traces were dropped due to network issues.","type":"integer"}}}}}}')},106:function(e,t,r){"use strict";var n=r(409),o=(r(2),r(1)),i=r(72),a=r(0);function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var c=["isSwitch","isRadio","checked","onChange","value","label","labelPlacement","disabled","color","size","HelperDocProps","justifyContent","style"];function l(){return(l=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var f={name:"ti75j2",styles:"margin:0"},b=function(e){var t=e.isSwitch,r=e.isRadio,s=e.checked,p=e.onChange,d=e.value,b=e.label,h=e.labelPlacement,y=e.disabled,g=e.color,v=e.size,_=e.HelperDocProps,O=e.justifyContent,j=e.style,x=m(e,c),w=t&&o.Zb||r&&o.Ob||o.s;return Object(a.c)("div",{style:u({display:"flex",alignItems:"center",justifyContent:O},j)},Object(a.c)(o.Q,{css:f,label:b,disabled:y,onClick:function(e){return e.stopPropagation()},labelPlacement:h,control:Object(a.c)(w,l({checked:s,onChange:p,onClick:function(e){return e.stopPropagation()},value:d,color:g,size:v,inputProps:u(u({},x.inputProps),{},{"data-testid":x["data-testid"]})},n.a(["data-testid","inputProps"],x)))}),_&&Object(a.c)(i.a,_))};b.defaultProps={isSwitch:!1,isRadio:!1,disabled:!1,value:void 0,color:"default",size:"medium",labelPlacement:"end",HelperDocProps:void 0,"data-testid":void 0,onChange:function(){},label:void 0,justifyContent:"center",style:{}},t.a=b},11:function(e,t,r){"use strict";r.d(t,"w",(function(){return s})),r.d(t,"m",(function(){return c})),r.d(t,"x",(function(){return l})),r.d(t,"n",(function(){return p})),r.d(t,"f",(function(){return u})),r.d(t,"b",(function(){return d})),r.d(t,"p",(function(){return m})),r.d(t,"a",(function(){return f})),r.d(t,"t",(function(){return b})),r.d(t,"s",(function(){return h})),r.d(t,"u",(function(){return y})),r.d(t,"q",(function(){return g})),r.d(t,"r",(function(){return v})),r.d(t,"i",(function(){return _})),r.d(t,"k",(function(){return O})),r.d(t,"l",(function(){return j})),r.d(t,"j",(function(){return x})),r.d(t,"g",(function(){return w})),r.d(t,"d",(function(){return k})),r.d(t,"c",(function(){return S})),r.d(t,"y",(function(){return P})),r.d(t,"e",(function(){return T})),r.d(t,"v",(function(){return I})),r.d(t,"h",(function(){return C})),r.d(t,"o",(function(){return A}));var n,o,i,a=r(536),s="usb",c="offline",l="g4",p="o4",u="please_use_one_external_mode_for_all_nvenc_transcoders",d="cloud",m="streamer",f="central",b="running",h="no_license",y="starting",g="broken_config",v="license_failure",_=!1,O="streamer"===m,j=!1,x=!1,w=["16","32","48","64","128"],k={streams:"streams",templates:"templates"},S={stream:"stream",template:"template",multiplexer:"multiplexer",source:"source",vod:"vod",dvbCard:"dvbCard",peer:"peer",agent:"agent",iptv_user:"iptv_user",iptv_package:"iptv_package"},P={query:"query",sort:"sort",page:"page",cursor:"cursor",limit:"limit",named_by:"named_by",status:"status",feature:"feature",start:"start",end:"end",stream_name:"stream_name",from:"from",to:"to",user_id:"user_id",ip:"ip",useragent:"useragent",duration_lt:"duration_lt",duration_gt:"duration_gt",server_hostname:"server_hostname",view:"view",proto:"proto",episode_type:"episode_type",opened_at:"opened_at",opened_at_gt:"opened_at_gt",opened_at_lt:"opened_at_lt",media:"media",license_plate_text:"license_plate_text",response_code:"response_code",organizationId:"organizationId",presetId:"presetId",is_unknown:"is_unknown",group_view:"group_view",auto_update:"auto_update",dvr_is_not:"dvr_is_not",onvif_is_not:"onvif_is_not",disabled:"disabled",agent_is_not:"agent_is_not",vision_is_not:"vision_is_not",expiration:"expiration",q:"q",person:"person",name:"name"},T={face:null===(n=a.a.schemas.vision_episode_face.allOf[1].properties)||void 0===n?void 0:n.episode_type.const,vehicle:null===(o=a.a.schemas.vision_episode_vehicle.allOf[1].properties)||void 0===o?void 0:o.episode_type.const,generic:null===(i=a.a.schemas.episode_generic.allOf[1].properties)||void 0===i?void 0:i.episode_type.const},I="telemetry_data",C=window.location.host.includes("front-ci.")||window.location.host.includes("127.0.0.1"),A=3e3},115:function(e,t,r){"use strict";var n=r(126),o=r.n(n),i=r(75),a=r(11),s=new(r(529).a)("billingAuth");function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t0&&void 0!==arguments[0])||arguments[0],t=Object(i.b)("streamer_host"),r="/streamer/api/v3";return"".concat(t).concat(e?r:"")},b=function(){if(a.i){if(s.activeAccessToken)return"Bearer ".concat(s.activeAccessToken)}else{var e=localStorage.getItem(m);if(e){var t=JSON.parse(e);return Object(i.d)({login:t.login,password:t.password})}}},h=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=o.a.create({baseURL:f(e),headers:p(p({},i.c),{},{"Content-Type":"application/json"}),transformResponse:function(e){var t,r;return"string"==typeof e&&e.startsWith('{"')?d.parse(e):null===o.a||void 0===o.a?void 0:null===(t=o.a.defaults)||void 0===t?void 0:null===(r=t.transformResponse)||void 0===r?void 0:r[0](e)}});return t.interceptors.request.use((function(e){var t=b();return t&&(e.headers=p(p({},e.headers),{},{Authorization:t})),e})),t}},117:function(e,t,r){"use strict";r.d(t,"b",(function(){return p})),r.d(t,"a",(function(){return u}));var n=r(145),o=r(25),i=r(107);function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function ut(e){return function(e){if(Array.isArray(e))return dt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return dt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return dt(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_streams_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():gt({params:t,config:i})},options:r})},gt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/streams",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},vt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,u=void 0===c||c,d=e.showErrorMessage,m=void 0===d||d,f=Object(s.b)(),b=f.t,h=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/streams",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return u&&b("stream_create.successPostAlert")}),Object(n.g)(t)?t:{},m);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,l);return h.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,p);return h.mutate(ft({params:t,body:r,config:n},o))}},_t=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/streams/{name}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Ot=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_stream_get"].concat(ut(t||[])))}},jt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,m=void 0===p||p,f=Object(s.b)(),b=f.t,h=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/streams/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&b("stream_save.successPutAlert")}),Object(n.g)(t)?t:{},m);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,u);return h.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,d);return h.mutate(ft({params:t,body:r,config:n},o))}},xt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),b=d.t,h=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/streams/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&b("stream_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,m);return h.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,f);return h.mutate(ft({params:t,body:r,config:n},o))}},wt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_ui_settings_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():kt({params:t,config:i})},options:r})},kt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/ui_settings",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},St=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_streamers_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Pt({params:t,config:i})},options:r})},Pt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/streamers",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Tt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_streamer_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():It({params:t,config:i})},options:r})},It=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/streamers/{hostname}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Ct=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/streamers/{hostname}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("streamer_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,b);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,h);return f.mutate(ft({params:t,body:r,config:n},o))}},At=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/streamers/{hostname}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("streamer_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,y);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,g);return f.mutate(ft({params:t,body:r,config:n},o))}},Dt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_streamer_tls_certificate_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Et({params:t,config:i})},options:r})},Et=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/streamers/{hostname}/letsencrypt",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},$t=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/streamers/{hostname}/letsencrypt",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("streamer_letsencrypt_issue.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,v);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,_);return f.mutate(ft({params:t,body:r,config:n},o))}},Nt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_auth_backends_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Lt({params:t,config:i})},options:r})},Lt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/auth_backends",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Rt=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_auth_backends_list"].concat(ut(t||[])))}},qt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/auth_backends/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("auth_backend_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,O);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,j);return f.mutate(ft({params:t,body:r,config:n},o))}},Mt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/auth_backends/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("auth_backend_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,x);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,w);return f.mutate(ft({params:t,body:r,config:n},o))}},Ft=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/admin_view_token",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("admin_view_token_generate.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,k);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,S);return f.mutate(ft({params:t,body:r,config:n},o))}},Ut=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_stream_layouts_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():zt({params:t,config:i})},options:r})},zt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/streams/{name}/layouts",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Bt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_agents_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Ht({params:t,config:i})},options:r})},Ht=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/agents",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Vt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_agent_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Wt({params:t,config:i})},options:r})},Wt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/agents/{id}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Gt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_dvrs_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Kt({params:t,config:i})},options:r})},Kt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/dvrs",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Yt=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_dvrs_list"].concat(ut(t||[])))}},Jt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_episodes_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Qt({params:t,config:i})},options:r})},Qt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/episodes",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Xt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_persons_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Zt({params:t,config:i})},options:r})},Zt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/persons",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},er=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_config_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():tr({params:t,config:i})},options:r})},tr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/config",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},rr=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_config_get"].concat(ut(t||[])))}},nr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/config",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("config_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,P);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,T);return f.mutate(ft({params:t,body:r,config:n},o))}},or=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_cluster_stats_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():ir({params:t,config:i})},options:r})},ir=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/cluster/stats",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},ar=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_sessions_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():sr({params:t,config:i})},options:r})},sr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/sessions",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},cr=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_sessions_list"].concat(ut(t||[])))}},lr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_event_sinks_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():pr({params:t,config:i})},options:r})},pr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/event_sinks",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},ur=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_event_sinks_list"].concat(ut(t||[])))}},dr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/event_sinks/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("event_sink_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,I);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,C);return f.mutate(ft({params:t,body:r,config:n},o))}},mr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/event_sinks/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("event_sink_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,A);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,D);return f.mutate(ft({params:t,body:r,config:n},o))}},fr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_usages_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():br({params:t,config:i})},options:r})},br=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/usages",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},hr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_api_calls_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():yr({params:t,config:i})},options:r})},yr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/api_calls",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},gr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_vods_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():vr({params:t,config:i})},options:r})},vr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/vods",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},_r=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_vods_list"].concat(ut(t||[])))}},Or=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_vod_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():jr({params:t,config:i})},options:r})},jr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/vods/{prefix}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},xr=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_vod_get"].concat(ut(t||[])))}},wr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/vods/{prefix}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("vod_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,E);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,$);return f.mutate(ft({params:t,body:r,config:n},o))}},kr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/vods/{prefix}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("vod_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,N);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,L);return f.mutate(ft({params:t,body:r,config:n},o))}},Sr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_disk_files_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Pr({params:t,config:i})},options:r})},Pr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/vods/{prefix}/storages/{storage_index}/files",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Tr=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_disk_files_list"].concat(ut(t||[])))}},Ir=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/vods/{prefix}/storages/{storage_index}/files/{subpath}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("disk_file_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,R);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,q);return f.mutate(ft({params:t,body:r,config:n},o))}},Cr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/vods/{prefix}/storages/{storage_index}/files/{subpath}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("disk_file_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,M);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,F);return f.mutate(ft({params:t,body:r,config:n},o))}},Ar=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/streams/{name}/stop",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("stream_stop.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,U);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,z);return f.mutate(ft({params:t,body:r,config:n},o))}},Dr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/streams/{name}/inputs/{index}/select",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("stream_input_select.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,B);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,H);return f.mutate(ft({params:t,body:r,config:n},o))}},Er=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/sessions/{id}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("session_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,V);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,W);return f.mutate(ft({params:t,body:r,config:n},o))}},$r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_templates_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Nr({params:t,config:i})},options:r})},Nr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/templates",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Lr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_template_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Rr({params:t,config:i})},options:r})},Rr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/templates/{name}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},qr=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_template_get"].concat(ut(t||[])))}},Mr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/templates/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("template_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,G);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,K);return f.mutate(ft({params:t,body:r,config:n},o))}},Fr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/templates/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("template_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Y);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,J);return f.mutate(ft({params:t,body:r,config:n},o))}},Ur=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_transponders_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():zr({params:t,config:i})},options:r})},zr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/transponders",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Br=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_transponders_list"].concat(ut(t||[])))}},Hr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/transponders/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("transponder_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Q);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,X);return f.mutate(ft({params:t,body:r,config:n},o))}},Vr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_transponder_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Wr({params:t,config:i})},options:r})},Wr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/transponders/{name}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Gr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/transponders/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("transponder_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Z);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ee);return f.mutate(ft({params:t,body:r,config:n},o))}},Kr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/multiplexers/{name}/xmltv_upload",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("multiplexer_xmltv_upload.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,te);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,re);return f.mutate(ft({params:t,body:r,config:n},o))}},Yr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_dvb_cards_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Jr({params:t,config:i})},options:r})},Jr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/dvb_cards",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Qr=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_dvb_cards_list"].concat(ut(t||[])))}},Xr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_dvb_card_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Zr({params:t,config:i})},options:r})},Zr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/dvb_cards/{name}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},en=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/dvb_cards/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("dvb_card_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ne);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,oe);return f.mutate(ft({params:t,body:r,config:n},o))}},tn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/dvb_cards/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("dvb_card_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ie);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ae);return f.mutate(ft({params:t,body:r,config:n},o))}},rn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_dvb_card_available_programs_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():nn({params:t,config:i})},options:r})},nn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/dvb_cards/{name}/available_programs",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},on=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/dvrs/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("dvr_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,se);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ce);return f.mutate(ft({params:t,body:r,config:n},o))}},an=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/dvrs/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("dvr_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,le);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,pe);return f.mutate(ft({params:t,body:r,config:n},o))}},sn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_peers_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():cn({params:t,config:i})},options:r})},cn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/cluster/peers",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},ln=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_peer_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():pn({params:t,config:i})},options:r})},pn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/cluster/peers/{hostname}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},un=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/cluster/peers/{hostname}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("peer_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ue);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,de);return f.mutate(ft({params:t,body:r,config:n},o))}},dn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/cluster/peers/{hostname}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("peer_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,me);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,fe);return f.mutate(ft({params:t,body:r,config:n},o))}},mn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_sources_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():fn({params:t,config:i})},options:r})},fn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/cluster/sources",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},bn=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_sources_list"].concat(ut(t||[])))}},hn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_source_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():yn({params:t,config:i})},options:r})},yn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/cluster/sources/{url}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},gn=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_source_get"].concat(ut(t||[])))}},vn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/cluster/sources/{url}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("source_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,be);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,he);return f.mutate(ft({params:t,body:r,config:n},o))}},_n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/cluster/sources/{url}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("source_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ye);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ge);return f.mutate(ft({params:t,body:r,config:n},o))}},On=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_logos_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():jn({params:t,config:i})},options:r})},jn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/logos",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},xn=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_logos_list"].concat(ut(t||[])))}},wn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/logos/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("logo_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ve);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,_e);return f.mutate(ft({params:t,body:r,config:n},o))}},kn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/logos/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("logo_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Oe);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,je);return f.mutate(ft({params:t,body:r,config:n},o))}},Sn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_opened_files_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Pn({params:t,config:i})},options:r})},Pn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/vods/opened_files",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Tn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/activate",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("license_activate.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,xe);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,we);return f.mutate(ft({params:t,body:r,config:n},o))}},In=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/license",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("license_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ke);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Se);return f.mutate(ft({params:t,body:r,config:n},o))}},Cn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/license",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("license_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Pe);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Te);return f.mutate(ft({params:t,body:r,config:n},o))}},An=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_activations_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Dn({params:t,config:i})},options:r})},Dn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/license/activations",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},En=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_activations_list"].concat(ut(t||[])))}},$n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/license/activations/{version}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("activation_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ie);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ce);return f.mutate(ft({params:t,body:r,config:n},o))}},Nn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/license/activations/{version}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("activation_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ae);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,De);return f.mutate(ft({params:t,body:r,config:n},o))}},Ln=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_iptv_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Rn({params:t,config:i})},options:r})},Rn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/iptv",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},qn=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_iptv_get"].concat(ut(t||[])))}},Mn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/iptv",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("iptv_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ee);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,$e);return f.mutate(ft({params:t,body:r,config:n},o))}},Fn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/iptv",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("iptv_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ne);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Le);return f.mutate(ft({params:t,body:r,config:n},o))}},Un=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_packages_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():zn({params:t,config:i})},options:r})},zn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/iptv/packages",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Bn=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_packages_list"].concat(ut(t||[])))}},Hn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/iptv/packages/{name}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Vn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/iptv/packages/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("package_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Re);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,qe);return f.mutate(ft({params:t,body:r,config:n},o))}},Wn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/iptv/packages/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("package_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Me);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Fe);return f.mutate(ft({params:t,body:r,config:n},o))}},Gn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_subscribers_list",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():Kn({params:t,config:i})},options:r})},Kn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/iptv/subscribers",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Yn=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_subscribers_list"].concat(ut(t||[])))}},Jn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/iptv/subscribers/{name}",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},Qn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/iptv/subscribers/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("subscriber_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ue);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ze);return f.mutate(ft({params:t,body:r,config:n},o))}},Xn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/iptv/subscribers/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("subscriber_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Be);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,He);return f.mutate(ft({params:t,body:r,config:n},o))}},Zn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_ssh_agent_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():eo({params:t,config:i})},options:r})},eo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/system/ssh_agent",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},to=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_ssh_agent_get"].concat(ut(t||[])))}},ro=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/system/ssh_agent",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("ssh_agent_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ve);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,We);return f.mutate(ft({params:t,body:r,config:n},o))}},no=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/system/ssh_agent",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("ssh_agent_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ge);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ke);return f.mutate(ft({params:t,body:r,config:n},o))}},oo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/system/restart",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("system_restart.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ye);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Je);return f.mutate(ft({params:t,body:r,config:n},o))}},io=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_system_updater_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():ao({params:t,config:i})},options:r})},ao=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/system/updater",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},so=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/system/updater",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("system_updater_update.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Qe);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Xe);return f.mutate(ft({params:t,body:r,config:n},o))}},co=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/system/upload_logs",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("upload_logs.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,Ze);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,et);return f.mutate(ft({params:t,body:r,config:n},o))}},lo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_logs_download",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():po({params:t,config:i})},options:r})},po=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/system/logs_download",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},uo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/tls/letsencrypt",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.post(c,r,ft({params:l},o))}),(function(){return l&&m("letsencrypt_issue.successPostAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,tt);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,rt);return f.mutate(ft({params:t,body:r,config:n},o))}},mo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,i=e.config,a=e.queryFn,s=e.queryKey;return Object(o.a)({queryKey:["streamer_tls_certificate_get",s,t],queryFn:function(){return a&&Object(n.a)(a)?a():fo({params:t,config:i})},options:r})},fo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object(a.a)({path:"/tls/certificate",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return ht.get(o,ft({params:i},r))},bo=function(){var e=Object(c.useQueryClient)();return function(t){return e.refetchQueries(["streamer_tls_certificate_get"].concat(ut(t||[])))}},ho=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/tls/certificate",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.delete(c,ft({params:l},o))}),(function(){return l&&m("tls_certificate_delete.successDeleteAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,nt);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ot);return f.mutate(ft({params:t,body:r,config:n},o))}},yo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/tls/certificate",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("tls_certificate_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,it);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,at);return f.mutate(ft({params:t,body:r,config:n},o))}},go=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,i=e.mutationFn,c=e.showSuccessMessage,l=void 0===c||c,p=e.showErrorMessage,u=void 0===p||p,d=Object(s.b)(),m=d.t,f=Object(o.b)((function(e){var t=e.params,r=e.body,o=e.config,s=Object(a.a)({path:"/admin_session_save/{session_id}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),c=s.pathWithParams,l=s.queryParams;return i&&Object(n.a)(i)?i({params:t,body:r,config:o}):ht.put(c,r,ft({params:l},o))}),(function(){return l&&m("admin_session_save.successPutAlert")}),Object(n.g)(t)?t:{},u);return r?function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,st);return f.mutateAsync(ft({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=pt(e,ct);return f.mutate(ft({params:t,body:r,config:n},o))}}},131:function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(465);r.d(t,"b",(function(){return n.a}));var o=r(15),i=Object(o.a)(n.a)((function(e){var t=e.theme,r=e.variant,n=void 0===r?"default":r,o=e.size,i=e.mr,a=e.fontSize,s=void 0===a?16:a;return{border:"1px solid #98A2B2",borderRadius:"4px",padding:"3px",marginRight:t.spacing(null!=i?i:0),backgroundColor:"contained"===n?t.palette.primary.main:"#fff","& svg":{fontSize:"small"===o?13:s,color:"contained"!==n?t.palette.primary.main:"#fff"},"&:hover":{backgroundColor:"contained"===n?t.palette.primary.main:"#fff"}}}))},135:function(e,t,r){"use strict";r.d(t,"b",(function(){return a})),r.d(t,"a",(function(){return s})),r.d(t,"d",(function(){return p})),r.d(t,"c",(function(){return c})),r.d(t,"g",(function(){return l})),r.d(t,"e",(function(){return d})),r.d(t,"f",(function(){return u}));var n=r(51),o=r(23),i=r(4),a="no sources defined",s="expecting publication",c=function(e){var t=e.showInputBitrate,r=e.stats,n=null==r?void 0:r.input_bitrate,o=null==r?void 0:r.bitrate,i=null==r?void 0:r.running_transcoder;return o?"".concat(t&&i?"".concat(n,"kbit/s -> "):"").concat(o,"kbit/s"):"n/a"},l=function(e,t){var r=e?e.ts_delay:null;return r>(/^(hls|m4f)/i.test(e?e.url:"")?t.hlsLower:t.lower)&&r8e3?"".concat(t,", ").concat(n.a.shortestTimeFormat(e.ts_delay)," delay"):t,i=!o.b.isUnavailable(e)&&e.source_error.length<20?"".concat(t,", "):"",a=e.retry_count>0,s="".concat(e.retry_count," retries");return{mainText:r,detailText:a&&"".concat(i).concat(s)}},u=function(e){switch(!0){case e>0&&e<700:return"SD";case e>0&&e<1070:return"HD";case e>0&&e<1300:return"FHD";case e>0&&e>=1300:return"UHD";default:return""}},d=function(e){if(e&&e.tracks){var t=e.tracks.filter((function(e){return"video"===e.content})),r=0;return t.forEach((function(e){var t=null==e?void 0:e.height;Object(i.e)(e)&&Object(i.e)(t)&&(r=t>r?t:r)})),u(r)}return""}},1362:function(e,t,r){},1364:function(e,t,r){},1370:function(e,t,r){},144:function(e,t,r){"use strict";r.d(t,"c",(function(){return y})),r.d(t,"b",(function(){return g})),r.d(t,"a",(function(){return v})),r.d(t,"d",(function(){return _}));var n=r(356),o=r(145),i=r(105),a=r(170),s=r(91),c=r(107),l=r(313),p=r(402),u=r(617),d=r(143),m=r(4),f=r(49),b=r(31),h=b.J.global.deviceid,y=n.a(b.h,["size","width"]),g=o.a(b.G,y),v=(o.a(i.a(a.a,-1),s.a(c.a("key")),l.a(o.a(m.d&&m.g,c.a("value"))),p.a,u.a((function(e,t){return{value:e,key:Object(f.c)(t)}}))),function(e){var t=e.transcoderSettings,r=e.transcoderDevices.map((function(e){return[{id:e.id,type:e.type},"".concat(e.name," (").concat(e.id,") ").concat(Object(m.d)(e.load)?" - ".concat(e.load,"%"):""),"".concat(e.id,"_").concat(e.type)]})),n=h(d.a(["global","deviceid"])(t)),o=d.a(["global","hw"])(t),i=r.find((function(e){return e[0].id===n&&e[0].type===o}));return{hardwares:r,currentValueHw:i,resultHw:i?i[0]:null,resultHwFull:i||[null]}}),_=function(e){e.stopPropagation()}},150:function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));r(2);var n=r(530),o=r(0),i=function(e){var t=e.severity,r=e.details,i=void 0===r?null:r;return{anchorOrigin:{horizontal:"right",vertical:"top"},autoHideDuration:7e3,variant:"success",preventDuplicate:!0,content:function(e,r){return Object(o.c)(n.a,{id:e,message:r,severity:t,details:i})}}}},1533:function(e,t,r){},1534:function(e,t,r){},1535:function(e,t,r){},1536:function(e,t,r){},1537:function(e,t,r){},1538:function(e,t,r){},1539:function(e,t,r){},154:function(e,t,r){"use strict";var n=r(1551);r.d(t,"a",(function(){return n.a}))},1540:function(e,t,r){},1541:function(e,t,r){},1542:function(e,t,r){},1544:function(e,t,r){},1545:function(e,t,r){},1546:function(e,t,r){"use strict";r.r(t);r(956),r(1167),r(1168);var n=r(2),o=r.n(n),i=r(99),a=r(14),s=r(157),c=r(312),l=r(124),p=r(1),u=r(35),d=r(11),m=r(0);function f(e){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function b(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==f(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==f(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===f(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var h=Object(c.a)({key:"mui",prepend:!0}),y=function(e){var t=e.primaryColor,r=e.secondaryColor,n=e.fonts,o=e.background,i="body {\n font-size: 14px;\n @media (max-width: 767px) {\n padding-top: 54px;\n }\n // background: #D2D9DF;\n }\n html, body, #root {\n height: 100%;\n }\n ";n.push(i);var a=n.length>0?n.join(" "):i;return Object(p.qc)({breakpoints:{values:{xs:0,sm:768,md:900,lg:1200,xl:1536}},palette:{primary:{main:t},secondary:{main:r},background:{default:o},text:{primary:"#232323",secondary:"#98A2B2"},warning:{main:"#FF9900"},error:{main:"#d32f2f"},success:{main:"#10B981"},red:{light:p.vc[400],default:p.vc[500],main:p.vc[500],dark:p.vc[700]},grey:{light:p.rc[300],default:p.rc[500],main:p.rc[500],dark:p.rc[700]}},zIndex:{drawer:1100,appBar:1200},typography:{body1:{fontSize:12},useNextVariants:!0,fontFamily:'"CustomFont", "Helvetica", "Arial", sans-serif'},components:{MuiCssBaseline:{styleOverrides:a},MuiInputBase:{styleOverrides:{input:{font:'400 14px CustomFont, "Helvetica", "Arial", sans-serif'}}},MuiInputLabel:{styleOverrides:{root:{font:'400 14px CustomFont, "Helvetica", "Arial", sans-serif'}}},MuiContainer:{styleOverrides:{root:function(e){var t=e.theme;return b(b({},t.breakpoints.up("sm"),{paddingLeft:d.l?"178px":"84px",paddingRight:"19px"}),t.breakpoints.only("sm"),{paddingLeft:d.l?"60px":"84px"})}}},MuiButton:{styleOverrides:{root:{textTransform:"capitalize"},outlinedInherit:{backgroundColor:"#fff",borderColor:"#98A2B2"}}},MuiAlert:{styleOverrides:{filledSuccess:{backgroundColor:"#10B981"}}}}})},g=function(e,t){return"@font-face {\n font-family: 'CustomFont';\n font-style: normal;\n font-display: swap;\n font-weight: ".concat(t,";\n src: url(").concat(e,") format('woff2');\n}")},v=function(e){var t=e.children,r=Object(n.useContext)(u.d),o=r.colors,i=r.fonts,a="data:application/font-woff2;charset=utf-8;base64,",s=i?[g("".concat(a).concat(i.regular),400),g("".concat(a).concat(i.light),300),g("".concat(a).concat(i.medium),500)]:[];return Object(m.c)(l.a,{value:h},Object(m.c)(p.fc,{theme:y({primaryColor:null==o?void 0:o.primary,secondaryColor:null==o?void 0:o.secondary,fonts:s,background:null==o?void 0:o.background})},Object(m.c)(p.z,null),Object(m.c)(u.c.Provider,{value:null==r?void 0:r.product},Object(m.c)(u.b.Provider,{value:null==r?void 0:r.menu_items},Object(m.c)(u.a.Provider,{value:null==r?void 0:r.debian_package},t)))))},_=r(13),O=r(537),j=r(7),x=r(881),w=r(878),k=r(126),S=r.n(k);function P(e){var t=e.tags,r=e.brandName,n={};return Object.keys(t).forEach((function(e){n[e]=t[e].replace(/brandName/g,r)})),n}var T=r(75);function I(e){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function C(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */C=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function l(e,t,r,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),s=new k(o||[]);return n(a,"_invoke",{value:O(e,r,s)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var u={};function d(){}function m(){}function f(){}var b={};c(b,i,(function(){return this}));var h=Object.getPrototypeOf,y=h&&h(h(S([])));y&&y!==t&&r.call(y,i)&&(b=y);var g=f.prototype=d.prototype=Object.create(b);function v(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){var o;n(this,"_invoke",{value:function(n,i){function a(){return new t((function(o,a){!function n(o,i,a,s){var c=p(e[o],e,i);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==I(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){l.value=e,a(l)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}(n,i,o,a)}))}return o=o?o.then(a,a):a()}})}function O(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return P()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=j(a,r);if(s){if(s===u)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=p(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===u)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function j(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,j(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),u;var o=p(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,u;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),w(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;w(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}function A(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function D(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),w(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;w(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}function oe(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ie(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ae(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ae(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),w(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;w(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}function pe(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ue(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return de(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return de(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function de(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r span":je(je({borderRight:"1px solid #B2B8BF","&:last-of-type":{border:0}},e.breakpoints.between("sm","lg"),{"&:first-of-type":{border:0}}),e.breakpoints.only("xs"),{'&[data-testid="status-line-in"]':{border:0}})},noWrap:{whiteSpace:"nowrap"},statusItem:je(je({minWidth:"120px",textAlign:"center",textTransform:"uppercase",fontWeight:400,padding:"0 3px"},e.breakpoints.down("lg"),{display:"none"}),e.breakpoints.only("xs"),{minWidth:"100px","&.status-item-mobile":{display:"inline-block"},fontSize:"12px","& span":{fontSize:"12px"}}),statusVal:{color:e.palette.primary.main},statusItemTooltip:je({textTransform:"uppercase",color:e.palette.text.primary,fontSize:"14px",display:"block"},e.breakpoints.only("xs"),{"&.status-item-mobile":{display:"none"}}),statusFirstItem:{minWidth:"auto",padding:"0 10px"},moreIcon:je({fontSize:"30px",color:r?e.palette.primary.dark:"#D0D7DD",cursor:"pointer"},e.breakpoints.up("lg"),{display:"none"}),tooltip:{border:"1px solid #D2D9DF",borderRadius:"16px",background:e.palette.common.white,marginTop:"4px !important"}}}));function we(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ke(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ke(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ke(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]&&arguments[0];return[Object(m.c)(p.kc,{component:"span",key:"streams",variant:"subtitle2",className:c(i?s.statusItemTooltip:s.statusItem,"status-item-mobile"),"data-testid":"status-line-streams"},e("headerTopNavStatsStreamsFilesClients.streams")," ",Object(m.c)("span",{className:s.statusVal},null!==(t=l.stats.online_streams)&&void 0!==t?t:"-"," / ",null!==(r=l.stats.total_streams)&&void 0!==r?r:"-")),Object(m.c)(p.kc,{component:"span",key:"files",variant:"subtitle2",className:i?s.statusItemTooltip:s.statusItem,"data-testid":"status-line-files"},e("headerTopNavStatsStreamsFilesClients.files")," ",Object(m.c)("span",{className:s.statusVal},null!==(n=l.stats.opened_files)&&void 0!==n?n:"-")),Object(m.c)(p.kc,{component:"span",key:"clients",variant:"subtitle2",className:i?s.statusItemTooltip:s.statusItem,"data-testid":"status-line-clients"},e("headerTopNavStatsStreamsFilesClients.clients")," ",Object(m.c)("span",{className:s.statusVal},null!==(o=l.stats.total_clients)&&void 0!==o?o:"-"))].filter(Boolean)}),[l.stats]),d=Object(n.useCallback)((function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],r=Pe({inGbps:l.stats.input_kbit/1e6,inMbps:l.stats.input_kbit/1e3,outGbps:l.stats.output_kbit/1e6,outMbps:l.stats.output_kbit/1e3}),n=r.inText,i=r.outText;return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.kc,{component:"span",variant:"subtitle2",className:c(t?s.statusItemTooltip:s.statusItem,"status-item-mobile"),"data-testid":"status-line-in"},e("headerTopNavInOut.in")," ",Object(m.c)("span",{className:s.statusVal},n)),Object(m.c)(p.kc,{component:"span",variant:"subtitle2",className:t?s.statusItemTooltip:s.statusItem,"data-testid":"status-line-out"},e("headerTopNavInOut.out")," ",Object(m.c)("span",{className:s.statusVal},i)))}),[l.stats]),f=Object(n.useCallback)((function(){var t,r=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(m.c)(p.kc,{component:"span",variant:"subtitle2",className:c(r?s.statusItemTooltip:s.statusItem,s.uptime),"data-testid":"status-line-uptime"},e("headerTopNavStatusLine.up"),Object(m.c)("span",{className:s.statusVal},null!==(t=l.stats)&&void 0!==t&&t.uptime?_e.a.seconds(l.stats.uptime):"-"))}),[l.stats]),b=Object(n.useMemo)((function(){var e;return null!==(e=l.stats)&&void 0!==e&&e.server_version?"".concat(l.stats.server_version).concat(l.stats.build>0?"-".concat(l.stats.build):""):"-"}),[l.stats]);return l.stats?Object(m.c)(p.l,{display:"flex",justifyContent:"flex-end",mt:2,"data-testid":"status-line"},Object(m.c)(p.l,{className:s.statusLine},Object(m.c)("div",{className:c(s.statusLineContent,s.noWrap)},Object(m.c)(p.kc,{component:"span",variant:"subtitle2","data-testid":"status-line-version",className:c(s.statusItem,s.statusFirstItem)},b),u(),d(),f()),Object(m.c)(p.jc,{title:Object(m.c)(o.a.Fragment,null,u(!0),d(!0),f(!0)),placement:"bottom",classes:{tooltip:s.tooltip},enterTouchDelay:50,leaveTouchDelay:1e4,onOpen:function(){return i(!0)},onClose:function(){return i(!1)}},Object(m.c)(Se,{className:s.moreIcon})))):null},Ie=r(1657);function Ce(e){return function(e){if(Array.isArray(e))return Ae(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Ae(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ae(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r>,<<\\"/,"\n\r").replace(/\\">>}/g,"\n\r}").replace(/\\">>]/g,"\n\r]").replace(/\\\\n/g,"\n\r").replace(/\\\\\\/g,"").replace(/\n/g,"\n\r").replace(/\\n/g,"\n\r").replace(/<<\\"/g,"\n\r").replace(/\\">>/g,"\n\r").replace(/\s{4}/g,"");return r=t=o,(n=t.match(ze))&&n.forEach((function(e){var t=e.trim();r=r.replace("".concat(t),"[".concat(t,"](").concat(t,")"))})),r},Ve=function(){var e=Object(j.b)().t,t=Ue().classes,r=function(){var e=Object(n.useContext)(me).globalSettings,t=$e(o.a.useState(Ee(e)),2),r=t[0],i=t[1];return o.a.useEffect((function(){var t=Ee(e);i(t)}),[e]),{notifications:r}}().notifications;return Object(m.c)(p.l,{display:"flex",justifyContent:"flex-end",flexWrap:"wrap",mb:1},r.errors.map((function(r){var n=He(r.error);if("Not optimal scaling_governor profile (please set scaling_governor to 'performance' for each CPU)"===n)return null;var i=n&&n.includes(d.f)?e("externalError"):n;return Object(m.c)(p.jc,{key:r.id,title:Object(m.c)(Ie.a,null,i),placement:"bottom",classes:{tooltip:t.tooltip},enterTouchDelay:50,leaveTouchDelay:3e3},Object(m.c)(p.t,{className:t.errorChip,color:"warning",label:Object(m.c)(o.a.Fragment,null,Object(m.c)("span",{className:t.errorMin},e("error")),Object(m.c)("span",{className:t.errorMax},i)),icon:Object(m.c)(Be,{fontSize:"small"})}))})))},We=r(42),Ge=r.n(We),Ke=r(407),Ye=r(89),Je=r(406),Qe=Je.a(Ye.a);function Xe(e){return(Xe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ze(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:[[]];return function(r,n){var o=Object(B.e)(e),i=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return function(t){var o=Qe(F.a(t,r),F.a(t,n));return e&&(console.group(t),console.log("prev",F.a(t,r)),console.log("next",F.a(t,n)),console.groupEnd()),o}},a=t.some(i(!1));return(a&&o||o&&e.all)&&(console.group("".concat(e.title,". Props changes detected: ")),t.forEach(i(!0)),console.groupEnd()),a}}(a?{title:"Memo(".concat(s,")"),all:c}:void 0,l)(p,e.propsToCheck):n}},{key:"render",value:function(){var e=this.props.children;return(Object(m.c)(it.Provider,{value:{skipNextMemoCheck:this.skipNextMemoCheck}},Object(B.a)(e)?e({skipNextMemoCheck:this.skipNextMemoCheck,stopMemoCheck:this.stopMemoCheck,resumeMemoCheck:this.resumeMemoCheck}):e))}}])&&Ze(r.prototype,n),o&&Ze(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(o.a.Component);at.defaultProps={id:"unknown",paths:[[]],propsToCheck:void 0,debug:!1,debugAll:!1};var st=r(23),ct=r(125),lt=r(222);function pt(e){return(pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ut(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function dt(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(n+="?".concat(s.join("&"))),n}),[b,o,m,a,i,h,c,l,p,r])},kt=r(514),St=r.n(kt);function Pt(e){return(Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Tt(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==Pt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Pt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Pt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function It(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Ct(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ct(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ct(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1,$=Object(n.useMemo)((function(){return"".concat(s===d.b&&S?"".concat(window.location.protocol,"//").concat(S[0]):Object(T.b)(),"/").concat(s===d.a?"lb/-":"")}),[S,s]),N=Object(jt.b)({params:Tt({name:t,autoplay:!1,realtime:!0,tokenName:$t(o)},$t(o),f||void 0),options:{enabled:!C&&g&&E},config:{baseURL:$,encodeParams:s===d.a}}).isSuccess,L=!1;return r&&r.drm&&(L=0!==Object.keys(r.drm).length),Object(m.c)("div",{className:"media-player-content","data-testid":"media-player-content"},Object(m.c)(p.hb,{container:!0,spacing:0},Object(m.c)(p.hb,{item:!0,xs:12},c,L&&Object(m.c)(p.l,{width:"100%"},Object(m.c)(p.kc,{variant:"subtitle1",color:"error"},l("player.attention"))),!c&&i&&Object(m.c)(p.l,{mb:1},Object(m.c)(p.hc,{onChange:k,value:w,possibleValues:P,minWidth:80,className:h.togglePlayer})),Object(m.c)("div",{style:{position:"relative",height:440}},Object(m.c)("div",{className:h.mediaOverviewPlayerContentWrapper},!C&&g&&N&&Object(m.c)("iframe",{title:"Player",frameBorder:"0",src:A,className:h.mediaOverviewPlayerContent,style:{height:440}}))),c&&i&&Object(m.c)(p.l,{mt:1},Object(m.c)(p.hc,{onChange:k,value:w,possibleValues:P,minWidth:80,className:h.togglePlayer})),Object(m.c)(p.l,{mt:2,width:"100%"},Object(m.c)(p.ec,{label:l("mediaOverviewPlayerContent.htmlCodeLabel"),value:st.b.embedCode(D),inputProps:{"data-testid":"media-overview-html-code"},startAdornmentLabel:"HTML Code"})))))},Lt=function(e){var t=e.name,r=e.close,o=e.classes,i=e.configEffective,a=e.product,s=Object(n.useContext)(me).globalSettings;return function(e){var t=e.key,r=e.callback;Object(n.useEffect)((function(){var e=function(e){e.key===t&&r()};return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,r])}({key:"Escape",callback:r}),Object(m.c)(p.l,{id:"modal-overlay",className:_t()(o.modalVisible),onClick:r},Object(m.c)("div",{id:"modal-content",onClick:De},Object(m.c)("div",{className:"close",onClick:r},"⨯"),Object(m.c)(Nt,{name:t,media:{static:!0},config:s,height:320,canChangePlayer:!0,product:a,configEffective:i})))},Rt=function(e){var t=e.classes;return Object(m.c)(gt.a,null,(function(e){return e.modal?Object(m.c)(Lt,{classes:t,name:e.modal,close:function(){return e.setModal(!1)},configEffective:e.configEffective,product:e.product}):null}))},qt=r(57),Mt=r(36),Ft=r(241),Ut=function(e){var t,r=e.media,n=e.name,o=e.renderIgnored,i=e.isIgnored,a=e.isTemplate,s=e.product,c=Object(j.b)().t,l=Ge()().location,u=r.title||r.meta&&r.meta.comment||"",f=s===d.b?r.name||n:u,b=(null===(t=r.stats)||void 0===t?void 0:t.running_on)||[],h="".concat(c("runningOn")," ").concat(b.join(", "));return Object(m.c)("div",{className:"fixedWidthTableContent"},Object(m.c)("div",{className:"fixedWidthTableContent"},i?Object(m.c)(p.kc,{color:"primary",component:"span",variant:"subtitle2"},r.name||n):Object(m.c)(p.xb,{to:{pathname:a?"/templates/".concat(encodeURIComponent(r.name)):"/streams/".concat(encodeURIComponent(r.name)),state:{filter:Ot.a("search")(l)}},component:Mt.b,color:"primary","data-testid":"".concat(a?"template":"stream","-link-").concat(r.name)},Object(m.c)(p.kc,{color:"primary",component:"span",variant:"subtitle2"},s===d.b?u:r.name||n))," "),!a&&Object(m.c)("div",{className:"fixedWidthTableContent"},Object(m.c)(p.jc,{title:f,placement:"right-end"},Object(m.c)(p.kc,{component:"span",lineHeight:"20px"},f))),o&&o(),s===d.b||r.named_by!==st.d.config&&r.named_by!==st.d.remote?"":Object(m.c)(p.kc,{component:"p",lineHeight:"20px"},r.static?c("streamList.table.alwaysStarted"):c("streamList.table.onDemand")),b.length>0&&Object(m.c)(p.jc,{title:h,placement:"right-end"},Object(m.c)(p.kc,{lineHeight:"20px",className:"fixedWidthTableContent"},h)),a&&Object(B.e)(Ot.a("prefixes")(r))?Object(m.c)(p.l,{display:"flex",justifyContent:"start",alignItems:"start"},Object(m.c)(p.l,{mt:.5},c("streamList.table.prefixes")),Object(m.c)("div",null,r.prefixes.map((function(e){return Object(m.c)(p.l,{my:.5,ml:.5,display:"inline-block",key:e},Object(m.c)(p.t,{label:e,size:"small"}))})))):"",Object(m.c)(Ft.a,{media:r,stats:r.stats,"data-testid":"stream-link-".concat(r.name)}))};Ut.defaultProps={name:"",renderIgnored:null,isIgnored:!1,isTemplate:!1};var zt=r(355),Bt=["children","maxWidth"];function Ht(){return(Ht=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Wt=Object(p.uc)()((function(e,t){var r=t.maxWidth;return{tooltip:{backgroundColor:e.palette.common.white,color:"rgba(0, 0, 0, 0.87)",boxShadow:e.shadows[2],fontSize:11,maxWidth:r||"none"}}})),Gt=function(e){var t=e.children,r=e.maxWidth,n=Vt(e,Bt),o=Wt({maxWidth:r}).classes;return Object(m.c)(p.jc,Ht({classes:o},n),t)},Kt=r(135),Yt=r(48);function Jt(e){return(Jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Qt(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==Jt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Jt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Jt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Xt=function(){var e=Object(p.xc)(),t=Object(n.useMemo)((function(){return Qt(Qt(Qt({},qt.k.success,e.palette.success.main),qt.k.error,e.palette.error.main),qt.k.disabled,e.palette.grey[500])}),[e.palette.error.main,e.palette.grey,e.palette.success.main]);return{getInputStatusColor:Object(n.useCallback)((function(r){var n=r.status,o=r.useDifferColorByInputKey,i=r.inputIndex;return n===qt.k.success&&o&&i&&i>0?e.palette.warning.main:t[n]}),[t,e.palette.warning.main])}};function Zt(e){return(Zt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function er(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==Zt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Zt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Zt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var tr=[{title:"streamList.table.url",lg:2},{title:"streamList.table.comment",lg:2},{title:"streamList.table.status",lg:2},{title:"streamList.table.track",lg:1.5},{title:"streamList.table.resolution",lg:1.5},{title:"streamList.table.codec",lg:1.5},{title:"streamList.table.bitrate",lg:1.5}],rr=er(er(er({},qt.k.success,Object(m.c)(Yt.q,null)),qt.k.error,Object(m.c)(Yt.i,null)),qt.k.disabled,Object(m.c)(Yt.h,null)),nr=Object(p.uc)()((function(e){return{statusIcon:{fontSize:15,marginRight:7},inputNumber:{display:"inline-flex",fontSize:10,lineHeight:"1",justifyContent:"center",paddingTop:3,width:16,height:16,border:"1px solid #fff",color:e.palette.common.white,borderRadius:"50%",marginRight:5,flexShrink:0,pointerEvents:"none"},inputNumberClickable:{cursor:"pointer",pointerEvents:"all","&:hover":{backgroundColor:"#003cff !important"}}}})),or=function(e){var t=e.media,r=e.infoIconSize,i=void 0===r?20:r,a=Object(j.b)().t,s=Object(n.useMemo)((function(){return t.inputs||[]}),[t.inputs]),c=nr(),l=c.classes,u=c.cx,d=Xt().getInputStatusColor,f=Object(_.Bb)(),b=Object(n.useCallback)((function(e){f({params:{name:t.name,index:e}})}),[t.name]),h=Object(n.useMemo)((function(){return er(er(er({},qt.k.success,a("streamList.table.active")),qt.k.error,a("streamList.table.error")),qt.k.disabled,a("streamList.table.disabled"))}),[a]),y=Object(n.useCallback)((function(e,r){var n,i,a,s,c,f,y=e.url,g=(null==e?void 0:null===(n=e.stats)||void 0===n?void 0:null===(i=n.media_info)||void 0===i?void 0:i.tracks)||[],v=Object(qt.h)(t,e),_=null!==(a=h[v])&&void 0!==a?a:"",O=d({status:v});return[Object(m.c)(p.l,{key:"input-url",display:"flex"},Object(m.c)("span",{className:u(l.inputNumber,er({},l.inputNumberClickable,!(null!==(s=e.stats)&&void 0!==s&&s.active)&&(null===(c=t.stats)||void 0===c?void 0:c.alive))),style:{backgroundColor:O},onClick:function(){return b(r)}},r+1),Object(m.c)(p.kc,{variant:"body2"},y)),Object(m.c)(p.l,{key:"input-comment",display:"flex"},Object(m.c)(p.kc,{variant:"body2"},null==e?void 0:e.comment)),Object(m.c)(p.l,{key:"input-status",display:"flex",alignItems:"center"},Object(m.c)("span",{className:l.statusIcon,style:{color:O}},null!==(f=rr[v])&&void 0!==f?f:""),Object(m.c)(p.kc,{style:{fontWeight:500,color:O},variant:"body2",component:"span"},_)),g.map((function(e,t){var r=Object(Kt.f)(null==e?void 0:e.height);return Object(m.c)(p.hb,{container:!0,item:!0,xs:12,key:e.track_id,className:t===g.length-1?"table-block-without-border":"uik-table-block"},Object(m.c)(p.hb,{item:!0,xs:3},Object(m.c)(p.kc,{variant:"body2"},e.track_id)),Object(m.c)(p.hb,{item:!0,xs:3,style:{padding:"0 8px"}},r&&Object(m.c)(o.a.Fragment,null,e.width&&e.height&&"".concat(e.width,"x").concat(e.height),Object(m.c)("span",{className:"video-resolution",style:{marginLeft:"4px"}},r))),Object(m.c)(p.hb,{item:!0,xs:3,style:{padding:"0 8px"}},Object(m.c)(p.kc,{variant:"body2"},e.codec)),Object(m.c)(p.hb,{item:!0,xs:3,style:{padding:"0 8px"}},Object(m.c)(p.kc,{variant:"body2"},"".concat(e.bitrate,"K"))))}))]}),[t,h,d,l.inputNumber,l.statusIcon,l.statusIconClickable,u,b]),g=Object(n.useMemo)((function(){return s.map((function(e,t){return Object(m.c)(p.hb,{item:!0,container:!0,xs:12,alignItems:"flex-start",key:t,className:"uik-table-block"},y(e,t).map((function(e,t){return Object(m.c)(p.bc,{settings:[{title:"streamList.table.url",lg:2},{title:"streamList.table.comment",lg:2},{title:"streamList.table.status",lg:2},{title:"streamList.table.track",lg:6}],index:t,cell:e,key:t})})))}))}),[y,s]);return Object(B.b)(s)?null:Object(m.c)(Gt,{title:Object(m.c)(p.ac,{settings:tr,body:g}),placement:"right","data-testid":"stream-input-inf-".concat(t.name)},Object(m.c)(p.l,{ml:1,component:"span",display:"inline-flex"},Object(m.c)(p.ob,{fontSize:"small",style:{fontSize:i},color:"primary"})))},ir=function(e){var t,r,n=e.media,i=e.isTemplate,a=Object(j.b)().t,s=null==n?void 0:null===(t=n.stats)||void 0===t?void 0:t.lifetime,c=Object(qt.b)({bitrate:null==n?void 0:null===(r=n.stats)||void 0===r?void 0:r.input_bitrate}),l=Object(qt.e)({media:n});return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{display:"flex",alignItems:"center"},Object(m.c)(p.jc,{title:l,placement:"top-start"},Object(m.c)(p.l,{className:"fixedWidthTableContent","data-testid":"stream-source-".concat(n.name)},l)),Object(m.c)(or,{media:n})),Object(m.c)(zt.a,{media:n,isSources:!0}),!i&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.kc,{lineHeight:"20px",color:"textSecondary",component:"p","data-testid":"stream-uptime-".concat(n.name)},Object(m.c)(p.kc,{color:"textPrimary",component:"span"},a("streamList.table.uptime"),":"," "),s?_e.a.getFormattedTime(s):""),Object(m.c)(p.kc,{lineHeight:"20px",color:"textSecondary",component:"p","data-testid":"stream-bitrate-".concat(n.name)},Object(m.c)(p.kc,{color:"textPrimary",component:"span"},a("streamList.table.bitrate"),":"," "),c),(null==n?void 0:n.named_by)===st.d.remote&&Object(m.c)(p.kc,{lineHeight:"20px",color:"primary",component:"p","data-testid":"stream-sourced-".concat(n.name)},a("streamList.table.sourced"))))},ar=r(356),sr=r(144),cr=[{title:"streamList.table.track",lg:2},{title:"streamList.table.resolution",lg:4},{title:"streamList.table.codec",lg:3},{title:"streamList.table.bitrate",lg:3}],lr=function(e){var t=e.media,r=e.config,n=e.isTemplate,i=Object(j.b)().t,a=null,s=0,c=0,l=[],u="";if(Object(B.e)(t.transcoder)){var d=ar.a([],["stats","transcoder_devices"])(r);if(a=Object(sr.a)({transcoderSettings:t.transcoder,transcoderDevices:d}).resultHwFull,!n){var f=F.a(["stats","media_info","tracks"])(t);Array.isArray(f)&&f.forEach((function(e){"video"===e.content&&(s+=1,l.push(e)),"audio"===e.content&&(c+=1,l.push(e))}))}u=Object(qt.b)({bitrate:F.a(["stats","bitrate"])(t)})}return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.kc,{component:"span","data-testid":"stream-hw-".concat(t.name)},a?a[1]:""),!n&&a&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{display:"flex",alignItems:"center"},Object(m.c)(p.kc,{color:"textSecondary",component:"p"},Object(m.c)(p.kc,{color:"textPrimary",component:"span",variant:"body2"},i("streamList.table.video"),":"," "),Object(m.c)(p.kc,{component:"span",variant:"body2","data-testid":"stream-video-count-".concat(t.name)},s," "),Object(m.c)(p.kc,{color:"textPrimary",variant:"body2",component:"span"},i("streamList.table.audio"),":"," "),Object(m.c)(p.kc,{component:"span",variant:"body2","data-testid":"stream-audio-count-".concat(t.name)},c," ")),Object(m.c)(Gt,{title:Object(m.c)("div",null,Object(B.e)(l)?Object(m.c)(p.ac,{settings:cr,rows:l.map((function(e){var t=Object(Kt.f)(Ot.a("height")(e));return[Object(m.c)(p.kc,{variant:"body2",key:"track-id"},e.track_id),Object(m.c)(o.a.Fragment,{key:"track-resolution"},e.width&&e.height&&"".concat(e.width,"x").concat(e.height),t&&Object(m.c)(p.l,{component:"span",ml:.5,className:"video-resolution"},t)),Object(m.c)(p.kc,{variant:"body2",key:"track-codec"},e.codec),Object(m.c)(p.kc,{variant:"body2",key:"track-bitrate"},"".concat(e.bitrate,"K"))]}))}):Object(m.c)(p.l,{textAlign:"center",m:1},Object(m.c)(p.kc,{component:"p",variant:"subtitle1"},i("streamList.table.noTracks")))),placement:"right","data-testid":"stream-transcode-inf-".concat(t.name)},Object(m.c)(p.l,{ml:1,mb:.5},Object(m.c)(p.ob,{fontSize:"small",color:"primary"})))),Object(m.c)(p.kc,{lineHeight:"20px",color:"textSecondary",component:"p","data-testid":"stream-transcode-bitrate-".concat(t.name)},Object(m.c)(p.kc,{color:"textPrimary",component:"span"},i("streamList.table.bitrateAfterTranscoding"),":"," "),u)),Object(B.b)(t.transcoder)&&Object(m.c)(p.kc,{color:"textSecondary",component:"p",variant:"body2","data-testid":"stream-transcoder-disabled-".concat(t.name)},i("streamList.table.transcoderDisabled")))},pr=r(357),ur=r(516),dr=r(173),mr=r(517),fr=r(174),br=function(e,t,r){return q.a(ur.a([[B.d,dr.a],[mr.a,fr.a(F.a(e,(r||[]).find((function(e){return e.name===t.reference}))))]]),F.a(e))(t)},hr=function(e){var t=e.dvr,r=e.dvrs;return{root:br(["root"],t,r),disk_usage_limit:br(["disk_usage_limit"],t,r),storage_limit:br(["storage_limit"],t,r),expiration:br(["expiration"],t,r),dvr_replicate:br(["dvr_replicate"],t,r),replication_port:br(["replication_port"],t,r),copy:br(["copy"],t,r),reference:t.reference}},yr=r(105),gr=r(95),vr=r(478),_r=r(710),Or=["defaultValue","label","onChange","validate","isRequired","getUnitString","getUnitValue","helperText","validateUnitString","dataTestIdLabel","externalChangeTimeout"];function jr(){return(jr=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Sr=function(e){var t=e.defaultValue,r=e.label,o=e.onChange,i=e.validate,a=e.isRequired,s=e.getUnitString,c=e.getUnitValue,l=e.helperText,u=e.validateUnitString,d=e.dataTestIdLabel,f=e.externalChangeTimeout,b=kr(e,Or),h=Object(j.b)().t,y=xr(Object(n.useState)(t),2),g=y[0],v=y[1],_=xr(Object(n.useState)(s(t)),2),O=_[0],x=_[1],w=xr(Object(n.useState)(""),2),k=w[0],S=w[1];return Object(n.useEffect)((function(){f&&x(t)}),[f]),Object(n.useEffect)((function(){Object(B.b)(g)&&v(t)}),[t]),Object(n.useEffect)((function(){O!==s(t)&&x(s(t))}),[b.streamName,f]),Object(n.useEffect)((function(){Object(B.b)(O)&&O!==s(t)&&x(s(t))}),[g]),Object(m.c)(p.dc,jr({},b,{error:k,helperText:k||l,label:Object(m.c)("span",{"data-testid":d},r),value:O,onChange:function(e){var t=e.target.value;x(t);var r=u(t,a);if(r.isValid){var n=c(t),s=i(n,t);s.isValid?(o(n),S("")):S(h(s.validationError))}else S(h(r.validationError))}}))};Sr.defaultProps={label:null,validate:fr.a({isValid:!0}),isRequired:!1,helperText:null,defaultValue:null,"data-testid":"",dataTestIdLabel:""};var Pr=["defaultValue","label","onChange","validate","isRequired"];function Tr(e){return(Tr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ir(){return(Ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ar(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==Tr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Tr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Tr(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Dr={s:"s",m:"m",h:"h",d:"d",w:"w"},Er=Ar(Ar(Ar(Ar(Ar({},Dr.s,1),Dr.m,60),Dr.h,3600),Dr.d,86400),Dr.w,604800),$r=function(e){return e?q.a((function(t){return"".concat(e/Er[t]).concat(t)}),yr.a((function(t,r){return e%Er[r]==0&&Er[t]e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?"".concat(f("headerMediaList.textFilterLabelWithMediaCount",{mediaCount:s})):f("headerMediaList.textFilterLabel");return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{display:"flex",mb:2,width:"100%",alignItems:"center",pb:2,className:y.wrapper},Object(m.c)(p.l,{display:"flex",width:100,pr:2,className:y.textFilterWrapper},Object(m.c)(p.Rb,{placeholder:x,value:t||"",onChange:i}),b===d.b&&Object(m.c)(gn,{handleToggleFilter:O,view:l})),b!==d.b&&Object(m.c)(p.l,{display:"flex",alignItems:"center",className:y.otherFiltersWrapper},Object(m.c)(p.l,{className:y.viewFilter},Object(m.c)(gn,{handleToggleFilter:O,view:l})),Object(m.c)(p.l,{mr:2},Object(m.c)(p.Vb,{sort:c,menuWidth:186,onChange:r,items:[{label:f("sort.streamName"),radioButtons:[{value:"name",label:f("sort.sortAZ")},{value:"-name",label:f("sort.sortZA")}]},{label:f("sort.inputBitrate"),radioButtons:[{value:"stats.input_bitrate",label:f("sort.sortAsc")},{value:"-stats.input_bitrate",label:f("sort.sortDesc")}]},{label:f("sort.numberOfClients"),radioButtons:[{value:"stats.online_clients",label:f("sort.sortAsc")},{value:"-stats.online_clients",label:f("sort.sortDesc")}]}]})),!h&&Object(m.c)(pn,{filterCounts:a,handleToggleFilter:O}),Object(m.c)(p.o,{isOpen:v,onChangeIsOpen:_}))),v&&Object(m.c)(o.a.Fragment,null,h&&Object(m.c)(xn,null,Object(m.c)(pn,{filterCounts:a,handleToggleFilter:O})),Object(m.c)(xn,null,Object(m.c)(mn,{filterCounts:a,handleToggleMultipleFilter:function(e,t){return function(n){var o=Object(lt.a)(t||[]);o=o.includes(n)?o.filter((function(e){return e!==n})):[].concat(vn(o),[n]),r(e,o.join(","))}}})),Object(m.c)(xn,null,Object(m.c)(fn,{filterCounts:a,handleToggleFilter:O}))))};wn.defaultProps={query:void 0};var kn=function(e){var t=e.children,r=Object(n.useContext)(u.b),o=Object(n.useCallback)((function(){return function(e){return[{to:"/create",enabled:!0,isSpecial:!0},{name:"media.streams",to:"/streams",enabled:!0,entity:d.c.stream},{name:"media.templates",to:"/templates",enabled:null==e?void 0:e.main_templates,entity:d.c.template},{name:"media.multiplexers",to:"/multiplexers",enabled:null==e?void 0:e.main_transponders,entity:d.c.multiplexer},{name:"media.sources",to:"/sources",enabled:null==e?void 0:e.main_cluster_sources,entity:d.c.source},{name:"media.vods",to:"/vods",enabled:null==e?void 0:e.main_vod_locations,entity:d.c.vod},{name:"media.dvbCards",to:"/dvb-cards",enabled:null==e?void 0:e.main_dvb_cards,entity:d.c.dvbCard},{name:"media.agents",to:"/agents",enabled:null==e?void 0:e.main_agents,entity:"agent"}].filter((function(e){return e.enabled}))}(r)}),[r]);return Object(m.c)(p.Kb,{menuItems:o(),id:"media-list"},t)},Sn=r(8),Pn=r(862),Tn=r.n(Pn),In=r(863),Cn=r.n(In),An=r(354),Dn=r(864),En=r(41);function $n(e){return($n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Nn(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==$n(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==$n(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===$n(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ln="disabled",Rn="error",qn="waiting",Mn="running",Fn=Object(En.a)()((function(e,t){var r,n,o=t.status,i=t.isIcon,a=Nn(Nn(Nn(Nn({},Mn,e.palette.success.main),qn,e.palette.warning.main),Ln,e.palette.grey[500]),Rn,e.palette.error.main);return i?{icon:{fontSize:15,lineHeight:1,display:"inline-flex",color:null!==(n=a[o])&&void 0!==n?n:e.palette.text.primary}}:{icon:{background:null!==(r=a[o])&&void 0!==r?r:e.palette.text.primary,borderRadius:"50%",width:8,height:8}}})),Un=Nn(Nn(Nn(Nn({},Mn,Object(m.c)(Yt.q,null)),qn,Object(m.c)(Yt.t,null)),Ln,Object(m.c)(Yt.h,null)),Rn,Object(m.c)(Yt.i,null)),zn=function(e){var t,r=e.disabled,n=e.status,o=e.isIcon,i=r?Ln:null!=n?n:"",a=Fn({status:i,isIcon:o}).classes;return Object(m.c)("span",{className:a.icon},o&&null!==(t=Un[i])&&void 0!==t?t:"")},Bn=function(e){var t,r,i=e.media,a=e.expanded,s=Object(j.b)().t,c=Object(n.useContext)(u.c),l=Object(U.useLocation)(),f=(null===(t=i.stats)||void 0===t?void 0:t.running_on)||[],b="".concat(s("runningOn")," ").concat(f.join(", ")),h=i.title||i.meta&&i.meta.comment||"",y=c===d.b?i.name:h;return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{display:"flex",alignItems:"center",gap:1,lineHeight:"15px"},Object(m.c)(zn,{disabled:i.disabled,status:null===(r=i.stats)||void 0===r?void 0:r.status,isIcon:!0}),Object(m.c)(p.xb,{to:{pathname:"/streams/".concat(encodeURIComponent(i.name)),state:{filter:l.search}},component:Mt.a,color:"primary",className:"fixedWidthTableContent"},Object(m.c)(p.kc,{color:"primary",fontSize:12,component:"span",variant:"subtitle2",lineHeight:"15px"},c===d.b?h:i.name))),a&&Object(m.c)(p.l,{mt:1},Object(m.c)("div",{className:"fixedWidthTableContent"},Object(m.c)(p.jc,{title:y,placement:"right-end"},Object(m.c)(p.kc,{component:"span",lineHeight:"20px",fontSize:10},y))),c!==d.b&&(i.named_by===st.d.config||i.named_by===st.d.remote)&&Object(m.c)(p.kc,{component:"p",lineHeight:"20px",fontSize:10},i.static?s("streamList.table.alwaysStarted"):s("streamList.table.onDemand")),f.length>0&&Object(m.c)(p.jc,{title:b,placement:"right-end"},Object(m.c)(p.kc,{lineHeight:"20px",className:"fixedWidthTableContent",fontSize:10},b)),Object(m.c)(Ft.a,{media:i,stats:i.stats,"data-testid":"stream-link-".concat(i.name),fontSize:10})))};function Hn(e){return(Hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Vn(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==Hn(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Hn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Hn(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Wn=Object(p.uc)()((function(e,t){var r=t.color;return{statusLine:Vn({display:"inline-flex",alignItems:"center",position:"relative",fontSize:12,padding:"0 4px",minWidth:0,width:100},e.breakpoints.down("lg"),{width:"auto"}),statusBg:{position:"absolute",backgroundColor:r,left:0,top:-2,bottom:-2,right:0,opacity:.08,pointerEvents:"none",borderRadius:4},statusIcon:{display:"inline-flex",fontSize:10,lineHeight:"1",justifyContent:"center",paddingTop:3,width:16,height:16,backgroundColor:r,border:"1px solid #fff",color:e.palette.common.white,borderRadius:"50%",marginRight:5,flexShrink:0},source:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}}})),Gn=Object(p.uc)()((function(e){return{toggleRowButton:{color:e.palette.text.primary,fontSize:14,marginLeft:20},tableBodyCell:{padding:e.spacing(1)},tableCheckbox:Vn({padding:0},e.breakpoints.up("lg"),{marginTop:-2}),outputCell:Vn({display:"flex",alignItems:"flex-start",gap:e.spacing(1)},e.breakpoints.down("lg"),{flexDirection:"column"}),actions:Vn(Vn({},e.breakpoints.up("lg"),{justifyContent:"flex-end",marginLeft:"auto",marginTop:-6}),e.breakpoints.down("lg"),{width:"100%",borderTop:"1px solid rgba(212, 214, 221, 0.2)",paddingTop:e.spacing(1)})}})),Kn=Object(p.uc)()((function(e){return{icon:{color:e.palette.grey[500],marginRight:5,fontSize:15,lineHeight:"1",display:"inline-flex"},text:{fontSize:12}}})),Yn=function(e){var t=e.Icon,r=e.text,n=e.minWidth,o=Kn().classes;return Object(m.c)(p.l,{display:"flex",alignItems:"center",flexShrink:0,minWidth:n},Object(m.c)("span",{className:o.icon},Object(m.c)(t,null)),Object(m.c)("span",{className:o.text},r))},Jn=function(e){var t,r,n,o,i,a=e.media,s=null!==(t=null===(r=a.inputs)||void 0===r?void 0:r.findIndex((function(e){var t;return null===(t=e.stats)||void 0===t?void 0:t.active})))&&void 0!==t?t:-1,c=null===(n=a.inputs)||void 0===n?void 0:n[s],l=Object(qt.h)(a,c),u=Xt().getInputStatusColor,d=_e.a.getFormattedTime(null===(o=a.stats)||void 0===o?void 0:o.lifetime,!1,"n/a"),f=Object(qt.e)({media:a}),b=Wn({color:u({status:l,useDifferColorByInputKey:!0,inputIndex:s})}).classes;return Object(m.c)(p.l,{display:"flex",alignItems:"flex-start",gap:1},Object(m.c)("span",{className:b.statusLine},Object(m.c)("span",{className:b.statusBg}),Object(m.c)("span",{className:b.statusIcon},c?s+1:""),Object(m.c)("span",{className:b.source,title:f},f),Object(m.c)(p.l,{marginLeft:"auto"},Object(m.c)(or,{media:a,infoIconSize:16}))),Object(m.c)(Yn,{Icon:Yt.r,text:d,minWidth:65}),Object(m.c)(Yn,{Icon:Yt.e,text:Object(qt.b)({bitrate:null===(i=a.stats)||void 0===i?void 0:i.input_bitrate}),minWidth:80}))};function Qn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Xn(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Xn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Xn(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&Object(m.c)(ro,{selectedStreams:o,setSelectedStreams:l,goToMultiEdit:d})})},ao=r(32),so=r(10),co={title:""},lo=ao.d().shape({title:ao.e().required("required")}),po=function(){var e=Object(j.b)().t,t=Ge()().history,r=Object(_.xb)();return Object(m.c)(p.W,{initialValues:co,onSubmit:function(e){return r({body:{title:e.title},onSuccess:function(e){var r;t.push("/streams/".concat(encodeURIComponent(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.name)))}})},validationSchema:lo},(function(){return Object(m.c)(p.l,{width:{md:"33%"}},Object(m.c)(p.bb,{name:"title",label:e("streamList.newItemForm.streamTitleLabel"),inputProps:{"data-testid":"new-stream-title"},autoFocus:!0,docDescription:so.a.schemas.stream_config_specific.properties.name.description}))}))};function uo(e){return(uo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function mo(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
mo=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function l(e,t,r,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),s=new k(o||[]);return n(a,"_invoke",{value:O(e,r,s)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var u={};function d(){}function m(){}function f(){}var b={};c(b,i,(function(){return this}));var h=Object.getPrototypeOf,y=h&&h(h(S([])));y&&y!==t&&r.call(y,i)&&(b=y);var g=f.prototype=d.prototype=Object.create(b);function v(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){var o;n(this,"_invoke",{value:function(n,i){function a(){return new t((function(o,a){!function n(o,i,a,s){var c=p(e[o],e,i);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==uo(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){l.value=e,a(l)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}(n,i,o,a)}))}return o=o?o.then(a,a):a()}})}function O(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return P()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=j(a,r);if(s){if(s===u)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=p(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===u)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function j(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,j(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),u;var o=p(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,u;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),w(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;w(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}function fo(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function bo(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){fo(i,n,o,a,s,"next",e)}function s(e){fo(i,n,o,a,s,"throw",e)}a(void 0)}))}}var ho=function(e){var t=e.validateFn,r=e.timeOutMs,o=void 0===r?300:r,i=Object(n.useRef)({}),a=Object(n.useRef)();return Object(n.useCallback)((function(e){return!e||(void 0!==i.current[e]?i.current[e]:new Promise((function(r,n){var s=Date.now();a.current=s,window.setTimeout(bo(mo().mark((function o(){var c;return mo().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(a.current!==s){o.next=8;break}return o.next=3,t(e);case 3:c=o.sent,i.current[e]=c,r(c),o.next=9;break;case 8:n();case 9:case"end":return o.stop()}}),o)}))),o)})))}),[o])};function yo(e){return function(e){if(Array.isArray(e))return go(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return go(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return go(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function go(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&Object(m.c)(ro,{selectedStreams:w,setSelectedStreams:k,goToMultiEdit:W})}),q===st.f.card&&Object(m.c)(p.db,null,Object(m.c)(p.hb,{container:!0,spacing:2},(v||[]).map((function(e){return Object(m.c)(p.hb,{item:!0,xs:12,md:4,lg:3,xl:2,key:e.name},Object(m.c)(Dn.a,{token:P,stream:e,config:r,product:a,onIgnoreStream:le,toggleStreamDisabled:se,named_by:N}))})))),q===st.f.compact&&Object(m.c)(io,{streams:v,onAllStreamsToggle:V,onStreamToggle:H,selectedStreams:w,toggleStreamDisabled:se,onIgnoreStream:le,dvrs:Y,setSelectedStreams:k,goToMultiEdit:W}))),Object(m.c)(p.l,null,Object(m.c)(p.l,null,pe),re&&Object(m.c)(p.l,{textAlign:"center",width:"100%"},Object(m.c)(p.u,{size:30,color:"primary"})))))))};Ao.defaultProps={mediaNames:[]};var Do=r(738),Eo=function(e){var t,r,o=e.media,i=Object(j.b)().t,a=Object(p.xc)(),s=yt({}),c=s.sort,l=s.handlePaginationChange,u=Object(_.lb)({params:{name:o.name,sort:c||void 0},options:{refetchInterval:3e3,keepPreviousData:!0}}),d=u.data,f=u.isLoading,b=Object(_.kb)(),h=Object(_.mb)(),y=Object(n.useCallback)((function(e){return b({params:{id:e},onSuccess:function(){return h()},onError:function(){return h()}})}),[]),g=Object(n.useMemo)((function(){return{items:[{title:i("mediaClientsPage.protocol"),renderData:function(e){return e.proto}},{title:Object(m.c)(p.Wb,{sortKey:"dvr",label:"mediaClientsPage.dvr",handlePaginationChange:l,sort:c}),renderData:function(e){return Object(m.c)(p.l,{fontSize:16,color:a.palette.success.main},e.dvr&&"✔")}},{title:i("mediaClientsPage.address"),renderData:function(e){return e.ip}},{title:i("mediaClientsPage.country"),renderData:function(e){return e.country}},{title:i("mediaClientsPage.transmitted"),renderData:function(e){return _e.a.bytes(e.bytes)}},{title:i("mediaClientsPage.duration"),renderData:function(e){var t=e.updated_at&&e.opened_at?e.updated_at-e.opened_at:null;return _e.a.getFormattedTime(t)}},{title:i("mediaClientsPage.token"),renderData:function(e){return e.token},breakWord:!0},{title:i("mediaClientsPage.userId"),renderData:function(e){return e.user_id},grow:2},{title:i("mediaClientsPage.userAgent"),renderData:function(e){return Object(m.c)(p.l,{display:"flex",justifyContent:"space-between",gap:1,overflow:"hidden"},Object(m.c)(p.l,{style:{wordBreak:"break-all"}},e.user_agent),Object(m.c)(p.l,null,Object(m.c)(p.lb,{"aria-label":i("kill"),title:i("kill"),onClick:function(){return y(e.id)},color:"secondary"},Object(m.c)(p.B,{fontSize:"small"}))))},grow:4}]}}),[l,y,c,i,a.palette.success.main]);return Object(m.c)(p.db,{"data-testid":"media-clients"},Object(m.c)(p.Sb,{isLoading:f},0===(null==d?void 0:null===(t=d.sessions)||void 0===t?void 0:t.length)&&Object(m.c)("div",{"data-testid":"media-clients"},Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)("div",{className:"notice-text"},i("mediaClientsPage.noInformation")))),!(null==d||null===(r=d.sessions)||void 0===r||!r.length)&&d.sessions.length>0&&Object(m.c)(p.A,{data:null==d?void 0:d.sessions,columns:g,primaryKey:"id"})))},$o=r(291),No=r(53),Lo=r(117),Ro=/^[0-9]*$/,qo=/^(?:((srt)|(tshttp)|(rtmp)|(hls)|(m4s)|(m4f)|(udp)|(decklink)|(aja)|(dektec)|(tshttps)|(udp1)|(udp2)|(m4fs)|(m4ss)|(rtmps)):\/\/)[\w.-]+[\w\-._~:/?#[\]@!$&'()*+,;=%]*$/,Mo=/^(?:([A-Za-z1-9_+-.]+):\/{2,3})[\w\-._~:/?#[\]@!$&'()*+,;=%]*$/,Fo=/^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]|[12]\d|3[0-2]))?$/,Uo=/^((25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){0,3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(\/\d{1,2})?$/,zo=q.a(B.e,Ot.a("value")),Bo=function(e){var t=e.value;return Ro.test(t)},Ho=function(e){return Object(Lo.a)(Object(Lo.b)(zo,"".concat(e," validators.fieldRequiredError")))},Vo=Object(Lo.a)(Object(Lo.b)(Bo,"shouldBeNumberError")),Wo=function(e){var t=e.value;return Bo({value:t})?"":"shouldBeNumberError"},Go=function(e){return Object(Lo.a)(Object(Lo.b)(zo,"".concat(e," validators.fieldRequiredError")),Object(Lo.b)(Bo,"shouldBeNumberError"))},Ko=function(e){return e&&3!==String(e).length?"countryError":""},Yo=Object(Lo.a)(Object(Lo.b)((function(e){var t=e.value;return Fo.test(t)}),"shouldBeIpError")),Jo=function(e){return function(e){var t=e.value;return Uo.test(t)}({value:e.value})?"":"shouldBeIpError"},Qo=function(e){var t=e.value,r=e.field,n=e.names;return zo({value:t})?n.includes(t)?"nameUniqueError":"":"".concat(r," validators.fieldRequiredError")};function Xo(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Zo(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Zo(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zo(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0)return{value:a,unit:t[i],index:parseInt(i,10)}}console.error("could find suitable unit for value: ",e,t)}(f,t,e,b);_(r.unit),x(r.index),S(r.value)}}),[f]);var P;if(k){var T=t.length<=1||r;P=Object(m.c)(ei,{readOnly:T,unit:v,onClick:function(){var e=j+1;e>=t.length&&(e=0);var r=t[e];h(k*r.factor),_(r),x(e)},className:"margin-left-10"})}return Object(m.c)(p.l,{className:"numeric-unit-input",mt:1},Object(m.c)(p.dc,{entity:o,path:i,value:k,onChange:function(e){e.target.value?(S(e.target.value),h(e.target.value*v.factor)):(S(void 0),h(null))},readOnly:r,dimension:P,validation:function(e){return Wo({value:e})},isCalculatedValue:a,disabled:s,data:c,templateData:l,showFullHelperInf:u,docDescription:y}))};ti.displayName="NumericUnitInput",ti.defaultProps={defaultUnit:"",readOnly:!1,isDefaultValue:!1,isCalculatedValue:!1,value:void 0,label:"",disabled:!1};var ri=["value","onChange","defaultUnit"];function ni(){return(ni=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var ii=[{label:"bandWidthInput.gigabitsPerSecond",factor:1073741824},{label:"bandWidthInput.megabitsPerSecond",factor:1048576},{label:"bandWidthInput.kilobitsPerSecond",factor:1024}],ai=function(e){var t=e.value,r=e.onChange,n=e.defaultUnit,o=oi(e,ri);return Object(m.c)(ti,ni({value:t,onChange:r,defaultUnit:n,units:ii},o))};ai.defaultProps={label:"",value:void 0};var si=ai,ci=r(400),li=r(72);function pi(e){return(pi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var ui=["token","handleRemove"];function di(e,t){for(var r=0;r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var vi={ENTER:13,BACKSPACE:8},_i=function(e){var t=e.token,r=e.handleRemove,n=gi(e,ui);return Object(m.c)("div",{"data-testid":n["data-testid"]},t,Object(m.c)("span",{className:"remove",onClick:r},"×"))},Oi=function(e){function t(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),hi(r=mi(this,t,[e]),"inputRef",null),hi(r,"setInputRef",(function(e){!r.inputRef&&e&&(r.inputRef=e)})),hi(r,"handleLabelClick",(function(){r.inputRef.focus()})),hi(r,"handleFocus",(function(){var e=r.props.expandLabel;r.setState({focus:!0}),e&&e(!0)})),hi(r,"checkValidation",(function(){var e=r.props,t=e.isValidation,n=e.validationFun,o=e.onChange,i=r.state.value;Object(B.c)(i)&&t&&n&&(n(i[i.length-1])||(r.setState({value:_r.a(i)}),o(_r.a(i))))})),hi(r,"handleBlur",(function(){var e=r.props,t=e.expandLabel,n=e.value;t&&!r.inputRef.value&&Ke.a(n)&&t(!1),r.checkValidation(),r.setState({focus:!1,editing:!1})})),hi(r,"handleChange",(function(e){var t=e.target.value,n=r.props,o=n.separators,i=n.isValidation,a=n.validationFun,s=n.onChange;r.setState((function(e){var n,c=lt.a(e.value);o.forEach((function(e){var r=t.split(e);r.length>1&&(n=r[0])})),e.editing?(c.pop(),n?(i&&a?a(n)&&c.push(n):c.push(n),r.setState({editing:!1})):c.push(t)):e.editing||""===t||(r.setState({editing:!0}),c.push(t));var l=Ke.a(c)||Ye.a(ci.a(c),"");return s(l?null:c),{value:c}}))})),hi(r,"handleKeyPress",(function(e){var t=e.keyCode,n=r.props.onChange,o=r.state,i=o.value,a=o.editing;t!==vi.BACKSPACE?a&&t===vi.ENTER&&(r.checkValidation(),r.setState({editing:!1})):Object(B.c)(i)&&(""===vr.a(i)||a?""===vr.a(i)&&(r.setState({value:_r.a(i)}),n(_r.a(i)),r.setState({editing:!1})):r.setState({editing:!0}))})),hi(r,"handleTokenRemove",(function(e){return function(){var t=r.props,n=t.onChange,o=t.value.filter((function(t,r){return r!==e}));r.setState({value:o}),n(o)}})),r.state={focus:!1,editing:!1,value:e.value},r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&bi(e,t)}(t,e),r=t,(n=[{key:"componentDidMount",value:function(){var e=this.props,t=e.expandLabel,r=e.value,n=e.listenToLabelClick;t&&t(Object(B.c)(r)),n&&n(this.handleLabelClick)}},{key:"componentDidUpdate",value:function(e){var t=this.props,r=t.value,n=t.expandLabel,o=Object(B.c)(e.value),i=Object(B.c)(r);n&&(!o&&i?n(!0):o&&!i&&n(!1)),!o&&i&&this.setState((function(){return{value:r}}))}},{key:"render",value:function(){var e=this,t=this.state,r=t.value,n=t.editing,o=t.focus,i=this.props,a=i.dataTestId,s=i.changed,c=i.disabled,l=i.readOnly,p=i.docDescription,u=n&&Object(B.c)(r),d=u?_r.a(r):r,f=u?vr.a(r):"",b=String(f).split("");return Object(B.e)(b)&&b.every(Ye.a(" "))&&(f=" "),Object(m.c)("div",{className:_t()("tokenline",{focus:o,changed:s,disabled:c})},Object(m.c)("div",{className:"tokens","data-testid":"".concat(a,"-tokens")},(d||[]).map((function(t,r){return Object(m.c)(_i,{key:r,token:t,handleRemove:e.handleTokenRemove(r),"data-testid":"".concat(a,"-tokens-token-").concat(r)})}))),Object(m.c)("input",{type:"text",ref:this.setInputRef,value:f,disabled:c,onChange:this.handleChange,readOnly:l,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyPress,"data-testid":a}),p&&Object(m.c)(li.a,{style:{alignSelf:"center"},docDescription:p}))}}])&&di(r.prototype,n),o&&di(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(o.a.Component);Oi.defaultProps={value:[],changed:void 0,disabled:void 0,readOnly:void 0,isValidation:!1,validationFun:null,separators:[],onChange:void 0,expandLabel:void 0,listenToLabelClick:void 0,dataTestId:""};var ji=Oi;function xi(e){return(xi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function wi(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Yi(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ji(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};return q.a(Di.a((function(t){return{key:t,value:e[t]}})),Ei.a($i.a("_changed")),gr.a)(e)},Zi=function(e){return e.reduce((function(e,t){var r=t.key,n=t.value;return r?Ji(Ji({},e),{},Qi({},r,n)):e}),{})},ea={key:"",value:""},ta=function(e){var t=e.extra,r=e.isArray,o=e.errorPath,i=e.errors,a=e.onError,s=e.onErrorResolve,c=e.onChange,l=e.onRemove,u=e.onRemoveByKey,d=e.disabled,f=e.isCalculatedValue,b=e.isTemplate,h=e.removeAlignEnd,y=Ki(e,zi),g=Object(j.b)().t,v=Vi(Object(n.useState)(t),2),_=v[0],O=v[1],x=Vi(Object(n.useState)(r?t:Xi(t)),2),w=x[0],k=x[1],S=Vi(Object(n.useState)(!1),2),P=S[0],T=S[1],I=Vi(Object(n.useState)(null),2),C=I[0],A=I[1];Object(n.useEffect)((function(){Ye.a(_,t)||(O(JSON.stringify(t)),k(r?t:Xi(t)))}),[t]);var D=function(e,t){return o?[].concat(Hi(o),[e,t]):void 0},E=function(e,t){return i&&o?i[Object(ge.c)(D(e,t))]:void 0},$=function(e){return function(){T(e)}},N=function(e,t){return function(r){var n,i,c=r.target.value,l=Ni.a([t,e]),p="key"===e&&/^\d+.*$/.test(c)?c.slice(1):c,u=Li.a(l,w);if(Object(B.e)(u)&&(n=u,i=e,s&&o?s(D(n,i)):fr.a(void 0))(),!Object(B.b)(u)||!Object(B.b)(p)){var d=function(e,t){return"key"===e&&Ui({key:t})||"value"===e&&Mi({value:t})||{isValid:!0}}(e,p);d.isValid||function(e,t){return function(r){return a&&o?a(D(e,t))(r):void 0}}(p,e)(d.error)}A(t),k(te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]&&arguments[2],o=r.state.vendors;return Object(m.c)(p.hb,{item:!0,xs:12,container:!0,spacing:2,className:"media-auth-input-container"},t&&o[t.vendor]&&o[t.vendor].options&&o[t.vendor].options.map((function(t){var o=t.key,i=t.placeholder,a=t.section,s=void 0===a?hs.drm:a,c=t.isRequired,l=t.helper;return Object(m.c)(p.hb,{item:!0,xs:4,key:o,className:"media-auth-input-wrapper"},Object(m.c)(p.dc,{required:c,helperText:l,label:o,placeholder:i,value:ar.a("",[s,o],e),onChange:r.handleOptionChange(s,o),inputProps:{"data-testId":"media-auth-drm-input-".concat(o)},disabled:n}))})))})),Ra(r,"renderVendorSelector",(function(){var e=r.props,t=e.media,n=e.isStream,o=r.state.vendors;return Object(m.c)(oa.a,{displayEmpty:!0,label:"",value:ws(Ot.a("drm")(t))||ws(F.a(["templateConfig","drm"])(r.props)),"data-testid":"drm-auth-select",onChange:r.handleVendorChange,items:Aa(Object.keys(o).map((function(e){return[o[e].value||xs,o[e].name]}))),HelperDocProps:{docDescription:so.a.schemas.stream_config_media.properties.drm.description,path:"stream_config_media.properties.drm",diskValue:ws(Ot.a("drm")(t)),templateValue:ws(F.a(["templateConfig","drm"])(r.props)),showFullHelperInf:n}})})),r.state={vendors:lt.a(Os)},r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&La(e,t)}(t,e),r=t,o=[{key:"getDerivedStateFromProps",value:function(e,t){var r=null;if(e.media.drm&&Object.keys(e.media.drm).length>0&&!Object.keys(t.vendors).includes(e.media.drm.vendor)){var n=t.vendors,o=Object.keys(e.media.drm);o.splice(o.indexOf("vendor"),1);var i=o.map((function(e){return{key:e,isRequired:!0}}));e.media.resource_id&&(i=[ys].concat(Aa(i))),n[e.media.drm.vendor]={name:e.media.drm.vendor,value:e.media.drm.vendor,options:i},r={vendors:n}}return r}}],(n=[{key:"render",value:function(){var e=this.props,t=e.t,r=e.media,n=e.templateConfig;return Object(m.c)(p.hb,{container:!0,"data-testid":"media-auth-requireDrm"},Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"subtitle1"},t("mediaAuthDrm.requireDrm"))),Object(m.c)(p.hb,{item:!0,xs:12,container:!0},Object(m.c)(p.hb,{item:!0,xs:12,sm:3,lg:3,className:"media-auth-selector"},this.renderVendorSelector()),Object(m.c)(p.hb,{item:!0,xs:12,sm:9,lg:9,container:!0},Object(m.c)(p.l,{mt:{xs:4,sm:0},width:"100%"},F.a(["drm","vendor"])(r)&&this.renderOptions(r,Ot.a("drm")(r)),!F.a(["drm","vendor"])(r)&&F.a(["drm","vendor"])(n)&&this.renderOptions(n,Ot.a("drm")(n),!0)))))}}])&&Ea(r.prototype,n),o&&Ea(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o}(o.a.Component);ks.defaultProps={isStream:!1};var Ss=ks,Ps=function(){var e=Object(j.b)().t;return Object(m.c)(p.kc,{variant:"h5"},e("templatePage.streamSettings"))},Ts=function(e){var t=e.media,r=e.isConfigChanged,i=e.onConfigChange,a=e.onConfigSave,s=e.isConfigSaving,c=e.showSaveButton,l=e.isTemplate,f=e.templateConfig,b=Object(j.b)().t,h=Object(n.useContext)(u.c),y=Object(B.e)(Ot.a("named_by")(t)),g=(h===d.b?{}:Object(_.l)()).data,v=$o.a([],"auth_backends")(g),O=Object(n.useRef)(),x=i(),w=function(){return!!O.current&&O.current.isDrmValid()};return Object(m.c)(o.a.Fragment,null,c&&Object(m.c)(p.n,{variant:"contained",color:"primary",size:"small",onClick:h===d.b||w()?a:fr.a(void 0),"data-testid":"saveButton",disabled:h!==d.b&&!w()||s||!r,endIcon:s&&Object(m.c)(p.u,{size:20,color:"primary"})},b(l?"templatePage.save":"save")),t?Object(m.c)(p.l,{"data-testid":"media-auth"},Object(m.c)(p.hb,{container:!0},Object(m.c)(p.hb,{item:!0,xs:12,lg:11,xl:9,"data-testid":"media-auth-common"},l&&Object(m.c)(p.l,{mt:1,mb:2},Object(m.c)(Ps,null)),Object(m.c)(Ia,{media:t,change:x,authBackends:v,templateConfig:f,isStream:y,product:h}),Object(m.c)("div",{className:"row-height"})),h!==d.b&&Object(m.c)(p.hb,{item:!0,xs:12,lg:11,xl:9},Object(m.c)(Ss,{ref:O,media:t,change:x,t:b,templateConfig:f,isStream:y})))):null)};Ts.defaultProps={media:void 0,templateConfig:void 0,onConfigChange:function(){},onConfigSave:function(){},isConfigChanged:!1,isConfigSaving:!1,showSaveButton:!1,isTemplate:!1};var Is=Ts,Cs=r(358),As=r.n(Cs),Ds=r(78),Es=r(83),$s=r(123);function Ns(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Ls(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ls(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ls(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&0===$o.a([],"inputs")(b).filter((function(e){return e.url===t.url})).length);return!t||u||l||(!Object(B.e)(c)||c.active)&&null!==(s=r.stats)&&void 0!==s&&s.alive?u?Object(m.c)("div",{className:"underline","data-testid":"stream-unsaved-url-".concat(o)},y("unsaved")):null:Object(m.c)(No.a,{label:y(p?"connect":"switch"),disabled:v,onClick:N,"data-testid":"stream-switch-url-".concat(o)})}()),!R&&Object(m.c)("div",null,Object(m.c)(p.lb,{size:"small",disabled:0===o||l,onClick:function(){return h({oldIndex:o,newIndex:o-1})}},Object(m.c)(p.ub,null)),Object(m.c)(p.lb,{size:"small",disabled:o===i||l,onClick:function(){return h({oldIndex:o,newIndex:o+1})}},Object(m.c)(p.tb,null))),Object(m.c)(p.dc,{force:!0,path:["input","url",o],label:q,value:w,onChange:function(e){e.persist(),clearTimeout(Rs),k(e.target.value),Rs=setTimeout((function(){$(e.target.value);var t=qs(e.target.value),n=r.inputs?JSON.parse(JSON.stringify(r.inputs)):[];n[o]?n[o].url=t:n[o]={url:t},a(["inputs"],"raw")(n)}),1e3)},onBlur:function(){!w&&r.inputs&&r.inputs[o]&&L()},inputProps:{"data-testid":"stream-input-url-".concat(o)},error:M,warning:P,className:P&&"warning",disabled:l}),!R&&Object(m.c)("div",{className:"row-height flex-end more-block margin-left-10 margin-right-10"},Object(m.c)(p.n,{onClick:function(){d.push({pathname:"/".concat(u,"/").concat(encodeURIComponent(s.join(",")),"/input/").concat(o,"/options"),state:{names:s,sourceIndex:o}})},"data-testid":"stream-show-options-url-".concat(o),size:"small",variant:"text",color:"primary"},y("options-button"))),!R&&!l&&Object(m.c)("div",{key:2,className:"row-height flex-end more-block margin-left-10"},Object(m.c)(p.lb,{"aria-label":y("remove"),color:"secondary",onClick:L,"data-testid":"stream-remove-url-".concat(o),size:"small"},Object(m.c)(p.B,{fontSize:"small"}))))};Ms.defaultProps={fromTemplate:!1};var Fs=window.location.port,Us=window.location.protocol,zs=window.location.hostname,Bs=q.a(vr.a,Do.a(":")),Hs=function(e){var t=e.config,r=e.protocol,n=e.defaultPort,o=e.excludeDefaultPorts,i=void 0!==o&&o,a=e.adminPorts,s=void 0===a?[]:a,c=e.portInConfig,l=e.egressHostnames,p=e.mediaPort,u=e.prefix,d=Array.isArray(t[r])&&Object(B.e)(t[r])&&t[r][0].address?t[r][0].address:null;if("".concat(r,":")===Us){var m=String(Fs);return i?(s.includes(Number(Fs))&&!xt.a(c)&&(m=String(c)),"".concat(r,"://").concat(l?l[0]:d||zs).concat(p&&":".concat(p)||(m===n||""===m?"":":".concat(m))).concat(u||"")):"".concat(r,"://").concat(l?l[0]:d||zs,":").concat(p||"".concat(m===n||""===m?n:Fs)).concat(u||"")}var f=Bs(String(Array.isArray(t[r])&&Object(B.e)(t[r])&&t[r][0].port?t[r][0].port:t[r]));return i?"".concat(r,"://").concat(l?l[0]:d||zs).concat(p&&":".concat(p)||(f===n?"":":".concat(f))).concat(u||""):"".concat(r,"://").concat(l?l[0]:d||zs,":").concat(p||f).concat(u||"")},Vs={httpHostPort:function(e){var t,r,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(null!=e&&null!==(t=e.listeners)&&void 0!==t&&t.http&&0!==(null==e?void 0:null===(r=e.listeners)||void 0===r?void 0:r.http.length))return Hs({config:e.listeners,protocol:"http",defaultPort:"80",excludeDefaultPorts:n,adminPorts:e.admin_http,portInConfig:e.http?e.http[0]:null,egressHostnames:o,prefix:i})},httpsHostPort:function(e){var t,r,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(null!=e&&null!==(t=e.listeners)&&void 0!==t&&t.https&&0!==(null==e?void 0:null===(r=e.listeners)||void 0===r?void 0:r.https.length))return Hs({config:e.listeners,protocol:"https",defaultPort:"443",excludeDefaultPorts:n,egressHostnames:o,prefix:i})},rtmpHostPort:function(e){var t,r,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(null!==(t=e.listeners)&&void 0!==t&&t.rtmp&&0!==(null===(r=e.listeners)||void 0===r?void 0:r.rtmp.length))return Hs({config:e.listeners,protocol:"rtmp",defaultPort:"1935",excludeDefaultPorts:n})},rtspHostPort:function(e){var t,r,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(null!==(t=e.listeners)&&void 0!==t&&t.rtsp&&0!==(null===(r=e.listeners)||void 0===r?void 0:r.rtsp.length))return Hs({config:e.listeners,protocol:"rtsp",defaultPort:"554",excludeDefaultPorts:n})},mseldProtocol:function(e){var t;return(null==e?void 0:null===(t=e.listeners)||void 0===t?void 0:t.https)&&e.listeners.https.length>0?"wss":"ws"},srtHostPort:function(e,t,r){if(e.srt||t)return Hs({config:e,protocol:"srt",mediaPort:t,egressHostnames:r})}},Ws=r(868),Gs=r.n(Ws);function Ks(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Ys(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ys(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ys(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function nc(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return oc(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return oc(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oc(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&R[0]||!b.includes("/")&&"static"||"":h.every((function(e){return!e.includes("/")}))?"static":"",M=c&&R.length>0?R[0]:i.prefix,U=i.prefix||q,z=a===d.d.templates?"":b||"",B=function(e){var t=e.path,r=rc(e,ec);return Object(m.c)(p.dc,tc({entity:"streams",path:t,data:i,templateData:y,onChange:g(t),showFullHelperInf:v},r))},H=function(e){return"".concat(e,"/").concat(U?"".concat(U,"/"):"").concat(z).concat(C())},V=function(e){return Object(m.c)(p.ec,{value:e,inputProps:{"data-testid":"rtmp"},startAdornmentLabel:x("mediaPublishLocation.rtmp")})},W=Object(m.c)("div",{className:"row-height notice-text flex-end"},Object(m.c)(p.kc,{variant:"body1",component:"p"},x("mediaPublishLocation.rtmpIsNotConfigured")," ",Object(m.c)(p.xb,{to:"/config",component:Mt.b,color:"primary"},x("mediaPublishLocation.globalConfigPage"))));if(E&&s!==d.b){var G=H(E);W=V(G)}s===d.b&&(W=$o.a([],"ingress_hostnames")(f).map((function(e){var t=H("rtmp://".concat(e));return Object(m.c)(p.l,{key:e,mt:1},V(t))})));var K=Object(m.c)("div",{className:"row-height notice-text flex-end"},Object(m.c)(p.kc,{variant:"body1",component:"p"},x("mediaPublishLocation.rtspIsNotConfired")," ",Object(m.c)(p.xb,{to:"/config",component:Mt.b,color:"primary"},x("mediaPublishLocation.globalConfigPage"))));if($){var Y="".concat($,"/").concat(M?"".concat(M,"/"):"").concat(z).concat(C());K=Object(m.c)(p.ec,{value:Y,inputProps:{"data-testid":"rtsp"},startAdornmentLabel:x("mediaPublishLocation.rtsp")})}var J=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t){var r=F.a(["srt_publish","passphrase"])(i);return"".concat(e).concat(r?"?passphrase=".concat(r):"")}return"".concat(e,"?streamid=#!::r=").concat(M?"".concat(M,"/"):"").concat(z,",m=publish")},Q=Object(m.c)(p.ec,{value:N?J(N):x("mediaPublishLocation.srtIsNotConfired"),inputProps:{"data-testid":"srt"},startAdornmentLabel:x("mediaPublishLocation.srt"),color:!N&&"grey",link:!N&&"/config"}),X=Object(m.c)(p.ec,{value:L?J(L,!0):x("mediaPublishLocation.srtPublishIsNotConfired"),inputProps:{"data-testid":"srt-dedicated"},startAdornmentLabel:x("mediaPublishLocation.srtDedicatedPort"),color:!L&&"grey",hideEndAdornment:!L});if(s===d.b){var Z=F.a(["srt_publish","port"])(i)||"";X=$o.a([],"ingress_hostnames")(f).map((function(e){var t=J("srt://".concat(e).concat(Z?":".concat(Z):""),!0);return Object(m.c)(p.l,{key:e,mt:1},function(e,t){return Object(m.c)(p.ec,{value:e,inputProps:{"data-testid":t?"srt-dedicated":"srt"},startAdornmentLabel:x(t?"mediaPublishLocation.srtDedicatedPort":"mediaPublishLocation.srt")})}(t,!0))}))}var ee=null;if(D){var te="".concat(D,"/").concat(M?"".concat(M,"/"):"").concat(z,"/mpegts").concat(C());ee=Object(m.c)(p.ec,{value:te,inputProps:{"data-testid":"https-mpegts"},startAdornmentLabel:x("mediaPublishLocation.httpsMpegts")})}var re=null;if(A){var ne="".concat(A,"/").concat(M?"".concat(M,"/"):"").concat(z,"/mpegts").concat(C());re=Object(m.c)(p.ec,{value:ne,inputProps:{"data-testid":"http-mpegts"},startAdornmentLabel:x("mediaPublishLocation.httpMpegts")})}var oe=null;_||O||(oe=Object(m.c)(Zs,{name:b||"",password:k,entity:a,product:s,templateConfig:y,media:i,renderTextField:B}));var ie=T&&(T.lengthso.a.schemas.srt_config_base.properties.passphrase.maxLength)?x("streams-invalid-passphrase"):null;return Object(m.c)(o.a.Fragment,null,s!==d.b&&!u&&Object(m.c)(p.l,{my:1,width:"100%"},oe),Object(m.c)(p.hb,{container:!0,spacing:2},s!==d.b&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:12,sm:6},re),Object(m.c)(p.hb,{item:!0,xs:12,sm:6},ee),Object(m.c)(p.hb,{item:!0,xs:12,sm:6},K)),Object(m.c)(p.hb,{item:!0,xs:12,sm:6},W),s!==d.b&&Object(m.c)(p.hb,{item:!0,xs:12,sm:6},Q),Object(m.c)(p.hb,{item:!0,xs:12,sm:6},X)),Object(m.c)(p.hb,{container:!0,spacing:2,mt:1},Object(m.c)(p.hb,{item:!0,xs:6},B({value:(null==i?void 0:null===(t=i.srt_publish)||void 0===t?void 0:t.port)||$o.a("",["srt_publish","port"])(y),path:["srt_publish","port"],docDescription:so.a.schemas.srt_config.allOf[0].properties.port.description,inputProps:{"data-testid":"stream-srt_publish-port"},onChange:function(e){return g(["srt_publish","port"])(e.target.value?Number(e.target.value):null)}})),Object(m.c)(p.hb,{item:!0,xs:6},B({value:(null==i?void 0:null===(r=i.srt_publish)||void 0===r?void 0:r.passphrase)||$o.a("",["srt_publish","passphrase"])(y),path:["srt_publish","passphrase"],docDescription:so.a.schemas.srt_config_base.properties.passphrase.description,inputProps:{"data-testid":"stream-srt_publish-passphrase"},onChange:function(e){return function(e){var t=e.target.value;I(t),(!t.length||t.length>=so.a.schemas.srt_config_base.properties.passphrase.minLength&&t.length<=so.a.schemas.srt_config_base.properties.passphrase.maxLength)&&g(["srt_publish","passphrase"])(t)}(e)},error:ie,helperText:ie}))),Object(m.c)(p.l,{mt:1,width:"100%"},B({value:i.password||$o.a("","password")(y),path:["password"],docDescription:so.a.schemas.stream_config_input.properties.password.description})),Object(m.c)(p.l,{mt:1,width:"100%"},B({value:i.max_bitrate||$o.a("","max_bitrate")(y),path:["max_bitrate"],docDescription:so.a.schemas.stream_input_base.properties.max_bitrate.description})),s!==d.b&&Object(m.c)(p.l,{mt:1,width:"100%"},B({value:F.a(["on_publish","url"])(i)||ar.a("",["on_publish","url"])(y),path:["on_publish","url"],docDescription:so.a.schemas.auth_spec.properties.url.description})))};ic.defaultProps={hideWebRTC:!1,change:void 0,onConfigChange:void 0,isMultiEdit:!1,templateConfig:null,mediaNames:[],entity:"",isStream:!1};var ac=ic,sc=function(e){var t=e.media,r=e.config,n=e.onConfigChange,o=e.mediaNames,i=e.isMultiEdit,a=e.entity,s=e.templateConfig,c=e.isStream,l=e.product,p=e.configEffective,u=e.isTemplate,d=e.isOverviewPage;return Object(Es.j)(t,s)?Object(m.c)(ac,{isMultiEdit:i,mediaNames:o,name:t.name,config:r,media:t,onConfigChange:n,entity:a,templateConfig:s,isStream:c,product:l,configEffective:p,isTemplate:u,isOverviewPage:d}):null};sc.defaultProps={media:void 0,config:void 0,isMultiEdit:!1,isStream:!1,templateConfig:null};var cc=sc,lc=(r(1364),["path"]);function pc(){return(pc=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function dc(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return mc(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return mc(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function mc(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&b(["source_timeout"])(e),xt.a(e)&&b(["source_timeout"])(null)},units:[{label:k("seconds"),factor:1}],data:f,templateData:g,showFullHelperInf:v,docDescription:so.a.schemas.stream_input_base.properties.source_timeout.description}),Object(m.c)("div",{className:"row-height"})),Object(m.c)(p.hb,{item:!0,xs:12,lg:9},Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{display:"flex",justifyContent:"start",alignItems:"start"},Object(m.c)(Ai,{expanded:!0,widthAuto:!0,className:"auto-height",label:k("streamInputUrlOptionsPage.dvbToWebvttLabel")}),Object(m.c)(p.jb,{docDescription:so.a.schemas.stream_config_input.properties.dvbocr.description})),Object(m.c)(No.a,{label:k("disable"),onClick:D(null),checked:!f.dvbocr,className:"margin-right-10","data-testid":"dvbocr-disable",isRadio:!0}),Object(m.c)(No.a,{label:k("addButton"),onClick:D("add"),checked:"add"===f.dvbocr,"data-testid":"dvbocr-add",isRadio:!0}),Object(m.c)(No.a,{label:k("replace"),onClick:D("replace"),checked:"replace"===f.dvbocr,"data-testid":"dvbocr-replace",isRadio:!0}))))),Object(m.c)(p.hb,{container:!0,spacing:0},Object(m.c)(p.hb,{item:!0,container:!0,xs:12,sm:11,spacing:2},Object(m.c)(p.hb,{item:!0,xs:12,lg:9},Object(m.c)(p.l,{mt:2,display:"flex",alignItems:"center"},Object(m.c)(p.l,{mr:2,style:{position:"relative",top:9,whiteSpace:"nowrap"}},Object(m.c)(p.Q,{control:Object(m.c)(p.s,{checked:Object(B.d)(f.cluster_ingest)?!!f.cluster_ingest:!!Ot.a("cluster_ingest")(g),onChange:function(){b(["cluster_ingest"],"raw")(xt.a(f.cluster_ingest)?{capture_at:null}:null)},color:"primary",inputProps:{"data-testid":"cluster-ingest-toggle"},disabled:xt.a(f.cluster_ingest)&&Object(B.d)(Ot.a("cluster_ingest")(g))}),label:k("streamInputMainPage.clusterIngestLabel")}),Object(m.c)(p.jb,{docDescription:so.a.schemas.stream_config_onpremises.properties.cluster_ingest.description,diskValue:f.cluster_ingest?"true":null,templateValue:Ot.a("cluster_ingest")(g)?"true":null,showFullHelperInf:v})),Object(m.c)(p.l,null,$({value:F.a(["cluster_ingest","capture_at"])(f)||ar.a("",["cluster_ingest","capture_at"])(g),path:["cluster_ingest","capture_at"],disabled:!(f.cluster_ingest||Ot.a("cluster_ingest")(g)),docDescription:so.a.schemas.cluster_ingest_config.properties.capture_at.description})))))),Object(m.c)(p.C,{open:T,handleClose:E,onDelete:function(){b(["inputs"],"raw",(function(){return E()}))([])},title:k("streamInputMainPage.useUrlsFromTemplateConfirm"),notice:k("streamInputMainPage.useUrlsFromTemplateNotice"),removeButtonText:k("streamInputMainPage.useUrlsFromTemplateButton")})):null)};fc.defaultProps={media:void 0,templateConfig:null,isStream:!1};var bc=Object(ge.b)(fc),hc=r(477),yc=r(734),gc=r(481),vc=r(343),_c=r(740),Oc=r(737);function jc(e){return function(e){if(Array.isArray(e))return xc(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return xc(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return xc(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function xc(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r p":{overflow:"hidden",textOverflow:"ellipsis"}}}})),Cc=Object(p.uc)()((function(e){return{searchWrapper:{background:e.palette.common.white}}})),Ac=Object(p.uc)()((function(e){return{multiplexerWrapper:{padding:e.spacing(2),marginTop:e.spacing(2)},generalWrapper:{background:"#F9FAFB",borderRadius:e.spacing(.5,.5,0,0),boxShadow:"none",marginTop:e.spacing(1),"&:before":{display:"none"}},addButton:{width:20,height:20,minWidth:"auto",padding:e.spacing(.5)},deleteSettingsButton:{marginTop:e.spacing(3)},labelWithInfo:{"& label":{top:-6}},addProgram:{"&>div":{alignItems:"flex-end"}}}})),Dc=["onClick","docDescription","disabled"];function Ec(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var $c=function(e){var t=e.onClick,r=e.docDescription,n=e.disabled,i=Ec(e,Dc),a=Ac().classes;return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.Yb,{color:"primary",variant:"contained",onClick:t,className:a.addButton,"data-testid":i["data-testid"],disabled:n},Object(m.c)(p.kc,{component:"span",variant:"h6",fontWeight:500,lineHeight:1},"+")),r&&Object(m.c)(p.jb,{docDescription:r}))};function Nc(e){return(Nc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Lc(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||Uc(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Rc(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function qc(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var il=function(e){var t=e.maskParams,r=e.inputProps,o=ol(e,Zc),i=Object(n.useRef)();return Object(n.useEffect)((function(){new Qc.a(rl({},t)).mask(i.current)}),[]),Object(m.c)(p.dc,el({inputProps:rl({ref:i},r)},o))};function al(e){return function(e){if(Array.isArray(e))return ll(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||cl(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function sl(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||cl(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function cl(e,t){if(e){if("string"==typeof e)return ll(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ll(e,t):void 0}}function ll(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1)if(t.includes("_"))b(["decklink_sar"])(y("specifyAllSettingsError"));else{var r=!1;t.forEach((function(e){0===Number(e)&&(r=!0,b(["decklink","sar"])(y("specifyAllSettingsError")))})),r||(h(["decklink_sar"])(),d("sar")(e))}else h(["decklink_sar"])(),d("sar")()},maskParams:{mask:"9[9[9]]:9[9[9]]",greedy:!1},error:_,disabled:l,docDescription:null===(s=so.a.schemas.stream_input_decklink.allOf[0].properties)||void 0===s?void 0:s.sar.description})))};function fl(e){return(fl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function bl(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||_l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function hl(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function yl(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Tl(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||Il(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Il(e,t){if(e){if("string"==typeof e)return Cl(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Cl(e,t):void 0}}function Cl(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:[],n=Nl(e)||[],o=r||[];return q.a(hc.a(Ot.a("key")),Di.a((function(e){return yc.a(o.find((function(t){return t.key===e.key})),e)})),gc.a(vc.a,[dr.a,dr.a]))(t?n:o,t?o:n)}(t.template&&Object(B.b)(t.inputs)?null==i?void 0:i.inputs[r]:t.inputs[r],!0,y);g(e)}),[]);var v=function(e){return function(n){var o=lt.a(t.inputs);n.target.value?o[r][e]=n.target.value:delete o[r][e],a("inputs")(o)}},_=function(e){return function(n){var o=lt.a(t.inputs);n&&0!==n.length?o[r][e]=n:delete o[r][e],a("inputs")(o)}},O=function(e){return function(){var n=lt.a(t.inputs);e?n[r].rtp="udp":delete n[r].rtp,a("inputs")(n)}},x=function(e){return function(n){var o=lt.a(t.inputs),i=n.target.value;i?o[r][e]=i.split(","):delete o[r][e],a("inputs")(o)}},w=function(e,n){return function(o){var i=lt.a(t.inputs),s=o.target.value;if(s){var c=n(s);","===vr.a(s)&&(c+=","),i[r][e]=c.split(",")}a("inputs")(i)}},k=function(e){var r=e.path,n=e.url,o=Pl(e,wl),i=!!t.template&&Object(B.b)(t.inputs);return Object(m.c)(p.dc,Sl({entity:"inputs",value:$o.a("",r)(n),path:r,disabled:i},o))},S=function(e){var n=e.url,i=e.isEffective,s=n.languages,c=_c.a(s),l=c.map((function(e){return e[0]})),u=c.map((function(e){return{key:e[0],value:e[1]}})),d=q.a($o.a([],"tracks"),$o.a({},"media_info"),$o.a({},"stats"))(t),f=l.includes("default")?[]:["default"];f=[].concat(kl(f),kl(d.filter((function(e){return"a"===e.track_id.slice(0,1)&&!l.includes(e.track_id)})).map((function(e){return e.track_id}))));return Object(m.c)(p.hb,{container:!0,spacing:2},Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.l,{display:"flex",alignItems:"center"},Object(m.c)(p.kc,{variant:"subtitle1"},b("streamInputUrlOptionsPage.languagesLabel"),Object(m.c)(p.jb,{docDescription:so.a.schemas.stream_input_mpegts_specific.properties.languages.description})),!i&&Object(m.c)(p.l,{ml:1},Object(m.c)(p.n,{variant:"contained",color:"primary",size:"small",onClick:function(){var e=lt.a(t.inputs);if(Ke.a(c))e[r].languages={},e[r].languages[f[1]||"a1"]="";else{var n=c.map((function(e){return e[0]})),o=[];n.forEach((function(e){"default"!==e&&o.push(Number(e.slice(1)))}));var i=Oc.a((function(e,t){return e.value-t.value}),o);e[r].languages["a".concat(Ke.a(i)?1:i[i.length-1]+1)]=""}a("inputs")(e)},"data-testid":"add-language"},b("streamInputUrlOptionsPage.addLanguageButton"))))),u.map((function(e,n){return Object(m.c)(o.a.Fragment,{key:n},Object(m.c)(p.hb,{item:!0,xs:5},Object(m.c)(Kc,{index:n,language:e,languages:u,onConfigChange:a,urls:t.inputs,sourceIndex:r,audioTracks:f,isEffective:i})),Object(m.c)(p.hb,{item:!0,xs:5},Object(m.c)(Yc,{index:n,language:e,onConfigChange:a,urls:t.inputs,sourceIndex:r,isEffective:i})),Object(m.c)(p.hb,{item:!0,xs:2},!i&&Object(m.c)(p.lb,{"aria-label":b("remove"),title:b("remove"),onClick:function(){return n=e.key,delete(o=lt.a(t.inputs))[r].languages[n],void a("inputs")(o);var n,o},"data-testid":"url-languages-".concat(n,"-remove"),color:"secondary",size:"large"},Object(m.c)(p.B,{fontSize:"small"}))))})))},P=function(e){var n=e.url,a=e.isEffective,s=n.pids?n.pids.join(","):"",c=n.programs?n.programs.join(","):"";return Object(m.c)(o.a.Fragment,null,function(e){var n=e.isEffective,o=t.template&&Object(B.b)(t.inputs)?i.inputs[r]:t.inputs[r];return Object(m.c)(oa.a,{displayEmpty:!0,label:b("inputs-subtitles"),value:(null==o?void 0:o.subtitles)||"",onChange:v("subtitles"),items:[["",b("not-selected")]].concat(kl(El)),disabled:n,"data-testid":"inputs-subtitles",HelperDocProps:{docDescription:so.a.schemas.stream_input_mpegts_specific.properties.subtitles.description}})}({isEffective:a}),Object(m.c)(p.l,{mt:2},Object(m.c)(p.dc,{entity:"inputs",path:["programs"],value:c,disabled:a,onChange:x("programs"),onBlur:w("programs",Es.f),docDescription:so.a.schemas.stream_input_mpegts_specific.properties.programs.description})),Object(m.c)(p.l,{mt:2},Object(m.c)(p.dc,{entity:"inputs",path:["pids"],value:s,disabled:a,onChange:x("pids"),onBlur:w("pids",Es.e),docDescription:so.a.schemas.stream_input_mpegts_specific.properties.pids.description})),Object(m.c)(p.l,{mt:2,mb:5},S({url:n,isEffective:a})))},T=!!t.template&&Object(B.b)(t.inputs),I=T?F.a(["inputs",r])(i)||{}:t.inputs[r]||{},C=!!Object(B.e)(I.url)&&I.url.includes("publish://"),A=!!Object(B.e)(I.url)&&I.url.includes("decklink://"),D=!!Object(B.e)(I.url)&&(I.url.includes("v4l://")||I.url.includes("v4l2://")),E=!!Object(B.e)(I.url)&&I.url.startsWith("dektec");return Object(m.c)(p.hb,{container:!0,spacing:0},Object(m.c)(p.hb,{item:!0,container:!0,xs:12,sm:11,spacing:0},Object(m.c)(p.hb,{item:!0,xs:12,lg:9},Object(m.c)(p.l,{mt:1},Object(m.c)(p.xb,{to:"/".concat(s,"/").concat(encodeURIComponent(l.join(",")),"/input"),state:{names:l.join(",")},component:Mt.b,color:"primary","data-testid":"back-to-input"},"← ",b("streamInputUrlOptionsPage.backToInput"))),c&&Object(m.c)(p.l,{my:1},Object(m.c)(Ps,null)),Object(m.c)(p.l,{mt:1,mb:2},Object(m.c)(p.kc,{variant:"subtitle1"},I.url)),k({path:["comment"],onChange:v("comment"),url:I,docDescription:so.a.schemas.stream_input_base.properties.comment.description}),Object(m.c)(p.l,{mt:1},k({path:["priority"],onChange:v("priority"),url:I,docDescription:so.a.schemas.stream_input_base.properties.priority.description})),Object(m.c)(ti,{entity:"inputs",path:["source_timeout"],value:I.source_timeout,onChange:_("source_timeout"),units:[{label:"seconds",factor:1}],isDefaultValue:!0,disabled:T,docDescription:so.a.schemas.stream_input_base.properties.source_timeout.description}),Object(m.c)(p.l,{mt:1},k({path:["allow_if"],onChange:v("allow_if"),url:I,docDescription:so.a.schemas.stream_input_base.properties.allow_if.description})),Object(m.c)(p.l,{mt:1},k({path:["deny_if"],onChange:v("deny_if"),url:I,docDescription:so.a.schemas.stream_input_base.properties.deny_if.description})),Object(m.c)(p.l,{mt:1},k({path:["cluster_key"],onChange:v("cluster_key"),url:I,docDescription:so.a.schemas.stream_input_base.properties.cluster_key.description})),Object(m.c)(p.l,{mt:3},Object(m.c)(p.kc,{variant:"h6"},b("streamInputUrlOptionsPage.headers"),Object(m.c)(p.jb,{docDescription:so.a.schemas.stream_input_base.properties.headers.description})),Object(m.c)(ra,{extra:$o.a({},"headers")(I),onChange:function(e){var n=lt.a(t.inputs);n[r].headers=lt.a(e),a("inputs")(n)},"data-testid":"input-headers",disabled:T})),Object(m.c)(p.l,{mt:1,mb:5},k({path:["user_agent"],onChange:v("user_agent"),url:I,docDescription:so.a.schemas.stream_input_base.properties.user_agent.description})),A&&Object(m.c)(p.l,{mt:3,"data-testid":"decklink-block"},Object(m.c)(p.kc,{variant:"h6",mb:2},b("streamInputUrlOptionsPage.decklink.title")),Object(m.c)(ml,{url:I,onRawChange:_,onStringChange:v,isEffective:T,errors:u,onError:d,onErrorResolve:f})),function(e){var n=e.url,i=e.isEffective,s=Object(Es.g)(n);return Object(Es.k)(s,n)&&function(e){var n,i,s=e.url,c=e.isEffective;return Object(m.c)(o.a.Fragment,null,Object(m.c)(Ai,{expanded:!0,label:b("streamInputUrlOptionsPage.rtpTransportTypeLabel"),details:b("streamInputUrlOptionsPage.rtpTransportTypeLabelDetail")},Object(m.c)(No.a,{label:b("streamInputUrlOptionsPage.tcpLabel"),checked:!s.rtp,onClick:O(!1),className:"margin-right-10",isRadio:!0,"data-testid":"rtp-transport-type-tcp",disabled:c}),Object(m.c)(No.a,{label:b("streamInputUrlOptionsPage.udpLabel"),checked:"udp"===s.rtp,onClick:O(!0),isRadio:!0,"data-testid":"rtp-transport-type-udp",disabled:c})),Object(m.c)(p.l,{mt:2},k({path:["tracks"],onChange:(i="tracks",function(e){var n=lt.a(t.inputs),o=e.target.value.split(",").map((function(e){return parseInt(e,10)}));o&&e.target.value?n[r][i]=o:delete n[r][i],a("inputs")(n)}),url:s,docDescription:null===(n=so.a.schemas.stream_input_rtsp.allOf[0])||void 0===n?void 0:n.properties.tracks.description})),Object(m.c)(p.l,{mt:2,mb:5},Object(m.c)(oa.a,{displayEmpty:!0,label:b("inputs-output_audio"),value:(null==s?void 0:s.output_audio)||"",onChange:v("output_audio"),items:[["",b("not-selected")]].concat(kl(Dl)),disabled:c,"data-testid":"inputs-output_audio",HelperDocProps:{docDescription:so.a.schemas.stream_input_base.properties.output_audio.description}})))}({url:n,isEffective:i})||Object(Es.m)(s,n)&&P({url:n,isEffective:i})||null}({url:I,isEffective:T}),C&&Object(m.c)(kc,{url:I,handleStrChange:v,handleIntChange:function(e){return function(n){var o=lt.a(t.inputs);n.target.value?o[r][e]=parseInt(n.target.value,10):delete o[r][e],a("inputs")(o)}},renderTextField:k,isEffective:T}),Object(m.c)(p.l,{mb:5}),(A||E||D)&&Object(m.c)(p.l,{mb:2},Object(m.c)(xl,{onChange:_("ttxt_descriptors"),ttxtDescriptors:I.ttxt_descriptors,errors:u,onError:d,onErrorResolve:f})),Object(m.c)(p.hb,{container:!0,spacing:0},Object(m.c)(p.hb,{item:!0,xs:12,sm:5},Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)("div",{className:"notice-text"},b("streamInputUrlOptionsPage.specifyExtraParamsNotice")))),Object(m.c)(p.hb,{item:!0,xs:12,sm:7},Object(m.c)(ra,{isArray:!0,extra:y||{},onChange:function(e){var n=lt.a(t.inputs),o=n[r];e.filter((function(e){return!$l[e.key]})).forEach((function(e){o[e.key]=e.value})),a("inputs")(n),g(e)},onRemove:function(e){var n=lt.a(t.inputs);delete n[r][y[e].key],a("inputs")(n),g(y.filter((function(t,r){return r!==e})))},"data-testid":"extra-source-params",disabled:T}))),Object(m.c)(p.l,{mb:5}),E&&Object(m.c)(Vc,{disabled:T,media:t,audioTracks:I.audio_tracks,onChange:_("audio_tracks"),errors:u,onError:d,onErrorResolve:f}))))};Ll.defaultProps={templateConfig:null};var Rl=Object(ge.b)(Ll),ql=function(e){var t=e.entity,r=e.mediaNames,n="/".concat(t,"/").concat(encodeURIComponent(r.join(",")),"/input");return Object(m.c)(U.Switch,null,Object(m.c)(U.Route,{path:n,render:function(){return Object(m.c)(bc,e)},exact:!0}),Object(m.c)(U.Route,{path:"".concat(n,"/:index/options"),render:function(t){return Object(m.c)(Rl,(r=e,n=t,As()(r,{sourceIndex:{$set:parseInt(n.match.params.index,10)},$merge:n})));var r,n}}))},Ml=function(e){var t=e.config,r=e.media,n=e.onConfigSave,o=e.onConfigChange,i=e.isConfigSaving,a=e.isConfigChanged,s=e.getConfigDelta,c=e.entity,l=e.isTemplate,p=e.templateConfig,u=e.isStream,d=e.configEffective,f=e.mediaNames,b=o();return r?Object(m.c)("div",{"data-testid":"stream-input"},Object(m.c)(ql,{media:r,mediaNames:f,onConfigChange:b,onConfigSave:n,isConfigSaving:i,isConfigChanged:a,config:t,getConfigDelta:s,entity:c,isTemplate:l,templateConfig:p,isStream:u,configEffective:d})):null};Ml.defaultProps={media:void 0,isTemplate:!1,templateConfig:null,isStream:!1};var Fl=Ml,Ul=r(410),zl=r(519),Bl={mb:function(e){return"".concat(Math.max(e/1024/1024).toFixed(1),"Mb")},percent:function(e){return"".concat(e.toFixed(),"%")},degree:function(e){return"".concat(e.toFixed(),"°C")}},Hl=r(876);function Vl(e){return(Vl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Wl(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||Kl(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Gl(e){return function(e){if(Array.isArray(e))return Yl(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Kl(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Kl(e,t){if(e){if("string"==typeof e)return Yl(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Yl(e,t):void 0}}function Yl(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r60?60-a:0;return Ql(Ql({},e),{},{data:[].concat(Gl(e.data.slice(s)),Gl(n.data))})}));var t})):a(i),null}},function(){i.close()}}),[r,t]),{runtimeData:i,dataLabels:s}},ep=function(e){var t=e.topic,r=e.resolution,o=e.yAxis,i=void 0===o?[{position:"left"}]:o,a=e.series,s=e.labelPostfix,c=Object(n.useRef)(),l=Zl({topic:t,resolution:r}),p=l.runtimeData,u=l.dataLabels,d=Object(n.useRef)(!1),f=Object(n.useMemo)((function(){return{legend:{formatter:function(e){var t,r=u.findIndex((function(t){return t===e})),n=null==a?void 0:a[r];return null!==(t=null==n?void 0:n.label)&&void 0!==t?t:e},top:5},animation:!1,tooltip:{trigger:"axis",axisPointer:{animation:!1},valueFormatter:s?function(e){return"".concat(e," ").concat(s)}:void 0},grid:{left:"3%",right:"3%",bottom:"3%",containLabel:!0},xAxis:{type:"time",splitLine:{show:!0},splitNumber:3},yAxis:i.map((function(e,t){return{type:"value",position:e.position,splitLine:{show:!0,lineStyle:{type:0===t?"solid":"dashed"}},splitNumber:2,axisLabel:{formatter:e.formatter},min:e.min,max:e.max}})),series:p.map((function(e,t){var r,n=null==a?void 0:a[t];return{name:null!==(r=null==n?void 0:n.label)&&void 0!==r?r:e.label,type:"line",showSymbol:!1,data:e.data,yAxisIndex:e.yaxis?e.yaxis-1:void 0,lineStyle:{width:1},color:null==n?void 0:n.color}}))}}),[u,s,p,a,i]);return Object(n.useEffect)((function(){var e;p.length&&!d.current&&(d.current=!0,null===(e=c.current)||void 0===e||e.getEchartsInstance().resize())}),[p]),Object(m.c)(Hl.a,{ref:function(e){c.current=e},opts:{renderer:"svg"},option:f,style:{width:"100%",height:"100%",border:"1px solid #9e9e9e"}})},tp=function(e){var t=e.name;return Object(B.e)(t)&&Object(m.c)(p.l,{style:{height:"200px"}},Object(m.c)(ep,{topic:"media/".concat(t),resolution:"minute",series:[{label:"In",color:"red"},{label:"Out",color:"green"},{label:"Clients",color:"blue"}],yAxis:[{position:"left",formatter:Bl.mb},{position:"right"}]}))},rp=Object(p.uc)()((function(e){return{statusChip:{borderRadius:"60px !important",color:"#232323 !important",fontSize:14,height:"28px !important",padding:e.spacing(.5,2),marginBottom:e.spacing(.5)},online:{border:"1px solid ".concat(e.palette.success.main),backgroundColor:Object(p.pc)(e.palette.success.main,.08)},warning:{border:"1px solid #F79E1B",backgroundColor:Object(p.pc)("#F79E1B",.08)},error:{border:"1px solid #C11030",backgroundColor:Object(p.pc)("#C11030",.08)},statusItem:{marginRight:e.spacing(2),fontSize:14,display:"flex",alignItems:"center"},statsIcon:{marginRight:e.spacing(1)}}})),np=p.sc.IconQuality,op=p.sc.IconBitrate,ip=p.sc.IconTime,ap=function(e){var t=e.media,r=e.stats,n=e.showInputBitrate,o=e.delayRange,i=rp(),a=i.classes,s=i.cx;if(t.disabled)return Object(m.c)(p.t,{label:"Disabled",className:s(a.statusChip,a.warning)});if(!r)return"";if(r.source_error&&r.source_error!==st.a||st.b.isUnavailable(r)){var c=Object(Kt.d)(r),l=c.mainText,u=c.detailText;return Object(m.c)(p.t,{label:"".concat(l," ").concat(u||""),className:s(a.statusChip,a.error)})}if(st.b.hasNoSources(t))return Object(m.c)(p.t,{label:"No sources defined",className:s(a.statusChip,a.warning)});if(st.b.hasOnlyPublish(t)&&!r.alive)return Object(m.c)(p.l,{display:"flex",alignItems:"center"},Object(m.c)(p.t,{label:"Expecting publication",className:s(a.statusChip,a.warning)}),r.lifetime?Object(m.c)("div",{className:a.statusLifetime},_e.a.getFormattedTime(r.lifetime)):"");if(!t.static&&!r.alive)return Object(m.c)(p.t,{label:"Waiting for ".concat(t.static?"stream":"clients"),className:s(a.statusChip,a.warning)});var d=r.running_transcoder?Object(m.c)("div",{className:"transcoder-icon"}):null,f=Object(Kt.c)({showInputBitrate:n,stats:r}),b=Object(Kt.e)(r.media_info),h=function(){return Object(m.c)(p.l,{display:"flex"},b?Object(m.c)("div",{className:a.statusItem},Object(m.c)("span",{className:a.statsIcon},Object(m.c)(np,null)),b):"",f&&Object(m.c)("div",{className:a.statusItem},Object(m.c)("span",{className:a.statsIcon},Object(m.c)(op,null)),f),d,Object(m.c)("div",{className:a.statusItem},Object(m.c)("span",{className:a.statsIcon},Object(m.c)(ip,null)),_e.a.getFormattedTime(r.lifetime)))};if(Object(Kt.g)(r,o)){var y=Math.floor(r.ts_delay/1e3);return Object(m.c)(p.l,{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",flexWrap:"wrap"},Object(m.c)(p.t,{label:"Delay ".concat(y,"s"),className:s(a.statusChip,a.warning)}),h())}return r.input_error_rate?Object(m.c)(p.l,{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",flexWrap:"wrap"},Object(m.c)(p.t,{label:"".concat(r.input_error_rate," drops/s"),className:s(a.statusChip,a.warning)}),h()):Object(m.c)(p.l,{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",flexWrap:"wrap"},Object(m.c)(p.t,{label:"Online",className:s(a.statusChip,a.online)}),h())};ap.defaultProps={delayRange:{lower:2e4,hlsLower:2e4,upper:6e4},showInputBitrate:!1};var sp="mono",cp="stereo",lp="5.0",pp="5.1",up=function(e){return"".concat(function(e){return"".concat(e.track_id," ").concat(e.codec)}(e)).concat(function(e){var t;switch(e.channels){case 1:t=sp;break;case 2:t=cp;break;case 5:t=lp;break;case 6:t=pp;break;default:t=""}return t?" ".concat(t):t}(e)).concat(function(e){return e.language?" ".concat(e.language):""}(e)).concat(function(e){return e.width&&e.height&&" ".concat(e.width,"x").concat(e.height)||""}(e)).concat(function(e){return e.bitrate?" (".concat(e.bitrate,"kbps)"):""}(e)).concat(function(e){return e.pid?" pid: ".concat(e.pid):""}(e))},dp=Object(p.uc)()((function(e){var t,r;return{"track-video":{display:"block",color:null===(t=e.palette)||void 0===t?void 0:t.primary.main},"track-audio":{display:"block",color:null===(r=e.palette)||void 0===r?void 0:r.secondary.main}}})),mp=function(e){var t=e.track,r=e.dataTestId,n=dp().classes,o="track-".concat(t.content);return Object(m.c)("span",{className:_t()("track",n[o]),"data-testid":"".concat(r,"-").concat(t.content)},up(t))},fp=p.sc.IconInput,bp=p.sc.IconOutput,hp=p.sc.IconNoInfo,yp=Object(p.uc)()((function(){return{"track-empty":{color:Object(p.pc)("#B2B8BF",.4),textAlign:"center",fontSize:35},mediaInfoTracks:{marginTop:"10px"},mediaInfoWrapper:{background:"#F9FAFB"}}})),gp=function(e){var t=e.mediaInfo,r=e.inputMediaInfo,n=Object(j.b)().t,o=yp().classes;return Object(m.c)(p.l,{className:o.mediaInfoTracks},Object(m.c)(p.hb,{container:!0,spacing:2},Object(m.c)(p.hb,{item:!0,xs:12,sm:6},Object(m.c)(p.l,{height:"100%",p:2,className:o.mediaInfoWrapper},Object(m.c)(p.l,{display:"flex",alignItems:"center",mb:1},Object(m.c)(p.kc,{color:"primary",component:"span",fontSize:16,mr:1},Object(m.c)(fp,null)),Object(m.c)(p.kc,{variant:"body2",component:"span"},n("mediaOverviewMediaInfo.inputInfo"))),r&&r.tracks?r.tracks.map((function(e,t){return Object(m.c)(mp,{key:e.track_id,track:e,dataTestId:"input-media-track-".concat(t)})})):Object(m.c)("div",{"data-testid":"input-media-info-empty",className:o["track-empty"]},Object(m.c)(hp,null)))),Object(m.c)(p.hb,{item:!0,xs:12,sm:6},Object(m.c)(p.l,{height:"100%",p:2,className:o.mediaInfoWrapper},Object(m.c)(p.l,{display:"flex",alignItems:"center",mb:1},Object(m.c)(p.kc,{color:"primary",component:"span",fontSize:16,mr:1},Object(m.c)(bp,null)),Object(m.c)(p.kc,{variant:"body2",component:"span"},n("mediaOverviewMediaInfo.outputInfo"))),t&&t.tracks?t.tracks.map((function(e,t){return Object(m.c)(mp,{key:e.track_id,track:e,dataTestId:"output-media-track-".concat(t)})})):Object(m.c)("div",{"data-testid":"input-media-info-empty",className:o["track-empty"]},Object(m.c)(hp,null)))),Object(m.c)(p.hb,{item:!0,xs:12},t&&function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.tracks,r=void 0===t?[]:t;return r.some((function(e){return"mpeg2"===e.codec}))}(t)&&Object(m.c)("div",{className:"notice-text"},n("mediaOverviewMediaInfo.mpegNotice")))))};gp.defaultProps={mediaInfo:null,inputMediaInfo:null};var vp=gp;function _p(e){return(_p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Op(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==_p(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==_p(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===_p(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var jp=Object(p.uc)()((function(e){return{buttonsWrapper:Op({},e.breakpoints.only("xs"),{flexWrap:"wrap"}),overviewMediaStopStartButton:{"& button":{padding:6},"& svg":{fontSize:"22px !important"}},staticOnDemand:{"& button":{minWidth:"100px"}}}})),xp=["path"];function wp(){return(wp=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Sp(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||Tp(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pp(e){return function(e){if(Array.isArray(e))return Ip(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Tp(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Tp(e,t){if(e){if("string"==typeof e)return Ip(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ip(e,t):void 0}}function Ip(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r"),2),y=h[0],g=h[1],v=ru(Object(n.useState)(!1),2),_=v[0],O=v[1],x=Object(n.useMemo)((function(){return l===d.b||l===d.a?au:c}),[c,l]);Object(n.useEffect)((function(){t&&1===t.length&&y!==t[0]&&g(t[0])}),[t,y]);var w=function(){O(!1)},k=function(e){return function(t){r&&(""===t?r(["protocols",e],"raw")(null):r(["protocols",e],"raw")("only"===t))}},S=function(e){var t=a.protocols;return!!t&&(!t[e]&&(!xt.a(t[e])&&!t[e]||!!xt.a(t[e])&&iu.some((function(e){return t[e]}))))},P=function(e){var t=e.protocol,n=e.url,s=e.isDetails,c=e.isHostPortExist,l=void 0===c||c,u=e.additional,d=e.color,f=e.link,h=!r;if(["rtmp","rtsp"].includes(t)){if(!l&&h)return function(e){return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{color:"text.secondary"},b("mediaOutputProtocols.notConfigured",{x:b("mediaOutputProtocols.".concat(e))}),Object(m.c)(p.xb,{to:"/config",component:Mt.b,color:"primary","data-testid":"to-global-config-page"},b("mediaPublishLocation.globalConfigPage")),"."),Object(m.c)(p.ib,null))}(t);if(!l&&!h)return function(e){return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{display:"flex",flexWrap:{xs:"wrap",sm:"nowrap"}},Object(m.c)(p.l,{mr:2,mb:{xs:2,sm:0}},Object(m.c)(zp,{getSelectedValue:function(){return""},disabled:!0,dataTestId:"rtmp"})),Object(m.c)(p.l,{width:"100%"},Object(m.c)(p.l,{color:"text.secondary"},b("mediaOutputProtocols.notConfigured",{x:b("mediaOutputProtocols.".concat(e))}),Object(m.c)(p.xb,{to:"/config",component:Mt.b,color:"primary","data-testid":"to-global-config-page"},b("mediaPublishLocation.globalConfigPage")),"."))),Object(m.c)(p.ib,null))}(t)}var y=Object(B.b)(Ot.a("protocols")(a))&&Object(B.e)(Ot.a("protocols")(i)),g=y?i:a;return Object(m.c)(o.a.Fragment,null,Object(m.c)(Hp,{readOnly:h,label:b("mediaOutputProtocols.".concat(t)),details:s?b("mediaOutputProtocols.".concat(t,"Detail")):"",value:n,showSwitch:!0,protocolsAll:g.protocols,protocol:g.protocols?g.protocols[t]:null,handleSwitchChange:k(t),isInputDisabled:S(t),dataTestId:t,isEffective:y,additional:u,color:d,link:f}),Object(m.c)(p.ib,{mt:1,mb:1}))},T=Ot.a("egress_hostnames")(f),I=Vs.httpsHostPort(x,!0,l===d.b?T:null,l===d.a?"/lb/-":null)||Vs.httpHostPort(x,!0,l===d.b?T:null,l===d.a?"/lb/-":null)||"",C=ou(I),A=Object(B.b)(Ot.a("protocols")(a))&&Object(B.e)(Ot.a("protocols")(i)),D=Object(B.b)(Ot.a("protocols")(a))&&Object(B.b)(Ot.a("protocols")(i)),E=y.includes("/")?"":"static",$=F.a(["srt_play","passphrase"])(a),N=l===d.a?encodeURIComponent(y):y;return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{display:"flex",justifyContent:"start",alignItems:"center",mb:2},Object(B.e)(i)&&A&&!D&&Object(m.c)(p.l,null,Object(m.c)(p.n,{color:"primary",variant:"contained","data-testid":"protocols-copy-button",onClick:function(){r(["protocols"],"raw")(Ot.a("protocols")(i))},size:"small"},b("mediaOutputProtocols.copyProtocolsButton"))),Object(B.e)(i)&&!A&&!D&&Object(m.c)(p.l,null,Object(m.c)(p.n,{color:"primary",variant:"contained","data-testid":"protocols-use-button",onClick:function(){O(!0)},size:"small"},b("mediaOutputProtocols.useProtocolsFromTemplateButton"))),"config"===a.named_by&&Object(m.c)(p.jb,{docDescription:so.a.schemas.stream_config_media.properties.protocols.description,diskValue:Object(B.e)(Ot.a("protocols")(a))?"✔":"",templateValue:Object(B.e)(Ot.a("protocols")(i))?"✔":"",showFullHelperInf:s})),P({protocol:"hls",url:Gp(I,{name:N}),isDetails:!0,additional:Object(m.c)(p.l,{mt:1},Object(m.c)(Hp,{readOnly:!r,label:b("mediaOutputProtocols.hls"),details:b("mediaOutputProtocols.hlsDetailNonApple"),value:"".concat(I,"/").concat(N,"/video.m3u8"),isInputDisabled:S("hls"),dataTestId:"non-apple-hls",mt:0}))}),u&&P({protocol:"cmaf",url:Kp(I,{name:N})}),P({protocol:"player",url:Zp(I,{name:N})}),P({protocol:"mss",url:Qp(I,{name:N})}),u&&P({protocol:"tshttp",url:Yp(I,{name:N})}),P({protocol:"dash",url:"".concat(I,"/").concat(N,"/index.mpd")}),l!==d.b&&l!==d.a&&P({protocol:"rtmp",url:"".concat(Vs.rtmpHostPort(x,!0),"/").concat(E?"".concat(E,"/"):"").concat(y),isHostPortExist:!!Vs.rtmpHostPort(x,!0)}),l!==d.b&&l!==d.a&&P({protocol:"rtsp",url:"".concat(Vs.rtspHostPort(x,!0),"/").concat(y),isHostPortExist:!!Vs.rtspHostPort(x,!0)}),u&&P({protocol:"m4f",url:"m4f://".concat(C,"/").concat(N),isDetails:!0}),u&&P({protocol:"m4s",url:"m4s://".concat(C,"/").concat(N),isDetails:!0}),u&&P({protocol:"shoutcast",url:Jp(I,{name:N})}),u&&P({protocol:"jpeg",url:Xp(I,{name:N})}),u&&l!==d.a&&P({protocol:"mseld",url:"".concat(Vs.mseldProtocol(x),"://").concat(C,"/").concat(y,"/mse_ld")}),u&&P({protocol:"api",url:tu(I,{name:N}),additional:Object(m.c)(p.l,{mt:1},Object(m.c)(Hp,{readOnly:!r,label:b("mediaOutputProtocols.api"),value:eu(I,{name:N}),isInputDisabled:S("api"),dataTestId:"api-recording-status",mt:0}))}),u&&l!==d.a&&P({protocol:"srt",url:Vs.srtHostPort(x,null,T)?"".concat(Vs.srtHostPort(x,null,T),"?streamid=#!::r=").concat(y,",m=request"):b("mediaOutputProtocols.srtPortIsNotConfigured"),link:!Vs.srtHostPort(x,null,T)&&"/config",color:!Vs.srtHostPort(x,null,T)&&"grey",additional:Object(m.c)(p.l,{mt:1},Object(m.c)(Hp,{readOnly:!r,label:b("mediaOutputProtocols.srt_play-port"),value:Vs.srtHostPort({},F.a(["srt_play","port"])(a),T)?"".concat(Vs.srtHostPort({},F.a(["srt_play","port"])(a),T)).concat($?"?passphrase=".concat($):""):b("mediaOutputProtocols.srtDedicatedPlayPortIsNotConfigured"),isInputDisabled:S("srt"),dataTestId:"srt-dedicated-input",mt:0,color:!Vs.srtHostPort({},F.a(["srt_play","port"])(a),T)&&"grey",hideEndAdornment:!Vs.srtHostPort({},F.a(["srt_play","port"])(a),T)}))}),Object(m.c)(p.C,{open:_,handleClose:w,onDelete:function(){w(),r(["protocols"],"raw")(null)},title:b("mediaOutputProtocols.useProtocolsFromTemplateConfirm"),notice:b("mediaOutputProtocols.useProtocolsFromTemplateNotice"),removeButtonText:b("mediaOutputProtocols.useProtocolsFromTemplateButton")}))};su.defaultProps={change:null,mediaNames:[],templateConfig:{},isStream:!1,showFull:!0};var cu=r(409),lu=["accept","multiple","id","onChange","children","variant","value","isUploadingFile","uploadingError"];function pu(){return(pu=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var du=function(e){var t=e.accept,r=e.multiple,n=e.id,o=e.onChange,i=e.children,a=e.variant,s=e.value,c=e.isUploadingFile,l=e.uploadingError,u=uu(e,lu),d=Object(j.b)().t;return Object(m.c)(p.l,null,Object(m.c)("input",{accept:t,className:"upload-button-input",id:n,multiple:r,type:"file",onChange:o,value:s,"data-testid":u["data-testid"],disabled:u.disabled}),Object(m.c)("label",{htmlFor:n,className:"upload-button-label"},Object(m.c)(p.n,pu({variant:a,component:"span","data-testid":"upload-button"},cu.a(["data-testid"],u)),i)),c&&Object(m.c)(p.l,{mt:1},Object(m.c)(p.kc,{variant:"body1"},d("uploadingNotice"))),l&&Object(m.c)(p.l,{mt:1},Object(m.c)(p.kc,{variant:"body1",color:"error"},l)))};du.defaultProps={multiple:!1,variant:"text",accept:"",isUploadingFile:!1,uploadingError:""};var mu=r(627);function fu(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return bu(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return bu(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function bu(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0){var r=t.target.files[0],n=e||r.name;mu.a.upload(k,n,r,(function(e){P(),e&&T(e)}))}}}),[x]),$=o.a.useCallback((function(e){return function(){mu.a.delete(S,e,(function(e){P(),e&&T(e)}))}}),[x]);return Object(m.c)(p.E,{open:t,onClose:r,classes:{paper:c.dialog},"data-testid":"logoManager_".concat(a,"_dialog_backdrop"),PaperProps:{"data-testid":"logoManager_".concat(a,"_dialog_main")}},Object(m.c)(p.I,null,Object(m.c)(p.hb,{container:!0,justifyContent:"space-between"},Object(m.c)(p.hb,{container:!0,item:!0,xs:!0},s("logoManagerDialog.selectLogoFile")),Object(m.c)(p.hb,{container:!0,item:!0,xs:!0,justifyContent:"flex-end"},Object(m.c)(du,{id:"logo-new-upload",accept:"image/*",onChange:E(),width:12,color:"primary","data-testid":"logoManager_".concat(a,"_dialog_button_add_new")},s("logoManagerDialog.addNew"))))),Object(m.c)(p.G,{dividers:!0},Object(m.c)(p.hb,{container:!0},Object(m.c)(p.hb,{container:!0,item:!0,xs:12,alignItems:"center"},Object(B.e)(x)&&x.map((function(e,t){return Object(m.c)(o.a.Fragment,{key:e.name},Object(m.c)(p.hb,{item:!0,xs:2,sm:1},Object(m.c)(p.Ob,{checked:g===e.name,onChange:I(e.name),value:g,name:e.name,inputProps:{"data-testid":"logoManager_".concat(a,"_dialog_").concat(e.name,"_radio")}})),Object(m.c)(p.hb,{container:!0,item:!0,xs:10,sm:6,alignItems:"center"},Object(m.c)(p.Nb,{id:"logo-".concat(e.name,"-popover"),open:Boolean(u),anchorEl:u,onClose:A,onClick:A,anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},className:c.popover},b&&Object(m.c)("img",{src:b,alt:"logo"})),Object(m.c)(p.hb,{item:!0},e.content?Object(m.c)("img",{className:c.logoImage,src:"data:image/jpg;base64,".concat(e.content),alt:e.name,onClick:D("data:image/jpg;base64,".concat(e.content))}):Object(m.c)(p.u,{size:64})),Object(m.c)(p.hb,{item:!0},e.name)),Object(m.c)(p.hb,{container:!0,item:!0,xs:12,sm:5,justifyContent:"flex-end",alignItems:"center"},Object(m.c)(p.hb,{item:!0},(e.stream_names||[]).length>0&&Object(m.c)(p.n,{width:12,onClick:$(e.name),color:"red","data-testid":"logoManager_".concat(a,"_dialog_").concat(e.name,"_button_delete")},s("logoManagerDialog.delete"))),Object(m.c)(p.hb,{item:!0},Object(m.c)(du,{id:"logo-".concat(t,"-change"),accept:"image/*",width:12,onChange:E(e.name),color:"primary","data-testid":"logoManager_".concat(a,"_dialog_").concat(e.name,"_button_change")},s("logoManagerDialog.change")))))}))))),Object(m.c)(p.hb,{container:!0,className:c.actions,justifyContent:"flex-end"},Object(m.c)(p.n,{onClick:r,width:12,color:"red","data-testid":"logoManager_".concat(a,"_dialog_button_cancel")},s("logoManagerDialog.cancel")),Object(m.c)(p.n,{onClick:C,width:12,color:"primary","data-testid":"logoManager_".concat(a,"_dialog_button_ok")},s("logoManagerDialog.ok"))))};function gu(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return vu(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return vu(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vu(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:{},i=r.logo,a=Ot.a("logo")(n);return Object(m.c)(p.dc,Ou({templateData:Object(B.b)(Ot.a(e)(i))?null:n,entity:"stream",path:["logo",e],value:Object(B.d)(Ot.a(e)(i))?Ot.a(e)(i):Ot.a(e)(a),onChange:t(["logo",e]),type:"number",inputProps:{min:0},disabled:Object(B.b)(i)&&Object(B.b)(a)||Object(B.b)(i)&&Object(B.e)(a),docDescription:so.a.schemas.web_logo_spec.properties[e].description},o))},s=r.logo,c=Ot.a("logo")(n),l="";Object(B.e)(s)&&Object(B.e)(s.path)&&(l=s.path.startsWith("@")?s.path.slice(1):s.path);var u="";return Object(B.e)(Ot.a("path")(c))&&(u=c.path.startsWith("@")?c.path.slice(1):c.path),Object(m.c)(p.hb,{container:!0,spacing:1},Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"h5"},i("mediaOutputLogo.logoTitle"))),Object(m.c)(p.hb,{item:!0,xs:7,sm:8},Object(m.c)(p.dc,{value:l||u,entity:"stream",path:["logo","path"],disabled:!0,InputProps:{endAdornment:Object(m.c)(li.a,{docDescription:so.a.schemas.web_logo_spec.properties.path.description,diskValue:l,templateValue:u,showFullHelperInf:o})},label:""})),Object(m.c)(p.hb,{item:!0,xs:5,sm:4,container:!0,wrap:"nowrap"},Object(m.c)(_u,{buttonTitle:i("select"),buttonWidth:8,buttonColor:"primary",logo:l||u,onChange:function(e){var n=r.logo,o="@".concat(e).trim();Object(B.b)(n)&&(t(["logo","width"],"raw")(null),t(["logo","height"],"raw")(null),t(["logo","top"],"raw")(null),t(["logo","bottom"],"raw")(null),t(["logo","left"],"raw")(null),t(["logo","right"],"raw")(null)),t(["logo","path"],"raw")(o),Object(B.e)(n)&&Object(B.b)(n.path.trim())&&t(["logo"],"raw")(null)}}),Object(m.c)(p.lb,{"aria-label":i("remove"),color:"secondary",onClick:function(){t(["logo"])(null)},"data-testid":"remove-logo",size:"small",disabled:Object(B.b)(s)&&Object(B.e)(c)},Object(m.c)(p.B,{fontSize:"small"}))),Object(m.c)(p.hb,{item:!0,xs:6},a("width")),Object(m.c)(p.hb,{item:!0,xs:6},a("height")),Object(m.c)(p.hb,{item:!0,xs:3},a("top",{disabled:Object(B.b)(s)||Object(B.e)(s.bottom)||Object(B.b)(s)&&Object(B.e)(c)})),Object(m.c)(p.hb,{item:!0,xs:3},a("bottom",{disabled:Object(B.b)(s)||Object(B.e)(s.top)||Object(B.b)(s)&&Object(B.e)(c)})),Object(m.c)(p.hb,{item:!0,xs:3},a("left",{disabled:Object(B.b)(s)||Object(B.e)(s.right)||Object(B.b)(s)&&Object(B.e)(c)})),Object(m.c)(p.hb,{item:!0,xs:3},a("right",{disabled:Object(B.b)(s)||Object(B.e)(s.left)||Object(B.b)(s)&&Object(B.e)(c)})),Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.l,{mt:5})))};ju.defaultProps={templateConfig:{},isStream:!1};var xu=ju,wu=[["left","left"],["center","center"],["right","right"]],ku=[["top","top"],["middle","middle"],["bottom","bottom"]],Su=function(e){var t,r,n,o,i,a,s,c,l=e.media,u=e.onConfigChange,d=e.templateConfig,f=e.isStream,b=Object(j.b)().t;return Object(m.c)(p.l,{my:2},Object(m.c)(p.hb,{container:!0,spacing:2},Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"h5"},b("mediaOutputSubstyle.substyleTitle"))),Object(m.c)(p.hb,{item:!0,xs:12,sm:4,lg:3},Object(m.c)(oa.a,{displayEmpty:!0,"data-testid":"subtitles-align",label:b("mediaOutputSubstyle.alignLabel"),value:(null===(t=l.substyle)||void 0===t?void 0:t.align)||(null==d?void 0:null===(r=d.substyle)||void 0===r?void 0:r.align)||"",onChange:u(["substyle","align"],"string"),items:[["",b("not-selected")]].concat(wu),HelperDocProps:{docDescription:so.a.schemas.subtitle_style.properties.align.description,diskValue:null===(n=l.substyle)||void 0===n?void 0:n.align,templateValue:null==d?void 0:null===(o=d.substyle)||void 0===o?void 0:o.align,isStream:f}})),Object(m.c)(p.hb,{item:!0,xs:12,sm:4,lg:3},Object(m.c)(oa.a,{displayEmpty:!0,"data-testid":"subtitles-valign",label:b("mediaOutputSubstyle.valignLabel"),value:(null===(i=l.substyle)||void 0===i?void 0:i.valign)||(null==d?void 0:null===(a=d.substyle)||void 0===a?void 0:a.valign)||"",onChange:u(["substyle","valign"],"string"),items:[["",b("not-selected")]].concat(ku),HelperDocProps:{docDescription:so.a.schemas.subtitle_style.properties.valign.description,diskValue:null===(s=l.substyle)||void 0===s?void 0:s.valign,templateValue:null==d?void 0:null===(c=d.substyle)||void 0===c?void 0:c.valign,isStream:f}}))))};function Pu(e){return function(e){if(Array.isArray(e))return Cu(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Iu(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Tu(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||Iu(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Iu(e,t){if(e){if("string"==typeof e)return Cu(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Cu(e,t):void 0}}function Cu(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ju(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Qu(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Qu(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qu(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);rso.a.schemas.srt_config_base.properties.passphrase.maxLength)?O("streams-invalid-passphrase"):null;return Object(m.c)(p.hb,{container:!0,spacing:0,"data-testid":"stream-output"},Object(m.c)(p.hb,{item:!0,xs:12},b&&Object(m.c)(p.l,{my:1},Object(m.c)(Ps,null)),Object(m.c)(su,{config:c,media:l,mediaNames:f===d.d.templates?null:v,name:f===d.d.templates?"":l.name,change:l.named_by===st.d.config||l.named_by===st.d.external||b?s:null,templateConfig:h,isStream:g,product:x,configEffective:y})),l.named_by===st.d.config||l.named_by===st.d.external||b?Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,spacing:2,xs:12,lg:9,display:"flex"},Object(m.c)(p.hb,{item:!0,xs:6},A({value:(null==l?void 0:null===(t=l.srt_play)||void 0===t?void 0:t.port)||$o.a("",["srt_play","port"])(h),path:["srt_play","port"],docDescription:so.a.schemas.srt_config.allOf[0].properties.port.description,inputProps:{"data-testid":"stream-srt_play-port"},onChange:function(e){return s(["srt_play","port"])(e.target.value?Number(e.target.value):null)}})),Object(m.c)(p.hb,{item:!0,xs:6,ml:2},A({value:(null==l?void 0:null===(r=l.srt_play)||void 0===r?void 0:r.passphrase)||$o.a("",["srt_play","passphrase"])(h),path:["srt_play","passphrase"],docDescription:so.a.schemas.srt_config_base.properties.passphrase.description,inputProps:{"data-testid":"stream-srt_play-passphrase"},onChange:function(e){return function(e){var t=e.target.value;I(t),(!t.length||t.length>=so.a.schemas.srt_config_base.properties.passphrase.minLength&&t.length<=so.a.schemas.srt_config_base.properties.passphrase.maxLength)&&s(["srt_play","passphrase"])(t)}(e)},error:D,helperText:D}))),x!==d.b&&Object(m.c)(p.hb,{item:!0,xs:12,lg:9,"data-testid":"stream-output-thumbnails-block"},Object(m.c)(Zu,{media:l,onConfigChange:s,templateConfig:h,isStream:g})),x!==d.b&&Object(m.c)(p.hb,{item:!0,xs:12,lg:5},Object(m.c)(p.l,{mt:1},Object(m.c)(p.dc,{templateData:h,entity:"stream",path:["on_play","max_sessions"],value:(null===(i=l.on_play)||void 0===i?void 0:i.max_sessions)||(null==h?void 0:null===(a=h.on_play)||void 0===a?void 0:a.max_sessions),onChange:function(e){return s(["on_play","max_sessions"])(Object(Lu.c)(e.target.value))},showFullHelperInf:g,docDescription:so.a.schemas.auth_spec.properties.max_sessions.description})),Object(m.c)(Xu,{media:l,onConfigChange:s,templateConfig:h,isStream:g})),Object(m.c)(p.hb,{item:!0,xs:12,lg:9},Object(m.c)(Nu,{media:l,change:s,isMultiEdit:_,isTemplate:b,templateConfig:h,isStream:g,product:x})),!_&&x!==d.b&&Object(m.c)(p.hb,{item:!0,xs:12,container:!0,"data-testid":"media-output-push-block"},Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.l,{display:"flex"},Object(m.c)(p.kc,{variant:"h5"},O("streamOutputPage.pushLiveVideoTitle")),Object(m.c)(p.jb,{docDescription:so.a.schemas.stream_config_media.properties.pushes.description,diskValue:Object(B.e)(l.pushes)?"✔":"",templateValue:Object(B.e)(null==h?void 0:h.pushes)?"✔":"",showFullHelperInf:g}),Object(B.b)(l.pushes)&&Object(B.e)(null==h?void 0:h.pushes)&&Object(m.c)(p.l,{ml:1},Object(m.c)(p.n,{color:"primary",variant:"contained","data-testid":"pushes-copy-button",onClick:function(){s("pushes","raw")(lt.a(null==h?void 0:h.pushes))},size:"small"},O("streamOutputPage.copyPushesButton"))),Object(B.e)(l.pushes)&&Object(B.e)(null==h?void 0:h.pushes)&&Object(m.c)(p.l,{ml:1},Object(m.c)(p.n,{color:"primary",variant:"contained","data-testid":"pushes-use-button",onClick:function(){S(!0)},size:"small"},O("streamOutputPage.usePushesFromTemplateButton"))))),Object(m.c)(p.hb,{item:!0,xs:12},Object(B.e)(l.pushes)||Object(B.b)(l.pushes)&&Object(B.b)(null==h?void 0:h.pushes)?Object(m.c)(ed,{media:l,onConfigChange:s,configEffective:y,mediaNames:v,entity:f}):"",Object(B.b)(l.pushes)&&Object(B.e)(null==h?void 0:h.pushes)&&Object(m.c)(ed,{media:h,configEffective:y,mediaNames:v,isEffective:!0,entity:f}),Object(m.c)(p.l,{mb:5})),Object(m.c)(p.C,{open:k,handleClose:C,onDelete:function(){s("pushes","raw")(null),C()},title:O("streamOutputPage.usePushesFromTemplateConfirm"),notice:O("streamOutputPage.usePushesFromTemplateNotice"),removeButtonText:O("streamOutputPage.usePushesFromTemplateButton")}))):"")};td.defaultProps={entity:void 0,isTemplate:!1,templateConfig:null,configEffective:null,isStream:!1};var rd=Object(ge.b)(td),nd=r(45),od=["name","docDescription","index"];function id(){return(id=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var sd=function(e){var t=e.name,r=e.docDescription,n=e.index,o=ad(e,od),i=Object(j.b)().t;return Object(m.c)(p.bb,id({name:t,type:"number",label:i("multiplexer-".concat(t)),docDescription:r,inputProps:{"data-testid":o["data-testid"]||"multiplexer-".concat(t,"-").concat(n)}},cu.a(["data-testid"],o)))};function cd(e){return function(e){if(Array.isArray(e))return ld(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ld(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ld(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ld(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?Number(e[e.length-1]):31)+1}},bd=function(e){var t=e.track;switch(pd.find((function(t){return t===e.content}))){case"audio":return Object(B.e)(t)?"a".concat(t):"";case"video":return Object(B.e)(t)?"v".concat(t):"";case"application":return Object(B.e)(t)?"l".concat(t):"";case"metadata":return Object(B.e)(t)?"m".concat(t):"";default:return""}},hd=function(e,t){var r,n=e?e.slice(0,1):"",o=e&&Number(e.slice(1))||"",i=t;switch(n){case"a":r="audio";break;case"v":r="video";break;case"l":r="application",t&&(i=null);break;case"m":r="metadata",t&&(i=null);break;default:t&&(i=null)}return{content:r,pcr:i,track:o}},yd=function(e){var t,r,n,o,i=e.values,a=e.multiplexers,s=e.program,c=e.value,l=e.streams,p=lt.a(s);if(Object(B.b)(p.lcn)&&(p.lcn=function(e,t){return function(){var r=[e];e.others&&e.others.forEach((function(e){r=[].concat(cd(r),[t.find((function(t){return t.name===e.name}))])}));var n=[];r.forEach((function(e){var t=e.programs||[];n=[].concat(cd(n||[]),cd(t))}));var o=n.map((function(e){return Object(B.e)(e.lcn)?Number(e.lcn):e.lcn})).filter((function(e){return Object(B.e)(e)})),i=Oc.a((function(e,t){return e-t}),o);if(0!==i[0])return 0;for(var a=1;a=720?"digital_tv_avc_hd":"digital_tv_avc_sd";break;case"hevc":p.service_type=g&&g>=720?"digital_tv_hevc_uhd":"digital_tv_hevc";break;case"mp2v":p.service_type="digital_tv_mpeg2_hd"}else"aac"===y?p.service_type="digital_radio_aac":y&&(p.service_type="digital_radio")}return p},gd=p.sc.DeleteIcon,vd=function(e){var t,r=e.programIndex,n=e.index,i=e.values,a=e.setFieldValue,s=e.addPid,c=e.handleChangeTrack,l=e.handleChangeTrackInput,u=e.removePid,d=e.disabled,f=e.programWithStats,b=Object(j.b)().t,h=((void 0!==r?null===(t=i.programs)||void 0===t?void 0:t[r]:i)||{}).pids,y=void 0!==r?"programs.".concat(r,".pids"):"pids";return Object(m.c)(nd.b,{name:"".concat(y,".media"),render:function(e){return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.gc,{titleText:b("multiplexer.pidsTitle"),button:Object(m.c)($c,{onClick:function(){return s(e)},docDescription:so.a.schemas.transponder_program.properties.pids.description,"data-testid":"multiplexers-program-pids-add-".concat(n,"-").concat(r),disabled:d})})),Object(m.c)(p.hb,{item:!0,xs:12,md:6,lg:2},Object(m.c)(sd,{name:"".concat(y,".pmt"),label:b("multiplexer-pmt"),docDescription:so.a.schemas.output_mpegts_pids.properties.pmt.description,"data-testid":"multiplexers-program-pids-pmt-".concat(n,"-").concat(r),disabled:d})),Object(m.c)(p.hb,{item:!0,xs:12,lg:8}),((null==h?void 0:h.media)||[]).map((function(t,i){var s,g,v;return(!t.$delete&&Object(m.c)(o.a.Fragment,{key:i},Object(m.c)(p.hb,{item:!0,xs:12,sm:6,lg:3},Object(m.c)(sd,{name:"".concat(y,".media.").concat(i,".pid"),label:b("multiplexer-pid"),docDescription:so.a.schemas.transponder_pid.properties.pid.description,"data-testid":"multiplexers-program-pids-media-pid-".concat(n,"-").concat(r,"-").concat(i),disabled:d})),void 0!==r&&Object(m.c)(p.hb,{item:!0,xs:12,sm:6,lg:3},Object(m.c)(p.bb,{name:"".concat(y,".media.").concat(i,".bitrate"),type:"number",label:b("multiplexer-bitrate"),inputProps:{"data-testid":"multiplexers-program-pids-media-bitrate-".concat(n,"-").concat(r,"-").concat(i)},docDescription:so.a.schemas.transponder_pid.properties.bitrate.description,endAdornment:Object(m.c)(p.kc,{component:"span",variant:"body2"},"K"),disabled:d})),Object(m.c)(p.hb,{item:!0,xs:12,sm:6,lg:2},Object(m.c)(p.T,{freeSolo:!0,name:"".concat(y,".media.").concat(i,".track"),value:bd(t),onChange:c(i,e),onInputChange:l(i,e),label:b("multiplexer-track"),items:ud,"data-testid":"multiplexers-program-pids-media-track-".concat(n,"-").concat(r,"-").concat(i),disabled:d})),Object(m.c)(p.hb,{item:!0,xs:12,sm:6,lg:4,display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap"},Object(m.c)(p.l,{display:"flex",alignItems:"center"},("video"===t.content||"audio"===t.content)&&Object(m.c)(p.U,{name:"".concat(y,".media.").concat(i,".pcr"),label:b("multiplexer-pcr"),checked:(null==h?void 0:h.pcr)===t.pid,onChange:function(e){return a("".concat(y,".pcr"),e.target.checked?t.pid:null)},"data-testid":"multiplexers-program-pids-media-pcr-".concat(n,"-").concat(r,"-").concat(i),disabled:d}),Object(m.c)(qu,{stats:null==f?void 0:null===(s=f.pids)||void 0===s?void 0:null===(g=s.media)||void 0===g?void 0:null===(v=g[i])||void 0===v?void 0:v.stats})),Object(m.c)(p.lb,{"aria-label":"delete",size:"small",color:"secondary",onClick:function(){return u(i,e)},"data-testid":"multiplexers-program-pids-delete-".concat(n,"-").concat(r,"-").concat(i),disabled:d},Object(m.c)(gd,{fontSize:"small"}))),Object(m.c)(p.hb,{item:!0,xs:12})))})))}})};function _d(e){return function(e){if(Array.isArray(e))return Od(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Od(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Od(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Od(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?Number(e[e.length-1]):31)+1}}((t=r,function(){var e,r,n=[],o=null!==(e=t.pids)&&void 0!==e&&e.pmt?[t.pids.pmt]:[];if(null!==(r=t.pids)&&void 0!==r&&r.media){var i,a=((null===(i=t.pids)||void 0===i?void 0:i.media)||[]).map((function(e){return e.pid}));n=[].concat(_d(n),_d(a),o)}else n=[].concat(_d(n),o);return Oc.a((function(e,t){return e-t}),n)})());e.push({pid:n.pid})},handleChangeTrack:i,handleChangeTrackInput:function(e,t){return function(r,n){r&&i(e,t)(r,n)}},removePid:function(e,t){t.remove(e)},disabled:o})},Pd=Object.values(Sc.y),Td=p.sc.DeleteIcon,Id=function(e){var t,r,i=e.disabled,a=e.media,s=Object(j.b)().t,c=Ac().classes,l=Object(nd.g)().values,u=Object(n.useMemo)((function(){var e,t;return((null===(e=a.stats)||void 0===e?void 0:null===(t=e.media_info)||void 0===t?void 0:t.tracks)||[]).filter((function(e){return"audio"===e.content})).map((function(e){return e.track_id||""}))}),[null===(t=a.stats)||void 0===t?void 0:null===(r=t.media_info)||void 0===r?void 0:r.tracks]);return Object(m.c)(nd.b,{name:"push_audio_tracks",render:function(e){var t;return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.gc,{titleText:s("audioTracks.title"),button:Object(m.c)($c,{onClick:function(){return e.push({})},docDescription:null===(t=so.a.schemas.stream_push_dektec.allOf[0].properties)||void 0===t?void 0:t.push_audio_tracks.description,"data-testid":"audio-tracks-add",disabled:i})})),(l.push_audio_tracks||[]).map((function(t,r){var n;return(Object(m.c)(o.a.Fragment,{key:r},Object(m.c)(p.hb,{item:!0,xs:12,sm:8,lg:3},Object(m.c)(p.T,{freeSolo:!0,name:"push_audio_tracks.".concat(r,".track"),value:t.track,label:s("audioTracks.track"),items:u,"data-testid":"audio-tracks-track-".concat(r),docDescription:so.a.schemas.push_audio_track.properties.track.description,disabled:i})),Object(m.c)(p.hb,{item:!0,xs:12,sm:8,lg:3},Object(m.c)(p.T,{freeSolo:!0,autoSelect:!0,multiple:!0,name:"push_audio_tracks.".concat(r,".channels"),value:(null!==(n=t.channels)&&void 0!==n?n:[]).map(String),label:s("audioTracks.channels"),items:[],"data-testid":"audio-tracks-channels-".concat(r),docDescription:so.a.schemas.push_audio_track.properties.channels.description,disabled:i})),Object(m.c)(p.hb,{item:!0,xs:12,sm:8,lg:3},Object(m.c)(p.T,{freeSolo:!0,name:"push_audio_tracks.".concat(r,".sample_type"),label:s("audioTracks.sample_type"),items:Pd,"data-testid":"audio-tracks-sample_type-".concat(r),docDescription:so.a.schemas.push_audio_track.properties.sample_type.description,disabled:i})),Object(m.c)(p.hb,{item:!0,xs:6,sm:6,lg:2},Object(m.c)(p.lb,{"aria-label":"delete",size:"small",color:"secondary",onClick:function(){return e.remove(r)},"data-testid":"audio-tracks-".concat(r,"-delete"),className:c.deleteSettingsButton,disabled:i},Object(m.c)(Td,{fontSize:"small"})))))})))}})},Cd=/^[A-Za-z0-9_]*$/,Ad=function(){return ao.c().nullable().integer("validators.mustBeInteger").typeError("shouldBeNumberError").transform((function(e,t){return Object(B.b)(t)?null:Number(t)}))},Dd=function(){return Ad().min(so.a.schemas.psi_version.minimum,"multiplexer.validators.versionError").max(so.a.schemas.psi_version.maximum,"multiplexer.validators.versionError")},Ed=function(){return Ad().min(so.a.schemas.ts_pid.minimum,"multiplexer.validators.pidIdError").max(so.a.schemas.ts_pid.maximum,"multiplexer.validators.pidIdError").transform((function(e,t){return Object(B.b)(t)?null:Number(t)}))},$d=ao.d().shape({pmt:Ed(),pcr:Ed(),media:ao.a().of(ao.d().shape({pid:Ed().required("required"),bitrate:Ad().positive().default(null)}))}),Nd=ao.d().shape({name:ao.e().matches(Cd,{message:"multiplexer.validators.nameError"}).required("required"),bitrate:Ad().required("required"),provider:ao.e().nullable().default(null),ts_stream_id:Ad(),versions:ao.d().shape({psi:Dd(),pat:Dd(),pmt:Dd(),nit:Dd(),sdt:Dd()}),eit:ao.d().shape({max_bitrate:Ad(),xmltv_url:ao.e().nullable().default(null),intervals_pf:ao.d().shape({actual:Ad(),other:Ad()}),intervals_schedule:ao.d().shape({actual:Ad(),other:Ad()})}),network_name:ao.e().nullable().default(null),network_id:Ad(),original_network_id:Ad(),timeouts:ao.d().shape({media_info:Ad()}),ts_descriptors:ao.a().of(ao.d().shape({tag:ao.c().integer("validators.mustBeInteger").typeError("shouldBeNumberError"),hex:ao.e()})),pushes:ao.a().of(ao.d().shape({url:ao.e().required("required"),pkt_limit:Ad(),depth_limit:Ad()})),time_offsets:ao.a().of(ao.d().shape({country:ao.e().required("required"),region:ao.c().integer("validators.mustBeInteger").typeError("shouldBeNumberError").default(null),local_time_offset:ao.e().nullable().default(null),next_time_offset:ao.e().nullable().default(null)})),programs:ao.a().of(ao.d().shape({program_id:Ad().required("required").min(so.a.schemas.ts_pid.minimum,"multiplexer.validators.programIdError").max(so.a.schemas.ts_pid.maximum,"multiplexer.validators.programIdError"),source:ao.e().nullable().default(null),title:ao.e().nullable().default(null),eit_title:ao.e().nullable().default(null),lcn:Ad(),pids:$d}))}),Ld=function(){return ao.c().positive().nullable().integer("validators.mustBeInteger").typeError("shouldBeNumberError").default(null).transform((function(e,t){return""===t?null:Number(t)}))},Rd=ao.d().shape({url:ao.e(),vb:Ld(),bitrate:Ld(),pnr:Ld(),standby:ao.b(),multicast_loop:ao.b(),video_format:ao.e().nullable().default(null).transform((function(e,t){return""===t?null:t})),pids:$d,push_audio_tracks:ao.a().of(ao.d().shape({track:ao.e().required("required"),sample_type:ao.e().nullable(),channels:ao.a().of(Ld()).required("required")})).nullable().transform((function(e,t){return t&&0===t.length?null:t}))});function qd(e){return(qd="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Md(e){return function(e){if(Array.isArray(e))return Fd(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Fd(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Fd(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Fd(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function nm(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return om(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return om(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function om(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=99?l(a("dvrLimits.warning")):l("")},disabled:o,inputProps:{min:0,max:100},dimension:"%",warning:c,docDescription:so.a.schemas.dvr_base_config.properties.disk_usage_limit.description}),Object(m.c)(p.l,{mt:1},Object(m.c)(lm,{entity:"dvr",path:["storage_limit"],disabled:o,defaultValue:t.storage_limit||Ot.a("storage_limit")(i)||"",onChange:r({path:"storage_limit",getValue:dr.a}),label:a("dvr-storage_limit"),docDescription:so.a.schemas.dvr_base_config.properties.storage_limit.description})),Object(m.c)(p.l,{mt:1},Object(m.c)(Rr,{entity:"dvr",path:["expiration"],disabled:o,defaultValue:t.expiration||Ot.a("expiration")(i)||"",onChange:r({path:"expiration",getValue:dr.a}),label:a("dvr-expiration"),docDescription:so.a.schemas.dvr_base_config.properties.expiration.description})))};hm.defaultProps={disabled:!1,templateDvr:null};var ym=hm,gm=function(e){var t=e.dvr,r=e.onValueToggle,n=e.onValueChange,o=e.disabled,i=e.templateDvr,a=Object(j.b)().t;return Object(m.c)(p.hb,{container:!0,item:!0,xs:12,spacing:1},Object(m.c)(p.hb,{item:!0,xs:4},Object(m.c)("div",{style:{display:"flex",justifyContent:"start",alignItems:"center"}},Object(m.c)(p.Q,{control:Object(m.c)(p.s,{disabled:o||xt.a(t.dvr_replicate)&&Object(B.d)(Ot.a("dvr_replicate")(i)),checked:t.dvr_replicate||Ot.a("dvr_replicate")(i)||!1,onChange:r({path:"dvr_replicate"}),color:"primary",inputProps:{"data-testid":"dvrReplicate"}}),label:a("dvrReplicate.dvrReplicateLabel"),docDescription:so.a.schemas.dvr_base_config.properties.dvr_replicate.description}))),Object(m.c)(p.hb,{item:!0,xs:8},(t.dvr_replicate||Ot.a("dvr_replicate")(i))&&Object(m.c)(p.dc,{templateData:i,type:"number",inputProps:{min:1,max:65535},entity:"dvr",path:["replication_port"],value:t.replication_port||Ot.a("replication_port")(i),onChange:n({path:"replication_port",getValue:Jd}),disabled:o||!t.dvr_replicate&&!Ot.a("dvr_replicate")(i),docDescription:so.a.schemas.dvr_base_config.properties.replication_port.description})))};gm.defaultProps={disabled:!1,templateDvr:null};var vm=gm,_m=function(e){var t=e.dvr,r=e.name,n=e.t;return q.a(ur.a([[Ye.a(!1),fr.a("")],[mr.a,fr.a(n("dvrCustom.warningText"))]]),dm.a([fr.a(Object(B.e)(r)),Ye.a(r)]),vr.a,mm.a(B.e),Do.a("/"),$o.a("","root"))(t)},Om=function(e){var t=e.handleDvrDelete,r=e.dvrReference,n=e.onDvrReferenceChange,i=e.onDvrValueChange,a=e.onDvrValueToggle,s=e.dvr,c=e.name,l=e.templateConfig,u=e.dvrs,d=e.disabled,f=Object(j.b)().t,b=hr({dvr:$o.a({},"dvr")(l),dvrs:u}),h=function(e){var t=e.dvrReference,r=e.dvr,n=e.templateDvr;return{isReference:Object(B.d)(t),isCustom:Object(B.d)(r.root)||Object(B.d)(Ot.a("root")(n))}}({dvrReference:r,dvr:s,templateDvr:b}),y=h.isReference,g=h.isCustom,v=g||y?s.root:"",_=g||y?$o.a("","root")(b):"";return Object(m.c)(p.hb,{container:!0},Object(m.c)(p.hb,{container:!0,item:!0,xs:12,md:11,lg:8,spacing:2},Object(m.c)(p.hb,{item:!0,xs:12,sm:6,container:!0},Object(m.c)(p.dc,{templateData:g||y?b:null,entity:"dvr",path:["root"],value:v||_,onChange:function(e){var o=e.target.value;o?(Object(B.e)(r)&&n(null),i({path:["root"],getValue:dr.a})(o)):t()},helperText:_m({dvr:s,name:c,t:f})||f("dvrCustom.helperText"),disabled:d,dimension:Object(m.c)(p.lb,{onClick:t,edge:"end",size:"small","data-testid":"remove-value-button"},Object(m.c)(p.q,{fontSize:"small"})),docDescription:so.a.schemas.stream_dvr_specific_spec.properties.root.description}),(g||y)&&Object(m.c)(vm,{dvr:s,templateDvr:b,disabled:d,onValueToggle:a,onValueChange:i})),Object(m.c)(p.hb,{item:!0,xs:12,sm:6},(g||y)&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.dc,{templateData:b,entity:"dvr",path:["copy"],value:s.copy||Ot.a("copy")(b)||"",onChange:i({path:[s.name,"copy"]}),disabled:d}),Object(m.c)(ym,{dvr:s,disabled:d,onValueChange:i,templateDvr:b})))))};Om.defaultProps={dvrReference:void 0,name:"",stream:void 0,templateConfig:void 0,isStream:!1,dvrs:[]};var jm=Om,xm=Object(p.uc)()((function(e){return{text:{fontWeight:e.typography.fontWeightLight}}})),wm=function(e){var t=e.title,r=e.children,n=e.titleVariant,o=e.docDescription,i=xm().classes;return Object(m.c)(p.hb,{container:!0,justifyContent:"space-between"},Object(m.c)(p.hb,{item:!0},Object(m.c)("div",{className:"dvr-title-wrapper"},Object(m.c)(p.kc,{variant:n||"h5",className:i.text},t),o&&Object(m.c)(li.a,{docDescription:o}))),Object(m.c)(p.hb,{item:!0},r))},km=["label","onClick","disabled"];function Sm(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Pm=Object(p.uc)()((function(e){return{root:{dvrSectionAddButton:{color:e.palette.grey[800]}}}})),Tm=function(e){var t=e.label,r=e.onClick,n=e.disabled,o=Sm(e,km),i=Pm().classes;return Object(m.c)(p.n,{className:i.dvrSectionAddButton,variant:"outlined",onClick:r,"data-testid":o["data-testid"],disabled:n},t,Object(m.c)(p.e,{fontSize:"small"}))};function Im(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Cm(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Cm(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Cm(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:dr.a;N(["dvr","reference"])(t(e))},onDvrValueChange:function(e){var t=e.path,r=e.getValue,n=void 0===r?Yd:r;return function(e){var r=Array.isArray(t)?t.filter(Boolean):[t];N(["dvr"].concat(Um(r)))(n(e))}},onDvrValueToggle:function(e){var t=e.path,r=e.getValue,n=void 0===r?Kd.a:r;return function(){var e=Array.isArray(t)?t.filter(Boolean):[t],r=n(F.a(["dvr"].concat(Um(e)),f));N(["dvr"].concat(Um(e)))(r)}},handleDvrDelete:U,templateConfig:h,stream:q,dvrs:$,disabled:z})),w!==d.b&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{container:!0},Object(m.c)(p.hb,{item:!0,xs:12,md:11,lg:8},Object(m.c)("div",{className:"row-height"}),Object(m.c)("h1",{className:"head-text"},v("dvrPage.ssdDiskCacheTitle")),Object(m.c)("div",{className:"notice-text"},v("dvrPage.ssdDiskCacheTitleNotice")))),Object(m.c)(um,{stream:q,onCacheChange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Yd;return function(r){var n=e.filter(Boolean);N(["cache"].concat(Um(n)))(t(r))}},streamName:x,templateConfig:h,disabled:z}),Object(m.c)(p.l,{mt:6},Object(m.c)(p.hb,{container:!0,item:!0,xs:12,lg:6,alignContent:"flex-start"},Object(m.c)(Em,{dvr:M,dvrIndex:null,onScheduleRangeValueChange:function(e,t){return function(r){var n=r.target.value.replace(/:/g,""),o=parseInt(n,10),i=M.schedule.map((function(r,n){return n!==e?r:0===t&&[o,r[1]]||[r[0],o]}));N(["dvr"].concat(["schedule"]))(i)}},onScheduleRangeDelete:function(e){return function(){N(["dvr","schedule"])(M.schedule.filter((function(t,r){return e!==r})))}},onScheduleRangeAdd:function(){return function(){N(["dvr","schedule"])([].concat(Um(M.schedule||[]),[[0,2359]]))}},titleVariant:"h5",templateConfig:h,disabled:z}))),(null==f?void 0:f.named_by)!==st.d.external&&Object(m.c)(p.hb,{container:!0},Object(m.c)(p.hb,{item:!0,xs:12,md:11,lg:8},Object(m.c)("div",{className:"row-height"}),Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)(Mm,{isConfigChanged:Object(B.e)(f)&&l,onConfigResetChanges:s})),Object(m.c)("div",{className:"row-height"})))))):"",Object(m.c)(p.C,{open:S,handleClose:L,onDelete:function(){N([])(Bm(Bm({},f),{},{dvr:null,cache:null})),L(),R()},title:v("dvrPage.useDvrFromTemplateConfirm"),notice:v("dvrPage.useDvrFromTemplateNotice"),removeButtonText:v("dvrPage.useDvrFromTemplateButton")}))};Ym.defaultProps={shouldRenderTimeline:!1,entityPath:["streams"],statsPath:null,history:null,hideSettings:!1,renderStreamPageHeader:function(){},isTemplate:!1,templateConfig:null};var Jm=Ym,Qm=r(1713);function Xm(e){return(Xm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Zm(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ef(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r1)if(t.includes("_"))n(["video",r,"sar"])(u("specifyAllSettingsError"));else{var o=!1;t.forEach((function(e){0===Number(e)&&(o=!0,n(["video",r,"sar"])(u("shouldBeGreaterThanZeroError")))})),o||(i(["video",r,"sar"])(),function(e){var t=lt.a(c);t[r].sar={x:e[0],y:e[1]},p(t)}(t))}else{i(["video",r,"sar"])();var a=lt.a(c);delete a[r].sar,p(a)}},maskParams:{mask:"9[9[9]]:9[9[9]]",greedy:!1},error:h,isCalculatedValue:Object(B.b)(t.sar)&&Object(B.e)(s.sar_width)&&Object(B.e)(s.sar_height),disabled:l,docDescription:so.a.schemas.transcoder_track_info_video.allOf[1].properties.sar.description})},lf=r(869),pf=function(e){var t=Number(e).toString(16);return t.length<2&&(t="0".concat(t)),t},uf=function(e){var t=e.r,r=e.g,n=e.b;if(!(xt.a(t)||xt.a(r)||xt.a(n))){var o=pf(e.r),i=pf(e.g),a=pf(e.b);return"#".concat(o,i,a)}return e},df=r(31),mf=r(242);r(1533);function ff(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return bf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return bf(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function bf(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1)if(t.includes("_"))r(["decoder","crop"])(u("specifyAllSettingsError"));else{var o=!1;t.forEach((function(e){0===Number(e)&&(o=!0,r(["decoder","crop"])(u("shouldBeGreaterThanZeroError")))})),o||(n(["decoder","crop"])(),p({path:["decoder","crop"],value:{left:Number(t[0]),top:Number(t[1]),width:Number(t[2]),height:Number(t[3])}}))}else n(["decoder","crop"])(),p({path:["decoder","crop"],value:null})},maskParams:{mask:"9[9[9[9[9]]]]:9[9[9[9[9]]]]:9[9[9[9[9]]]]:9[9[9[9[9]]]]",greedy:!1},error:y,disabled:s,showFullHelperInf:l,getValueFn:_b,data:t,templateData:c,docDescription:so.a.schemas.tc_decoder.properties.crop.description})},jb=function(e){var t=e.transcoderSettings,r=e.disabled,n=e.streams,o=e.mediaNames,i=e.onError,a=e.onErrorResolve,s=e.transcoderSettingsTemplate,c=e.isStream,l=e.handleChange,u=Object(j.b)().t,d=Object(B.e)(F.a(["global","external"])(t))?Ot.a("global")(t):Ot.a("global")(s),f=df.J.global.external,b=["global","external"],h=f(Ot.a("external",d),!0);return Object(m.c)(p.l,null,Object(m.c)(na.a,{label:u("transcoderSettingsGeneral.speedUpLabel"),color:"primary","data-testid":"global-external",checked:!h,onChange:function(e){(Object(df.E)(t)||Object(df.E)(s))&&(Object(Wr.e)(n,o).every((function(t){return t===!e.target.checked}))?a(b)():i(b)(u("transcoderSettingsGeneral.externalError")));l({path:["global","external"],value:!e.target.checked})},justifyContent:"flex-start",HelperDocProps:{docDescription:so.a.schemas.tc_global.properties.external.description,diskValue:Object(B.d)(f(F.a(["global","external"])(t),null))?String(!f(F.a(["global","external"])(t),null)):null,templateValue:Object(B.d)(f(F.a(["global","external"])(s),null))?String(!f(F.a(["global","external"])(s),null)):null,showFullHelperInf:c},style:{position:"relative",left:"-12px"},disabled:r}))};function xb(e){return(xb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function wb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function kb(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0||(null==e?void 0:null===(t=e.global)||void 0===t?void 0:t.target)},Wb=function(e){var t=e.handleTranscoderAddVideoTrack,r=e.videoTracks,i=e.videoTracksTemplate,a=e.videoTracksCalc,s=e.handleTranscoderRemoveTrack,c=e.handleTranscoderCopyTrack,l=e.transcoderSettings,u=e.onError,d=e.onErrorResolve,f=e.errors,b=e.externalChangeTimeout,h=e.handleVideoTrackExtraChange,y=e.handleVideoTrackExtraRemove,g=e.transcoderDevices,v=e.isConfigChanged,_=e.streams,O=e.mediaNames,x=e.transcoderSettingsTemplate,w=e.isStream,k=e.handleChange,S=e.handleCopyVideo,P=e.withTracks,T=Object(j.b)().t,I=Fb(Object(n.useState)(!1),2),C=I[0],A=I[1],D=$o.a([],"video")(l),E=$o.a([],"video")(x),$=D&&!Hb(l)&&Object(df.z)(D[0])||E&&!Hb(x)&&Object(df.z)(E[0]),N=Vb(l)||Vb(x),L=ar.a(null,["global","hw"])(l)||ar.a(null,["global","hw"])(x),R=ar.a(null,["global","deviceid"])(l)||ar.a(null,["global","deviceid"])(x),q=g.find((function(e){return String(e.id)===String(R)&&e.type===L})),M=!q||!Object.prototype.hasOwnProperty.call(q,"can_interlace")||q.can_interlace,F=!q||!Object.prototype.hasOwnProperty.call(q,"can_logo")||q.can_logo,U=!q||!Object.prototype.hasOwnProperty.call(q,"can_internal")||q.can_internal,z=function(){A(!1)},H=function(){return Object(m.c)(li.a,{docDescription:so.a.schemas.transcoder_opts.properties.video.description,diskValue:Object(B.e)(D)?"✔":"",templateValue:Object(B.e)(E)?"✔":"",showFullHelperInf:w})},V=function(e){var r=e.disabled,n=e.justify;return Object(m.c)(p.p,{buttonText:T("transcoderSettingsEditor.addVideoTrack"),"data-testid":"transcoderAddTrack",onButtonClick:t({track:{bitrate:so.a.schemas.tc_video_opts.properties.bitrate.example}}),items:Bb.map((function(e){var r=Fb(e,2),n=r[0],o=r[1];return{text:"".concat(n,", ").concat(o,"p"),onClick:t({track:{bitrate:Object(df.H)(n),size:{height:o,width:-1}}}),"data-testid":"transcoderAddTrackB".concat(n,"H").concat(o)}})),disabled:r,justify:n})},W=function(e){return k({path:["video"],value:e})};return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{mb:1,display:"flex",alignItems:"center",justifyContent:"space-between"},Object(m.c)(p.l,{display:"flex",alignItems:"center"},Object(m.c)(p.kc,{variant:"h5"},T("transcoderSettingsEditor.videoTitle")),Object(m.c)(p.l,{ml:1},Object(m.c)(na.a,{isSwitch:!0,"data-testid":"video-copy",checked:Object(B.b)(D)?Object(df.z)((E||[])[0]):Object(df.z)(D[0]),color:"primary",size:"small",label:T("transcoderSettingsEditor.copyFromOriginLabel"),onChange:S,HelperDocProps:{docDescription:so.a.schemas.tc_video_opts.properties.bitrate.description,diskValue:Object(df.z)(Ot.a("video")(l))?"copy":null,templateValue:Object(df.z)(Ot.a("video")(x))?"copy":null,showFullHelperInf:w}}))),Object(m.c)(p.kb,{only:"xs"},Object(m.c)(p.l,{ml:1},V({disabled:$||Object(B.b)(r)&&Object(B.e)(i)})))),Object(m.c)(p.kb,{smUp:!0},V({disabled:$,justify:"flex-start"})),$?"":Object(m.c)(o.a.Fragment,null,Object(m.c)(p.l,{mt:2},Object(m.c)(qb,{transcoderDevices:g,transcoderSettings:l,onError:u,onErrorResolve:d,errors:f,isConfigChanged:v,isNotCopiedTrackExists:Hb,isVideoTracksExist:N,canInternal:U,streams:_,mediaNames:O,transcoderSettingsTemplate:x,isStream:w,renderTracksInf:H,handleChange:k,withTracks:P})),Object(m.c)(p.l,{display:"flex",justifyContent:"start",alignItems:"center"},Object(B.b)(r)&&Object(B.e)(i)&&Object(m.c)(p.l,{my:1},Object(m.c)(p.n,{color:"primary",variant:"contained","data-testid":"transcoder-settings-copy-tracks-button",onClick:function(){k({path:["video"],value:i})}},T("transcoderSettingsEditor.copyTracksButton"))),Object(B.e)(r)&&Object(B.e)(i)&&Object(m.c)(p.l,{my:1},Object(m.c)(p.n,{color:"primary",variant:"contained","data-testid":"transcoder-settings-use-tracks-from-template-button",onClick:function(){A(!0)}},T("transcoderSettingsEditor.useTracksFromTemplateButton"))),Object(B.e)(r)||Object(B.e)(i)?Object(m.c)(p.l,{mt:2},H()):""),Object(m.c)(p.l,{mt:1},Hb(l)&&Object(B.e)(r)&&r.map((function(e,t){var r=a.find((function(t){return t.track_id==="v".concat(e.track)}))||{};return Object(m.c)(p.a,{key:e.track,"data-testid":"transcoder-settings-video-track-".concat(t)},Object(m.c)(p.c,{expandIcon:Object(m.c)(p.N,{"data-testid":"transcoder-video-panel-".concat(t,"-arrow")}),className:"panel-summary"},Object(m.c)(Uf,{track:e,trackId:t,onTranscoderRemoveTrack:s([e.track]),onTranscoderCopyTrack:c(e.track),onError:u,onErrorResolve:d,errors:f,videoTrackCalc:r,externalChangeTimeout:b,transcoderSettings:l,handleVideoChange:W})),Object(m.c)(p.b,null,Object(m.c)(lb,{track:e,trackId:t,transcoderSettings:l,onError:u,onErrorResolve:d,errors:f,videoTrackCalc:r,onRemoveByKey:y(t),onVideoTrackExtraChange:h(t),canInterlace:M,canLogo:F,handleVideoChange:W})))})),Object(B.b)(r)&&Hb(x)&&i.map((function(e,t){var r=a.find((function(t){return t.track_id==="v".concat(Number(e.track)+1)}))||{};return Object(m.c)(p.a,{key:e.track,"data-testid":"transcoder-settings-template-video-track-".concat(t)},Object(m.c)(p.c,{expandIcon:Object(m.c)(p.N,{"data-testid":"transcoder-template-video-panel-".concat(t,"-arrow")}),className:"panel-summary"},Object(m.c)(Uf,{track:e,trackId:t,videoTrackCalc:r,transcoderSettings:x,isTemplate:!0})),Object(m.c)(p.b,null,Object(m.c)(lb,{track:e,trackId:t,transcoderSettings:x,videoTrackCalc:r,canInterlace:M,canLogo:F,isTemplate:!0})))}))),Object(m.c)(p.C,{open:C,handleClose:z,onDelete:function(e){z(),s(Mb(r.map((function(e){return e.track}))))(e)},title:T("transcoderSettingsEditor.useTracksFromTemplateConfirm"),notice:T("transcoderSettingsEditor.useTracksFromTemplateNotice"),removeButtonText:T("transcoderSettingsEditor.useTracksFromTemplateButton")})))};Wb.defaultProps={externalChangeTimeout:!1};var Gb=r(262),Kb=/^(\d+\.?\d{0,2})$|^([-+]\d+\.?\d{0,4}dB)$/;function Yb(e){return function(e){if(Array.isArray(e))return Jb(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Jb(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Jb(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Jb(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},n=e.isCopy,o=e.track,i=void 0===o?{}:o;return function(){var e=$o.a([],"video")(t),o=F.a([e.length-1,"track"])(e),a=n?"copy":i.bitrate||1e6;r(["video"],"raw")([].concat(rh(e),[eh(eh({codec:"h264",bitrate:a},i),{},{track:Object(B.e)(o)?o+1:1})])),x(eh(eh({},Object.keys(j).reduce((function(e,t){return th({},t,!1)}),{})),{},th({},0===e.length?0:e.length+1,!0)))}},E=function(e){var t=e.path,n=e.value;r(t)(n)},$=C(t),N=C(f),L=o?o.tracks:null,R=Object(B.d)(L)?L.find((function(e){return"audio"===e.content})):{},q=Object(B.d)(L)?L.filter((function(e){return"video"===e.content})):[];return Object(m.c)(at,{id:"StreamTranscoderPageEditor",paths:sh,propsToCheck:{transcoderSettings:t,isSaving:h,errors:l,transcoderDevices:a,transcoderSettingsTemplate:f,externalChangeTimeout:T}},Object(m.c)(p.l,{my:2,width:"100%"},Object(m.c)(p.Mb,{elevation:3},Object(m.c)(p.l,{p:2,mt:2,"data-testid":"transcoder-settings-audio"},Object(m.c)(Qb,{transcoderSettings:t,audioTrackCalc:R||{},transcoderSettingsTemplate:f,isStream:b,handleChange:E,handleCopyAudio:function(e){e.target.checked?(_(eh(eh({},v),{},{audio:eh({},t.audio)})),E({path:["audio"],value:eh(eh({},Object.keys(t.audio).reduce((function(e,t){return eh(eh({},e),{},th({},t,null))}),{})),{},{bitrate:"copy"})})):(E({path:["audio"],value:eh({},v.audio)}),_(eh(eh({},v),{},{audio:{}})))}}))),Object(m.c)(p.Mb,{elevation:3},Object(m.c)(p.l,{p:2,mt:2,"data-testid":"transcoder-settings-video"},Object(m.c)(Wb,{handleTranscoderAddVideoTrack:D,isTracksVisible:k,videoTracks:$,videoTracksTemplate:N,videoTracksCalc:q,handleTranscoderRemoveTrack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return function(r){r.stopPropagation();var n=C(t).filter((function(t){return!e.includes(t.track)}));E({path:["video"],value:n}),S(!1),S(!0),I(n.length>1)}},handleTranscoderCopyTrack:function(e){return function(r){r.stopPropagation();var n=rf(t.video[e]);D({track:n})()}},transcoderSettings:t,onError:s,onErrorResolve:c,errors:l,handleVideoTrackExtraChange:function(e){return function(r){var n=t.video,o=lt.a(n);o[e].extra=r,xt.a(o[e].extra)&&delete o[e].extra,E({path:["video"],value:o})}},handleVideoTrackExtraRemove:function(e){return function(r){var n=t.video,o=lt.a(n);delete o[e].extra[r],E({path:["video"],value:o})}},transcoderDevices:a,isConfigChanged:i,externalChangeTimeout:T,streams:u,mediaNames:d,transcoderSettingsTemplate:f,isStream:b,handleChange:E,handleCopyVideo:function(e){e.target.checked?(_(eh(eh({},v),{},{video:Object(B.e)(t.video)?rh(t.video):[]})),E({path:["video"],value:[{track:1,bitrate:"copy"}]})):(E({path:["video"],value:rh(v.video)}),_(eh(eh({},v),{},{video:[]})))},withTracks:y})))))};function lh(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ph(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ph(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ph(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?Object(m.c)(p.hb,{item:!0},Object(m.c)(p.n,{variant:"contained",color:"primary","data-testid":"transcoderEnable",width:24,onClick:function(){q([])({audio:{bitrate:64e3},video:[{track:1,bitrate:7e5}]})}},v("streamTranscoderPage.enableTranscoder"))):Object(m.c)(p.l,{ml:1},v("streamTranscoderPage.noTranscoderNotice")),w&&Object(m.c)(p.hb,{item:!0},Object(m.c)(p.n,{variant:"contained",color:"primary","data-testid":"transcoderEnableAndPaste",width:32,onClick:U},v("streamTranscoderPage.enableAndPasteSettings")))),Object(m.c)(p.kb,{smUp:!0},z())),i.transcoder&&dh(i.transcoder)&&Object(m.c)(p.kb,{only:"xs"},Object(m.c)(p.hb,{container:!0,item:!0,xs:!0,spacing:2,justifyContent:"flex-end",style:{marginRight:0}},z())))))))))};fh.defaultProps={mediaNames:[],media:void 0,localStorageValue:null,isTemplate:!1,templateConfig:null,config:{}};var bh=r(249),hh=r(879),yh=[{title:"epgTelecastsTable.start",lg:4},{title:"epgTelecastsTable.name",lg:4},{title:"epgTelecastsTable.genre",lg:4}],gh=function(e){var t=e.telecasts;return Object(m.c)(p.ac,{settings:yh,rows:t.map((function(e,t){var r=Object.values(e);if(Ke.a(r))return[];var n,o=r[0].start?1e3*r[0].start:null,i=o&&(n=o)?Object(hh.a)(new Date(n),"dd-MM-yyyy HH:mm"):"",a=function(e,t,r){if(e){var n="#333333",o=!1,i=e+t;return 1===Object(bh.a)(r,e)&&1===Object(bh.a)(i,r)&&(o=!0,n="#4549F2"),!o&&e&&1===Object(bh.a)(r,e)&&(n="rgba(0, 0, 0, 0.38)"),{telecastColor:n,isTelecastCurrent:o}}return{telecastColor:null,isTelecastCurrent:!1}}(o,r[0].duration?1e3*r[0].duration:0,new Date),s=a.telecastColor,c=a.isTelecastCurrent,l=r[0].name||"",u=r[0].genre||"",d=function(e,r){return function(e){var t=e.isTelecastCurrent,r=e.color,n=e.index,o=e.field,i=e.data;return Object(m.c)(p.kc,{component:"span",variant:t?"subtitle2":"body2",style:{color:r},"data-testid":"media-epg-".concat(n,"-").concat(o)},i)}({isTelecastCurrent:c,color:s,index:t,field:e,data:r})};return[d("start",i),d("name",l),d("genre",u)]}))})};function vh(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return _h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _h(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0,d=function(e,t){var r=cu.a(["stats"])(e),n=cu.a(["stats"])(t);return Object(Uh.a)(r,n)},m=function(){p(null)};return{setData:function(e){u||(r(e),s(e))},onChange:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return function(r,n,o){return function(n){var c=(Array.isArray(r)?[].concat(Wh(e),Wh(r)):[].concat(Wh(e),[r])).filter((function(e){return Object(B.d)(e)})),l=n;Ot.a("target")(n)&&(l=n.target.value);var u=Object(B.d)(a)?lt.a(a):{};0===c.length?u=Hh(Hh({},u),l):Jh(u,Object(B.e)(l)?l:null,c),Object(i.flushSync)((function(){s(lt.a(u))})),Object(i.flushSync)((function(){p(d(t,u))})),Object(B.a)(o)&&o(d(t,u))}}},resetData:function(){r(null),s(null),m()},currentData:a,originData:t,isDataChanged:u,resetDelta:m,getDelta:function(){return d(t,a)},initData:function(){m(),s(t)}}},Xh=Object(p.uc)()((function(){return{button:{width:"120px",padding:"4px 0"}}}));function Zh(e){return(Zh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var ey=["params"];function ty(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function ry(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ny(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r1,w=iy(Object(n.useState)(null),2),k=w[0],S=w[1],P=iy(Object(n.useState)(!1),2),T=P[0],I=P[1],C=Qh(),A=C.setData,D=C.onChange,E=C.resetData,$=C.currentData,N=C.originData,L=C.isDataChanged,R=C.resetDelta,M=C.getDelta,F=C.initData;Object(n.useEffect)((function(){return function(){E()}}),[]);var z=Object(Sn.a)({queryKey:["stream_get_all",O.join()],queryFn:function(){return x?Promise.all(O.map((function(e){return Object(_.zb)({params:{name:e}}).then((function(e){return e.data}))}))).then((function(e){return{data:e}})):Object(_.zb)({params:{name:O[0]}})},options:{onSuccess:function(e){var t=function(e){var t,r=null!==(t=null==e?void 0:e.config_on_disk)&&void 0!==t?t:{};return r.named_by=null==e?void 0:e.named_by,r.stats=null==e?void 0:e.stats,r.static=null==e?void 0:e.static,f===d.a&&(r.vision=null==e?void 0:e.vision,r.layout=null==e?void 0:e.layout),null!=r&&r.inputs&&(r.inputs=null==r?void 0:r.inputs.map((function(e){return ny(ny({},e),{},{url:decodeURIComponent(null==e?void 0:e.url)})}))),r};if(x){var r=e.map((function(e){return t(e)}));A(Object(Wr.a)(r))}else{var n=(null==e?void 0:e.named_by)===st.d.config?t(e):e;A(n),S(e)}},refetchInterval:3e3}}).isLoading,B=Object(_.Ab)(),H=Object(_.yb)(),V=Object(_.Db)(),W=Object(_.Wb)({params:{name:null==$?void 0:$.template},options:{enabled:!(null==$||!$.template)}}).data;Object(n.useEffect)((function(){h.location.pathname.includes("option")||F()}),[h.location]);var G=$||{},K=null!==(t=null==G?void 0:null===(r=G.stats)||void 0===r?void 0:r.media_info)&&void 0!==t?t:{},Y=function(e){var t=e.params,r=ty(e,ey);return Array.isArray(t.name)?t.name.map((function(e){return V(ny({params:{name:e}},r))})):V(ny({params:t},r))},J=function(){R(),B()},Q=function(){if(f===d.a)return function(e){var t=Mh.replace(":names",encodeURIComponent(e));return[].concat(ay(ly(e).slice(0,3)),[{name:"innerHeader.vision",to:"".concat(t,"/vision")}],ay(ly(e).slice(3)),[{name:"innerHeader.layouts",to:"".concat(t,"/layouts")}])}(O);if(f===d.b)return function(e){var t=Mh.replace(":names",encodeURIComponent(e));return[{id:0,name:"innerHeader.overview",to:t},{id:1,name:"innerHeader.transcoder",to:"".concat(t,"/transcoder")},{id:2,name:"innerHeader.dvr",to:"".concat(t,"/dvr")},{id:3,name:"innerHeader.output",to:"".concat(t,"/output")},{id:4,name:"innerHeader.auth",to:"".concat(t,"/auth")}]}(O);switch(G.named_by){case st.d.config:case st.d.external:return ly(O);case st.d.remote:case st.d.user:return function(e){var t=Mh.replace(":names",encodeURIComponent(e));return[{id:0,name:"innerHeader.overview",to:t},{id:1,name:"innerHeader.dvr",to:"".concat(t,"/dvr"),isDvr:!0},{id:2,name:"innerHeader.output",to:"".concat(t,"/output")},{id:3,name:"innerHeader.playSessions",to:"".concat(t,"/clients")}]}(O);default:return[]}}();if(z)return Object(m.c)("div",null,"Loading stream ",O.join(", "),"...");var X=q.a(vr.a,Do.a(encodeURIComponent(O.join(",")))),Z=function(){Object(Wr.f)({saveFn:Y,name:O,deleteFn:H,history:h,route:"streams",cbSuccess:J,setIsSaving:I,delta:M(),currentData:$})((function(){B()}))},ee=function(){var e=window.confirm(s("reallyDelete",{mediaName:O.join(", ")})),t=function(){h.push("/streams")};e&&O.forEach((function(e){H({params:{name:e},onSuccess:t,onError:t})}))},te=function(){var e,t;switch(X(window.location.hash)){case"/input":!function(){if(G.backup&&!G.backup.file&&D(["backup"])(null),1===O.length){var e=(lt.a(G.inputs)||[]).map((function(e){var t=lt.a(e),r=Object(Es.g)(e);switch(!0){case Object(Es.i)(r):[].concat(ay(Es.o),ay(Es.p)).forEach((function(e){delete t[e]}));break;case Object(Es.l)(r):[].concat(ay(Es.h),ay(Es.p)).forEach((function(e){delete t[e]}));break;case Object(Es.n)(r,t):[].concat(ay(Es.h),ay(Es.o)).forEach((function(e){delete t[e]}))}return t}));D(["inputs"])(e)}Z()}();break;case"/transcoder":ar.a([],["transcoder","video"])(G).length>0||null!=G&&null!==(e=G.transcoder)&&void 0!==e&&null!==(t=e.global)&&void 0!==t&&t.target?Z():confirm(s("streamTranscoderPage.savingWithoutVideoTracksConfirm"))&&Z();break;default:Z()}};return Object(m.c)(p.Kb,{menuItems:Q,buttons:!Object(Wr.d)(c)&&G.named_by!==st.d.external&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.n,{variant:"contained",color:"secondary",onClick:ee,"data-testid":"delete-stream-button",disabled:G.named_by!==st.d.config,className:v.button},s("headerStreamPage.removeStream")),Object(m.c)(p.l,{ml:2},Object(m.c)(p.n,{variant:"contained",color:"primary",onClick:te,"data-testid":"saveButton",className:v.button,disabled:T||!L||g,endIcon:T&&Object(m.c)(p.u,{size:20,color:"primary"})},s("save")))),id:"media-page",route:"streams"},G.template&&Object(m.c)(p.l,{mb:2},Object(m.c)(p.Ib,{color:"info",label:Object(m.c)(o.a.Fragment,null,s("streamPage.template_notification"),Object(m.c)(p.xb,{to:"/templates/".concat(G.template),component:Mt.b},G.template))})),Object(m.c)(Fh,{media:G,name:O.length>1?null:O[0],mediaNames:O,selectedEntities:i,serverInfo:a,config:l,isConfigSaving:T,isConfigChanged:L,onConfigChange:D,onConfigSave:Object(Wr.f)({saveFn:Y,name:O,deleteFn:H,history:h,route:"streams",cbSuccess:J,setIsSaving:I,delta:M(),currentData:$}),onConfigResetChanges:R,getConfigDelta:M,mediaInfo:K,templateConfig:W,configEffective:k,isStream:!0,isMultiEdit:x,originData:N}))},uy=function(){var e,t,r=Object(j.b)().t,o=Object(n.useContext)(me).globalSettings,i=Object(_.ac)(),a=i.data,s=i.isLoading,c=Object(n.useMemo)((function(){return{items:[{title:r("templatesList.template"),grow:3,renderData:function(e){return Object(m.c)(Ut,{media:e,isTemplate:!0,key:"template-inf"})}},{title:r("streamList.table.input"),grow:2,renderData:function(e){return Object(m.c)(ir,{media:e,isTemplate:!0,key:"template-input"})}},{title:r("streamList.table.transcode"),grow:2,renderData:function(e){return Object(m.c)(lr,{media:e,config:o,isTemplate:!0,key:"template-transcode"})}},{title:r("streamList.table.dvr"),grow:2,renderData:function(e){return Object(m.c)(Vr,{media:e,isTemplate:!0,key:"template-dvr"})}},{title:r("streamList.table.output"),grow:2,renderData:function(e){return Object(m.c)(Xr,{key:"template-output",media:e,sourceKey:null,isTemplate:!0})}}]}}),[o,r]);return Object(m.c)(kn,null,Object(m.c)(p.Sb,{isLoading:s},Object(m.c)(p.db,{mt:6,"data-testid":"templates-block"},0!==(null==a?void 0:null===(e=a.templates)||void 0===e?void 0:e.length)&&Object(m.c)(p.A,{primaryKey:"name",data:null==a?void 0:a.templates,columns:c}),0===(null==a?void 0:null===(t=a.templates)||void 0===t?void 0:t.length)&&Object(m.c)(p.kc,{component:"p",align:"center",variant:"subtitle1"},r("templatesList.noTemplatesFound")))))},dy=r(150);function my(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return fy(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return fy(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fy(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0})).map((function(e){return{name:e.name,program:(e.programs||[]).find((function(e){return e.source===t.name}))}}))}),[r,t.name]);return Object(m.c)(p.l,{px:2,py:1,mt:1,className:o.streamWrapper},Object(m.c)(p.l,{display:"flex",justifyContent:"space-between"},Object(m.c)(p.kc,{variant:"subtitle2"},Object(m.c)(p.l,{component:"span",display:"flex",alignItems:"center"},t.name,Object(m.c)(or,{media:t})),Object(m.c)(zt.a,{media:t,isSources:!0})),Object(m.c)(p.l,{whiteSpace:"nowrap",overflow:"hidden",className:o.statusWrapper},Object(m.c)(Ft.a,{media:t,stats:t.stats,"data-testid":"stream-name-".concat(t.name)}))),i.length>0&&Object(m.c)(p.ib,null),i.map((function(e){var t;return Object(m.c)(p.kc,{variant:"caption",key:e.name,component:"div"},Object(m.c)("span",{className:o.iconMultiplexer},Object(m.c)(xy,null))," ",e.name," ","Program ".concat(null===(t=e.program)||void 0===t?void 0:t.program_id))})))};function ky(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Sy(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Sy(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Sy(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r20?s("searchForMore"):void 0,additionalControls:Object(m.c)($c,{onClick:function(){var e,t,r,n=(e=By(i.programs||[]),t=e?e.map((function(e){return e.program_id})):[],r=Oc.a((function(e,t){return e-t}),t)[t.length-1],{program_id:Object(Lu.c)(r||0)+1}),s=yd({values:i,multiplexers:a,program:n,value:f,streams:y});o("programs",[].concat(By(i.programs||[]),[s])),b(""),u("")},"data-testid":"add-program-button-".concat(r)})})};function Ky(e){return(Ky="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Yy(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Jy(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r20?b("searchForMore"):void 0,items:S,onInputChange:function(e,t){clearTimeout(ig),e&&(ig=setTimeout((function(){O(t)}),500),P(e,t))},onChange:P,"data-testid":"multiplexers-program-source-".concat(l,"-").concat(a)})),Object(m.c)(p.hb,{item:!0,xs:12,md:6,lg:2},Object(m.c)(p.T,{freeSolo:!0,name:"programs.".concat(a,".service_type"),label:b("multiplexer-service_type"),items:dd,"data-testid":"multiplexers-program-service_type-".concat(l,"-").concat(a)})),Object(m.c)(p.hb,{item:!0,xs:12,container:!0,spacing:2},Object(m.c)(Xy,{values:s,index:l,programIndex:a,setFieldValue:c,initialValues:f,programWithStats:i})))))};function ug(e){return function(e){if(Array.isArray(e))return dg(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return dg(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return dg(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dg(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r":\\/|?*\s]+$/,Xg=function(e){var t=e.prefix,r=e.storageIndex,o=e.subPath,i=e.setCreatedDirs,a=e.createdDirs,s=Object(j.b)().t,c=Kg(Object(n.useState)(""),2),l=c[0],u=c[1],d=Kg(Object(n.useState)(!1),2),f=d[0],b=d[1],h=Kg(Object(n.useState)(""),2),y=h[0],g=h[1],v=Object(_.t)({isAsync:!0}),O=Object(_.v)();return Object(m.c)(du,{multiple:!0,onChange:function(e){b(!0);var n=e.target,c=n.files,l=n.value;g(l);var p=[],d=[],m=!1;Object.values(c).forEach((function(e){Qg.test(e.name)?(p=[].concat(Gg(p),[e]),d=[].concat(Gg(d),[e.name])):(m=!0,u(s("uploadForm.incorrectFileName",{name:e.name})))})),m?(g(""),b(!1)):(u(""),Promise.all(p).then((function(e){Promise.all(Gg(e.map((function(e,n){return v({params:{prefix:t,storage_index:r,subpath:"".concat(o?"".concat(o,"/"):"").concat(d[n])},body:e})})))).then((function(){b(!1),g(""),O(),i(Gg(a.filter((function(e){return e.subpath!==o}))))})).catch((function(){b(!1),g(""),O()}))})))},value:y,color:"primary",variant:"outlined","data-testid":"upload-new-vod-file",id:"upload-new-vod-file",endIcon:f&&Object(m.c)(p.u,{size:20,color:"primary"}),isUploadingFile:f,uploadingError:l,disabled:f},s("uploadForm.uploadButton"))};function Zg(e){return(Zg="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ev(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function tv(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(t);try{var a=function(){var e=r.value;if(0===e.subpath.indexOf(n)){var t=e.subpath.replace(n,"").split("/")[0];o.find((function(e){return e.subpath===t}))||o.push({subpath:e.subpath})}};for(i.s();!(r=i.n()).done;)a()}catch(e){i.e(e)}finally{i.f()}return o},lv=function(e){var t,r,i=e.media,a=e.config,s=Object(j.b)().t,c=Object(n.useContext)(u.c),l=Ge()().match.params,d=l.name,f=l.number,b=yt({}),h=b.query,y=b.cursor,g=b.handlePaginationChange,v=nv(Object(n.useState)(""),2),O=v[0],x=v[1],w=nv(Object(n.useState)(""),2),k=w[0],S=w[1],P=nv(Object(n.useState)([]),2),T=P[0],I=P[1],C=nv(Object(n.useState)(),2),A=C[0],D=C[1],E=Object(_.u)({params:{prefix:i.prefix,storage_index:f,folder:O||void 0,cursor:y||void 0,name_like:h||void 0}}),$=E.data,N=E.isLoading,L=$o.a([],"files")($),R=(null==$?void 0:$.prev)||null,q=(null==$?void 0:$.next)||null,M=Object(_.v)(),F=Object(_.s)(),U=function(e){e.preventDefault();var t=(O||"").split("/");t.pop(),O&&"/"===O[O.length-1]&&t.pop();var r=t.join("/");x(r)},z=function(e){return function(){F({params:{prefix:i.prefix,storage_index:f,subpath:e},onSuccess:function(){M()}})}},B=function(e){S(e.target.value)},H=function(){var e=O||"";if(e&&"/"!==e[e.length-1]&&(e+="/"),e+=k,-1===T.indexOf(e)){var t=T.slice();t.push({subpath:e}),I(t),S(""),x(e)}},V=function(e){"Enter"===e.key&&H()},W=function(e,t){return Object(m.c)("div",{key:t,className:"file-list-item video"},Object(m.c)("div",{className:"icon"}),Object(m.c)("a",{"data-testid":"vod-browser-file-".concat(t),className:"name",href:"src/admin/features/vod_page/VodBrowserPage",onClick:function(t){return function(e,t){t.preventDefault(),D(e)}(e.name,t)}},sv(e.subpath)),Object(m.c)(No.a,{onClick:z(e.subpath),label:s("remove"),className:"danger","data-testid":"vod-browser-remove-file-".concat(t)}))},G=function(e,t){return Object(m.c)("div",{key:t,className:"file-list-item directory"},Object(m.c)("div",{className:"icon"}),Object(m.c)("a",{className:"name",href:"src/admin/features/vod_page/VodBrowserPage",onClick:function(t){!function(e,t){t.preventDefault(),g({cursor:null}),x(e)}(e.subpath,t)},"data-testid":"vod-browser-dir-".concat(t)},sv(e.subpath)))},K=function(e,t){return Object(m.c)("div",{key:t,className:"file-list-item file"},Object(m.c)("div",{className:"icon"}),Object(m.c)("div",{className:"name","data-testid":"vod-browser-other-".concat(t)},sv(e.subpath)),Object(m.c)(No.a,{onClick:z(e.subpath),label:s("remove"),className:"danger","data-testid":"vod-browser-remove-other-".concat(t)}))},Y=ar.a([],["storages",f,"url"])(i);return"/"!==Y[Y.length-1]&&(Y+="/"),Object(m.c)(p.hb,{container:!0,spacing:2,id:"vod-browser","data-testid":"vod-browser"},Object(m.c)(p.hb,{item:!0,xs:12,md:A?4:12},Object(m.c)("div",{className:"row-height"}),Object(m.c)(p.xb,{to:{pathname:"/vods/".concat(encodeURIComponent(d)),state:{name:d}},component:Mt.b,color:"primary","data-testid":"back-to-vod-settings"},"← ",s("vodBrowserPage.back")),Object(m.c)("div",{className:"row-height"}),Object(m.c)(p.dc,{label:"",value:O,disabled:!0,inputProps:{"data-testid":"vod-path"},InputProps:{startAdornment:Object(m.c)(p.qb,{position:"start",onClick:function(){x("")}},Y)}}),Object(m.c)(o.a.Fragment,null,function(){var e;for(var t in L)if(L[t].name===k){e=s("takenNameError");break}return Object(m.c)(p.l,{my:2,display:"flex",alignItems:"flex-end"},Object(m.c)(p.dc,{label:s("vodBrowserPage.newDirLabel"),value:k,onChange:B,onKeyPress:V,inputProps:{"data-testid":"new-vod-dir"},error:e}),Object(m.c)(No.a,{label:s("save"),onClick:H,disabled:!k&&!e,className:"margin-left-10","data-testid":"new-vod-dir-save"}))}(),Object(m.c)(Xg,{subPath:O,prefix:i.prefix,storageIndex:f,setCreatedDirs:I,createdDirs:T}),O&&"/"!==O?Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)("a",{href:"src/admin/features/vod_page/VodBrowserPage",onClick:U,"data-testid":"to-parent-dir"},s("vodBrowserPage.parentDir"))):Object(m.c)("div",{className:"row-height flex-end"})),Object(m.c)(p.l,{mb:2,mt:1},Object(m.c)(p.dc,{value:h,onChange:function(e){return g({query:e.target.value})},inputProps:{"data-testid":"vod-files-search"},label:s("vodBrowserPage.filesSearch")})),Object(m.c)(p.l,{className:"pagination-preloader"},Object(m.c)(p.cc,{nextCursor:q,prevCursor:R,handlePaginationChange:g}),N&&Object(m.c)("div",{style:{textAlign:"center",marginLeft:"8px"}},Object(m.c)(p.u,{size:30,color:"primary"}))),(t=L.reduce((function(e,t){var r,n=e.videos,o=e.dirs,i=e.other,a=t.is_directory,s=!t.is_directory&&(r=t.name,/\.mp4$/.test(r)||/\.flv$/.test(r)||/\.m4v$/.test(r)||/\.mov$/.test(r)||/\.mkv$/.test(r));return{dirs:a?[].concat(ov(o),[t]):o,videos:!a&&s?[].concat(ov(n),[t]):n,other:a||s?i:[].concat(ov(i),[t])}}),{videos:[],dirs:[],other:[]}),r=cv(O,T),Object(m.c)("div",null,t.videos.map(W),r.map(G),t.dirs.map(G),t.other.map(K))),Object(m.c)("div",{className:"row-height"})),Object(m.c)(p.hb,{item:!0,xs:12,md:A?8:1},Object(m.c)("div",{className:"row-height"}),function(){var e;if(!A)return null;var t=As()(i,{name:{$set:A}});return t.egress_hostnames=null===(e=L.find((function(e){return e.name===A})))||void 0===e?void 0:e.egress_hostnames,Object(m.c)("div",null,Object(m.c)(Nt,{height:300,name:A,media:tv(tv({},t),{},{static:!0}),config:a,product:c,configEffective:t}),Object(m.c)("div",{className:"row-height"}),Object(m.c)(su,{mediaNames:[t.name],media:t,showFull:!1,config:a,product:c,configEffective:t}))}(),Object(m.c)("div",{className:"row-height"})))};lv.defaultProps={query:{}};var pv=function(e){var t=e.media,r=e.change,n=Object(j.b)().t;return Object(m.c)(p.l,{"data-testid":"vod-output"},Object(m.c)(p.hb,{container:!0,spacing:2,style:{width:"100%",marginRight:0}},Object(m.c)(p.hb,{item:!0,xs:12,lg:9},Object(m.c)(p.l,{mt:4},Object(m.c)(Ai,{expanded:!0,label:n("vodOutputPush.allowDirectFileDownloadLabel"),details:n("vodOutputPush.allowDirectFileDownloadLabelDetail"),docDescription:so.a.schemas.vod_config.properties.download.description},Object(m.c)(No.a,{label:n("disabled"),checked:!t.download,onClick:function(){return r("download","raw")(!1)},className:"margin-right-10",isRadio:!0,"data-testid":"vod-output-allow-file-download-disabled"}),Object(m.c)(No.a,{label:n("enabled"),checked:t.download,onClick:function(){return r("download","raw")(!0)},isRadio:!0,"data-testid":"vod-output-allow-file-download-enabled"}))),Object(m.c)(p.l,{mt:2},Object(m.c)(p.dc,{entity:"vod",path:["on_play","max_sessions"],value:t.on_play&&t.on_play.max_sessions,onChange:r(["on_play","max_sessions"]),docDescription:so.a.schemas.auth_spec.properties.max_sessions.description})),Object(m.c)(p.l,{my:1},Object(m.c)(Nu,{media:t,change:r,isVod:!0})))))},uv=function(e){return Object(m.c)(U.Switch,null,Object(m.c)(U.Route,{path:"".concat("/vods/:name","/tree/:number"),render:function(){return Object(m.c)(lv,e)}}),Object(m.c)(U.Route,{path:"".concat("/vods/:name","/output"),render:function(){return Object(m.c)(pv,e)}}),Object(m.c)(U.Route,{path:"".concat("/vods/:name","/auth"),render:function(){return Object(m.c)(Is,e)}}))};function dv(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return mv(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return mv(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function mv(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Bv(e){return function(e){if(Array.isArray(e))return Yv(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Kv(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Hv(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Vv(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]&&arguments[2];return Object(m.c)(oa.a,{displayEmpty:!0,label:u("dvbCard.".concat(e)),value:$o.a("",e)(y),"data-testid":"dvb-card-".concat(a,"-").concat(e),onChange:Y(e),items:[["",u("not-selected")]].concat(Bv(t.map((function(e){return[e,e]})))),HelperDocProps:{docDescription:so.a.schemas.dvb_card_config.properties[e].description},disabled:r})},Q=function(e){var t=e.field,r=zv(e,Fv);return Object(m.c)(p.dc,Uv({entity:"dvb_card",path:[t],index:a,value:$o.a("",t)(y),onChange:M(t),docDescription:so.a.schemas.dvb_card_config.properties[t].description},r))},X=function(e,t){return Q({field:e,validation:function(e){return Wo({value:e})},dimension:t,docDescription:so.a.schemas.dvb_card_config.properties[e].description})},Z=function(e,t){return function(r){M(e)(t?!r.target.checked||null:r.target.checked||null)}},ee=function(e,t){return Object(m.c)(na.a,{label:u("dvbCard.".concat(e)),color:"primary","data-testid":"dvb-card-".concat(a,"-").concat(e),checked:t?!$o.a(null,e)(y):$o.a(null,e)(y),onChange:Z(e,t),HelperDocProps:{docDescription:so.a.schemas.dvb_card_config.properties[e].description},justifyContent:"flex-start"})};return Object(B.e)(y)?Object(m.c)(o.a.Fragment,null,Object(m.c)(p.a,{defaultExpanded:c,TransitionProps:{unmountOnExit:!0}},Object(m.c)(p.c,{expandIcon:Object(m.c)(p.N,{"data-testid":"dvb-card-expand-".concat(i)}),className:"panel-summary"},Object(m.c)(p.hb,{container:!0,spacing:2},!q&&Object(m.c)(p.hb,{container:!0,spacing:2,item:!0,xs:12,alignItems:"center"},Object(m.c)(p.hb,{item:!0,xs:12,sm:4,md:3,lg:2},Object(m.c)(qv,{stats:s})),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},Object(m.c)(p.xb,{to:{pathname:"/dvb-cards/".concat(encodeURIComponent(i)),state:{cardName:i}},component:Mt.b,color:"primary"},u("dvbCard.programs"))),Object(m.c)(p.hb,{item:!0,xs:12,sm:4,md:6,lg:8},Object(m.c)("div",{style:{display:"flex",justifyContent:"flex-end",width:"100%",height:"100%",alignItems:"center"}},Object(m.c)(p.lb,{"aria-label":u("save"),title:u("save"),onClick:K,"data-testid":"dvb-card-".concat(a,"-save"),color:"primary",disabled:!g&&!c||I||Object(Ds.a)({errors:P,name:Ot.a("name")(y)}),size:"large"},Object(m.c)(Jv,{fontSize:"small"})),Object(m.c)(p.lb,{"aria-label":u("cancel"),title:u("cancel"),onClick:G,"data-testid":"dvb-card-".concat(a,"-cancel"),color:"secondary",disabled:!g&&!c,size:"large"},Object(m.c)(p.q,{fontSize:"small"})),!c&&Object(m.c)(p.lb,{"aria-label":u("remove"),title:u("remove"),onClick:V,"data-testid":"remove-dvb-card-".concat(a),color:"secondary",size:"large"},Object(m.c)(p.B,{fontSize:"small"}))))),q&&Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"subtitle2"},u("dvbCard.debugMode"))),Object(m.c)(p.hb,{item:!0,xs:12,sm:4,md:3,lg:2},Q({field:"name",validation:function(e){return Qo({value:e,field:"dvbCard.nameLabel",names:N})},docDescription:so.a.schemas.dvb_card_config.properties.name.description,disabled:q})),!q&&!L&&!R&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:6,sm:3,md:2,lg:1},Object(m.c)(Ev,{dvbCard:y,cardName:i,cardIndex:a,onError:k,onErrorResolve:S,errors:P,onChange:M("adapter"),adapters:$})),Object(m.c)(p.hb,{item:!0,xs:6,sm:3,md:2},J("system",Av)),Object(m.c)(p.hb,{item:!0,xs:12,sm:4,md:3,lg:2},X("frequency","MHz")),Object(m.c)(p.hb,{item:!0,xs:12,sm:4,md:3},Object(m.c)(Lv,{dvbCard:y,cardName:i,cardIndex:a,onChange:M("polarization"),onError:k,onErrorResolve:S,errors:P})),Object(m.c)(p.hb,{item:!0,xs:6,sm:3,md:2},Object(m.c)(Rv,{dvbCard:y,cardIndex:a,onError:k,onErrorResolve:S,onChange:M("symbol_rate")}))))),Object(m.c)(p.b,null,Object(m.c)(p.hb,{container:!0,spacing:2},!q&&Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"subtitle2"},u("dvbCard.advancedTitle"))),!q&&!L&&!R&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("frontend")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("code_rate_hp",xv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("code_rate_lp",wv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("guard_interval",kv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("hierarchy",Sv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("modulation",Pv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("pilot",Tv)),Object(m.c)(p.hb,{item:!0,xs:12,sm:4,md:3,lg:2},J("transmission_mode",Iv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("rolloff",Cv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("bandwidth",hv))),!q&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("plp_stream_id")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("hw",yv,!0)),!L&&Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("device")),!R&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("serial")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:1},X("port"))),!L&&!R&&Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("int_freq")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:3},X("compensate_time_drift_ppm")),!L&&!R&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("attenuator")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("interleave")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("gain")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("input_bitrate")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},Q({field:"video_device"})),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},ee("disabled",!0)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},ee("high_band")))),Object(m.c)(p.hb,{item:!0,xs:12,md:6,lg:6},Q({field:"comment",multiline:!0,rows:6,variant:"outlined",disabled:q})),!q&&!L&&!R&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"subtitle2"},u("dvbCard.ASI"))),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("asi_annex",gv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("asi_isdbt_segments",vv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("asi_isdbt_subchannel")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("asi_dvb2_streamid")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("asi_diseqcpg",_v)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("asi_polarity",Ov)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},J("asi_iqdem",jv)),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("asi_iqbandwidth")),Object(m.c)(p.hb,{item:!0,xs:6,sm:4,md:3,lg:2},X("asi_iqsamplerate")))))),Object(m.c)(p.C,{open:D,handleClose:W,onDelete:function(){return e=Ot.a("name")(y),W(),Object(Ds.c)({errors:P,name:i,onErrorResolve:S}),void z({params:{name:e},onSuccess:function(){F(),H()},onError:function(){H()}});var e},title:u("confirmDelete",{name:Ot.a("name")(y)}),notice:u("deleteNoticeQuestion",{name:Ot.a("name")(y)}),removeButtonText:u("dvbCard.deleteDvbCardButton")})):""},Xv=r(732),Zv=r(739),e_=r(402),t_=r(617);function r_(e){return(r_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n_(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o_(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"name";return o_(i_({},n,a_(e,t,n)),r)});function c_(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return l_(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return l_(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l_(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]&&arguments[2],n=d.filter((function(t){return e.name!==t.name}));return Object(m.c)(Qv,{key:e.name,dvbCard:e,cardName:e.name,cardIndex:t,isNew:r,setNewDvbCard:s,dvbCards:n,stats:e.stats})}),[d]),b=Object(n.useMemo)((function(){return{items:[{title:r("dvbCard.devices.name"),renderData:function(e){return e.title||""}},{title:r("dvbCard.devices.type"),renderData:function(e){return e.hw||""}},{title:r("dvbCard.devices.id"),renderData:function(e){var t;return null!==(t=e.id)&&void 0!==t?t:""}}]}}),[r]);return d||a?Object(m.c)(at,{id:"DVBCardsPage",paths:p_,propsToCheck:{dataDvbCards:l,newDvbCard:a,isLoading:u}},Object(m.c)(kn,{menuButtons:Object(m.c)(p.l,{textAlign:"right"},Object(m.c)(p.n,{variant:"outlined",onClick:function(){var e=s_("newDVBCard",d);s(e)},"data-testid":"addButton",size:"small"},r("dvbCard.addButton")))},(null==o?void 0:null===(e=o.stats)||void 0===e?void 0:e.video_devices)&&Object(m.c)(p.l,{mt:2},Object(m.c)(p.a,null,Object(m.c)(p.c,{expandIcon:Object(m.c)(p.N,{"data-testid":"dvb-cards-expand-installed-boards"})},Object(m.c)(p.kc,{variant:"subtitle2"},r("dvbCard.installedBoards"))),Object(m.c)(p.b,null,Object(m.c)(p.A,{data:null==o?void 0:null===(t=o.stats)||void 0===t?void 0:t.video_devices,columns:b,primaryKey:"id"})))),u?Object(m.c)(p.l,{textAlign:"center",mt:2},Object(m.c)(p.u,{size:30,color:"primary"})):Object(m.c)(p.l,{id:"dvb-cards","data-testid":"dvbCardsPage",mt:5},Object(B.e)(a)&&[a].map((function(e){return Object(m.c)(p.l,{mt:1,mb:2,key:e.name},f(e,"new",!0))})),Object(B.e)(d)?d.map((function(e,t){return f(e,t)})):Object(m.c)(p.kc,{component:"p",align:"center",variant:"subtitle1"},r("dvbCard.noDvbCardsFound"))))):Object(m.c)(p.l,null,r("loading"))},d_=(r(1536),[["data"],["isLoading"]]),m_=[{title:"dvbStructure.programId",lg:2},{title:"dvbStructure.program",lg:4},{title:"dvbStructure.pids",lg:4},{title:"",lg:2}],f_=[{title:"streamList.table.track",lg:2},{title:"streamList.table.pid",lg:2},{title:"streamList.table.resolution",lg:4},{title:"streamList.table.codec",lg:2},{title:"streamList.table.bitrate",lg:2}],b_=function(){var e,t=Object(j.b)().t,r=Object(U.useParams)().cardName,n=Ge()().history,i=Object(_.w)({params:{name:r},options:{refetchOnMount:!1,refetchInterval:6e3}}),a=i.data,s=i.isLoading,c=null!==(e=null==a?void 0:a.media_info_list)&&void 0!==e?e:[],l=Object(_.Db)(),u=function(e){return e.map((function(e){var t=Object(Kt.f)(F.a(["params","height"])(e));return[Object(m.c)(p.kc,{variant:"body2",key:"pid-track_id"},e.track_id),Object(m.c)(p.kc,{variant:"body2",key:"pid-pid"},e.pid),t&&Object(m.c)("span",{className:"video-resolution",key:"pid-video-resolution"},t),Object(m.c)(p.kc,{variant:"body2",key:"pid-codec"},e.codec),Object(m.c)(p.kc,{variant:"body2",key:"pid-bitrate"},Object(B.e)(e.bitrate)?"".concat(e.bitrate,"K"):"")]}))};return Object(m.c)(at,{id:"DVBCardsProgramsPage",paths:d_,propsToCheck:{data:a,isLoading:s}},Object(m.c)(kn,{menuButtons:Object(m.c)(p.l,{textAlign:"right"},Object(m.c)(p.n,{color:"primary",variant:"outlined",onClick:function(){n.push({pathname:"/dvb-cards"})},"data-testid":"back-to-list",size:"small"},"← ",t("backToList")))},s?Object(m.c)(p.l,{textAlign:"center",mt:2},Object(m.c)(p.u,{size:30,color:"primary"})):Object(m.c)(p.l,{id:"dvb-card-programs","data-testid":"dvbCardProgramsPage",mt:5},Object(m.c)(p.ac,{settings:m_,rows:c.map((function(e){return[Object(m.c)(p.kc,{color:"textPrimary",component:"p",variant:"body2",key:"item-program_id"},e.program_id),Object(m.c)(o.a.Fragment,{key:"item-title-provider"},Object(m.c)(p.kc,{color:"textPrimary",component:"p",variant:"body2"},e.title),Object(m.c)(p.kc,{color:"textSecondary",component:"p"},e.provider)),(n=e,i=[],a=0,s=0,c=0,$o.a([],"tracks")(n).forEach((function(e){"video"===e.content?a+=1:"audio"===e.content?s+=1:c+=1,i.push(e)})),Object(m.c)("div",{style:{display:"flex",alignItems:"center"}},Object(m.c)(p.kc,{color:"textSecondary",component:"p"},Object(m.c)(p.kc,{color:"textPrimary",component:"span"},t("streamList.table.video"),":"," "),Object(m.c)(p.kc,{component:"span","data-testid":"dvb-video-count-".concat(n.title)},a," "),Object(m.c)(p.kc,{color:"textPrimary",component:"span"},t("streamList.table.audio"),":"," "),Object(m.c)(p.kc,{component:"span","data-testid":"dvb-audio-count-".concat(n.title)},s," "),Object(m.c)(p.kc,{color:"textPrimary",component:"span"},t("streamList.table.others"),":"," "),Object(m.c)(p.kc,{component:"span","data-testid":"dvb-others-count-".concat(n.title)},c," ")),Object(m.c)(Gt,{title:Object(m.c)("div",null,Object(B.e)(i)?Object(m.c)(p.ac,{settings:f_,rows:u(i)}):Object(m.c)("div",{style:{textAlign:"center",margin:"8px"}},Object(m.c)(p.kc,{component:"p",variant:"subtitle1"},t("streamList.table.noTracks")))),placement:"right","data-testid":"stream-transcode-inf-".concat(n.name)},Object(m.c)("div",{style:{marginLeft:"4px"}},Object(m.c)(p.ob,{fontSize:"small",color:"primary"}))))),Object(m.c)("div",{className:"dvb-programs-add-wrapper",key:"item-add"},Object(m.c)(p.n,{variant:"outlined",size:"small",color:"primary",onClick:function(){return t=e,o="mpts-dvb://".concat(r,"?program=").concat(t.program_id),i="".concat(r,"_").concat(t.program_id),void l({params:{name:i},body:{name:i,title:null!==(n=t.title)&&void 0!==n?n:null,inputs:[{url:o}]}});var t,n,o,i}},t("add")))];var n,i,a,s,c}))}))))};function h_(e){return(h_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function y_(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==h_(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==h_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===h_(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var g_=Object(p.uc)()((function(e){return{statusIcon:{display:"inline-flex",width:12,height:12,marginRight:4,borderRadius:"50%",verticalAlign:"middle"},statusSuccess:{backgroundColor:e.palette.success.main},statusError:{backgroundColor:e.palette.error.main}}})),v_=function(e){var t=e.connectionStats,r=Object(j.b)().t,n=g_(),o=n.classes,i=n.cx;return Object(m.c)(p.l,{display:"flex",flexDirection:"column",gap:.2},Object(m.c)(p.l,null,r("agents.stats.endpoint_connection.hostname"),":"," ",Object(m.c)("span",{className:i(o.statusIcon,y_(y_({},o.statusSuccess,null==t?void 0:t.alive),o.statusError,!(null!=t&&t.alive)))}),null==t?void 0:t.hostname),Object(m.c)(p.l,null,r("agents.stats.endpoint_connection.bytes_from_server"),":"," ",_e.a.bytes(null==t?void 0:t.bytes_from_server)),Object(m.c)(p.l,null,r("agents.stats.endpoint_connection.bytes_to_server"),":"," ",_e.a.bytes(null==t?void 0:t.bytes_to_server)),Object(m.c)(p.l,null,r("agents.stats.endpoint_connection.opened_at"),":"," ",Th(null==t?void 0:t.opened_at)),Object(m.c)(p.l,null,r("agents.stats.endpoint_connection.status_changed_at"),":"," ",null!=t&&t.status_changed_at?Th(1e3*t.status_changed_at):""))},__=function(){var e=Object(j.b)().t,t=yt({page:ct.b,limit:ct.a}),r=t.limit,o=t.cursor,i=t.handlePaginationChange,a=t.page,s=t.query,c=Object(_.h)({params:{limit:r||void 0,cursor:o||void 0,q:s||void 0},options:{refetchInterval:1e3,keepPreviousData:!0}}),l=c.data,u=c.isLoading,d=Object(n.useMemo)((function(){return{items:[{title:e("agents.id"),renderData:function(e){return null!=e&&e.id?Object(m.c)(p.xb,{to:{pathname:"/agents/".concat(e.id)},component:Mt.a,color:"primary",className:"fixedWidthTableContent"},e.id):"-"}},{title:e("agents.stats.serial"),renderData:function(e){var t,r;return null!==(t=null===(r=e.stats)||void 0===r?void 0:r.serial)&&void 0!==t?t:"-"}},{title:e("agents.stats.peer_ip"),renderData:function(e){var t,r;return null!==(t=null===(r=e.stats)||void 0===r?void 0:r.peer_ip)&&void 0!==t?t:"-"}},{title:e("agents.stats.local_ip"),renderData:function(e){var t,r;return null!==(t=null===(r=e.stats)||void 0===r?void 0:r.local_ip)&&void 0!==t?t:"-"}},{title:e("agents.stats.mac_address"),renderData:function(e){var t,r;return null!==(t=null===(r=e.stats)||void 0===r?void 0:r.mac_address)&&void 0!==t?t:"-"}},{title:e("agents.stats.version"),renderData:function(e){var t,r;return null!==(t=null===(r=e.stats)||void 0===r?void 0:r.version)&&void 0!==t?t:"-"}},{title:e("agents.stats.endpoint_connection"),renderData:function(e){var t;return Object(m.c)(v_,{connectionStats:null===(t=e.stats)||void 0===t?void 0:t.endpoint_connection})},grow:2},{title:e("agents.stats.streampoint_connection"),renderData:function(e){var t;return Object(m.c)(v_,{connectionStats:null===(t=e.stats)||void 0===t?void 0:t.streampoint_connection})},grow:2}]}}),[e]);return Object(m.c)(kn,null,Object(m.c)(p.l,{mb:2},Object(m.c)(p.Rb,{placeholder:e("headerMediaList.textFilterLabel"),value:s||"",onChange:function(e){return i({query:e.target.value})},debounceTime:300})),Object(m.c)(p.Sb,{isLoading:u},Object(m.c)(p.A,{titleMobile:e("agents.table_title"),data:null==l?void 0:l.agents,columns:d,nextCursor:null==l?void 0:l.next,prevCursor:null==l?void 0:l.prev,handlePaginationChange:i,estimatedCount:null==l?void 0:l.estimated_count,limit:r,page:a})))},O_=function(e){var t=e.className,r=e.errorText,n=e.warningText,o=e.successText,i=e.progress,a=e.text,s="progressbar";return t&&(s+=" ".concat(t)),r?Object(m.c)("div",{className:"".concat(s," error-border error-text")},r):n?Object(m.c)("div",{className:"".concat(s," warning-border warning-text")},n):o?Object(m.c)("div",{className:"".concat(s," success-border success-text")},o):i?Object(m.c)("div",{className:s},Object(m.c)("div",{className:"notice-text"},a),Object(m.c)(p.wb,{variant:"number"==typeof i?"determinate":"indeterminate",value:100*i})):Object(m.c)("div",{className:s},Object(m.c)("div",{className:"notice-text"},a))},j_=function(e){return new Promise((function(t,r){var n=new FileReader;n.readAsDataURL(e),n.onload=function(){return t(n.result.split(",")[1])},n.onerror=function(e){return r(e)}}))},x_=function(e,t){var r=document.createElement("a"),n=new Blob([e]),o=URL.createObjectURL(n);r.href=o,r.download=null!=t?t:"",document.body.appendChild(r),r.click(),URL.revokeObjectURL(o),r.remove()};function w_(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return k_(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return k_(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k_(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?"-".concat(U.stats.build):""),G=Object(_.ub)(),K=G.data,Y=G.isLoading,J=Ot.a("enabled")(K),Q=Object(_.vb)(),X=Object(_.wb)(),Z=Object(_.tb)(),ee=Object(_.lc)();Object(_.X)({config:{responseType:"blob",onDownloadProgress:function(t){x(""),g(""),b("".concat(e("logUploader.downloading")," ").concat(_e.a.bytes(t.loaded))),u(!0)}},options:{enabled:H,onSuccess:function(t){V(!1),b(""),x(e("logUploader.downloadSuccess")),x_(t,"logs_".concat(Object(hh.a)(new Date,"yyyyMMddhhmmss"),"_").concat(z,"_").concat(W,".zip"))}}}),Object(n.useEffect)((function(){return function(){S_&&clearTimeout(S_)}}),[]);var te,re,ne,oe,ie=function(t){var r=t-1e3;if(r>0){var n=1-r/3e4;S_=setTimeout((function(){ie(r)}),1e3),u(n)}else g(e("logUploader.serverNotResponding"))},ae=function(t){S_&&clearTimeout(S_),t?(S(t),x(e("logUploader.submited")),u(1)):g(e("logUploader.serverError"))},se=function(t){var r;S(null),x(""),g(""),u(0),r=3e4,S_=setTimeout((function(){ie(r)}),0),ee({body:{comment:t},onSuccess:function(e){ae(e.data.id)},onError:function(t){var r,n,o=null==t?void 0:null===(r=t.response)||void 0===r?void 0:null===(n=r.data)||void 0===n?void 0:n.errors;ae(!1),o&&Array.isArray(o)&&o.forEach((function(t){"upload_failed"===t.code&&"400"===t.status&&(g(e("logUploader.infoDownloadLogs")),M(!0))}))}})},ce=function(){se(a)},le=function(e){s(e.target.value),E(!0)},pe=function(){C(!1),J?Z({onSuccess:function(){Q()}}):X({body:{enabled:!0},onSuccess:function(e){F.a(["data","enabled"])(e)&&se("The debug data was automatically uploaded"),Q()}})};return Object(m.c)(p.y,{maxWidth:!1},Object(m.c)(p.hb,{item:!0,xs:10},Object(m.c)(p.l,{px:1,py:1,id:"log-uploader","data-testid":"support",style:{background:"#fff"}},Object(m.c)(p.hb,{container:!0},Object(m.c)(p.hb,{item:!0,xs:12,md:8,lg:6,xl:5},r?"":(ne=(J?"logUploader.disableSshAccess":!J&&"logUploader.EnableSshAccess")||"logUploader.statusUpdating",oe=(J?"logUploader.sshAccessEnabled":!J&&"logUploader.sshAccessDisabled")||"logUploader.updatingSshAccessStatus",Object(m.c)(p.hb,{container:!0,alignItems:"center",justifyContent:"flex-start",spacing:1},Object(m.c)(p.hb,{item:!0,xs:12,md:5,lg:4},Object(m.c)(p.n,{variant:"contained",disabled:Y,onClick:J?pe:function(){return C(!0)},className:J?t.sshButtonEnabled:t.sshButtonDisabled,endIcon:Y&&Object(m.c)(p.u,{size:20})},e(ne))),Object(m.c)(p.hb,{item:!0,xs:12,md:!0},Object(m.c)(p.l,{p:2},e(oe))))),Object(m.c)("div",{className:"row-height"}),Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)(p.kc,{variant:"h5"},e("logUploader.sendStateToSupport"))),Object(m.c)("div",{className:"row-height"}),Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)("div",{className:"notice-text"},e("logUploader.describeProblemNotice"))),Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)("div",{className:"notice-text"},e("logUploader.uploadDataNotice"))),Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)("div",{className:"notice-text"},e("logUploader.notSupportRequestNotice"))),Object(m.c)("div",{className:"row-height"}),(te=a&&a.length>3,re=!te,Object(m.c)(at,{id:"StreamTranscoderPage",paths:T_,propsToCheck:{comment:a,progress:l,logId:k,progressText:f,warningText:y,successText:O,showDownloadDebugBtn:q,logUploadRequest:H}},l||k?Object(m.c)(o.a.Fragment,null,Object(m.c)(O_,{progress:l,text:f,warningText:y,successText:O}),q&&Object(m.c)(o.a.Fragment,null,Object(m.c)("div",{className:"row-height"}),Object(m.c)(p.n,{variant:"contained",color:"primary",onClick:function(){return V(!0)},endIcon:H&&Object(m.c)(p.u,{size:20,color:"secondary"})},e("logUploader.downloadLogs"))),Object(m.c)("div",{className:"row-height"}),k&&Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)("div",{className:"notice-text"},e("logUploader.submittedDataNotice"))),Object(m.c)("div",{className:"row-height"}),Object(m.c)("div",{className:"row-height flex-end"},Object(m.c)("div",{className:"head-text"},k))):Object(m.c)(o.a.Fragment,null,Object(m.c)(p.dc,{variant:"outlined",value:a,onChange:le,error:te||!D&&!N?"":e("logUploader.requiredDescription"),minRows:3,maxRows:7,multiline:!0}),Object(m.c)("div",{className:"row-height"}),Object(m.c)("div",{className:"row-height"},Object(m.c)(p.n,{variant:"contained",color:"primary",disabled:re,onClick:te?ce:function(){return L(!0)}},e("submit")))))))),Object(m.c)(p.E,{open:I,onClose:function(){return C(!1)},"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},Object(m.c)(p.I,{id:"alert-dialog-title"},e("logUploader.dialog.title")),Object(m.c)(p.G,null,Object(m.c)(p.H,{id:"alert-dialog-description",variant:"body2"},e("logUploader.dialog.descriptionPart1")),Object(m.c)(p.H,{id:"alert-dialog-description",variant:"body2"},e("logUploader.dialog.descriptionPart2")),Object(m.c)(p.H,{id:"alert-dialog-description",variant:"body2"},e("logUploader.dialog.descriptionPart3")),Object(m.c)(p.H,{id:"alert-dialog-description",variant:"body2"},e("logUploader.dialog.descriptionPart4"))),Object(m.c)(p.F,null,Object(m.c)(p.n,{onClick:function(){return C(!1)},color:"primary"},e("logUploader.dialog.cancel")),Object(m.c)(p.n,{onClick:pe,color:"primary",autoFocus:!0},e("logUploader.dialog.ok")))))))},C_=r(1707),A_=r(1709),D_=r(1682),E_=r(1708);var $_=r(9),N_=["params","body","config"],L_=["params","body","config"],R_=["params","body","config"],q_=["params","body","config"],M_=["params","body","config"],F_=["params","body","config"],U_=["params","body","config"],z_=["params","body","config"],B_=["params","body","config"],H_=["params","body","config"],V_=["params","body","config"],W_=["params","body","config"],G_=["params","body","config"],K_=["params","body","config"],Y_=["params","body","config"],J_=["params","body","config"],Q_=["params","body","config"],X_=["params","body","config"],Z_=["params","body","config"],eO=["params","body","config"],tO=["params","body","config"],rO=["params","body","config"];function nO(e){return(nO="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function oO(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function iO(e){return function(e){if(Array.isArray(e))return aO(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return aO(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return aO(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function aO(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,n=e.config,o=e.queryFn,i=e.queryKey;return Object(Sn.a)({queryKey:["chassis_chassis_get",i,t],queryFn:function(){return o&&Object(B.a)(o)?o():dO({params:t,config:n})},options:r})},dO=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object($_.a)({path:"/chassis",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return pO.get(o,cO({params:i},r))},mO=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.put(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_save.successPutAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,N_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,L_);return p.mutate(cO({params:t,body:r,config:n},o))}},fO=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/reboot",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.post(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_reboot.successPostAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,R_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,q_);return p.mutate(cO({params:t,body:r,config:n},o))}},bO=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object($_.a)({path:"/chassis/firmwares",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return pO.get(o,cO({params:i},r))},hO=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,n=e.config,o=e.queryFn,i=e.queryKey;return Object(Sn.a)({queryKey:["chassis_chassis_interfaces_list",i,t],queryFn:function(){return o&&Object(B.a)(o)?o():yO({params:t,config:n})},options:r})},yO=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object($_.a)({path:"/chassis/interfaces",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return pO.get(o,cO({params:i},r))},gO=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object($_.a)({path:"/chassis/disks",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return pO.get(o,cO({params:i},r))},vO=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.config,n=Object($_.a)({path:"/chassis/coders",queryAndPathParams:t,encodeParams:null==r?void 0:r.encodeParams}),o=n.pathWithParams,i=n.queryParams;return pO.get(o,cO({params:i},r))};function _O(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return OO(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return OO(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function OO(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/firmwares/upload",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.put(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_firmware_upload.successPutAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,B_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,H_);return p.mutate(cO({params:t,body:r,config:n},o))}}({isAsync:!0});return Object(m.c)(du,{id:"chassis-firmware-upload",onChange:function(e){var t=e.target,r=t.files,n=t.value;if(s(!0),o(n),r){var i=new FormData;Object.keys(r).forEach((function(e){i.append("file",r[e],r[e].name)})),c({config:{headers:{"Content-Type":"multipart/form-data"}},body:i}).finally((function(){s(!1)}))}},value:r,variant:"outlined",color:"primary",endIcon:a&&Object(m.c)(p.u,{size:20,color:"primary"}),isUploadingFile:a,disabled:a},e("chassisFirmware.upload"))};function xO(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return wO(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return wO(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function wO(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,n=e.config,o=e.queryFn,i=e.queryKey;return Object(Sn.a)({queryKey:["chassis_chassis_firmwares_list",i,t],queryFn:function(){return o&&Object(B.a)(o)?o():bO({params:t,config:n})},options:r})}({params:{force_update:s},options:{onSuccess:function(){c(!0)},keepPreviousData:!0}}),u=l.isLoading,d=l.error,f=l.data,b=l.refetch,h=l.isFetching,y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/firmwares/install",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.post(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_firmware_install.successPostAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,V_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,W_);return p.mutate(cO({params:t,body:r,config:n},o))}}(),g=fO(),v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/firmwares/download",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.post(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_firmware_download_create.successPostAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,M_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,F_);return p.mutate(cO({params:t,body:r,config:n},o))}}(),_=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/firmwares/download",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.delete(a,cO({params:s},o))}),(function(){return i&&l("chassis_firmware_download_delete.successDeleteAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,U_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,z_);return p.mutate(cO({params:t,body:r,config:n},o))}}(),O=Object(j.b)().t,x=xO(o.a.useState(0),2),w=x[0],k=(x[1],xO(o.a.useState(null),2)),S=k[0],P=(k[1],xO(o.a.useState(ar.a("",["stats","version"],r)),2)),T=P[0],I=P[1],C=xO(o.a.useState(ar.a("",["stats","version"],r)),2),A=C[0],D=C[1],E=xO(o.a.useState(!1),2),$=E[0],N=E[1],L=xO(o.a.useState(!1),2),R=L[0],q=L[1],M=xO(o.a.useState(!1),2),U=M[0],z=M[1],H=xO(o.a.useState(!1),2),V=H[0],W=H[1];o.a.useEffect((function(){var e=F.a(["stats","version"],r);I(e),Object(B.d)(e)&&D(e)}),[F.a(["stats","version"],r)]);var G=function(e){return g({params:{version:e}})},K=function(e,t,r){return y({params:{version:e},onSuccess:t,onError:r})};if(u)return Object(m.c)("div",null,"loading");if(d)return Object(m.c)("div",null,"error");var Y=f.firmwares.length>0&&f.firmwares[f.firmwares.length-1].current;return t=0==f.firmwares.length?void 0:f.firmwares[f.firmwares.length-1].current?void 0:f.firmwares[f.firmwares.length-1].downloaded?void 0:f.firmwares[f.firmwares.length-1].version,Object(m.c)(p.l,{mx:2,mt:{xs:2,lg:.2}},Object(m.c)(p.hb,{container:!0,spacing:2,alignItems:"flex-end"},Object(m.c)(p.hb,{item:!0,xs:12,sm:4,lg:5},Object(m.c)(p.P,{fullWidth:!0},Object(m.c)(p.rb,null,O("chassisFirmwareVersion.firmwareVersion")),Object(m.c)(p.Tb,{fullWidth:!0,value:A,onChange:function(e){D(e.target.value)},"data-testid":"chassis-firmware-version"},f.firmwares.map((function(e){return Object(m.c)(p.Fb,{value:e.version,key:e.version},e.version)}))))),Object(m.c)(p.hb,{item:!0,xs:12,sm:8,lg:7},Object(m.c)(p.n,{variant:"contained",color:"primary",size:"small",onClick:function(){q(!0),K(A,(function(){q(!1),W(!0),setTimeout((function(){W(!1)}),1e4),G(A),i(!0)}),(function(){setTimeout((function(){N(!0)}),1e4),q(!1),i(!0)}))},disabled:A===T||R||U||n,endIcon:R&&Object(m.c)(p.u,{size:16,color:"primary"})},O("chassisFirmwareVersion.upgradeButton")),Object(m.c)(p.n,{variant:"contained",color:"primary",size:"small",onClick:function(){z(!0),K("latest",(function(){G(),i(!0)}),(function(){z(!1),N(!0),i(!0)}))},disabled:!t||U||n,style:{marginLeft:"8px"},endIcon:U&&Object(m.c)(p.u,{size:16,color:"primary"})},O("chassisFirmwareVersion.upgradeToLatestButton"))),Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.n,{variant:"outlined",onClick:function(){b()},disabled:h,endIcon:h&&Object(m.c)(p.u,{size:16,color:"primary"})},O("chassisFirmwareVersion.checkNewVersionButton")),Object(m.c)(p.l,{mt:1},Object(m.c)(jO,null)),t&&S!==kO&&S!==SO&&!f.firmwares.find((function(e){return e.version==t}))?Object(m.c)(p.n,{variant:"outlined",color:"primary",onClick:function(){v({params:{version:t},onSuccess:function(e){}})}},O("chassisFirmwareVersion.downloadButton",{nextVersion:t})):"",S===kO||S===SO?Object(m.c)(p.n,{variant:"outlined",onClick:function(){_({params:{version:t}})}},O("chassisFirmwareVersion.cancelDownloadButton",{nextVersion:t})):"",f.firmwares.find((function(e){return e.version==t&&e.downloaded}))?Object(m.c)(p.kc,{variant:"subtitle2"},O("chassisFirmwareVersion.rebootNotice",{nextVersion:t})):""),S===kO||S===SO?Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.wb,{variant:"determinate",value:w})):"",S===PO||$?Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"subtitle2",color:"secondary"},O("chassisFirmwareVersion.commonError"))):"",V?Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"subtitle2",color:"secondary"},O("chassisFirmwareVersion.successfulUpgrade",{version:A}))):"",Y?Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.kc,{variant:"subtitle2",color:"textPrimary"},O("chassisFirmwareVersion.checkMessage"))):""))};function IO(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return CO(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return CO(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function CO(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]&&arguments[1];switch(e.mode){case UO:t="DHCP";break;case FO:t="Static";break;default:t=r?"":"-"}return t},v=g(t),_=g(t.stats,!0);return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.kb,{lgDown:!0},Object(m.c)(D_.a,null,Object(m.c)(BO,{config:t})),Object(m.c)(D_.a,null,Object(m.c)(HO,{config:t,onChangeInterface:y,interfaceSettingsType:v,interfaceRuntimeType:_,isEditing:u})),Object(m.c)(D_.a,null,Object(m.c)(VO,{config:t,isEditing:u,onChangeInterface:y})),Object(m.c)(D_.a,null,Object(m.c)(WO,{isEditing:u,config:t,onChangeInterface:y})),Object(m.c)(D_.a,null,Object(m.c)(GO,{isEditing:u,config:t,onChangeInterface:y})),Object(m.c)(D_.a,null,Object(m.c)(KO,{isEditing:u,config:t,onChangeInterface:y,isCenter:!0})),Object(m.c)(D_.a,null,Object(m.c)(YO,{isEditing:u,isConfigChanged:s(n),saveInterface:b,cancelEditing:h,editingModeOn:f,isDataSaving:r}))),Object(m.c)(p.kb,{lgUp:!0},Object(m.c)(p.l,{p:1,mb:1,className:"card-wrapper"},Object(m.c)(p.hb,{container:!0,spacing:2,alignItems:"center"},Object(m.c)(p.hb,{item:!0,xs:6}),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(YO,{isEditing:u,isConfigChanged:s(n),saveInterface:b,cancelEditing:h,editingModeOn:f,isDataSaving:r,size:"small",fontSize:"small"})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},c("chassisNetworkConfiguration.interface"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(BO,{config:t})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},c("chassisNetworkConfiguration.type"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(HO,{config:t,onChangeInterface:y,interfaceSettingsType:v,interfaceRuntimeType:_,isEditing:u})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},c("chassisNetworkConfiguration.ipAddress"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(VO,{config:t,isEditing:u,onChangeInterface:y})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},c("chassisNetworkConfiguration.networkMask"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(WO,{isEditing:u,config:t,onChangeInterface:y})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},c("chassisNetworkConfiguration.gateway"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(GO,{isEditing:u,config:t,onChangeInterface:y})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},c("chassisNetworkConfiguration.enabled"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(KO,{isEditing:u,config:t,onChangeInterface:y}))))))};XO.defaultProps={name:""};r(1538);var ZO=function(e){var t=e.interfaces,r=e.isDataSaving,n=e.onChange,o=e.cancelEditing,i=e.isInterfaceChanged,a=Object(j.b)().t;return Object(m.c)(p.l,{mt:2},Object(m.c)(p.kb,{lgDown:!0},Object(m.c)(C_.a,{size:"small",className:"interfaces-table"},Object(m.c)(NO.a,null,Object(m.c)(A_.a,null,Object(m.c)(D_.a,{style:{width:"20%"}},Object(m.c)(p.kc,{variant:"subtitle2"},a("chassisNetworkConfiguration.interface"))),Object(m.c)(D_.a,{style:{width:"16%"}},Object(m.c)(p.kc,{variant:"subtitle2"},a("chassisNetworkConfiguration.type"))),Object(m.c)(D_.a,{style:{width:"14%"}},Object(m.c)(p.kc,{variant:"subtitle2"},a("chassisNetworkConfiguration.ipAddress"))),Object(m.c)(D_.a,{style:{width:"14%"}},Object(m.c)(p.kc,{variant:"subtitle2"},a("chassisNetworkConfiguration.networkMask"))),Object(m.c)(D_.a,{style:{width:"14%"}},Object(m.c)(p.kc,{variant:"subtitle2"},a("chassisNetworkConfiguration.gateway"))),Object(m.c)(D_.a,{style:{width:"10%"}},Object(m.c)(p.l,{textAlign:"center"},Object(m.c)(p.kc,{variant:"subtitle2"},a("chassisNetworkConfiguration.enabled")))),Object(m.c)(D_.a,{style:{width:"12%"}}))),Object(m.c)(E_.a,null,t.map((function(e){return Object(m.c)(A_.a,{key:"".concat(e.name,"-row")},Object(m.c)(XO,{config:e,isDataSaving:r,name:e.name,onChange:n,cancelEditing:o,isInterfaceChanged:i}))}))))),Object(m.c)(p.kb,{lgUp:!0},Object(m.c)(p.l,{px:1},Object(m.c)(p.hb,{container:!0,spacing:2},t.map((function(e){return Object(m.c)(p.hb,{item:!0,xs:12,sm:6,md:4,key:"".concat(e.name,"-grid")},Object(m.c)(XO,{config:e,isDataSaving:r,name:e.name,onChange:n,cancelEditing:o,isInterfaceChanged:i}))}))))))},ej=(r(1539),function(e){var t=e.dnsList,r=e.dnsRunningList,n=e.onChangeDns,i=Object(j.b)().t,a=function(e){return Object(m.c)(p.l,{display:"flex"},Object(m.c)(il,{entity:"chassis",path:["dns"],index:e,value:t[e],onChange:function(t){return function(e,t){n(e.target.value,t)}(t,e)},maskParams:{alias:"ip",greedy:!1},label:"",force:!0}),Object(m.c)(p.dc,{entity:"chassis",path:["dns"],value:r[e]||"",inputProps:{"data-testid":"chassis-running-dns-".concat(e),style:{textAlign:"right"}},label:"",readOnly:!0,disabled:!0}))};return Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,lg:3,md:4,sm:5,xs:12},Object(m.c)(p.l,{ml:2,mr:2},Object(m.c)(p.l,{mt:2},Object(m.c)(p.hb,{container:!0,spacing:2},Object(m.c)(p.hb,{container:!0,item:!0,xs:12,justifyContent:"space-between"},Object(m.c)(p.kc,{variant:"body2",color:"textSecondary"},i("chassisNetworkConfiguration.configDNS")),Object(m.c)(p.kc,{variant:"body2",color:"textSecondary"},i("chassisNetworkConfiguration.runningDNS"))),Object(m.c)(p.hb,{item:!0,xs:12,className:"network-form-dns-input-wrapper"},a(0)),Object(m.c)(p.hb,{item:!0,xs:12,className:"network-form-dns-input-wrapper"},a(1)))))))});function tj(e){return(tj="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function rj(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */rj=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function l(e,t,r,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),s=new k(o||[]);return n(a,"_invoke",{value:O(e,r,s)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var u={};function d(){}function m(){}function f(){}var b={};c(b,i,(function(){return this}));var h=Object.getPrototypeOf,y=h&&h(h(S([])));y&&y!==t&&r.call(y,i)&&(b=y);var g=f.prototype=d.prototype=Object.create(b);function v(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){var o;n(this,"_invoke",{value:function(n,i){function a(){return new t((function(o,a){!function n(o,i,a,s){var c=p(e[o],e,i);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==tj(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){l.value=e,a(l)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}(n,i,o,a)}))}return o=o?o.then(a,a):a()}})}function O(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return P()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=j(a,r);if(s){if(s===u)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=p(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===u)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function j(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,j(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),u;var o=p(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,u;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),w(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;w(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}function nj(e){return function(e){if(Array.isArray(e))return sj(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||aj(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oj(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ij(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||aj(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function aj(e,t){if(e){if("string"==typeof e)return sj(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?sj(e,t):void 0}}function sj(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/interfaces/{name}",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.put(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_interface_save.successPutAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,G_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,K_);return p.mutate(cO({params:t,body:r,config:n},o))}}(),d=Object(j.b)().t,f=ij(o.a.useState(!1),2),b=f[0],h=f[1],y=ij(o.a.useState({}),2),g=y[0],v=y[1],_=ij(o.a.useState(""),2),O=_[0],x=_[1],w=ij(o.a.useState(""),2),k=w[0],S=(w[1],function(){v({})});if(o.a.useEffect((function(){return S(),function(){S()}}),[]),i)return Object(m.c)("div",null,"Loading");if(s)return Object(m.c)("div",null,"error");var P=c.interfaces.map((function(e){return $O.a(e,g[e.name]||{})})),T=c.interfaces.find((function(e){return e.stats&&e.stats.gw})),I=(null==T?void 0:T.dns)||[],C=(null==T?void 0:null===(e=T.stats)||void 0===e?void 0:e.dns)||[],A=!!(g&&T&&g[T.name]&&g[T.name].dns),D=!!Object.keys(g).length,E=function(){var e,t=(e=rj().mark((function e(){var t,r;return rj().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:h(!0),e.t0=rj().keys(g);case 2:if((e.t1=e.t0()).done){e.next=17;break}return t=e.t1.value,r=(g[t].dns||[]).filter((function(e){return e})),g[t].dns=nj(r),e.prev=6,e.next=9,u({params:{name:t},body:g[t],onSuccess:function(){l()}});case 9:x(""),e.next=15;break;case 12:e.prev=12,e.t2=e.catch(6),x("chassisNetworkConfiguration.interfaceSavingError");case 15:e.next=2;break;case 17:v({}),h(!1);case 19:case"end":return e.stop()}}),e,null,[[6,12]])})),function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){oj(i,n,o,a,s,"next",e)}function s(e){oj(i,n,o,a,s,"throw",e)}a(void 0)}))});return function(){return t.apply(this,arguments)}}();return Object(m.c)(p.Mb,{elevation:3,className:r.networkConfWrapper},Object(m.c)(p.kc,{variant:"h5",className:r.title},d("chassis.interfaces")),Object(m.c)(p.l,{mt:2},Object(m.c)(p.hb,{container:!0,spacing:2},Object(m.c)(ej,{dnsList:I,dnsRunningList:C,onChangeDns:function(e,t){var r,n,o,i;if(T){var a=lt.a(g);if(a[T.name]||(a[T.name]={}),a[T.name].dns||(a[T.name].dns=[]),void 0===(null===(r=a[T.name].dns)||void 0===r?void 0:r[0])&&null!==(n=T.dns)&&void 0!==n&&n[0]){var s=ij(T.dns,1);a[T.name].dns[0]=s[0]}if(void 0===(null===(o=a[T.name].dns)||void 0===o?void 0:o[1])&&null!==(i=T.dns)&&void 0!==i&&i[1]){var c=ij(T.dns,2);a[T.name].dns[1]=c[1]}a[T.name].dns[t]=e,v(a)}}}),Object(m.c)(p.hb,{item:!0,xs:12,className:r.networkTableWrapper},Object(m.c)(p.l,{mt:2},Object(m.c)(ZO,{interfaces:P,isDataSaving:b,onChange:function(e,t,r){var n=lt.a(g);n[r]||(n[r]={}),n[r][t]=e,v(n)},cancelEditing:function(){v({})},isInterfaceChanged:function(e){return!!g[e]}})),Object(m.c)(p.l,{mt:2,mr:2,mb:2,px:2},Object(m.c)(p.n,{variant:"contained",color:"primary",onClick:E,disabled:!(D||A)||b,"data-testid":"save-interfaces"},d("save")),Object(m.c)(p.n,{variant:"contained",color:"secondary",className:r.cancelButton,onClick:S,disabled:!(D||A)||b},d("cancel"))),Object(m.c)(p.l,{mt:2,mr:2,mb:2,textAlign:"right"},Object(m.c)(p.kc,{variant:"body1",color:"error"},d(O))),Object(m.c)(p.l,{mt:2,mr:2,mb:2,textAlign:"right"},Object(m.c)(p.kc,{variant:"body1",color:"error"},d(k)))))))};r(1540);function pj(e){return(pj="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function uj(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return dj(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return dj(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dj(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/coders/{coder}/reboot",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.post(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_coder_reboot.successPostAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,tO);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,rO);return p.mutate(cO({params:t,body:r,config:n},o))}}();return Object(m.c)(p.l,{textAlign:"right"},Object(m.c)(p.lb,{"aria-label":a("chassisCard.restart"),color:"primary",onClick:function(){l(!0),u({params:{coder:r},onSuccess:function(){return l(!1)},onError:function(){return l(!1)}})},className:_t()("chassis-restart-button",(t.status===vj||c)&&"chassis-restart-button-rotate"),size:n},Object(m.c)(p.h,{fontSize:i})))};Sj.defaultProps={size:"medium",fontSize:"medium"};var Pj=Object(p.uc)()((function(e){return{blockWrapper:{marginTop:e.spacing(2)},blockTitle:{paddingLeft:e.spacing(1),paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},cardWrapper:{boxShadow:"0px 3px 3px -2px rgba(0,0,0,0.2), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)",height:"100%"}}})),Tj=[{title:""},{title:"chassisHardwareModules.status"},{title:"chassisHardwareModules.memoryThroughput",lg:2},{title:"chassisHardwareModules.channels",lg:2},{title:"chassisHardwareModules.temperature",lg:2},{title:"chassisHardwareModules.power"},{title:"chassisHardwareModules.serialNumber",lg:2},{title:"",lg:1}],Ij=function(){var e=Object(j.b)().t,t=Pj().classes,r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,n=e.config,o=e.queryFn,i=e.queryKey;return Object(Sn.a)({queryKey:["chassis_chassis_coders_list",i,t],queryFn:function(){return o&&Object(B.a)(o)?o():vO({params:t,config:n})},options:r})}({options:{keepPreviousData:!0,refetchInterval:1e3}}),n=r.isLoading,i=r.error,a=r.data;return Object(m.c)(p.Mb,{elevation:3,className:t.blockWrapper},Object(m.c)(p.kc,{variant:"h5",className:t.blockTitle},e("chassis.hardwareModulesMonitorTitle")),Object(m.c)(p.l,{mt:2,px:1},n&&Object(m.c)(p.l,{textAlign:"center",mt:2,pb:2,width:"100%"},Object(m.c)(p.u,{size:30,color:"primary"})),i&&Object(m.c)(p.l,{mt:2,pb:2,width:"100%"},Object(m.c)(p.kc,{variant:"subtitle2",color:"error"},i.message)),!(n||i)&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.kb,{lgDown:!0},Object(m.c)(p.ac,{settings:Tj,rows:a.coders.map((function(e){var r,n=gj,i=vj,a=e.stats,s=a.status!==n&&a.status!==i?[Object(m.c)(jj,{stats:a,key:"coder-channels"}),Object(m.c)(xj,{stats:a,key:"coder-temperature"}),Object(m.c)(wj,{stats:a,key:"coder-power"}),Object(m.c)(kj,{stats:a,key:"coder-serial"})]:[Object(m.c)("div",{key:"coder-empty1"}),Object(m.c)("div",{key:"coder-empty2"}),Object(m.c)("div",{key:"coder-empty3"}),Object(m.c)("div",{key:"coder-empty4"}),Object(m.c)("div",{key:"coder-empty5"})];return[Object(m.c)(_j,{stats:a,coderNumber:e.coder,key:"coder-number"}),Object(m.c)(Oj,{stats:a,classes:t,key:"coder-status"}),Object(m.c)(o.a.Fragment,{key:"coder-mc_all"},null!==(r=a.mc_all)&&void 0!==r?r:"-"," Mb/s")].concat(s,[Object(m.c)(Sj,{stats:a,coderNumber:e.coder,key:"coder-buttons"})])}))})),Object(m.c)(p.kb,{lgUp:!0},Object(m.c)(p.l,{px:1},Object(m.c)(p.hb,{container:!0,spacing:2},a.coders.map((function(r){return a=(n=r).stats,s=gj,c=vj,Object(m.c)(p.hb,{item:!0,xs:12,sm:6,md:4,key:"".concat(n.coder,"-grid")},Object(m.c)(p.kb,{lgUp:!0},Object(m.c)(p.l,{p:1,mb:1,className:t.cardWrapper},Object(m.c)(p.hb,{container:!0,spacing:2,alignItems:"center"},Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(_j,{stats:a,coderNumber:n.coder})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(Sj,{stats:a,coderNumber:n.coder,fontSize:"small",size:"small"})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},e("chassisHardwareModules.status"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(Oj,{stats:a,classes:t})),!(a.status===s||a.status===c)&&Object(m.c)(o.a.Fragment,null,Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},e("chassisHardwareModules.memoryThroughput"))),Object(m.c)(p.hb,{item:!0,xs:6},null!==(i=a.mc_all)&&void 0!==i?i:"-"," Mb/s"),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},e("chassisHardwareModules.channels"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(jj,{stats:a})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},e("chassisHardwareModules.temperature"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(xj,{stats:a})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},e("chassisHardwareModules.power"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(wj,{stats:a})),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(p.kc,{variant:"subtitle2"},e("chassisHardwareModules.serialNumber"))),Object(m.c)(p.hb,{item:!0,xs:6},Object(m.c)(kj,{stats:a})))))));var n,i,a,s,c}))))))))},Cj=Object(p.uc)()((function(e){return{wrapper:{marginTop:e.spacing(2),height:"100%"},title:{paddingLeft:e.spacing(2),paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},cancelButton:{marginLeft:e.spacing(1)}}}));function Aj(e){return function(e){if(Array.isArray(e))return $j(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Ej(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dj(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||Ej(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ej(e,t){if(e){if("string"==typeof e)return $j(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?$j(e,t):void 0}}function $j(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/disks/{disk_id}/format",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.post(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_disk_format.successPostAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,Y_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,J_);return p.mutate(cO({params:t,body:r,config:n},o))}}({isAsync:!0}),c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/disks/{disk_id}/mount",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.post(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_disk_mount.successPostAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,Q_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,X_);return p.mutate(cO({params:t,body:r,config:n},o))}}({isAsync:!0}),l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.options,r=e.isAsync,n=e.mutationFn,o=e.showSuccessMessage,i=void 0===o||o,a=e.showErrorMessage,s=void 0===a||a,c=Object(j.b)(),l=c.t,p=Object(Sn.b)((function(e){var t=e.params,r=e.body,o=e.config,i=Object($_.a)({path:"/chassis/disks/{disk_id}/umount",queryAndPathParams:t,encodeParams:null==o?void 0:o.encodeParams}),a=i.pathWithParams,s=i.queryParams;return n&&Object(B.a)(n)?n({params:t,body:r,config:o}):pO.post(a,r,cO({params:s},o))}),(function(){return i&&l("chassis_disk_umount.successPostAlert")}),Object(B.g)(t)?t:{},s);return r?function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,Z_);return p.mutateAsync(cO({params:t,body:r,config:n},o))}:function(e){var t=e.params,r=e.body,n=e.config,o=oO(e,eO);return p.mutate(cO({params:t,body:r,config:n},o))}}({isAsync:!0}),u=Object(n.useCallback)((function(e){a(!0),s({params:{disk_id:e}}).finally((function(){return a(!1)}))}),[s]),d=Object(n.useCallback)((function(e){a(!0),c({params:{disk_id:e}}).finally((function(){return a(!1)}))}),[c]),f=Object(n.useCallback)((function(e){a(!0),l({params:{disk_id:e}}).finally((function(){return a(!1)}))}),[l]),b="";return b=t.formatted?t.mount_point?Object(m.c)(p.n,{variant:"outlined",onClick:function(){return t.disk_id?f(t.disk_id):null},disabled:i,endIcon:i&&Object(m.c)(Uj.a,{size:20,color:"primary"})},r("chassisDiskManagement.unmount")):Object(m.c)(p.n,{variant:"outlined",onClick:function(){return t.disk_id?d(t.disk_id):null},disabled:i,endIcon:i&&Object(m.c)(Uj.a,{size:20,color:"primary"})},r("chassisDiskManagement.mount")):Object(m.c)(p.n,{variant:"outlined",onClick:function(){return t.disk_id?u(t.disk_id):null},disabled:i,endIcon:i&&Object(m.c)(Uj.a,{size:20,color:"primary"})},r("chassisDiskManagement.format")),Object(m.c)(p.l,{display:"flex",justifyContent:"flex-end"},b)},Vj=function(){var e=Object(j.b)().t,t=Cj().classes,r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.params,r=e.options,n=e.config,o=e.queryFn,i=e.queryKey;return Object(Sn.a)({queryKey:["chassis_chassis_disks_list",i,t],queryFn:function(){return o&&Object(B.a)(o)?o():gO({params:t,config:n})},options:r})}({options:{refetchInterval:3e3}}),o=r.data,i=r.isLoading,a=Object(n.useMemo)((function(){return{items:[{title:e("chassisDiskManagement.diskId"),renderData:function(e){return null==e?void 0:e.disk_id}},{title:e("chassisDiskManagement.mountPoint"),renderData:function(e){return null==e?void 0:e.mount_point}},{title:e("chassisDiskManagement.formatted"),renderData:function(e){return Object(m.c)(p.Q,{label:"",control:Object(m.c)(p.s,{sx:{maxHeight:30},name:"".concat(e,".formatted"),disabled:!0,checked:null==e?void 0:e.formatted})})}},{title:"",renderData:function(e){return Object(m.c)(Hj,{dataItem:e})}}]}}),[e]);return Object(m.c)(p.Mb,{elevation:3,className:t.wrapper},Object(m.c)(p.Sb,{isLoading:i},Object(m.c)(p.kc,{variant:"h5",className:t.title},e("chassisDiskManagement.title")),Object(m.c)(p.l,{px:2,mt:1},Object(m.c)(p.A,{titleMobile:e("chassisDiskManagement.title"),data:null==o?void 0:o.disks,columns:a}))))},Wj=function(){var e=Object(j.b)().t;return Object(m.c)("div",{id:"chassis-wrapper"},Object(m.c)(p.y,{maxWidth:!1,"data-testid":"chassis"},Object(m.c)(p.kc,{variant:"h5"},e("chassis.hardwareConfigurationTitle")),Object(m.c)(p.hb,{container:!0,spacing:2},Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(EO,null)),Object(m.c)(p.hb,{item:!0,xs:12,sm:6},Object(m.c)(Nj,null)),Object(m.c)(p.hb,{item:!0,xs:12,sm:6},Object(m.c)(Fj,null)),Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(Vj,null)),Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(lj,null)),Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(Ij,null)))))},Gj=function(){var e=Object(j.b)().t;return Object(m.c)(p.y,{maxWidth:!1,id:"watcher"},Object(m.c)(p.hb,{container:!0},Object(m.c)(p.hb,{item:!0,xs:12,sm:8,lg:6},Object(m.c)(p.l,{mt:4},Object(m.c)(p.kc,{variant:"subtitle1"},Object(m.c)(Ie.a,null,e("watcher.text")))))))};Gj.displayName="Watcher";var Kj=function(){return Object(m.c)(p.y,{maxWidth:!1,id:"pulseboard","data-testid":"pulse"},Object(m.c)(p.hb,{container:!0,spacing:2,"data-testid":"pulse-charts-container"},Object(m.c)(p.hb,{item:!0,xs:12},Object(m.c)(p.l,{id:"pulse-charts",style:{background:"#fff"},pt:1},Object(m.c)("div",{className:"row-height"}),Object(m.c)("div",null,Object(m.c)("h2",null,"Retroview"),Object(m.c)("p",null,"Monitoring of a node now is available in your client area in the Retroview tab."),Object(m.c)("p",null,"Ensure that your account has been added to colleagues by license owner."),Object(m.c)("p",null,"Ensure that statistics collection is enabled on all of your licenses.")),Object(m.c)("div",{className:"row-height"})))))},Yj=r(872),Jj=r.n(Yj);function Qj(e){return(Qj="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Xj(e){return function(e){if(Array.isArray(e))return ox(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||nx(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ex(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r3)I(o("uploadingCountError")),ix=setTimeout((function(){return I("")}),7e3);else{S(!0),D(i);var s=[];a.forEach((function(e){s=[].concat(Xj(s),[j_(e)])})),Promise.all(s).then((function(e){var r={};e.forEach((function(e,n){r[t[n]]=e})),q({body:ex({},r),onSuccess:function(){setTimeout((function(){return window.location.reload()}),2e3)},onError:function(e){var t=JSON.parse(ar.a({},["request","response"])(e)),r=Ot.a("description")(t)||Ot.a("error")(t);S(!1),D(""),I("".concat(o("uploadingError")," ").concat(r?"(".concat(r,")"):"")),ix=setTimeout((function(){return I("")}),7e3)}})}))}},value:A,variant:"outlined",color:"primary",endIcon:k&&Object(m.c)(p.u,{size:20,color:"primary"}),isUploadingFile:k,uploadingError:T,disabled:k},o("configProtocols.uploadButton")),Object(m.c)(p.lb,{edge:"end","aria-label":"delete all",onClick:function(){M({onSuccess:function(){N(""),R()},onError:function(){N("deletionAllError"),setTimeout((function(){return N("")}),7e3)}})},color:"secondary",style:{marginRight:"4px"},size:"large"},Object(m.c)(p.B,null))),Object(m.c)(p.yb,null,z),$&&Object(m.c)(p.l,{mt:1,pl:2},Object(m.c)(p.kc,{variant:"body1",color:"error"},o($))))))},cx=function(e){var t=e.change,r=e.config,n=Object(j.b)().t,o=function(e){return function(){return t("loglevel")(e)}},i=function(e){return function(){return t("nvidia_monitor")(e)}},a=function(e){var n;return Object(m.c)(p.dc,{entity:"config",path:[e],value:r[e],onChange:t([e]),docDescription:null===(n=so.a.schemas.server_config_base.properties[e])||void 0===n?void 0:n.description})};return Object(m.c)("div",null,Object(m.c)(p.kc,{variant:"h5",style:{fontWeight:300}},n("configAdditional.additionalTitle")),Object(m.c)(Ai,{expanded:!0,label:n("configAdditional.logLevelLabel"),className:"auto-height",docDescription:so.a.schemas.server_config_base.properties.loglevel.description},Object(m.c)(No.a,{checked:!r.loglevel,onClick:o(null),label:n("configAdditional.logLevelDefault"),className:"margin-right-10",isRadio:!0}),Object(m.c)(No.a,{checked:"debug"===r.loglevel,onClick:o("debug"),label:n("configAdditional.logLevelDebug"),className:"margin-right-10",isRadio:!0}),Object(m.c)(No.a,{checked:"notice"===r.loglevel,onClick:o("notice"),label:"notice",className:"margin-right-10",isRadio:!0}),Object(m.c)(No.a,{checked:"error"===r.loglevel,onClick:o("error"),label:n("configAdditional.logLevelError"),isRadio:!0})),Object(m.c)(p.Q,{control:Object(m.c)(p.s,{checked:r.log_requests||!1,onChange:function(e){return t("log_requests")(e.target.checked||null)},color:"primary",inputProps:{"data-testid":"configAdditionalLogRequests"}}),label:n("configAdditional.logRequestsLabel"),docDescription:so.a.schemas.server_config_base.properties.log_requests.description}),Object(m.c)(Ai,{expanded:!0,label:n("configAdditional.nvidiaMonitorLabel"),docDescription:so.a.schemas.server_config_base.properties.nvidia_monitor.description},Object(m.c)(No.a,{checked:!r.nvidia_monitor,onClick:i(!1),label:n("disabled"),className:"margin-right-10",isRadio:!0}),Object(m.c)(No.a,{checked:r.nvidia_monitor,onClick:i(!0),label:n("enabled"),isRadio:!0})),a("session_log"),a("snmp"),Object(m.c)(si,{entity:"config",path:["total_bandwidth"],value:r.total_bandwidth,onChange:t("total_bandwidth"),defaultUnit:"bandWidthInput.megabitsPerSecond",docDescription:so.a.schemas.server_config_base.properties.total_bandwidth.description}),a("meta"))};function lx(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return px(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return px(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function px(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0){var t=e.target.files[0],n=new FileReader;n.onload=function(e){var t=JSON.stringify(Wx(Wx({},JSON.parse(e.target.result)),{},{$reset:!0}));r({body:t})},n.readAsText(t)}}}),Object(m.c)("label",{htmlFor:"outlined-button-file"},Object(m.c)(p.n,{variant:"outlined",component:"span"},e("globalConfig.uploadConfig"))))},Yx=q.a($o.a(null,"login"),$o.a({},"edit_auth")),Jx=q.a($o.a(null,"password"),$o.a({},"edit_auth")),Qx=function(){var e=Object(j.b)().t,t=Object($s.a)(),r=t.onError,i=t.onErrorResolve,a=t.errors,s=t.areErrorsExists,c=Bx(Object(n.useState)(!1),2),l=c[0],u=c[1],d=Qh(),f=d.setData,b=d.onChange,h=d.resetData,y=d.currentData,g=d.isDataChanged,v=d.resetDelta,O=d.getDelta,x=Object(n.useContext)(me),w=x.isServerErrorPage,k=x.isBrokenConfig,S=x.refreshSettings,P=x.globalSettings,T=Object(B.e)(y)?y:{},I=Yx(T),C=Jx(T),A=Bx(Object(n.useState)(I),2),D=A[0],E=A[1],$=Bx(Object(n.useState)(C),2),N=$[0],L=$[1],R=Object(_.r)();Object(n.useEffect)((function(){return function(){h()}}),[]),Object(n.useEffect)((function(){Object(B.b)(D)&&E(Yx(T)),Object(B.b)(N)&&L(Jx(T))}),[Yx(T),Jx(T)]),Object(n.useEffect)((function(){f(Wx({},P))}),[P]);var q,M=function(){u(!0);var e=O();R({body:e,onSuccess:function(){u(!1),I===D&&C===N||(localStorage.setItem("MediaServerAuth",JSON.stringify({login:I,password:C})),window.location.reload()),v(),S()},onError:function(){u(!0),v()}})};return T||w?Object(m.c)(Px,{isServerErrorPage:w,isBrokenConfig:k},Object(m.c)(p.l,{id:"global-config","data-testid":"config",mt:5},Object(m.c)(p.hb,{container:!0,spacing:2},!w&&Object(m.c)(p.hb,{item:!0,xs:12,lg:7,xl:6},Object(m.c)(Ux,{config:T}),Object(m.c)(p.l,{mt:1},Object(m.c)(sx,{config:T,change:b()})),Object(m.c)(p.l,{my:5},Object(m.c)(cx,{config:T,change:b()}))),Object(m.c)(p.hb,{item:!0,xs:12,lg:5,xl:6},!w&&Object(m.c)(o.a.Fragment,null,Object(m.c)(ux,{config:T,change:b(),onError:r,onErrorResolve:i,errors:a}),Object(m.c)(p.l,{mt:5},Object(m.c)(p.kc,{variant:"h5",style:{fontWeight:300}},e("configGeoIp.title")),Object(m.c)(p.dc,{entity:"settings",path:["geoip"],onChange:b([])(["geoip"],"string"),value:T.geoip,label:"",docDescription:so.a.schemas.server_config_base.properties.geoip.description}))),Object(m.c)(p.l,{mb:5},Object(m.c)(_x,null)))),!w&&Object(m.c)("div",{className:"GlobalConfigActionsContainer"},(q={size:"medium"}.size,Object(m.c)(p.n,{variant:"outlined",onClick:M,disabled:l||!g||s,endIcon:l&&Object(m.c)(p.u,{size:16}),size:q,"data-testid":"saveButton"},e("save"))),Object(m.c)(Kx,null)))):Object(m.c)(p.l,null,e("loading"))};function Xx(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Zx(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Zx(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zx(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?t-1:t,i=r>0?r-1:r;if(n[o]){var a=n[o],s=''.concat(a.slice(i),"");n[o]=a.slice(0,i)+s}return n.join("\n")},rw=function(e){return F.a(["stats","config_error","line"])(e)},nw=function(){var e=Object(j.b)().t,t=ew().classes,r=Object(n.useContext)(me),o=r.isServerErrorPage,i=r.isBrokenConfig,a=r.globalSettings,s=Object(M.c)(),c=s.enqueueSnackbar,l=s.closeSnackbar,u=Xx(Object(n.useState)(),2),f=u[0],b=u[1],h=Xx(Object(n.useState)(!1),2),y=h[0],g=h[1],v=Xx(Object(n.useState)(!1),2),O=v[0],x=v[1],w=Xx(Object(n.useState)(""),2),k=w[0],S=w[1],P=Xx(Object(n.useState)(""),2),T=P[0],I=P[1],C=Xx(Object(n.useState)(""),2),A=C[0],D=C[1],E=Xx(Object(n.useState)(""),2),$=E[0],N=E[1],L=Xx(Object(n.useState)(!1),2),R=L[0],q=L[1],F=Object(n.useRef)(null);Object(_.o)({params:{full:!0},config:{headers:{accept:"text/plain",Authorization:Object(z.b)()}},options:{onSuccess:function(e){b(e)}}});var U=Object(_.q)(),H=Object(_.r)({options:{onSuccess:function(){l(),c(e(i?"configEditor.successAlertEmergency":"configEditor.successAlert"),Object(dy.a)({severity:"success"})),U(),x(!1),g(!1),I(""),D("")},onError:function(){x(!1),c(e("configEditor.configBrokenError"),Object(dy.a)({severity:"error"}))}}}),V=function(){var e=document.getElementById("config-editor-textarea"),t=document.getElementById("config-editor-highlight");Object(B.e)(e.scrollTop)&&t&&(t.scrollTop=e.scrollTop),Object(B.e)(e.scrollLeft)&&t&&(t.scrollLeft=e.scrollLeft)};Object(n.useEffect)((function(){document.getElementById("config-editor-textarea").addEventListener("scroll",V)}),[]),Object(n.useEffect)((function(){if(F.current&&f&&T){var e=f.split(/\r*\n/),t=Math.floor(F.current.scrollHeight/e.length);F.current.scrollTop=(T-1)*t}}),[T,f]),Object(n.useEffect)((function(){var t,r,n,o,i,s=null==a?void 0:null===(t=a.stats)||void 0===t?void 0:null===(r=t.config_error)||void 0===r?void 0:r.path,l=null==a?void 0:null===(n=a.stats)||void 0===n?void 0:null===(o=n.config_error)||void 0===o?void 0:o.error;if(s&&l){var p=s;Array.isArray(s)&&(p=s.filter((function(e){return null!=e})).map((function(e){return"number"==typeof e?"[".concat(e,"]"):" ".concat(e)})).join(""));var u=l.charAt(0).toUpperCase()+l.slice(1).replace("_"," ");N("".concat(u," on ").concat(p))}else N(l||"");if(null!=a&&null!==(i=a.stats)&&void 0!==i&&i.config_error){var m=l;m===d.f&&(m=e("externalError")),c(e("configEditor.errorAlert",{error:l}),Object(dy.a)({severity:"error"}))}}),[a]),Object(n.useEffect)((function(){if(a&&f&&Object(B.b)(T)){I(rw(a));var e=f.split(/\r*\n/)[rw(a)-1];D(e)}}),[a,f,O]),Object(n.useEffect)((function(){if(a&&f){var e,t,r,n=f;if(null!=a&&null!==(e=a.stats)&&void 0!==e&&e.config_error)n=tw(n,T,(null==a?void 0:null===(t=a.stats)||void 0===t?void 0:null===(r=t.config_error)||void 0===r?void 0:r.col)||0);S(n)}}),[T]);var W=$||e("configEditor.configWrongError");return Object(m.c)(Px,{isBrokenConfig:i,isServerErrorPage:o},Object(m.c)(p.n,{variant:"outlined",onClick:function(){x(!0),H({body:f,config:{headers:{"Content-Type":"text/plain",Authorization:Object(z.b)()}}})},disabled:O||!y,endIcon:O&&Object(m.c)(p.u,{size:16}),size:"small"},e("save")),Object(m.c)(p.l,{width:"100%","data-testid":"config-editor",mt:2,mb:1},Object(m.c)(p.P,{fullWidth:!0,className:t.textareaWrapper},i&&Object(m.c)(p.l,{className:t.highlight,dangerouslySetInnerHTML:{__html:k},id:"config-editor-highlight"}),Object(m.c)(p.dc,{label:e("configEditor.configTextLabel"),multiline:!0,minRows:"30",maxRows:"30",margin:"normal",value:f,onChange:function(e){var t,r,n=e.target.value,o=T,s=(null==a?void 0:null===(t=a.stats)||void 0===t?void 0:null===(r=t.config_error)||void 0===r?void 0:r.col)||0;if(i){var c,l,p,u,d,m,h,y,v=f.split(/\r*\n/),_=n.split(/\r*\n/),O=(null!==(c=null==a?void 0:null===(l=a.stats)||void 0===l?void 0:null===(p=l.config_error)||void 0===p?void 0:p.line)&&void 0!==c?c:1)-1,j=(null!==(u=null==a?void 0:null===(d=a.stats)||void 0===d?void 0:null===(m=d.config_error)||void 0===m?void 0:m.col)&&void 0!==u?u:1)-1;if(v.length!==_.length){var x=_.indexOf(A);o=-1!==x?x+1:-1}_[O].length<=j?q(!0):s=(null==a?void 0:null===(h=a.stats)||void 0===h?void 0:null===(y=h.config_error)||void 0===y?void 0:y.col)||0}b(n),g(!0),S(R?null:tw(n,o,s)),I(o)},error:!!$,helperText:$?W:"",variant:"outlined",classes:{root:t.rootTextarea},InputProps:{id:"config-editor-textarea"},inputProps:{ref:F},InputLabelProps:{shrink:!0}}))))};function ow(e){return(ow="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function iw(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function aw(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{};return q.a(Di.a((function(t){return{key:t,value:e[t]}})),Ei.a($i.a("_changed")),gr.a)(e)},jw=function(e){return e.reduce((function(e,t){var r=t.key,n=t.value;return r?vw(vw({},e),{},_w({},r,n)):e}),{})},xw={key:"",value:""},ww=function(e){var t=e.groupIndex,r=e.filter,i=e.errorPath,a=e.errors,s=e.isKeyValid,c=e.isValueValid,l=e.onError,u=e.onErrorResolve,d=e.onRemove,f=e.onChange,b=e.dataTestId,h=Object(j.b)().t,y=bw(Object(n.useState)(lt.a(r)),2),g=y[0],v=y[1],_=bw(Object(n.useState)(Ow(r)),2),O=_[0],x=_[1],w=bw(Object(n.useState)(!1),2),k=w[0],S=w[1],P=bw(Object(n.useState)(!1),2),T=P[0],I=P[1],C=bw(Object(n.useState)(null),2),A=C[0],D=C[1],E=[].concat(fw(i),["group",t]),$=Object(Ds.b)(a[Object(ge.c)(E)],h),N=function(){d(),u(E)(),dw({errors:a,groupIndex:t,onErrorResolve:u})};Object(n.useEffect)((function(){Kd.a(Ye.a(r,g))&&(v(lt.a(r)),x(Ow(r))),0===Object.keys(r).length?l(E)("events.emptyFiltersError"):u(E)()}),[r]),Object(n.useEffect)((function(){Object(B.b)(O)&&T&&N(),I(!1)}),[O]);var L=function(e,t){return i?[].concat(fw(i),[e,t]):void 0},R=function(e,t){return a&&i?Object(Ds.b)(a[Object(ge.c)(L(e,t))],h):void 0},q=function(e,t){return u&&i?u(L(e,t)):fr.a(void 0)},M=function(e,t,r){var n,o,a=Ni.a([t,e]),p=Li.a(a,O);if(Object(B.e)(p)&&q(t,e)(),!(Object(B.b)(p)&&Object(B.b)(r)||t===O.length)){var u=function(e,t){return"key"===e&&s({value:t})||"value"===e&&c({value:t})||{isValid:!0}}(e,r);u.isValid||(n=t,o=e,function(e){return l&&i?l(L(n,o))(e):void 0})(u.error)}D(t),x(te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?n[e]=function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Lw(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Rw(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]&&arguments[2],n=d.filter((function(t){return e.name!==t.name})),o=n.map((function(e){return e.name}));return Object(m.c)(Bw,{key:e.name,event:e,eventName:e.name,eventIndex:t,names:o,isNew:r,setNewEvent:s})};return d||a||r?Object(m.c)(at,{id:"EventsPage",paths:Ww,propsToCheck:{dataEvents:l,newEvent:a,isLoading:u}},Object(m.c)(Px,{isServerErrorPage:r,isBrokenConfig:o},Object(m.c)(p.Sb,{isLoading:u},Object(m.c)(p.n,{variant:"outlined",onClick:function(){var e=s_("newEvent",d);s(e)},"data-testid":"addButton",size:"small"},e("events.addButton")),Object(m.c)(p.l,{id:"events","data-testid":"eventsPage",mt:5},Object(B.e)(a)&&[a].map((function(e){return Object(m.c)(p.l,{mt:1,mb:2,key:e.name},f(e,"new",!0))})),Object(B.e)(d)&&d.map((function(e,t){return f(e,t)})))))):Object(m.c)(p.l,null,e("loading"))};Gw.defaultProps={isServerErrorPage:!1,isBrokenConfig:!1};var Kw=r(784);function Yw(e){return function(e){if(Array.isArray(e))return Jw(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Jw(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Jw(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Jw(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r